From 6fb3bebb718270f9ef52660e0e4ea653c2ab1cca Mon Sep 17 00:00:00 2001 From: jun Date: Thu, 11 Jul 2024 18:31:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=B8=85=E5=8D=95bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/MesPartSapService.java | 7 +- .../base/MesProdCraftRouteServiceImpl.java | 227 +++++---------------- .../serviceimpl/base/MesWorkOrderService.java | 129 +++++------- 3 files changed, 111 insertions(+), 252 deletions(-) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartSapService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartSapService.java index a7b1395..7dcec7a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartSapService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesPartSapService.java @@ -14,7 +14,6 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.List; -import java.util.Objects; @Service @Slf4j @@ -22,11 +21,7 @@ public class MesPartSapService extends BaseMesService implements IMe @Override protected void setPackQueryBean(MesPartSap bean, DdlPackBean packBean) { - if (Objects.isNull(bean.getIsTestPiece())) { - DdlPreparedPack.getNumEqualPack(CommonEnumUtil.FALSE, "isTestPiece", packBean); - } else { - DdlPreparedPack.getNumEqualPack(bean.getIsTestPiece(), "isTestPiece", packBean); - } + DdlPreparedPack.getNumEqualPack(bean.getIsTestPiece(), "isTestPiece", packBean); DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); DdlPreparedPack.getStringLikeEqualPack(bean.getPartName(), "partName", packBean); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java index 76f5dd1..a0e3549 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProdCraftRouteServiceImpl.java @@ -1,8 +1,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteService; import cn.estsh.i3plus.ext.mes.api.base.IMesPartService; import cn.estsh.i3plus.ext.mes.api.base.IMesProdCraftRouteService; -import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; import cn.estsh.i3plus.platform.common.util.MesConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; @@ -12,9 +13,9 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute; import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesProdCraftRoute; import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; -import cn.estsh.i3plus.pojo.mes.repository.MesCraftRouteRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesProdRouteCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository; -import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -37,11 +38,13 @@ import java.util.Objects; public class MesProdCraftRouteServiceImpl extends BaseMesService implements IMesProdCraftRouteService { @Autowired - private MesCraftRouteRepository mesCraftRouteRDao; + private IMesCraftRouteService mesCraftRouteService; @Autowired private MesWorkCenterRepository mesWorkCenterRDao; @Autowired private IMesPartService mesPartService; + @Autowired + private MesProdRouteCfgRepository mesProdRouteCfgRepository; @Override protected void setPackQueryBean(MesProdCraftRoute bean, DdlPackBean packBean) { @@ -56,111 +59,19 @@ public class MesProdCraftRouteServiceImpl extends BaseMesService implements MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(item.getPartNo(), item.getOrganizeCode()); item.setPartName(mesPart.getPartName()); item.setUnit(mesPart.getUnit()); - //试制单,只能选择试制零件 - if(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() != mesPart.getIsTestPiece()){ - MesException.throwMesBusiException("物料【%s】不为试制件",item.getPartNo()); - } //生产时间新增取当天 if (StringUtil.isEmpty(item.getProduceTime())) { item.setProduceTime(TimeTool.getToday()); @@ -695,24 +691,7 @@ public class MesWorkOrderService extends BaseMesService implements } //计划开始时间,计划结束时间拼接 packPlanTime(item, mesShiftMap); - //获取生产版本 - List mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo()); - if (CollectionUtils.isEmpty(mesProductVersions)) { - MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(), - mesWorkCenter.getErpWorkCenter()); - } - MesProductVersion mesProductVersion = mesProductVersions.iterator().next(); - item.setProductVersion(mesProductVersion.getProductVersion()); - //发送工单信息给WMS - List mesBomList = null; - if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) { - mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList()); - } else { - //获取bom信息 - mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); - mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList); - } - + //校验vin号 if (!StringUtil.isEmpty(item.getVinCode())) { if (vinCodeMap.containsKey(item.getVinCode())) { MesException.throwMesBusiException("vin号【%s】重复", item.getVinCode()); @@ -722,15 +701,10 @@ public class MesWorkOrderService extends BaseMesService implements } //排序工单数量为1 item.setQty(1d); - //是否自动发布 - isAuto(mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesBomList); - //试制单,只能选择试制零件 - if(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() != mesPart.getIsTestPiece()){ - MesException.throwMesBusiException("物料【%s】不为试制件",item.getPartNo()); - } + //发送wms数据 + sendToWms(mesProductVersionMap, mesBomMap, mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesWorkCenter); } else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) { ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空"); - ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空"); if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) { MesException.throwMesBusiException("生产数量不能小于等于0"); } @@ -749,32 +723,32 @@ public class MesWorkOrderService extends BaseMesService implements } //拼接时间 packPlanTime(item, mesShiftMap); - //校验物料生产版本是否存在 - List mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo()); - if (CollectionUtils.isEmpty(mesProductVersions)) { - MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(), - mesWorkCenter.getErpWorkCenter()); - } - List versionList = mesProductVersions.stream().filter(t -> Objects.equals(item.getProductVersion(), t.getProductVersion())).collect(Collectors.toList()); - if (CollectionUtils.isEmpty(versionList)) { - MesException.throwMesBusiException("物料【%s】产线【%s】生产版本【%s】信息不存在", item.getPartNo(), mesWorkCenter.getWorkCenterCode(), item.getProductVersion()); - } - MesProductVersion mesProductVersion = versionList.iterator().next(); - //获取bom信息 + //状态已发布 + item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); List mesBomList = null; - if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) { - mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList()); - } else { + if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())){ + ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空"); + //校验物料生产版本是否存在 + List mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo()); + if (CollectionUtils.isEmpty(mesProductVersions)) { + MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(), + mesWorkCenter.getErpWorkCenter()); + } + List versionList = mesProductVersions.stream().filter(t -> Objects.equals(item.getProductVersion(), t.getProductVersion())).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(versionList)) { + MesException.throwMesBusiException("物料【%s】产线【%s】生产版本【%s】信息不存在", item.getPartNo(), mesWorkCenter.getWorkCenterCode(), item.getProductVersion()); + } + MesProductVersion mesProductVersion = versionList.iterator().next(); //获取bom信息 - mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); - mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList); - } - item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); - //发送工单信息给WMS - mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList)); - //试制单,只能选择试制零件 - if(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag()) && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() != mesPart.getIsTestPiece()){ - MesException.throwMesBusiException("物料【%s】不为试制件",item.getPartNo()); + if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) { + mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList()); + } else { + //获取bom信息 + mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); + mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList); + } + //发送工单信息给WMS + mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList)); } } else { ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空"); @@ -782,25 +756,8 @@ public class MesWorkOrderService extends BaseMesService implements if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) { MesException.throwMesBusiException("生产数量不能小于等于0"); } - //获取生产版本 - List mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo()); - if (CollectionUtils.isEmpty(mesProductVersions)) { - MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(), - mesWorkCenter.getErpWorkCenter()); - } - MesProductVersion mesProductVersion = mesProductVersions.iterator().next(); - item.setProductVersion(mesProductVersion.getProductVersion()); - //获取bom信息 - List mesBomList = null; - if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) { - mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList()); - } else { - //获取bom信息 - mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); - mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList); - } - //是否自动发布 - isAuto(mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesBomList); + //发送wms数据 + sendToWms(mesProductVersionMap, mesBomMap, mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesWorkCenter); } item.setUnCompleteQty(item.getQty()); index++; @@ -808,6 +765,30 @@ public class MesWorkOrderService extends BaseMesService implements return mesWorkOrderToWmsList; } + private void sendToWms(Map> mesProductVersionMap, Map> mesBomMap, Map mesPartProdGroupMap, List mesWorkOrderToWmsList, MesWorkOrder item, MesWorkCenter mesWorkCenter) { + //发送工单信息给WMS + List mesBomList = null; + if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())){ + //获取生产版本 + List mesProductVersions = mesProductVersionMap.get(mesWorkCenter.getErpWorkCenter() + item.getPartNo()); + if (CollectionUtils.isEmpty(mesProductVersions)) { + MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(), + mesWorkCenter.getErpWorkCenter()); + } + MesProductVersion mesProductVersion = mesProductVersions.iterator().next(); + item.setProductVersion(mesProductVersion.getProductVersion()); + if (mesBomMap.containsKey(item.getPartNo() + mesProductVersion.getAlternativePartList())) { + mesBomList = mesBomMap.get(item.getPartNo() + mesProductVersion.getAlternativePartList()); + } else { + //获取bom信息 + mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList()); + mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList); + } + } + //是否自动发布 + isAuto(mesPartProdGroupMap, mesWorkOrderToWmsList, item, mesBomList); + } + private void isAuto(Map mesPartProdGroupMap, List mesWorkOrderToWmsList, MesWorkOrder item, List mesBomList) { //校验零件生产组信息 MesPartProdGroup mesPartProdGroup; @@ -823,7 +804,9 @@ public class MesWorkOrderService extends BaseMesService implements if (CommonEnumUtil.VALID == mesPartProdGroup.getIsAutoRelease()) { item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()); //发送工单信息给WMS - mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList)); + if(!Objects.isNull(mesBomList)){ + mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList)); + } } else { item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); }