BOM修改后同步艾普MES的BOM
This commit is contained in:
parent
3e15bd6457
commit
8d86ad7e43
|
@ -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<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 Map<String, String> 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() + "]");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue