2312MPR运算带出流程生产订单同步自定义项-张鑫0412
This commit is contained in:
		
							parent
							
								
									0890860fd4
								
							
						
					
					
						commit
						c964142c31
					
				|  | @ -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<AggregatedPoVO> { | ||||
| 	public void process(AggregatedPoVO[] vos) { | ||||
| 		if (null == vos) { | ||||
| 			return; | ||||
| 		} | ||||
| public class PloProdDeptRule implements IRule<AggregatedPoVO> { | ||||
| 
 | ||||
| 		ArrayList<String> vsrcbidList = new ArrayList<>(); | ||||
| 		Map<String, List<String>> map = new HashMap<String, List<String>>(); | ||||
| 		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<String> vids = (List<String>) map.get(stockorgid); | ||||
| 				if (null == vids) { | ||||
| 					List<String> list = new ArrayList<String>(); | ||||
| 					list.add(vid); | ||||
| 					map.put(stockorgid, list); | ||||
| 				} else { | ||||
|     @Override | ||||
|     public void process(AggregatedPoVO[] vos) { | ||||
|         if (null == vos) { | ||||
|             return; | ||||
|         } | ||||
|         Map<String, List<String>> map = new HashMap<String, List<String>>(); | ||||
|         ArrayList<String> 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<String> vids = map.get(stockorgid); | ||||
|                 if (null == vids) { | ||||
|                     List<String> list = new ArrayList<String>(); | ||||
|                     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<String, AggPickmVO> 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<String> stockorgids = map.keySet(); | ||||
|         Iterator<String> i = stockorgids.iterator(); | ||||
|         while (i.hasNext()) { | ||||
|             String key = i.next(); | ||||
|             List<String> vids = map.get(key); | ||||
|             Map<String, MaterialProdVO> 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<String> proddeptids = new ArrayList<String>(); | ||||
|         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<String, String> 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<String, AggPickmVO> 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<String> stockorgids = map.keySet(); | ||||
| 		Iterator<String> i = stockorgids.iterator(); | ||||
| 		while (i.hasNext()) { | ||||
| 			String key = (String) i.next(); | ||||
| 			List<String> vids = (List<String>) map.get(key); | ||||
| 			Map<String, MaterialProdVO> 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<String> proddeptids = new ArrayList<String>(); | ||||
| 		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<String, String> 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); | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue