From 6469ce7f6d542ebe3515337fef52c2bf15cd181a Mon Sep 17 00:00:00 2001 From: mzr Date: Wed, 6 Aug 2025 08:38:33 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(uapbd):=20=E5=A2=9E=E5=8A=A0=E7=89=A9?= =?UTF-8?q?=E6=96=99=E5=8F=AF=E8=A7=81=E6=80=A7=E5=88=86=E9=85=8D=E5=90=8E?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=95=B0=E6=8D=AE=E5=88=B0=E8=89=BE=E6=99=AE?= =?UTF-8?q?MES=20-=20=E6=96=B0=E5=A2=9E=E5=AF=B9=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=8F=AF=E8=A7=81=E6=80=A7=E5=88=86=E9=85=8D=E5=90=8E=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=20-=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=89=A9=E6=96=99=E6=95=B0=E6=8D=AE=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=BB=84=E7=BB=87=E7=9A=84=E9=80=BB=E8=BE=91=20-=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20-=20=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E6=BD=9C=E5=9C=A8=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/MaterialToEpicMesListener.java | 44 +++++++++++++++---- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java index 43ef1c6..f82f433 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToEpicMesListener.java @@ -3,22 +3,27 @@ package nccloud.api.uapbd.material.listener; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; +import nc.bs.bd.assignservice.multiorg.MultiOrgAssignVO; import nc.bs.bd.baseservice.ArrayClassConvertUtil; import nc.bs.businessevent.IBusinessEvent; import nc.bs.businessevent.IBusinessListener; import nc.bs.businessevent.bd.BDCommonEvent; import nc.bs.dao.BaseDAO; import nc.bs.logging.Log; +import nc.bs.trade.business.HYPubBO; import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.jdbc.framework.processor.MapProcessor; import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.marbasclass.MarBasClassVO; import nc.vo.bd.material.stock.MaterialStockVO; -import nc.vo.org.FactoryVO; +import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; +import nccloud.baseapp.core.log.NCCForUAPLogger; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -40,7 +45,7 @@ public class MaterialToEpicMesListener implements IBusinessListener { Object[] objs = e.getObjs(); // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 - if ("1002".equals(eventType) || "1004".equals(eventType)) { + if ("1004".equals(eventType)) { MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); configParams = MyHelper.getConfigParams("Dldz-config", null); if (configParams.isEmpty()) { @@ -53,13 +58,32 @@ public class MaterialToEpicMesListener implements IBusinessListener { if (configParams.isEmpty()) { throw new BusinessException("电力电子的艾普MES接口缺少配置"); } + buildSyncData(useVOs, eventType); } else if ("1009".equals(eventType)) { - Object[] newObjs = e.getNewObjs(); - // 物料可见性范围-分配后 - for (Object obj : newObjs) { - MaterialVO vo = (MaterialVO) obj; - String pkMaterial = vo.getPk_material(); + // 物料可见性范围-分配后 1009 + configParams = MyHelper.getConfigParams("Dldz-config", null); + if (configParams.isEmpty()) { + throw new BusinessException("电力电子的艾普MES接口缺少配置"); } + HYPubBO hyPub = new HYPubBO(); + List 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) { // 判断物料的业务单元是否是电力电子公司,不是则跳过 String pkOrg = vo.getPk_org(); - String orgCode = MyHelper.transferField(FactoryVO.getDefaultTableName(), FactoryVO.CODE, FactoryVO.PK_FACTORY, pkOrg); - if (MyHelper.checkIfDldzOrg(orgCode, configParams)) { + String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); + if (!"1009".equals(eventType) && MyHelper.checkIfDldzOrg(orgCode, configParams)) { continue; } // 字段值翻译 @@ -116,6 +140,7 @@ public class MaterialToEpicMesListener implements IBusinessListener { SerializerFeature.WriteNullStringAsEmpty ); logDl.error("EpicMes-Material-param = " + jsonStr); + NCCForUAPLogger.debug("EpicMes-Material-param = " + jsonStr); String baseUrl = configParams.get("epicMesUrl"); String requestUrl = baseUrl + reqUrl; logDl.error("EpicMes-Material-url = " + requestUrl); @@ -133,6 +158,7 @@ public class MaterialToEpicMesListener implements IBusinessListener { // 类型(I:新增 U:修改 D:删除) Map map = new HashMap<>(); map.put("1002", "I"); + map.put("1009", "I"); map.put("1004", "U"); map.put("1069", "U"); map.put("1071", "U"); From d42e0f33eb6b08230c4c2c2bc1586a3c3730dbe9 Mon Sep 17 00:00:00 2001 From: mzr Date: Wed, 6 Aug 2025 08:41:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?refactor(mmpac):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=20Epic=20MES=20=E5=B7=A5=E5=8D=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=9A=84=E7=BB=84=E7=BB=87=E7=9B=B8=E5=85=B3=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=20-=20=E5=B0=86=20FactoryVO=20=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E4=B8=BA=20OrgVO=EF=BC=8C=E4=BB=A5=E6=94=AF=E6=8C=81=E6=9B=B4?= =?UTF-8?q?=E5=B9=BF=E6=B3=9B=E7=9A=84=E7=BB=84=E7=BB=87=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=20-=20=E4=BC=98=E5=8C=96=E4=BA=86=E7=BB=84=E7=BB=87=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=92=8C=E5=90=8D=E7=A7=B0=E7=9A=84=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E9=80=BB=E8=BE=91=20-=20=E5=88=A0=E9=99=A4=E4=BA=86=E6=9C=AA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84=E5=8F=96=E6=B6=88=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pac0002/bp/rule/util/SyncEpicMesUtil.java | 45 +++---------------- 1 file changed, 7 insertions(+), 38 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/util/SyncEpicMesUtil.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/util/SyncEpicMesUtil.java index 7f4e0fa..b74d899 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/util/SyncEpicMesUtil.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/util/SyncEpicMesUtil.java @@ -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.PMOItemVO; import nc.vo.org.DeptVO; -import nc.vo.org.FactoryVO; +import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import nc.vo.pubapp.pattern.pub.SqlBuilder; import nccloud.commons.lang.StringUtils; @@ -136,7 +136,7 @@ public class SyncEpicMesUtil { List aggvoList = new ArrayList<>(); for (PMOAggVO aggVo : pmoAggVOS) { 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)) { continue; @@ -166,8 +166,8 @@ public class SyncEpicMesUtil { // 翻译字段值 // 组织 String pkOrg = headVo.getPk_org(); - String selectFields = FactoryVO.CODE + "," + FactoryVO.NAME; - Map orgMap = MyHelper.transferFields(FactoryVO.getDefaultTableName(), selectFields, FactoryVO.PK_FACTORY, pkOrg); + String selectFields = OrgVO.CODE + "," + OrgVO.NAME; + Map orgMap = MyHelper.transferFields(OrgVO.getDefaultTableName(), selectFields, OrgVO.PK_ORG, pkOrg); // 物料 String cmaterialid = pmoItem.getCmaterialid(); selectFields = MaterialVO.CODE + "," + MaterialVO.NAME; @@ -175,7 +175,7 @@ public class SyncEpicMesUtil { // 项目 String cprojectid = pmoItem.getCprojectid(); selectFields = ProjectHeadVO.PROJECT_CODE + "," + ProjectHeadVO.PROJECT_NAME; - Map projectMap = MyHelper.transferFields(MaterialVO.getDefaultTableName(), selectFields, ProjectHeadVO.PK_PROJECT, cprojectid); + Map projectMap = MyHelper.transferFields(ProjectHeadVO.getDefaultTableName(), selectFields, ProjectHeadVO.PK_PROJECT, cprojectid); // 生产部门 cdeptid String cdeptid = pmoItem.getCdeptid(); 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("receiptScheduledTime", null); // 完工入库时间(格式为YYYY-MM-DD) if (orgMap != null) { - orderParam.put("companyCode", orgMap.get(FactoryVO.CODE)); // 公司编码 - orderParam.put("companyName", orgMap.get(FactoryVO.NAME)); // 公司名称 + orderParam.put("companyCode", orgMap.get(OrgVO.CODE)); // 公司编码 + orderParam.put("companyName", orgMap.get(OrgVO.NAME)); // 公司名称 } JSONArray orderArr = new JSONArray(); orderArr.add(orderParam); @@ -332,35 +332,4 @@ public class SyncEpicMesUtil { 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 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; - } - }