生产订单实现全部上证后不允许再领料
This commit is contained in:
parent
f3fd6fde63
commit
4503123003
|
@ -0,0 +1,125 @@
|
||||||
|
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.PMOFinishAutoFinishPutPlanRule;
|
||||||
|
import nc.bs.mmpac.pmo.pac0002.rule.PMOToFinishPickMRule;
|
||||||
|
import nc.bs.mmpac.pmo.pac0002.rule.fill.PMOFillFinishValueRule;
|
||||||
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||||
|
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.BusinessException;
|
||||||
|
import nc.vo.pub.CircularlyAccessibleValueObject;
|
||||||
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class PMORowFinishBP
|
||||||
|
{
|
||||||
|
public PMOAggVO[] rowfinish(PMOAggVO[] vos) {
|
||||||
|
GCUpdateBPTemplate<PMOAggVO> bp = new GCUpdateBPTemplate<PMOAggVO>(PMOPluginPoint.ROWFINISH);
|
||||||
|
CompareAroundProcesser<PMOAggVO> processer = bp.getAroundProcesser();
|
||||||
|
addRowFinishBeforeRule(processer);
|
||||||
|
addRowFinishAfterRule(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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
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(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);
|
||||||
|
|
||||||
|
/** 同步修改备料计划完成(生产订单强制完工时) */
|
||||||
|
IRule<PMOAggVO> pMOToFinishPickMRule = new PMOToFinishPickMRule();
|
||||||
|
pMOToFinishPickMRule.process(newaggvos);
|
||||||
|
/** ******************** */
|
||||||
|
|
||||||
|
PMOAggVO newaggvo = PMOBPService.getIPMOQueryService().queryByPk(vos[0].getParentVO().getCpmohid());
|
||||||
|
return new PMOAggVO[] { newaggvo };
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (BusinessException e) {
|
||||||
|
ExceptionUtils.wrappException(e);
|
||||||
|
|
||||||
|
return returnvos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void addRowFinishBeforeRule(CompareAroundProcesser<PMOAggVO> processer) {
|
||||||
|
processer.addBeforeRule(new PMOFilterBillStatusRule(PMOConstLang.getMSG_ACTION_NO_AUDIT(), PMOFBillstatusEnum.AUDIT));
|
||||||
|
|
||||||
|
processer.addBeforeRule(new PMOFilterRowStatusRule(PMOConstLang.getMSG_RULE_NO_ROWDATA(), PMOFItemStatusEnum.PUT));
|
||||||
|
|
||||||
|
processer.addBeforeRule(new PMOFillFinishValueRule(false));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void addRowFinishAfterRule(CompareAroundProcesser<PMOAggVO> processer) { processer.addAfterRule(new PMOFinishAutoFinishPutPlanRule()); }
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
package nc.bs.mmpac.pmo.pac0002.rule;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import nc.bs.framework.common.NCLocator;
|
||||||
|
import nc.bs.mmpac.pmo.pac0002.bp.service.PMOBPService;
|
||||||
|
import nc.impl.mmpac.pickm.PickmMaintainServiceImpl;
|
||||||
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.md.persist.framework.IMDPersistenceQueryService;
|
||||||
|
import nc.util.mmf.framework.base.MMValueCheck;
|
||||||
|
import nc.vo.mmpac.pickm.entity.AggPickmVO;
|
||||||
|
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.util.PMOTransferUtil;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
|
||||||
|
public class PMOToFinishPickMRule
|
||||||
|
extends Object
|
||||||
|
implements IRule<PMOAggVO>{
|
||||||
|
public void process(PMOAggVO[] vos) {
|
||||||
|
if (MMValueCheck.isEmpty(vos)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 业务逻辑:
|
||||||
|
* 1.循环生产订单明细表
|
||||||
|
* 2.查看生产订单明细行的状态是否为完工(2)
|
||||||
|
* 3.若为完工状态,则根据生产订单明细表中生产订单行查询备料计划
|
||||||
|
* 4.修改备料计划为完成状态(3)
|
||||||
|
*/
|
||||||
|
for(int i = 0; i < vos.length; i++) {
|
||||||
|
PMOAggVO vo = vos[i];
|
||||||
|
PMOItemVO[] items = vo.getChildrenVO();
|
||||||
|
//循环生产订单明细
|
||||||
|
for(int j = 0; j < items.length; j++) {
|
||||||
|
PMOItemVO item = items[j];
|
||||||
|
//查看生产订单行状态是否为完工(2)
|
||||||
|
int fitemStatus = item.getFitemstatus();
|
||||||
|
if(fitemStatus != 2) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//根据生产订单行查询备料计划
|
||||||
|
String cmoid = item.getCmoid();
|
||||||
|
String whereSql = "nvl(mm_pickm.dr,0) = 0 and mm_pickm.vsourcemorowid = '" + cmoid + "'";
|
||||||
|
IMDPersistenceQueryService aggvoQueryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
|
||||||
|
// 根据主键查询得到aggvo
|
||||||
|
try {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
ArrayList<AggPickmVO> aggVOs = (ArrayList<AggPickmVO>)aggvoQueryService.queryBillOfVOByCond(AggPickmVO.class, whereSql, true, false);
|
||||||
|
if(aggVOs.size() <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//数组转换
|
||||||
|
AggPickmVO[] aggVOsArr = new AggPickmVO[aggVOs.size()];
|
||||||
|
for(int z=0; z<aggVOs.size(); z++) {
|
||||||
|
aggVOsArr[z] =aggVOs.get(z);
|
||||||
|
}
|
||||||
|
|
||||||
|
//备料计划完工
|
||||||
|
PickmMaintainServiceImpl ipickmMaintainService = new PickmMaintainServiceImpl();
|
||||||
|
ipickmMaintainService.finishPickm(aggVOsArr);
|
||||||
|
}catch(BusinessException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,260 @@
|
||||||
|
package nc.bs.mmpac.wr.bp;
|
||||||
|
|
||||||
|
import nc.bs.mmpac.wr.plugin.WrPluginPoint;
|
||||||
|
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.WrHeadNotNullRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.WrIsSaveAndApproveRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.WrNoneMainProductBomCheckRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.WrPickFilterRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.WrQualityFilterRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.WrRowNoRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.WrSetDefaultValueWhenInsertRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.WrSetItemDefaultValueRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.WrSetQualityVODefaultValueRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.batch.WrCreateBatProdRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.batch.WrCreateBatchCodeRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.check.WrNullRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.instockbatch.WrInsertAndDelInStockBatchCodeBeforeRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.instockbatch.WrInsertInStockBatchCodeAfterRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.mo.MoDiscadNumRewriteRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.mo.WrMORewriteRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.output.WrOutputNotNullRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.pick.WrPickNotNullRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.putplan.WrInsertRewriteWrNumForPutPlanRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.serialno.PickMFinishRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.serialno.WrMoSerialNoMarkIRule;
|
||||||
|
import nc.bs.mmpac.wr.rule.serialno.WrSerialNoAutoCreateBeforeRule;
|
||||||
|
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.pubapp.pub.rule.FieldLengthCheckRule;
|
||||||
|
import nc.bs.pubapp.pub.rule.FillInsertDataRule;
|
||||||
|
import nc.bs.pubapp.pub.rule.OrgDisabledCheckRule;
|
||||||
|
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.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.wr.entity.AggWrVO;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class WrInsertBP
|
||||||
|
{
|
||||||
|
private boolean isOnlyInsert = false;
|
||||||
|
|
||||||
|
public AggWrVO[] insert(AggWrVO[] vos) {
|
||||||
|
GCInsertBPTemplate<AggWrVO> bp = new GCInsertBPTemplate<AggWrVO>(WrPluginPoint.INSERT);
|
||||||
|
AroundProcesser<AggWrVO> processor = bp.getAroundProcesser();
|
||||||
|
|
||||||
|
addBeforeRule(processor, vos);
|
||||||
|
|
||||||
|
addAfterRule(processor);
|
||||||
|
return (AggWrVO[])bp.insert(vos);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void addBeforeRule(AroundProcesser<AggWrVO> processer, AggWrVO[] vos) {
|
||||||
|
IRule<AggWrVO> wrNullRule = new WrNullRule();
|
||||||
|
processer.addBeforeRule(wrNullRule);
|
||||||
|
|
||||||
|
OrgDisabledCheckRule orgDisabledCheckRule = new OrgDisabledCheckRule("pk_org", "FACTORYTYPE000000000");
|
||||||
|
processer.addBeforeRule(orgDisabledCheckRule);
|
||||||
|
|
||||||
|
UserDefSaveRule userDefSaveRule = new UserDefSaveRule(new String[] { "vdef", "vbdef", "vgdef", "vpdef" }, new Class[] { nc.vo.mmpac.wr.entity.WrVO.class, nc.vo.mmpac.wr.entity.WrItemVO.class, nc.vo.mmpac.wr.entity.WrQualityVO.class, nc.vo.mmpac.wr.entity.WrPickVO.class });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
processer.addBeforeRule(userDefSaveRule);
|
||||||
|
|
||||||
|
MarAssistantSaveRule<AggWrVO> marRule = new MarAssistantSaveRule<AggWrVO>();
|
||||||
|
processer.addBeforeRule(marRule);
|
||||||
|
|
||||||
|
FillInsertDataRule fillInsertDataRule1 = new FillInsertDataRule();
|
||||||
|
processer.addBeforeRule(fillInsertDataRule1);
|
||||||
|
|
||||||
|
IRule<AggWrVO> orgPermissionRule = new WrCheckMaterialPermissionRule();
|
||||||
|
processer.addBeforeRule(orgPermissionRule);
|
||||||
|
|
||||||
|
IRule<AggWrVO> moCloseRule = new WrCheckMoIsCloseRule();
|
||||||
|
processer.addBeforeRule(moCloseRule);
|
||||||
|
|
||||||
|
processer.addBeforeRule(new MMCheckMaterialVirtualRule(nc.vo.mmpac.wr.entity.WrItemVO.class));
|
||||||
|
|
||||||
|
IRule<AggWrVO> wrSetDefaultValueWhenInsertRule = new WrSetDefaultValueWhenInsertRule();
|
||||||
|
processer.addBeforeRule(wrSetDefaultValueWhenInsertRule);
|
||||||
|
|
||||||
|
IRule<AggWrVO> wrSetItemDefaultValueRule = new WrSetItemDefaultValueRule();
|
||||||
|
processer.addBeforeRule(wrSetItemDefaultValueRule);
|
||||||
|
|
||||||
|
MMCreateBillcodeAndTrantypecodeRule mMCreateBillcodeAndTrantypecodeRule = new MMCreateBillcodeAndTrantypecodeRule("55A4", "vbillcode", "pk_group", "pk_org", "vtrantypecode");
|
||||||
|
|
||||||
|
|
||||||
|
processer.addBeforeRule(mMCreateBillcodeAndTrantypecodeRule);
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
IRule<AggWrVO> wrNoneMainProductBomCheckRule = new WrNoneMainProductBomCheckRule();
|
||||||
|
processer.addBeforeRule(wrNoneMainProductBomCheckRule);
|
||||||
|
|
||||||
|
IRule<AggWrVO> wrConsumeNotNullRule = new WrPickNotNullRule();
|
||||||
|
processer.addBeforeRule(wrConsumeNotNullRule);
|
||||||
|
|
||||||
|
FieldLengthCheckRule fieldLengthCheckRule = new FieldLengthCheckRule();
|
||||||
|
processer.addBeforeRule(fieldLengthCheckRule);
|
||||||
|
|
||||||
|
IRule<AggWrVO> wrInsertAndDelInStockBatchCodeBeforeRule = new WrInsertAndDelInStockBatchCodeBeforeRule();
|
||||||
|
processer.addBeforeRule(wrInsertAndDelInStockBatchCodeBeforeRule);
|
||||||
|
|
||||||
|
WrSetQualityVODefaultValueRule wrSetQualityVODefaultValueRule = new WrSetQualityVODefaultValueRule();
|
||||||
|
processer.addBeforeRule(wrSetQualityVODefaultValueRule);
|
||||||
|
|
||||||
|
processer.addBeforeRule(new WrSerialNoCheckCodeRepeat());
|
||||||
|
|
||||||
|
WrSerialNoAutoCreateBeforeRule wrAutoCreateSnBeforeRule = new WrSerialNoAutoCreateBeforeRule();
|
||||||
|
processer.addBeforeRule(wrAutoCreateSnBeforeRule);
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
processer.addBeforeRule(new WrCheckTranstypeCodeRule());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void addAfterRule(AroundProcesser<AggWrVO> processor) {
|
||||||
|
MMBillCodeCheckAndTrantypeRule mMBillCodeCheckAndTrantypeRule = new MMBillCodeCheckAndTrantypeRule("55A4", "vbillcode", "pk_group", "pk_org", "vtrantypecode");
|
||||||
|
|
||||||
|
|
||||||
|
processor.addAfterRule(mMBillCodeCheckAndTrantypeRule);
|
||||||
|
|
||||||
|
IRule<AggWrVO> wrCreateInStockBatchCodeAfterRule = new WrInsertInStockBatchCodeAfterRule();
|
||||||
|
processor.addAfterRule(wrCreateInStockBatchCodeAfterRule);
|
||||||
|
|
||||||
|
processor.addAfterRule(new WrInsertRewriteWrNumForPutPlanRule());
|
||||||
|
|
||||||
|
IRule<AggWrVO> wrMORewriteRule = new WrMORewriteRule(2);
|
||||||
|
processor.addAfterRule(wrMORewriteRule);
|
||||||
|
|
||||||
|
IRule<AggWrVO> moDiscadNumRewriteRule = new MoDiscadNumRewriteRule(2);
|
||||||
|
processor.addAfterRule(moDiscadNumRewriteRule);
|
||||||
|
|
||||||
|
IRule<AggWrVO> snSaveRule = new WrSerialNoSaveRule();
|
||||||
|
processor.addAfterRule(snSaveRule);
|
||||||
|
|
||||||
|
/** ͬ²½Ð޸ı¸Áϼƻ®Íê³É */
|
||||||
|
IRule<AggWrVO> pickMFinishRule = new PickMFinishRule();
|
||||||
|
processor.addAfterRule(pickMFinishRule);
|
||||||
|
/** ******************** */
|
||||||
|
|
||||||
|
|
||||||
|
if (!this.isOnlyInsert) {
|
||||||
|
processor.addAfterRule(new WrIsSaveAndApproveRule());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
protected IRule<AggWrVO> getMoRewriteRule() { return null; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
protected IRule<AggWrVO> getMoDiscadNumRewriteRule() { return null; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
protected IRule<AggWrVO> getAuditRule() { return null; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isOnlyInsert() { return this.isOnlyInsert; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void setOnlyInsert(boolean isOnlyInsert) { this.isOnlyInsert = isOnlyInsert; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Location: E:\project\taikai\ncchome\modules\mmpac\META-INF\lib\mmpac_wr.jar!/nc/bs/mmpac/wr/bp/WrInsertBP.class
|
||||||
|
* Java compiler version: 8 (52.0)
|
||||||
|
* JD-Core Version: 1.0.7
|
||||||
|
*/
|
|
@ -0,0 +1,100 @@
|
||||||
|
package nc.bs.mmpac.wr.rule.serialno;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import nc.bs.framework.common.NCLocator;
|
||||||
|
import nc.bs.mmpac.pmo.pac0002.bp.query.PMOItemVOQueryBP;
|
||||||
|
import nc.bs.mmpac.wr.rule.serialno.doc.WrSerialNoDocInsertControl;
|
||||||
|
import nc.impl.mmpac.pickm.PickmMaintainServiceImpl;
|
||||||
|
import nc.impl.obm.pattern.data.bill.BillQuery;
|
||||||
|
import nc.impl.pubapp.pattern.data.vo.VOQuery;
|
||||||
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.md.persist.framework.IMDPersistenceQueryService;
|
||||||
|
import nc.util.mmf.framework.base.MMValueCheck;
|
||||||
|
import nc.util.mmpac.wr.vochange.WrBusiVOToChangeVO;
|
||||||
|
import nc.vo.mmpac.pickm.entity.AggPickmVO;
|
||||||
|
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
|
||||||
|
import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO;
|
||||||
|
import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO;
|
||||||
|
import nc.vo.mmpac.wr.entity.AggWrChangeVO;
|
||||||
|
import nc.vo.mmpac.wr.entity.AggWrVO;
|
||||||
|
import nc.vo.mmpac.wr.entity.WrItemVO;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class PickMFinishRule
|
||||||
|
extends Object
|
||||||
|
implements IRule<AggWrVO>
|
||||||
|
{
|
||||||
|
public void process(AggWrVO[] vos) {
|
||||||
|
if (MMValueCheck.isEmpty(vos)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 业务逻辑:
|
||||||
|
* 1.根据生产报告子表中生产订单行查看生产订单明细表
|
||||||
|
* 2.查看生产订单明细行的状态是否为完工(2)
|
||||||
|
* 3.若为完工状态,则根据生成报告子表中生产订单行查询备料计划
|
||||||
|
* 4.修改备料计划为完成状态(3)
|
||||||
|
*/
|
||||||
|
for(int i = 0; i < vos.length; i++) {
|
||||||
|
AggWrVO vo = vos[i];
|
||||||
|
WrItemVO[] items = vo.getChildrenVO();
|
||||||
|
//循环生产报告子表
|
||||||
|
for(int j = 0; j < items.length; j++) {
|
||||||
|
WrItemVO item = items[j];
|
||||||
|
String cbmobid = item.getCbmobid();
|
||||||
|
String[] keys = {cbmobid};
|
||||||
|
//生产订单行查询
|
||||||
|
PMOItemVO[] pmoItemvos = (new PMOItemVOQueryBP()).getPMOItemVOsByids(keys);
|
||||||
|
//查看生产订单行状态是否为完工(2)
|
||||||
|
if(pmoItemvos.length > 0) {
|
||||||
|
PMOItemVO pmoItem = pmoItemvos[0];
|
||||||
|
int fitemStatus = pmoItem.getFitemstatus();
|
||||||
|
if(fitemStatus != 2) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//根据生产订单行查询备料计划
|
||||||
|
// BillQuery<AggPickmVO> query = new BillQuery<AggPickmVO>(AggPickmVO.class);
|
||||||
|
// AggPickmVO[] aggVOs = (AggPickmVO[])query.query(keys);
|
||||||
|
|
||||||
|
String whereSql = "nvl(mm_pickm.dr,0) = 0 and mm_pickm.vsourcemorowid = '" + cbmobid + "'";
|
||||||
|
IMDPersistenceQueryService aggvoQueryService = NCLocator.getInstance().lookup(IMDPersistenceQueryService.class);
|
||||||
|
// 根据主键查询得到aggvo
|
||||||
|
try {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
ArrayList<AggPickmVO> aggVOs = (ArrayList<AggPickmVO>)aggvoQueryService.queryBillOfVOByCond(AggPickmVO.class, whereSql, true, false);
|
||||||
|
if(aggVOs.size() <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//数组转换
|
||||||
|
AggPickmVO[] aggVOsArr = new AggPickmVO[aggVOs.size()];
|
||||||
|
for(int z=0; z<aggVOs.size(); z++) {
|
||||||
|
aggVOsArr[z] =aggVOs.get(z);
|
||||||
|
}
|
||||||
|
|
||||||
|
//备料计划完工
|
||||||
|
PickmMaintainServiceImpl ipickmMaintainService = new PickmMaintainServiceImpl();
|
||||||
|
ipickmMaintainService.finishPickm(aggVOsArr);
|
||||||
|
}catch(BusinessException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
AggWrChangeVO[] aggChangeVOs = WrBusiVOToChangeVO.changeOnlySerialNoVO(vos);
|
||||||
|
|
||||||
|
WrSerialNoDocInsertControl inSertControl = new WrSerialNoDocInsertControl();
|
||||||
|
inSertControl.process(aggChangeVOs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue