流程生产订单保存前校验物料类型是否一致-精密铸造
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.AfterApproveSyncPLMRule;
|
||||||
import nc.bs.mmpac.pmo.pac0002.bp.rule.BeforePmoBomRule;
|
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.bp.rule.saveBeforeCheckRule;
|
||||||
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
|
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
|
||||||
import nc.bs.mmpac.pmo.pac0002.rule.*;
|
import nc.bs.mmpac.pmo.pac0002.rule.*;
|
||||||
|
|
@ -32,315 +33,316 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class PMOInsertBP {
|
public class PMOInsertBP {
|
||||||
public PMOAggVO[] insert(PMOAggVO[] bills, boolean issub, boolean isPush) {
|
public PMOAggVO[] insert(PMOAggVO[] bills, boolean issub, boolean isPush) {
|
||||||
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.INSERT);
|
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.INSERT);
|
||||||
List<SnDocParam> updateParams = new ArrayList<SnDocParam>();
|
List<SnDocParam> updateParams = new ArrayList<SnDocParam>();
|
||||||
List<SnDocParam> saveParams = 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);
|
addAfterRule(processer, issub, isPush, updateParams, saveParams);
|
||||||
GCBillInsert<PMOAggVO> bo = new GCBillInsert<PMOAggVO>();
|
GCBillInsert<PMOAggVO> bo = new GCBillInsert<PMOAggVO>();
|
||||||
PMOAggVO[] aggvos = (PMOAggVO[]) processer.before(bills);
|
PMOAggVO[] aggvos = (PMOAggVO[]) processer.before(bills);
|
||||||
PMOAggVO[] newvos = (PMOAggVO[]) bo.insert(aggvos);
|
PMOAggVO[] newvos = (PMOAggVO[]) bo.insert(aggvos);
|
||||||
|
|
||||||
PmoSagaUtil.addSagaAndCompensate4Insert(newvos);
|
PmoSagaUtil.addSagaAndCompensate4Insert(newvos);
|
||||||
return (PMOAggVO[]) processer.after(newvos);
|
return (PMOAggVO[]) processer.after(newvos);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void insertSagasCheck(PMOAggVO[] bills, boolean issub, boolean isPush) {
|
public void insertSagasCheck(PMOAggVO[] bills, boolean issub, boolean isPush) {
|
||||||
GCInsertBPTemplate<PMOAggVO> bp = new GCInsertBPTemplate<PMOAggVO>(PMOPluginPoint.INSERT);
|
GCInsertBPTemplate<PMOAggVO> bp = new GCInsertBPTemplate<PMOAggVO>(PMOPluginPoint.INSERT);
|
||||||
|
|
||||||
addBeforeRuleSagasCheck(bp.getAroundProcesser(), issub, isPush);
|
addBeforeRuleSagasCheck(bp.getAroundProcesser(), issub, isPush);
|
||||||
bp.getAroundProcesser().before(bills);
|
bp.getAroundProcesser().before(bills);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addBeforeRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush,
|
private void addBeforeRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush,
|
||||||
List<SnDocParam> updateParams, List<SnDocParam> saveParams) {
|
List<SnDocParam> updateParams, List<SnDocParam> saveParams) {
|
||||||
IRule<PMOAggVO> materialIsEnableRule = new CheckMaterialIsEnableRule();
|
IRule<PMOAggVO> materialIsEnableRule = new CheckMaterialIsEnableRule();
|
||||||
processer.addBeforeRule(materialIsEnableRule);
|
processer.addBeforeRule(materialIsEnableRule);
|
||||||
|
|
||||||
OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
|
OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
|
||||||
processer.addBeforeRule(orgDisabledCheckRule);
|
processer.addBeforeRule(orgDisabledCheckRule);
|
||||||
|
|
||||||
FillInsertDataRule fillInsertDataRule = new FillInsertDataRule();
|
FillInsertDataRule fillInsertDataRule = new FillInsertDataRule();
|
||||||
processer.addBeforeRule(fillInsertDataRule);
|
processer.addBeforeRule(fillInsertDataRule);
|
||||||
|
|
||||||
MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode");
|
MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode");
|
||||||
processer.addBeforeRule(mMBillTypeIsLockCheckRule);
|
processer.addBeforeRule(mMBillTypeIsLockCheckRule);
|
||||||
|
|
||||||
MMAutoMaterialAssignRule mMAutoMaterialAssignRule = new MMAutoMaterialAssignRule(null, "cmaterialvid",
|
MMAutoMaterialAssignRule mMAutoMaterialAssignRule = new MMAutoMaterialAssignRule(null, "cmaterialvid",
|
||||||
new String[] { "pk_org", "cplanfactoryid" }, null);
|
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();
|
IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule();
|
||||||
processer.addBeforeRule(marperrule);
|
processer.addBeforeRule(marperrule);
|
||||||
|
|
||||||
MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule();
|
MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule();
|
||||||
processer.addBeforeRule(mMCheckMaterialVirtualRule);
|
processer.addBeforeRule(mMCheckMaterialVirtualRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule();
|
IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule();
|
||||||
processer.addBeforeRule(chkrwxisrule);
|
processer.addBeforeRule(chkrwxisrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub);
|
IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub);
|
||||||
processer.addBeforeRule(chkrule);
|
processer.addBeforeRule(chkrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule();
|
IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule();
|
||||||
processer.addBeforeRule(fillvaluerule);
|
processer.addBeforeRule(fillvaluerule);
|
||||||
|
|
||||||
processer.addBeforeRule(new PMOSyncPlanmmNumRule());
|
processer.addBeforeRule(new PMOSyncPlanmmNumRule());
|
||||||
|
|
||||||
MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule();
|
MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule();
|
||||||
processer.addBeforeRule(mMRowNoCheckRule);
|
processer.addBeforeRule(mMRowNoCheckRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> scrapAddrule = new PMOCheckParentStatusRule();
|
IRule<PMOAggVO> scrapAddrule = new PMOCheckParentStatusRule();
|
||||||
processer.addBeforeRule(scrapAddrule);
|
processer.addBeforeRule(scrapAddrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> snDuprule = new PMOSNDupCheckRule();
|
IRule<PMOAggVO> snDuprule = new PMOSNDupCheckRule();
|
||||||
processer.addBeforeRule(snDuprule);
|
processer.addBeforeRule(snDuprule);
|
||||||
|
|
||||||
IRule<PMOAggVO> outputrule = new PMOCreatePlanOutputRule();
|
IRule<PMOAggVO> outputrule = new PMOCreatePlanOutputRule();
|
||||||
processer.addBeforeRule(outputrule);
|
processer.addBeforeRule(outputrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> procedurerule = new PMOCreateProcedureRule(isPush);
|
IRule<PMOAggVO> procedurerule = new PMOCreateProcedureRule(isPush);
|
||||||
processer.addBeforeRule(procedurerule);
|
processer.addBeforeRule(procedurerule);
|
||||||
|
|
||||||
IRule<PMOAggVO> filltimeprocedurerule = new PMOFillInsertPlanTimeByProcedureRule();
|
IRule<PMOAggVO> filltimeprocedurerule = new PMOFillInsertPlanTimeByProcedureRule();
|
||||||
processer.addBeforeRule(filltimeprocedurerule);
|
processer.addBeforeRule(filltimeprocedurerule);
|
||||||
|
|
||||||
IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule();
|
IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule();
|
||||||
processer.addBeforeRule(daterule);
|
processer.addBeforeRule(daterule);
|
||||||
|
|
||||||
IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule();
|
IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule();
|
||||||
processer.addBeforeRule(chkPntRule);
|
processer.addBeforeRule(chkPntRule);
|
||||||
|
|
||||||
processer.addBeforeRule(new PMOCheckProdurepointRule());
|
processer.addBeforeRule(new PMOCheckProdurepointRule());
|
||||||
|
|
||||||
IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true);
|
IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true);
|
||||||
processer.addBeforeRule(procdatelogicrule);
|
processer.addBeforeRule(procdatelogicrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule();
|
IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule();
|
||||||
processer.addBeforeRule(proccoderule);
|
processer.addBeforeRule(proccoderule);
|
||||||
|
|
||||||
IRule<PMOAggVO> procPscCheckRule = new PMOCheckProcedurePSCRule();
|
IRule<PMOAggVO> procPscCheckRule = new PMOCheckProcedurePSCRule();
|
||||||
processer.addBeforeRule(procPscCheckRule);
|
processer.addBeforeRule(procPscCheckRule);
|
||||||
|
|
||||||
FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule();
|
FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule();
|
||||||
processer.addBeforeRule(fieldLengthCheckRule);
|
processer.addBeforeRule(fieldLengthCheckRule);
|
||||||
|
|
||||||
UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>(
|
UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>(
|
||||||
new Class[] { nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class });
|
new Class[]{nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class});
|
||||||
processer.addBeforeRule(defRule);
|
processer.addBeforeRule(defRule);
|
||||||
|
|
||||||
MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1,
|
MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1,
|
||||||
nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class);
|
nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class);
|
||||||
|
|
||||||
processer.addBeforeRule(prodModeRule);
|
processer.addBeforeRule(prodModeRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> rewriteReviceRule = new RewriteInsertNum4PSCRecive();
|
IRule<PMOAggVO> rewriteReviceRule = new RewriteInsertNum4PSCRecive();
|
||||||
processer.addBeforeRule(rewriteReviceRule);
|
processer.addBeforeRule(rewriteReviceRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> wrMarkRule = new PMOMarkWrSNWhenInsertRule();
|
IRule<PMOAggVO> wrMarkRule = new PMOMarkWrSNWhenInsertRule();
|
||||||
processer.addBeforeRule(wrMarkRule);
|
processer.addBeforeRule(wrMarkRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> atprule = new PMOATPUpdateRule(true, "55A2");
|
IRule<PMOAggVO> atprule = new PMOATPUpdateRule(true, "55A2");
|
||||||
processer.addBeforeRule(atprule);
|
processer.addBeforeRule(atprule);
|
||||||
|
|
||||||
IRule<PMOAggVO> rewritewr = new RewriteInsertNum4Renovate();
|
IRule<PMOAggVO> rewritewr = new RewriteInsertNum4Renovate();
|
||||||
processer.addBeforeRule(rewritewr);
|
processer.addBeforeRule(rewritewr);
|
||||||
|
|
||||||
IRule<PMOAggVO> rewritesfc = new RewriteInsertNum4SFC();
|
IRule<PMOAggVO> rewritesfc = new RewriteInsertNum4SFC();
|
||||||
processer.addBeforeRule(rewritesfc);
|
processer.addBeforeRule(rewritesfc);
|
||||||
|
|
||||||
MMCreateBillcodeAndTrantypecodeRule mMCreateBillcodeAndTrantypecodeRule = new MMCreateBillcodeAndTrantypecodeRule(
|
MMCreateBillcodeAndTrantypecodeRule mMCreateBillcodeAndTrantypecodeRule = new MMCreateBillcodeAndTrantypecodeRule(
|
||||||
"55A2", "vbillcode", "pk_group", "pk_org", "vtrantypecode");
|
"55A2", "vbillcode", "pk_group", "pk_org", "vtrantypecode");
|
||||||
|
|
||||||
processer.addBeforeRule(mMCreateBillcodeAndTrantypecodeRule);
|
processer.addBeforeRule(mMCreateBillcodeAndTrantypecodeRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> fillfirstInfo = new PMOFillFirstMOInfoRule();
|
IRule<PMOAggVO> fillfirstInfo = new PMOFillFirstMOInfoRule();
|
||||||
processer.addBeforeRule(fillfirstInfo);
|
processer.addBeforeRule(fillfirstInfo);
|
||||||
|
|
||||||
IRule<PMOAggVO> fillbatchvaluerule = new PMOFillInsertBatchValueRule();
|
IRule<PMOAggVO> fillbatchvaluerule = new PMOFillInsertBatchValueRule();
|
||||||
processer.addBeforeRule(fillbatchvaluerule);
|
processer.addBeforeRule(fillbatchvaluerule);
|
||||||
|
|
||||||
IRule<PMOAggVO> batchcodeRule = new PMOFillBatchCodeRule();
|
IRule<PMOAggVO> batchcodeRule = new PMOFillBatchCodeRule();
|
||||||
processer.addBeforeRule(batchcodeRule);
|
processer.addBeforeRule(batchcodeRule);
|
||||||
|
|
||||||
PMOCffileidInserAndUpdatetRule cffileidRule = new PMOCffileidInserAndUpdatetRule();
|
PMOCffileidInserAndUpdatetRule cffileidRule = new PMOCffileidInserAndUpdatetRule();
|
||||||
processer.addBeforeRule(cffileidRule);
|
processer.addBeforeRule(cffileidRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule();
|
IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule();
|
||||||
processer.addBeforeRule(snCheckRule);
|
processer.addBeforeRule(snCheckRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> snRule = new PMOFillSNPkAndCodeRule();
|
IRule<PMOAggVO> snRule = new PMOFillSNPkAndCodeRule();
|
||||||
processer.addBeforeRule(snRule);
|
processer.addBeforeRule(snRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> snSyncRule = new PMOSyncSNWhenInsertRule(updateParams, saveParams);
|
IRule<PMOAggVO> snSyncRule = new PMOSyncSNWhenInsertRule(updateParams, saveParams);
|
||||||
processer.addBeforeRule(snSyncRule);
|
processer.addBeforeRule(snSyncRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> checkCinwarehouseidRule = new PMOCheckCinwarehouseidRule();
|
IRule<PMOAggVO> checkCinwarehouseidRule = new PMOCheckCinwarehouseidRule();
|
||||||
processer.addBeforeRule(checkCinwarehouseidRule);
|
processer.addBeforeRule(checkCinwarehouseidRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> atoCheck = new PMOATOCheckRule();
|
IRule<PMOAggVO> atoCheck = new PMOATOCheckRule();
|
||||||
processer.addBeforeRule(atoCheck);
|
processer.addBeforeRule(atoCheck);
|
||||||
|
|
||||||
IRule<PMOAggVO> procedureIRule = new PMOCheckProcedureratioRule();
|
IRule<PMOAggVO> procedureIRule = new PMOCheckProcedureratioRule();
|
||||||
processer.addBeforeRule(procedureIRule);
|
processer.addBeforeRule(procedureIRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> saveBeforeCheckRule = new saveBeforeCheckRule();
|
IRule<PMOAggVO> saveBeforeCheckRule = new saveBeforeCheckRule();
|
||||||
processer.addBeforeRule(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) {
|
private void addBeforeRuleSagasCheck(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush) {
|
||||||
OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
|
OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
|
||||||
processer.addBeforeRule(orgDisabledCheckRule);
|
processer.addBeforeRule(orgDisabledCheckRule);
|
||||||
|
|
||||||
FillInsertDataRule fillInsertDataRule = new FillInsertDataRule();
|
FillInsertDataRule fillInsertDataRule = new FillInsertDataRule();
|
||||||
processer.addBeforeRule(fillInsertDataRule);
|
processer.addBeforeRule(fillInsertDataRule);
|
||||||
|
|
||||||
MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode");
|
MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode");
|
||||||
processer.addBeforeRule(mMBillTypeIsLockCheckRule);
|
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();
|
IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule();
|
||||||
processer.addBeforeRule(marperrule);
|
processer.addBeforeRule(marperrule);
|
||||||
|
|
||||||
MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule();
|
MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule();
|
||||||
processer.addBeforeRule(mMCheckMaterialVirtualRule);
|
processer.addBeforeRule(mMCheckMaterialVirtualRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule();
|
IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule();
|
||||||
processer.addBeforeRule(chkrwxisrule);
|
processer.addBeforeRule(chkrwxisrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub);
|
IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub);
|
||||||
processer.addBeforeRule(chkrule);
|
processer.addBeforeRule(chkrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule();
|
IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule();
|
||||||
processer.addBeforeRule(fillvaluerule);
|
processer.addBeforeRule(fillvaluerule);
|
||||||
|
|
||||||
processer.addBeforeRule(new PMOSyncPlanmmNumRule());
|
processer.addBeforeRule(new PMOSyncPlanmmNumRule());
|
||||||
|
|
||||||
MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule();
|
MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule();
|
||||||
processer.addBeforeRule(mMRowNoCheckRule);
|
processer.addBeforeRule(mMRowNoCheckRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule();
|
IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule();
|
||||||
processer.addBeforeRule(daterule);
|
processer.addBeforeRule(daterule);
|
||||||
|
|
||||||
IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule();
|
IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule();
|
||||||
processer.addBeforeRule(chkPntRule);
|
processer.addBeforeRule(chkPntRule);
|
||||||
|
|
||||||
processer.addBeforeRule(new PMOCheckProdurepointRule());
|
processer.addBeforeRule(new PMOCheckProdurepointRule());
|
||||||
|
|
||||||
IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true);
|
IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true);
|
||||||
processer.addBeforeRule(procdatelogicrule);
|
processer.addBeforeRule(procdatelogicrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule();
|
IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule();
|
||||||
processer.addBeforeRule(proccoderule);
|
processer.addBeforeRule(proccoderule);
|
||||||
|
|
||||||
FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule();
|
FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule();
|
||||||
processer.addBeforeRule(fieldLengthCheckRule);
|
processer.addBeforeRule(fieldLengthCheckRule);
|
||||||
|
|
||||||
UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>(
|
UserDefSaveRule<PMOAggVO> defRule = new UserDefSaveRule<PMOAggVO>(
|
||||||
new Class[] { nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class });
|
new Class[]{nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class});
|
||||||
processer.addBeforeRule(defRule);
|
processer.addBeforeRule(defRule);
|
||||||
|
|
||||||
MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1,
|
MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1,
|
||||||
nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class);
|
nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class);
|
||||||
|
|
||||||
processer.addBeforeRule(prodModeRule);
|
processer.addBeforeRule(prodModeRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule();
|
IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule();
|
||||||
processer.addBeforeRule(snCheckRule);
|
processer.addBeforeRule(snCheckRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> atoCheck = new PMOATOCheckRule();
|
IRule<PMOAggVO> atoCheck = new PMOATOCheckRule();
|
||||||
processer.addBeforeRule(atoCheck);
|
processer.addBeforeRule(atoCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addAfterRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush,
|
private void addAfterRule(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush,
|
||||||
List<SnDocParam> updateParams, List<SnDocParam> saveParams) {
|
List<SnDocParam> updateParams, List<SnDocParam> saveParams) {
|
||||||
MMBillCodeCheckAndTrantypeRule mMBillCodeCheckAndTrantypeRule = new MMBillCodeCheckAndTrantypeRule("55A2",
|
MMBillCodeCheckAndTrantypeRule mMBillCodeCheckAndTrantypeRule = new MMBillCodeCheckAndTrantypeRule("55A2",
|
||||||
"vbillcode", "pk_group", "pk_org", "vtrantypecode");
|
"vbillcode", "pk_group", "pk_org", "vtrantypecode");
|
||||||
|
|
||||||
processer.addAfterRule(mMBillCodeCheckAndTrantypeRule);
|
processer.addAfterRule(mMBillCodeCheckAndTrantypeRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> duprule = new PMOCheckSCDuplicateRule();
|
IRule<PMOAggVO> duprule = new PMOCheckSCDuplicateRule();
|
||||||
processer.addAfterRule(duprule);
|
processer.addAfterRule(duprule);
|
||||||
|
|
||||||
IRule<PMOAggVO> dmoduprule = new PMOCheckDMODuplicateRule();
|
IRule<PMOAggVO> dmoduprule = new PMOCheckDMODuplicateRule();
|
||||||
processer.addAfterRule(dmoduprule);
|
processer.addAfterRule(dmoduprule);
|
||||||
|
|
||||||
IRule<PMOAggVO> pmorule = new RewriteInsertNum4PMO();
|
IRule<PMOAggVO> pmorule = new RewriteInsertNum4PMO();
|
||||||
processer.addAfterRule(pmorule);
|
processer.addAfterRule(pmorule);
|
||||||
|
|
||||||
IRule<PMOAggVO> rewriteso = new RewriteInsertNum4SO();
|
IRule<PMOAggVO> rewriteso = new RewriteInsertNum4SO();
|
||||||
processer.addAfterRule(rewriteso);
|
processer.addAfterRule(rewriteso);
|
||||||
|
|
||||||
IRule<PMOAggVO> rewritepsm = new RewriteInsertNum4PSM();
|
IRule<PMOAggVO> rewritepsm = new RewriteInsertNum4PSM();
|
||||||
processer.addAfterRule(rewritepsm);
|
processer.addAfterRule(rewritepsm);
|
||||||
|
|
||||||
IRule<PMOAggVO> rewritepo = new RewriteInsertNum4MPS();
|
IRule<PMOAggVO> rewritepo = new RewriteInsertNum4MPS();
|
||||||
processer.addAfterRule(rewritepo);
|
processer.addAfterRule(rewritepo);
|
||||||
|
|
||||||
IRule<PMOAggVO> rewriteto = new RewriteInsertNum4TO();
|
IRule<PMOAggVO> rewriteto = new RewriteInsertNum4TO();
|
||||||
processer.addAfterRule(rewriteto);
|
processer.addAfterRule(rewriteto);
|
||||||
|
|
||||||
IRule<PMOAggVO> atprule = new PMOATPUpdateRule(false, "55A2");
|
IRule<PMOAggVO> atprule = new PMOATPUpdateRule(false, "55A2");
|
||||||
processer.addAfterRule(atprule);
|
processer.addAfterRule(atprule);
|
||||||
|
|
||||||
IRule<PMOAggVO> snsaverule = new PMOSaveSNWhenInsertRule(updateParams, saveParams);
|
IRule<PMOAggVO> snsaverule = new PMOSaveSNWhenInsertRule(updateParams, saveParams);
|
||||||
processer.addAfterRule(snsaverule);
|
processer.addAfterRule(snsaverule);
|
||||||
|
|
||||||
IRule<PMOAggVO> createPickmRule = new PMOCreatePickmWhenInsertRule();
|
IRule<PMOAggVO> createPickmRule = new PMOCreatePickmWhenInsertRule();
|
||||||
processer.addAfterRule(createPickmRule);
|
processer.addAfterRule(createPickmRule);
|
||||||
|
|
||||||
IRule<PMOAggVO> saveapproverule = new PMOInsertSaveApproveRule();
|
IRule<PMOAggVO> saveapproverule = new PMOInsertSaveApproveRule();
|
||||||
processer.addAfterRule(saveapproverule);
|
processer.addAfterRule(saveapproverule);
|
||||||
// 保存后推送流程生产订单到PLM
|
// 保存后推送流程生产订单到PLM
|
||||||
processer.addAfterRule(new AfterApproveSyncPLMRule());
|
processer.addAfterRule(new AfterApproveSyncPLMRule());
|
||||||
}
|
}
|
||||||
|
|
||||||
public PMOAggVO[] pushInsert(PMOAggVO[] vos, boolean issub, String pushtype) {
|
public PMOAggVO[] pushInsert(PMOAggVO[] vos, boolean issub, String pushtype) {
|
||||||
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT);
|
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT);
|
||||||
|
|
||||||
addPushInsertBeforeRules(processer, pushtype);
|
addPushInsertBeforeRules(processer, pushtype);
|
||||||
processer.before(vos);
|
processer.before(vos);
|
||||||
|
|
||||||
PMOAggVO[] aggvos = insert(vos, issub, true);
|
PMOAggVO[] aggvos = insert(vos, issub, true);
|
||||||
if ("PSM".equals(pushtype)) {
|
if ("PSM".equals(pushtype)) {
|
||||||
PMOAggVO[] cloneVos = (PMOAggVO[]) (new GCBillCloneUtil()).cloneBills(aggvos);
|
PMOAggVO[] cloneVos = (PMOAggVO[]) (new GCBillCloneUtil()).cloneBills(aggvos);
|
||||||
|
|
||||||
PMOSplitByTaskDetailsRule createPutPlan = new PMOSplitByTaskDetailsRule(false);
|
PMOSplitByTaskDetailsRule createPutPlan = new PMOSplitByTaskDetailsRule(false);
|
||||||
createPutPlan.process(cloneVos);
|
createPutPlan.process(cloneVos);
|
||||||
}
|
}
|
||||||
return aggvos;
|
return aggvos;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pushInsertSagasCheck(PMOAggVO[] vos, boolean issub, String pushtype) {
|
public void pushInsertSagasCheck(PMOAggVO[] vos, boolean issub, String pushtype) {
|
||||||
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT);
|
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT);
|
||||||
|
|
||||||
addPushInsertBeforeRules(processer, pushtype);
|
addPushInsertBeforeRules(processer, pushtype);
|
||||||
processer.before(vos);
|
processer.before(vos);
|
||||||
|
|
||||||
insertSagasCheck(vos, issub, true);
|
insertSagasCheck(vos, issub, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addPushInsertBeforeRules(AroundProcesser<PMOAggVO> processer, String pushtype) {
|
private void addPushInsertBeforeRules(AroundProcesser<PMOAggVO> processer, String pushtype) {
|
||||||
IRule<PMOAggVO> versionrule = new PMOFillPushVersionRule();
|
IRule<PMOAggVO> versionrule = new PMOFillPushVersionRule();
|
||||||
processer.addBeforeRule(versionrule);
|
processer.addBeforeRule(versionrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> defaultrule = new PMOFillPushDefaultValueRule();
|
IRule<PMOAggVO> defaultrule = new PMOFillPushDefaultValueRule();
|
||||||
processer.addBeforeRule(defaultrule);
|
processer.addBeforeRule(defaultrule);
|
||||||
|
|
||||||
IRule<PMOAggVO> relationrule = new PMOFillMaterialRelationRule(pushtype);
|
IRule<PMOAggVO> relationrule = new PMOFillMaterialRelationRule(pushtype);
|
||||||
processer.addBeforeRule(relationrule);
|
processer.addBeforeRule(relationrule);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
package nc.bs.mmpac.pmo.pac0002.bp;
|
package nc.bs.mmpac.pmo.pac0002.bp;
|
||||||
|
|
||||||
import nc.bs.mmpac.pmo.pac0002.bp.rule.AfterPlanStartTimeChangeRule;
|
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 nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -249,6 +250,7 @@ public class PMOUpdateBP {
|
||||||
processer.addBeforeRule(procedureIRule);
|
processer.addBeforeRule(procedureIRule);
|
||||||
IRule<PMOAggVO> atoCheck = new PMOATOCheckRule();
|
IRule<PMOAggVO> atoCheck = new PMOATOCheckRule();
|
||||||
processer.addBeforeRule(atoCheck);
|
processer.addBeforeRule(atoCheck);
|
||||||
|
processer.addBeforeRule(new BeforePmoWlbzJMRule());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
|
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