refactor(pmo):优化生产订单的行状态和订单类型同步启源
This commit is contained in:
		
							parent
							
								
									fb9e58e6ee
								
							
						
					
					
						commit
						bb40b3e24c
					
				|  | @ -5,10 +5,7 @@ | ||||||
| 
 | 
 | ||||||
| package nc.bs.mmpac.pmo.pac0002.bp; | package nc.bs.mmpac.pmo.pac0002.bp; | ||||||
| 
 | 
 | ||||||
| import java.util.ArrayList; | import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterPmoSyncJmQMSRule; | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.List; |  | ||||||
| import java.util.Map; |  | ||||||
| import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; | import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService; | ||||||
| import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil; | import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil; | ||||||
| import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint; | import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint; | ||||||
|  | @ -31,6 +28,11 @@ import nc.vo.pub.BusinessException; | ||||||
| import nc.vo.pub.CircularlyAccessibleValueObject; | import nc.vo.pub.CircularlyAccessibleValueObject; | ||||||
| import nc.vo.pubapp.pattern.exception.ExceptionUtils; | 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 PMORowFinishBP { | public class PMORowFinishBP { | ||||||
|     public PMORowFinishBP() { |     public PMORowFinishBP() { | ||||||
|     } |     } | ||||||
|  | @ -40,14 +42,14 @@ public class PMORowFinishBP { | ||||||
|         CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser(); |         CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser(); | ||||||
|         this.addRowFinishBeforeRule(processer); |         this.addRowFinishBeforeRule(processer); | ||||||
|         this.addRowFinishAfterRule(processer); |         this.addRowFinishAfterRule(processer); | ||||||
|         PMOAggVO[] returnvos = (PMOAggVO[])processer.before(vos, vos); |         PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos); | ||||||
|         List<PMOItemVO> upditemList = new ArrayList(); |         List<PMOItemVO> upditemList = new ArrayList(); | ||||||
|         Map<String, PMOItemVO> upditemMap = new HashMap(); |         Map<String, PMOItemVO> upditemMap = new HashMap(); | ||||||
| 
 | 
 | ||||||
|         for(PMOAggVO aggvo : returnvos) { |         for (PMOAggVO aggvo : returnvos) { | ||||||
|             PMOItemVO[] items = aggvo.getChildrenVO(); |             PMOItemVO[] items = aggvo.getChildrenVO(); | ||||||
| 
 | 
 | ||||||
|             for(PMOItemVO item : items) { |             for (PMOItemVO item : items) { | ||||||
|                 upditemList.add(item); |                 upditemList.add(item); | ||||||
|                 upditemMap.put(item.getCmoid(), item); |                 upditemMap.put(item.getCmoid(), item); | ||||||
|             } |             } | ||||||
|  | @ -58,32 +60,32 @@ public class PMORowFinishBP { | ||||||
|             PMOItemVO[] olditems = aggvo.getChildrenVO(); |             PMOItemVO[] olditems = aggvo.getChildrenVO(); | ||||||
|             List<PMOItemVO> tempitems = new ArrayList(); |             List<PMOItemVO> tempitems = new ArrayList(); | ||||||
| 
 | 
 | ||||||
|             for(PMOItemVO item : olditems) { |             for (PMOItemVO item : olditems) { | ||||||
|                 if (!upditemMap.containsKey(item.getCmoid())) { |                 if (!upditemMap.containsKey(item.getCmoid())) { | ||||||
|                     tempitems.add(item); |                     tempitems.add(item); | ||||||
|                 } else { |                 } else { | ||||||
|                     ((PMOItemVO)upditemMap.get(item.getCmoid())).setStatus(1); |                     ((PMOItemVO) upditemMap.get(item.getCmoid())).setStatus(1); | ||||||
|                     PMOBPUtil.setGrandVOStatusUpdate((PMOItemVO)upditemMap.get(item.getCmoid())); |                     PMOBPUtil.setGrandVOStatusUpdate((PMOItemVO) upditemMap.get(item.getCmoid())); | ||||||
|                     tempitems.add((PMOItemVO)upditemMap.get(item.getCmoid())); |                     tempitems.add((PMOItemVO) upditemMap.get(item.getCmoid())); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             aggvo.setChildrenVO((CircularlyAccessibleValueObject[])tempitems.toArray(new PMOItemVO[tempitems.size()])); |             aggvo.setChildrenVO((CircularlyAccessibleValueObject[]) tempitems.toArray(new PMOItemVO[tempitems.size()])); | ||||||
|             PMOAggVO[] aggvos = new PMOAggVO[]{aggvo}; |             PMOAggVO[] aggvos = new PMOAggVO[]{aggvo}; | ||||||
|             GCBillTransferTool<PMOAggVO> transferTool = new GCBillTransferTool(aggvos); |             GCBillTransferTool<PMOAggVO> transferTool = new GCBillTransferTool(aggvos); | ||||||
|             PMOAggVO[] originBills = (PMOAggVO[])transferTool.getOriginBills(); |             PMOAggVO[] originBills = (PMOAggVO[]) transferTool.getOriginBills(); | ||||||
|             GCBillUpdate<PMOAggVO> billupdate = new GCBillUpdate(); |             GCBillUpdate<PMOAggVO> billupdate = new GCBillUpdate(); | ||||||
|             PMOAggVO[] newaggvos = (PMOAggVO[])billupdate.update(aggvos, originBills); |             PMOAggVO[] newaggvos = (PMOAggVO[]) billupdate.update(aggvos, originBills); | ||||||
|             PMOItemVO[] totalitems = newaggvos[0].getChildrenVO(); |             PMOItemVO[] totalitems = newaggvos[0].getChildrenVO(); | ||||||
|             Map<String, PMOItemVO> newitemMap = new HashMap(); |             Map<String, PMOItemVO> newitemMap = new HashMap(); | ||||||
| 
 | 
 | ||||||
|             for(PMOItemVO item : totalitems) { |             for (PMOItemVO item : totalitems) { | ||||||
|                 if (upditemMap.containsKey(item.getCmoid())) { |                 if (upditemMap.containsKey(item.getCmoid())) { | ||||||
|                     newitemMap.put(item.getCmoid(), item); |                     newitemMap.put(item.getCmoid(), item); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             returnvos[0].setChildrenVO((CircularlyAccessibleValueObject[])newitemMap.values().toArray(new PMOItemVO[0])); |             returnvos[0].setChildrenVO((CircularlyAccessibleValueObject[]) newitemMap.values().toArray(new PMOItemVO[0])); | ||||||
|             processer.after(returnvos, returnvos); |             processer.after(returnvos, returnvos); | ||||||
| 
 | 
 | ||||||
| //            /** 同步修改备料计划完成(生产订单强制完工时) */ | //            /** 同步修改备料计划完成(生产订单强制完工时) */ | ||||||
|  | @ -109,5 +111,7 @@ public class PMORowFinishBP { | ||||||
| 
 | 
 | ||||||
|     private void addRowFinishAfterRule(CompareAroundProcesser<PMOAggVO> processer) { |     private void addRowFinishAfterRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||||
|         processer.addAfterRule(new PMOFinishAutoFinishPutPlanRule()); |         processer.addAfterRule(new PMOFinishAutoFinishPutPlanRule()); | ||||||
|  |         IRule<PMOAggVO> rule = new AfterPmoSyncJmQMSRule("finish"); | ||||||
|  |         processer.addAfterRule(rule); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,89 @@ | ||||||
|  | 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.PMOFilterBillStatusRule; | ||||||
|  | import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterRowStatusRule; | ||||||
|  | import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillFinishValueRule; | ||||||
|  | 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.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 PMORowFinishCancelBP { | ||||||
|  |     public PMORowFinishCancelBP() { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public PMOAggVO[] rowfinishcancel(PMOAggVO[] vos) { | ||||||
|  |         GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate(PMOPluginPoint.ROWUNFINISH); | ||||||
|  |         CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser(); | ||||||
|  |         this.addRowFinishCancelBeforeRule(processer); | ||||||
|  |         PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos); | ||||||
|  |         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(); | ||||||
|  |             billupdate.update(aggvos, originBills); | ||||||
|  |             processer.after(returnvos, returnvos); | ||||||
|  |             return aggvos; | ||||||
|  |         } catch (BusinessException e) { | ||||||
|  |             ExceptionUtils.wrappException(e); | ||||||
|  |             return returnvos; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void addRowFinishCancelBeforeRule(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 PMOFillFinishValueRule(true)); | ||||||
|  |         IRule<PMOAggVO> rule = new AfterPmoSyncJmQMSRule("finishCancel"); | ||||||
|  |         processer.addAfterRule(rule); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -98,9 +98,9 @@ public class AfterPmoSyncJmQMSRule implements IRule<PMOAggVO> { | ||||||
|                 String mocloser = item.getMocloser();// BIP关闭人 |                 String mocloser = item.getMocloser();// BIP关闭人 | ||||||
|                 String mocloserName = MyHelper.getStrValByCondition("sm_user", UserVO.USER_NAME, |                 String mocloserName = MyHelper.getStrValByCondition("sm_user", UserVO.USER_NAME, | ||||||
|                         UserVO.CUSERID + " = '" + mocloser + "'"); |                         UserVO.CUSERID + " = '" + mocloser + "'"); | ||||||
|                 String cprojectid = item.getCprojectid();// 项目id |                 // String cprojectid = item.getCprojectid();// 项目id | ||||||
|                 String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE, |                 // String projectCode = MyHelper.getStrValByCondition(ProjectHeadVO.getDefaultTableName(), ProjectHeadVO.PROJECT_CODE, | ||||||
|                         ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'"); |                 //         ProjectHeadVO.PK_PROJECT + " = '" + cprojectid + "'"); | ||||||
| 
 | 
 | ||||||
|                 // 行状态 0=自由;4=审批通过;1=投放;2=完工;3=关闭; |                 // 行状态 0=自由;4=审批通过;1=投放;2=完工;3=关闭; | ||||||
|                 Integer fitemstatus = item.getFitemstatus(); |                 Integer fitemstatus = item.getFitemstatus(); | ||||||
|  | @ -121,23 +121,20 @@ public class AfterPmoSyncJmQMSRule implements IRule<PMOAggVO> { | ||||||
|                     tplanendtimeStr = tplanendtime.toString(); |                     tplanendtimeStr = tplanendtime.toString(); | ||||||
|                 } |                 } | ||||||
|                 itemObj.put("jhrq", tplanendtimeStr);// 计划日期,该产品的计划生产日期 |                 itemObj.put("jhrq", tplanendtimeStr);// 计划日期,该产品的计划生产日期 | ||||||
|  |                 // BIP-行状态 0=自由;4=审批通过;1=投放;2=完工;3=关闭; | ||||||
|  |                 // 生产订单从BIP传启源,强制关闭、取消投放、强制完工都传1,反向操作传0 | ||||||
|                 int flag_wg = 0; |                 int flag_wg = 0; | ||||||
|                 int flag_jqbz = 0; |                 int flag_jqbz = 0; | ||||||
|                 if (fitemstatus == 2) { |                 if (fitemstatus == 2) { | ||||||
|                     flag_wg = 1; |                     flag_wg = 1; | ||||||
|  |                     flag_jqbz = 1; | ||||||
|                 } |                 } | ||||||
|                 if (fitemstatus == 3) { |                 if (fitemstatus == 3) { | ||||||
|                     flag_wg = 1; |                     flag_wg = 1; | ||||||
|                     flag_jqbz = 1; |                     flag_jqbz = 1; | ||||||
|                 } |                 } | ||||||
|                 if ("putCancel".equals(flag)) { |                 if ("putCancel".equals(flag) || "close".equals(flag) || "finish".equals(flag)) { | ||||||
|                     flag_jqbz = 2;// 2.取消投放 |                     flag_jqbz = 1;// 结清 | ||||||
|                 } |  | ||||||
|                 if ("close".equals(flag)) {// 关闭 |  | ||||||
|                     flag_jqbz = 1; |  | ||||||
|                 } |  | ||||||
|                 if ("closeCancel".equals(flag)) {// 取消关闭 |  | ||||||
|                     flag_jqbz = 0; |  | ||||||
|                 } |                 } | ||||||
|                 itemObj.put("flag_wg", flag_wg);// 完工标志 1/0 1.完工 |                 itemObj.put("flag_wg", flag_wg);// 完工标志 1/0 1.完工 | ||||||
|                 itemObj.put("flag_jqbz", flag_jqbz);// 结清标志 1 代表结清  0 或者空代表非结清 |                 itemObj.put("flag_jqbz", flag_jqbz);// 结清标志 1 代表结清  0 或者空代表非结清 | ||||||
|  | @ -149,6 +146,7 @@ public class AfterPmoSyncJmQMSRule implements IRule<PMOAggVO> { | ||||||
|                 } |                 } | ||||||
|                 itemObj.put("jqrq", tmoclosedtimeStr);// 结清日期-BIP关闭日期 |                 itemObj.put("jqrq", tmoclosedtimeStr);// 结清日期-BIP关闭日期 | ||||||
|                 itemObj.put("bz", item.getVnote());// 清单备注 |                 itemObj.put("bz", item.getVnote());// 清单备注 | ||||||
|  |                 itemObj.put("ddlx", vtrantypecode);// 单据类型 | ||||||
|                 contentArray.add(itemObj); |                 contentArray.add(itemObj); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue