现存量查询同步其它仓库的代码
This commit is contained in:
		
							parent
							
								
									734b0d7aac
								
							
						
					
					
						commit
						24713f6670
					
				|  | @ -56,6 +56,29 @@ public class APIOnhandQueryIpml implements IAPIOnhandQuery { | |||
|         return onhandVOs; | ||||
|     } | ||||
| 
 | ||||
|     public OnhandVO[] queryOnhandVOByDimsNoTrans(List<Map<String, Object>> paramMapList) throws BusinessException { | ||||
| 
 | ||||
| 
 | ||||
|         //±ØÊäÏî¼ì²é | ||||
|         try { | ||||
|             List<OnhandDimVO> onhandDimVOS = new ArrayList<>(); | ||||
|             for (Map<String, Object> paramMap : paramMapList) { | ||||
|                 this.requiredFieldCheck(requiredField, paramMap); | ||||
|                 // ·Òë | ||||
| //                paramMap = TransferCodeToPKTool.doTranslateFields(jsonParamMapping, paramMap); | ||||
|                 OnhandDataSupplement dataSupplement = new OnhandDataSupplement(); | ||||
|                 OnhandDimVO onhandDimVO = new OnhandDimVO(); | ||||
|                 onhandDimVO = dataSupplement.process(paramMap); | ||||
|                 onhandDimVOS.add(onhandDimVO); | ||||
|             } | ||||
|             OnhandVO[] onhandVOs = NCLocator.getInstance().lookup(OnhandResService.class) | ||||
|                     .queryOnhandVOByDims(onhandDimVOS.toArray(new OnhandDimVO[0])); | ||||
|             return onhandVOs; | ||||
|         } catch (Exception e) { | ||||
|             ExceptionUtils.marsh(e); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
|     @Override | ||||
|     public OnhandVO[] queryOnhandVOByDims(List<Map<String, Object>> paramMapList) throws Exception { | ||||
|         // ±ØÊäÏî¼ì²é | ||||
|  |  | |||
|  | @ -26,6 +26,8 @@ public interface IAPIOnhandQuery { | |||
|      */ | ||||
|     OnhandVO[] queryOnhandVOByDims(Map<String, Object> paramMap) throws BusinessException; | ||||
| 
 | ||||
|     OnhandVO[] queryOnhandVOByDimsNoTrans(List<Map<String, Object>> paramMapList) throws BusinessException; | ||||
| 
 | ||||
|     /** | ||||
|      * 根据多个维度查询现存量信息 | ||||
|      * 此方法接收一个参数映射列表,每个映射包含一组查询条件,用于批量查询 | ||||
|  |  | |||
|  | @ -17,6 +17,8 @@ import nc.vo.pubapp.pattern.pub.SqlBuilder; | |||
| import nc.ws.opm.pub.utils.result.APIErrCodeEnum; | ||||
| import nccloud.api.ic.onhand.IAPIOnhandQuery; | ||||
| import nccloud.api.rest.utils.ResultMessageUtil; | ||||
| import nccloud.openapi.ic.onhand.mapping.OnhandMapping; | ||||
| import nccloud.openapi.scmpub.pub.TransferCodeToPKTool; | ||||
| import org.json.JSONString; | ||||
| 
 | ||||
| import javax.ws.rs.Consumes; | ||||
|  | @ -319,4 +321,439 @@ public class OnhandResource { | |||
|         Map map = (Map) new BaseDAO().executeQuery(sql, new MapProcessor()); | ||||
|         return map; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * 现存量查询 WMS富勒 | ||||
|      * 支持库存组织+仓库+批次+辅助属性+项目+供应商+生产厂商+客户等条件查询 | ||||
|      * | ||||
|      * @param paramMap 查询参数 | ||||
|      *                 - pk_org: 库存组织 | ||||
|      *                 - cwarehouseid: 仓库 | ||||
|      *                 - vbatchcode: 批次号 | ||||
|      *                 - cmaterialoid: 物料 | ||||
|      *                 - cprojectid: 项目 | ||||
|      *                 - cvendorid: 供应商 | ||||
|      *                 - cproductorid: 生产厂商 | ||||
|      *                 - casscustid: 客户 | ||||
|      */ | ||||
|     @POST | ||||
|     @Path("onhandWmsQuery") | ||||
|     @Consumes("application/json") | ||||
|     @Produces("application/json") | ||||
|     public JSONString onhandQueryWms(Map<String, Object> paramMap) { | ||||
|         if (paramMap == null) { | ||||
|             return ResultMessageUtil.exceptionToJSON("传入参数错误", APIErrCodeEnum.BUSINESSEXCCODE.getCode()); | ||||
|         } | ||||
|         try { | ||||
|             String orgCode = (String) paramMap.get("pk_org"); | ||||
|             // 构建动态SQL查询现存量 | ||||
|             paramMap = TransferCodeToPKTool.doTranslateFields(new OnhandMapping(), this.deleteUnNessaryField(paramMap)); | ||||
|             String sql = buildOnhandQuerySql(paramMap); | ||||
| 
 | ||||
|             // 执行SQL查询 | ||||
|             List<Map<String, Object>> onhandList = (List<Map<String, Object>>) new BaseDAO() | ||||
|                     .executeQuery(sql, new nc.jdbc.framework.processor.MapListProcessor()); | ||||
| 
 | ||||
|             if (onhandList != null && !onhandList.isEmpty()) { | ||||
|                 // 收集所有相关ID用于批量查询 | ||||
|                 Set<String> materialIds = new HashSet<>(); | ||||
|                 Set<String> warehouseIds = new HashSet<>(); | ||||
|                 Set<String> projectIds = new HashSet<>(); | ||||
|                 Set<String> vendorIds = new HashSet<>(); | ||||
|                 Set<String> producerIds = new HashSet<>(); | ||||
|                 Set<String> customerIds = new HashSet<>(); | ||||
| 
 | ||||
|                 for (Map<String, Object> onhandData : onhandList) { | ||||
|                     if (onhandData.get("cmaterialvid") != null) { | ||||
|                         materialIds.add(onhandData.get("cmaterialvid").toString()); | ||||
|                     } | ||||
|                     if (onhandData.get("cwarehouseid") != null) { | ||||
|                         warehouseIds.add(onhandData.get("cwarehouseid").toString()); | ||||
|                     } | ||||
|                     if (onhandData.get("cprojectid") != null) { | ||||
|                         projectIds.add(onhandData.get("cprojectid").toString()); | ||||
|                     } | ||||
|                     if (onhandData.get("cvendorid") != null) { | ||||
|                         vendorIds.add(onhandData.get("cvendorid").toString()); | ||||
|                     } | ||||
|                     if (onhandData.get("cproductorid") != null) { | ||||
|                         producerIds.add(onhandData.get("cproductorid").toString()); | ||||
|                     } | ||||
|                     if (onhandData.get("casscustid") != null) { | ||||
|                         customerIds.add(onhandData.get("casscustid").toString()); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 // 批量查询相关信息 | ||||
|                 Map<String, Map<String, Object>> materialInfoMap = new HashMap<>(); | ||||
|                 Map<String, Map<String, Object>> warehouseInfoMap = new HashMap<>(); | ||||
|                 Map<String, Map<String, Object>> projectInfoMap = new HashMap<>(); | ||||
|                 Map<String, Map<String, Object>> vendorInfoMap = new HashMap<>(); | ||||
|                 Map<String, Map<String, Object>> producerInfoMap = new HashMap<>(); | ||||
|                 Map<String, Map<String, Object>> customerInfoMap = new HashMap<>(); | ||||
| 
 | ||||
|                 // 物料信息 | ||||
|                 for (String materialId : materialIds) { | ||||
|                     Map<String, Object> materialMap = this.getMaterialInfo(materialId); | ||||
|                     materialInfoMap.put(materialId, materialMap != null ? materialMap : new HashMap<>()); | ||||
|                 } | ||||
| 
 | ||||
|                 // 仓库信息 | ||||
|                 String warehouseSelectFields = StordocVO.CODE + "," + StordocVO.NAME; | ||||
|                 for (String warehouseId : warehouseIds) { | ||||
|                     Map<String, Object> warehouseMap = this.transferFields( | ||||
|                             StordocVO.getDefaultTableName(), warehouseSelectFields, StordocVO.PK_STORDOC, warehouseId); | ||||
|                     warehouseInfoMap.put(warehouseId, warehouseMap != null ? warehouseMap : new HashMap<>()); | ||||
|                 } | ||||
| 
 | ||||
|                 // 项目信息 | ||||
|                 for (String projectId : projectIds) { | ||||
|                     Map<String, Object> projectMap = this.transferFields( | ||||
|                             "bd_project", "project_code,project_name", "pk_project", projectId); | ||||
|                     projectInfoMap.put(projectId, projectMap != null ? projectMap : new HashMap<>()); | ||||
|                 } | ||||
| 
 | ||||
|                 // 供应商信息 | ||||
|                 for (String vendorId : vendorIds) { | ||||
|                     Map<String, Object> vendorMap = this.transferFields( | ||||
|                             "bd_supplier", "code,name", "pk_supplier", vendorId); | ||||
|                     vendorInfoMap.put(vendorId, vendorMap != null ? vendorMap : new HashMap<>()); | ||||
|                 } | ||||
| 
 | ||||
|                 // 生产厂商信息 | ||||
|                 for (String producerId : producerIds) { | ||||
|                     Map<String, Object> producerMap = this.transferFields( | ||||
|                             "bd_defdoc", "code,name", "pk_defdoc", producerId); | ||||
|                     producerInfoMap.put(producerId, producerMap != null ? producerMap : new HashMap<>()); | ||||
|                 } | ||||
| 
 | ||||
|                 // 客户信息 | ||||
|                 for (String customerId : customerIds) { | ||||
|                     Map<String, Object> customerMap = this.transferFields( | ||||
|                             "bd_customer", "code,name", "pk_customer", customerId); | ||||
|                     customerInfoMap.put(customerId, customerMap != null ? customerMap : new HashMap<>()); | ||||
|                 } | ||||
| 
 | ||||
|                 JSONArray reArray = new JSONArray(); | ||||
|                 for (Map<String, Object> onhandData : onhandList) { | ||||
|                     JSONObject jsonObject = new JSONObject(); | ||||
| 
 | ||||
|                     // 基本信息 | ||||
|                     JSONObject baseInfo = new JSONObject(); | ||||
|                     baseInfo.put("pk_org", onhandData.get("pk_org")); | ||||
|                     baseInfo.put("onhandnum", onhandData.get("nonhandnum")); | ||||
|                     baseInfo.put("vbatchcode", onhandData.get("vbatchcode")); | ||||
|                     baseInfo.put("orgcode", orgCode); | ||||
|                     jsonObject.put("baseInfo", baseInfo); | ||||
| 
 | ||||
|                     // 物料信息 | ||||
|                     JSONObject materialInfoDetail = new JSONObject(); | ||||
|                     String cmaterialvid = onhandData.get("cmaterialvid") != null ? onhandData.get("cmaterialvid").toString() : null; | ||||
|                     Map<String, Object> materialInfo = materialInfoMap.getOrDefault(cmaterialvid, Collections.emptyMap()); | ||||
|                     materialInfoDetail.put("materialPk", cmaterialvid); | ||||
|                     materialInfoDetail.put("materialCode", materialInfo.getOrDefault(MaterialVO.CODE, "")); | ||||
|                     materialInfoDetail.put("materialName", materialInfo.getOrDefault(MaterialVO.NAME, "")); | ||||
|                     materialInfoDetail.put("materialtype", materialInfo.getOrDefault(MaterialVO.MATERIALTYPE, "")); | ||||
|                     materialInfoDetail.put("materialspec", materialInfo.getOrDefault(MaterialVO.MATERIALSPEC, "")); | ||||
|                     materialInfoDetail.put("unitcode", materialInfo.getOrDefault("unitcode", "")); | ||||
|                     materialInfoDetail.put("unitname", materialInfo.getOrDefault("unitname", "")); | ||||
|                     jsonObject.put("materialInfo", materialInfoDetail); | ||||
| 
 | ||||
|                     // 仓库信息 | ||||
|                     String cwarehouseid = onhandData.get("cwarehouseid") != null ? onhandData.get("cwarehouseid").toString() : null; | ||||
|                     JSONObject warehouseInfoDetail = new JSONObject(); | ||||
|                     Map<String, Object> warehouseInfo = warehouseInfoMap.getOrDefault(cwarehouseid, Collections.emptyMap()); | ||||
|                     warehouseInfoDetail.put("warehousePk", cwarehouseid); | ||||
|                     warehouseInfoDetail.put("warehouseCode", warehouseInfo.getOrDefault(StordocVO.CODE, "")); | ||||
|                     warehouseInfoDetail.put("warehouseName", warehouseInfo.getOrDefault(StordocVO.NAME, "")); | ||||
|                     jsonObject.put("warehouseInfo", warehouseInfoDetail); | ||||
| 
 | ||||
|                     // 项目信息 | ||||
|                     String cprojectid = onhandData.get("cprojectid") != null ? onhandData.get("cprojectid").toString() : null; | ||||
|                     JSONObject projectInfoDetail = new JSONObject(); | ||||
|                     Map<String, Object> projectInfo = projectInfoMap.getOrDefault(cprojectid, Collections.emptyMap()); | ||||
|                     projectInfoDetail.put("projectPk", cprojectid); | ||||
|                     projectInfoDetail.put("projectCode", projectInfo.getOrDefault("project_code", "")); | ||||
|                     projectInfoDetail.put("projectName", projectInfo.getOrDefault("project_name", "")); | ||||
|                     jsonObject.put("projectInfo", projectInfoDetail); | ||||
| 
 | ||||
|                     // 供应商信息 | ||||
|                     String cvendorid = onhandData.get("cvendorid") != null ? onhandData.get("cvendorid").toString() : null; | ||||
|                     JSONObject venderInfoDetail = new JSONObject(); | ||||
|                     Map<String, Object> vendorInfo = vendorInfoMap.getOrDefault(cvendorid, Collections.emptyMap()); | ||||
|                     venderInfoDetail.put("vendorPk", cvendorid); | ||||
|                     venderInfoDetail.put("vendorCode", vendorInfo.getOrDefault("code", "")); | ||||
|                     venderInfoDetail.put("vendorName", vendorInfo.getOrDefault("name", "")); | ||||
|                     jsonObject.put("venderInfo", venderInfoDetail); | ||||
| 
 | ||||
|                     // 生产厂商信息 | ||||
|                     String cproductorid = onhandData.get("cproductorid") != null ? onhandData.get("cproductorid").toString() : null; | ||||
|                     JSONObject producerInfoDetail = new JSONObject(); | ||||
|                     Map<String, Object> producerInfo = producerInfoMap.getOrDefault(cproductorid, Collections.emptyMap()); | ||||
|                     producerInfoDetail.put("producerPk", cproductorid); | ||||
|                     producerInfoDetail.put("producerCode", producerInfo.getOrDefault("code", "")); | ||||
|                     producerInfoDetail.put("producerName", producerInfo.getOrDefault("name", "")); | ||||
|                     jsonObject.put("producerInfo", producerInfoDetail); | ||||
| 
 | ||||
|                     // 客户信息 | ||||
|                     String casscustid = onhandData.get("casscustid") != null ? onhandData.get("casscustid").toString() : null; | ||||
|                     JSONObject customerInfoDetail = new JSONObject(); | ||||
|                     Map<String, Object> customerInfo = customerInfoMap.getOrDefault(casscustid, Collections.emptyMap()); | ||||
|                     customerInfoDetail.put("customerPk", casscustid); | ||||
|                     customerInfoDetail.put("customerCode", customerInfo.getOrDefault("code", "")); | ||||
|                     customerInfoDetail.put("customerName", customerInfo.getOrDefault("name", "")); | ||||
|                     jsonObject.put("customerInfo", customerInfoDetail); | ||||
| 
 | ||||
|                     // 辅助属性信息(物料自由属性) | ||||
|                     jsonObject.put("vfree1", onhandData.get("vfree1")); | ||||
|                     jsonObject.put("vfree2", onhandData.get("vfree2")); | ||||
|                     jsonObject.put("vfree3", onhandData.get("vfree3")); | ||||
|                     jsonObject.put("vfree4", onhandData.get("vfree4")); | ||||
|                     jsonObject.put("vfree5", onhandData.get("vfree5")); | ||||
|                     jsonObject.put("vfree6", onhandData.get("vfree6")); | ||||
|                     jsonObject.put("vfree7", onhandData.get("vfree7")); | ||||
|                     jsonObject.put("vfree8", onhandData.get("vfree8")); | ||||
|                     jsonObject.put("vfree9", onhandData.get("vfree9")); | ||||
|                     jsonObject.put("vfree10", onhandData.get("vfree10")); | ||||
| 
 | ||||
|                     reArray.add(jsonObject); | ||||
|                 } | ||||
|                 return ResultMessageUtil.toJSON(reArray, "现存量查询成功!"); | ||||
| 
 | ||||
|             } else { | ||||
|                 return ResultMessageUtil.toJSON(null, "现存量查询成功,无数据!"); | ||||
|             } | ||||
|         } catch (Exception e) { | ||||
|             return ResultMessageUtil.exceptionToJSON(e); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private Map<String, Object> deleteUnNessaryField(Map<String, Object> paramMap) { | ||||
|         Map<String, Object> newParamMap = new HashMap<>(); | ||||
|         // 然后校验如果非必填项有传递空或者null 手动删除属性 | ||||
|         for (String field : paramMap.keySet()) { | ||||
|             Object keyValue = paramMap.get(field); | ||||
|             if (null == keyValue || "".equals(keyValue)) { | ||||
|                 continue; | ||||
|             } | ||||
|             newParamMap.put(field, keyValue); | ||||
|         } | ||||
| 
 | ||||
|         return newParamMap; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 构建现存量查询SQL | ||||
|      * | ||||
|      * @param paramMap 查询参数 | ||||
|      * @return 动态构建的SQL语句 | ||||
|      */ | ||||
|     private String buildOnhandQuerySql(Map<String, Object> paramMap) { | ||||
|         StringBuilder sql = new StringBuilder(); | ||||
| 
 | ||||
|         // 基础SQL结构 | ||||
|         sql.append("select onhand.pk_org pk_org, "); | ||||
|         sql.append("onhand.cmaterialoid cmaterialoid, "); | ||||
|         sql.append("meta.pk_material cmaterialvid, "); | ||||
|         sql.append("meta.pk_measdoc cunitid, "); | ||||
|         sql.append("sum(onhand.nonhandnum) nonhandnum, "); | ||||
|         sql.append("sum(onhand.nonhandastnum) nonhandastnum, "); | ||||
|         sql.append("sum(onhand.ngrossnum) ngrossnum, "); | ||||
|         sql.append("sum(onhand.nnum1) nnum1, "); | ||||
|         sql.append("sum(onhand.nastnum1) nastnum1, "); | ||||
|         sql.append("sum(onhand.ngrossnum1) ngrossnum1, "); | ||||
|         sql.append("sum(onhand.nnum2) nnum2, "); | ||||
|         sql.append("sum(onhand.nastnum2) nastnum2, "); | ||||
|         sql.append("sum(onhand.ngrossnum2) ngrossnum2, "); | ||||
|         sql.append("sum(onhand.nlocknum) nlocknum, "); | ||||
|         sql.append("sum(onhand.nlockastnum) nlockastnum, "); | ||||
|         sql.append("sum(onhand.nlockgrossnum) nlockgrossnum, "); | ||||
|         sql.append("sum(onhand.nrsnum) nrsnum, "); | ||||
|         sql.append("sum(onhand.nrsastnum) nrsastnum, "); | ||||
|         sql.append("sum(onhand.nrsgrossnum) nrsgrossnum, "); | ||||
|         sql.append("sum(onhand.nonhandnumrpt) nonhandnumrpt, "); | ||||
|         sql.append("sum(onhand.nonhandastnumrpt) nonhandastnumrpt, "); | ||||
|         sql.append("sum(onhand.ngrossnumrpt) ngrossnumrpt, "); | ||||
|         sql.append("sum(onhand.nlocknumrpt) nlocknumrpt, "); | ||||
|         sql.append("sum(onhand.nlockastnumrpt) nlockastnumrpt, "); | ||||
|         sql.append("sum(onhand.nlockgrossnumrpt) nlockgrossnumrpt, "); | ||||
|         sql.append("sum(onhand.nvmionhandnum) nvmionhandnum, "); | ||||
|         sql.append("sum(onhand.nvmionhandastnum) nvmionhandastnum, "); | ||||
|         sql.append("sum(onhand.nvmilocknum) nvmilocknum, "); | ||||
|         sql.append("sum(onhand.nvmilockastnum) nvmilockastnum, "); | ||||
|         sql.append("sum(onhand.ntplonhandnum) ntplonhandnum, "); | ||||
|         sql.append("sum(onhand.ntplonhandastnum) ntplonhandastnum, "); | ||||
|         sql.append("sum(onhand.ntpllocknum) ntpllocknum, "); | ||||
|         sql.append("sum(onhand.ntpllockastnum) ntpllockastnum, "); | ||||
|         sql.append("onhand.cwarehouseid, "); | ||||
|         sql.append("onhand.vbatchcode, "); | ||||
|         sql.append("onhand.cvendorid, "); | ||||
|         sql.append("onhand.cprojectid, "); | ||||
|         sql.append("onhand.casscustid, "); | ||||
|         sql.append("onhand.cproductorid, "); | ||||
|         sql.append("onhand.vfree1, "); | ||||
|         sql.append("onhand.vfree2, "); | ||||
|         sql.append("onhand.vfree3, "); | ||||
|         sql.append("onhand.vfree4, "); | ||||
|         sql.append("onhand.vfree5, "); | ||||
|         sql.append("onhand.vfree6, "); | ||||
|         sql.append("onhand.vfree7, "); | ||||
|         sql.append("onhand.vfree8, "); | ||||
|         sql.append("onhand.vfree9, "); | ||||
|         sql.append("onhand.vfree10 "); | ||||
| 
 | ||||
|         sql.append("from (select hand.nonhandnum nonhandnumrpt, "); | ||||
|         sql.append("hand.nonhandastnum nonhandastnumrpt, "); | ||||
|         sql.append("hand.ngrossnum ngrossnumrpt, "); | ||||
|         sql.append("hand.nlocknum nlocknumrpt, "); | ||||
|         sql.append("hand.nlockastnum nlockastnumrpt, "); | ||||
|         sql.append("hand.nlockgrossnum nlockgrossnumrpt, "); | ||||
|         sql.append("CASE WHEN nvl(hand.cvmivenderid, '~') = '~' THEN 0.0 ELSE hand.nonhandnum END nvmionhandnum, "); | ||||
|         sql.append("CASE WHEN nvl(hand.ctplcustomerid, '~') = '~' THEN 0.0 ELSE hand.nonhandnum END ntplonhandnum, "); | ||||
|         sql.append("CASE WHEN nvl(hand.cvmivenderid, '~') = '~' THEN 0.0 ELSE hand.nlocknum END nvmilocknum, "); | ||||
|         sql.append("CASE WHEN nvl(hand.ctplcustomerid, '~') = '~' THEN 0.0 ELSE hand.nlocknum END ntpllocknum, "); | ||||
|         sql.append("CASE WHEN nvl(hand.cvmivenderid, '~') = '~' THEN 0.0 ELSE hand.nonhandastnum END nvmionhandastnum, "); | ||||
|         sql.append("CASE WHEN nvl(hand.ctplcustomerid, '~') = '~' THEN 0.0 ELSE hand.nonhandastnum END ntplonhandastnum, "); | ||||
|         sql.append("CASE WHEN nvl(hand.cvmivenderid, '~') = '~' THEN 0.0 ELSE hand.nlockastnum END nvmilockastnum, "); | ||||
|         sql.append("CASE WHEN nvl(hand.ctplcustomerid, '~') = '~' THEN 0.0 ELSE hand.nlockastnum END ntpllockastnum, "); | ||||
|         sql.append("hand.pk_group, hand.pk_org, hand.cwarehouseid, hand.cmaterialvid, hand.cmaterialoid, "); | ||||
|         sql.append("hand.castunitid, hand.clocationid, hand.pk_batchcode, hand.vbatchcode, hand.vchangerate, "); | ||||
|         sql.append("hand.cvmivenderid, hand.ctplcustomerid, hand.cstateid, hand.cvendorid, hand.cprojectid, "); | ||||
|         sql.append("hand.casscustid, hand.cproductorid, hand.cffileid, hand.vfree1, hand.vfree2, hand.vfree3, "); | ||||
|         sql.append("hand.vfree4, hand.vfree5, hand.vfree6, hand.vfree7, hand.vfree8, hand.vfree9, hand.vfree10, "); | ||||
|         sql.append("'~' pk_marbasclass, hand.nonhandnum, hand.nonhandastnum, hand.ngrossnum, hand.nnum1, "); | ||||
|         sql.append("hand.nastnum1, hand.ngrossnum1, hand.nnum2, hand.nastnum2, hand.ngrossnum2, hand.nlocknum, "); | ||||
|         sql.append("hand.nlockastnum, hand.nlockgrossnum, hand.nrsnum, hand.nrsastnum, hand.nrsgrossnum "); | ||||
| 
 | ||||
|         sql.append("from (select handdim.pk_group, handdim.pk_org, handdim.cwarehouseid, handdim.cmaterialvid, "); | ||||
|         sql.append("handdim.cmaterialoid, handdim.castunitid, handdim.clocationid, handdim.pk_batchcode, "); | ||||
|         sql.append("handdim.vbatchcode, handdim.vchangerate, handdim.cvmivenderid, handdim.ctplcustomerid, "); | ||||
|         sql.append("handdim.cstateid, handdim.cvendorid, handdim.cprojectid, handdim.casscustid, "); | ||||
|         sql.append("handdim.cproductorid, handdim.cffileid, handdim.vfree1, handdim.vfree2, handdim.vfree3, "); | ||||
|         sql.append("handdim.vfree4, handdim.vfree5, handdim.vfree6, handdim.vfree7, handdim.vfree8, "); | ||||
|         sql.append("handdim.vfree9, handdim.vfree10, ic_onhandnum.nonhandnum, ic_onhandnum.nonhandastnum, "); | ||||
|         sql.append("ic_onhandnum.ngrossnum, ic_onhandnum.nnum1, ic_onhandnum.nastnum1, ic_onhandnum.ngrossnum1, "); | ||||
|         sql.append("ic_onhandnum.nnum2, ic_onhandnum.nastnum2, ic_onhandnum.ngrossnum2, ic_onhandnum.nlocknum, "); | ||||
|         sql.append("ic_onhandnum.nlockastnum, ic_onhandnum.nlockgrossnum, ic_onhandnum.nrsnum, "); | ||||
|         sql.append("ic_onhandnum.nrsastnum, ic_onhandnum.nrsgrossnum "); | ||||
| 
 | ||||
|         sql.append("from ic_onhandnum ic_onhandnum "); | ||||
|         sql.append("INNER JOIN ic_onhanddim handdim ON (ic_onhandnum.pk_onhanddim = handdim.pk_onhanddim) "); | ||||
|         sql.append("LEFT outer JOIN scm_batchcode scm_batchcode ON (handdim.pk_batchcode = scm_batchcode.pk_batchcode) "); | ||||
|         sql.append("INNER JOIN bd_stordoc bd_stordoc ON (handdim.cwarehouseid = bd_stordoc.pk_stordoc) "); | ||||
| 
 | ||||
|         sql.append("where 1 = 1 AND ic_onhandnum.dr = 0 "); | ||||
| 
 | ||||
|         // 动态添加查询条件 | ||||
|         sql.append("AND handdim.pk_group = '").append("0001A110000000000677").append("' "); | ||||
| 
 | ||||
|         // 组织条件(必输)- 处理可能是数组的情况 | ||||
|         String pk_org = getStringValue(paramMap.get("pk_org")); | ||||
|         if (pk_org != null && !pk_org.trim().isEmpty()) { | ||||
|             sql.append("AND handdim.pk_org = '").append(pk_org).append("' "); | ||||
|         } | ||||
| 
 | ||||
|         // 仓库条件 | ||||
|         String cwarehouseid = getStringValue(paramMap.get("cwarehouseid")); | ||||
|         if (cwarehouseid != null && !cwarehouseid.trim().isEmpty()) { | ||||
|             sql.append("AND handdim.cwarehouseid = '").append(cwarehouseid).append("' "); | ||||
|         } | ||||
| 
 | ||||
|         // 批次条件 | ||||
|         String vbatchcode = getStringValue(paramMap.get("vbatchcode")); | ||||
|         if (vbatchcode != null && !vbatchcode.trim().isEmpty()) { | ||||
|             sql.append("AND handdim.vbatchcode = '").append(vbatchcode).append("' "); | ||||
|         } | ||||
| 
 | ||||
|         // 物料条件 | ||||
|         String cmaterialoid = getStringValue(paramMap.get("cmaterialoid")); | ||||
|         if (cmaterialoid != null && !cmaterialoid.trim().isEmpty()) { | ||||
|             sql.append("AND handdim.cmaterialoid = '").append(cmaterialoid).append("' "); | ||||
|         } | ||||
| 
 | ||||
|         // 项目条件 | ||||
|         String cprojectid = getStringValue(paramMap.get("cprojectid")); | ||||
|         if (cprojectid != null && !cprojectid.trim().isEmpty()) { | ||||
|             sql.append("AND handdim.cprojectid = '").append(cprojectid).append("' "); | ||||
|         } | ||||
| 
 | ||||
|         // 供应商条件 | ||||
|         String cvendorid = getStringValue(paramMap.get("cvendorid")); | ||||
|         if (cvendorid != null && !cvendorid.trim().isEmpty()) { | ||||
|             sql.append("AND handdim.cvendorid = '").append(cvendorid).append("' "); | ||||
|         } | ||||
| 
 | ||||
|         // 生产厂商条件 | ||||
|         String cproductorid = getStringValue(paramMap.get("cproductorid")); | ||||
|         if (cproductorid != null && !cproductorid.trim().isEmpty()) { | ||||
|             sql.append("AND handdim.cproductorid = '").append(cproductorid).append("' "); | ||||
|         } | ||||
| 
 | ||||
|         // 客户条件 | ||||
|         String casscustid = getStringValue(paramMap.get("casscustid")); | ||||
|         if (casscustid != null && !casscustid.trim().isEmpty()) { | ||||
|             sql.append("AND handdim.casscustid = '").append(casscustid).append("' "); | ||||
|         } | ||||
| 
 | ||||
|         // 仓库相关条件 | ||||
|         sql.append("AND bd_stordoc.gubflag = 'N' "); | ||||
|         // 不差虚拟仓 | ||||
|         sql.append("AND (bd_stordoc.def1 = '~' or bd_stordoc.def1 = 'Y' or bd_stordoc.def1 IS NULL) "); | ||||
|         sql.append("AND (nvl(ic_onhandnum.nonhandnum, 0) <> 0 OR nvl(ic_onhandnum.nonhandastnum, 0) <> 0 OR "); | ||||
|         sql.append("nvl(ic_onhandnum.ngrossnum, 0) <> 0 OR nvl(ic_onhandnum.nnum1, 0) <> 0 OR "); | ||||
|         sql.append("nvl(ic_onhandnum.nastnum1, 0) <> 0 OR nvl(ic_onhandnum.ngrossnum1, 0) <> 0 OR "); | ||||
|         sql.append("nvl(ic_onhandnum.nnum2, 0) <> 0 OR nvl(ic_onhandnum.nastnum2, 0) <> 0 OR "); | ||||
|         sql.append("nvl(ic_onhandnum.ngrossnum2, 0) <> 0 OR nvl(ic_onhandnum.nlocknum, 0) <> 0 OR "); | ||||
|         sql.append("nvl(ic_onhandnum.nlockastnum, 0) <> 0 OR nvl(ic_onhandnum.nlockgrossnum, 0) <> 0 OR "); | ||||
|         sql.append("nvl(ic_onhandnum.nrsnum, 0) <> 0 OR nvl(ic_onhandnum.nrsastnum, 0) <> 0 OR "); | ||||
|         sql.append("nvl(ic_onhandnum.nrsgrossnum, 0) <> 0)) hand) onhand "); | ||||
| 
 | ||||
|         sql.append("LEFT outer JOIN bd_material_v meta ON onhand.cmaterialoid = meta.pk_source "); | ||||
|         sql.append("LEFT outer JOIN org_stockorg meta_1 ON onhand.pk_org = meta_1.pk_stockorg "); | ||||
|         sql.append("LEFT outer JOIN bd_material meta_2 ON onhand.cmaterialvid = meta_2.pk_material "); | ||||
| 
 | ||||
|         sql.append("where 1 = 1 "); | ||||
|         // 如果有组织条件,添加到最终查询条件中 | ||||
|         if (pk_org != null && !pk_org.trim().isEmpty()) { | ||||
|             sql.append("AND onhand.pk_org = '").append(pk_org).append("' "); | ||||
|         } | ||||
| 
 | ||||
|         sql.append("GROUP BY onhand.pk_org, onhand.cmaterialoid, meta.pk_material, meta.pk_measdoc, "); | ||||
|         sql.append("onhand.cwarehouseid, onhand.vbatchcode, onhand.cvendorid, onhand.cprojectid, "); | ||||
|         sql.append("onhand.casscustid, onhand.cproductorid, onhand.vfree1, onhand.vfree2, onhand.vfree3, "); | ||||
|         sql.append("onhand.vfree4, onhand.vfree5, onhand.vfree6, onhand.vfree7, onhand.vfree8, "); | ||||
|         sql.append("onhand.vfree9, onhand.vfree10"); | ||||
| 
 | ||||
|         return sql.toString(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 获取字符串值,处理可能的数组情况 | ||||
|      * | ||||
|      * @param value 参数值,可能是字符串或数组 | ||||
|      * @return 字符串值,如果是数组则取第一个元素 | ||||
|      */ | ||||
|     private String getStringValue(Object value) { | ||||
|         if (value == null) { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         if (value instanceof String) { | ||||
|             return (String) value; | ||||
|         } | ||||
| 
 | ||||
|         if (value instanceof String[]) { | ||||
|             String[] arr = (String[]) value; | ||||
|             return arr.length > 0 ? arr[0] : null; | ||||
|         } | ||||
| 
 | ||||
|         if (value instanceof List) { | ||||
|             List<?> list = (List<?>) value; | ||||
|             return list.size() > 0 && list.get(0) != null ? list.get(0).toString() : null; | ||||
|         } | ||||
| 
 | ||||
|         return value.toString(); | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue