diff --git a/mmpac/src/private/nc/bs/mmpac/pickm/bp/PickmUpdateBP.java b/mmpac/src/private/nc/bs/mmpac/pickm/bp/PickmUpdateBP.java index 9ae9b818..dbecc262 100644 --- a/mmpac/src/private/nc/bs/mmpac/pickm/bp/PickmUpdateBP.java +++ b/mmpac/src/private/nc/bs/mmpac/pickm/bp/PickmUpdateBP.java @@ -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(); @@ -207,9 +183,9 @@ public class PickmUpdateBP { ICompareRule subMoAdjustSuggestRule = new PickmSubMoAdjustSuggestRule(this.checkInfo); processer.addAfterRule(subMoAdjustSuggestRule); processer.addAfterRule(new AfterupdateSyncEpicMesRule()); - //备料计划变更后推送高压IMS - processer.addAfterRule(new AfterApproveRuleHighpressureIms()); - //备料计划预留推送高压MES + // 备料计划变更后推送高压IMS + // processer.addAfterRule(new AfterApproveRuleHighpressureIms()); + // 备料计划预留推送高压MES processer.addAfterRule(new AfterQtyUpdRuleHighpressureMes()); } @@ -328,6 +304,7 @@ public class PickmUpdateBP { // 调用更新状态rule:自动完成 or 自动取消完成 ICompareRule autoChangeStateRule = new PickmAutoChangeStateRule(); processer.addBeforeRule(autoChangeStateRule); - + // sqz 赋值发货仓库现存量 + processer.addBeforeRule(new PickItemsSetVbdef36Rule()); } } diff --git a/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/PickItemsSetVbdef36Rule.java b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/PickItemsSetVbdef36Rule.java new file mode 100644 index 00000000..5e61e1db --- /dev/null +++ b/mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/PickItemsSetVbdef36Rule.java @@ -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 { + @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 map = new HashMap<>(); + ArrayList pickmItemVOS = new ArrayList<>(); + for (PickmItemVO pickmItemVO : childrenVO) { + List> 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> 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; + } +}