互感器采购订单_生产订单_备料计划过滤103物料分类
This commit is contained in:
		
							parent
							
								
									e8f76b652f
								
							
						
					
					
						commit
						155c549ad0
					
				|  | @ -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<AggPickmVO> { | ||||
| 
 | ||||
|  | @ -40,8 +41,9 @@ public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> { | |||
|             return; | ||||
|         } | ||||
|         try { | ||||
|             AggPickmVO[] cloneOrderVOS = (AggPickmVO[]) CloneUtil.deepClone(vos); | ||||
|             // ¼ì²é²¢É¸Ñ¡ÁìÁÏ×éÖ¯ | ||||
|             List<AggPickmVO> newAggPickmVOS = checkAndFilterBillSrcOrg(vos); | ||||
|             List<AggPickmVO> newAggPickmVOS = checkAndFilterBillSrcOrg(cloneOrderVOS); | ||||
|             if (newAggPickmVOS.isEmpty()) { | ||||
|                 return; | ||||
|             } | ||||
|  | @ -188,6 +190,8 @@ public class AfterApproveRuleSyncRZWMS implements IRule<AggPickmVO> { | |||
| 
 | ||||
|     private List<AggPickmVO> checkAndFilterBillSrcOrg(AggPickmVO[] aggPickmVOS) throws BusinessException { | ||||
|         List<AggPickmVO> aggvoList = new ArrayList<>(); | ||||
|         List<AggPickmVO> 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<AggPickmVO> { | |||
|             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<String> 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<String, String> 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<PickmItemVO> 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 { | ||||
|  |  | |||
|  | @ -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<PMOAggVO> { | |||
|             return; | ||||
|         } | ||||
|         try { | ||||
|             PMOAggVO[] cloneOrderVOS = (PMOAggVO[]) CloneUtil.deepClone(pmoAggVOS); | ||||
|             // 检查并筛选生产订单 | ||||
|             List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(pmoAggVOS); | ||||
|             List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(cloneOrderVOS); | ||||
|             if (filteredOrders.isEmpty()) { | ||||
|                 return; | ||||
|             } | ||||
|  | @ -66,6 +68,7 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<PMOAggVO> { | |||
|     private List<PMOAggVO> checkAndFilterBillSrcOrg(PMOAggVO[] pmoAggVOS) throws BusinessException { | ||||
|         List<PMOAggVO> aggvoList = new ArrayList<>(); | ||||
|         List<String> tranidList = new ArrayList<String>(); | ||||
|         List<PMOAggVO> finalList = new ArrayList<>(); | ||||
|         for (PMOAggVO aggvo : pmoAggVOS) { | ||||
|             PMOHeadVO headvo = aggvo.getParentVO(); | ||||
|             String tranid = headvo.getCtrantypeid(); | ||||
|  | @ -77,7 +80,6 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<PMOAggVO> { | |||
|         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<PMOAggVO> { | |||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return aggvoList; | ||||
|         //再次筛选 | ||||
|         //2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传 | ||||
|         //获取表体物料信息 | ||||
|         if(aggvoList.isEmpty()){ | ||||
|             return aggvoList; | ||||
|         } | ||||
|         Set<String> 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<String, String> 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<PMOItemVO> 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; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  |  | |||
|  | @ -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<OrderVO> { | |||
|             return; | ||||
|         } | ||||
|         try { | ||||
|             OrderVO[] cloneOrderVOS = (OrderVO[]) CloneUtil.deepClone(orderVOS); | ||||
|             //检查并筛选销售出库单据为互感器公司 | ||||
|             List<OrderVO> newOrderVOS = checkAndFilterBillSrcOrg(orderVOS); | ||||
|             if (newOrderVOS.isEmpty()) { | ||||
|             List<OrderVO> newOrderVOS = checkAndFilterBillSrcOrg(cloneOrderVOS); | ||||
|             if (newOrderVOS==null||newOrderVOS.size()<1) { | ||||
|                 return; | ||||
|             } | ||||
|             //推送到锐制系统 | ||||
|  | @ -62,6 +65,8 @@ public class AfterApprovingSynchronizeRuleRZ implements IRule<OrderVO> { | |||
| 
 | ||||
|     private List<OrderVO> checkAndFilterBillSrcOrg(OrderVO[] OrderVOS) throws BusinessException { | ||||
|         List<OrderVO> aggvoList = new ArrayList<>(); | ||||
|         List<OrderVO> 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<OrderVO> { | |||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return aggvoList; | ||||
|         //再次筛选 | ||||
|         //2025年7月2日10点33分--新增不传--表体物料编码前三位为103时不传 | ||||
|         //获取表体物料信息 | ||||
|         if(aggvoList.isEmpty()){ | ||||
|             return aggvoList; | ||||
|         } | ||||
|         Set<String> 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<String, String> 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<OrderItemVO> 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; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue