流程生产订单保存时赋值生产BOM

This commit is contained in:
mzr 2025-09-01 08:39:25 +08:00
parent bcd0662b19
commit 8804ffba21
2 changed files with 17 additions and 55 deletions

View File

@ -1,55 +1,15 @@
package nc.bs.mmpac.pmo.pac0002.bp;
import java.util.ArrayList;
import java.util.List;
import nc.bs.mmpac.pmo.pac0002.bp.rule.BeforePmoBomRule;
import nc.bs.mmpac.pmo.pac0002.bp.rule.saveBeforeCheckRule;
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.*;
import nc.bs.mmpac.pmo.pac0002.rule.check.*;
import nc.bs.mmpac.pmo.pac0002.rule.fill.*;
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.mmpac.pmo.pac0002.rule.rewrite.*;
import nc.bs.mmpub.rule.MMATOMaterialCheckRule;
import nc.bs.mmpub.rule.MMAutoMaterialAssignRule;
import nc.bs.mmpub.rule.MMBillTypeIsLockCheckRule;
@ -60,17 +20,16 @@ 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.busi.rule.*;
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;
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);
@ -234,6 +193,8 @@ public class PMOInsertBP {
IRule<PMOAggVO> saveBeforeCheckRule = new saveBeforeCheckRule();
processer.addBeforeRule(saveBeforeCheckRule);
processer.addBeforeRule(new BeforePmoBomRule());
}
private void addBeforeRuleSagasCheck(AroundProcesser<PMOAggVO> processer, boolean issub, boolean isPush) {

View File

@ -3,13 +3,13 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule;
import nc.bs.logging.Logger;
import nc.bs.uapbd.util.MyHelper;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.vo.am.common.util.StringUtils;
import nc.vo.bd.bom.bom0202.entity.BomVO;
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.am.common.util.StringUtils;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import java.util.Map;
@ -18,7 +18,7 @@ import java.util.Map;
* 流程生产订单赋值生产BOM字段
*
* @author mzr
* @date 2025/7/15
* @date 2025/8/25
*/
public class BeforePmoBomRule implements IRule<PMOAggVO> {
@ -46,11 +46,12 @@ public class BeforePmoBomRule implements IRule<PMOAggVO> {
if ("30".equals(pmoItemVO.getVsrctype())) {
// BOM状态 (FBomBillstatusEnum) 是否需要判断BOM的状态
// 根据bom版本号查询BOM(销售订单号+行号)
String bomVersion = pmoItemVO.getVsrccode() + pmoItemVO.getVsrcrowno();
String bomVersion = pmoItemVO.getVsrccode() + "-" + pmoItemVO.getVsrcrowno();
String whereSql = BomVO.PK_ORG + " = '" + pkOrg + "' AND " + BomVO.HVERSION + " = '" + bomVersion + "'";
// NCCForUAPLogger.debug("whereSql:" + whereSql);
String bomId = MyHelper.getStrValByCondition(BomVO.TABLE_NAME, BomVO.CBOMID, whereSql);
if (StringUtils.isEmpty(bomId)) {
throw new BusinessException("未找到对应的BOM");
throw new BusinessException("未找到版本号(" + bomVersion + ")对应的BOM");
}
pmoItemVO.setVbomversion(bomVersion); // 生产BOM版本号
pmoItemVO.setCbomversionid(bomId); // 生产BOM版本