材料出库后调备料计划修改mes接口
This commit is contained in:
parent
5d46717594
commit
0caa012c76
|
|
@ -0,0 +1,308 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package nc.bs.mmpac.pickm.bp.rewrite;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import nc.bs.mmpac.pickm.adapter.IC4DServiceAdapter;
|
||||||
|
import nc.bs.mmpac.pickm.adapter.ReserveServiceAdapter;
|
||||||
|
import nc.bs.mmpac.pickm.rule.batch.PickmAutoBatchBindRule;
|
||||||
|
import nc.bs.mmpac.pickm.rule.ic.PickmAutoChangeStateRule;
|
||||||
|
import nc.bs.mmpac.pickm.rule.ic.PickmCheckBillStatusForRewritePickmRule;
|
||||||
|
import nc.bs.mmpac.pickm.rule.ic.PickmCheckMoStateForDeliveryRule;
|
||||||
|
import nc.bs.mmpac.pickm.rule.ic.PickmCheckUnClose4455When4DRewriteRule;
|
||||||
|
import nc.bs.mmpac.pickm.rule.ic.PickmFillVacancyWhenRewriteRule;
|
||||||
|
import nc.bs.mmpac.pickm.rule.ic.PickmRewriteNumFor4DRule;
|
||||||
|
import nc.bs.mmpac.pickm.rule.ic.PickmRewriteOtherNumRule;
|
||||||
|
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
|
||||||
|
import nc.bs.uif2.validation.ValidationException;
|
||||||
|
import nc.bs.uif2.validation.ValidationFailure;
|
||||||
|
import nc.bsutil.mmpac.pickm.PickmSagasUtil;
|
||||||
|
import nc.impl.pubapp.pattern.data.vo.VOQuery;
|
||||||
|
import nc.impl.pubapp.pattern.data.vo.VOUpdate;
|
||||||
|
import nc.impl.pubapp.pattern.rule.IRule;
|
||||||
|
import nc.pubitf.ic.m4d.mm55a3.PickmQueryOutParamFor4D;
|
||||||
|
import nc.pubitf.ic.m4d.mm55a3.PickmQueryParamFor4D;
|
||||||
|
import nc.util.mmf.framework.base.MMArrayUtil;
|
||||||
|
import nc.util.mmf.framework.base.MMCollectionUtil;
|
||||||
|
import nc.util.mmf.framework.base.MMValueCheck;
|
||||||
|
import nc.util.mmf.framework.db.MMSqlBuilder;
|
||||||
|
import nc.vo.ic.reserve.entity.ReserveVO;
|
||||||
|
import nc.vo.mmpac.pickm.consts.PickmLangConsts;
|
||||||
|
import nc.vo.mmpac.pickm.entity.AggPickmVO;
|
||||||
|
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
|
||||||
|
import nc.vo.mmpac.pickm.entity.PickmItemVO;
|
||||||
|
import nc.vo.mmpac.pickm.enumeration.FbillstatusEnum;
|
||||||
|
import nc.vo.mmpac.pickm.param.PickmTransParamFor4D;
|
||||||
|
import nc.vo.mmpac.pickm.util.base.PickmCloneUtil;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.pub.ISuperVO;
|
||||||
|
import nc.vo.pub.SuperVO;
|
||||||
|
import nc.vo.pub.lang.UFDouble;
|
||||||
|
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||||
|
import nc.vo.pubapp.pattern.pub.MapList;
|
||||||
|
import nc.vo.util.BDPKLockUtil;
|
||||||
|
import nc.vo.util.BDVersionValidationUtil;
|
||||||
|
import nccloud.web.mmpac.pickm.service.SyncGyMesPickmUtil;
|
||||||
|
|
||||||
|
public class PickmRewriteNNum4DBP {
|
||||||
|
private MapList<String, PickmTransParamFor4D> paraCache;
|
||||||
|
|
||||||
|
public PickmRewriteNNum4DBP() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rewriteNPlanNumAndNAccountNum4D(MapList<String, PickmTransParamFor4D> paraMap, AggPickmVO[] aggVOs) throws BusinessException {
|
||||||
|
this.paraCache = paraMap;
|
||||||
|
List<PickmQueryParamFor4D> paramList = new ArrayList();
|
||||||
|
List<PickmItemVO> itemList = new ArrayList();
|
||||||
|
AggPickmVO[] var5 = aggVOs;
|
||||||
|
int var6 = aggVOs.length;
|
||||||
|
|
||||||
|
for(int var7 = 0; var7 < var6; ++var7) {
|
||||||
|
AggPickmVO agg = var5[var7];
|
||||||
|
PickmItemVO[] items = (PickmItemVO[])agg.getChildrenVO();
|
||||||
|
PickmItemVO[] var10 = items;
|
||||||
|
int var11 = items.length;
|
||||||
|
|
||||||
|
for(int var12 = 0; var12 < var11; ++var12) {
|
||||||
|
PickmItemVO item = var10[var12];
|
||||||
|
itemList.add(item);
|
||||||
|
if (paraMap.containsKey(item.getCpickm_bid()) && MMValueCheck.isTrue(item.getBunibatch())) {
|
||||||
|
PickmQueryParamFor4D param = new PickmQueryParamFor4D();
|
||||||
|
param.setCpickmbid(item.getCpickm_bid());
|
||||||
|
paramList.add(param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, List<PickmQueryOutParamFor4D>> bunibatchMap = IC4DServiceAdapter.getMaterialOuterviceFor55A3().queryMaterialOutBatchCode((PickmQueryParamFor4D[])paramList.toArray(new PickmQueryParamFor4D[0]));
|
||||||
|
if (null != bunibatchMap) {
|
||||||
|
this.validateBuniBatch(aggVOs, bunibatchMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
BDPKLockUtil.lockSuperVO((SuperVO[])itemList.toArray(new PickmItemVO[0]));
|
||||||
|
BDVersionValidationUtil.validateSuperVO((SuperVO[])itemList.toArray(new PickmItemVO[0]));
|
||||||
|
this.processBeforeRule(aggVOs);
|
||||||
|
PickmSagasUtil.addSagaAndCompensate4DRewrite(aggVOs, this.paraCache);
|
||||||
|
List<PickmHeadVO> headVOs = new ArrayList();
|
||||||
|
List<PickmItemVO> itemVOs = new ArrayList();
|
||||||
|
AggPickmVO[] var21 = aggVOs;
|
||||||
|
int var24 = aggVOs.length;
|
||||||
|
|
||||||
|
for(int var27 = 0; var27 < var24; ++var27) {
|
||||||
|
AggPickmVO aggVO = var21[var27];
|
||||||
|
PickmHeadVO headVO = aggVO.getParentVO();
|
||||||
|
if (null != headVO) {
|
||||||
|
headVOs.add(headVO);
|
||||||
|
Object[] items = aggVO.getChildren(PickmItemVO.class);
|
||||||
|
if (MMArrayUtil.isNotEmpty(items)) {
|
||||||
|
ISuperVO[] var33 = (ISuperVO[]) items;
|
||||||
|
int var15 = items.length;
|
||||||
|
|
||||||
|
for(int var16 = 0; var16 < var15; ++var16) {
|
||||||
|
Object obj = var33[var16];
|
||||||
|
itemVOs.add((PickmItemVO)obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MMCollectionUtil.isNotEmpty(headVOs)) {
|
||||||
|
BDPKLockUtil.lockSuperVO((SuperVO[])headVOs.toArray(new PickmHeadVO[0]));
|
||||||
|
BDVersionValidationUtil.validateSuperVO((SuperVO[])headVOs.toArray(new PickmHeadVO[0]));
|
||||||
|
List<PickmHeadVO> heads = new ArrayList();
|
||||||
|
Iterator var25 = headVOs.iterator();
|
||||||
|
|
||||||
|
while(var25.hasNext()) {
|
||||||
|
PickmHeadVO head = (PickmHeadVO)var25.next();
|
||||||
|
if (head.getStatus() == 1) {
|
||||||
|
heads.add(head);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MMCollectionUtil.isNotEmpty(heads)) {
|
||||||
|
VOUpdate<PickmHeadVO> update = new VOUpdate();
|
||||||
|
update.update((PickmHeadVO[])heads.toArray(new PickmHeadVO[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MMCollectionUtil.isNotEmpty(itemVOs)) {
|
||||||
|
PickmItemVO[] updateItems = PickmRewriteUtil.getUpdateItemVOs(paraMap.keySet(), itemVOs);
|
||||||
|
this.releaseReserve((PickmHeadVO[])headVOs.toArray(new PickmHeadVO[0]), updateItems);
|
||||||
|
VOUpdate<PickmItemVO> update = new VOUpdate();
|
||||||
|
PickmItemVO[] pickmItemVOS = update.update(updateItems);
|
||||||
|
|
||||||
|
//备料计划点击备料重算后调高压MES修改
|
||||||
|
SyncGyMesPickmUtil pickmUtil = new SyncGyMesPickmUtil();
|
||||||
|
pickmUtil.process(aggVOs);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void releaseReserve(PickmHeadVO[] headVOs, PickmItemVO[] updateItems) throws BusinessException {
|
||||||
|
if (!MMValueCheck.isEmpty(headVOs)) {
|
||||||
|
Set<String> hidSet = new HashSet();
|
||||||
|
PickmHeadVO[] var4 = headVOs;
|
||||||
|
int var5 = headVOs.length;
|
||||||
|
|
||||||
|
for(int var6 = 0; var6 < var5; ++var6) {
|
||||||
|
PickmHeadVO hvo = var4[var6];
|
||||||
|
if (MMValueCheck.isNotEmpty(hvo.getFbillstatus()) && FbillstatusEnum.FINISH_STATE.toIntValue() == hvo.getFbillstatus()) {
|
||||||
|
hidSet.add(hvo.getCpickmid());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!MMValueCheck.isEmpty(hidSet)) {
|
||||||
|
MMSqlBuilder sql = new MMSqlBuilder();
|
||||||
|
sql.append(" and ");
|
||||||
|
sql.append("cpickmid", (String[])hidSet.toArray(new String[0]));
|
||||||
|
VOQuery<PickmItemVO> voQuery = new VOQuery(PickmItemVO.class);
|
||||||
|
PickmItemVO[] ivos = (PickmItemVO[])voQuery.query(sql.toString(), (String)null);
|
||||||
|
Set<String> bidSet = new HashSet();
|
||||||
|
PickmItemVO[] var8 = ivos;
|
||||||
|
int var9 = ivos.length;
|
||||||
|
|
||||||
|
for(int var10 = 0; var10 < var9; ++var10) {
|
||||||
|
PickmItemVO ivo = var8[var10];
|
||||||
|
bidSet.add(ivo.getCpickm_bid());
|
||||||
|
}
|
||||||
|
|
||||||
|
this.releaseIDs((String[])bidSet.toArray(new String[0]), updateItems);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void releaseIDs(String[] releasePickmbids, PickmItemVO[] updateItems) throws BusinessException {
|
||||||
|
ReserveVO[] rvos = ReserveServiceAdapter.queryReserver(releasePickmbids);
|
||||||
|
if (!MMValueCheck.isEmpty(rvos)) {
|
||||||
|
Map<String, PickmItemVO> ivoMap = new HashMap();
|
||||||
|
PickmItemVO[] var5 = updateItems;
|
||||||
|
int var6 = updateItems.length;
|
||||||
|
|
||||||
|
int var7;
|
||||||
|
for(var7 = 0; var7 < var6; ++var7) {
|
||||||
|
PickmItemVO ivo = var5[var7];
|
||||||
|
ivoMap.put(ivo.getCpickm_bid(), ivo);
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<String> releaseidSet = new HashSet();
|
||||||
|
ReserveVO[] var12 = rvos;
|
||||||
|
var7 = rvos.length;
|
||||||
|
|
||||||
|
for(int var13 = 0; var13 < var7; ++var13) {
|
||||||
|
ReserveVO rvo = var12[var13];
|
||||||
|
if (ivoMap.containsKey(rvo.getCreqbillbid())) {
|
||||||
|
PickmItemVO ivo = (PickmItemVO)ivoMap.get(rvo.getCreqbillbid());
|
||||||
|
ivo.setNatpastnum(UFDouble.ZERO_DBL);
|
||||||
|
ivo.setNatpnum(UFDouble.ZERO_DBL);
|
||||||
|
}
|
||||||
|
|
||||||
|
releaseidSet.add(rvo.getCreqbillbid());
|
||||||
|
}
|
||||||
|
|
||||||
|
ReserveServiceAdapter.batchAdjustReserveWhenDeliver((String[])releaseidSet.toArray(new String[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateBuniBatch(AggPickmVO[] aggs, Map<String, List<PickmQueryOutParamFor4D>> bunibatchMap) {
|
||||||
|
List<ValidationFailure> failures = new ArrayList();
|
||||||
|
failures.add(new ValidationFailure(PickmLangConsts.getErr_RewriteError()));
|
||||||
|
AggPickmVO[] var4 = aggs;
|
||||||
|
int var5 = aggs.length;
|
||||||
|
|
||||||
|
for(int var6 = 0; var6 < var5; ++var6) {
|
||||||
|
AggPickmVO agg = var4[var6];
|
||||||
|
PickmItemVO[] items = (PickmItemVO[])agg.getChildrenVO();
|
||||||
|
PickmItemVO[] var9 = items;
|
||||||
|
int var10 = items.length;
|
||||||
|
|
||||||
|
for(int var11 = 0; var11 < var10; ++var11) {
|
||||||
|
PickmItemVO item = var9[var11];
|
||||||
|
if (bunibatchMap.containsKey(item.getCpickm_bid()) && MMValueCheck.isNotEmpty((Collection)bunibatchMap.get(item.getCpickm_bid())) && MMValueCheck.isTrue(((PickmQueryOutParamFor4D)((List)bunibatchMap.get(item.getCpickm_bid())).get(0)).getIsMixBatch())) {
|
||||||
|
failures.add(new ValidationFailure(PickmLangConsts.getErr_PickmBidCannotBuniBantch(new String[]{agg.getParentVO().getVbillcode(), item.getVrowno()})));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (failures.size() > 1) {
|
||||||
|
ExceptionUtils.wrappException(new ValidationException(failures));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processBeforeRule(AggPickmVO[] aggVOs) {
|
||||||
|
if (!MMArrayUtil.isEmpty(aggVOs)) {
|
||||||
|
AggPickmVO[] originAggVOs = PickmCloneUtil.clonePickmVOs(aggVOs);
|
||||||
|
IRule<AggPickmVO> sagasCheckrule = new MMVOSagaFrozenValidateRule(true);
|
||||||
|
sagasCheckrule.process(aggVOs);
|
||||||
|
PickmCheckBillStatusForRewritePickmRule pickmCheckBillStatusForRewritePickmRule = new PickmCheckBillStatusForRewritePickmRule();
|
||||||
|
pickmCheckBillStatusForRewritePickmRule.process(aggVOs);
|
||||||
|
IRule<AggPickmVO> chkmostsRule = new PickmCheckMoStateForDeliveryRule();
|
||||||
|
chkmostsRule.process(aggVOs);
|
||||||
|
PickmCheckUnClose4455When4DRewriteRule unClose4455CheckRule = new PickmCheckUnClose4455When4DRewriteRule();
|
||||||
|
unClose4455CheckRule.CheckUnClose4455When4DEdit(this.paraCache, aggVOs);
|
||||||
|
PickmRewriteNumFor4DRule rewriteRule = new PickmRewriteNumFor4DRule(this.paraCache);
|
||||||
|
rewriteRule.process(aggVOs);
|
||||||
|
PickmFillVacancyWhenRewriteRule fillVacancyRule = new PickmFillVacancyWhenRewriteRule();
|
||||||
|
fillVacancyRule.process(aggVOs);
|
||||||
|
PickmAutoBatchBindRule batchBindRule = new PickmAutoBatchBindRule(this.paraCache);
|
||||||
|
batchBindRule.process(aggVOs);
|
||||||
|
PickmRewriteOtherNumRule setPartsRule = new PickmRewriteOtherNumRule();
|
||||||
|
setPartsRule.process(aggVOs);
|
||||||
|
PickmAutoChangeStateRule autoChangeStateRule = new PickmAutoChangeStateRule();
|
||||||
|
autoChangeStateRule.process(aggVOs, originAggVOs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rewriteNPlanNumAndNAccountNum4DSagasCheck(MapList<String, PickmTransParamFor4D> paraMap, AggPickmVO[] aggVOs) throws BusinessException {
|
||||||
|
this.paraCache = paraMap;
|
||||||
|
List<PickmQueryParamFor4D> paramList = new ArrayList();
|
||||||
|
List<PickmItemVO> itemList = new ArrayList();
|
||||||
|
AggPickmVO[] var5 = aggVOs;
|
||||||
|
int var6 = aggVOs.length;
|
||||||
|
|
||||||
|
for(int var7 = 0; var7 < var6; ++var7) {
|
||||||
|
AggPickmVO agg = var5[var7];
|
||||||
|
PickmItemVO[] items = (PickmItemVO[])agg.getChildrenVO();
|
||||||
|
PickmItemVO[] var10 = items;
|
||||||
|
int var11 = items.length;
|
||||||
|
|
||||||
|
for(int var12 = 0; var12 < var11; ++var12) {
|
||||||
|
PickmItemVO item = var10[var12];
|
||||||
|
itemList.add(item);
|
||||||
|
if (paraMap.containsKey(item.getCpickm_bid()) && MMValueCheck.isTrue(item.getBunibatch())) {
|
||||||
|
PickmQueryParamFor4D param = new PickmQueryParamFor4D();
|
||||||
|
param.setCpickmbid(item.getCpickm_bid());
|
||||||
|
paramList.add(param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, List<PickmQueryOutParamFor4D>> bunibatchMap = IC4DServiceAdapter.getMaterialOuterviceFor55A3().queryMaterialOutBatchCode((PickmQueryParamFor4D[])paramList.toArray(new PickmQueryParamFor4D[0]));
|
||||||
|
if (null != bunibatchMap) {
|
||||||
|
this.validateBuniBatch(aggVOs, bunibatchMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!MMArrayUtil.isEmpty(aggVOs)) {
|
||||||
|
IRule<AggPickmVO> sagasCheckrule = new MMVOSagaFrozenValidateRule(true);
|
||||||
|
sagasCheckrule.process(aggVOs);
|
||||||
|
PickmCheckBillStatusForRewritePickmRule pickmCheckBillStatusForRewritePickmRule = new PickmCheckBillStatusForRewritePickmRule();
|
||||||
|
pickmCheckBillStatusForRewritePickmRule.process(aggVOs);
|
||||||
|
IRule<AggPickmVO> chkmostsRule = new PickmCheckMoStateForDeliveryRule();
|
||||||
|
chkmostsRule.process(aggVOs);
|
||||||
|
PickmCheckUnClose4455When4DRewriteRule unClose4455CheckRule = new PickmCheckUnClose4455When4DRewriteRule();
|
||||||
|
unClose4455CheckRule.CheckUnClose4455When4DEdit(this.paraCache, aggVOs);
|
||||||
|
PickmRewriteNumFor4DRule rewriteRule = new PickmRewriteNumFor4DRule(this.paraCache);
|
||||||
|
rewriteRule.process(aggVOs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue