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();
processer.addAfterRule(rule);
// BOMÍÆËͰ¬ÆÕMES
IRule<AggBomVO> eventRrule = new BomSaveAfterEpicMesRule();
processer.addAfterRule(eventRrule);
}
public void setCheckEcn(boolean checkEcn) {

View File

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

View File

@ -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<AggBomVO> {
public class BomSaveAfterEpicMesRule implements IRule<AggBomVO> {
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<String, String> configParams;
@Override
@ -62,17 +64,26 @@ public class BomUpdateAfterEpicMesRule implements IRule<AggBomVO> {
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<AggBomVO> {
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() + "]");