同步代码

This commit is contained in:
lihao 2026-01-19 14:04:57 +08:00
parent 677fb310df
commit 7123eadd82
1 changed files with 109 additions and 27 deletions

View File

@ -1,12 +1,8 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package nc.bs.mmpac.wr.bp;
import java.util.HashMap;
import java.util.Map;
import nc.bs.mmpac.wr.plugin.WrPluginPoint;
import nc.bs.mmpac.wr.rule.WrAuditAndApplyCheckRule;
import nc.bs.mmpac.wr.rule.WrAuditAndProdInRule;
@ -14,6 +10,7 @@ import nc.bs.mmpac.wr.rule.WrCheckMaterialPermissionRule;
import nc.bs.mmpac.wr.rule.WrCheckMoIsCloseRule;
import nc.bs.mmpac.wr.rule.WrCheckTranstypeCodeRule;
import nc.bs.mmpac.wr.rule.WrClearNullBodyRule;
//import nc.bs.mmpac.wr.rule.*;
import nc.bs.mmpac.wr.rule.WrFillInsertDataRule;
import nc.bs.mmpac.wr.rule.WrHeadNotNullRule;
import nc.bs.mmpac.wr.rule.WrIsSaveAndApproveRule;
@ -40,6 +37,7 @@ import nc.bs.mmpac.wr.rule.serialno.WrSerialNoCheckCodeRepeat;
import nc.bs.mmpac.wr.rule.serialno.WrSerialNoCheckRule;
import nc.bs.mmpac.wr.rule.serialno.WrSerialNoSaveRule;
import nc.bs.mmpac.wr.rule.serialno.WrSnSynToQualtiyRule;
import nc.bs.mmpac.wr.rule.setcheck.WrScIndependRule;
import nc.bs.mmpub.rule.MMATOMaterialCheckRule;
import nc.bs.mmpub.rule.MMAutoMaterialAssignRule;
import nc.bs.pubapp.pub.rule.FieldLengthCheckRule;
@ -48,109 +46,173 @@ import nc.impl.pubapp.bd.material.assistant.MarAssistantSaveRule;
import nc.impl.pubapp.bd.userdef.UserDefSaveRule;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
import nc.itf.org.IOrgConst;
import nc.util.mmf.busi.rule.MMBillCodeCheckAndTrantypeRule;
import nc.util.mmf.busi.rule.MMCheckMaterialVirtualRule;
import nc.util.mmf.busi.rule.MMCreateBillcodeAndTrantypecodeRule;
import nc.util.mmf.framework.gc.GCInsertBPTemplate;
import nc.vo.mmpac.pacpub.consts.MMPacBillTypeConstant;
import nc.vo.mmpac.wr.entity.AggWrVO;
import nc.vo.mmpac.wr.entity.WrItemVO;
import nc.vo.mmpac.wr.entity.WrPickVO;
import nc.vo.mmpac.wr.entity.WrQualityVO;
import nc.vo.mmpac.wr.entity.WrVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.VOStatus;
/** 生产报告新增插入的BP */
public class WrInsertBP {
private boolean isOnlyInsert = false;
public WrInsertBP() {
}
/**
* 插入生产报告
*
* @param vos 生产报告
* @return AggWrVO 生产报告
*/
public AggWrVO[] insert(AggWrVO[] vos) {
GCInsertBPTemplate<AggWrVO> bp = new GCInsertBPTemplate(WrPluginPoint.INSERT);
// 创建新增数据模板BP
GCInsertBPTemplate<AggWrVO> bp = new GCInsertBPTemplate<AggWrVO>(WrPluginPoint.INSERT);
AroundProcesser<AggWrVO> processor = bp.getAroundProcesser();
Map<String, String> vbatchsMap = new HashMap();
Map<String, String> vbatchsMap = new HashMap<String, String>();
// 注入新增前规则
this.addBeforeRule(processor, vos, vbatchsMap);
// 注入新增后规则
this.addAfterRule(processor, vbatchsMap);
return (AggWrVO[]) bp.insert(vos);
return bp.insert(vos);
}
/**
* 新增前规则
*
* @param vos
* @param processor
* @throws BusinessException
*/
@SuppressWarnings("unchecked")
private void addBeforeRule(AroundProcesser<AggWrVO> processer, AggWrVO[] vos, Map<String, String> vbatchsMap) {
// 生产报告空数据检查规则
IRule<AggWrVO> wrNullRule = new WrNullRule();
processer.addBeforeRule(wrNullRule);
IRule<AggWrVO> mmatoMaterialCheckRule = new MMATOMaterialCheckRule((String) null, "cbmaterialvid", "cbffileid");
// 产品为ATO选配件验证子项配置码是否为空
IRule<AggWrVO> mmatoMaterialCheckRule = new MMATOMaterialCheckRule(null, WrItemVO.CBMATERIALVID,WrItemVO.CBFFILEID);
processer.addBeforeRule(mmatoMaterialCheckRule);
IRule<AggWrVO> orgRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
// 组织是否启动规则
IRule<AggWrVO> orgRule = new OrgDisabledCheckRule(WrVO.PK_ORG, IOrgConst.FACTORYTYPE);
processer.addBeforeRule(orgRule);
@SuppressWarnings("rawtypes")
IRule<AggWrVO> checkDefRule = new UserDefSaveRule(new String[] { "vdef", "vbdef", "vgdef", "vpdef" },
new Class[] { WrVO.class, WrItemVO.class, WrQualityVO.class, WrPickVO.class });
processer.addBeforeRule(checkDefRule);
MarAssistantSaveRule<AggWrVO> marRule = new MarAssistantSaveRule();
// 自由辅助属性检查的规则
MarAssistantSaveRule<AggWrVO> marRule = new MarAssistantSaveRule<AggWrVO>();
processer.addBeforeRule(marRule);
// 补充默认值规则 重写平台方法去掉制单人赋值
IRule<AggWrVO> fillInsertDataRule = new WrFillInsertDataRule();
processer.addBeforeRule(fillInsertDataRule);
IRule<AggWrVO> autoMaterialAssignRule = new MMAutoMaterialAssignRule((String) null, "cbmaterialvid",
new String[] { "pk_org" }, (String[]) null);
// 物料自动分配
IRule<AggWrVO> autoMaterialAssignRule = new MMAutoMaterialAssignRule<AggWrVO>(null, WrItemVO.CBMATERIALVID,
new String[] { WrVO.PK_ORG }, null);
processer.addBeforeFinalRule(autoMaterialAssignRule);
// 物料分配到主组织检查规则
IRule<AggWrVO> orgPermissionRule = new WrCheckMaterialPermissionRule();
processer.addBeforeRule(orgPermissionRule);
// 订单是否关闭的rule
IRule<AggWrVO> moCloseRule = new WrCheckMoIsCloseRule();
processer.addBeforeRule(moCloseRule);
processer.addBeforeRule(new MMCheckMaterialVirtualRule(WrItemVO.class));
// 检查产出子表的物料是否是虚项
processer.addBeforeRule(new MMCheckMaterialVirtualRule<AggWrVO>(WrItemVO.class));
// 补充生产报告新增数据默认值规则
IRule<AggWrVO> wrSetDefaultValueWhenInsertRule = new WrSetDefaultValueWhenInsertRule();
processer.addBeforeRule(wrSetDefaultValueWhenInsertRule);
// 补全生产报告产出子表数据默认值规则
IRule<AggWrVO> wrSetItemDefaultValueRule = new WrSetItemDefaultValueRule();
processer.addBeforeRule(wrSetItemDefaultValueRule);
IRule<AggWrVO> billcodeRule = new MMCreateBillcodeAndTrantypecodeRule("55A4", "vbillcode", "pk_group", "pk_org",
"vtrantypecode");
// 创建单据号规则
IRule<AggWrVO> billcodeRule = new MMCreateBillcodeAndTrantypecodeRule(MMPacBillTypeConstant.WR, WrVO.VBILLCODE,
WrVO.PK_GROUP, WrVO.PK_ORG, WrVO.VTRANTYPECODE);
processer.addBeforeRule(billcodeRule);
// 生产报告表头空数据检查规则
IRule<AggWrVO> wrHeadNotNullRule = new WrHeadNotNullRule();
processer.addBeforeRule(wrHeadNotNullRule);
// 补生产批次号规则
IRule<AggWrVO> wrBatchCodeRule = new WrCreateBatchCodeRule();
processer.addBeforeRule(wrBatchCodeRule);
// 清除产出子表空行规则
IRule<AggWrVO> wrClearNullProductBodyRule = new WrClearNullBodyRule();
processer.addBeforeRule(wrClearNullProductBodyRule);
// 检查行号重复规则
processer.addBeforeRule(new WrRowNoRule());
// 清除质量等级孙表空行规则
IRule<AggWrVO> wrQualityFilterRule = new WrQualityFilterRule();
processer.addBeforeRule(wrQualityFilterRule);
// 清除材料消耗信息孙表空行规则
IRule<AggWrVO> wrPickFilterRule = new WrPickFilterRule();
processer.addBeforeRule(wrPickFilterRule);
// 生产报告产出页签空数据检查规则
IRule<AggWrVO> wrOutputNotNullRule = new WrOutputNotNullRule();
processer.addBeforeRule(wrOutputNotNullRule);
// 联副产品BOM检查规则
IRule<AggWrVO> wrNoneMainProductBomCheckRule = new WrNoneMainProductBomCheckRule();
processer.addBeforeRule(wrNoneMainProductBomCheckRule);
// 生产报告消耗页签空数据检查规则
IRule<AggWrVO> wrConsumeNotNullRule = new WrPickNotNullRule();
processer.addBeforeRule(wrConsumeNotNullRule);
// 单据字段长度检查规则
IRule<AggWrVO> lengthCheckRule = new FieldLengthCheckRule();
processer.addBeforeRule(lengthCheckRule);
// 生产报告创建库存批次号规则
IRule<AggWrVO> wrInsertAndDelInStockBatchCodeBeforeRule = new WrInsertAndDelInStockBatchCodeBeforeRule(
vbatchsMap);
processer.addBeforeRule(wrInsertAndDelInStockBatchCodeBeforeRule);
// 补全质量等级孙表信息
WrSetQualityVODefaultValueRule wrSetQualityVODefaultValueRule = new WrSetQualityVODefaultValueRule();
processer.addBeforeRule(wrSetQualityVODefaultValueRule);
// 校验序列号code+matvid是否重复 add by wangjwm
processer.addBeforeRule(new WrSerialNoCheckCodeRepeat());
// 申请序列号规则 add by wangjwm
WrSerialNoAutoCreateBeforeRule wrAutoCreateSnBeforeRule = new WrSerialNoAutoCreateBeforeRule();
processer.addBeforeRule(wrAutoCreateSnBeforeRule);
// 序列号检查规则 add by wangjwm
WrSerialNoCheckRule wrSnCheckRule = new WrSerialNoCheckRule();
processer.addBeforeRule(wrSnCheckRule);
// 序列号按照维度汇总生成质量孙表规则
WrSnSynToQualtiyRule synToQRule = new WrSnSynToQualtiyRule();
processer.addBeforeRule(synToQRule);
// 序列号回写订单序列号引用规则
WrMoSerialNoMarkIRule mosnMarkRule = new WrMoSerialNoMarkIRule();
processer.addBeforeRule(mosnMarkRule);
// 生成生产批次号与库存批次号对应关系
IRule<AggWrVO> wrCreateBatProdRule = new WrCreateBatProdRule();
processer.addBeforeRule(wrCreateBatProdRule);
// 由于保存单据总是存在交易类型总是存在55A9的错误没有规律特在此调整
processer.addBeforeRule(new WrCheckTranstypeCodeRule());
}
/**
* 新增后规则
*
* @param processor
*/
@SuppressWarnings("unchecked")
private void addAfterRule(AroundProcesser<AggWrVO> processor, Map<String, String> vbatchsMap) {
IRule<AggWrVO> rule = new MMBillCodeCheckAndTrantypeRule("55A4", "vbillcode", "pk_group", "pk_org",
"vtrantypecode");
// 保存单据号唯一性校验规则
IRule<AggWrVO> rule = new MMBillCodeCheckAndTrantypeRule(MMPacBillTypeConstant.WR, WrVO.VBILLCODE,
WrVO.PK_GROUP, WrVO.PK_ORG, WrVO.VTRANTYPECODE);
processor.addAfterRule(rule);
// 库存批次号保存后规则
IRule<AggWrVO> wrCreateInStockBatchCodeAfterRule = new WrInsertInStockBatchCodeAfterRule(vbatchsMap);
processor.addAfterRule(wrCreateInStockBatchCodeAfterRule);
// 回写投放计划完工数量规则
processor.addAfterRule(new WrInsertRewriteWrNumForPutPlanRule());
IRule<AggWrVO> wrMORewriteRule = new WrMORewriteRule(2);
// 回写生产订单完工数量规则
IRule<AggWrVO> wrMORewriteRule = new WrMORewriteRule(VOStatus.NEW);
processor.addAfterRule(wrMORewriteRule);
IRule<AggWrVO> moDiscadNumRewriteRule = new MoDiscadNumRewriteRule(2);
// 回写生产订单报废数量规则
IRule<AggWrVO> moDiscadNumRewriteRule = new MoDiscadNumRewriteRule(VOStatus.NEW);
processor.addAfterRule(moDiscadNumRewriteRule);
// 序列号保持规则
IRule<AggWrVO> snSaveRule = new WrSerialNoSaveRule();
processor.addAfterRule(snSaveRule);
// /** ͬ²½Ð޸ı¸Áϼƻ®Íê³É */
@ -158,27 +220,46 @@ public class WrInsertBP {
// processor.addAfterRule(pickMFinishRule);
// /** ******************** */
// 根据交易类型对保存后数据进行审批处理 和需求确认审批和保存放在一个事物里处理
if (!this.isOnlyInsert) {
processor.addAfterRule(new WrIsSaveAndApproveRule());
}
//根据生产报告交易类型 对需要报检的数据进行报检处理
processor.addAfterRule(new WrAuditAndApplyCheckRule());
//根据生产报告交易类型 对需要自动入库的的数据进行入库处理
processor.addAfterRule(new WrAuditAndProdInRule());
/** start update by liuguang 20250120 YBP-S-492290 生产报告保存时校验完工齐套检查**/
processor.addAfterRule(new WrScIndependRule());
/** end update by liuguang 20250120 YBP-S-492290 生产报告保存时校验完工齐套检查**/
}
/** @deprecated */
/**
* @deprecated 该方法将在V631版本废弃掉
*
* @return
*/
@Deprecated
protected IRule<AggWrVO> getMoRewriteRule() {
return null;
}
/** @deprecated */
/**
* @deprecated 该方法将在V631版本废弃掉
*
* @return
*/
@Deprecated
protected IRule<AggWrVO> getMoDiscadNumRewriteRule() {
return null;
}
/** @deprecated */
/**
* @deprecated 该方法将在V631版本废弃掉
*
* @return
*/
@Deprecated
protected IRule<AggWrVO> getAuditRule() {
return null;
@ -191,4 +272,5 @@ public class WrInsertBP {
public void setOnlyInsert(boolean isOnlyInsert) {
this.isOnlyInsert = isOnlyInsert;
}
}