From f4b7db4a58dc9da7bdce257d4d9a8a009507f659 Mon Sep 17 00:00:00 2001 From: mzr Date: Wed, 19 Nov 2025 19:27:13 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=AE=B1=E5=8F=98-=E7=89=A9=E6=96=99-?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E6=8E=A8=E9=80=81=E5=90=AF=E6=BA=90-?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nc/bs/uapbd/task/mes/qy/MaterialToQmsPlugin.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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")); } } From 33bd32e15f0091ff08349e869493b5d0d0310a1f Mon Sep 17 00:00:00 2001 From: mzr Date: Thu, 20 Nov 2025 09:10:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?PickmUpdateBP=E4=BB=A3=E7=A0=81=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nc/bs/mmpac/pickm/bp/PickmUpdateBP.java | 47 +++-------- .../bp/rule/PickItemsSetVbdef36Rule.java | 79 +++++++++++++++++++ 2 files changed, 91 insertions(+), 35 deletions(-) create mode 100644 mmpac/src/private/nc/bs/mmpac/pickm/bp/rule/PickItemsSetVbdef36Rule.java 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; + } +}