流程生产订单保存前校验物料类型是否一致-精密铸造
This commit is contained in:
		
							parent
							
								
									0a7b8779d1
								
							
						
					
					
						commit
						eeaf3c30e2
					
				|  | @ -2,6 +2,7 @@ package nc.bs.mmpac.pmo.pac0002.bp; | |||
| 
 | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterApproveSyncPLMRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.BeforePmoBomRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.BeforePmoWlbzJMRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.saveBeforeCheckRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint; | ||||
| import nc.bs.mmpac.pmo.pac0002.rule.*; | ||||
|  | @ -32,315 +33,316 @@ import java.util.ArrayList; | |||
| import java.util.List; | ||||
| 
 | ||||
| public class PMOInsertBP { | ||||
| 	public PMOAggVO[] insert(PMOAggVO[] bills, boolean issub, boolean isPush) { | ||||
| 		AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.INSERT); | ||||
| 		List<SnDocParam> updateParams = new ArrayList<SnDocParam>(); | ||||
| 		List<SnDocParam> saveParams = new ArrayList<SnDocParam>(); | ||||
|     public PMOAggVO[] insert(PMOAggVO[] bills, boolean issub, boolean isPush) { | ||||
|         AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.INSERT); | ||||
|         List<SnDocParam> updateParams = new ArrayList<SnDocParam>(); | ||||
|         List<SnDocParam> saveParams = new ArrayList<SnDocParam>(); | ||||
| 
 | ||||
| 		addBeforeRule(processer, issub, isPush, updateParams, saveParams); | ||||
|         addBeforeRule(processer, issub, isPush, updateParams, saveParams); | ||||
| 
 | ||||
| 		addAfterRule(processer, issub, isPush, updateParams, saveParams); | ||||
| 		GCBillInsert<PMOAggVO> bo = new GCBillInsert<PMOAggVO>(); | ||||
| 		PMOAggVO[] aggvos = (PMOAggVO[]) processer.before(bills); | ||||
| 		PMOAggVO[] newvos = (PMOAggVO[]) bo.insert(aggvos); | ||||
|         addAfterRule(processer, issub, isPush, updateParams, saveParams); | ||||
|         GCBillInsert<PMOAggVO> bo = new GCBillInsert<PMOAggVO>(); | ||||
|         PMOAggVO[] aggvos = (PMOAggVO[]) processer.before(bills); | ||||
|         PMOAggVO[] newvos = (PMOAggVO[]) bo.insert(aggvos); | ||||
| 
 | ||||
| 		PmoSagaUtil.addSagaAndCompensate4Insert(newvos); | ||||
| 		return (PMOAggVO[]) processer.after(newvos); | ||||
| 	} | ||||
|         PmoSagaUtil.addSagaAndCompensate4Insert(newvos); | ||||
|         return (PMOAggVO[]) processer.after(newvos); | ||||
|     } | ||||
| 
 | ||||
| 	public void insertSagasCheck(PMOAggVO[] bills, boolean issub, boolean isPush) { | ||||
| 		GCInsertBPTemplate<PMOAggVO> bp = new GCInsertBPTemplate<PMOAggVO>(PMOPluginPoint.INSERT); | ||||
|     public void insertSagasCheck(PMOAggVO[] bills, boolean issub, boolean isPush) { | ||||
|         GCInsertBPTemplate<PMOAggVO> bp = new GCInsertBPTemplate<PMOAggVO>(PMOPluginPoint.INSERT); | ||||
| 
 | ||||
| 		addBeforeRuleSagasCheck(bp.getAroundProcesser(), issub, isPush); | ||||
| 		bp.getAroundProcesser().before(bills); | ||||
| 	} | ||||
|         addBeforeRuleSagasCheck(bp.getAroundProcesser(), issub, isPush); | ||||
|         bp.getAroundProcesser().before(bills); | ||||
|     } | ||||
| 
 | ||||
| 	private void addBeforeRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush, | ||||
| 			List<SnDocParam> updateParams, List<SnDocParam> saveParams) { | ||||
| 		IRule<PMOAggVO> materialIsEnableRule = new CheckMaterialIsEnableRule(); | ||||
| 		processer.addBeforeRule(materialIsEnableRule); | ||||
|     private void addBeforeRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush, | ||||
|                                List<SnDocParam> updateParams, List<SnDocParam> saveParams) { | ||||
|         IRule<PMOAggVO> materialIsEnableRule = new CheckMaterialIsEnableRule(); | ||||
|         processer.addBeforeRule(materialIsEnableRule); | ||||
| 
 | ||||
| 		OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000"); | ||||
| 		processer.addBeforeRule(orgDisabledCheckRule); | ||||
|         OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000"); | ||||
|         processer.addBeforeRule(orgDisabledCheckRule); | ||||
| 
 | ||||
| 		FillInsertDataRule fillInsertDataRule = new FillInsertDataRule(); | ||||
| 		processer.addBeforeRule(fillInsertDataRule); | ||||
|         FillInsertDataRule fillInsertDataRule = new FillInsertDataRule(); | ||||
|         processer.addBeforeRule(fillInsertDataRule); | ||||
| 
 | ||||
| 		MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode"); | ||||
| 		processer.addBeforeRule(mMBillTypeIsLockCheckRule); | ||||
|         MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode"); | ||||
|         processer.addBeforeRule(mMBillTypeIsLockCheckRule); | ||||
| 
 | ||||
| 		MMAutoMaterialAssignRule mMAutoMaterialAssignRule = new MMAutoMaterialAssignRule(null, "cmaterialvid", | ||||
| 				new String[] { "pk_org", "cplanfactoryid" }, null); | ||||
|         MMAutoMaterialAssignRule mMAutoMaterialAssignRule = new MMAutoMaterialAssignRule(null, "cmaterialvid", | ||||
|                 new String[]{"pk_org", "cplanfactoryid"}, null); | ||||
| 
 | ||||
| 		processer.addBeforeFinalRule(mMAutoMaterialAssignRule); | ||||
|         processer.addBeforeFinalRule(mMAutoMaterialAssignRule); | ||||
| 
 | ||||
| 		MMATOMaterialCheckRule mMATOMaterialCheckRule = new MMATOMaterialCheckRule(null, "cmaterialvid", "cffileid"); | ||||
|         MMATOMaterialCheckRule mMATOMaterialCheckRule = new MMATOMaterialCheckRule(null, "cmaterialvid", "cffileid"); | ||||
| 
 | ||||
| 		processer.addBeforeRule(mMATOMaterialCheckRule); | ||||
|         processer.addBeforeRule(mMATOMaterialCheckRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule(); | ||||
| 		processer.addBeforeRule(marperrule); | ||||
|         IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule(); | ||||
|         processer.addBeforeRule(marperrule); | ||||
| 
 | ||||
| 		MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule(); | ||||
| 		processer.addBeforeRule(mMCheckMaterialVirtualRule); | ||||
|         MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule(); | ||||
|         processer.addBeforeRule(mMCheckMaterialVirtualRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule(); | ||||
| 		processer.addBeforeRule(chkrwxisrule); | ||||
|         IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule(); | ||||
|         processer.addBeforeRule(chkrwxisrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub); | ||||
| 		processer.addBeforeRule(chkrule); | ||||
|         IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub); | ||||
|         processer.addBeforeRule(chkrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule(); | ||||
| 		processer.addBeforeRule(fillvaluerule); | ||||
|         IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule(); | ||||
|         processer.addBeforeRule(fillvaluerule); | ||||
| 
 | ||||
| 		processer.addBeforeRule(new PMOSyncPlanmmNumRule()); | ||||
|         processer.addBeforeRule(new PMOSyncPlanmmNumRule()); | ||||
| 
 | ||||
| 		MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule(); | ||||
| 		processer.addBeforeRule(mMRowNoCheckRule); | ||||
|         MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule(); | ||||
|         processer.addBeforeRule(mMRowNoCheckRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> scrapAddrule = new PMOCheckParentStatusRule(); | ||||
| 		processer.addBeforeRule(scrapAddrule); | ||||
|         IRule<PMOAggVO> scrapAddrule = new PMOCheckParentStatusRule(); | ||||
|         processer.addBeforeRule(scrapAddrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> snDuprule = new PMOSNDupCheckRule(); | ||||
| 		processer.addBeforeRule(snDuprule); | ||||
|         IRule<PMOAggVO> snDuprule = new PMOSNDupCheckRule(); | ||||
|         processer.addBeforeRule(snDuprule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> outputrule = new PMOCreatePlanOutputRule(); | ||||
| 		processer.addBeforeRule(outputrule); | ||||
|         IRule<PMOAggVO> outputrule = new PMOCreatePlanOutputRule(); | ||||
|         processer.addBeforeRule(outputrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> procedurerule = new PMOCreateProcedureRule(isPush); | ||||
| 		processer.addBeforeRule(procedurerule); | ||||
|         IRule<PMOAggVO> procedurerule = new PMOCreateProcedureRule(isPush); | ||||
|         processer.addBeforeRule(procedurerule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> filltimeprocedurerule = new PMOFillInsertPlanTimeByProcedureRule(); | ||||
| 		processer.addBeforeRule(filltimeprocedurerule); | ||||
|         IRule<PMOAggVO> filltimeprocedurerule = new PMOFillInsertPlanTimeByProcedureRule(); | ||||
|         processer.addBeforeRule(filltimeprocedurerule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule(); | ||||
| 		processer.addBeforeRule(daterule); | ||||
|         IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule(); | ||||
|         processer.addBeforeRule(daterule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule(); | ||||
| 		processer.addBeforeRule(chkPntRule); | ||||
|         IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule(); | ||||
|         processer.addBeforeRule(chkPntRule); | ||||
| 
 | ||||
| 		processer.addBeforeRule(new PMOCheckProdurepointRule()); | ||||
|         processer.addBeforeRule(new PMOCheckProdurepointRule()); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true); | ||||
| 		processer.addBeforeRule(procdatelogicrule); | ||||
|         IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true); | ||||
|         processer.addBeforeRule(procdatelogicrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule(); | ||||
| 		processer.addBeforeRule(proccoderule); | ||||
|         IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule(); | ||||
|         processer.addBeforeRule(proccoderule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> procPscCheckRule = new PMOCheckProcedurePSCRule(); | ||||
| 		processer.addBeforeRule(procPscCheckRule); | ||||
|         IRule<PMOAggVO> procPscCheckRule = new PMOCheckProcedurePSCRule(); | ||||
|         processer.addBeforeRule(procPscCheckRule); | ||||
| 
 | ||||
| 		FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule(); | ||||
| 		processer.addBeforeRule(fieldLengthCheckRule); | ||||
|         FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule(); | ||||
|         processer.addBeforeRule(fieldLengthCheckRule); | ||||
| 
 | ||||
| 		UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>( | ||||
| 				new Class[] { nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class }); | ||||
| 		processer.addBeforeRule(defRule); | ||||
|         UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>( | ||||
|                 new Class[]{nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class}); | ||||
|         processer.addBeforeRule(defRule); | ||||
| 
 | ||||
| 		MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1, | ||||
| 				nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class); | ||||
|         MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1, | ||||
|                 nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class); | ||||
| 
 | ||||
| 		processer.addBeforeRule(prodModeRule); | ||||
|         processer.addBeforeRule(prodModeRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> rewriteReviceRule = new RewriteInsertNum4PSCRecive(); | ||||
| 		processer.addBeforeRule(rewriteReviceRule); | ||||
|         IRule<PMOAggVO> rewriteReviceRule = new RewriteInsertNum4PSCRecive(); | ||||
|         processer.addBeforeRule(rewriteReviceRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> wrMarkRule = new PMOMarkWrSNWhenInsertRule(); | ||||
| 		processer.addBeforeRule(wrMarkRule); | ||||
|         IRule<PMOAggVO> wrMarkRule = new PMOMarkWrSNWhenInsertRule(); | ||||
|         processer.addBeforeRule(wrMarkRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> atprule = new PMOATPUpdateRule(true, "55A2"); | ||||
| 		processer.addBeforeRule(atprule); | ||||
|         IRule<PMOAggVO> atprule = new PMOATPUpdateRule(true, "55A2"); | ||||
|         processer.addBeforeRule(atprule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> rewritewr = new RewriteInsertNum4Renovate(); | ||||
| 		processer.addBeforeRule(rewritewr); | ||||
|         IRule<PMOAggVO> rewritewr = new RewriteInsertNum4Renovate(); | ||||
|         processer.addBeforeRule(rewritewr); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> rewritesfc = new RewriteInsertNum4SFC(); | ||||
| 		processer.addBeforeRule(rewritesfc); | ||||
|         IRule<PMOAggVO> rewritesfc = new RewriteInsertNum4SFC(); | ||||
|         processer.addBeforeRule(rewritesfc); | ||||
| 
 | ||||
| 		MMCreateBillcodeAndTrantypecodeRule mMCreateBillcodeAndTrantypecodeRule = new MMCreateBillcodeAndTrantypecodeRule( | ||||
| 				"55A2", "vbillcode", "pk_group", "pk_org", "vtrantypecode"); | ||||
|         MMCreateBillcodeAndTrantypecodeRule mMCreateBillcodeAndTrantypecodeRule = new MMCreateBillcodeAndTrantypecodeRule( | ||||
|                 "55A2", "vbillcode", "pk_group", "pk_org", "vtrantypecode"); | ||||
| 
 | ||||
| 		processer.addBeforeRule(mMCreateBillcodeAndTrantypecodeRule); | ||||
|         processer.addBeforeRule(mMCreateBillcodeAndTrantypecodeRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> fillfirstInfo = new PMOFillFirstMOInfoRule(); | ||||
| 		processer.addBeforeRule(fillfirstInfo); | ||||
|         IRule<PMOAggVO> fillfirstInfo = new PMOFillFirstMOInfoRule(); | ||||
|         processer.addBeforeRule(fillfirstInfo); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> fillbatchvaluerule = new PMOFillInsertBatchValueRule(); | ||||
| 		processer.addBeforeRule(fillbatchvaluerule); | ||||
|         IRule<PMOAggVO> fillbatchvaluerule = new PMOFillInsertBatchValueRule(); | ||||
|         processer.addBeforeRule(fillbatchvaluerule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> batchcodeRule = new PMOFillBatchCodeRule(); | ||||
| 		processer.addBeforeRule(batchcodeRule); | ||||
|         IRule<PMOAggVO> batchcodeRule = new PMOFillBatchCodeRule(); | ||||
|         processer.addBeforeRule(batchcodeRule); | ||||
| 
 | ||||
| 		PMOCffileidInserAndUpdatetRule cffileidRule = new PMOCffileidInserAndUpdatetRule(); | ||||
| 		processer.addBeforeRule(cffileidRule); | ||||
|         PMOCffileidInserAndUpdatetRule cffileidRule = new PMOCffileidInserAndUpdatetRule(); | ||||
|         processer.addBeforeRule(cffileidRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule(); | ||||
| 		processer.addBeforeRule(snCheckRule); | ||||
|         IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule(); | ||||
|         processer.addBeforeRule(snCheckRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> snRule = new PMOFillSNPkAndCodeRule(); | ||||
| 		processer.addBeforeRule(snRule); | ||||
|         IRule<PMOAggVO> snRule = new PMOFillSNPkAndCodeRule(); | ||||
|         processer.addBeforeRule(snRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> snSyncRule = new PMOSyncSNWhenInsertRule(updateParams, saveParams); | ||||
| 		processer.addBeforeRule(snSyncRule); | ||||
|         IRule<PMOAggVO> snSyncRule = new PMOSyncSNWhenInsertRule(updateParams, saveParams); | ||||
|         processer.addBeforeRule(snSyncRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> checkCinwarehouseidRule = new PMOCheckCinwarehouseidRule(); | ||||
| 		processer.addBeforeRule(checkCinwarehouseidRule); | ||||
|         IRule<PMOAggVO> checkCinwarehouseidRule = new PMOCheckCinwarehouseidRule(); | ||||
|         processer.addBeforeRule(checkCinwarehouseidRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> atoCheck = new PMOATOCheckRule(); | ||||
| 		processer.addBeforeRule(atoCheck); | ||||
|         IRule<PMOAggVO> atoCheck = new PMOATOCheckRule(); | ||||
|         processer.addBeforeRule(atoCheck); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> procedureIRule = new PMOCheckProcedureratioRule(); | ||||
| 		processer.addBeforeRule(procedureIRule); | ||||
| 		 | ||||
| 		IRule<PMOAggVO> saveBeforeCheckRule = new saveBeforeCheckRule(); | ||||
|         IRule<PMOAggVO> procedureIRule = new PMOCheckProcedureratioRule(); | ||||
|         processer.addBeforeRule(procedureIRule); | ||||
| 
 | ||||
|         IRule<PMOAggVO> saveBeforeCheckRule = new saveBeforeCheckRule(); | ||||
|         processer.addBeforeRule(saveBeforeCheckRule); | ||||
| 
 | ||||
| 		processer.addBeforeRule(new BeforePmoBomRule()); | ||||
| 	} | ||||
|         processer.addBeforeRule(new BeforePmoWlbzJMRule()); | ||||
|         processer.addBeforeRule(new BeforePmoBomRule()); | ||||
|     } | ||||
| 
 | ||||
| 	private void addBeforeRuleSagasCheck(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush) { | ||||
| 		OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000"); | ||||
| 		processer.addBeforeRule(orgDisabledCheckRule); | ||||
|     private void addBeforeRuleSagasCheck(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush) { | ||||
|         OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000"); | ||||
|         processer.addBeforeRule(orgDisabledCheckRule); | ||||
| 
 | ||||
| 		FillInsertDataRule fillInsertDataRule = new FillInsertDataRule(); | ||||
| 		processer.addBeforeRule(fillInsertDataRule); | ||||
|         FillInsertDataRule fillInsertDataRule = new FillInsertDataRule(); | ||||
|         processer.addBeforeRule(fillInsertDataRule); | ||||
| 
 | ||||
| 		MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode"); | ||||
| 		processer.addBeforeRule(mMBillTypeIsLockCheckRule); | ||||
|         MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode"); | ||||
|         processer.addBeforeRule(mMBillTypeIsLockCheckRule); | ||||
| 
 | ||||
| 		MMATOMaterialCheckRule mMATOMaterialCheckRule = new MMATOMaterialCheckRule(null, "cmaterialvid", "cffileid"); | ||||
|         MMATOMaterialCheckRule mMATOMaterialCheckRule = new MMATOMaterialCheckRule(null, "cmaterialvid", "cffileid"); | ||||
| 
 | ||||
| 		processer.addBeforeRule(mMATOMaterialCheckRule); | ||||
|         processer.addBeforeRule(mMATOMaterialCheckRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule(); | ||||
| 		processer.addBeforeRule(marperrule); | ||||
|         IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule(); | ||||
|         processer.addBeforeRule(marperrule); | ||||
| 
 | ||||
| 		MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule(); | ||||
| 		processer.addBeforeRule(mMCheckMaterialVirtualRule); | ||||
|         MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule(); | ||||
|         processer.addBeforeRule(mMCheckMaterialVirtualRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule(); | ||||
| 		processer.addBeforeRule(chkrwxisrule); | ||||
|         IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule(); | ||||
|         processer.addBeforeRule(chkrwxisrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub); | ||||
| 		processer.addBeforeRule(chkrule); | ||||
|         IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub); | ||||
|         processer.addBeforeRule(chkrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule(); | ||||
| 		processer.addBeforeRule(fillvaluerule); | ||||
|         IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule(); | ||||
|         processer.addBeforeRule(fillvaluerule); | ||||
| 
 | ||||
| 		processer.addBeforeRule(new PMOSyncPlanmmNumRule()); | ||||
|         processer.addBeforeRule(new PMOSyncPlanmmNumRule()); | ||||
| 
 | ||||
| 		MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule(); | ||||
| 		processer.addBeforeRule(mMRowNoCheckRule); | ||||
|         MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule(); | ||||
|         processer.addBeforeRule(mMRowNoCheckRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule(); | ||||
| 		processer.addBeforeRule(daterule); | ||||
|         IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule(); | ||||
|         processer.addBeforeRule(daterule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule(); | ||||
| 		processer.addBeforeRule(chkPntRule); | ||||
|         IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule(); | ||||
|         processer.addBeforeRule(chkPntRule); | ||||
| 
 | ||||
| 		processer.addBeforeRule(new PMOCheckProdurepointRule()); | ||||
|         processer.addBeforeRule(new PMOCheckProdurepointRule()); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true); | ||||
| 		processer.addBeforeRule(procdatelogicrule); | ||||
|         IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true); | ||||
|         processer.addBeforeRule(procdatelogicrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule(); | ||||
| 		processer.addBeforeRule(proccoderule); | ||||
|         IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule(); | ||||
|         processer.addBeforeRule(proccoderule); | ||||
| 
 | ||||
| 		FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule(); | ||||
| 		processer.addBeforeRule(fieldLengthCheckRule); | ||||
|         FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule(); | ||||
|         processer.addBeforeRule(fieldLengthCheckRule); | ||||
| 
 | ||||
| 		UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>( | ||||
| 				new Class[] { nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class }); | ||||
| 		processer.addBeforeRule(defRule); | ||||
|         UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>( | ||||
|                 new Class[]{nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class}); | ||||
|         processer.addBeforeRule(defRule); | ||||
| 
 | ||||
| 		MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1, | ||||
| 				nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class); | ||||
|         MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1, | ||||
|                 nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class); | ||||
| 
 | ||||
| 		processer.addBeforeRule(prodModeRule); | ||||
|         processer.addBeforeRule(prodModeRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule(); | ||||
| 		processer.addBeforeRule(snCheckRule); | ||||
|         IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule(); | ||||
|         processer.addBeforeRule(snCheckRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> atoCheck = new PMOATOCheckRule(); | ||||
| 		processer.addBeforeRule(atoCheck); | ||||
| 	} | ||||
|         IRule<PMOAggVO> atoCheck = new PMOATOCheckRule(); | ||||
|         processer.addBeforeRule(atoCheck); | ||||
|     } | ||||
| 
 | ||||
| 	private void addAfterRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush, | ||||
| 			List<SnDocParam> updateParams, List<SnDocParam> saveParams) { | ||||
| 		MMBillCodeCheckAndTrantypeRule mMBillCodeCheckAndTrantypeRule = new MMBillCodeCheckAndTrantypeRule("55A2", | ||||
| 				"vbillcode", "pk_group", "pk_org", "vtrantypecode"); | ||||
|     private void addAfterRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush, | ||||
|                               List<SnDocParam> updateParams, List<SnDocParam> saveParams) { | ||||
|         MMBillCodeCheckAndTrantypeRule mMBillCodeCheckAndTrantypeRule = new MMBillCodeCheckAndTrantypeRule("55A2", | ||||
|                 "vbillcode", "pk_group", "pk_org", "vtrantypecode"); | ||||
| 
 | ||||
| 		processer.addAfterRule(mMBillCodeCheckAndTrantypeRule); | ||||
|         processer.addAfterRule(mMBillCodeCheckAndTrantypeRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> duprule = new PMOCheckSCDuplicateRule(); | ||||
| 		processer.addAfterRule(duprule); | ||||
|         IRule<PMOAggVO> duprule = new PMOCheckSCDuplicateRule(); | ||||
|         processer.addAfterRule(duprule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> dmoduprule = new PMOCheckDMODuplicateRule(); | ||||
| 		processer.addAfterRule(dmoduprule); | ||||
|         IRule<PMOAggVO> dmoduprule = new PMOCheckDMODuplicateRule(); | ||||
|         processer.addAfterRule(dmoduprule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> pmorule = new RewriteInsertNum4PMO(); | ||||
| 		processer.addAfterRule(pmorule); | ||||
|         IRule<PMOAggVO> pmorule = new RewriteInsertNum4PMO(); | ||||
|         processer.addAfterRule(pmorule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> rewriteso = new RewriteInsertNum4SO(); | ||||
| 		processer.addAfterRule(rewriteso); | ||||
|         IRule<PMOAggVO> rewriteso = new RewriteInsertNum4SO(); | ||||
|         processer.addAfterRule(rewriteso); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> rewritepsm = new RewriteInsertNum4PSM(); | ||||
| 		processer.addAfterRule(rewritepsm); | ||||
|         IRule<PMOAggVO> rewritepsm = new RewriteInsertNum4PSM(); | ||||
|         processer.addAfterRule(rewritepsm); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> rewritepo = new RewriteInsertNum4MPS(); | ||||
| 		processer.addAfterRule(rewritepo); | ||||
|         IRule<PMOAggVO> rewritepo = new RewriteInsertNum4MPS(); | ||||
|         processer.addAfterRule(rewritepo); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> rewriteto = new RewriteInsertNum4TO(); | ||||
| 		processer.addAfterRule(rewriteto); | ||||
|         IRule<PMOAggVO> rewriteto = new RewriteInsertNum4TO(); | ||||
|         processer.addAfterRule(rewriteto); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> atprule = new PMOATPUpdateRule(false, "55A2"); | ||||
| 		processer.addAfterRule(atprule); | ||||
|         IRule<PMOAggVO> atprule = new PMOATPUpdateRule(false, "55A2"); | ||||
|         processer.addAfterRule(atprule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> snsaverule = new PMOSaveSNWhenInsertRule(updateParams, saveParams); | ||||
| 		processer.addAfterRule(snsaverule); | ||||
|         IRule<PMOAggVO> snsaverule = new PMOSaveSNWhenInsertRule(updateParams, saveParams); | ||||
|         processer.addAfterRule(snsaverule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> createPickmRule = new PMOCreatePickmWhenInsertRule(); | ||||
| 		processer.addAfterRule(createPickmRule); | ||||
|         IRule<PMOAggVO> createPickmRule = new PMOCreatePickmWhenInsertRule(); | ||||
|         processer.addAfterRule(createPickmRule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> saveapproverule = new PMOInsertSaveApproveRule(); | ||||
| 		processer.addAfterRule(saveapproverule); | ||||
| 		// 保存后推送流程生产订单到PLM | ||||
| 		processer.addAfterRule(new AfterApproveSyncPLMRule()); | ||||
| 	} | ||||
|         IRule<PMOAggVO> saveapproverule = new PMOInsertSaveApproveRule(); | ||||
|         processer.addAfterRule(saveapproverule); | ||||
|         // 保存后推送流程生产订单到PLM | ||||
|         processer.addAfterRule(new AfterApproveSyncPLMRule()); | ||||
|     } | ||||
| 
 | ||||
| 	public PMOAggVO[] pushInsert(PMOAggVO[] vos, boolean issub, String pushtype) { | ||||
| 		AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT); | ||||
|     public PMOAggVO[] pushInsert(PMOAggVO[] vos, boolean issub, String pushtype) { | ||||
|         AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT); | ||||
| 
 | ||||
| 		addPushInsertBeforeRules(processer, pushtype); | ||||
| 		processer.before(vos); | ||||
|         addPushInsertBeforeRules(processer, pushtype); | ||||
|         processer.before(vos); | ||||
| 
 | ||||
| 		PMOAggVO[] aggvos = insert(vos, issub, true); | ||||
| 		if ("PSM".equals(pushtype)) { | ||||
| 			PMOAggVO[] cloneVos = (PMOAggVO[]) (new GCBillCloneUtil()).cloneBills(aggvos); | ||||
|         PMOAggVO[] aggvos = insert(vos, issub, true); | ||||
|         if ("PSM".equals(pushtype)) { | ||||
|             PMOAggVO[] cloneVos = (PMOAggVO[]) (new GCBillCloneUtil()).cloneBills(aggvos); | ||||
| 
 | ||||
| 			PMOSplitByTaskDetailsRule createPutPlan = new PMOSplitByTaskDetailsRule(false); | ||||
| 			createPutPlan.process(cloneVos); | ||||
| 		} | ||||
| 		return aggvos; | ||||
| 	} | ||||
|             PMOSplitByTaskDetailsRule createPutPlan = new PMOSplitByTaskDetailsRule(false); | ||||
|             createPutPlan.process(cloneVos); | ||||
|         } | ||||
|         return aggvos; | ||||
|     } | ||||
| 
 | ||||
| 	public void pushInsertSagasCheck(PMOAggVO[] vos, boolean issub, String pushtype) { | ||||
| 		AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT); | ||||
|     public void pushInsertSagasCheck(PMOAggVO[] vos, boolean issub, String pushtype) { | ||||
|         AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT); | ||||
| 
 | ||||
| 		addPushInsertBeforeRules(processer, pushtype); | ||||
| 		processer.before(vos); | ||||
|         addPushInsertBeforeRules(processer, pushtype); | ||||
|         processer.before(vos); | ||||
| 
 | ||||
| 		insertSagasCheck(vos, issub, true); | ||||
| 	} | ||||
|         insertSagasCheck(vos, issub, true); | ||||
|     } | ||||
| 
 | ||||
| 	private void addPushInsertBeforeRules(AroundProcesser<PMOAggVO> processer, String pushtype) { | ||||
| 		IRule<PMOAggVO> versionrule = new PMOFillPushVersionRule(); | ||||
| 		processer.addBeforeRule(versionrule); | ||||
|     private void addPushInsertBeforeRules(AroundProcesser<PMOAggVO> processer, String pushtype) { | ||||
|         IRule<PMOAggVO> versionrule = new PMOFillPushVersionRule(); | ||||
|         processer.addBeforeRule(versionrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> defaultrule = new PMOFillPushDefaultValueRule(); | ||||
| 		processer.addBeforeRule(defaultrule); | ||||
|         IRule<PMOAggVO> defaultrule = new PMOFillPushDefaultValueRule(); | ||||
|         processer.addBeforeRule(defaultrule); | ||||
| 
 | ||||
| 		IRule<PMOAggVO> relationrule = new PMOFillMaterialRelationRule(pushtype); | ||||
| 		processer.addBeforeRule(relationrule); | ||||
| 	} | ||||
|         IRule<PMOAggVO> relationrule = new PMOFillMaterialRelationRule(pushtype); | ||||
|         processer.addBeforeRule(relationrule); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ | |||
| package nc.bs.mmpac.pmo.pac0002.bp; | ||||
| 
 | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterPlanStartTimeChangeRule; | ||||
| import nc.bs.mmpac.pmo.pac0002.bp.rule.BeforePmoWlbzJMRule; | ||||
| import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | @ -249,6 +250,7 @@ public class PMOUpdateBP { | |||
|         processer.addBeforeRule(procedureIRule); | ||||
|         IRule<PMOAggVO> atoCheck = new PMOATOCheckRule(); | ||||
|         processer.addBeforeRule(atoCheck); | ||||
|         processer.addBeforeRule(new BeforePmoWlbzJMRule()); | ||||
|     } | ||||
| 
 | ||||
|     private void addAfterRule(CompareAroundProcesser<PMOAggVO> processer) { | ||||
|  |  | |||
|  | @ -0,0 +1,106 @@ | |||
| package nc.bs.mmpac.pmo.pac0002.bp.rule; | ||||
| 
 | ||||
| import nc.bs.dao.DAOException; | ||||
| import nc.bs.logging.Log; | ||||
| import nc.bs.trade.business.HYSuperDMO; | ||||
| import nc.bs.uapbd.util.MyHelper; | ||||
| import nc.impl.pubapp.pattern.rule.IRule; | ||||
| import nc.util.mmf.framework.base.MMValueCheck; | ||||
| import nc.vo.am.common.util.StringUtils; | ||||
| import nc.vo.bd.defdoc.DefdocVO; | ||||
| import nc.vo.bd.material.stock.MaterialStockVO; | ||||
| 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.FactoryVO; | ||||
| import nc.vo.pub.BusinessException; | ||||
| import nc.vo.pubapp.pattern.exception.ExceptionUtils; | ||||
| 
 | ||||
| import java.util.HashSet; | ||||
| import java.util.Map; | ||||
| import java.util.Set; | ||||
| 
 | ||||
| /** | ||||
|  * 流程生产订单保存前校验物料类型是否一致-精密铸造 | ||||
|  * | ||||
|  * @author mzr | ||||
|  * @date 2025/10/20 | ||||
|  */ | ||||
| public class BeforePmoWlbzJMRule implements IRule<PMOAggVO> { | ||||
|     private static final String LOG_INFO_NAME = "qyMesLog"; | ||||
|     private static final Log logger = Log.getInstance(LOG_INFO_NAME); | ||||
| 
 | ||||
|     @Override | ||||
|     public void process(PMOAggVO[] vos) { | ||||
|         try { | ||||
|             Map<String, String> configParams = MyHelper.getConfigParams("jm-config", null); | ||||
|             if (configParams.isEmpty()) { | ||||
|                 return; | ||||
|             } | ||||
|             for (PMOAggVO vo : vos) { | ||||
|                 PMOHeadVO headVO = vo.getParentVO(); | ||||
|                 String pkOrg = headVO.getPk_org(); | ||||
| 
 | ||||
|                 String orgCode = MyHelper.getStrValByCondition(FactoryVO.getDefaultTableName(), FactoryVO.CODE, | ||||
|                         FactoryVO.PK_FACTORY + " = '" + pkOrg + "'"); | ||||
|                 // 只有精密公司才校验 | ||||
|                 if (checkIfOrg(orgCode, configParams)) { | ||||
|                     continue; | ||||
|                 } | ||||
|                 PMOItemVO[] pmoItemVOS = vo.getChildrenVO(); | ||||
|                 if (pmoItemVOS != null && pmoItemVOS.length > 1) { | ||||
|                     // 如果明细超过1行,根据物料档案库存信息自定义项3 精密物料标志字段进行区分,同一个生产订单明细中不能存在不同的类型 | ||||
|                     Set<String> materialTypeSet = new HashSet<>(); | ||||
|                     for (PMOItemVO pmoItemVO : pmoItemVOS) { | ||||
|                         // 物料ID | ||||
|                         String cmaterialvid = pmoItemVO.getCmaterialvid(); | ||||
|                         String wlbzId = MyHelper.getStrValByCondition(MaterialStockVO.getDefaultTableName(), MaterialStockVO.DEF3, | ||||
|                                 MaterialStockVO.PK_MATERIAL + " = '" + cmaterialvid + "' and pk_org = '" + pkOrg + "'"); | ||||
|                         String defName = getDefName("zdy-jmzz001", wlbzId); | ||||
|                         if (MMValueCheck.isNotEmpty(defName)) { | ||||
|                             materialTypeSet.add(defName); | ||||
|                         } | ||||
|                     } | ||||
|                     if (materialTypeSet.size() > 1) { | ||||
|                         ExceptionUtils.wrappBusinessException("生产订单明细中存在不同类型物料,请检查"); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } catch (BusinessException e) { | ||||
|             logger.error("BeforePmoMaterialTypeJMRule-exp:" + e.getMessage(), e); | ||||
|             ExceptionUtils.wrappException(e); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private boolean checkIfOrg(String code, Map<String, String> configParams) throws BusinessException { | ||||
|         String targetCode = configParams.get("jmOrg"); | ||||
|         if (targetCode == null || StringUtils.isEmpty(targetCode)) { | ||||
|             throw new BusinessException("未配置组织参数"); | ||||
|         } | ||||
|         String[] orgItem = targetCode.split(","); | ||||
|         for (String orgCode : orgItem) { | ||||
|             if (!orgCode.isEmpty() && orgCode.equals(code)) { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 获取自定义项信息 | ||||
|      */ | ||||
|     private String getDefName(String code, String pk_defdoc) { | ||||
|         String res = ""; | ||||
|         String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='" + code + "' and dr=0 )  and dr = 0 and pk_defdoc = '" + pk_defdoc + "'"; | ||||
|         try { | ||||
|             DefdocVO[] defdocVOs = (DefdocVO[]) new HYSuperDMO().queryByWhereClause(DefdocVO.class, strWhere); | ||||
|             if (defdocVOs != null && defdocVOs.length > 0) { | ||||
|                 res = defdocVOs[0].getName().trim(); | ||||
|             } | ||||
|         } catch (DAOException e) { | ||||
|             logger.error("BeforePmoMaterialTypeJMRule-error,getDefName[" + e.getMessage() + "]"); | ||||
|         } | ||||
|         return res; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue