电力电子-流程生产订单投放前检查艾普MES的传输状态V1
This commit is contained in:
		
							parent
							
								
									39d26eb183
								
							
						
					
					
						commit
						d9e5c58021
					
				|  | @ -6,6 +6,7 @@ import java.util.List; | |||
| import java.util.Map; | ||||
| 
 | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterPmoSyncJmQMSRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.PutBeforeCheckStatusRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil; | ||||
| import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint; | ||||
|  | @ -33,95 +34,96 @@ import nc.vo.pub.CircularlyAccessibleValueObject; | |||
| import nc.vo.pubapp.pattern.exception.ExceptionUtils; | ||||
| 
 | ||||
| public class PMORowPutBP { | ||||
| 	public PMOAggVO[] rowput(PMOAggVO[] vos) { | ||||
| 		try { | ||||
| 			GCBillConcurrentTool lockTool = new GCBillConcurrentTool(); | ||||
| 			lockTool.lockBill(vos); | ||||
|     public PMOAggVO[] rowput(PMOAggVO[] vos) { | ||||
|         try { | ||||
|             GCBillConcurrentTool lockTool = new GCBillConcurrentTool(); | ||||
|             lockTool.lockBill(vos); | ||||
| 
 | ||||
| 			(new VOConcurrentTool()).checkTSWithDB(vos[0].getChildrenVO()); | ||||
|             (new VOConcurrentTool()).checkTSWithDB(vos[0].getChildrenVO()); | ||||
| 
 | ||||
| 			GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate<PMOAggVO>(PMOPluginPoint.ROWPUT); | ||||
| 			CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser(); | ||||
|             GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate<PMOAggVO>(PMOPluginPoint.ROWPUT); | ||||
|             CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser(); | ||||
| 
 | ||||
| 			addRowPutBeforeRule(processer); | ||||
|             addRowPutBeforeRule(processer); | ||||
| 
 | ||||
| 			addRowPutAfterRule(processer); | ||||
|             addRowPutAfterRule(processer); | ||||
| 
 | ||||
| 			PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos); | ||||
|             PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos); | ||||
| 
 | ||||
| 			List<PMOItemVO> upditemList = new ArrayList<PMOItemVO>(); | ||||
| 			Map<String, PMOItemVO> upditemMap = new HashMap<String, PMOItemVO>(); | ||||
| 			for (PMOAggVO aggvo : returnvos) { | ||||
| 				PMOItemVO[] items = aggvo.getChildrenVO(); | ||||
| 				for (PMOItemVO item : items) { | ||||
| 					upditemList.add(item); | ||||
| 					upditemMap.put(item.getCmoid(), item); | ||||
| 				} | ||||
| 			} | ||||
| 			PMOAggVO aggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid()); | ||||
|             List<PMOItemVO> upditemList = new ArrayList<PMOItemVO>(); | ||||
|             Map<String, PMOItemVO> upditemMap = new HashMap<String, PMOItemVO>(); | ||||
|             for (PMOAggVO aggvo : returnvos) { | ||||
|                 PMOItemVO[] items = aggvo.getChildrenVO(); | ||||
|                 for (PMOItemVO item : items) { | ||||
|                     upditemList.add(item); | ||||
|                     upditemMap.put(item.getCmoid(), item); | ||||
|                 } | ||||
|             } | ||||
|             PMOAggVO aggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid()); | ||||
| 
 | ||||
| 			PMOItemVO[] olditems = aggvo.getChildrenVO(); | ||||
| 			List<PMOItemVO> tempitems = new ArrayList<PMOItemVO>(); | ||||
| 			for (PMOItemVO item : olditems) { | ||||
| 				if (!upditemMap.containsKey(item.getCmoid())) { | ||||
| 					tempitems.add(item); | ||||
| 				} else { | ||||
|             PMOItemVO[] olditems = aggvo.getChildrenVO(); | ||||
|             List<PMOItemVO> tempitems = new ArrayList<PMOItemVO>(); | ||||
|             for (PMOItemVO item : olditems) { | ||||
|                 if (!upditemMap.containsKey(item.getCmoid())) { | ||||
|                     tempitems.add(item); | ||||
|                 } else { | ||||
| 
 | ||||
| 					((PMOItemVO) upditemMap.get(item.getCmoid())).setStatus(1); | ||||
| 					PMOBPUtil.setGrandVOStatusUpdate((PMOItemVO) upditemMap.get(item.getCmoid())); | ||||
| 					tempitems.add((PMOItemVO) upditemMap.get(item.getCmoid())); | ||||
| 				} | ||||
| 			} | ||||
| 			aggvo.setChildrenVO((CircularlyAccessibleValueObject[]) tempitems.toArray(new PMOItemVO[tempitems.size()])); | ||||
|                     ((PMOItemVO) upditemMap.get(item.getCmoid())).setStatus(1); | ||||
|                     PMOBPUtil.setGrandVOStatusUpdate((PMOItemVO) upditemMap.get(item.getCmoid())); | ||||
|                     tempitems.add((PMOItemVO) upditemMap.get(item.getCmoid())); | ||||
|                 } | ||||
|             } | ||||
|             aggvo.setChildrenVO((CircularlyAccessibleValueObject[]) tempitems.toArray(new PMOItemVO[tempitems.size()])); | ||||
| 
 | ||||
| 			PMOAggVO[] aggvos = { aggvo }; | ||||
|             PMOAggVO[] aggvos = {aggvo}; | ||||
| 
 | ||||
| 			GCBillTransferTool<PMOAggVO> transferTool = new GCBillTransferTool<PMOAggVO>(aggvos); | ||||
| 			PMOAggVO[] originBills = (PMOAggVO[]) transferTool.getOriginBills(); | ||||
| 			GCBillUpdate<PMOAggVO> billupdate = new GCBillUpdate<PMOAggVO>(); | ||||
| 			PMOAggVO[] newaggvos = (PMOAggVO[]) billupdate.update(aggvos, originBills); | ||||
|             GCBillTransferTool<PMOAggVO> transferTool = new GCBillTransferTool<PMOAggVO>(aggvos); | ||||
|             PMOAggVO[] originBills = (PMOAggVO[]) transferTool.getOriginBills(); | ||||
|             GCBillUpdate<PMOAggVO> billupdate = new GCBillUpdate<PMOAggVO>(); | ||||
|             PMOAggVO[] newaggvos = (PMOAggVO[]) billupdate.update(aggvos, originBills); | ||||
| 
 | ||||
| 			PMOItemVO[] totalitems = newaggvos[0].getChildrenVO(); | ||||
| 			Map<String, PMOItemVO> newitemMap = new HashMap<String, PMOItemVO>(); | ||||
| 			for (PMOItemVO item : totalitems) { | ||||
| 				if (upditemMap.containsKey(item.getCmoid())) { | ||||
| 					newitemMap.put(item.getCmoid(), item); | ||||
| 				} | ||||
| 			} | ||||
| 			returnvos[0] | ||||
| 					.setChildrenVO((CircularlyAccessibleValueObject[]) newitemMap.values().toArray(new PMOItemVO[0])); | ||||
|             PMOItemVO[] totalitems = newaggvos[0].getChildrenVO(); | ||||
|             Map<String, PMOItemVO> newitemMap = new HashMap<String, PMOItemVO>(); | ||||
|             for (PMOItemVO item : totalitems) { | ||||
|                 if (upditemMap.containsKey(item.getCmoid())) { | ||||
|                     newitemMap.put(item.getCmoid(), item); | ||||
|                 } | ||||
|             } | ||||
|             returnvos[0] | ||||
|                     .setChildrenVO((CircularlyAccessibleValueObject[]) newitemMap.values().toArray(new PMOItemVO[0])); | ||||
| 
 | ||||
| 			processer.after(returnvos, returnvos); | ||||
|             processer.after(returnvos, returnvos); | ||||
| 
 | ||||
| 			PMOAggVO newaggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid()); | ||||
|             PMOAggVO newaggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid()); | ||||
| 
 | ||||
| 			return new PMOAggVO[] { newaggvo }; | ||||
|             return new PMOAggVO[]{newaggvo}; | ||||
| 
 | ||||
| 		} catch (Exception e) { | ||||
| 			ExceptionUtils.wrappException(e); | ||||
|         } catch (Exception e) { | ||||
|             ExceptionUtils.wrappException(e); | ||||
| 
 | ||||
| 			return null; | ||||
| 		} | ||||
| 	} | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 	private void addRowPutBeforeRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||
| 		MMVOSagaFrozenValidateRule mMVOSagaFrozenValidateRule = new MMVOSagaFrozenValidateRule(true); | ||||
| 		processer.addBeforeRule(mMVOSagaFrozenValidateRule); | ||||
| 		processer.addBeforeRule( | ||||
| 				new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(), PMOFBillstatusEnum.AUDIT)); | ||||
|     private void addRowPutBeforeRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||
|         MMVOSagaFrozenValidateRule mMVOSagaFrozenValidateRule = new MMVOSagaFrozenValidateRule(true); | ||||
|         processer.addBeforeRule(mMVOSagaFrozenValidateRule); | ||||
|         processer.addBeforeRule( | ||||
|                 new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(), PMOFBillstatusEnum.AUDIT)); | ||||
| 
 | ||||
| 		processer.addBeforeRule( | ||||
| 				new PMOFilterRowStatusRule(PMOConstLang.getMSG_RULE_NO_ROWDATA(), PMOFItemStatusEnum.AUDIT)); | ||||
|         processer.addBeforeRule( | ||||
|                 new PMOFilterRowStatusRule(PMOConstLang.getMSG_RULE_NO_ROWDATA(), PMOFItemStatusEnum.AUDIT)); | ||||
| 
 | ||||
| 		processer.addBeforeRule(new PMOCheckDeptNotNullRule()); | ||||
| 		processer.addBeforeRule(new PMOPutAutoAuditPickmRule()); | ||||
| 		processer.addBeforeRule(new PMOFillPutValueRule(false)); | ||||
| 		processer.addBeforeRule(new PMOFillBatchCodeRule()); | ||||
| 		processer.addBeforeRule(new putBeforeCheckRule()); | ||||
| 	} | ||||
|         processer.addBeforeRule(new PMOCheckDeptNotNullRule()); | ||||
|         processer.addBeforeRule(new PMOPutAutoAuditPickmRule()); | ||||
|         processer.addBeforeRule(new PMOFillPutValueRule(false)); | ||||
|         processer.addBeforeRule(new PMOFillBatchCodeRule()); | ||||
|         processer.addBeforeRule(new putBeforeCheckRule()); | ||||
|         processer.addBeforeRule(new PutBeforeCheckStatusRule()); | ||||
|     } | ||||
| 
 | ||||
| 	private void addRowPutAfterRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||
| 		IRule<PMOAggVO> rule = new AfterPmoSyncJmQMSRule("put"); | ||||
| 		processer.addAfterRule(rule); | ||||
| 	} | ||||
|     private void addRowPutAfterRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||
|         IRule<PMOAggVO> rule = new AfterPmoSyncJmQMSRule("put"); | ||||
|         processer.addAfterRule(rule); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,97 @@ | |||
| package nc.bs.mmpac.pmo.pac0002.bp.rule; | ||||
| 
 | ||||
| import nc.bs.framework.common.NCLocator; | ||||
| import nc.bs.uapbd.util.MyHelper; | ||||
| import nc.impl.pubapp.pattern.rule.IRule; | ||||
| import nc.itf.uif.pub.IUifService; | ||||
| import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; | ||||
| import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; | ||||
| import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; | ||||
| import nc.vo.org.DeptVO; | ||||
| import nc.vo.org.OrgVO; | ||||
| import nc.vo.pub.BusinessException; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Set; | ||||
| 
 | ||||
| /** | ||||
|  * 电力电子-流程生产订单投放前检查艾普MES的传输状态 | ||||
|  * | ||||
|  * @author mzr | ||||
|  * @date 2025/9/24 | ||||
|  */ | ||||
| public class PutBeforeCheckStatusRule implements IRule<PMOAggVO> { | ||||
| 
 | ||||
|     private static IUifService service = (IUifService) NCLocator.getInstance().lookup(IUifService.class.getName()); | ||||
|     private Map<String, String> configParams; | ||||
|     private Map<String, String> deptParams; | ||||
| 
 | ||||
|     @Override | ||||
|     public void process(PMOAggVO[] vos) { | ||||
|         try { | ||||
|             configParams = MyHelper.getConfigParams("Dldz-config", null); | ||||
|             if (configParams.isEmpty()) { | ||||
|                 return; | ||||
|             } | ||||
|             deptParams = MyHelper.getConfigParams("Dldz-dept", null); | ||||
|             if (deptParams.isEmpty()) { | ||||
|                 return; | ||||
|             } | ||||
|             String deptRange = String.join(",", deptParams.keySet()); | ||||
|             configParams.put("deptRange", deptRange); | ||||
|             List<PMOAggVO> filteredOrders = checkAndFilterBillSrcOrg(vos); | ||||
|             if (filteredOrders.isEmpty()) { | ||||
|                 return; | ||||
|             } | ||||
|             for (PMOAggVO vo : vos) { | ||||
|                 PMOItemVO[] itemVOS = vo.getChildrenVO(); | ||||
|                 for (PMOItemVO itemVO : itemVOS) { | ||||
|                     Object vdef34 = itemVO.getAttributeValue("vdef34"); | ||||
|                     if (!"Y".equals(vdef34)) { | ||||
|                         throw new BusinessException("请先将流程生产订单推送艾普MES成功后再投放"); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } catch (BusinessException e) { | ||||
|             throw new RuntimeException(e); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 检查并筛选需要同步的单据 | ||||
|      */ | ||||
|     private List<PMOAggVO> checkAndFilterBillSrcOrg(PMOAggVO[] pmoAggVOS) throws BusinessException { | ||||
|         Set<String> billTypeCodes = Set.of( | ||||
|                 "55A2-Cxx-01", "55A2-Cxx-18" | ||||
|         ); | ||||
|         List<PMOAggVO> aggvoList = new ArrayList<>(); | ||||
|         for (PMOAggVO aggVo : pmoAggVOS) { | ||||
|             PMOHeadVO headVO = aggVo.getParentVO(); | ||||
|             // 判断订单类型,期初订单不处理 | ||||
|             String vtrantypecode = headVO.getVtrantypecode(); | ||||
|             if (billTypeCodes.contains(vtrantypecode)) { | ||||
|                 continue; | ||||
|             } | ||||
|             String pkOrg = headVO.getPk_org(); | ||||
|             String orgCode = MyHelper.transferField(OrgVO.getDefaultTableName(), OrgVO.CODE, OrgVO.PK_ORG, pkOrg); | ||||
|             // 检查当前组织是否为电力电子 | ||||
|             if (MyHelper.checkIfDldzOrg(orgCode, configParams)) { | ||||
|                 continue; | ||||
|             } | ||||
|             // 按照部门筛选生产订单,只传消弧车间、电容车间、成套车间(部门是配置项) | ||||
|             PMOItemVO childrenVO = aggVo.getChildrenVO()[0]; | ||||
|             String cdeptid = childrenVO.getCdeptid(); | ||||
|             String deptCode = MyHelper.transferField(DeptVO.getDefaultTableName(), DeptVO.CODE, DeptVO.PK_DEPT, cdeptid); | ||||
|             // 如果部门不在范围内则跳过本次循环 | ||||
|             String deptRange = configParams.get("deptRange"); | ||||
|             if (deptCode == null || !deptRange.contains(deptCode)) { | ||||
|                 continue; | ||||
|             } | ||||
|             aggvoList.add(aggVo); | ||||
|         } | ||||
| 
 | ||||
|         return aggvoList; | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue