箱变-启源-销售订单推送优化
This commit is contained in:
		
							parent
							
								
									3bbc32ec31
								
							
						
					
					
						commit
						c960746a00
					
				|  | @ -17,6 +17,7 @@ import nc.bs.trade.business.HYSuperDMO; | |||
| import nc.bs.uapbd.util.MyHelper; | ||||
| import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; | ||||
| import nc.jdbc.framework.processor.ColumnProcessor; | ||||
| import nc.jdbc.framework.processor.MapListProcessor; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.bd.defdoc.DefdocVO; | ||||
| import nc.vo.org.OrgVO; | ||||
|  | @ -25,69 +26,79 @@ import nc.vo.pubapp.pattern.exception.ExceptionUtils; | |||
| import nc.vo.so.m30.entity.SaleOrderBVO; | ||||
| import nc.vo.so.m30.entity.SaleOrderHVO; | ||||
| import nc.vo.so.m30.entity.SaleOrderVO; | ||||
| import nccloud.api.rest.utils.ResultMessageUtil; | ||||
| import nccloud.baseapp.core.log.NCCForUAPLogger; | ||||
| import nccloud.dto.so.saleorder.entity.QueryInfo; | ||||
| import nccloud.framework.core.json.IJson; | ||||
| import nccloud.framework.service.ServiceLocator; | ||||
| import nccloud.framework.web.action.itf.ICommonAction; | ||||
| import nccloud.framework.web.container.IRequest; | ||||
| import nccloud.framework.web.json.JsonFactory; | ||||
| import nccloud.framework.web.ui.pattern.billcard.BillCardOperator; | ||||
| import nccloud.pubitf.so.saleorder.service.ISaleOrderQueryWebService; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class SaleOrderToQmsAction implements ICommonAction { | ||||
|     private static final BaseDAO dao = new BaseDAO(); | ||||
|     private static final String LOG_INFO_NAME = "qyMesLog"; | ||||
|     private static final Log logger = Log.getInstance(LOG_INFO_NAME); | ||||
|     private static final String reqUrl = "/IF_QyErpApi.ashx?action=addxsht"; | ||||
|     private Map<String, String> configParams; | ||||
| 
 | ||||
|     public SaleOrderToQmsAction() { | ||||
|     } | ||||
| 
 | ||||
|     public Object doAction(IRequest request) { | ||||
|         try { | ||||
|             String read = request.read(); | ||||
|             IJson json = JsonFactory.create(); | ||||
|             QueryInfo info = (QueryInfo)json.fromJson(read, QueryInfo.class); | ||||
|             ISaleOrderQueryWebService service = (ISaleOrderQueryWebService)ServiceLocator.find(ISaleOrderQueryWebService.class); | ||||
|             BillCardOperator operator = new BillCardOperator(info.getPageid()); | ||||
|             SaleOrderVO saleorderVO = service.querySaleOrderVObyId(info.getPk()); | ||||
|             String json = request.read(); | ||||
|             logger.error("SaleOrderToQmsAction-Param:" + json); | ||||
|             Map<String, Object> paraMap = (Map) JsonFactory.create().fromJson(json, Map.class); | ||||
|             List<String> pkList = (List<String>) paraMap.get("pk"); | ||||
|             if (pkList == null || pkList.isEmpty()) { | ||||
|                 throw new BusinessException("销售订单传值为空"); | ||||
|             } | ||||
|             ISaleOrderQueryWebService service = ServiceLocator.find(ISaleOrderQueryWebService.class); | ||||
|             SaleOrderVO saleorderVO = service.querySaleOrderVObyId(pkList.get(0)); | ||||
|             if (saleorderVO == null) { | ||||
|                 throw new BusinessException("未查询到对应的销售订单"); | ||||
|             } | ||||
|             configParams = MyHelper.getConfigParams("xb-config", null); | ||||
|             if (configParams.isEmpty()) { | ||||
|                 throw new BusinessException("箱变的QMS接口缺少配置"); | ||||
|             } | ||||
|             return buildSyncData(new SaleOrderVO[]{saleorderVO}); | ||||
|             buildSyncData(new SaleOrderVO[]{saleorderVO}); | ||||
|             return ResultMessageUtil.toJSON(true, "推送成功"); | ||||
|         } catch (BusinessException e) { | ||||
|             ExceptionUtils.wrappException(e); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 构建同步数据 | ||||
|      * | ||||
|      * @return | ||||
|      */ | ||||
|     private List<Map<String, Object>> buildSyncData(SaleOrderVO[] useVOs) throws BusinessException { | ||||
|     private void buildSyncData(SaleOrderVO[] useVOs) throws BusinessException { | ||||
|         BaseDAO baseDAO = new BaseDAO(); | ||||
|         List<Map<String, Object>> requestList = new ArrayList<>(); | ||||
|         Date now = new Date(); | ||||
|         HYPubBO hybo = new HYPubBO(); | ||||
|         for (SaleOrderVO vo : useVOs) { | ||||
|             SaleOrderHVO pmoHeadVO = vo.getParentVO(); | ||||
|             SaleOrderBVO[] itemVOS = vo.getChildrenVO(); | ||||
|             String csaleorderid = pmoHeadVO.getCsaleorderid(); | ||||
|             // 判断业务单元是否是箱变公司,不是则跳过 | ||||
|             String pkOrg = vo.getParentVO().getPk_org(); | ||||
|             String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); | ||||
|             if (checkIfOrg(orgCode, configParams)) { | ||||
|                 continue; | ||||
|                 throw new BusinessException("当前组织非箱变,无法推送"); | ||||
|             } | ||||
|             String billType = pmoHeadVO.getVtrantypecode(); | ||||
|             if (checkBillType(billType)) { | ||||
|                 throw new BusinessException("当前单据类型非推送类型,无法推送"); | ||||
|             } | ||||
|             // 组装数据 | ||||
|             JSONObject singleObj = new JSONObject(); | ||||
|             String vbillcode = pmoHeadVO.getVbillcode(); | ||||
| 
 | ||||
|             SaleOrderHVO pmoHeadVO = vo.getParentVO(); | ||||
|             SaleOrderBVO[] itemVOS = vo.getChildrenVO(); | ||||
|             singleObj.put("batchid", now); | ||||
|             String vdef6 = pmoHeadVO.getVdef6(); | ||||
|             String contractNum = getDefCode("zdy-001", vdef6); | ||||
|  | @ -118,12 +129,6 @@ public class SaleOrderToQmsAction implements ICommonAction { | |||
|             JSONArray contentArray = new JSONArray(); | ||||
|             for (SaleOrderBVO item : itemVOS) { | ||||
|                 JSONObject itemObj = new JSONObject(); | ||||
| //                itemObj.put("sgdh", item.getSgdh()); | ||||
| //                itemObj.put("xshth", item.getVdef1()); | ||||
| //                itemObj.put("htqdxh", item.getHtqdxh()); | ||||
| //                Object no = hybo.findColValue("bd_material", "code", "pk_material = '"+item.getCmaterialvid()+"' "); | ||||
| // | ||||
| //                Object name = hybo.findColValue("bd_material", "name", "pk_material = '"+item.getCmaterialvid()+"' "); | ||||
|                 String wlsql = " select code,name,materialspec,materialtype from bd_material where pk_material = '" + item.getCmaterialvid() + "' "; | ||||
|                 Map<String, Object> mrlmap = (Map<String, Object>) baseDAO.executeQuery(wlsql, new MapProcessor()); | ||||
| 
 | ||||
|  | @ -140,12 +145,30 @@ public class SaleOrderToQmsAction implements ICommonAction { | |||
|                     itemObj.put("jhrq", ""); | ||||
|                 } | ||||
|                 itemObj.put("bz", item.getVrownote()); | ||||
|                 Object project_name = hybo.findColValue("bd_project", "project_name", " project_name = '" + item.getCprojectid() + "' "); | ||||
|                 itemObj.put("xmmc", project_name); | ||||
| 
 | ||||
|                 itemObj.put("xsddh", vbillcode);// 销售订单号 | ||||
|                 itemObj.put("qdhh", item.getCrowno());// 行号 | ||||
|                 itemObj.put("jqbz", 0);// 结清标志 | ||||
|                 contentArray.add(itemObj); | ||||
|             } | ||||
| 
 | ||||
|             if (itemVOS.length > 0) { | ||||
|                 SaleOrderBVO itemVO = itemVOS[0]; | ||||
|                 // 项目名称 | ||||
|                 Object project_name = hybo.findColValue("bd_project", "project_name", " pk_project = '" + itemVO.getCprojectid() + "' "); | ||||
|                 singleObj.put("xmmc", project_name); | ||||
|             } | ||||
|             // 查询删除的子表 | ||||
|             String delSql = " select crowno,csaleorderid from so_saleorder_b where csaleorderid = '" + csaleorderid + "' and dr = 1 "; | ||||
|             List<Map<String, String>> delList = (List<Map<String, String>>) dao.executeQuery(delSql, new MapListProcessor()); | ||||
|             if (delList != null && !delList.isEmpty()) { | ||||
|                 for (Map<String, String> delMap : delList) { | ||||
|                     JSONObject delObj = new JSONObject(); | ||||
|                     delObj.put("xsddh", vbillcode);// 销售订单号 | ||||
|                     delObj.put("qdhh", delMap.get("crowno"));// 行号 | ||||
|                     delObj.put("jqbz", 1);// 结清标志 | ||||
|                     delObj.put("dhsl", 0);// 订货数量 | ||||
|                     contentArray.add(delObj); | ||||
|                 } | ||||
|             } | ||||
|             singleObj.put("Content", contentArray); | ||||
| 
 | ||||
|             /* | ||||
|  | @ -177,7 +200,6 @@ public class SaleOrderToQmsAction implements ICommonAction { | |||
|              */ | ||||
|             pushData(singleObj); | ||||
|         } | ||||
|         return requestList; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -219,6 +241,20 @@ public class SaleOrderToQmsAction implements ICommonAction { | |||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     private boolean checkBillType(String code) throws BusinessException { | ||||
|         String targetCode = configParams.get("soBillType"); | ||||
|         if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { | ||||
|             throw new BusinessException("未配置单据类型参数"); | ||||
|         } | ||||
|         String[] types = targetCode.split(","); | ||||
|         for (String type : types) { | ||||
|             if (!type.isEmpty() && type.equals(code)) { | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private String getDefCode(String code, String pk_defdoc) { | ||||
|         String res = ""; | ||||
|  |  | |||
|  | @ -391,7 +391,7 @@ | |||
| 		<clazz>nccloud.web.so.ref.SaleorderGridReferAction</clazz> | ||||
| 	</action> | ||||
| 	<action> | ||||
| 		<name>so.refer.SaleOrderToQms</name> | ||||
| 		<name>so.saleorder.SaleOrderToQms</name> | ||||
| 		<label>销售订单推送qms</label> | ||||
| 		<clazz>nccloud.web.so.saleorder.action.SaleOrderToQmsAction</clazz> | ||||
| 	</action> | ||||
|  |  | |||
|  | @ -13,6 +13,7 @@ import nc.bs.uapbd.util.MyHelper; | |||
| import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; | ||||
| import nc.impl.pubapp.pattern.rule.IRule; | ||||
| import nc.jdbc.framework.processor.ColumnProcessor; | ||||
| import nc.jdbc.framework.processor.MapListProcessor; | ||||
| import nc.jdbc.framework.processor.MapProcessor; | ||||
| import nc.vo.bd.defdoc.DefdocVO; | ||||
| import nc.vo.org.OrgVO; | ||||
|  | @ -24,6 +25,7 @@ import nc.vo.so.m30.entity.SaleOrderVO; | |||
| import nccloud.baseapp.core.log.NCCForUAPLogger; | ||||
| 
 | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| /** | ||||
|  | @ -34,7 +36,7 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> { | |||
|     private static final Log logger = Log.getInstance(LOG_INFO_NAME); | ||||
|     private static final String reqUrl = "/IF_QyErpApi.ashx?action=addxsht"; | ||||
|     private Map<String, String> configParams; | ||||
| 
 | ||||
|     private static final BaseDAO dao = new BaseDAO(); | ||||
| 
 | ||||
|     public AfterApprovingSynchronizeRuleQMS() { | ||||
|     } | ||||
|  | @ -63,17 +65,23 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> { | |||
|         Date now = new Date(); | ||||
|         HYPubBO hybo = new HYPubBO(); | ||||
|         for (SaleOrderVO vo : useVOs) { | ||||
|             SaleOrderHVO pmoHeadVO = vo.getParentVO(); | ||||
|             SaleOrderBVO[] itemVOS = vo.getChildrenVO(); | ||||
|             String csaleorderid = pmoHeadVO.getCsaleorderid(); | ||||
|             // 判断业务单元是否是箱变公司,不是则跳过 | ||||
|             String pkOrg = vo.getParentVO().getPk_org(); | ||||
|             String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); | ||||
|             if (checkIfOrg(orgCode, configParams)) { | ||||
|                 continue; | ||||
|             } | ||||
|             String billType = pmoHeadVO.getVtrantypecode(); | ||||
|             if (checkBillType(billType)){ | ||||
|                 continue; | ||||
|             } | ||||
|             // 组装数据 | ||||
|             JSONObject singleObj = new JSONObject(); | ||||
|             String vbillcode = pmoHeadVO.getVbillcode(); | ||||
| 
 | ||||
|             SaleOrderHVO pmoHeadVO = vo.getParentVO(); | ||||
|             SaleOrderBVO[] itemVOS = vo.getChildrenVO(); | ||||
|             singleObj.put("batchid", now); | ||||
|             String vdef6 = pmoHeadVO.getVdef6(); | ||||
|             String contractNum = getDefCode("zdy-001", vdef6); | ||||
|  | @ -104,12 +112,6 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> { | |||
|             JSONArray contentArray = new JSONArray(); | ||||
|             for (SaleOrderBVO item : itemVOS) { | ||||
|                 JSONObject itemObj = new JSONObject(); | ||||
| //                itemObj.put("sgdh", item.getSgdh()); | ||||
| //                itemObj.put("xshth", item.getVdef1()); | ||||
| //                itemObj.put("htqdxh", item.getHtqdxh()); | ||||
| //                Object no = hybo.findColValue("bd_material", "code", "pk_material = '"+item.getCmaterialvid()+"' "); | ||||
| // | ||||
| //                Object name = hybo.findColValue("bd_material", "name", "pk_material = '"+item.getCmaterialvid()+"' "); | ||||
|                 String wlsql = " select code,name,materialspec,materialtype from bd_material where pk_material = '" + item.getCmaterialvid() + "' "; | ||||
|                 Map<String, Object> mrlmap = (Map<String, Object>) baseDAO.executeQuery(wlsql, new MapProcessor()); | ||||
| 
 | ||||
|  | @ -126,12 +128,30 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> { | |||
|                     itemObj.put("jhrq", ""); | ||||
|                 } | ||||
|                 itemObj.put("bz", item.getVrownote()); | ||||
|                 Object project_name = hybo.findColValue("bd_project", "project_name", " project_name = '" + item.getCprojectid() + "' "); | ||||
|                 itemObj.put("xmmc", project_name); | ||||
| 
 | ||||
|                 itemObj.put("xsddh", vbillcode);// 销售订单号 | ||||
|                 itemObj.put("qdhh", item.getCrowno());// 行号 | ||||
|                 itemObj.put("jqbz", 0);// 结清标志 | ||||
|                 contentArray.add(itemObj); | ||||
|             } | ||||
| 
 | ||||
|             if (itemVOS.length > 0) { | ||||
|                 SaleOrderBVO itemVO = itemVOS[0]; | ||||
|                 // 项目名称 | ||||
|                 Object project_name = hybo.findColValue("bd_project", "project_name", " pk_project = '" + itemVO.getCprojectid() + "' "); | ||||
|                 singleObj.put("xmmc", project_name); | ||||
|             } | ||||
|             // 查询删除的子表 | ||||
|             String delSql = " select crowno,csaleorderid from so_saleorder_b where csaleorderid = '" + csaleorderid + "' and dr = 1 "; | ||||
|             List<Map<String, String>> delList = (List<Map<String, String>>) dao.executeQuery(delSql, new MapListProcessor()); | ||||
|             if (delList != null && !delList.isEmpty()) { | ||||
|                 for (Map<String, String> delMap : delList) { | ||||
|                     JSONObject delObj = new JSONObject(); | ||||
|                     delObj.put("xsddh", vbillcode);// 销售订单号 | ||||
|                     delObj.put("qdhh", delMap.get("crowno"));// 行号 | ||||
|                     delObj.put("jqbz", 1);// 结清标志 | ||||
|                     delObj.put("dhsl", 0);// 订货数量 | ||||
|                     contentArray.add(delObj); | ||||
|                 } | ||||
|             } | ||||
|             singleObj.put("Content", contentArray); | ||||
| 
 | ||||
|             /* | ||||
|  | @ -204,6 +224,20 @@ public class AfterApprovingSynchronizeRuleQMS implements IRule<SaleOrderVO> { | |||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     private boolean checkBillType(String code) throws BusinessException { | ||||
|         String targetCode = configParams.get("soBillType"); | ||||
|         if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { | ||||
|             throw new BusinessException("未配置单据类型参数"); | ||||
|         } | ||||
|         String[] types = targetCode.split(","); | ||||
|         for (String type : types) { | ||||
|             if (!type.isEmpty() && type.equals(code)) { | ||||
|                 return true; | ||||
|             } | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private String getDefCode(String code, String pk_defdoc) { | ||||
|         String res = ""; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue