PMO-艾普mes1

This commit is contained in:
mzr 2025-09-24 10:04:46 +08:00
parent 733c6de713
commit 27368587f3
4 changed files with 70 additions and 10 deletions

View File

@ -3,12 +3,12 @@ package nc.bs.mmpac.pickm.bp.rule;
import nc.bs.framework.common.NCLocator; import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Log; import nc.bs.logging.Log;
import nc.bs.mmpac.pmo.pac0002.bp.rule.util.SyncEpicMesUtil;
import nc.impl.pubapp.pattern.rule.IRule; import nc.impl.pubapp.pattern.rule.IRule;
import nc.itf.mmpac.pmo.pac0002.IPMOQueryService; import nc.itf.mmpac.pmo.pac0002.IPMOQueryService;
import nc.util.mmf.framework.base.MMValueCheck; import nc.util.mmf.framework.base.MMValueCheck;
import nc.vo.mmpac.pickm.entity.AggPickmVO; import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.util.HttpPmoEpicMesUtil;
import nc.vo.pub.BusinessException; import nc.vo.pub.BusinessException;
import java.util.ArrayList; import java.util.ArrayList;
@ -52,7 +52,7 @@ public class AfterupdateSyncEpicMesRule implements IRule<AggPickmVO> {
} }
} }
if (list.size() > 0) { if (list.size() > 0) {
SyncEpicMesUtil mesUtil = new SyncEpicMesUtil(); HttpPmoEpicMesUtil mesUtil = new HttpPmoEpicMesUtil();
// ±¸ÁÏÖØËãºó´¥·¢ÉóºË // ±¸ÁÏÖØËãºó´¥·¢ÉóºË
String n = "Y"; String n = "Y";
try { try {

View File

@ -2,9 +2,9 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule;
import nc.bs.logging.Log; import nc.bs.logging.Log;
import nc.bs.mmpac.pmo.pac0002.bp.rule.util.SyncEpicMesUtil;
import nc.impl.pubapp.pattern.rule.IRule; import nc.impl.pubapp.pattern.rule.IRule;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.util.HttpPmoEpicMesUtil;
import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.scmpub.util.ArrayUtil; import nc.vo.scmpub.util.ArrayUtil;
@ -26,7 +26,7 @@ public class AfterApproveSyncEpicMesRule implements IRule<PMOAggVO> {
return; return;
} }
try { try {
SyncEpicMesUtil mesUtil = new SyncEpicMesUtil(); HttpPmoEpicMesUtil mesUtil = new HttpPmoEpicMesUtil();
mesUtil.processData(pmoAggVOS, "Y"); mesUtil.processData(pmoAggVOS, "Y");
} catch (Exception e) { } catch (Exception e) {
logDl.error("同步生产订单到艾普MES系统失败: " + e.getMessage(), e); logDl.error("同步生产订单到艾普MES系统失败: " + e.getMessage(), e);

View File

@ -2,10 +2,10 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule;
import nc.bs.logging.Log; import nc.bs.logging.Log;
import nc.bs.mmpac.pmo.pac0002.bp.rule.util.SyncEpicMesUtil;
import nc.impl.pubapp.pattern.rule.ICompareRule; import nc.impl.pubapp.pattern.rule.ICompareRule;
import nc.util.mmf.framework.base.MMArrayUtil; import nc.util.mmf.framework.base.MMArrayUtil;
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.util.HttpPmoEpicMesUtil;
import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.exception.ExceptionUtils;
/** /**
@ -26,7 +26,7 @@ public class AfterUnApproveSyncEpicMesRule implements ICompareRule<PMOAggVO> {
return; return;
} }
try { try {
SyncEpicMesUtil mesUtil = new SyncEpicMesUtil(); HttpPmoEpicMesUtil mesUtil = new HttpPmoEpicMesUtil();
mesUtil.processData(pmoAggVOS, "N"); mesUtil.processData(pmoAggVOS, "N");
} catch (Exception e) { } catch (Exception e) {

View File

@ -46,13 +46,73 @@ public class HttpPmoEpicMesUtil {
private static final BaseDAO dao = new BaseDAO(); private static final BaseDAO dao = new BaseDAO();
public void processData(PMOAggVO[] pmoAggVOS, String flag) throws BusinessException {
auditCode = flag;
configParams = MyHelper.getConfigParams("Dldz-config", null);
if (configParams.isEmpty()) {
// throw new BusinessException("????????????MES??????????");
logDl.error("????????????MES??????????");
return;
}
deptParams = MyHelper.getConfigParams("Dldz-dept", null);
if (deptParams.isEmpty()) {
// throw new BusinessException("????????????MES???????????????????");
logDl.error("????????????MES???????????????????");
return;
}
String deptRange = String.join(",", deptParams.keySet());
configParams.put("deptRange", deptRange);
List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(pmoAggVOS);
if (filteredOrders.isEmpty()) {
logDl.error("??§Ù?????????????????????????????MES????");
return;
}
logDl.info("????????????????????MES?????????????????????: " + filteredOrders.size());
Set<String> billTypeCodes = Set.of(
"55A2-Cxx-01", "55A2-Cxx-18"
);
JSONArray jsonArray = new JSONArray();
// ?????????MES??
for (PMOAggVO aggVO : filteredOrders) {
PMOHeadVO head = aggVO.getParentVO();
// ?§Ø????????,?????????????
String vtrantypecode = head.getVtrantypecode();
if (billTypeCodes.contains(vtrantypecode)) {
continue;
}
PMOItemVO[] bodys = aggVO.getChildrenVO();
if (bodys == null || bodys.length == 0) {
logDl.error("???????? " + head.getVbillcode() + " ???????????????????");
continue;
}
if ("N".equals(auditCode)) {
JSONObject data = buildSyncData(aggVO);
pushData(pmoUrl, data);
} else {
JSONObject data = buildSyncData(aggVO);
pushData(pmoUrl, data);
JSONObject buildSyncData = buildSyncCodeData(aggVO);
if (buildSyncData != null && !buildSyncData.isEmpty()) {
jsonArray.add(buildSyncData);
}
}
}
if (!jsonArray.isEmpty()) {
pushData(codeUrl, jsonArray);
}
logDl.info("?????????????????MES????????¨À?");
}
/** /**
* 调用MES的生产工单接口推送ERP的流程生产订单和备料计划或推送出厂编号 * 调用MES的生产工单接口推送ERP的流程生产订单和备料计划或推送出厂编号
* *
* @param param 请求体 * @param param 请求体
* @throws BusinessException 如果发生非特定可忽略的错误 * @throws BusinessException 如果发生非特定可忽略的错误
*/ */
public void pushData(String reqUrl, Object param) throws BusinessException { private void pushData(String reqUrl, Object param) throws BusinessException {
String responseString = null; String responseString = null;
try { try {
// 转json字符串的时候保留null值 // 转json字符串的时候保留null值
@ -105,7 +165,7 @@ public class HttpPmoEpicMesUtil {
/** /**
* 组装数据-流程生产订单+备料计划 * 组装数据-流程生产订单+备料计划
*/ */
public JSONObject buildSyncData(PMOAggVO aggVO) throws BusinessException { private JSONObject buildSyncData(PMOAggVO aggVO) throws BusinessException {
PMOHeadVO headVo = aggVO.getParentVO(); PMOHeadVO headVo = aggVO.getParentVO();
// 目前电力电子只做一个表体的订单故只处理的流程生产订单第一个子表行 // 目前电力电子只做一个表体的订单故只处理的流程生产订单第一个子表行
PMOItemVO pmoItem = aggVO.getChildrenVO()[0]; PMOItemVO pmoItem = aggVO.getChildrenVO()[0];
@ -209,7 +269,7 @@ public class HttpPmoEpicMesUtil {
* @return * @return
* @throws BusinessException * @throws BusinessException
*/ */
public JSONArray getPickmInfo(String sourceId) throws BusinessException { private JSONArray getPickmInfo(String sourceId) throws BusinessException {
// vsourcemorowid 来源生产订单明细id // vsourcemorowid 来源生产订单明细id
JSONArray pickmArr = new JSONArray(); JSONArray pickmArr = new JSONArray();
if (StringUtils.isEmpty(sourceId) || "~".equals(sourceId)) { if (StringUtils.isEmpty(sourceId) || "~".equals(sourceId)) {
@ -242,7 +302,7 @@ public class HttpPmoEpicMesUtil {
} }
public JSONObject buildSyncCodeData(PMOAggVO vo) throws BusinessException { private JSONObject buildSyncCodeData(PMOAggVO vo) throws BusinessException {
// [ // [
// { // {
// "siteCode": "", // 工厂编码 // "siteCode": "", // 工厂编码