同步代码
This commit is contained in:
parent
677fb310df
commit
7123eadd82
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue