流程生产订单保存前校验物料类型是否一致-精密铸造
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