feat(bom): 添加 BOM同步到艾普 MES 的功能

This commit is contained in:
mzr 2025-09-01 19:31:14 +08:00
parent 6d66c26bc6
commit 96120e7799
3 changed files with 26 additions and 11 deletions

View File

@ -252,6 +252,10 @@ public class BomInsertBP {
rule = new BomAddAfterEventRule(); rule = new BomAddAfterEventRule();
processer.addAfterRule(rule); processer.addAfterRule(rule);
// BOMÍÆËͰ¬ÆÕMES
IRule<AggBomVO> eventRrule = new BomSaveAfterEpicMesRule();
processer.addAfterRule(eventRrule);
} }
public void setCheckEcn(boolean checkEcn) { public void setCheckEcn(boolean checkEcn) {

View File

@ -340,8 +340,8 @@ public class BomUpdateBP {
ICompareRule<AggBomVO> updateBmrtRule = new BomUpdateBmrtVersionRule(); ICompareRule<AggBomVO> updateBmrtRule = new BomUpdateBmrtVersionRule();
processer.addBeforeRule(updateBmrtRule); processer.addBeforeRule(updateBmrtRule);
// 注册事件源 // BOMÍÆËͰ¬ÆÕMES
IRule<AggBomVO> eventRrule = new BomUpdateAfterEventRule(); IRule<AggBomVO> eventRrule = new BomSaveAfterEpicMesRule();
processer.addAfterRule(eventRrule); processer.addAfterRule(eventRrule);
} }

View File

@ -9,12 +9,14 @@ import nc.bs.uapbd.util.MyHelper;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.impl.pubapp.pattern.rule.IRule; import nc.impl.pubapp.pattern.rule.IRule;
import nc.util.mmf.framework.base.MMValueCheck; 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.AggBomVO;
import nc.vo.bd.bom.bom0202.entity.BomItemVO; import nc.vo.bd.bom.bom0202.entity.BomItemVO;
import nc.vo.bd.bom.bom0202.entity.BomVO; 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.org.OrgVO;
import nc.vo.pub.BusinessException; import nc.vo.pub.BusinessException;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nccloud.baseapp.core.log.NCCForUAPLogger; import nccloud.baseapp.core.log.NCCForUAPLogger;
@ -26,10 +28,10 @@ import java.util.Map;
* @author mzr * @author mzr
* @date 2025/08/29 * @date 2025/08/29
*/ */
public class BomUpdateAfterEpicMesRule implements IRule<AggBomVO> { public class BomSaveAfterEpicMesRule implements IRule<AggBomVO> {
private static final String LOG_INFO_NAME = "dldzlog"; private static final String LOG_INFO_NAME = "dldzlog";
private static final Log logDl = Log.getInstance(LOG_INFO_NAME); 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<String, String> configParams; private Map<String, String> configParams;
@Override @Override
@ -62,17 +64,26 @@ public class BomUpdateAfterEpicMesRule implements IRule<AggBomVO> {
if (MMValueCheck.isEmpty(childrenVOs)) { if (MMValueCheck.isEmpty(childrenVOs)) {
continue; continue;
} }
String hcmaterialid = hvo.getHcmaterialid();// 物料编码
String hfmaterialid = hvo.getHfmaterialid();// 父项物料编码 String hfmaterialid = hvo.getHfmaterialid();// 父项物料编码
String hcprojectid = hvo.getHcprojectid();// 项目 String hcprojectid = hvo.getHcprojectid();// 项目
String hversion = hvo.getHversion();// BOM版本号 String hversion = hvo.getHversion();// BOM版本号
String mitm = MyHelper.getStrValByCondition(MaterialVO.getDefaultTableName(), MaterialVO.CODE,
MaterialVO.PK_MATERIAL + " = '" + hcmaterialid + "'");
for (BomItemVO childrenVO : childrenVOs) { for (BomItemVO childrenVO : childrenVOs) {
String cmaterialid = childrenVO.getCmaterialid(); 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(); JSONObject singleObj = new JSONObject();
singleObj.put("mitm", ""); // 制造物料编码(ERP父项物料编码) singleObj.put("mitm", mitm); // 制造物料编码(ERP父项物料编码)
singleObj.put("sitm", ""); // 子物料编码 singleObj.put("sitm", sitm); // 子物料编码
singleObj.put("orderNum", ""); // 合同号(ERP项目) singleObj.put("orderNum", projectCode); // 合同号(ERP项目)
singleObj.put("qana", childrenVO.getNassitemnum()); // 数量(ERP子项数量) singleObj.put("qana", childrenVO.getNassitemnum().toString()); // 数量(ERP子项数量)
singleObj.put("ver", hversion); // BOM版本号 singleObj.put("ver", hversion); // BOM版本号
singleObj.put("remark", childrenVO.getVnote()); // 备注 singleObj.put("remark", childrenVO.getVnote()); // 备注
data.add(singleObj); data.add(singleObj);
@ -104,14 +115,14 @@ public class BomUpdateAfterEpicMesRule implements IRule<AggBomVO> {
SerializerFeature.WriteNullStringAsEmpty SerializerFeature.WriteNullStringAsEmpty
); );
logDl.error("EpicMes-BOM-param = " + jsonStr); logDl.error("EpicMes-BOM-param = " + jsonStr);
NCCForUAPLogger.debug("EpicMes-BOM-param = " + jsonStr); // NCCForUAPLogger.debug("EpicMes-BOM-param = " + jsonStr);
String baseUrl = configParams.get("epicMesUrl"); String baseUrl = configParams.get("epicMesUrl");
String requestUrl = baseUrl + reqUrl; String requestUrl = baseUrl + reqUrl;
logDl.error("EpicMes-BOM-url = " + requestUrl); logDl.error("EpicMes-BOM-url = " + requestUrl);
String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr); String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr);
JSONObject resultObj = JSONObject.parseObject(result); JSONObject resultObj = JSONObject.parseObject(result);
logDl.error("EpicMes-BOM-res = " + result); logDl.error("EpicMes-BOM-res = " + result);
// NCCForUAPLogger.debug("EpicMes-BOM-result = " + result);
if (!"1".equals(resultObj.getString("flag"))) { if (!"1".equals(resultObj.getString("flag"))) {
// throw new BusinessException("EpicMes-BOM-error:" + resultObj.getString("msg")); // throw new BusinessException("EpicMes-BOM-error:" + resultObj.getString("msg"));
logDl.error("EpicMes-BOM-error,result[" + resultObj.toJSONString() + "]"); logDl.error("EpicMes-BOM-error,result[" + resultObj.toJSONString() + "]");