diff --git a/uapbd/src/private/nc/bs/bd/pfxx/plugin/MaterialPlanPfxxPlugin.java b/uapbd/src/private/nc/bs/bd/pfxx/plugin/MaterialPlanPfxxPlugin.java deleted file mode 100644 index cd67832a..00000000 --- a/uapbd/src/private/nc/bs/bd/pfxx/plugin/MaterialPlanPfxxPlugin.java +++ /dev/null @@ -1,299 +0,0 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by FernFlower decompiler) -// - -package nc.bs.bd.pfxx.plugin; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.serializer.SerializerFeature; -import nc.bs.dao.BaseDAO; -import nc.bs.dao.DAOException; -import nc.bs.framework.common.NCLocator; -import nc.bs.logging.Log; -import nc.bs.pfxx.ISwapContext; -import nc.bs.pfxx.plugin.AbstractPfxxPlugin; -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.itf.bd.material.assign.IMaterialAssignService; -import nc.itf.bd.material.plan.IMaterialPlanQueryService; -import nc.itf.bd.material.plan.IMaterialPlanService; -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.errorlog.ErrLogReturnValue; -import nc.vo.bd.material.MaterialVO; -import nc.vo.bd.material.plan.MaterialPlanVO; -import nc.vo.bd.material.stock.MaterialReplVO; -import nc.vo.bd.material.stock.MaterialStockVO; -import nc.vo.pfxx.auxiliary.AggxsysregisterVO; -import nc.vo.pfxx.util.PfxxPluginUtils; -import nc.vo.pub.BusinessException; - -import java.util.*; -import java.util.stream.Stream; - -public class MaterialPlanPfxxPlugin extends AbstractPfxxPlugin { - IMaterialPlanQueryService materialplanqueryservice = null; - IMaterialPlanService materialplanservice = null; - IMaterialAssignService assignservice = null; - - private static final String LOG_INFO_NAME = "qyMesLog"; - private static final Log logger = Log.getInstance(LOG_INFO_NAME); - private static final String reqUrl = "/IF_QyErpApi.ashx?action=addwlxx"; - private Map configParams; - - public MaterialPlanPfxxPlugin() { - } - - protected Object processBill(Object vo, ISwapContext swapContext, AggxsysregisterVO aggvo) throws BusinessException { - MaterialPlanVO planvo = (MaterialPlanVO) vo; - MaterialPlanVO[] pvos = this.getMaterialPlanQueryService().queryMaterialPlanVOs(new String[]{planvo.getPk_org()}, planvo.getPk_material()); - if (pvos != null && pvos.length != 0) { - planvo = this.updateMaterialPlan(pvos, planvo); - } else { - planvo = this.insertMaterialPlan(planvo); - PfxxPluginUtils.addDocIDVsPKContrast(swapContext.getBilltype(), swapContext.getDocID(), planvo.getPrimaryKey()); - } - - return planvo.getPrimaryKey(); - } - - private MaterialPlanVO insertMaterialPlan(MaterialPlanVO planvo) throws BusinessException { - ErrLogReturnValue value = this.getService().assignByPks(new String[]{planvo.getPk_material()}, new String[]{planvo.getPk_org()}, true); - MaterialPlanVO[] pvos = this.getMaterialPlanQueryService().queryMaterialPlanVOs(new String[]{planvo.getPk_org()}, planvo.getPk_material()); - if (pvos != null && pvos.length > 0) { - planvo = this.updateMaterialPlan(pvos, planvo); - } - - return planvo; - } - - private MaterialPlanVO updateMaterialPlan(MaterialPlanVO[] pvos, MaterialPlanVO planvo) throws BusinessException { - List list = new ArrayList(); - MaterialPlanVO vo = pvos[0]; - String[] attrs = planvo.getAttributeNames(); - - for (String attr : attrs) { - if (planvo.getAttributeValue(attr) != null && !"materialrepl".equals(attr)) { - vo.setAttributeValue(attr, planvo.getAttributeValue(attr)); - } - } - - if (vo.getMaterialrepl() != null && vo.getMaterialrepl().length > 0) { - for (MaterialReplVO replvo : vo.getMaterialrepl()) { - replvo.setStatus(3); - list.add(replvo); - } - } - - if (planvo.getMaterialrepl() != null && planvo.getMaterialrepl().length > 0) { - for (MaterialReplVO replvo : planvo.getMaterialrepl()) { - replvo.setStatus(2); - list.add(replvo); - } - } - - vo.setMaterialrepl((MaterialReplVO[]) list.toArray(new MaterialReplVO[0])); - vo = this.getMaterialPlanService().updateMaterialPlanVO(vo); - syncQMS(vo); - return vo; - } - - private IMaterialPlanQueryService getMaterialPlanQueryService() { - if (this.materialplanqueryservice == null) { - this.materialplanqueryservice = (IMaterialPlanQueryService) NCLocator.getInstance().lookup(IMaterialPlanQueryService.class); - } - - return this.materialplanqueryservice; - } - - private IMaterialPlanService getMaterialPlanService() { - if (this.materialplanservice == null) { - this.materialplanservice = (IMaterialPlanService) NCLocator.getInstance().lookup(IMaterialPlanService.class); - } - - return this.materialplanservice; - } - - private IMaterialAssignService getService() { - if (this.assignservice == null) { - this.assignservice = (IMaterialAssignService) NCLocator.getInstance().lookup(IMaterialAssignService.class); - } - - return this.assignservice; - } - - private void syncQMS(MaterialPlanVO planVO) throws BusinessException { - // 修改物料计划信息的接口执行之后同步修改启源物料 - configParams = MyHelper.getConfigParams("jm-config", null); - buildSyncData(planVO); - } - - /** - * 构建同步数据 - */ - private void buildSyncData(MaterialPlanVO planVO) throws BusinessException { - String pkMaterial = planVO.getPk_material(); - String pkOrg = planVO.getPk_org(); - HYPubBO hyPub = new HYPubBO(); - MaterialVO vo = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pkMaterial); - // 判断物料的业务单元是否是精密公司,不是则跳过 - Integer num = MyHelper.checkIfOrg(configParams, pkMaterial, "jmOrg"); - if (num <= 0) { - return; - } - // 字段值翻译 - // String pk_marbasclass = vo.getPk_marbasclass(); - // String mrlTypeName = MyHelper.getStrValByCondition(MarBasClassVO.getDefaultTableName(), MarBasClassVO.NAME, - // "pk_marbasclass = '" + pk_marbasclass + "'"); - // 计量单位 - Map unitMap = getGoodsInfo(pkMaterial); - // 启源物料编码 - Map planMap = queryMaterialPlanInfoByPks(new String[]{pkMaterial}, pkOrg, - new String[]{MaterialPlanVO.DEF2}); - // 计划信息自定义项2(原系统编码)BIP传启源物料档案的物料编码,BIP中物料编码传启源自定义字段“BIP物料编码” - String qyCode = ""; - if (MMValueCheck.isNotEmpty(planMap) && - MMValueCheck.isNotEmpty(planMap.get(pkMaterial))) { - qyCode = planMap.get(pkMaterial).getDef2(); - } else { - qyCode = vo.getCode(); - } - // 1=未启用;2=已启用;3=已停用; - Integer enablestate = vo.getEnablestate(); - String statusCode = (3 == enablestate) ? "1" : "0"; - Map stockMap = MyHelper.getMapValByCondition(MaterialStockVO.getDefaultTableName(), "def3,def4,martype", - MaterialStockVO.PK_MATERIAL + " = '" + pkMaterial + "' and pk_org = '" + pkOrg + "'"); - // 制造件传启源 - if (!"MR".equals(stockMap.get("martype"))) { - return; - } - // 物料标志和产品分类字段在库存信息页签中,分配物料的时候没有默认值,需要在此处设置 - // 物料标志 - 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.isEmpty(defName1)) { - return;// 缺少产品分类则跳过同步启源 - } - cpfl = defName1; - // 组装数据 - JSONObject singleObj = new JSONObject(); - // 批次编号,用于唯一标识当前传输的物料数据批次,便于追溯和批量处理 - long cts = System.currentTimeMillis(); - singleObj.put("batchid", cts); - JSONObject contentObj = new JSONObject(); - contentObj.put("meswlbh", qyCode); // 启源物料编码 - contentObj.put("bipwlbh", vo.getCode()); // BIP物料编码 - contentObj.put("wlmc", vo.getName()); // 物料名称 - String wlxhgg = MyHelper.skipNull(vo.getMaterialtype()) + MyHelper.skipNull(vo.getMaterialspec()); - contentObj.put("wlxhgg", wlxhgg); // 物料型号规格 - contentObj.put("wlfl", ""); // 物料分类 - contentObj.put("cpfl", cpfl); // 产品分类 - 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")); // 转换系数 - contentObj.put("flag_fq", statusCode); // 1/0 传递1代表物料废弃 - contentObj.put("bz", vo.getMemo()); // 备注信息 - JSONArray contentArr = new JSONArray(); - contentArr.add(contentObj); - singleObj.put("Content", contentArr); - pushData(singleObj); - } - - /** - * 推送同步数据 - */ - private void pushData(JSONObject param) throws BusinessException { - // String jsonString = param.toJSONString(); - // 转json字符串的时候保留null值 - String jsonStr = JSON.toJSONString(param, - SerializerFeature.WriteMapNullValue, - SerializerFeature.WriteNullStringAsEmpty - ); - logger.error("QMS-Material-param = " + jsonStr); - // NCCForUAPLogger.debug("QMS-Material-param = " + jsonStr); - String baseUrl = configParams.get("qmsBaseUrl"); - String requestUrl = baseUrl + reqUrl; - logger.error("QMS-Material-url = " + requestUrl); - String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr); - JSONObject resultObj = JSONObject.parseObject(result); - logger.error("QMS-Material-res = " + result); - - if (!"true".equals(resultObj.getString("success"))) { - logger.error("QMS-Material-error,result[" + resultObj.toJSONString() + "]"); - throw new BusinessException("QMS-Material-error:" + resultObj.getString("message")); - } - } - - private Map getGoodsInfo(String pkMaterial) throws BusinessException { - String sql = " select a.pk_measdoc, c.name unitname, b.pk_measdoc deputyUnit, d.name deputy_unitname, nvl(b.measrate, '1/1') measrate " + - "from bd_material a " + - "left join bd_materialconvert b on a.pk_material = b.pk_material " + - "left join bd_measdoc c on a.pk_measdoc = c.pk_measdoc " + - "left join bd_measdoc d on b.pk_measdoc = d.pk_measdoc " + - "where a.pk_material = '" + pkMaterial + "' "; - Map map = (Map) new BaseDAO().executeQuery(sql, new MapProcessor()); - map.put("convertRate", MyHelper.transferSpecialField(map.get("measrate") + "")); - return map; - } - - private boolean checkIfOrg(String code, Map configParams) throws BusinessException { - String targetCode = configParams.get("jmOrg"); - if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) { - throw new BusinessException("未配置组织参数"); - } - String[] orgItem = targetCode.split(","); - for (String orgCode : orgItem) { - if (!orgCode.isEmpty() && orgCode.equals(code)) { - return false; - } - } - return true; - } - - 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()) { - map = new HashMap<>(); - } else { - map = NCLocator.getInstance().lookup(IMaterialPubService.class) - .queryMaterialPlanInfoByPks(vids.toArray(new String[0]), pk_stockorg, fields); - } - - 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; - } -} diff --git a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java index 6b447b35..0246ab3b 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToGyMesListener.java @@ -51,14 +51,17 @@ public class MaterialToGyMesListener implements IBusinessListener { BDCommonEvent e = (BDCommonEvent) event; String eventType = event.getEventType(); Object[] objs = e.getObjs(); + if (objs == null || objs.length == 0) { + return; + } + configParams = MyHelper.getConfigParams("gy-config", null); + if (configParams.isEmpty()) { + throw new BusinessException("高压的gymes接口缺少配置"); + } + orgId = MyHelper.getStrValByCondition(OrgVO.getDefaultTableName(), OrgVO.PK_ORG, OrgVO.CODE + " = 'C046' and ISBUSINESSUNIT = 'Y'"); HYPubBO hyPub = new HYPubBO(); // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 if ("1004".equals(eventType) || "1071".equals(eventType) || "1069".equals(eventType)) { - configParams = MyHelper.getConfigParams("gy-config", null); - if (configParams.isEmpty()) { - throw new BusinessException("高压的gymes接口缺少配置"); - } - orgId = MyHelper.getStrValByCondition(OrgVO.getDefaultTableName(), OrgVO.PK_ORG, OrgVO.CODE + " = 'C046' and ISBUSINESSUNIT = 'Y'"); List list = new ArrayList<>(); if (objs instanceof MaterialStockVO[]) { // 库存信息修改后 @@ -88,11 +91,6 @@ public class MaterialToGyMesListener implements IBusinessListener { } } else if ("1009".equals(eventType)) { // 物料可见性范围-分配后 1009 - configParams = MyHelper.getConfigParams("gy-config", null); - if (configParams.isEmpty()) { - throw new BusinessException("高压的gymes接口缺少配置"); - } - orgId = MyHelper.getStrValByCondition(OrgVO.getDefaultTableName(), OrgVO.PK_ORG, OrgVO.CODE + " = 'C046' and ISBUSINESSUNIT = 'Y'"); List voList = new ArrayList<>(); for (Object obj : objs) { MultiOrgAssignVO vo = (MultiOrgAssignVO) obj; @@ -242,7 +240,7 @@ public class MaterialToGyMesListener implements IBusinessListener { /** * 处理物料VO的通用方法 */ - private void processMaterialChange(Object[] objs, List list) throws BusinessException { + private void processMaterialChange(Object[] objs, List list) throws BusinessException { HYPubBO hyPub = new HYPubBO(); for (Object newVO : objs) { String pk_material = getPkMaterialFromVO(newVO); 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 77f146c2..0449cc61 100644 --- a/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToJmQmsListener.java +++ b/uapbd/src/private/nccloud/api/uapbd/material/listener/MaterialToJmQmsListener.java @@ -23,6 +23,7 @@ import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.bd.defdoc.DefdocVO; import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.plan.MaterialPlanVO; +import nc.vo.bd.material.prod.MaterialProdVO; import nc.vo.bd.material.stock.MaterialStockVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; @@ -41,58 +42,50 @@ public class MaterialToJmQmsListener implements IBusinessListener { private static final Log logger = Log.getInstance(LOG_INFO_NAME); private static final String reqUrl = "/IF_QyErpApi.ashx?action=addwlxx"; private Map configParams; + private String pkOrg1 = ""; @Override public void doAction(IBusinessEvent event) throws BusinessException { BDCommonEvent e = (BDCommonEvent) event; String eventType = event.getEventType(); Object[] objs = e.getObjs(); + if (objs == null || objs.length == 0) { + return; + } + configParams = MyHelper.getConfigParams("jm-config", null); + if (configParams.isEmpty()) { + throw new BusinessException("精密的QMS接口缺少配置"); + } + pkOrg1 = MyHelper.getStrValByCondition(OrgVO.getDefaultTableName(), OrgVO.PK_ORG, OrgVO.CODE + " = 'C038' and ISBUSINESSUNIT = 'Y'"); HYPubBO hyPub = new HYPubBO(); - // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 MaterialStockVO + // EventType是事件编码 1002-新增后 1004-修改后 1071-状态由停用变为启用后 1069-状态由启用变为停用后 if ("1004".equals(eventType) || "1071".equals(eventType) || "1069".equals(eventType)) { - MaterialVO[] useVOs = null; - if (objs == null) { - return; - } else if (objs instanceof MaterialVO[]) { - useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); + List list = new ArrayList<>(); + if (objs instanceof MaterialVO[]) { + // 基本信息修改后/停用启用 + MaterialVO[] useVOs = ArrayClassConvertUtil.convert(objs, MaterialVO.class); + for (MaterialVO materialVO : useVOs) { + String pkMaterial = materialVO.getPk_material(); + // 如果修改基本信息,判断物料所属组织中是否存在精密铸造,不存在则跳过 + Integer num = MyHelper.checkIfOrg(configParams, pkMaterial, "jmOrg"); + if (num <= 0) { + continue; + } + list.add(materialVO); + } } 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]); + processMaterialChange(objs, list); } else if (objs instanceof MaterialPlanVO[]) { - List list = new ArrayList<>(); // 计划信息修改 - MaterialPlanVO[] planVOS = ArrayClassConvertUtil.convert(objs, MaterialPlanVO.class); - for (MaterialPlanVO planVO : planVOS) { - String pkMaterial = planVO.getPk_material(); - if (MMValueCheck.isEmpty(pkMaterial)) { - continue; - } - MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pkMaterial); - list.add(materialVO); - } - useVOs = list.toArray(new MaterialVO[0]); + processMaterialChange(objs, list); } - configParams = MyHelper.getConfigParams("jm-config", null); - if (configParams.isEmpty()) { - throw new BusinessException("精密的QMS接口缺少配置"); + if (!list.isEmpty()) { + MaterialVO[] useVOs = list.toArray(new MaterialVO[0]); + buildSyncData(useVOs, eventType); } - buildSyncData(useVOs, eventType); } else if ("1009".equals(eventType)) { // 物料可见性范围-分配后 1009 - configParams = MyHelper.getConfigParams("jm-config", null); - if (configParams.isEmpty()) { - throw new BusinessException("精密的QMS接口缺少配置"); - } List voList = new ArrayList<>(); for (Object obj : objs) { MultiOrgAssignVO vo = (MultiOrgAssignVO) obj; @@ -119,19 +112,8 @@ public class MaterialToJmQmsListener implements IBusinessListener { */ private void buildSyncData(MaterialVO[] useVOs, String eventType) throws BusinessException { 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); - 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 + "'"); // 计量单位 Map unitMap = getGoodsInfo(pkMaterial); Map planMap = queryMaterialPlanInfoByPks(new String[]{pkMaterial}, pkOrg1, @@ -188,28 +170,15 @@ public class MaterialToJmQmsListener implements IBusinessListener { contentObj.put("zhxs", unitMap.getOrDefault("convertRate", "1.00")); // 转换系数 contentObj.put("flag_fq", statusCode); // 1/0 传递1代表物料废弃 contentObj.put("bz", vo.getMemo()); // 备注信息 + contentObj.put("djzl", vo.getDef28()); // 单台重量(净重) + contentObj.put("djzl_mz", vo.getDef27()); // 单件重量(毛重) + contentObj.put("jmkzl_bkhs", vo.getDef32()); // 不可回收浇冒口重量 + contentObj.put("jmkzl_khs", vo.getDef33()); // 可回收浇冒口重量 + contentObj.put("lxzl", vo.getDef31()); // 铝屑重量 + contentObj.put("cz", vo.getDef5()); // 材质 JSONArray contentArr = new JSONArray(); contentArr.add(contentObj); singleObj.put("Content", contentArr); - /* - { - "batchid": "10001", - "Content": [ - { - "meswlbh": "ACC26711", 启源物料编码 - "bipwlbh": "ACC26711", BIP物料编码 - "wlmc": "铜排",物料名称 - "wlxhgg": "15558190831", 物料型号规格 - "wlfl": "铜排", 物料分类 - "cpfl": "", 如果物料是产品需要填写产品分类 - "sjjldw": "根", 设计计量单位 - "cgjldw": "KG", 采购计量单位 - "zhxs": "6", 转换系数,用于实物单位与采购单位的换算(即 1 根铜排的长度为 6.00 米),精确到两位小数,提升换算准确性 - "bz": "备注" 备注信息 - } - ] - } - */ pushData(singleObj); } } @@ -251,6 +220,54 @@ public class MaterialToJmQmsListener implements IBusinessListener { return map; } + /** + * 处理物料VO的通用方法 + */ + private void processMaterialChange(Object[] objs, List list) throws BusinessException { + HYPubBO hyPub = new HYPubBO(); + for (Object newVO : objs) { + String pk_material = getPkMaterialFromVO(newVO); + if (MMValueCheck.isEmpty(pk_material)) { + continue; + } + String pkOrg = getPkOrgFromVO(newVO); + // 判断各个页签修改信息是否属于精密铸造 + if (MMValueCheck.isNotEmpty(pkOrg1) && !pkOrg1.equals(pkOrg)) { + continue; + } + MaterialVO materialVO = (MaterialVO) hyPub.queryByPrimaryKey(MaterialVO.class, pk_material); + list.add(materialVO); + } + } + + /** + * 从不同类型的VO中获取pk_material + */ + private String getPkMaterialFromVO(Object vo) { + if (vo instanceof MaterialStockVO newVo) { + return newVo.getPk_material(); + } else if (vo instanceof MaterialPlanVO newVo) { + return newVo.getPk_material(); + } else if (vo instanceof MaterialProdVO) { + return ((MaterialProdVO) vo).getPk_material(); + } + return null; + } + + /** + * 从不同类型的VO中获取pk_org + */ + private String getPkOrgFromVO(Object vo) { + if (vo instanceof MaterialStockVO) { + return ((MaterialStockVO) vo).getPk_org(); + } else if (vo instanceof MaterialPlanVO) { + return ((MaterialPlanVO) vo).getPk_org(); + } else if (vo instanceof MaterialProdVO) { + return ((MaterialProdVO) vo).getPk_org(); + } + return null; + } + private boolean checkIfOrg(String code, Map configParams) throws BusinessException { String targetCode = configParams.get("jmOrg"); if (targetCode == null || nc.vo.am.common.util.StringUtils.isEmpty(targetCode)) {