PickmUpdateBP代码同步

This commit is contained in:
mzr 2025-11-20 09:10:06 +08:00
parent f4b7db4a58
commit 33bd32e15f
2 changed files with 91 additions and 35 deletions

View File

@ -1,41 +1,16 @@
package nc.bs.mmpac.pickm.bp;
import java.util.ArrayList;
import java.util.List;
import nc.bs.mmpac.pickm.bp.rule.AfterApproveRuleHighpressureIms;
import nc.bs.mmpac.pickm.bp.rule.AfterQtyUpdRuleHighpressureMes;
import nc.bs.mmpac.pickm.bp.rule.AfterupdateSyncEpicMesRule;
import nc.bs.mmpac.pickm.bp.rule.PickItemsSetVbdef36Rule;
import nc.bs.mmpac.pickm.plugin.PickmPluginPoint;
import nc.bs.mmpac.pickm.rule.PSCPickmRewriteMoPickmUpdateRule;
import nc.bs.mmpac.pickm.rule.PickmAutoApproveAfterSaveRule;
import nc.bs.mmpac.pickm.rule.PickmBillStatusToFreeRule;
import nc.bs.mmpac.pickm.rule.PickmCheckItemMaterialPermissionRule;
import nc.bs.mmpac.pickm.rule.PickmCheckMaterialPermissionRule;
import nc.bs.mmpac.pickm.rule.PickmCheckRowNOChangedRule;
import nc.bs.mmpac.pickm.rule.PickmCheckSameStockRule;
import nc.bs.mmpac.pickm.rule.PickmCreateSubMoRule;
import nc.bs.mmpac.pickm.rule.PickmFbackflustimeCheckRule;
import nc.bs.mmpac.pickm.rule.PickmItemVOFilterRule;
import nc.bs.mmpac.pickm.rule.PickmNeedDeliverBackCheckRule;
import nc.bs.mmpac.pickm.rule.PickmRowNoRule;
import nc.bs.mmpac.pickm.rule.PickmSaveRule;
import nc.bs.mmpac.pickm.rule.PickmSubMoAdjustSuggestRule;
import nc.bs.mmpac.pickm.rule.SNMaterialNotBackFlushRule;
import nc.bs.mmpac.pickm.rule.ic.PickmATPCheckRule;
import nc.bs.mmpac.pickm.rule.ic.PickmAdjustReserveWhenEditRule;
import nc.bs.mmpac.pickm.rule.ic.PickmAutoChangeStateRule;
import nc.bs.mmpac.pickm.rule.ic.PickmAutoReserveRule;
import nc.bs.mmpac.pickm.rule.ic.PickmRewriteOtherNumRule;
import nc.bs.mmpac.pickm.rule.*;
import nc.bs.mmpac.pickm.rule.ic.*;
import nc.bs.mmpac.pickm.rule.realsub.PickmRewritePLOWhenUpdateRule;
import nc.bs.mmpub.rule.MMATOMaterialCheckRule;
import nc.bs.mmpub.rule.MMAutoMaterialAssignRule;
import nc.bs.mmpub.rule.MMVOSagaFrozenValidateRule;
import nc.bs.pubapp.pub.rule.BillCodeCheckRule;
import nc.bs.pubapp.pub.rule.FieldLengthCheckRule;
import nc.bs.pubapp.pub.rule.FillUpdateDataRule;
import nc.bs.pubapp.pub.rule.OrgDisabledCheckRule;
import nc.bs.pubapp.pub.rule.UpdateBillCodeRule;
import nc.bs.pubapp.pub.rule.*;
import nc.bs.uif2.validation.ValidationFailure;
import nc.bsutil.mmpac.pickm.PickmSagasUtil;
import nc.impl.pubapp.bd.material.assistant.MarAssistantSaveRule;
@ -54,6 +29,9 @@ import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pickm.entity.PickmItemVO;
import nc.vo.pub.VOStatus;
import java.util.ArrayList;
import java.util.List;
/**
* 备料计划修改 BP
*/
@ -67,8 +45,6 @@ public class PickmUpdateBP {
private boolean isForYL;
private boolean isForNcc = false;
;
// 挪退料建议
private ValidationFailure checkInfo = new ValidationFailure();
@ -208,7 +184,7 @@ public class PickmUpdateBP {
processer.addAfterRule(subMoAdjustSuggestRule);
processer.addAfterRule(new AfterupdateSyncEpicMesRule());
// 备料计划变更后推送高压IMS
processer.addAfterRule(new AfterApproveRuleHighpressureIms());
// processer.addAfterRule(new AfterApproveRuleHighpressureIms());
// 备料计划预留推送高压MES
processer.addAfterRule(new AfterQtyUpdRuleHighpressureMes());
}
@ -328,6 +304,7 @@ public class PickmUpdateBP {
// 调用更新状态rule:自动完成 or 自动取消完成
ICompareRule<AggPickmVO> autoChangeStateRule = new PickmAutoChangeStateRule();
processer.addBeforeRule(autoChangeStateRule);
// sqz 赋值发货仓库现存量
processer.addBeforeRule(new PickItemsSetVbdef36Rule());
}
}

View File

@ -0,0 +1,79 @@
package nc.bs.mmpac.pickm.bp.rule;
import nc.bs.framework.common.NCLocator;
import nc.impl.pubapp.pattern.rule.IRule;
import nc.vo.cmp.util.StringUtils;
import nc.vo.ic.onhand.entity.OnhandNumVO;
import nc.vo.ic.onhand.entity.OnhandVO;
import nc.vo.mmpac.pickm.entity.AggPickmVO;
import nc.vo.mmpac.pickm.entity.PickmHeadVO;
import nc.vo.mmpac.pickm.entity.PickmItemVO;
import nc.vo.pub.lang.UFDouble;
import nccloud.api.ic.onhand.IAPIOnhandQuery;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 获取现存量,设置到自定义项36
*/
public class PickItemsSetVbdef36Rule implements IRule<AggPickmVO> {
@Override
public void process(AggPickmVO[] aggPickmVOS) {
for (AggPickmVO vo : aggPickmVOS) {
PickmHeadVO parentVO = vo.getParentVO();
String pkOrg1 = parentVO.getPk_org();
if (!"0001A1100000000026O8".equals(pkOrg1)) return;
PickmItemVO[] childrenVO = (PickmItemVO[]) vo.getChildrenVO();
Map<String, Object> map = new HashMap<>();
ArrayList<PickmItemVO> pickmItemVOS = new ArrayList<>();
for (PickmItemVO pickmItemVO : childrenVO) {
List<Map<String, Object>> onhandQueryListBatch = new ArrayList<>();
String coutstockid = pickmItemVO.getCoutstockid();
String cbmaterialid = pickmItemVO.getCbmaterialid();
// if (!"1001A11000000RYRQOPY".equals(cbmaterialid))continue;
String pkOrg = pickmItemVO.getPk_org();
String vbatchcode = pickmItemVO.getVbatchcode();
String cbprojectid = pickmItemVO.getCbprojectid();
if (StringUtils.isEmpty(coutstockid)) continue;
map.put("cwarehouseid", coutstockid);// 发料仓库
map.put("cmaterialoid", cbmaterialid);
map.put("pk_org", pkOrg);
if (!StringUtils.isEmpty(cbprojectid)) {
map.put("cprojectid", cbprojectid);
}
if (!StringUtils.isEmpty(vbatchcode)) {
map.put("vbatchcode", vbatchcode);
}
onhandQueryListBatch.add(map);
OnhandVO[] onhandNum = this.getOnhandNum(onhandQueryListBatch);
if (onhandNum != null) {
OnhandNumVO onhandNumVO = onhandNum[0].getOnhandNumVO();
UFDouble nonhandnum = onhandNumVO.getNonhandnum();
pickmItemVO.setVbdef36(String.valueOf(nonhandnum));
}
pickmItemVOS.add(pickmItemVO);
}
vo.setChildren(PickmItemVO.class, pickmItemVOS.toArray(new PickmItemVO[0]));
}
}
// 2025年11月7日 sqz根据物料组织仓库批次项目获取现存量
public OnhandVO[] getOnhandNum(List<Map<String, Object>> onhandQueryListBatch) {
OnhandVO[] onhandVOs = null;
try {
if (!onhandQueryListBatch.isEmpty()) {
onhandVOs = NCLocator.getInstance().lookup(IAPIOnhandQuery.class)
.queryOnhandVOByDimsNoTrans(onhandQueryListBatch);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return onhandVOs;
}
}