生产订单投放校验相关代码适配
This commit is contained in:
parent
55e7646ebc
commit
0eb4e5a01b
|
@ -0,0 +1,382 @@
|
|||
package nc.bs.mmpac.pmo.pac0002.bp;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOATOCheckRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOATPUpdateRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOCffileidInserAndUpdatetRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOCreatePickmWhenInsertRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOInsertSaveApproveRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOMarkWrSNWhenInsertRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOSNDupCheckRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOSaveSNWhenInsertRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOSplitByTaskDetailsRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOSyncSNWhenInsertRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.CheckMaterialIsEnableRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckCinwarehouseidRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDMODuplicateRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDateLogicRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckMaterialPermissionRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckNrwxisLogicRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckParentStatusRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedureDateLogicRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedureDupRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedurePSCRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProcedureratioRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckProdurepointRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSCDuplicateRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSNNumAndUnitRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckSaveNotNullRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOProcedureChkPntRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillBatchCodeRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillFirstMOInfoRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillInsertBatchValueRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillInsertDefaultValueRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillInsertPlanTimeByProcedureRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillMaterialRelationRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillPushDefaultValueRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillPushVersionRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillSNPkAndCodeRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.grand.PMOCreatePlanOutputRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.grand.PMOCreateProcedureRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.grand.PMOSyncPlanmmNumRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4MPS;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4PMO;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4PSCRecive;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4PSM;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4Renovate;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4SFC;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4SO;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.rewrite.RewriteInsertNum4TO;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.rule.saveBeforeCheckRule;
|
||||
import nc.bs.mmpub.rule.MMATOMaterialCheckRule;
|
||||
import nc.bs.mmpub.rule.MMAutoMaterialAssignRule;
|
||||
import nc.bs.mmpub.rule.MMBillTypeIsLockCheckRule;
|
||||
import nc.bs.pubapp.pub.rule.FieldLengthCheckRule;
|
||||
import nc.bs.pubapp.pub.rule.FillInsertDataRule;
|
||||
import nc.bs.pubapp.pub.rule.OrgDisabledCheckRule;
|
||||
import nc.impl.pubapp.bd.userdef.UserDefSaveRule;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
|
||||
import nc.pubitf.sn.doc.param.SnDocParam;
|
||||
import nc.util.mmf.busi.rule.MMBillCodeCheckAndTrantypeRule;
|
||||
import nc.util.mmf.busi.rule.MMCheckMaterialProdModeRule;
|
||||
import nc.util.mmf.busi.rule.MMCheckMaterialVirtualRule;
|
||||
import nc.util.mmf.busi.rule.MMCreateBillcodeAndTrantypecodeRule;
|
||||
import nc.util.mmf.busi.rule.MMRowNoCheckRule;
|
||||
import nc.util.mmf.framework.gc.GCBillCloneUtil;
|
||||
import nc.util.mmf.framework.gc.GCBillInsert;
|
||||
import nc.util.mmf.framework.gc.GCInsertBPTemplate;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.util.PmoSagaUtil;
|
||||
|
||||
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>();
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
|
||||
processer.addBeforeRule(orgDisabledCheckRule);
|
||||
|
||||
FillInsertDataRule fillInsertDataRule = new FillInsertDataRule();
|
||||
processer.addBeforeRule(fillInsertDataRule);
|
||||
|
||||
MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode");
|
||||
processer.addBeforeRule(mMBillTypeIsLockCheckRule);
|
||||
|
||||
MMAutoMaterialAssignRule mMAutoMaterialAssignRule = new MMAutoMaterialAssignRule(null, "cmaterialvid",
|
||||
new String[] { "pk_org", "cplanfactoryid" }, null);
|
||||
|
||||
processer.addBeforeFinalRule(mMAutoMaterialAssignRule);
|
||||
|
||||
MMATOMaterialCheckRule mMATOMaterialCheckRule = new MMATOMaterialCheckRule(null, "cmaterialvid", "cffileid");
|
||||
|
||||
processer.addBeforeRule(mMATOMaterialCheckRule);
|
||||
|
||||
IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule();
|
||||
processer.addBeforeRule(marperrule);
|
||||
|
||||
MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule();
|
||||
processer.addBeforeRule(mMCheckMaterialVirtualRule);
|
||||
|
||||
IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule();
|
||||
processer.addBeforeRule(chkrwxisrule);
|
||||
|
||||
IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub);
|
||||
processer.addBeforeRule(chkrule);
|
||||
|
||||
IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule();
|
||||
processer.addBeforeRule(fillvaluerule);
|
||||
|
||||
processer.addBeforeRule(new PMOSyncPlanmmNumRule());
|
||||
|
||||
MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule();
|
||||
processer.addBeforeRule(mMRowNoCheckRule);
|
||||
|
||||
IRule<PMOAggVO> scrapAddrule = new PMOCheckParentStatusRule();
|
||||
processer.addBeforeRule(scrapAddrule);
|
||||
|
||||
IRule<PMOAggVO> snDuprule = new PMOSNDupCheckRule();
|
||||
processer.addBeforeRule(snDuprule);
|
||||
|
||||
IRule<PMOAggVO> outputrule = new PMOCreatePlanOutputRule();
|
||||
processer.addBeforeRule(outputrule);
|
||||
|
||||
IRule<PMOAggVO> procedurerule = new PMOCreateProcedureRule(isPush);
|
||||
processer.addBeforeRule(procedurerule);
|
||||
|
||||
IRule<PMOAggVO> filltimeprocedurerule = new PMOFillInsertPlanTimeByProcedureRule();
|
||||
processer.addBeforeRule(filltimeprocedurerule);
|
||||
|
||||
IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule();
|
||||
processer.addBeforeRule(daterule);
|
||||
|
||||
IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule();
|
||||
processer.addBeforeRule(chkPntRule);
|
||||
|
||||
processer.addBeforeRule(new PMOCheckProdurepointRule());
|
||||
|
||||
IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true);
|
||||
processer.addBeforeRule(procdatelogicrule);
|
||||
|
||||
IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule();
|
||||
processer.addBeforeRule(proccoderule);
|
||||
|
||||
IRule<PMOAggVO> procPscCheckRule = new PMOCheckProcedurePSCRule();
|
||||
processer.addBeforeRule(procPscCheckRule);
|
||||
|
||||
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);
|
||||
|
||||
MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1,
|
||||
nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class);
|
||||
|
||||
processer.addBeforeRule(prodModeRule);
|
||||
|
||||
IRule<PMOAggVO> rewriteReviceRule = new RewriteInsertNum4PSCRecive();
|
||||
processer.addBeforeRule(rewriteReviceRule);
|
||||
|
||||
IRule<PMOAggVO> wrMarkRule = new PMOMarkWrSNWhenInsertRule();
|
||||
processer.addBeforeRule(wrMarkRule);
|
||||
|
||||
IRule<PMOAggVO> atprule = new PMOATPUpdateRule(true, "55A2");
|
||||
processer.addBeforeRule(atprule);
|
||||
|
||||
IRule<PMOAggVO> rewritewr = new RewriteInsertNum4Renovate();
|
||||
processer.addBeforeRule(rewritewr);
|
||||
|
||||
IRule<PMOAggVO> rewritesfc = new RewriteInsertNum4SFC();
|
||||
processer.addBeforeRule(rewritesfc);
|
||||
|
||||
MMCreateBillcodeAndTrantypecodeRule mMCreateBillcodeAndTrantypecodeRule = new MMCreateBillcodeAndTrantypecodeRule(
|
||||
"55A2", "vbillcode", "pk_group", "pk_org", "vtrantypecode");
|
||||
|
||||
processer.addBeforeRule(mMCreateBillcodeAndTrantypecodeRule);
|
||||
|
||||
IRule<PMOAggVO> fillfirstInfo = new PMOFillFirstMOInfoRule();
|
||||
processer.addBeforeRule(fillfirstInfo);
|
||||
|
||||
IRule<PMOAggVO> fillbatchvaluerule = new PMOFillInsertBatchValueRule();
|
||||
processer.addBeforeRule(fillbatchvaluerule);
|
||||
|
||||
IRule<PMOAggVO> batchcodeRule = new PMOFillBatchCodeRule();
|
||||
processer.addBeforeRule(batchcodeRule);
|
||||
|
||||
PMOCffileidInserAndUpdatetRule cffileidRule = new PMOCffileidInserAndUpdatetRule();
|
||||
processer.addBeforeRule(cffileidRule);
|
||||
|
||||
IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule();
|
||||
processer.addBeforeRule(snCheckRule);
|
||||
|
||||
IRule<PMOAggVO> snRule = new PMOFillSNPkAndCodeRule();
|
||||
processer.addBeforeRule(snRule);
|
||||
|
||||
IRule<PMOAggVO> snSyncRule = new PMOSyncSNWhenInsertRule(updateParams, saveParams);
|
||||
processer.addBeforeRule(snSyncRule);
|
||||
|
||||
IRule<PMOAggVO> checkCinwarehouseidRule = new PMOCheckCinwarehouseidRule();
|
||||
processer.addBeforeRule(checkCinwarehouseidRule);
|
||||
|
||||
IRule<PMOAggVO> atoCheck = new PMOATOCheckRule();
|
||||
processer.addBeforeRule(atoCheck);
|
||||
|
||||
IRule<PMOAggVO> procedureIRule = new PMOCheckProcedureratioRule();
|
||||
processer.addBeforeRule(procedureIRule);
|
||||
|
||||
IRule<PMOAggVO> saveBeforeCheckRule = new saveBeforeCheckRule();
|
||||
processer.addBeforeRule(saveBeforeCheckRule);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
MMBillTypeIsLockCheckRule mMBillTypeIsLockCheckRule = new MMBillTypeIsLockCheckRule("vtrantypecode");
|
||||
processer.addBeforeRule(mMBillTypeIsLockCheckRule);
|
||||
|
||||
MMATOMaterialCheckRule mMATOMaterialCheckRule = new MMATOMaterialCheckRule(null, "cmaterialvid", "cffileid");
|
||||
|
||||
processer.addBeforeRule(mMATOMaterialCheckRule);
|
||||
|
||||
IRule<PMOAggVO> marperrule = new PMOCheckMaterialPermissionRule();
|
||||
processer.addBeforeRule(marperrule);
|
||||
|
||||
MMCheckMaterialVirtualRule mMCheckMaterialVirtualRule = new MMCheckMaterialVirtualRule();
|
||||
processer.addBeforeRule(mMCheckMaterialVirtualRule);
|
||||
|
||||
IRule<PMOAggVO> chkrwxisrule = new PMOCheckNrwxisLogicRule();
|
||||
processer.addBeforeRule(chkrwxisrule);
|
||||
|
||||
IRule<PMOAggVO> chkrule = new PMOCheckSaveNotNullRule(issub);
|
||||
processer.addBeforeRule(chkrule);
|
||||
|
||||
IRule<PMOAggVO> fillvaluerule = new PMOFillInsertDefaultValueRule();
|
||||
processer.addBeforeRule(fillvaluerule);
|
||||
|
||||
processer.addBeforeRule(new PMOSyncPlanmmNumRule());
|
||||
|
||||
MMRowNoCheckRule mMRowNoCheckRule = new MMRowNoCheckRule();
|
||||
processer.addBeforeRule(mMRowNoCheckRule);
|
||||
|
||||
IRule<PMOAggVO> daterule = new PMOCheckDateLogicRule();
|
||||
processer.addBeforeRule(daterule);
|
||||
|
||||
IRule<PMOAggVO> chkPntRule = new PMOProcedureChkPntRule();
|
||||
processer.addBeforeRule(chkPntRule);
|
||||
|
||||
processer.addBeforeRule(new PMOCheckProdurepointRule());
|
||||
|
||||
IRule<PMOAggVO> procdatelogicrule = new PMOCheckProcedureDateLogicRule(true);
|
||||
processer.addBeforeRule(procdatelogicrule);
|
||||
|
||||
IRule<PMOAggVO> proccoderule = new PMOCheckProcedureDupRule();
|
||||
processer.addBeforeRule(proccoderule);
|
||||
|
||||
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);
|
||||
|
||||
MMCheckMaterialProdModeRule<PMOAggVO> prodModeRule = new MMCheckMaterialProdModeRule<PMOAggVO>(1,
|
||||
nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO.class);
|
||||
|
||||
processer.addBeforeRule(prodModeRule);
|
||||
|
||||
IRule<PMOAggVO> snCheckRule = new PMOCheckSNNumAndUnitRule();
|
||||
processer.addBeforeRule(snCheckRule);
|
||||
|
||||
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");
|
||||
|
||||
processer.addAfterRule(mMBillCodeCheckAndTrantypeRule);
|
||||
|
||||
IRule<PMOAggVO> duprule = new PMOCheckSCDuplicateRule();
|
||||
processer.addAfterRule(duprule);
|
||||
|
||||
IRule<PMOAggVO> dmoduprule = new PMOCheckDMODuplicateRule();
|
||||
processer.addAfterRule(dmoduprule);
|
||||
|
||||
IRule<PMOAggVO> pmorule = new RewriteInsertNum4PMO();
|
||||
processer.addAfterRule(pmorule);
|
||||
|
||||
IRule<PMOAggVO> rewriteso = new RewriteInsertNum4SO();
|
||||
processer.addAfterRule(rewriteso);
|
||||
|
||||
IRule<PMOAggVO> rewritepsm = new RewriteInsertNum4PSM();
|
||||
processer.addAfterRule(rewritepsm);
|
||||
|
||||
IRule<PMOAggVO> rewritepo = new RewriteInsertNum4MPS();
|
||||
processer.addAfterRule(rewritepo);
|
||||
|
||||
IRule<PMOAggVO> rewriteto = new RewriteInsertNum4TO();
|
||||
processer.addAfterRule(rewriteto);
|
||||
|
||||
IRule<PMOAggVO> atprule = new PMOATPUpdateRule(false, "55A2");
|
||||
processer.addAfterRule(atprule);
|
||||
|
||||
IRule<PMOAggVO> snsaverule = new PMOSaveSNWhenInsertRule(updateParams, saveParams);
|
||||
processer.addAfterRule(snsaverule);
|
||||
|
||||
IRule<PMOAggVO> createPickmRule = new PMOCreatePickmWhenInsertRule();
|
||||
processer.addAfterRule(createPickmRule);
|
||||
|
||||
IRule<PMOAggVO> saveapproverule = new PMOInsertSaveApproveRule();
|
||||
processer.addAfterRule(saveapproverule);
|
||||
}
|
||||
|
||||
public PMOAggVO[] pushInsert(PMOAggVO[] vos, boolean issub, String pushtype) {
|
||||
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT);
|
||||
|
||||
addPushInsertBeforeRules(processer, pushtype);
|
||||
processer.before(vos);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public void pushInsertSagasCheck(PMOAggVO[] vos, boolean issub, String pushtype) {
|
||||
AroundProcesser<PMOAggVO> processer = new AroundProcesser<PMOAggVO>(PMOPluginPoint.PUSHINSERT);
|
||||
|
||||
addPushInsertBeforeRules(processer, pushtype);
|
||||
processer.before(vos);
|
||||
|
||||
insertSagasCheck(vos, issub, true);
|
||||
}
|
||||
|
||||
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> relationrule = new PMOFillMaterialRelationRule(pushtype);
|
||||
processer.addBeforeRule(relationrule);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,105 @@
|
|||
package nc.bs.mmpac.pmo.pac0002.bp;
|
||||
|
||||
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterBillStatusRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOPutAutoAuditPickmRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDeptNotNullRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelActApplyRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelBatchBindRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelDispatchNumRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelHoldNumRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelOperationRepRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckPutCancelWrNumRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOPutCancelCheckPutPlanStatusRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillBatchCodeRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillPutValueRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.rule.putBeforeCheckRule;
|
||||
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
|
||||
import nc.impl.pubapp.pattern.rule.IFilterRule;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||
import nc.util.mmf.framework.gc.GCUpdateBPTemplate;
|
||||
import nc.vo.mmpac.pmo.pac0002.constant.PMOConstLang;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFBillstatusEnum;
|
||||
|
||||
public class PMOPutBP {
|
||||
public PMOAggVO[] put(PMOAggVO[] fullBills, PMOAggVO[] originBills) {
|
||||
GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate<PMOAggVO>(PMOPluginPoint.PUT);
|
||||
|
||||
addPutBeforeRule(bp.getAroundProcesser());
|
||||
|
||||
addPutAfterRule(bp.getAroundProcesser());
|
||||
|
||||
return (PMOAggVO[]) bp.update(fullBills, originBills);
|
||||
}
|
||||
|
||||
private void addPutBeforeRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||
MMVOSagaFrozenValidateRule mMVOSagaFrozenValidateRule = new MMVOSagaFrozenValidateRule(true);
|
||||
processer.addBeforeRule(mMVOSagaFrozenValidateRule);
|
||||
|
||||
IFilterRule<PMOAggVO> filterStatusRule = new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(),
|
||||
PMOFBillstatusEnum.AUDIT);
|
||||
processer.addBeforeRule(filterStatusRule);
|
||||
|
||||
IRule<PMOAggVO> checkDeptRule = new PMOCheckDeptNotNullRule();
|
||||
processer.addBeforeRule(checkDeptRule);
|
||||
|
||||
IFilterRule<PMOAggVO> pickmRule = new PMOPutAutoAuditPickmRule();
|
||||
processer.addBeforeRule(pickmRule);
|
||||
|
||||
IRule<PMOAggVO> fillValueRule = new PMOFillPutValueRule(false);
|
||||
processer.addBeforeRule(fillValueRule);
|
||||
|
||||
IRule<PMOAggVO> batchcodeRule = new PMOFillBatchCodeRule();
|
||||
processer.addBeforeRule(batchcodeRule);
|
||||
IRule<PMOAggVO> putBeforeCheckRule = new putBeforeCheckRule();
|
||||
processer.addBeforeRule(putBeforeCheckRule);
|
||||
}
|
||||
|
||||
private void addPutAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||
}
|
||||
|
||||
public PMOAggVO[] putCancel(PMOAggVO[] fullBills, PMOAggVO[] originBills) {
|
||||
GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate<PMOAggVO>(PMOPluginPoint.UNPUT);
|
||||
|
||||
addPutCancelBeforeRule(bp.getAroundProcesser());
|
||||
|
||||
addPutCancelAfterRule(bp.getAroundProcesser());
|
||||
|
||||
return (PMOAggVO[]) bp.update(fullBills, originBills);
|
||||
}
|
||||
|
||||
private void addPutCancelBeforeRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||
IFilterRule<PMOAggVO> filterStatusRule = new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(),
|
||||
PMOFBillstatusEnum.AUDIT);
|
||||
processer.addBeforeRule(filterStatusRule);
|
||||
|
||||
IRule<PMOAggVO> checkWRNumRule = new PMOCheckPutCancelWrNumRule();
|
||||
processer.addBeforeRule(checkWRNumRule);
|
||||
|
||||
IRule<PMOAggVO> checkActApplyRule = new PMOCheckPutCancelActApplyRule();
|
||||
processer.addBeforeRule(checkActApplyRule);
|
||||
|
||||
IRule<PMOAggVO> checkHoldNumRule = new PMOCheckPutCancelHoldNumRule();
|
||||
processer.addBeforeRule(checkHoldNumRule);
|
||||
|
||||
IRule<PMOAggVO> checkBatchBindRule = new PMOCheckPutCancelBatchBindRule();
|
||||
processer.addBeforeRule(checkBatchBindRule);
|
||||
|
||||
IRule<PMOAggVO> fillValueRule = new PMOFillPutValueRule(true);
|
||||
processer.addBeforeRule(fillValueRule);
|
||||
|
||||
IRule<PMOAggVO> checkDispatchNumRule = new PMOCheckPutCancelDispatchNumRule();
|
||||
processer.addBeforeRule(checkDispatchNumRule);
|
||||
|
||||
IRule<PMOAggVO> checkOperationRepRule = new PMOCheckPutCancelOperationRepRule();
|
||||
processer.addBeforeRule(checkOperationRepRule);
|
||||
|
||||
IRule<PMOAggVO> putCancelCheckPutPlanStatusRule = new PMOPutCancelCheckPutPlanStatusRule();
|
||||
processer.addBeforeRule(putCancelCheckPutPlanStatusRule);
|
||||
}
|
||||
|
||||
private void addPutCancelAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,122 @@
|
|||
package nc.bs.mmpac.pmo.pac0002.bp;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.util.PMOBPUtil;
|
||||
import nc.bs.mmpac.pmo.pac0002.pluginpoint.PMOPluginPoint;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterBillStatusRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOFilterRowStatusRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.PMOPutAutoAuditPickmRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.check.PMOCheckDeptNotNullRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillBatchCodeRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillPutValueRule;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.rule.putBeforeCheckRule;
|
||||
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
|
||||
import nc.impl.pubapp.pattern.data.vo.tool.VOConcurrentTool;
|
||||
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||
import nc.util.mmf.framework.gc.GCBillConcurrentTool;
|
||||
import nc.util.mmf.framework.gc.GCBillTransferTool;
|
||||
import nc.util.mmf.framework.gc.GCBillUpdate;
|
||||
import nc.util.mmf.framework.gc.GCUpdateBPTemplate;
|
||||
import nc.vo.mmpac.pmo.pac0002.constant.PMOConstLang;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
|
||||
import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFBillstatusEnum;
|
||||
import nc.vo.mmpac.pmo.pac0002.enumeration.PMOFItemStatusEnum;
|
||||
import nc.vo.pub.CircularlyAccessibleValueObject;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
|
||||
public class PMORowPutBP {
|
||||
public PMOAggVO[] rowput(PMOAggVO[] vos) {
|
||||
try {
|
||||
GCBillConcurrentTool lockTool = new GCBillConcurrentTool();
|
||||
lockTool.lockBill(vos);
|
||||
|
||||
(new VOConcurrentTool()).checkTSWithDB(vos[0].getChildrenVO());
|
||||
|
||||
GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate<PMOAggVO>(PMOPluginPoint.ROWPUT);
|
||||
CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser();
|
||||
|
||||
addRowPutBeforeRule(processer);
|
||||
|
||||
addRowPutAfterRule(processer);
|
||||
|
||||
PMOAggVO[] returnvos = (PMOAggVO[]) processer.before(vos, vos);
|
||||
|
||||
List<PMOItemVO> upditemList = new ArrayList<PMOItemVO>();
|
||||
Map<String, PMOItemVO> upditemMap = new HashMap<String, PMOItemVO>();
|
||||
for (PMOAggVO aggvo : returnvos) {
|
||||
PMOItemVO[] items = aggvo.getChildrenVO();
|
||||
for (PMOItemVO item : items) {
|
||||
upditemList.add(item);
|
||||
upditemMap.put(item.getCmoid(), item);
|
||||
}
|
||||
}
|
||||
PMOAggVO aggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid());
|
||||
|
||||
PMOItemVO[] olditems = aggvo.getChildrenVO();
|
||||
List<PMOItemVO> tempitems = new ArrayList<PMOItemVO>();
|
||||
for (PMOItemVO item : olditems) {
|
||||
if (!upditemMap.containsKey(item.getCmoid())) {
|
||||
tempitems.add(item);
|
||||
} else {
|
||||
|
||||
((PMOItemVO) upditemMap.get(item.getCmoid())).setStatus(1);
|
||||
PMOBPUtil.setGrandVOStatusUpdate((PMOItemVO) upditemMap.get(item.getCmoid()));
|
||||
tempitems.add((PMOItemVO) upditemMap.get(item.getCmoid()));
|
||||
}
|
||||
}
|
||||
aggvo.setChildrenVO((CircularlyAccessibleValueObject[]) tempitems.toArray(new PMOItemVO[tempitems.size()]));
|
||||
|
||||
PMOAggVO[] aggvos = { aggvo };
|
||||
|
||||
GCBillTransferTool<PMOAggVO> transferTool = new GCBillTransferTool<PMOAggVO>(aggvos);
|
||||
PMOAggVO[] originBills = (PMOAggVO[]) transferTool.getOriginBills();
|
||||
GCBillUpdate<PMOAggVO> billupdate = new GCBillUpdate<PMOAggVO>();
|
||||
PMOAggVO[] newaggvos = (PMOAggVO[]) billupdate.update(aggvos, originBills);
|
||||
|
||||
PMOItemVO[] totalitems = newaggvos[0].getChildrenVO();
|
||||
Map<String, PMOItemVO> newitemMap = new HashMap<String, PMOItemVO>();
|
||||
for (PMOItemVO item : totalitems) {
|
||||
if (upditemMap.containsKey(item.getCmoid())) {
|
||||
newitemMap.put(item.getCmoid(), item);
|
||||
}
|
||||
}
|
||||
returnvos[0]
|
||||
.setChildrenVO((CircularlyAccessibleValueObject[]) newitemMap.values().toArray(new PMOItemVO[0]));
|
||||
|
||||
processer.after(returnvos, returnvos);
|
||||
|
||||
PMOAggVO newaggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid());
|
||||
|
||||
return new PMOAggVO[] { newaggvo };
|
||||
|
||||
} catch (Exception e) {
|
||||
ExceptionUtils.wrappException(e);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void addRowPutBeforeRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||
MMVOSagaFrozenValidateRule mMVOSagaFrozenValidateRule = new MMVOSagaFrozenValidateRule(true);
|
||||
processer.addBeforeRule(mMVOSagaFrozenValidateRule);
|
||||
processer.addBeforeRule(
|
||||
new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(), PMOFBillstatusEnum.AUDIT));
|
||||
|
||||
processer.addBeforeRule(
|
||||
new PMOFilterRowStatusRule(PMOConstLang.getMSG_RULE_NO_ROWDATA(), PMOFItemStatusEnum.AUDIT));
|
||||
|
||||
processer.addBeforeRule(new PMOCheckDeptNotNullRule());
|
||||
processer.addBeforeRule(new PMOPutAutoAuditPickmRule());
|
||||
processer.addBeforeRule(new PMOFillPutValueRule(false));
|
||||
processer.addBeforeRule(new PMOFillBatchCodeRule());
|
||||
processer.addBeforeRule(new putBeforeCheckRule());
|
||||
}
|
||||
|
||||
private void addRowPutAfterRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||
}
|
||||
}
|
|
@ -0,0 +1,111 @@
|
|||
package nc.bs.mmpac.pmo.pac0002.bp.rule;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import nc.bs.framework.common.NCLocator;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.itf.uap.IUAPQueryBS;
|
||||
import nc.itf.uif.pub.IUifService;
|
||||
import nc.jdbc.framework.processor.ColumnProcessor;
|
||||
import nc.jdbc.framework.processor.MapProcessor;
|
||||
import nc.vo.ic.m4c.entity.SaleOutHeadVO;
|
||||
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.pub.BusinessException;
|
||||
import nc.vo.so.m30.entity.SaleOrderBVO;
|
||||
//import nc.bs.rbac.bizlistener.BaseDocDataPermChangeEventListener;
|
||||
//import nc.impl.mmpac.pmo.pac0002.PMOTransTypeQueryServiceImpl;
|
||||
//import nc.impl.mmpac.bcrule.predata.BarCodeDataInitListener;
|
||||
//import nc.ui.mmpub.setanalysis.action.SaAnalysisAction.actionPerformed;//流程生产订单齐套分析-分析
|
||||
|
||||
//import nc.impl.mmpub.setanalysis.SetAnalysisServiceImpl;
|
||||
import nc.bs.mmpac.pmo.pac0002.bp.PMORowPutBP;
|
||||
import nccloud.web.mmpac.pmo.action.PmoCardPutAction;
|
||||
|
||||
|
||||
public class putBeforeCheckRule implements IRule<PMOAggVO> {
|
||||
|
||||
private static IUifService service = (IUifService) NCLocator.getInstance()
|
||||
.lookup(IUifService.class.getName());
|
||||
|
||||
@Override
|
||||
public void process(PMOAggVO[] vos) {
|
||||
try {
|
||||
// TODO Auto-generated method stub
|
||||
List<SaleOrderBVO> list = new ArrayList<SaleOrderBVO>();
|
||||
for (PMOAggVO vo : vos) {
|
||||
//判断是否是需要控制的业务单元
|
||||
PMOHeadVO pmoHeadVO = vo.getParentVO();
|
||||
String pkstockorgStr = getPk_stockorg(pmoHeadVO.getPk_org());
|
||||
if (pkstockorgStr == null || pkstockorgStr.equals("")) {
|
||||
return;
|
||||
}
|
||||
PMOItemVO[] iSuperVOs = vo.getChildrenVO();
|
||||
for (int i = 0; i < iSuperVOs.length; i++) {
|
||||
PMOItemVO itemvo = iSuperVOs[i];
|
||||
//判断是否类型是否为30
|
||||
if (itemvo.getVsrctype() == null || !itemvo.getVsrctype().equals("30")) {
|
||||
return;
|
||||
}
|
||||
Map<String, Object> valMap = getVbdef6(itemvo.getVsrcbid());
|
||||
//销售发票表头pk_billtypecode=30-Cxx-12
|
||||
if (valMap.get("pk_billtypecode").equals("30-Cxx-12")||valMap.get("pk_billtypecode").equals("30-Cxx-02")||valMap.get("pk_billtypecode").equals("30-Cxx-08")||valMap.get("pk_billtypecode").equals("30-Cxx-13")) {
|
||||
return;
|
||||
}
|
||||
//历史数据不考虑
|
||||
String storedDateStr = (String) valMap.get("creationtime");
|
||||
String targetDateStr = "2024-12-31 00:00:00";
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
LocalDateTime storedDate = LocalDateTime.parse(storedDateStr, formatter);
|
||||
LocalDateTime targetDate = LocalDateTime.parse(targetDateStr, formatter);
|
||||
if (storedDate.isBefore(targetDate)) {
|
||||
return;
|
||||
}
|
||||
String vdef4Str = itemvo.getVdef4();//齐套率
|
||||
String vdef4 = (vdef4Str != null) ? vdef4Str.toString() : "";
|
||||
double vdef4qty = (vdef4.isEmpty()) ? 0 : Double.parseDouble(vdef4);//齐套率
|
||||
String vdef10Str = itemvo.getVdef10();//齐套率标准
|
||||
String vdef10 = (vdef10Str != null) ? vdef10Str.toString() : "";
|
||||
double vdef10qty = (vdef10.isEmpty()) ? 0 : Double.parseDouble(vdef10);//齐套率标准
|
||||
if (vdef4qty < vdef10qty) {
|
||||
throw new BusinessException(
|
||||
"齐套率" + vdef4qty + "小于齐套率标准'" + vdef10qty + "',无法保存!");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} catch (BusinessException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, Object> getVbdef6(String vsrcbidStr) throws BusinessException {
|
||||
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||||
String sql = " SELECT bt.pk_billtypecode,s.creationtime,b.vbdef12,d.nastnum FROM so_saleorder_b b\n"
|
||||
+ "INNER JOIN so_saleorder s ON s.csaleorderid = b.csaleorderid\n"
|
||||
+ "left join (select mm_mo.Vsrcbid,sum(nastnum) as nastnum \n"
|
||||
+ "from mm_mo\n"
|
||||
+ "where mm_mo.dr=0\n"
|
||||
+ "group by mm_mo.Vsrcbid) d on b.csaleorderbid=d.Vsrcbid\n"
|
||||
+ "INNER JOIN bd_billtype bt on bt.pk_billtypeid=s.ctrantypeid\n"
|
||||
+ "where b.csaleorderbid='" + vsrcbidStr + "' ";
|
||||
Map<String, Object> valList = (Map<String, Object>) queryBS.executeQuery(sql, new MapProcessor());
|
||||
return valList;
|
||||
}
|
||||
|
||||
private String getPk_stockorg(String pk_stockorg) throws BusinessException {
|
||||
String sql =
|
||||
" select pk_stockorg from org_stockorg where code in ('C018','C029','C033','C039','C020','C019') and pk_stockorg='"
|
||||
+ pk_stockorg + "' ";
|
||||
String saleorderPK = (String) getQueryService().executeQuery(sql, new ColumnProcessor());
|
||||
return saleorderPK;
|
||||
}
|
||||
|
||||
public IUAPQueryBS getQueryService() {
|
||||
return NCLocator.getInstance().lookup(IUAPQueryBS.class);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue