Merge remote-tracking branch 'origin/main'

This commit is contained in:
lihao 2025-08-06 08:54:25 +08:00
commit 04c5029e4d
2 changed files with 42 additions and 47 deletions

View File

@ -20,7 +20,7 @@ import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO;
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
import nc.vo.org.DeptVO; import nc.vo.org.DeptVO;
import nc.vo.org.FactoryVO; import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException; import nc.vo.pub.BusinessException;
import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.pubapp.pattern.pub.SqlBuilder;
import nccloud.commons.lang.StringUtils; import nccloud.commons.lang.StringUtils;
@ -136,7 +136,7 @@ public class SyncEpicMesUtil {
List<PMOAggVO> aggvoList = new ArrayList<>(); List<PMOAggVO> aggvoList = new ArrayList<>();
for (PMOAggVO aggVo : pmoAggVOS) { for (PMOAggVO aggVo : pmoAggVOS) {
String pkOrg = aggVo.getParentVO().getPk_org(); String pkOrg = aggVo.getParentVO().getPk_org();
String orgCode = MyHelper.transferField(FactoryVO.getDefaultTableName(), FactoryVO.CODE, FactoryVO.PK_FACTORY, pkOrg); String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
// 检查当前组织是否为电力电子 // 检查当前组织是否为电力电子
if (MyHelper.checkIfDldzOrg(orgCode, configParams)) { if (MyHelper.checkIfDldzOrg(orgCode, configParams)) {
continue; continue;
@ -166,8 +166,8 @@ public class SyncEpicMesUtil {
// 翻译字段值 // 翻译字段值
// 组织 // 组织
String pkOrg = headVo.getPk_org(); String pkOrg = headVo.getPk_org();
String selectFields = FactoryVO.CODE + "," + FactoryVO.NAME; String selectFields = OrgVO.CODE + "," + OrgVO.NAME;
Map<String, Object> orgMap = MyHelper.transferFields(FactoryVO.getDefaultTableName(), selectFields, FactoryVO.PK_FACTORY, pkOrg); Map<String, Object> orgMap = MyHelper.transferFields(OrgVO.getDefaultTableName(), selectFields, OrgVO.PK_ORG, pkOrg);
// 物料 // 物料
String cmaterialid = pmoItem.getCmaterialid(); String cmaterialid = pmoItem.getCmaterialid();
selectFields = MaterialVO.CODE + "," + MaterialVO.NAME; selectFields = MaterialVO.CODE + "," + MaterialVO.NAME;
@ -175,7 +175,7 @@ public class SyncEpicMesUtil {
// 项目 // 项目
String cprojectid = pmoItem.getCprojectid(); String cprojectid = pmoItem.getCprojectid();
selectFields = ProjectHeadVO.PROJECT_CODE + "," + ProjectHeadVO.PROJECT_NAME; selectFields = ProjectHeadVO.PROJECT_CODE + "," + ProjectHeadVO.PROJECT_NAME;
Map<String, Object> projectMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), selectFields, ProjectHeadVO.PK_PROJECT, cprojectid); Map<String, Object> projectMap = MyHelper.transferFields(ProjectHeadVO.getDefaultTableName(), selectFields, ProjectHeadVO.PK_PROJECT, cprojectid);
// 生产部门 cdeptid // 生产部门 cdeptid
String cdeptid = pmoItem.getCdeptid(); String cdeptid = pmoItem.getCdeptid();
String deptCode = MyHelper.transferField(DeptVO.getDefaultTableName(), DeptVO.CODE, DeptVO.PK_DEPT, cdeptid); String deptCode = MyHelper.transferField(DeptVO.getDefaultTableName(), DeptVO.CODE, DeptVO.PK_DEPT, cdeptid);
@ -209,8 +209,8 @@ public class SyncEpicMesUtil {
// orderParam.put("transferPlanTime", null); // 生产转检计划时间格式为YYYY-MM-DD // orderParam.put("transferPlanTime", null); // 生产转检计划时间格式为YYYY-MM-DD
// orderParam.put("receiptScheduledTime", null); // 完工入库时间格式为YYYY-MM-DD // orderParam.put("receiptScheduledTime", null); // 完工入库时间格式为YYYY-MM-DD
if (orgMap != null) { if (orgMap != null) {
orderParam.put("companyCode", orgMap.get(FactoryVO.CODE)); // 公司编码 orderParam.put("companyCode", orgMap.get(OrgVO.CODE)); // ¹«Ë¾±àÂë
orderParam.put("companyName", orgMap.get(FactoryVO.NAME)); // 公司名称 orderParam.put("companyName", orgMap.get(OrgVO.NAME)); // ¹«Ë¾Ãû³Æ
} }
JSONArray orderArr = new JSONArray(); JSONArray orderArr = new JSONArray();
orderArr.add(orderParam); orderArr.add(orderParam);
@ -332,35 +332,4 @@ public class SyncEpicMesUtil {
return obj; return obj;
} }
/**
* 组装数据-取消审核流程生产订单
*/
private JSONObject buildUnAuditSyncData(PMOAggVO aggVO) throws BusinessException {
PMOHeadVO headVo = aggVO.getParentVO();
PMOItemVO pmoItem = aggVO.getChildrenVO()[0];
// 翻译字段值
// 组织
String pkOrg = headVo.getPk_org();
String selectFields = FactoryVO.CODE + "," + FactoryVO.NAME;
Map<String, Object> orgMap = MyHelper.transferFields(FactoryVO.getDefaultTableName(), selectFields, FactoryVO.PK_FACTORY, pkOrg);
// 生产部门 cdeptid
String cdeptid = pmoItem.getCdeptid();
String deptCode = MyHelper.transferField(DeptVO.getDefaultTableName(), DeptVO.CODE, DeptVO.PK_DEPT, cdeptid);
// 组装数据
JSONObject data = new JSONObject();
JSONObject orderParam = new JSONObject();
orderParam.put("siteCode", deptParams.getOrDefault(deptCode, ""));
orderParam.put("workOrderCode", headVo.getVbillcode());// 工单号
orderParam.put("auditCode", "N"); // 审核状态Y:已审核 N:未审核
if (orgMap != null) {
orderParam.put("companyCode", orgMap.get(FactoryVO.CODE)); // 公司编码
orderParam.put("companyName", orgMap.get(FactoryVO.NAME)); // 公司名称
}
JSONArray orderArr = new JSONArray();
orderArr.add(orderParam);
// 流程生产订单
data.put("workOrders", orderArr);
return data;
}
} }

View File

@ -3,22 +3,27 @@ package nccloud.api.uapbd.material.listener;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.SerializerFeature;
import nc.bs.bd.assignservice.multiorg.MultiOrgAssignVO;
import nc.bs.bd.baseservice.ArrayClassConvertUtil; import nc.bs.bd.baseservice.ArrayClassConvertUtil;
import nc.bs.businessevent.IBusinessEvent; import nc.bs.businessevent.IBusinessEvent;
import nc.bs.businessevent.IBusinessListener; import nc.bs.businessevent.IBusinessListener;
import nc.bs.businessevent.bd.BDCommonEvent; import nc.bs.businessevent.bd.BDCommonEvent;
import nc.bs.dao.BaseDAO; import nc.bs.dao.BaseDAO;
import nc.bs.logging.Log; import nc.bs.logging.Log;
import nc.bs.trade.business.HYPubBO;
import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.MyHelper;
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
import nc.jdbc.framework.processor.MapProcessor; import nc.jdbc.framework.processor.MapProcessor;
import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.MaterialVO;
import nc.vo.bd.material.marbasclass.MarBasClassVO; import nc.vo.bd.material.marbasclass.MarBasClassVO;
import nc.vo.bd.material.stock.MaterialStockVO; import nc.vo.bd.material.stock.MaterialStockVO;
import nc.vo.org.FactoryVO; import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException; import nc.vo.pub.BusinessException;
import nccloud.baseapp.core.log.NCCForUAPLogger;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -40,7 +45,7 @@ public class MaterialToEpicMesListener implements IBusinessListener {
Object[] objs = e.getObjs(); Object[] objs = e.getObjs();
// EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后
if ("1002".equals(eventType) || "1004".equals(eventType)) { if ("1004".equals(eventType)) {
MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class);
configParams = MyHelper.getConfigParams("Dldz-config", null); configParams = MyHelper.getConfigParams("Dldz-config", null);
if (configParams.isEmpty()) { if (configParams.isEmpty()) {
@ -53,13 +58,32 @@ public class MaterialToEpicMesListener implements IBusinessListener {
if (configParams.isEmpty()) { if (configParams.isEmpty()) {
throw new BusinessException("电力电子的艾普MES接口缺少配置"); throw new BusinessException("电力电子的艾普MES接口缺少配置");
} }
buildSyncData(useVOs, eventType);
} else if ("1009".equals(eventType)) { } else if ("1009".equals(eventType)) {
Object[] newObjs = e.getNewObjs(); // 物料可见性范围-分配后 1009
// ÎïÁϿɼûÐԷΧ-·ÖÅäºó configParams = MyHelper.getConfigParams("Dldz-config", null);
for (Object obj : newObjs) { if (configParams.isEmpty()) {
MaterialVO vo = (MaterialVO) obj; throw new BusinessException("电力电子的艾普MES接口缺少配置");
String pkMaterial = vo.getPk_material();
} }
HYPubBO hyPub = new HYPubBO();
List<MaterialVO> voList = new ArrayList<>();
for (Object obj : objs) {
MultiOrgAssignVO vo = (MultiOrgAssignVO) obj;
String pkMaterial = vo.getPk_doc();
String pkOrg = vo.getPk_org();
String orgCode = (String) hyPub.findColValue(OrgVO.getDefaultTableName(), OrgVO.CODE, "dr =0 and pk_org = '" + pkOrg + "' ");
// 检查当前组织是否为电力电子
if (MyHelper.checkIfDldzOrg(orgCode, configParams)) {
continue;
}
MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pkMaterial);
voList.add(materialVO);
}
if (!voList.isEmpty()) {
MaterialVO[] useVOs = voList.toArray(new MaterialVO[0]);
buildSyncData(useVOs, eventType);
}
} }
} }
@ -70,8 +94,8 @@ public class MaterialToEpicMesListener implements IBusinessListener {
for (MaterialVO vo : useVOs) { for (MaterialVO vo : useVOs) {
// 判断物料的业务单元是否是电力电子公司不是则跳过 // 判断物料的业务单元是否是电力电子公司不是则跳过
String pkOrg = vo.getPk_org(); String pkOrg = vo.getPk_org();
String orgCode = MyHelper.transferField(FactoryVO.getDefaultTableName(), FactoryVO.CODE, FactoryVO.PK_FACTORY, pkOrg); String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg);
if (MyHelper.checkIfDldzOrg(orgCode, configParams)) { if (!"1009".equals(eventType) && MyHelper.checkIfDldzOrg(orgCode, configParams)) {
continue; continue;
} }
// 字段值翻译 // 字段值翻译
@ -116,6 +140,7 @@ public class MaterialToEpicMesListener implements IBusinessListener {
SerializerFeature.WriteNullStringAsEmpty SerializerFeature.WriteNullStringAsEmpty
); );
logDl.error("EpicMes-Material-param = " + jsonStr); logDl.error("EpicMes-Material-param = " + jsonStr);
NCCForUAPLogger.debug("EpicMes-Material-param = " + jsonStr);
String baseUrl = configParams.get("epicMesUrl"); String baseUrl = configParams.get("epicMesUrl");
String requestUrl = baseUrl + reqUrl; String requestUrl = baseUrl + reqUrl;
logDl.error("EpicMes-Material-url = " + requestUrl); logDl.error("EpicMes-Material-url = " + requestUrl);
@ -133,6 +158,7 @@ public class MaterialToEpicMesListener implements IBusinessListener {
// 类型I:新增 U:修改 D:删除 // 类型I:新增 U:修改 D:删除
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
map.put("1002", "I"); map.put("1002", "I");
map.put("1009", "I");
map.put("1004", "U"); map.put("1004", "U");
map.put("1069", "U"); map.put("1069", "U");
map.put("1071", "U"); map.put("1071", "U");