From d82a1060db9e8116944462c2391cddeb4f238bb9 Mon Sep 17 00:00:00 2001 From: mzr Date: Tue, 23 Sep 2025 12:37:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B2=BE=E5=AF=86-=E5=90=AF=E6=BA=90=E7=89=A9?= =?UTF-8?q?=E6=96=99=E4=BC=A0=E9=80=92=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=88=B6?= =?UTF-8?q?=E9=80=A0=E4=BB=B6=E5=88=A4=E6=96=AD=EF=BC=8C=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E5=88=86=E7=B1=BB=E3=80=81=E7=89=A9=E6=96=99?= =?UTF-8?q?=E6=A0=87=E5=BF=97=E3=80=81=E5=90=AF=E6=BA=90=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E7=AD=89=E5=AD=97=E6=AE=B5=E7=9A=84=E8=B5=8B=E5=80=BC=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BA=93=E5=AD=98=E4=BF=A1=E6=81=AF=E3=80=81?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E4=BF=A1=E6=81=AF=E7=9A=84=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/MaterialToJmQmsListener.java | 70 ++++++++++++++++--- 1 file changed, 60 insertions(+), 10 deletions(-) diff --git a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToJmQmsListener.java b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToJmQmsListener.java index c90b121f..af64e4b8 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToJmQmsListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToJmQmsListener.java @@ -47,10 +47,41 @@ public class MaterialToJmQmsListener implements IBusinessListener { BDCommonEvent e = (BDCommonEvent) event; String eventType = event.getEventType(); Object[] objs = e.getObjs(); - - // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 + HYPubBO hyPub = new HYPubBO(); + // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 MaterialStockVO if ("1004".equals(eventType) || "1071".equals(eventType) || "1069".equals(eventType)) { - MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); + MaterialVO[] useVOs = null; + if (objs == null) { + return; + } else if (objs instanceof MaterialVO[]) { + useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); + } else if (objs instanceof MaterialStockVO[]) { + List list = new ArrayList<>(); + // 库存信息修改 + MaterialStockVO[] materialStockVOS = ArrayClassConvertUtil.convert(objs, MaterialStockVO.class); + for (MaterialStockVO stockVO : materialStockVOS) { + String pkMaterial = stockVO.getPk_material(); + if (MMValueCheck.isEmpty(pkMaterial)) { + continue; + } + MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pkMaterial); + list.add(materialVO); + } + useVOs = list.toArray(new MaterialVO[0]); + } else if (objs instanceof MaterialPlanVO[]) { + List list = new ArrayList<>(); + // 计划信息修改 + MaterialPlanVO[] planVOS = ArrayClassConvertUtil.convert(objs, MaterialPlanVO.class); + for (MaterialPlanVO stockVO : planVOS) { + String pkMaterial = stockVO.getPk_material(); + if (MMValueCheck.isEmpty(pkMaterial)) { + continue; + } + MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pkMaterial); + list.add(materialVO); + } + useVOs = list.toArray(new MaterialVO[0]); + } configParams = MyHelper.getConfigParams("jm-config", null); if (configParams.isEmpty()) { throw new BusinessException("精密的QMS接口缺少配置"); @@ -62,7 +93,6 @@ public class MaterialToJmQmsListener implements IBusinessListener { if (configParams.isEmpty()) { throw new BusinessException("精密的QMS接口缺少配置"); } - HYPubBO hyPub = new HYPubBO(); List voList = new ArrayList<>(); for (Object obj : objs) { MultiOrgAssignVO vo = (MultiOrgAssignVO) obj; @@ -114,10 +144,27 @@ public class MaterialToJmQmsListener implements IBusinessListener { // 1=未启用;2=已启用;3=已停用; Integer enablestate = vo.getEnablestate(); String statusCode = (3 == enablestate) ? "1" : "0"; - // 物料标志 - String wlbzId = MyHelper.getStrValByCondition(MaterialStockVO.getDefaultTableName(), MaterialStockVO.DEF3, + Map stockMap = MyHelper.getMapValByCondition(MaterialStockVO.getDefaultTableName(), "def3,def4,martype", MaterialStockVO.PK_MATERIAL + " = '" + pkMaterial + "' and pk_org = '" + pkOrg1 + "'"); - String wlbz = getDefName("zdy-jmzz001", wlbzId); + // 制造件传启源 + if (!"MR".equals(stockMap.get("martype"))) { + continue; + } + // 物料标志和产品分类字段在库存信息页签中,分配物料的时候没有默认值,需要在此处设置 + // 物料标志 + String wlbz = "产品"; + String wlbzId = stockMap.get("def3") + ""; + String defName = getDefName("zdy-jmzz001", wlbzId); + if (MMValueCheck.isNotEmpty(defName)) { + wlbz = defName; + } + // 产品分类 + String cpfl = "内配铸造件成品"; + String cpflId = stockMap.get("def4") + ""; + String defName1 = getDefName("zdy-jmzz002", cpflId); + if (MMValueCheck.isNotEmpty(defName1)) { + cpfl = defName1; + } // 组装数据 JSONObject singleObj = new JSONObject(); // 批次编号,用于唯一标识当前传输的物料数据批次,便于追溯和批量处理 @@ -125,11 +172,15 @@ public class MaterialToJmQmsListener implements IBusinessListener { singleObj.put("batchid", cts); JSONObject contentObj = new JSONObject(); // 计划信息自定义项2(原系统编码)BIP传启源物料档案的物料编码,BIP中物料编码传启源自定义字段“BIP物料编码” + if (MMValueCheck.isEmpty(qyCode)) { + qyCode = vo.getCode(); + } contentObj.put("meswlbh", qyCode); // 启源物料编码 contentObj.put("bipwlbh", vo.getCode()); // BIP物料编码 contentObj.put("wlmc", vo.getName()); // 物料名称 contentObj.put("wlxhgg", vo.getMaterialtype() + vo.getMaterialspec()); // 物料型号规格 contentObj.put("wlfl", ""); // 物料分类 + contentObj.put("cpfl", cpfl); // 产品分类 contentObj.put("wlbz", wlbz); // 物料标志 contentObj.put("sjjldw", unitMap.get("unitname")); // 设计计量单位 contentObj.put("cgjldw", unitMap.get("deputy_unitname")); // 采购计量单位 @@ -181,9 +232,9 @@ public class MaterialToJmQmsListener implements IBusinessListener { JSONObject resultObj = JSONObject.parseObject(result); logger.error("QMS-Material-res = " + result); - if (!"success".equals(resultObj.getString("success"))) { + if (!"true".equals(resultObj.getString("success"))) { logger.error("QMS-Material-error,result[" + resultObj.toJSONString() + "]"); - throw new BusinessException("QMS-Material-error:" + resultObj.getString("msg")); + throw new BusinessException("QMS-Material-error:" + resultObj.getString("message")); } } @@ -242,7 +293,6 @@ public class MaterialToJmQmsListener implements IBusinessListener { logger.error("gyMes-SaleOrder-error,getDefName[" + e.getMessage() + "]"); } return res; - } }