From 96e91e95b3ce4ad4228cbfc11dd1786bf62f9686 Mon Sep 17 00:00:00 2001 From: "zhangxinah@yonyou.com" Date: Wed, 26 Mar 2025 11:21:41 +0800 Subject: [PATCH] =?UTF-8?q?patch=5F=E9=80=82=E9=85=8D2312MPR=E8=BF=90?= =?UTF-8?q?=E7=AE=97=E6=97=B6=E6=8A=8A=E5=90=88=E5=90=8C=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E5=90=88=E5=90=8C=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E5=8F=B7?= =?UTF-8?q?=E6=A0=87=E5=89=8D=E9=A1=B9=E7=9B=AE=E5=8F=B7=E5=B8=A6=E5=88=B0?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E8=AE=A2=E5=8D=95-=E5=BC=A0=E9=91=AB0326?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nc/rule/mmpps/plo/PloProdDeptRule.java | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java diff --git a/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java b/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java new file mode 100644 index 0000000..a41460f --- /dev/null +++ b/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java @@ -0,0 +1,152 @@ +package nc.rule.mmpps.plo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import nc.bs.framework.common.NCLocator; +import nc.impl.pubapp.pattern.rule.IRule; +import nc.pubitf.org.IDeptPubService; +import nc.util.mmf.busi.service.MaterialPubService; +import nc.util.mmf.framework.base.MMValueCheck; +import nc.vo.bd.material.prod.MaterialProdVO; +import nc.vo.mmpps.mps0202.AggregatedPoVO; +import nc.vo.mmpps.mps0202.PoSourceEnum; +import nc.vo.mmpps.mps0202.PoVO; +import nc.vo.mmpac.pickm.entity.AggPickmVO; +import nc.vo.mmpac.pickm.entity.PickmItemVO; +import nc.vo.pub.BusinessException; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; +import nc.pubitf.mmpac.pickm.pub.IPickmPubQueryService; + + +/** + * 适配2312MPR运算时把合同编号合同销售订单号标前项目号带到计划订单 + * zhangxinah + */ + +public class PloProdDeptRule extends Object implements IRule { + public void process(AggregatedPoVO[] vos) { + if (null == vos) { + return; + } + + ArrayList vsrcbidList = new ArrayList<>(); + Map> map = new HashMap>(); + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String vid = plo.getCmaterialvid(); + String stockorgid = plo.getCstockorgid(); + String stockorgvid = plo.getCstockorgvid(); + String prodDeptid = plo.getCproddeptid(); + String prodDeptvid = plo.getCproddeptvid(); + Integer posource = plo.getFposource(); + if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid) && MMValueCheck.isEmpty(prodDeptvid) + && MMValueCheck.isNotEmpty(stockorgid) && MMValueCheck.isNotEmpty(stockorgvid)) { + List vids = (List) map.get(stockorgid); + if (null == vids) { + List list = new ArrayList(); + list.add(vid); + map.put(stockorgid, list); + } else { + + vids.add(vid); + } + } + String vsrcbid = plo.getVsrcbid();// 来源单据表体主键 + int fdemandbill = plo.getFdemandbill();// 需求来源 + if (PoSourceEnum.COMPUT == posource && fdemandbill == 1) { + vsrcbidList.add(vsrcbid); + } + } + if (vsrcbidList != null && vsrcbidList.size() > 0) { + String[] vsrcbids = vsrcbidList.toArray(new String[vsrcbidList.size()]); + Map pickmVOMap; + try { + pickmVOMap = NCLocator.getInstance().lookup(IPickmPubQueryService.class).queryPickm4Issue(vsrcbids); + } catch (BusinessException e) { + throw new RuntimeException(e); + } + pickmVOMap.getClass(); + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String vsrcbid = plo.getVsrcbid();// 来源单据表体主键 + AggPickmVO aggPickmVOData = pickmVOMap.get(vsrcbid); + if (aggPickmVOData != null) { + PickmItemVO[] children = (PickmItemVO[]) aggPickmVOData.getChildren(PickmItemVO.class); + String vbdef5 = "";// 合同编号 + String vbdef6 = "";// 合同销售订单号 + String vbdef7 = "";// 标前项目号 + for (PickmItemVO pickmItemVO : children) { + if (pickmItemVO.getCpickm_bid().equals(vsrcbid)) { + vbdef5 = pickmItemVO.getVbdef5();// 合同编号 + vbdef6 = pickmItemVO.getVbdef6();// 合同销售订单号 + vbdef7 = pickmItemVO.getVbdef7();// 标前项目号 + } + } + plo.setVdef2(vbdef5);// 合同编号 + plo.setVdef3(vbdef6);// 合同销售订单号 + plo.setVdef4(vbdef7);// 标前项目号 + } + } + } + + Set stockorgids = map.keySet(); + Iterator i = stockorgids.iterator(); + while (i.hasNext()) { + String key = (String) i.next(); + List vids = (List) map.get(key); + Map results = MaterialPubService.queryMaterialProduceInfoByPks( + (String[]) vids.toArray(new String[0]), key, new String[] { "pk_prodeptdoc" }); + + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String vid = plo.getCmaterialvid(); + String stockorgid = plo.getCstockorgid(); + String stockorgvid = plo.getCstockorgvid(); + Integer posource = plo.getFposource(); + if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(stockorgid) + && MMValueCheck.isNotEmpty(stockorgvid) && null != results) { + MaterialProdVO prodvo = (MaterialProdVO) results.get(vid); + if (null != prodvo) { + plo.setCproddeptid(prodvo.getPk_prodeptdoc()); + } + } + } + } + + List proddeptids = new ArrayList(); + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String prodDeptid = plo.getCproddeptid(); + Integer posource = plo.getFposource(); + if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { + proddeptids.add(prodDeptid); + } + } + IDeptPubService deptPubService = getDeptPubService(); + try { + HashMap results = deptPubService + .getLastVIDSByDeptIDS((String[]) proddeptids.toArray(new String[0])); + if (null != results) { + for (AggregatedPoVO agg : vos) { + PoVO plo = agg.getParentVO(); + String prodDeptid = plo.getCproddeptid(); + Integer posource = plo.getFposource(); + if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { + plo.setCproddeptvid((String) results.get(prodDeptid)); + } + } + + } + } catch (BusinessException e) { + ExceptionUtils.wrappException(e); + } + } + + private IDeptPubService getDeptPubService() { + return (IDeptPubService) NCLocator.getInstance().lookup(IDeptPubService.class); + } +}