From 071394bf644c167b13c5477c51d1ae3e6a857962 Mon Sep 17 00:00:00 2001 From: mzr <1562242162@qq.com> Date: Mon, 25 Aug 2025 22:15:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(mmpac):=20=E4=BC=98=E5=8C=96=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E7=94=9F=E4=BA=A7=E8=AE=A2=E5=8D=95=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E7=94=9F=E4=BA=A7BOM=E5=AD=97=E6=AE=B5=E9=80=BB=E8=BE=91=20-?= =?UTF-8?q?=20=E5=A2=9E=E5=8A=A0=E9=85=8D=E7=BD=AE=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=EF=BC=8C=E5=8F=AA=E5=A4=84=E7=90=86=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E7=9A=84=E7=BB=84=E7=BB=87=20-=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=B9=B6=E8=B5=8B=E5=80=BC=E7=94=9F=E4=BA=A7BOM=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E5=92=8CID=20-=20=E6=B7=BB=E5=8A=A0=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E5=A4=84=E7=90=86=E5=92=8C=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pmo/pac0002/bp/rule/BeforePmoBomRule.java | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoBomRule.java b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoBomRule.java index 29f12c6..10016af 100644 --- a/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoBomRule.java +++ b/mmpac/src/private/nc/bs/mmpac/pmo/pac0002/bp/rule/BeforePmoBomRule.java @@ -3,11 +3,16 @@ package nc.bs.mmpac.pmo.pac0002.bp.rule; import nc.bs.logging.Logger; import nc.bs.uapbd.util.MyHelper; import nc.impl.pubapp.pattern.rule.IRule; +import nc.vo.bd.bom.bom0202.entity.BomVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOAggVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.org.FactoryVO; import nc.vo.pub.BusinessException; +import nc.vo.am.common.util.StringUtils; +import nc.vo.pubapp.pattern.exception.ExceptionUtils; + +import java.util.Map; /** * 流程生产订单赋值生产BOM字段 @@ -20,29 +25,55 @@ public class BeforePmoBomRule implements IRule { @Override public void process(PMOAggVO[] vos) { try { + Map configParams = MyHelper.getConfigParams("xb-config", null); + if (configParams.isEmpty()) { + return; + } for (PMOAggVO vo : vos) { PMOHeadVO headVO = vo.getParentVO(); String pkOrg = headVO.getPk_org(); - MyHelper.getStrValByCondition(FactoryVO.getDefaultTableName(), FactoryVO.CODE, + String orgCode = MyHelper.getStrValByCondition(FactoryVO.getDefaultTableName(), FactoryVO.CODE, FactoryVO.PK_FACTORY + " = '" + pkOrg + "'"); // 只有箱变公司才赋值生产BOM字段 - if (!"C030".equals(pkOrg)) { + if (checkIfOrg(orgCode, configParams)) { continue; } - // 箱变公司赋值生产BOM的相关字段 cbomversionid vbomversion + // 箱变公司赋值生产BOM的相关字段 PMOItemVO[] pmoItemVOS = vo.getChildrenVO(); for (PMOItemVO pmoItemVO : pmoItemVOS) { // vsrctype 来源单据类型 来源销售订单的需要赋值 if ("30".equals(pmoItemVO.getVsrctype())) { - pmoItemVO.setVbomversion(""); // 生产BOM版本号 - pmoItemVO.setCbomversionid(""); // 生产BOM版本 + // BOM状态 (FBomBillstatusEnum) 是否需要判断BOM的状态 + // 根据bom版本号查询BOM(销售订单号+行号) + String bomVersion = pmoItemVO.getVsrccode() + pmoItemVO.getVsrcrowno(); + String whereSql = BomVO.PK_ORG + " = '" + pkOrg + "' AND " + BomVO.HVERSION + " = '" + bomVersion + "'"; + String bomId = MyHelper.getStrValByCondition(BomVO.TABLE_NAME, BomVO.CBOMID, whereSql); + if (StringUtils.isEmpty(bomId)) { + throw new BusinessException("未找到对应的BOM"); + } + pmoItemVO.setVbomversion(bomVersion); // 生产BOM版本号 + pmoItemVO.setCbomversionid(bomId); // 生产BOM版本 } } } } catch (BusinessException e) { Logger.error("BeforePmoBomRule-exp:" + e.getMessage(), e); - throw new RuntimeException(e); + ExceptionUtils.wrappException(e); } } + + private boolean checkIfOrg(String code, Map configParams) throws BusinessException { + String targetCode = configParams.get("xbOrg"); + if (targetCode == null || StringUtils.isEmpty(targetCode)) { + throw new BusinessException("未配置组织参数"); + } + String[] orgItem = targetCode.split(","); + for (String orgCode : orgItem) { + if (!orgCode.isEmpty() && orgCode.equals(code)) { + return false; + } + } + return true; + } }