diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOInsertBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOInsertBP.java index defc1866..902ef2ba 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOInsertBP.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOInsertBP.java @@ -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 processer = new AroundProcesser(PMOPluginPoint.INSERT); - List updateParams = new ArrayList(); - List saveParams = new ArrayList(); + public PMOAggVO[] insert(PMOAggVO[] bills, boolean issub, boolean isPush) { + AroundProcesser processer = new AroundProcesser(PMOPluginPoint.INSERT); + List updateParams = new ArrayList(); + List saveParams = new ArrayList(); - addBeforeRule(processer, issub, isPush, updateParams, saveParams); + addBeforeRule(processer, issub, isPush, updateParams, saveParams); - addAfterRule(processer, issub, isPush, updateParams, saveParams); - GCBillInsert bo = new GCBillInsert(); - PMOAggVO[] aggvos = (PMOAggVO[]) processer.before(bills); - PMOAggVO[] newvos = (PMOAggVO[]) bo.insert(aggvos); + addAfterRule(processer, issub, isPush, updateParams, saveParams); + GCBillInsert bo = new GCBillInsert(); + 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 bp = new GCInsertBPTemplate(PMOPluginPoint.INSERT); + public void insertSagasCheck(PMOAggVO[] bills, boolean issub, boolean isPush) { + GCInsertBPTemplate bp = new GCInsertBPTemplate(PMOPluginPoint.INSERT); - addBeforeRuleSagasCheck(bp.getAroundProcesser(), issub, isPush); - bp.getAroundProcesser().before(bills); - } + addBeforeRuleSagasCheck(bp.getAroundProcesser(), issub, isPush); + bp.getAroundProcesser().before(bills); + } - private void addBeforeRule(AroundProcesser processer, boolean issub, boolean isPush, - List updateParams, List saveParams) { - IRule materialIsEnableRule = new CheckMaterialIsEnableRule(); - processer.addBeforeRule(materialIsEnableRule); + private void addBeforeRule(AroundProcesser processer, boolean issub, boolean isPush, + List updateParams, List saveParams) { + IRule 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 marperrule = new PMOCheckMaterialPermissionRule(); - processer.addBeforeRule(marperrule); + IRule marperrule = new PMOCheckMaterialPermissionRule(); + processer.addBeforeRule(marperrule); - MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule(); - processer.addBeforeRule(mMCheckMaterialVirtualRule); + MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule(); + processer.addBeforeRule(mMCheckMaterialVirtualRule); - IRule chkrwxisrule = new PMOCheckNrwxisLogicRule(); - processer.addBeforeRule(chkrwxisrule); + IRule chkrwxisrule = new PMOCheckNrwxisLogicRule(); + processer.addBeforeRule(chkrwxisrule); - IRule chkrule = new PMOCheckSaveNotNullRule(issub); - processer.addBeforeRule(chkrule); + IRule chkrule = new PMOCheckSaveNotNullRule(issub); + processer.addBeforeRule(chkrule); - IRule fillvaluerule = new PMOFillInsertDefaultValueRule(); - processer.addBeforeRule(fillvaluerule); + IRule 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 scrapAddrule = new PMOCheckParentStatusRule(); - processer.addBeforeRule(scrapAddrule); + IRule scrapAddrule = new PMOCheckParentStatusRule(); + processer.addBeforeRule(scrapAddrule); - IRule snDuprule = new PMOSNDupCheckRule(); - processer.addBeforeRule(snDuprule); + IRule snDuprule = new PMOSNDupCheckRule(); + processer.addBeforeRule(snDuprule); - IRule outputrule = new PMOCreatePlanOutputRule(); - processer.addBeforeRule(outputrule); + IRule outputrule = new PMOCreatePlanOutputRule(); + processer.addBeforeRule(outputrule); - IRule procedurerule = new PMOCreateProcedureRule(isPush); - processer.addBeforeRule(procedurerule); + IRule procedurerule = new PMOCreateProcedureRule(isPush); + processer.addBeforeRule(procedurerule); - IRule filltimeprocedurerule = new PMOFillInsertPlanTimeByProcedureRule(); - processer.addBeforeRule(filltimeprocedurerule); + IRule filltimeprocedurerule = new PMOFillInsertPlanTimeByProcedureRule(); + processer.addBeforeRule(filltimeprocedurerule); - IRule daterule = new PMOCheckDateLogicRule(); - processer.addBeforeRule(daterule); + IRule daterule = new PMOCheckDateLogicRule(); + processer.addBeforeRule(daterule); - IRule chkPntRule = new PMOProcedureChkPntRule(); - processer.addBeforeRule(chkPntRule); + IRule chkPntRule = new PMOProcedureChkPntRule(); + processer.addBeforeRule(chkPntRule); - processer.addBeforeRule(new PMOCheckProdurepointRule()); + processer.addBeforeRule(new PMOCheckProdurepointRule()); - IRule procdatelogicrule = new PMOCheckProcedureDateLogicRule(true); - processer.addBeforeRule(procdatelogicrule); + IRule procdatelogicrule = new PMOCheckProcedureDateLogicRule(true); + processer.addBeforeRule(procdatelogicrule); - IRule proccoderule = new PMOCheckProcedureDupRule(); - processer.addBeforeRule(proccoderule); + IRule proccoderule = new PMOCheckProcedureDupRule(); + processer.addBeforeRule(proccoderule); - IRule procPscCheckRule = new PMOCheckProcedurePSCRule(); - processer.addBeforeRule(procPscCheckRule); + IRule procPscCheckRule = new PMOCheckProcedurePSCRule(); + processer.addBeforeRule(procPscCheckRule); - FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule(); - processer.addBeforeRule(fieldLengthCheckRule); + FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule(); + processer.addBeforeRule(fieldLengthCheckRule); - UserDefSaveRule defRule = new UserDefSaveRule( - new Class[] { nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class }); - processer.addBeforeRule(defRule); + UserDefSaveRule defRule = new UserDefSaveRule( + new Class[]{nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class}); + processer.addBeforeRule(defRule); - MMCheckMaterialProdModeRule prodModeRule = new MMCheckMaterialProdModeRule(1, - nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class); + MMCheckMaterialProdModeRule prodModeRule = new MMCheckMaterialProdModeRule(1, + nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class); - processer.addBeforeRule(prodModeRule); + processer.addBeforeRule(prodModeRule); - IRule rewriteReviceRule = new RewriteInsertNum4PSCRecive(); - processer.addBeforeRule(rewriteReviceRule); + IRule rewriteReviceRule = new RewriteInsertNum4PSCRecive(); + processer.addBeforeRule(rewriteReviceRule); - IRule wrMarkRule = new PMOMarkWrSNWhenInsertRule(); - processer.addBeforeRule(wrMarkRule); + IRule wrMarkRule = new PMOMarkWrSNWhenInsertRule(); + processer.addBeforeRule(wrMarkRule); - IRule atprule = new PMOATPUpdateRule(true, "55A2"); - processer.addBeforeRule(atprule); + IRule atprule = new PMOATPUpdateRule(true, "55A2"); + processer.addBeforeRule(atprule); - IRule rewritewr = new RewriteInsertNum4Renovate(); - processer.addBeforeRule(rewritewr); + IRule rewritewr = new RewriteInsertNum4Renovate(); + processer.addBeforeRule(rewritewr); - IRule rewritesfc = new RewriteInsertNum4SFC(); - processer.addBeforeRule(rewritesfc); + IRule 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 fillfirstInfo = new PMOFillFirstMOInfoRule(); - processer.addBeforeRule(fillfirstInfo); + IRule fillfirstInfo = new PMOFillFirstMOInfoRule(); + processer.addBeforeRule(fillfirstInfo); - IRule fillbatchvaluerule = new PMOFillInsertBatchValueRule(); - processer.addBeforeRule(fillbatchvaluerule); + IRule fillbatchvaluerule = new PMOFillInsertBatchValueRule(); + processer.addBeforeRule(fillbatchvaluerule); - IRule batchcodeRule = new PMOFillBatchCodeRule(); - processer.addBeforeRule(batchcodeRule); + IRule batchcodeRule = new PMOFillBatchCodeRule(); + processer.addBeforeRule(batchcodeRule); - PMOCffileidInserAndUpdatetRule cffileidRule = new PMOCffileidInserAndUpdatetRule(); - processer.addBeforeRule(cffileidRule); + PMOCffileidInserAndUpdatetRule cffileidRule = new PMOCffileidInserAndUpdatetRule(); + processer.addBeforeRule(cffileidRule); - IRule snCheckRule = new PMOCheckSNNumAndUnitRule(); - processer.addBeforeRule(snCheckRule); + IRule snCheckRule = new PMOCheckSNNumAndUnitRule(); + processer.addBeforeRule(snCheckRule); - IRule snRule = new PMOFillSNPkAndCodeRule(); - processer.addBeforeRule(snRule); + IRule snRule = new PMOFillSNPkAndCodeRule(); + processer.addBeforeRule(snRule); - IRule snSyncRule = new PMOSyncSNWhenInsertRule(updateParams, saveParams); - processer.addBeforeRule(snSyncRule); + IRule snSyncRule = new PMOSyncSNWhenInsertRule(updateParams, saveParams); + processer.addBeforeRule(snSyncRule); - IRule checkCinwarehouseidRule = new PMOCheckCinwarehouseidRule(); - processer.addBeforeRule(checkCinwarehouseidRule); + IRule checkCinwarehouseidRule = new PMOCheckCinwarehouseidRule(); + processer.addBeforeRule(checkCinwarehouseidRule); - IRule atoCheck = new PMOATOCheckRule(); - processer.addBeforeRule(atoCheck); + IRule atoCheck = new PMOATOCheckRule(); + processer.addBeforeRule(atoCheck); - IRule procedureIRule = new PMOCheckProcedureratioRule(); - processer.addBeforeRule(procedureIRule); - - IRule saveBeforeCheckRule = new saveBeforeCheckRule(); + IRule procedureIRule = new PMOCheckProcedureratioRule(); + processer.addBeforeRule(procedureIRule); + + IRule saveBeforeCheckRule = new saveBeforeCheckRule(); processer.addBeforeRule(saveBeforeCheckRule); - processer.addBeforeRule(new BeforePmoBomRule()); - } + processer.addBeforeRule(new BeforePmoWlbzJMRule()); + processer.addBeforeRule(new BeforePmoBomRule()); + } - private void addBeforeRuleSagasCheck(AroundProcesser processer, boolean issub, boolean isPush) { - OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000"); - processer.addBeforeRule(orgDisabledCheckRule); + private void addBeforeRuleSagasCheck(AroundProcesser 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 marperrule = new PMOCheckMaterialPermissionRule(); - processer.addBeforeRule(marperrule); + IRule marperrule = new PMOCheckMaterialPermissionRule(); + processer.addBeforeRule(marperrule); - MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule(); - processer.addBeforeRule(mMCheckMaterialVirtualRule); + MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule(); + processer.addBeforeRule(mMCheckMaterialVirtualRule); - IRule chkrwxisrule = new PMOCheckNrwxisLogicRule(); - processer.addBeforeRule(chkrwxisrule); + IRule chkrwxisrule = new PMOCheckNrwxisLogicRule(); + processer.addBeforeRule(chkrwxisrule); - IRule chkrule = new PMOCheckSaveNotNullRule(issub); - processer.addBeforeRule(chkrule); + IRule chkrule = new PMOCheckSaveNotNullRule(issub); + processer.addBeforeRule(chkrule); - IRule fillvaluerule = new PMOFillInsertDefaultValueRule(); - processer.addBeforeRule(fillvaluerule); + IRule 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 daterule = new PMOCheckDateLogicRule(); - processer.addBeforeRule(daterule); + IRule daterule = new PMOCheckDateLogicRule(); + processer.addBeforeRule(daterule); - IRule chkPntRule = new PMOProcedureChkPntRule(); - processer.addBeforeRule(chkPntRule); + IRule chkPntRule = new PMOProcedureChkPntRule(); + processer.addBeforeRule(chkPntRule); - processer.addBeforeRule(new PMOCheckProdurepointRule()); + processer.addBeforeRule(new PMOCheckProdurepointRule()); - IRule procdatelogicrule = new PMOCheckProcedureDateLogicRule(true); - processer.addBeforeRule(procdatelogicrule); + IRule procdatelogicrule = new PMOCheckProcedureDateLogicRule(true); + processer.addBeforeRule(procdatelogicrule); - IRule proccoderule = new PMOCheckProcedureDupRule(); - processer.addBeforeRule(proccoderule); + IRule proccoderule = new PMOCheckProcedureDupRule(); + processer.addBeforeRule(proccoderule); - FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule(); - processer.addBeforeRule(fieldLengthCheckRule); + FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule(); + processer.addBeforeRule(fieldLengthCheckRule); - UserDefSaveRule defRule = new UserDefSaveRule( - new Class[] { nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class }); - processer.addBeforeRule(defRule); + UserDefSaveRule defRule = new UserDefSaveRule( + new Class[]{nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class}); + processer.addBeforeRule(defRule); - MMCheckMaterialProdModeRule prodModeRule = new MMCheckMaterialProdModeRule(1, - nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class); + MMCheckMaterialProdModeRule prodModeRule = new MMCheckMaterialProdModeRule(1, + nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class); - processer.addBeforeRule(prodModeRule); + processer.addBeforeRule(prodModeRule); - IRule snCheckRule = new PMOCheckSNNumAndUnitRule(); - processer.addBeforeRule(snCheckRule); + IRule snCheckRule = new PMOCheckSNNumAndUnitRule(); + processer.addBeforeRule(snCheckRule); - IRule atoCheck = new PMOATOCheckRule(); - processer.addBeforeRule(atoCheck); - } + IRule atoCheck = new PMOATOCheckRule(); + processer.addBeforeRule(atoCheck); + } - private void addAfterRule(AroundProcesser processer, boolean issub, boolean isPush, - List updateParams, List saveParams) { - MMBillCodeCheckAndTrantypeRule mMBillCodeCheckAndTrantypeRule = new MMBillCodeCheckAndTrantypeRule("55A2", - "vbillcode", "pk_group", "pk_org", "vtrantypecode"); + private void addAfterRule(AroundProcesser processer, boolean issub, boolean isPush, + List updateParams, List saveParams) { + MMBillCodeCheckAndTrantypeRule mMBillCodeCheckAndTrantypeRule = new MMBillCodeCheckAndTrantypeRule("55A2", + "vbillcode", "pk_group", "pk_org", "vtrantypecode"); - processer.addAfterRule(mMBillCodeCheckAndTrantypeRule); + processer.addAfterRule(mMBillCodeCheckAndTrantypeRule); - IRule duprule = new PMOCheckSCDuplicateRule(); - processer.addAfterRule(duprule); + IRule duprule = new PMOCheckSCDuplicateRule(); + processer.addAfterRule(duprule); - IRule dmoduprule = new PMOCheckDMODuplicateRule(); - processer.addAfterRule(dmoduprule); + IRule dmoduprule = new PMOCheckDMODuplicateRule(); + processer.addAfterRule(dmoduprule); - IRule pmorule = new RewriteInsertNum4PMO(); - processer.addAfterRule(pmorule); + IRule pmorule = new RewriteInsertNum4PMO(); + processer.addAfterRule(pmorule); - IRule rewriteso = new RewriteInsertNum4SO(); - processer.addAfterRule(rewriteso); + IRule rewriteso = new RewriteInsertNum4SO(); + processer.addAfterRule(rewriteso); - IRule rewritepsm = new RewriteInsertNum4PSM(); - processer.addAfterRule(rewritepsm); + IRule rewritepsm = new RewriteInsertNum4PSM(); + processer.addAfterRule(rewritepsm); - IRule rewritepo = new RewriteInsertNum4MPS(); - processer.addAfterRule(rewritepo); + IRule rewritepo = new RewriteInsertNum4MPS(); + processer.addAfterRule(rewritepo); - IRule rewriteto = new RewriteInsertNum4TO(); - processer.addAfterRule(rewriteto); + IRule rewriteto = new RewriteInsertNum4TO(); + processer.addAfterRule(rewriteto); - IRule atprule = new PMOATPUpdateRule(false, "55A2"); - processer.addAfterRule(atprule); + IRule atprule = new PMOATPUpdateRule(false, "55A2"); + processer.addAfterRule(atprule); - IRule snsaverule = new PMOSaveSNWhenInsertRule(updateParams, saveParams); - processer.addAfterRule(snsaverule); + IRule snsaverule = new PMOSaveSNWhenInsertRule(updateParams, saveParams); + processer.addAfterRule(snsaverule); - IRule createPickmRule = new PMOCreatePickmWhenInsertRule(); - processer.addAfterRule(createPickmRule); + IRule createPickmRule = new PMOCreatePickmWhenInsertRule(); + processer.addAfterRule(createPickmRule); - IRule saveapproverule = new PMOInsertSaveApproveRule(); - processer.addAfterRule(saveapproverule); - // 保存后推送流程生产订单到PLM - processer.addAfterRule(new AfterApproveSyncPLMRule()); - } + IRule saveapproverule = new PMOInsertSaveApproveRule(); + processer.addAfterRule(saveapproverule); + // 保存后推送流程生产订单到PLM + processer.addAfterRule(new AfterApproveSyncPLMRule()); + } - public PMOAggVO[] pushInsert(PMOAggVO[] vos, boolean issub, String pushtype) { - AroundProcesser processer = new AroundProcesser(PMOPluginPoint.PUSHINSERT); + public PMOAggVO[] pushInsert(PMOAggVO[] vos, boolean issub, String pushtype) { + AroundProcesser processer = new AroundProcesser(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 processer = new AroundProcesser(PMOPluginPoint.PUSHINSERT); + public void pushInsertSagasCheck(PMOAggVO[] vos, boolean issub, String pushtype) { + AroundProcesser processer = new AroundProcesser(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 processer, String pushtype) { - IRule versionrule = new PMOFillPushVersionRule(); - processer.addBeforeRule(versionrule); + private void addPushInsertBeforeRules(AroundProcesser processer, String pushtype) { + IRule versionrule = new PMOFillPushVersionRule(); + processer.addBeforeRule(versionrule); - IRule defaultrule = new PMOFillPushDefaultValueRule(); - processer.addBeforeRule(defaultrule); + IRule defaultrule = new PMOFillPushDefaultValueRule(); + processer.addBeforeRule(defaultrule); - IRule relationrule = new PMOFillMaterialRelationRule(pushtype); - processer.addBeforeRule(relationrule); - } + IRule relationrule = new PMOFillMaterialRelationRule(pushtype); + processer.addBeforeRule(relationrule); + } } diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOUpdateBP.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOUpdateBP.java index 273365fe..4a3ee5d3 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOUpdateBP.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/PMOUpdateBP.java @@ -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 atoCheck = new PMOATOCheckRule(); processer.addBeforeRule(atoCheck); + processer.addBeforeRule(new BeforePmoWlbzJMRule()); } private void addAfterRule(CompareAroundProcesser processer) { diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoWlbzJMRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoWlbzJMRule.java new file mode 100644 index 00000000..c25f264e --- /dev/null +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoWlbzJMRule.java @@ -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 { + 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 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 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 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; + } + +}