patch_适配2312MPR运算时把合同编号合同销售订单号标前项目号带到计划订单-张鑫0326
This commit is contained in:
		
							parent
							
								
									70f234684f
								
							
						
					
					
						commit
						96e91e95b3
					
				|  | @ -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<AggregatedPoVO> { | ||||
| 	public void process(AggregatedPoVO[] vos) { | ||||
| 		if (null == vos) { | ||||
| 			return; | ||||
| 		} | ||||
| 		 | ||||
| 		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 { | ||||
| 
 | ||||
| 					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); | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in New Issue