From e58437144f99ef3be0cc974eba37cab7bb14511f Mon Sep 17 00:00:00 2001 From: mzr Date: Sat, 20 Sep 2025 15:48:42 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B2=BE=E5=AF=86=E7=89=A9=E6=96=99=E6=8E=A8?= =?UTF-8?q?=E5=90=AF=E6=BA=90-=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/MaterialToJmQmsListener.java | 56 +++++++++++++------ 1 file changed, 38 insertions(+), 18 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 9d888cb1..165638a9 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToJmQmsListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToJmQmsListener.java @@ -10,22 +10,24 @@ import nc.bs.businessevent.IBusinessEvent; import nc.bs.businessevent.IBusinessListener; import nc.bs.businessevent.bd.BDCommonEvent; import nc.bs.dao.BaseDAO; +import nc.bs.dao.DAOException; import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.trade.business.HYPubBO; +import nc.bs.trade.business.HYSuperDMO; import nc.bs.uapbd.util.MyHelper; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.jdbc.framework.processor.MapProcessor; import nc.pubitf.uapbd.IMaterialPubService; import nc.util.mmf.framework.base.MMValueCheck; +import nc.vo.bd.defdoc.DefdocVO; import nc.vo.bd.material.MaterialVO; -import nc.vo.bd.material.marbasclass.MarBasClassVO; import nc.vo.bd.material.plan.MaterialPlanVO; +import nc.vo.bd.material.stock.MaterialStockVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; import java.util.*; -import java.util.stream.Collectors; import java.util.stream.Stream; /** @@ -47,14 +49,7 @@ public class MaterialToJmQmsListener implements IBusinessListener { Object[] objs = e.getObjs(); // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 - if ("1004".equals(eventType)) { - MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); - configParams = MyHelper.getConfigParams("jm-config", null); - if (configParams.isEmpty()) { - throw new BusinessException("精密的QMS接口缺少配置"); - } - buildSyncData(useVOs, eventType); - } else if ("1071".equals(eventType) || "1069".equals(eventType)) { + if ("1004".equals(eventType) || "1071".equals(eventType) || "1069".equals(eventType)) { MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); configParams = MyHelper.getConfigParams("jm-config", null); if (configParams.isEmpty()) { @@ -96,16 +91,18 @@ public class MaterialToJmQmsListener implements IBusinessListener { for (MaterialVO vo : useVOs) { // 判断物料的业务单元是否是精密公司,不是则跳过 String pkOrg = vo.getPk_org(); + String pkMaterial = vo.getPk_material(); String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); - if (!"1009".equals(eventType) && checkIfOrg(orgCode, configParams)) { + String pkOrg1 = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.PK_ORG, OrgVO.CODE, "C038"); + Integer num = MyHelper.checkIfOrg(configParams, pkMaterial, "jmOrg"); + if (!"1009".equals(eventType) && ((num <= 0))) { continue; } // 字段值翻译 - String pk_marbasclass = vo.getPk_marbasclass(); - String mrlTypeName = MyHelper.getStrValByCondition(MarBasClassVO.getDefaultTableName(), MarBasClassVO.NAME, - "pk_marbasclass = '" + pk_marbasclass + "'"); + // String pk_marbasclass = vo.getPk_marbasclass(); + // String mrlTypeName = MyHelper.getStrValByCondition(MarBasClassVO.getDefaultTableName(), MarBasClassVO.NAME, + // "pk_marbasclass = '" + pk_marbasclass + "'"); // 计量单位 - String pkMaterial = vo.getPk_material(); Map unitMap = getGoodsInfo(pkMaterial); Map planMap = queryMaterialPlanInfoByPks(new String[]{pkMaterial}, pkOrg, new String[]{MaterialPlanVO.DEF2}); @@ -117,6 +114,10 @@ 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, + MaterialStockVO.PK_MATERIAL + " = '" + pkMaterial + "' and pk_org = '" + pkOrg1 + "'"); + String wlbz = getDefName("zdy-jmzz001", wlbzId); // 组装数据 JSONObject singleObj = new JSONObject(); // 批次编号,用于唯一标识当前传输的物料数据批次,便于追溯和批量处理 @@ -128,7 +129,8 @@ public class MaterialToJmQmsListener implements IBusinessListener { contentObj.put("bipwlbh", vo.getCode()); // BIP物料编码 contentObj.put("wlmc", vo.getName()); // 物料名称 contentObj.put("wlxhgg", vo.getMaterialtype() + vo.getMaterialspec()); // 物料型号规格 - contentObj.put("wlfl", mrlTypeName); // 物料分类 + contentObj.put("wlfl", ""); // 物料分类 + contentObj.put("wlbz", wlbz); // 物料标志 contentObj.put("sjjldw", unitMap.get("unitname")); // 设计计量单位 contentObj.put("cgjldw", unitMap.get("deputy_unitname")); // 采购计量单位 contentObj.put("zhxs", unitMap.getOrDefault("convertRate", "1.00")); // 转换系数 @@ -211,8 +213,8 @@ public class MaterialToJmQmsListener implements IBusinessListener { return true; } - public static Map queryMaterialPlanInfoByPks(String[] pks, String pk_stockorg, - String[] fields) throws BusinessException { + public Map queryMaterialPlanInfoByPks(String[] pks, String pk_stockorg, + String[] fields) throws BusinessException { Map map = null; List vids = Stream.of(pks).filter(Objects::nonNull).distinct().toList(); if (vids.isEmpty()) { @@ -225,4 +227,22 @@ public class MaterialToJmQmsListener implements IBusinessListener { return map; } + /** + * 获取自定义项信息 + */ + private String getDefName(String code, String pk_defdoc) { + String res = ""; + String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='" + code + "' and dr=0 ) and dr = 0 and pk_defdoc = '" + pk_defdoc + "'"; + try { + DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere); + if (defdocVOs != null && defdocVOs.length > 0) { + res = defdocVOs[0].getName().trim(); + } + } catch (DAOException e) { + logger.error("gyMes-SaleOrder-error,getDefName[" + e.getMessage() + "]"); + } + return res; + + } + }