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; + } +} diff --git a/uapbd/src/private/nc/bs/uapbd/task/mes/qy/MaterialToQmsPlugin.java b/uapbd/src/private/nc/bs/uapbd/task/mes/qy/MaterialToQmsPlugin.java index 873cb078..e8b55946 100644 --- a/uapbd/src/private/nc/bs/uapbd/task/mes/qy/MaterialToQmsPlugin.java +++ b/uapbd/src/private/nc/bs/uapbd/task/mes/qy/MaterialToQmsPlugin.java @@ -102,7 +102,7 @@ public class MaterialToQmsPlugin implements IBackgroundWorkPlugin { " LEFT JOIN bd_material a ON a.pk_material = b.pk_material" + " WHERE b.dr = 0 AND a.dr = 0" + " AND " + inStrPkOrg + - " AND (b.ts > '" + rangeTimeString + "' OR a.ts > '" + rangeTimeString + "')"; + " AND (b.ts > '" + rangeTimeString + "' OR a.ts > '" + rangeTimeString + "')"; List> pkList = (List>) getDao().executeQuery(sql, new MapListProcessor()); return pkList; } @@ -119,7 +119,7 @@ public class MaterialToQmsPlugin implements IBackgroundWorkPlugin { "pk_marbasclass = '" + pk_marbasclass + "'"); // 计量单位 // 过滤物料分类 - if(checkMrlType(mrlTypeName,configParams)){ + if (checkMrlType(mrlTypeName, configParams)) { continue; } Map unitMap = getGoodsInfo(pkMaterial); @@ -184,6 +184,7 @@ public class MaterialToQmsPlugin implements IBackgroundWorkPlugin { Object map = (Object) new BaseDAO().executeQuery(sql, new ColumnProcessor()); return map; } + private boolean checkMrlType(String mrlTypeName, Map configParams) throws BusinessException { // 从配置中获取目标类型字符串 String targetCode = configParams.get("mrlType"); @@ -219,12 +220,12 @@ public class MaterialToQmsPlugin implements IBackgroundWorkPlugin { String requestUrl = baseUrl + reqUrl; logger.error("QMS-Material-url = " + requestUrl); String result = ThirdPartyPostRequestUtil.sendPostRequest(requestUrl, jsonStr); - JSONObject resultObj = JSONObject.parseObject(result); logger.error("QMS-Material-res = " + result); + JSONObject resultObj = JSONObject.parseObject(result); if (!"true".equals(resultObj.getString("success"))) { logger.error("QMS-Material-error,result[" + resultObj.toJSONString() + "]"); - throw new BusinessException("QMS-Material-error:" + resultObj.getString("message")); + // throw new BusinessException("QMS-Material-error:" + resultObj.getString("message")); } }