From 96120e779932222de1ff5dc8e9fb307536d8cf48 Mon Sep 17 00:00:00 2001 From: mzr Date: Mon, 1 Sep 2025 19:31:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(bom):=20=E6=B7=BB=E5=8A=A0=20BOM=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=88=B0=E8=89=BE=E6=99=AE=20MES=20=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nc/bs/bd/bom/bom0202/bp/BomInsertBP.java | 4 +++ .../nc/bs/bd/bom/bom0202/bp/BomUpdateBP.java | 4 +-- ...Rule.java => BomSaveAfterEpicMesRule.java} | 29 +++++++++++++------ 3 files changed, 26 insertions(+), 11 deletions(-) rename uapbd/src/private/nc/bs/bd/bom/bom0202/rule/{BomUpdateAfterEpicMesRule.java => BomSaveAfterEpicMesRule.java} (75%) diff --git a/uapbd/src/private/nc/bs/bd/bom/bom0202/bp/BomInsertBP.java b/uapbd/src/private/nc/bs/bd/bom/bom0202/bp/BomInsertBP.java index fea1fab..f23af76 100644 --- a/uapbd/src/private/nc/bs/bd/bom/bom0202/bp/BomInsertBP.java +++ b/uapbd/src/private/nc/bs/bd/bom/bom0202/bp/BomInsertBP.java @@ -252,6 +252,10 @@ public class BomInsertBP { rule = new BomAddAfterEventRule(); processer.addAfterRule(rule); + // BOM推送艾普MES + IRule eventRrule = new BomSaveAfterEpicMesRule(); + processer.addAfterRule(eventRrule); + } public void setCheckEcn(boolean checkEcn) { diff --git a/uapbd/src/private/nc/bs/bd/bom/bom0202/bp/BomUpdateBP.java b/uapbd/src/private/nc/bs/bd/bom/bom0202/bp/BomUpdateBP.java index 1268ef0..3917908 100644 --- a/uapbd/src/private/nc/bs/bd/bom/bom0202/bp/BomUpdateBP.java +++ b/uapbd/src/private/nc/bs/bd/bom/bom0202/bp/BomUpdateBP.java @@ -340,8 +340,8 @@ public class BomUpdateBP { ICompareRule updateBmrtRule = new BomUpdateBmrtVersionRule(); processer.addBeforeRule(updateBmrtRule); - // 注册事件源 - IRule eventRrule = new BomUpdateAfterEventRule(); + // BOM推送艾普MES + IRule eventRrule = new BomSaveAfterEpicMesRule(); processer.addAfterRule(eventRrule); } diff --git a/uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomUpdateAfterEpicMesRule.java b/uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomSaveAfterEpicMesRule.java similarity index 75% rename from uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomUpdateAfterEpicMesRule.java rename to uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomSaveAfterEpicMesRule.java index d3641b0..4b43379 100644 --- a/uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomUpdateAfterEpicMesRule.java +++ b/uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomSaveAfterEpicMesRule.java @@ -9,12 +9,14 @@ import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; import nc.util.mmf.framework.base.MMValueCheck; +import nc.vo.bc.pmpub.project.ProjectHeadVO; import nc.vo.bd.bom.bom0202.entity.AggBomVO; import nc.vo.bd.bom.bom0202.entity.BomItemVO; import nc.vo.bd.bom.bom0202.entity.BomVO; +import nc.vo.bd.material.MaterialVO; +import nc.vo.bd.material.marbasclass.MarBasClassVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; -import nc.vo.pub.CircularlyAccessibleValueObject; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nccloud.baseapp.core.log.NCCForUAPLogger; @@ -26,10 +28,10 @@ import java.util.Map; * @author mzr * @date 2025/08/29 */ -public class BomUpdateAfterEpicMesRule implements IRule { +public class BomSaveAfterEpicMesRule implements IRule { private static final String LOG_INFO_NAME = "dldzlog"; private static final Log logDl = Log.getInstance(LOG_INFO_NAME); - private static final String reqUrl = ""; + private static final String reqUrl = "/prj-v5-web/ext/api/bom"; private Map configParams; @Override @@ -62,17 +64,26 @@ public class BomUpdateAfterEpicMesRule implements IRule { if (MMValueCheck.isEmpty(childrenVOs)) { continue; } + String hcmaterialid = hvo.getHcmaterialid();// 物料编码 String hfmaterialid = hvo.getHfmaterialid();// 父项物料编码 String hcprojectid = hvo.getHcprojectid();// 项目 String hversion = hvo.getHversion();// BOM版本号 + + String mitm = MyHelper.getStrValByCondition(MaterialVO.getDefaultTableName(), MaterialVO.CODE, + MaterialVO.PK_MATERIAL + " = '" + hcmaterialid + "'"); for (BomItemVO childrenVO : childrenVOs) { String cmaterialid = childrenVO.getCmaterialid(); + String cprojectid = childrenVO.getCprojectid(); + String sitm = MyHelper.getStrValByCondition(MaterialVO.getDefaultTableName(), MaterialVO.CODE, + MaterialVO.PK_MATERIAL + " = '" + cmaterialid + "'"); + String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE, + ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'"); // 组装数据 JSONObject singleObj = new JSONObject(); - singleObj.put("mitm", ""); // 制造物料编码(ERP父项物料编码) - singleObj.put("sitm", ""); // 子物料编码 - singleObj.put("orderNum", ""); // 合同号(ERP项目) - singleObj.put("qana", childrenVO.getNassitemnum()); // 数量(ERP子项数量) + singleObj.put("mitm", mitm); // 制造物料编码(ERP父项物料编码) + singleObj.put("sitm", sitm); // 子物料编码 + singleObj.put("orderNum", projectCode); // 合同号(ERP项目) + singleObj.put("qana", childrenVO.getNassitemnum().toString()); // 数量(ERP子项数量) singleObj.put("ver", hversion); // BOM版本号 singleObj.put("remark", childrenVO.getVnote()); // 备注 data.add(singleObj); @@ -104,14 +115,14 @@ public class BomUpdateAfterEpicMesRule implements IRule { SerializerFeature.WriteNullStringAsEmpty ); logDl.error("EpicMes-BOM-param = " + jsonStr); - NCCForUAPLogger.debug("EpicMes-BOM-param = " + jsonStr); + // NCCForUAPLogger.debug("EpicMes-BOM-param = " + jsonStr); String baseUrl = configParams.get("epicMesUrl"); String requestUrl = baseUrl + reqUrl; logDl.error("EpicMes-BOM-url = " + requestUrl); String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr); JSONObject resultObj = JSONObject.parseObject(result); logDl.error("EpicMes-BOM-res = " + result); - + // NCCForUAPLogger.debug("EpicMes-BOM-result = " + result); if (!"1".equals(resultObj.getString("flag"))) { // throw new BusinessException("EpicMes-BOM-error:" + resultObj.getString("msg")); logDl.error("EpicMes-BOM-error,result[" + resultObj.toJSONString() + "]");