From 95008213049b19fb6d07eac249c9a329fb252666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AD=A3=40=E7=94=A8=E5=8F=8B?= Date: Wed, 2 Jul 2025 15:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=92=E6=84=9F=E5=99=A8=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=5F=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95=5F?= =?UTF-8?q?=E5=A4=87=E6=96=99=E8=AE=A1=E5=88=92=E8=BF=87=E6=BB=A4103?= =?UTF-8?q?=E7=89=A9=E6=96=99=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bp/rule/AfterApproveRuleSyncRZWMS.java | 67 +++++++++++++++++-- .../rule/AfterApprovingSynchronizeRuleRZ.java | 62 +++++++++++++++-- .../AfterApprovingSynchronizeRuleRZ.java | 60 +++++++++++++++-- 3 files changed, 170 insertions(+), 19 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java index 44eadb8..5910c2d 100644 --- a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java +++ b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/AfterApproveRuleSyncRZWMS.java @@ -4,29 +4,30 @@ package nc.bs.mmpac.pickm.bp.rule; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import nc.bs.dao.BaseDAO; +import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; +import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService; import nc.jdbc.framework.processor.ColumnProcessor; import nc.pubitf.para.SysInitQuery; -import nc.vo.bd.defdoc.DefdocVO; import nc.vo.bd.material.MaterialVO; -import nc.vo.bd.rt.rt0004.entity.RcVO; -import nc.vo.bd.stordoc.StordocVO; import nc.vo.cmp.util.StringUtils; import nc.vo.mmpac.pickm.entity.AggPickmVO; import nc.vo.mmpac.pickm.entity.PickmHeadVO; import nc.vo.mmpac.pickm.entity.PickmItemVO; import nc.vo.org.OrgVO; import nc.vo.pub.BusinessException; +import nc.vo.pub.CircularlyAccessibleValueObject; +import nc.vo.pub.ISuperVO; import nc.vo.pub.lang.UFBoolean; import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.scmpub.util.ArrayUtil; +import nc.vo.util.CloneUtil; -import java.util.ArrayList; -import java.util.List; +import java.util.*; public class AfterApproveRuleSyncRZWMS implements IRule { @@ -40,8 +41,9 @@ public class AfterApproveRuleSyncRZWMS implements IRule { return; } try { + AggPickmVO[] cloneOrderVOS = (AggPickmVO[]) CloneUtil.deepClone(vos); // 检查并筛选领料组织 - List newAggPickmVOS = checkAndFilterBillSrcOrg(vos); + List newAggPickmVOS = checkAndFilterBillSrcOrg(cloneOrderVOS); if (newAggPickmVOS.isEmpty()) { return; } @@ -188,6 +190,8 @@ public class AfterApproveRuleSyncRZWMS implements IRule { private List checkAndFilterBillSrcOrg(AggPickmVO[] aggPickmVOS) throws BusinessException { List aggvoList = new ArrayList<>(); + List finalList = new ArrayList<>(); + for (AggPickmVO aggvo : aggPickmVOS) { String pkOrg = aggvo.getParentVO().getPk_org(); String orgCode = transferCodeByPk(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); @@ -197,13 +201,62 @@ public class AfterApproveRuleSyncRZWMS implements IRule { if(vdef20==null||"N".equals(vdef20)){ if ("C022".equals(orgCode)&& 1 == aggvo.getParentVO().getFbillstatus()&&aggvo.getChildrenVO()!=null && aggvo.getChildrenVO().length > 0) { if("61".equals(vfirstbilltype)||"55A2".equals(vfirstbilltype)){ + //2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传 + //获取表体物料信息 aggvoList.add(aggvo); } } } } - return aggvoList; + //再次筛选 + //2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传 + //获取表体物料信息 + if(aggvoList.isEmpty()){ + return aggvoList; + } + Set materialpks=new HashSet<>(); + for (AggPickmVO aggvo : aggvoList) { + PickmItemVO[] items = (PickmItemVO[]) aggvo.getChildren(PickmItemVO.class); + for (PickmItemVO item : items) { + String cbmaterialvid = item.getCbmaterialvid(); + materialpks.add(cbmaterialvid); + } + } + if(materialpks.isEmpty()){ + return aggvoList; + } + //根据物料id查询物料信息 + MaterialVO[] vos = NCLocator.getInstance().lookup(IMaterialBaseInfoQueryService.class).queryDataByPks(materialpks.toArray(new String[0])); + //组装Map + Map materialMap = new HashMap<>(); + if(vos==null || vos.length<1){ + throw new BusinessException("Failed to query material info , please check !!!"); + } + for (MaterialVO vo : vos) { + String cmaterialvid = vo.getPk_material(); + String cmaterialcode =vo.getCode(); + materialMap.put(cmaterialvid, cmaterialcode); + } + //筛选行数据 + for (AggPickmVO aggvo : aggvoList) { + List newItems = new ArrayList<>(); + PickmItemVO[] items = (PickmItemVO[]) aggvo.getChildren(PickmItemVO.class); + for (PickmItemVO item : items) { + String cmaterialvid = item.getCbmaterialvid(); + if (materialMap.containsKey(cmaterialvid)) { + String materialCode = materialMap.get(cmaterialvid); + if(!materialCode.startsWith("103")){ + newItems.add(item); + } + } + } + if (!newItems.isEmpty()) { + aggvo.setChildren(PickmItemVO.class,newItems.toArray(new PickmItemVO[0])); + finalList.add(aggvo); + } + } + return finalList; } private void pushToRZMOMBy55A2(AggPickmVO[] aggPickmVOS) throws BusinessException { diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java index 01ecace..e9e18a1 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/AfterApprovingSynchronizeRuleRZ.java @@ -3,14 +3,17 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import nc.bs.dao.BaseDAO; +import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; +import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService; import nc.jdbc.framework.processor.ColumnProcessor; import nc.pubitf.para.SysInitQuery; import nc.util.mmf.framework.base.MMValueCheck; import nc.vo.bd.defdoc.DefdocVO; +import nc.vo.bd.material.MaterialVO; import nc.vo.cmp.util.StringUtils; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; @@ -21,11 +24,9 @@ import nc.vo.pub.lang.UFBoolean; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.scmpub.util.ArrayUtil; +import nc.vo.util.CloneUtil; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 流程生产订单审批后推送RZ @@ -46,8 +47,9 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { return; } try { + PMOAggVO[] cloneOrderVOS = (PMOAggVO[]) CloneUtil.deepClone(pmoAggVOS); // 检查并筛选生产订单 - List filteredOrders = checkAndFilterBillSrcOrg(pmoAggVOS); + List filteredOrders = checkAndFilterBillSrcOrg(cloneOrderVOS); if (filteredOrders.isEmpty()) { return; } @@ -66,6 +68,7 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { private List checkAndFilterBillSrcOrg(PMOAggVO[] pmoAggVOS) throws BusinessException { List aggvoList = new ArrayList<>(); List tranidList = new ArrayList(); + List finalList = new ArrayList<>(); for (PMOAggVO aggvo : pmoAggVOS) { PMOHeadVO headvo = aggvo.getParentVO(); String tranid = headvo.getCtrantypeid(); @@ -77,7 +80,6 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { if (tranidList.size() > 0) { bSaveApproveMap = PMOBPService.getIPMOTransTypeQueryService() .getBSaveApproveByTranTypeIDs(tranidList.toArray(new String[0])); - } for (PMOAggVO aggvo : pmoAggVOS) { String pkOrg = aggvo.getParentVO().getPk_org(); @@ -97,7 +99,53 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { } } } - return aggvoList; + //再次筛选 + //2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传 + //获取表体物料信息 + if(aggvoList.isEmpty()){ + return aggvoList; + } + Set materialpks=new HashSet<>(); + for (PMOAggVO aggvo : aggvoList) { + for (PMOItemVO item : aggvo.getChildrenVO()) { + String cbmaterialvid = item.getCmaterialvid(); + materialpks.add(cbmaterialvid); + } + } + if(materialpks.isEmpty()){ + return aggvoList; + } + //根据物料id查询物料信息 + MaterialVO[] vos = NCLocator.getInstance().lookup(IMaterialBaseInfoQueryService.class).queryDataByPks(materialpks.toArray(new String[0])); + //组装Map + Map materialMap = new HashMap<>(); + if(vos==null || vos.length<1){ + throw new BusinessException("Failed to query material info , please check !!!"); + } + for (MaterialVO vo : vos) { + String cmaterialvid = vo.getPk_material(); + String cmaterialcode =vo.getCode(); + materialMap.put(cmaterialvid, cmaterialcode); + } + //筛选行数据 + for (PMOAggVO aggvo : aggvoList) { + List newItems = new ArrayList<>(); + PMOItemVO[] items = (PMOItemVO[]) aggvo.getChildren(PMOItemVO.class); + for (PMOItemVO item : items) { + String cmaterialvid = item.getCmaterialvid(); + if (materialMap.containsKey(cmaterialvid)) { + String materialCode = materialMap.get(cmaterialvid); + if(!materialCode.startsWith("103")){ + newItems.add(item); + } + } + } + if (!newItems.isEmpty()) { + aggvo.setChildren(PMOItemVO.class,newItems.toArray(new PMOItemVO[0])); + finalList.add(aggvo); + } + } + return finalList; } /** diff --git a/pu/src/private/nc/bs/pu/m21/action/rule/approve/AfterApprovingSynchronizeRuleRZ.java b/pu/src/private/nc/bs/pu/m21/action/rule/approve/AfterApprovingSynchronizeRuleRZ.java index 514a1ec..3ef7f36 100644 --- a/pu/src/private/nc/bs/pu/m21/action/rule/approve/AfterApprovingSynchronizeRuleRZ.java +++ b/pu/src/private/nc/bs/pu/m21/action/rule/approve/AfterApprovingSynchronizeRuleRZ.java @@ -3,9 +3,11 @@ package nc.bs.pu.m21.action.rule.approve; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import nc.bs.dao.BaseDAO; +import nc.bs.framework.common.NCLocator; import nc.bs.logging.Log; import nc.bs.uapbd.util.ThirdPartyPostRequestUtil; import nc.impl.pubapp.pattern.rule.IRule; +import nc.itf.bd.material.baseinfo.IMaterialBaseInfoQueryService; import nc.jdbc.framework.processor.ColumnProcessor; import nc.pubitf.para.SysInitQuery; import nc.vo.bd.defdoc.DefdocVO; @@ -24,9 +26,9 @@ import nc.vo.pub.lang.UFDouble; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import nc.vo.pubapp.pattern.pub.SqlBuilder; import nc.vo.scmpub.util.ArrayUtil; +import nc.vo.util.CloneUtil; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import static nccloud.openapi.ic.m4c.mapping.M4cFieldsEnum.cmaterialvid; @@ -47,9 +49,10 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { return; } try { + OrderVO[] cloneOrderVOS = (OrderVO[]) CloneUtil.deepClone(orderVOS); //检查并筛选销售出库单据为互感器公司 - List newOrderVOS = checkAndFilterBillSrcOrg(orderVOS); - if (newOrderVOS.isEmpty()) { + List newOrderVOS = checkAndFilterBillSrcOrg(cloneOrderVOS); + if (newOrderVOS==null||newOrderVOS.size()<1) { return; } //推送到锐制系统 @@ -62,6 +65,8 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { private List checkAndFilterBillSrcOrg(OrderVO[] OrderVOS) throws BusinessException { List aggvoList = new ArrayList<>(); + List finalList = new ArrayList<>(); + for (OrderVO aggvo : OrderVOS) { String pkOrg = aggvo.getHVO().getPk_org(); Integer forderstatus = aggvo.getHVO().getForderstatus(); @@ -73,7 +78,52 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule { } } } - return aggvoList; + //再次筛选 + //2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传 + //获取表体物料信息 + if(aggvoList.isEmpty()){ + return aggvoList; + } + Set materialpks=new HashSet<>(); + for (OrderVO aggvo : aggvoList) { + for (OrderItemVO item : aggvo.getBVO()) { + String cmaterialvid = item.getPk_material(); + materialpks.add(cmaterialvid); + } + } + if(materialpks.isEmpty()){ + return aggvoList; + } + //根据物料id查询物料信息 + MaterialVO[] vos = NCLocator.getInstance().lookup(IMaterialBaseInfoQueryService.class).queryDataByPks(materialpks.toArray(new String[0])); + //组装Map + Map materialMap = new HashMap<>(); + if(vos==null || vos.length<1){ + throw new BusinessException("Failed to query material info , please check !!!"); + } + for (MaterialVO vo : vos) { + String cmaterialvid = vo.getPk_material(); + String cmaterialcode =vo.getCode(); + materialMap.put(cmaterialvid, cmaterialcode); + } + //筛选行数据 + for (OrderVO aggvo : aggvoList) { + List newItems = new ArrayList<>(); + for (OrderItemVO item : aggvo.getBVO()) { + String cmaterialvid = item.getPk_material(); + if (materialMap.containsKey(cmaterialvid)) { + String materialCode = materialMap.get(cmaterialvid); + if(!materialCode.startsWith("103")){ + newItems.add(item); + } + } + } + if (!newItems.isEmpty()) { + aggvo.setBVO(newItems.toArray(new OrderItemVO[0])); + finalList.add(aggvo); + } + } + return finalList; } /**