From f5f2a4b31d8edf013060ec4f9e5c04a5fd7fc460 Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Fri, 27 Dec 2024 18:47:35 +0800 Subject: [PATCH] =?UTF-8?q?43316=20=E4=BF=AE=E5=A4=8DbomVersion=E5=90=AF?= =?UTF-8?q?=E7=94=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/MesWorkOrderService.java | 84 ++++++++++++++++------ .../busi/MesSortRuleCfgOfflineServiceImpl.java | 3 +- 2 files changed, 62 insertions(+), 25 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index cd015df..8d2bff4 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -186,6 +186,9 @@ public class MesWorkOrderService extends BaseMesService implements @Autowired private EntityManager entityManager; + @Autowired + private MesPartProdGroupRepository mesPartProdGroupRao; + @Override public MesWorkOrder insert(MesWorkOrder bean) { // 数据校验 @@ -519,7 +522,9 @@ public class MesWorkOrderService extends BaseMesService implements if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) { //获取生产版本 mesProductVersion = getMesProductVersion(item.getOrganizeCode(),item.getPartNo()); - item.setProductVersion(mesProductVersion.getProductVersion()); + if (mesProductVersion != null) { + item.setProductVersion(mesProductVersion.getProductVersion()); + } } //是否自动发布 return isAuto(item, mesProductVersion); @@ -548,10 +553,20 @@ public class MesWorkOrderService extends BaseMesService implements item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); } + Integer enableBomVersion = mesPartProdGroup.getEnableBomVersion(); + String bomVersion =""; + /** + * 2024-12-20 是否启用bomVersion + */ + if (enableBomVersion == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ + if(!Objects.isNull(mesProductVersion)){ + bomVersion = mesProductVersion.getAlternativePartList(); + } + } // 打散bom List workOrderPartList = new ArrayList<>(); - if (mesPartProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && !Objects.isNull(mesProductVersion)) { - workOrderPartList = dismantleBom(findBomList(item.getOrganizeCode(), iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode()),mesProductVersion.getAlternativePartList()), item.getQty(), item.getOrganizeCode(), item.getWorkCellCode(), item.getWorkOrderNo()); + if (mesPartProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) { + workOrderPartList = dismantleBom(findBomList(item.getOrganizeCode(), iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode()),bomVersion), item.getQty(), item.getOrganizeCode(), item.getWorkCellCode(), item.getWorkOrderNo()); } return workOrderPartList; } @@ -1054,10 +1069,23 @@ public class MesWorkOrderService extends BaseMesService implements mesWorkOrder.getAdjustQty(), mesWorkOrder.getReportedQty()); } } - //获取生产版本 - MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion()); + String partProdGroupCode = mesWorkOrder.getPartProdGroupCode(); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(partProdGroupCode,"partProdGroupCode",ddlPackBean); + List mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(ddlPackBean, 1); + String bomVersion = ""; + MesProductVersion mesProductVersion = new MesProductVersion(); + if (!mesPartProdGroupList.isEmpty()){ + MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0); + if (mesPartProdGroup.getEnableBomVersion() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ + //获取生产版本 + mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion()); + bomVersion = mesProductVersion.getAlternativePartList(); + } + } + //物料+生产版本获取bom信息 - List mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); + List mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion); //生成条码 String sn = getStringList(mesWorkOrderNew.getOrganizeCode(), AuthUtilExt.getUserName()); //保存数据 @@ -1608,7 +1636,7 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); - newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode()); + newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getWorkCenterCode()); newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); newMesProductOffLine.setDescription(nowTime); newMesProductOffLine.setBomTotalSize(bomSize); @@ -1641,8 +1669,8 @@ public class MesWorkOrderService extends BaseMesService implements newMesProductOffLine.setWorkOrderType(mesWorkOrder.getWorkOrderType()); newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); - newMesProductOffLine.setWorkCenterCode(mesProductVersion.getWorkCenterCode()); - newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode()); + newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); + newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getWorkCenterCode()); newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode()); newMesProductOffLine.setDescription(nowTime); @@ -2196,7 +2224,7 @@ public class MesWorkOrderService extends BaseMesService implements // 递归展开 BOM expendBomChild(organizeCode, mesPart.getPartNo(), bomVersion, bomData); - if (bomData.size() == 0) { + if (bomData.isEmpty()) { MesException.throwMesBusiException("零件号 %s 没找找到 ERP 同步的原始 BOM 数据,请检查接口是否正常!", mesPart.getPartNo()); } @@ -2260,21 +2288,31 @@ public class MesWorkOrderService extends BaseMesService implements //MES汇报查询BOM是否携带结束查询条件 MesConfig config = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_REPORT_FIND_BOM_WITH_EFFENDTIME); - Boolean isWithEffEndTime = (null != config && !StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? true : false; + boolean isWithEffEndTime = null != config && !StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr()); DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean); - DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean); + if (!StringUtils.isEmpty(partNo)) { + DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean); + } DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, ddlPackBean); - if (isWithEffEndTime) DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, ddlPackBean); + if(isWithEffEndTime)DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, ddlPackBean); DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean); - List mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean); + List mesBoms = mesBomRDao.findByHqlTopWhere(ddlPackBean,1); + if (org.springframework.util.CollectionUtils.isEmpty(mesBoms)) { - MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion); + MesException.throwMesBusiException("物料【%s】对应bom信息不存在", partNo); } - MesBom next = mesBoms.iterator().next(); + MesBom mesBom = mesBoms.get(0); + String effEndTime = mesBom.getEffEndTime(); + String bomCode = mesBom.getBomCode(); + + DdlPackBean ddlPackBean1 = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean1); + DdlPreparedPack.getStringEqualPack(effEndTime, MesExtConstWords.EFF_START_TIME, ddlPackBean); + DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", ddlPackBean); //如果存在多个bomCode取最新的一个 - return mesBoms.stream().collect(Collectors.groupingBy(t -> t.getBomCode() + t.getEffStartTime())).get(next.getBomCode() + next.getEffStartTime()); + return mesBomRDao.findByHqlWhere(ddlPackBean1); } @@ -2723,18 +2761,18 @@ public class MesWorkOrderService extends BaseMesService implements } private MesProductVersion getMesProductVersion(String organizeCode, String partNo, String productVersion) { - MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, productVersion); - if (Objects.isNull(mesProductVersion)) { - MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", partNo, productVersion); + MesProductVersion mesProductVersion = new MesProductVersion(); + if (!StringUtils.isEmpty(productVersion)){ + mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, productVersion); + if (Objects.isNull(mesProductVersion)) { + MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", partNo, productVersion); + } } return mesProductVersion; } private MesProductVersion getMesProductVersion(String organizeCode, String partNo) { MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, null); - if (Objects.isNull(mesProductVersion)) { - MesException.throwMesBusiException("物料【%s】生产版本信息不存在", partNo); - } return mesProductVersion; } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSortRuleCfgOfflineServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSortRuleCfgOfflineServiceImpl.java index fd82bd4..340fa32 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSortRuleCfgOfflineServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesSortRuleCfgOfflineServiceImpl.java @@ -324,8 +324,7 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", bomPackBean); DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomPackBean); - DdlPreparedPack.getStringSmallerPack(effectiveTime, MesExtConstWords.EFF_START_TIME, bomPackBean); - if (isWithEffEndTime) DdlPreparedPack.getStringBiggerPack(effectiveTime, MesExtConstWords.EFF_END_TIME, bomPackBean); + DdlPreparedPack.getStringEqualPack(effectiveTime, MesExtConstWords.EFF_START_TIME, bomPackBean); List bomList = bomRao.findByHqlWhere(bomPackBean); for (MesBom bom : bomList) {