feat(pmo): 精密流程生产订单关闭或取消关闭同步启源
This commit is contained in:
		
							parent
							
								
									2e19ac4c34
								
							
						
					
					
						commit
						8b0c7939da
					
				|  | @ -0,0 +1,111 @@ | |||
| package nc.bs.mmpac.pmo.pac0002.bp; | ||||
| 
 | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterPmoSyncJmQMSRule; | ||||
| 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; | ||||
| import nc.bs.mmpac.pmo.pac0002.rule.*; | ||||
| import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillCloseValueRule; | ||||
| import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule; | ||||
| import nc.impl.pubapp.pattern.rule.IRule; | ||||
| import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; | ||||
| import nc.util.mmf.framework.gc.GCBillTransferTool; | ||||
| import nc.util.mmf.framework.gc.GCBillUpdate; | ||||
| import nc.util.mmf.framework.gc.GCUpdateBPTemplate; | ||||
| import nc.vo.mmpac.pmo.pac0002.constant.PMOConstLang; | ||||
| import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; | ||||
| import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; | ||||
| import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFBillstatusEnum; | ||||
| import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFItemStatusEnum; | ||||
| import nc.vo.mmpac.pmo.pac0002.util.PmoSagaUtil; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.CircularlyAccessibleValueObject; | ||||
| import nc.vo.pubapp.pattern.exception.ExceptionUtils; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class PMORowCloseBP { | ||||
|     public PMORowCloseBP() { | ||||
|     } | ||||
| 
 | ||||
|     public PMOAggVO[] rowclose(PMOAggVO[] vos) { | ||||
|         GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate(PMOPluginPoint.ROWCLOSE); | ||||
|         CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser(); | ||||
|         this.addRowCloseBeforeRule(processer); | ||||
|         this.addRowCloseAfterRule(processer); | ||||
|         PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos); | ||||
|         PmoSagaUtil.frozenAndAddSaga(returnvos); | ||||
|         List<PMOItemVO> upditemList = new ArrayList(); | ||||
|         Map<String, PMOItemVO> upditemMap = new HashMap(); | ||||
| 
 | ||||
|         for (PMOAggVO aggvo : returnvos) { | ||||
|             PMOItemVO[] items = aggvo.getChildrenVO(); | ||||
| 
 | ||||
|             for (PMOItemVO item : items) { | ||||
|                 upditemList.add(item); | ||||
|                 upditemMap.put(item.getCmoid(), item); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         try { | ||||
|             PMOAggVO aggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid()); | ||||
|             PMOItemVO[] olditems = aggvo.getChildrenVO(); | ||||
|             List<PMOItemVO> tempitems = new ArrayList(); | ||||
| 
 | ||||
|             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()])); | ||||
|             PMOAggVO[] aggvos = new PMOAggVO[]{aggvo}; | ||||
|             GCBillTransferTool<PMOAggVO> transferTool = new GCBillTransferTool(aggvos); | ||||
|             PMOAggVO[] originBills = (PMOAggVO[]) transferTool.getOriginBills(); | ||||
|             GCBillUpdate<PMOAggVO> billupdate = new GCBillUpdate(); | ||||
|             PMOAggVO[] newaggvos = (PMOAggVO[]) billupdate.update(aggvos, originBills); | ||||
|             PmoSagaUtil.compensate4Close(newaggvos); | ||||
|             PMOItemVO[] totalitems = newaggvos[0].getChildrenVO(); | ||||
|             Map<String, PMOItemVO> newitemMap = new HashMap(); | ||||
| 
 | ||||
|             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); | ||||
|             PMOAggVO newaggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid()); | ||||
|             return new PMOAggVO[]{newaggvo}; | ||||
|         } catch (BusinessException e) { | ||||
|             ExceptionUtils.wrappException(e); | ||||
|             return returnvos; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void addRowCloseBeforeRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||
|         IRule<PMOAggVO> checkFrozenRule = new MMVOSagaFrozenValidateRule(true); | ||||
|         processer.addBeforeRule(checkFrozenRule); | ||||
|         processer.addBeforeRule(new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(), PMOFBillstatusEnum.AUDIT)); | ||||
|         processer.addBeforeRule(new PMOFilterRowStatusRule(PMOConstLang.getMSG_RULE_NO_ROWDATA(), PMOFItemStatusEnum.FINISH)); | ||||
|         processer.addBeforeRule(new PMOCloseCheckRule()); | ||||
|         processer.addBeforeRule(new PMOATPUpdateWithParaRule(true, "55A2")); | ||||
|         processer.addBeforeRule(new PMOFillCloseValueRule(false)); | ||||
|     } | ||||
| 
 | ||||
|     private void addRowCloseAfterRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||
|         IRule<PMOAggVO> finishPickmrule = new PMOFinishAutoFinishPickmRule(); | ||||
|         processer.addAfterRule(finishPickmrule); | ||||
|         processer.addAfterRule(new PMOATPUpdateWithParaRule(false, "55A2")); | ||||
|         processer.addAfterRule(new PMOCloseCloseSupplyRule()); | ||||
|         processer.addAfterRule(new AfterPmoSyncJmQMSRule("close")); | ||||
|     } | ||||
| } | ||||
|  | @ -0,0 +1,112 @@ | |||
| package nc.bs.mmpac.pmo.pac0002.bp; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterPmoSyncJmQMSRule; | ||||
| 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; | ||||
| import nc.bs.mmpac.pmo.pac0002.rule.PMOATPUpdateWithParaRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.rule.PMOCloseOpenSupplyRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterBillStatusRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterRowStatusRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckAccountSettleRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillCloseValueRule; | ||||
| import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule; | ||||
| import nc.impl.pubapp.pattern.rule.IRule; | ||||
| import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser; | ||||
| import nc.util.mmf.framework.gc.GCBillTransferTool; | ||||
| import nc.util.mmf.framework.gc.GCBillUpdate; | ||||
| import nc.util.mmf.framework.gc.GCUpdateBPTemplate; | ||||
| import nc.vo.mmpac.pmo.pac0002.constant.PMOConstLang; | ||||
| import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; | ||||
| import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; | ||||
| import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFBillstatusEnum; | ||||
| import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFItemStatusEnum; | ||||
| import nc.vo.mmpac.pmo.pac0002.util.PmoSagaUtil; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pub.CircularlyAccessibleValueObject; | ||||
| import nc.vo.pubapp.pattern.exception.ExceptionUtils; | ||||
| 
 | ||||
| public class PMORowCloseCancelBP { | ||||
|     public PMORowCloseCancelBP() { | ||||
|     } | ||||
| 
 | ||||
|     public PMOAggVO[] rowclosecancel(PMOAggVO[] vos) { | ||||
|         GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate(PMOPluginPoint.ROWUNCLOSE); | ||||
|         CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser(); | ||||
|         this.addRowCloseCancelBeforeRule(processer); | ||||
|         this.addRowCloseCancelAfterRule(processer); | ||||
|         PMOAggVO[] returnvos = (PMOAggVO[])processer.before(vos, vos); | ||||
|         PmoSagaUtil.addSagaAndCompensate4UnClose(returnvos); | ||||
|         List<PMOItemVO> upditemList = new ArrayList(); | ||||
|         Map<String, PMOItemVO> upditemMap = new HashMap(); | ||||
| 
 | ||||
|         for(PMOAggVO aggvo : returnvos) { | ||||
|             PMOItemVO[] items = aggvo.getChildrenVO(); | ||||
| 
 | ||||
|             for(PMOItemVO item : items) { | ||||
|                 upditemList.add(item); | ||||
|                 upditemMap.put(item.getCmoid(), item); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         try { | ||||
|             PMOAggVO aggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid()); | ||||
|             PMOItemVO[] olditems = aggvo.getChildrenVO(); | ||||
|             List<PMOItemVO> tempitems = new ArrayList(); | ||||
| 
 | ||||
|             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()])); | ||||
|             PMOAggVO[] aggvos = new PMOAggVO[]{aggvo}; | ||||
|             GCBillTransferTool<PMOAggVO> transferTool = new GCBillTransferTool(aggvos); | ||||
|             PMOAggVO[] originBills = (PMOAggVO[])transferTool.getOriginBills(); | ||||
|             GCBillUpdate<PMOAggVO> billupdate = new GCBillUpdate(); | ||||
|             PMOAggVO[] newaggvos = (PMOAggVO[])billupdate.update(aggvos, originBills); | ||||
|             PMOItemVO[] totalitems = newaggvos[0].getChildrenVO(); | ||||
|             Map<String, PMOItemVO> newitemMap = new HashMap(); | ||||
| 
 | ||||
|             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); | ||||
|             PMOAggVO newaggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid()); | ||||
|             return new PMOAggVO[]{newaggvo}; | ||||
|         } catch (BusinessException e) { | ||||
|             ExceptionUtils.wrappException(e); | ||||
|             return returnvos; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private void addRowCloseCancelBeforeRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||
|         IRule<PMOAggVO> checkFrozenRule = new MMVOSagaFrozenValidateRule(true); | ||||
|         processer.addBeforeRule(checkFrozenRule); | ||||
|         processer.addBeforeRule(new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(), PMOFBillstatusEnum.AUDIT)); | ||||
|         processer.addBeforeRule(new PMOFilterRowStatusRule(PMOConstLang.getMSG_RULE_NO_ROWDATA(), PMOFItemStatusEnum.CLOSE)); | ||||
|         processer.addBeforeRule(new PMOCheckAccountSettleRule()); | ||||
|         processer.addBeforeRule(new PMOATPUpdateWithParaRule(true, "55A2")); | ||||
|         processer.addBeforeRule(new PMOFillCloseValueRule(true)); | ||||
|     } | ||||
| 
 | ||||
|     private void addRowCloseCancelAfterRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||
|         processer.addAfterRule(new PMOATPUpdateWithParaRule(false, "55A2")); | ||||
|         processer.addAfterRule(new PMOCloseOpenSupplyRule()); | ||||
|         processer.addAfterRule(new AfterPmoSyncJmQMSRule("closeCancel")); | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue