From 8d86ad7e43dd9aee55ddc5dd78d1c64409ae73fe Mon Sep 17 00:00:00 2001 From: mzr Date: Fri, 29 Aug 2025 16:59:14 +0800 Subject: [PATCH] =?UTF-8?q?BOM=E4=BF=AE=E6=94=B9=E5=90=8E=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E8=89=BE=E6=99=AEMES=E7=9A=84BOM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rule/BomUpdateAfterEpicMesRule.java | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomUpdateAfterEpicMesRule.java diff --git a/uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomUpdateAfterEpicMesRule.java b/uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomUpdateAfterEpicMesRule.java new file mode 100644 index 0000000..d3641b0 --- /dev/null +++ b/uapbd/src/private/nc/bs/bd/bom/bom0202/rule/BomUpdateAfterEpicMesRule.java @@ -0,0 +1,120 @@ +package nc.bs.bd.bom.bom0202.rule; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import nc.bs.logging.Log; +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.bd.bom.bom0202.entity.AggBomVO; +import nc.vo.bd.bom.bom0202.entity.BomItemVO; +import nc.vo.bd.bom.bom0202.entity.BomVO; +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; + +import java.util.Map; + +/** + * BOM修改后同步艾普MES的BOM + * + * @author mzr + * @date 2025/08/29 + */ +public class BomUpdateAfterEpicMesRule 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 Map configParams; + + @Override + public void process(AggBomVO[] vos) { + if (!MMValueCheck.isEmpty(vos)) { + try { + configParams = MyHelper.getConfigParams("Dldz-config", null); + JSONArray data = buildSyncData(vos); + pushData(data); + } catch (BusinessException e) { + ExceptionUtils.wrappException(e); + } + } + } + + /** + * 构建同步数据 + */ + private JSONArray buildSyncData(AggBomVO[] useVOs) throws BusinessException { + JSONArray data = new JSONArray(); + for (AggBomVO vo : useVOs) { + // 判断物料的业务单元是否是电力电子公司,不是则跳过 + BomVO hvo = (BomVO) vo.getParentVO(); + String pkOrg = (String) hvo.getAttributeValue("pk_org"); + String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); + if (MyHelper.checkIfDldzOrg(orgCode, configParams)) { + continue; + } + BomItemVO[] childrenVOs = vo.getChildrenVO(); + if (MMValueCheck.isEmpty(childrenVOs)) { + continue; + } + String hfmaterialid = hvo.getHfmaterialid();// 父项物料编码 + String hcprojectid = hvo.getHcprojectid();// 项目 + String hversion = hvo.getHversion();// BOM版本号 + for (BomItemVO childrenVO : childrenVOs) { + String cmaterialid = childrenVO.getCmaterialid(); + // 组装数据 + JSONObject singleObj = new JSONObject(); + singleObj.put("mitm", ""); // 制造物料编码(ERP父项物料编码) + singleObj.put("sitm", ""); // 子物料编码 + singleObj.put("orderNum", ""); // 合同号(ERP项目) + singleObj.put("qana", childrenVO.getNassitemnum()); // 数量(ERP子项数量) + singleObj.put("ver", hversion); // BOM版本号 + singleObj.put("remark", childrenVO.getVnote()); // 备注 + data.add(singleObj); + } + /** + * [ + * { + * "mitm": "DSF01-2501230028", + * "sitm": "2305050447", + * "orderNum": "111", + * "qana": 1, + * "ver": "1", + * "remark": "" + * } + * ] + */ + + } + return data; + } + + /** + * 推送同步数据 + */ + private void pushData(JSONArray param) throws BusinessException { + // 转json字符串的时候保留null值 + String jsonStr = JSON.toJSONString(param, + SerializerFeature.WriteMapNullValue, + SerializerFeature.WriteNullStringAsEmpty + ); + logDl.error("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); + + if (!"1".equals(resultObj.getString("flag"))) { + // throw new BusinessException("EpicMes-BOM-error:" + resultObj.getString("msg")); + logDl.error("EpicMes-BOM-error,result[" + resultObj.toJSONString() + "]"); + } + } +}