解决MPR运算回写备料计划报错问题-张鑫0514
This commit is contained in:
		
							parent
							
								
									1492a58adb
								
							
						
					
					
						commit
						803f6ba915
					
				|  | @ -32,129 +32,123 @@ import nc.vo.mmpac.pickm.entity.PickmItemVO; | ||||||
| 
 | 
 | ||||||
| public class PloProdDeptRule implements IRule<AggregatedPoVO> { | public class PloProdDeptRule implements IRule<AggregatedPoVO> { | ||||||
| 
 | 
 | ||||||
|     @Override | 	@Override | ||||||
|     public void process(AggregatedPoVO[] vos) { | 	public void process(AggregatedPoVO[] vos) { | ||||||
|         if (null == vos) { | 		if (null == vos) { | ||||||
|             return; | 			return; | ||||||
|         } | 		} | ||||||
|         Map<String, List<String>> map = new HashMap<String, List<String>>(); | 		Map<String, List<String>> map = new HashMap<String, List<String>>(); | ||||||
|         ArrayList<String> vsrcbidList = new ArrayList<>(); | 		ArrayList<String> vsrcbidList = new ArrayList<>(); | ||||||
|         for (AggregatedPoVO agg : vos) { | 		for (AggregatedPoVO agg : vos) { | ||||||
|             PoVO plo = agg.getParentVO(); | 			PoVO plo = agg.getParentVO(); | ||||||
|             String vid = plo.getCmaterialvid(); | 			String vid = plo.getCmaterialvid(); | ||||||
|             String stockorgid = plo.getCstockorgid(); | 			String stockorgid = plo.getCstockorgid(); | ||||||
|             String stockorgvid = plo.getCstockorgvid(); | 			String stockorgvid = plo.getCstockorgvid(); | ||||||
|             String prodDeptid = plo.getCproddeptid(); | 			String prodDeptid = plo.getCproddeptid(); | ||||||
|             String prodDeptvid = plo.getCproddeptvid(); | 			String prodDeptvid = plo.getCproddeptvid(); | ||||||
|             Integer posource = plo.getFposource(); | 			Integer posource = plo.getFposource(); | ||||||
|             if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid) | 			if (PoSourceEnum.COMPUT == posource && MMValueCheck.isEmpty(prodDeptid) && MMValueCheck.isEmpty(prodDeptvid) | ||||||
|                     && MMValueCheck.isEmpty(prodDeptvid) && MMValueCheck.isNotEmpty(stockorgid) | 					&& MMValueCheck.isNotEmpty(stockorgid) && MMValueCheck.isNotEmpty(stockorgvid)) { | ||||||
|                     && MMValueCheck.isNotEmpty(stockorgvid)) { | 				List<String> vids = map.get(stockorgid); | ||||||
|                 List<String> vids = map.get(stockorgid); | 				if (null == vids) { | ||||||
|                 if (null == vids) { | 					List<String> list = new ArrayList<String>(); | ||||||
|                     List<String> list = new ArrayList<String>(); | 					list.add(vid); | ||||||
|                     list.add(vid); | 					map.put(stockorgid, list); | ||||||
|                     map.put(stockorgid, list); | 				} else { | ||||||
|                 } | 					vids.add(vid); | ||||||
|                 else { | 				} | ||||||
|                     vids.add(vid); | 			} | ||||||
|                 } | 			String vsrcbid = plo.getVsrcbid();// 来源单据表体主键 | ||||||
|             } | 			// 需求来源为备料计划的才回写 | ||||||
|             String vsrcbid = plo.getVsrcbid();//来源单据表体主键 | 			if (PoSourceEnum.COMPUT == posource && plo.getFdemandbill() != null && plo.getFdemandbill() == 1) { | ||||||
|             int fdemandbill = plo.getFdemandbill();//需求来源 | 				vsrcbidList.add(vsrcbid); | ||||||
|             if (PoSourceEnum.COMPUT == posource && fdemandbill == 1) { | 			} | ||||||
|                 vsrcbidList.add(vsrcbid); | 		} | ||||||
|             } | 		if (vsrcbidList != null && vsrcbidList.size() > 0) { | ||||||
|         } | 			String[] vsrcbids = vsrcbidList.toArray(new String[vsrcbidList.size()]); | ||||||
|         if (vsrcbidList != null && vsrcbidList.size() > 0) { | 			Map<String, AggPickmVO> pickmVOMap; | ||||||
|             String[] vsrcbids = vsrcbidList.toArray(new String[vsrcbidList.size()]); | 			try { | ||||||
|             Map<String, AggPickmVO> pickmVOMap; | 				pickmVOMap = NCLocator.getInstance().lookup(IPickmPubQueryService.class).queryPickm4Issue(vsrcbids); | ||||||
|             try { | 			} catch (BusinessException e) { | ||||||
|                 pickmVOMap = NCLocator.getInstance().lookup(IPickmPubQueryService.class) | 				throw new RuntimeException(e); | ||||||
|                         .queryPickm4Issue(vsrcbids); | 			} | ||||||
|             } catch (BusinessException e) { | 			pickmVOMap.getClass(); | ||||||
|                 throw new RuntimeException(e); | 			for (AggregatedPoVO agg : vos) { | ||||||
|             } | 				PoVO plo = agg.getParentVO(); | ||||||
|             pickmVOMap.getClass(); | 				String vsrcbid = plo.getVsrcbid();// 来源单据表体主键 | ||||||
|             for (AggregatedPoVO agg : vos) { | 				AggPickmVO aggPickmVOData = pickmVOMap.get(vsrcbid); | ||||||
|                 PoVO plo = agg.getParentVO(); | 				if (aggPickmVOData != null) { | ||||||
|                 String vsrcbid = plo.getVsrcbid();//来源单据表体主键 | 					PickmItemVO[] children = (PickmItemVO[]) aggPickmVOData.getChildren(PickmItemVO.class); | ||||||
|                 AggPickmVO aggPickmVOData = pickmVOMap.get(vsrcbid); | 					String vbdef5 = "";// 合同编号 | ||||||
|                 if (aggPickmVOData != null) { | 					String vbdef6 = "";// 合同销售订单号 | ||||||
|                     PickmItemVO[] children = (PickmItemVO[]) aggPickmVOData.getChildren(PickmItemVO.class); | 					String vbdef7 = "";// 标前项目号 | ||||||
|                     String vbdef5 = "";//合同编号 | 					for (PickmItemVO pickmItemVO : children) { | ||||||
|                     String vbdef6 = "";//合同销售订单号 | 						if (pickmItemVO.getCpickm_bid().equals(vsrcbid)) { | ||||||
|                     String vbdef7 = "";//标前项目号 | 							vbdef5 = pickmItemVO.getVbdef5();// 合同编号 | ||||||
|                     for (PickmItemVO pickmItemVO : children) { | 							vbdef6 = pickmItemVO.getVbdef6();// 合同销售订单号 | ||||||
|                         if (pickmItemVO.getCpickm_bid().equals(vsrcbid)) { | 							vbdef7 = pickmItemVO.getVbdef7();// 标前项目号 | ||||||
|                             vbdef5 = pickmItemVO.getVbdef5();//合同编号 | 						} | ||||||
|                             vbdef6 = pickmItemVO.getVbdef6();//合同销售订单号 | 					} | ||||||
|                             vbdef7 = pickmItemVO.getVbdef7();//标前项目号 | 					plo.setVdef2(vbdef5);// 合同编号 | ||||||
|                         } | 					plo.setVdef3(vbdef6);// 合同销售订单号 | ||||||
|                     } | 					plo.setVdef4(vbdef7);// 标前项目号 | ||||||
|                     plo.setVdef2(vbdef5);//合同编号 | 				} | ||||||
|                     plo.setVdef3(vbdef6);//合同销售订单号 | 			} | ||||||
|                     plo.setVdef4(vbdef7);//标前项目号 | 		} | ||||||
|                 } | 		Set<String> stockorgids = map.keySet(); | ||||||
|             } | 		Iterator<String> i = stockorgids.iterator(); | ||||||
|         } | 		while (i.hasNext()) { | ||||||
|         Set<String> stockorgids = map.keySet(); | 			String key = i.next(); | ||||||
|         Iterator<String> i = stockorgids.iterator(); | 			List<String> vids = map.get(key); | ||||||
|         while (i.hasNext()) { | 			Map<String, MaterialProdVO> results = MaterialPubService.queryMaterialProduceInfoByPks( | ||||||
|             String key = i.next(); | 					vids.toArray(new String[0]), key, new String[] { MaterialProdVO.PK_PRODEPTDOC }); | ||||||
|             List<String> vids = map.get(key); | 			for (AggregatedPoVO agg : vos) { | ||||||
|             Map<String, MaterialProdVO> results = | 				PoVO plo = agg.getParentVO(); | ||||||
|                     MaterialPubService.queryMaterialProduceInfoByPks(vids.toArray(new String[0]), key, new String[] { | 				String vid = plo.getCmaterialvid(); | ||||||
|                         MaterialProdVO.PK_PRODEPTDOC | 				String stockorgid = plo.getCstockorgid(); | ||||||
|                     }); | 				String stockorgvid = plo.getCstockorgvid(); | ||||||
|             for (AggregatedPoVO agg : vos) { | 				Integer posource = plo.getFposource(); | ||||||
|                 PoVO plo = agg.getParentVO(); | 				if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(stockorgid) | ||||||
|                 String vid = plo.getCmaterialvid(); | 						&& MMValueCheck.isNotEmpty(stockorgvid)) { | ||||||
|                 String stockorgid = plo.getCstockorgid(); | 					if (null != results) { | ||||||
|                 String stockorgvid = plo.getCstockorgvid(); | 						MaterialProdVO prodvo = results.get(vid); | ||||||
|                 Integer posource = plo.getFposource(); | 						if (null != prodvo) { | ||||||
|                 if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(stockorgid) | 							plo.setCproddeptid(prodvo.getPk_prodeptdoc());// 生产部门ID | ||||||
|                         && 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(); | ||||||
|         // 根据生产部门ID查询设置VID | 			Integer posource = plo.getFposource(); | ||||||
|         List<String> proddeptids = new ArrayList<String>(); | 			if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { | ||||||
|         for (AggregatedPoVO agg : vos) { | 				proddeptids.add(prodDeptid); | ||||||
|             PoVO plo = agg.getParentVO(); | 			} | ||||||
|             String prodDeptid = plo.getCproddeptid(); | 		} | ||||||
|             Integer posource = plo.getFposource(); | 		IDeptPubService deptPubService = this.getDeptPubService(); | ||||||
|             if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { | 		try { | ||||||
|                 proddeptids.add(prodDeptid); | 			HashMap<String, String> results = deptPubService.getLastVIDSByDeptIDS(proddeptids.toArray(new String[0])); | ||||||
|             } | 			if (null != results) { | ||||||
|         } | 				for (AggregatedPoVO agg : vos) { | ||||||
|         IDeptPubService deptPubService = this.getDeptPubService(); | 					PoVO plo = agg.getParentVO(); | ||||||
|         try { | 					String prodDeptid = plo.getCproddeptid(); | ||||||
|             HashMap<String, String> results = deptPubService.getLastVIDSByDeptIDS(proddeptids.toArray(new String[0])); | 					Integer posource = plo.getFposource(); | ||||||
|             if (null != results) { | 					if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { | ||||||
|                 for (AggregatedPoVO agg : vos) { | 						plo.setCproddeptvid(results.get(prodDeptid)); | ||||||
|                     PoVO plo = agg.getParentVO(); | 					} | ||||||
|                     String prodDeptid = plo.getCproddeptid(); | 				} | ||||||
|                     Integer posource = plo.getFposource(); | 			} | ||||||
|                     if (PoSourceEnum.COMPUT == posource && MMValueCheck.isNotEmpty(prodDeptid)) { | 		} catch (BusinessException e) { | ||||||
|                         plo.setCproddeptvid(results.get(prodDeptid)); | 			ExceptionUtils.wrappException(e); | ||||||
|                     } | 		} | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         catch (BusinessException e) { |  | ||||||
|             ExceptionUtils.wrappException(e); |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|     } | 	} | ||||||
| 
 | 
 | ||||||
|     private IDeptPubService getDeptPubService() { | 	private IDeptPubService getDeptPubService() { | ||||||
|         return NCLocator.getInstance().lookup(IDeptPubService.class); | 		return NCLocator.getInstance().lookup(IDeptPubService.class); | ||||||
|     } | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue