From c964142c3116e897bd197035b8bc50adbbbb1b66 Mon Sep 17 00:00:00 2001 From: "zhangxinah@yonyou.com" Date: Sat, 12 Apr 2025 12:38:32 +0800 Subject: [PATCH] =?UTF-8?q?2312MPR=E8=BF=90=E7=AE=97=E5=B8=A6=E5=87=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E8=87=AA=E5=AE=9A=E4=B9=89=E9=A1=B9-=E5=BC=A0?= =?UTF-8?q?=E9=91=AB0412?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nc/rule/mmpps/plo/PloProdDeptRule.java | 254 +++++++++--------- 1 file changed, 132 insertions(+), 122 deletions(-) diff --git a/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java b/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java index 8ecefab..938c68b 100644 --- a/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java +++ b/mmpps/src/public/nc/rule/mmpps/plo/PloProdDeptRule.java @@ -6,145 +6,155 @@ 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.mmpac.pickm.entity.AggPickmVO; 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; +import nc.vo.mmpac.pickm.entity.PickmItemVO; /** - * 适配2312MPR运算时把合同编号合同销售订单号标前项目号带到计划订单 zhangxinah + * 对运算产生的计划订单补全生产部门,需要对计划订单先按生产工厂进行分组,然后调用服务进行设置 + * + * @since 6.3 + * @version 2013-2-26 下午12:28:29 + * @author duanxf */ -public class PloProdDeptRule extends Object implements IRule { - public void process(AggregatedPoVO[] vos) { - if (null == vos) { - return; - } +public class PloProdDeptRule implements IRule { - 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 { + @Override + public void process(AggregatedPoVO[] vos) { + if (null == vos) { + return; + } + Map> map = new HashMap>(); + ArrayList vsrcbidList = new ArrayList<>(); + 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 = 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 = i.next(); + List vids = map.get(key); + Map results = + MaterialPubService.queryMaterialProduceInfoByPks(vids.toArray(new String[0]), key, new String[] { + MaterialProdVO.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)) { + if (null != results) { + MaterialProdVO prodvo = results.get(vid); + if (null != prodvo) { + plo.setCproddeptid(prodvo.getPk_prodeptdoc());// 生产部门ID + } + } + } + } + } + // 根据生产部门ID查询设置VID + 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 = this.getDeptPubService(); + try { + HashMap results = deptPubService.getLastVIDSByDeptIDS(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(results.get(prodDeptid)); + } + } + } + } + catch (BusinessException e) { + ExceptionUtils.wrappException(e); + } - 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); - } + private IDeptPubService getDeptPubService() { + return NCLocator.getInstance().lookup(IDeptPubService.class); + } }