From 508996fb3d4a769bcddefbc048a2e71e9a610447 Mon Sep 17 00:00:00 2001 From: maolei Date: Wed, 28 May 2025 16:13:27 +0800 Subject: [PATCH] =?UTF-8?q?uapbd:=20BOM=E6=96=B0=E5=A2=9E=E6=97=B6,?= =?UTF-8?q?=E7=94=B5=E7=BC=86=E7=BB=84=E7=BB=87=E9=87=91=E6=80=9D=E7=BB=B4?= =?UTF-8?q?BOM=E7=89=88=E6=9C=AC=E5=8F=B7=E8=87=AA=E5=8A=A8=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增处理电缆组织金思维BOM版本号的方法 - 判断是否为电缆组织且备注包含金思维 - 计算BOM版本号并更新到BOM主表 --- .../mmbd/bom/APIBomBusinessServiceImpl.java | 135 ++++++++++++++---- 1 file changed, 109 insertions(+), 26 deletions(-) diff --git a/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java b/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java index 86fbae3..30ccfcd 100644 --- a/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java +++ b/uapbd/src/private/nccloud/api/impl/mmbd/bom/APIBomBusinessServiceImpl.java @@ -1,21 +1,15 @@ package nccloud.api.impl.mmbd.bom; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import nc.bs.dao.BaseDAO; import nc.bs.framework.common.InvocationInfoProxy; import nc.bs.framework.common.NCLocator; import nc.itf.bd.bom.bom0202.IBomBillMaintainService; import nc.itf.bd.bom.bom0202.IBomBillQueryService; -import nc.itf.bd.bom.bom0202.IBomBusinessService; import nc.itf.mmf.busi.measure.IMeasesureService; import nc.itf.uif.pub.IUifService; +import nc.jdbc.framework.SQLParameter; +import nc.jdbc.framework.processor.ColumnProcessor; import nc.mmbd.utils.factoryparam.MMBDFactoryParameter; import nc.pubitf.uapbd.IMaterialPubService; import nc.pubitf.uapbd.IMaterialPubService_C; @@ -27,23 +21,8 @@ import nc.util.mmf.busi.measure.MeasureVO; import nc.util.mmf.busi.measure.NumScaleUtil; import nc.util.mmf.busi.service.OrgUnitPubService; import nc.util.mmf.framework.base.MMValueCheck; -import nc.vo.bd.bom.bom0202.entity.AggBomVO; -import nc.vo.bd.bom.bom0202.entity.BomActivityVO; -import nc.vo.bd.bom.bom0202.entity.BomItemSourceVO; -import nc.vo.bd.bom.bom0202.entity.BomItemVO; -import nc.vo.bd.bom.bom0202.entity.BomLossVO; -import nc.vo.bd.bom.bom0202.entity.BomOutputsVO; -import nc.vo.bd.bom.bom0202.entity.BomPosVO; -import nc.vo.bd.bom.bom0202.entity.BomReplVO; -import nc.vo.bd.bom.bom0202.entity.BomSelectVO; -import nc.vo.bd.bom.bom0202.entity.BomUseOrgVO; -import nc.vo.bd.bom.bom0202.entity.BomVO; -import nc.vo.bd.bom.bom0202.entity.BomWipVO; -import nc.vo.bd.bom.bom0202.enumeration.BackflushTimeEnum; -import nc.vo.bd.bom.bom0202.enumeration.BackflushTypeEnum; -import nc.vo.bd.bom.bom0202.enumeration.BomCategoryEnum; -import nc.vo.bd.bom.bom0202.enumeration.BomTypeEnum; -import nc.vo.bd.bom.bom0202.enumeration.VersionTypeEnum; +import nc.vo.bd.bom.bom0202.entity.*; +import nc.vo.bd.bom.bom0202.enumeration.*; import nc.vo.bd.bom.bom0202.paramvo.BomHeadMtrlParam; import nc.vo.bd.bom.bom0202.paramvo.BomHeadMtrlResult; import nc.vo.bd.bom.bom0202.paramvo.BomMaterialParam; @@ -67,7 +46,15 @@ import nccloud.api.rest.utils.ResultMessageUtil; import nccloud.vo.bd.bom.bom0202.validate.BomSavingValidation; import org.json.JSONString; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { + + // 2025528 ֯˼άBOM汾Զ㴦 + private static final BaseDAO DAO = new BaseDAO(); + private static String HEADTABLE = "bd_bom"; private static String BODYTABLE = "bd_bom_b"; @@ -155,6 +142,10 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { } // zhangxinah з dealWithMaterial(agg); + + // 2025528 ֯˼άBOM汾Զ㴦 By maolei + handleCableOrgJinSiWeiBomVersion(agg); + dataSupplement(agg, userCode); UFBoolean flag = (UFBoolean) agg.getParent().getAttributeValue("hbdefault"); @@ -1526,4 +1517,96 @@ public class APIBomBusinessServiceImpl implements IAPIBomBusinessService { item.setPk_useorg_v((String) agg.getParentVO().getAttributeValue("pk_org_v")); } } + + + private void handleCableOrgJinSiWeiBomVersion(AggBomVO agg) { + try { + String pk_org = (String) agg.getParent().getAttributeValue("pk_org"); + String hcmaterialid = (String) agg.getParent().getAttributeValue("hcmaterialid"); + String hversion = agg.getParent().getAttributeValue("hversion").toString(); + String cbomid = (String) agg.getParent().getAttributeValue("cbomid"); + String hvnote = (String) agg.getParent().getAttributeValue("hvnote"); + + // Ҫֶ + if (MMValueCheck.isEmpty(hcmaterialid) || MMValueCheck.isEmpty(hversion)) { + return; + } + + // жǷΪ֯֯C034ұע"˼ά" + boolean isCableOrgJinSiWei = isCableOrganizationWithJinSiWei(pk_org, hvnote); + + if (isCableOrgJinSiWei) { + // 汾 + String calculatedVersion = calculateBomVersion(pk_org, hcmaterialid ); + agg.getParent().setAttributeValue("hversion", calculatedVersion); + } + } catch (Exception e) { + ExceptionUtils.wrappBusinessException("ͬ֯˼άBOM汾Ŵ쳣" + e.getMessage()); + } + } + + /** + * жǷΪ֯ұע˼ά + * @param pk_org ֯ + * @param hvnote עϢ + * @return Ƿ + */ + private boolean isCableOrganizationWithJinSiWei(String pk_org, String hvnote) { + if (MMValueCheck.isEmpty(pk_org)) { + return false; + } + + try { + // ѯ֯ + String sql = "SELECT code FROM org_orgs WHERE pk_org = ?"; + SQLParameter param = new SQLParameter(); + param.addParam(pk_org); + String orgCode = (String) DAO.executeQuery(sql, param, new ColumnProcessor()); + + // ж֯ǷΪC034 + boolean isCableOrg = "C034".equals(orgCode); + + // жϱעǷ"˼ά" + boolean containsJinSiWei = MMValueCheck.isNotEmpty(hvnote) && hvnote.contains("˼ά"); + + return isCableOrg && containsJinSiWei; + } catch (Exception e) { + // ѯ쳣ʱfalse + return false; + } + } + + /** + * BOM汾 + * @param pk_org ֯ + * @param hcmaterialid ϱ + * @return İ汾 + */ + private String calculateBomVersion(String pk_org, String hcmaterialid ) throws BusinessException { + try { + // ѯ + StringBuilder sql = new StringBuilder(); + sql.append("SELECT MAX(TO_NUMBER(hversion)) as max_version "); + sql.append("FROM bd_bom "); + sql.append("WHERE pk_org = ? "); + + SQLParameter param = new SQLParameter(); + param.addParam(pk_org); + + // Ӳѯ + sql.append("AND hcmaterialid = ? "); + param.addParam(hcmaterialid); + + // ֻѯְ汾ţųְ汾 + sql.append("AND REGEXP_LIKE(hversion, '^[0-9]+$') "); + + Long maxVersion = (Long) DAO.executeQuery(sql.toString(), param, new ColumnProcessor()); + + // ѯݣĬϰ汾Ϊ1汾ż1 + return String.valueOf((maxVersion != null ? maxVersion : 0) + 1); + + } catch (Exception e) { + throw new BusinessException("BOM汾쳣" + e.getMessage()); + } + } }