From 30d470f43c4cff725f5455cc62dcbecf6e62aa87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E7=AC=91=E7=9D=80=E9=9D=A2=E5=AF=B9=E6=98=8E?= =?UTF-8?q?=E5=A4=A9?= <752558143@qq.com> Date: Mon, 15 Jul 2024 15:31:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=92=8C=E6=8A=A5=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/api/base/IMesEquipmentVariableService.java | 5 ++- .../controller/base/BaseMesController.java | 1 + .../base/MesEquipmentVariableService.java | 46 ++++++++++++++++++++-- .../serviceimpl/base/MesWorkOrderService.java | 16 ++++++++ 4 files changed, 64 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesEquipmentVariableService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesEquipmentVariableService.java index 96a79a2..2b6e648 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesEquipmentVariableService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesEquipmentVariableService.java @@ -1,7 +1,10 @@ package cn.estsh.i3plus.ext.mes.api.base; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheckDetail; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; +import java.util.List; + /** * @Description : SAP生产计划 * @Reference : @@ -11,5 +14,5 @@ import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; **/ public interface IMesEquipmentVariableService extends IBaseMesService { - + List validateReturnImport(List beanList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java index b618c5d..7c941ae 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java @@ -441,6 +441,7 @@ public abstract class BaseMesController extends BaseControll // 校验导入数据 baseService.validateImport(beanList); + String userName = AuthUtil.getSessionUser().getUserName(); String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); // 导入数据初始化 diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java index 90e3fd4..c95feda 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentVariableService.java @@ -1,16 +1,21 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesEquipmentVariableService; +import cn.estsh.i3plus.ext.mes.apiservice.schedulejob.MesWorkOrderProcessCcscTaskToSapJob; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.MesEquipment; -import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentVariable; -import cn.estsh.i3plus.pojo.mes.bean.MesErpWorkCenter; +import cn.estsh.i3plus.pojo.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableRepository; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -26,6 +31,12 @@ import java.util.List; @Slf4j public class MesEquipmentVariableService extends BaseMesService implements IMesEquipmentVariableService { + public static final Logger LOGGER = LoggerFactory.getLogger(MesEquipmentVariableService.class); + + + @Autowired + private MesEquipmentRepository equipmentRepository; + protected void setPackQueryBean(MesEquipmentVariable bean, DdlPackBean packBean) { DdlPreparedPack.getStringLikerPack(bean.getEquipmentCode(), "equipmentCode", packBean); DdlPreparedPack.getStringLikerPack(bean.getCode(), "code", packBean); @@ -48,4 +59,33 @@ public class MesEquipmentVariableService extends BaseMesService validateReturnImport(List beanList) { + + int i = 1; + for (MesEquipmentVariable item : beanList) { + // 数据校验 + if(StringUtil.isEmpty(item.getEquipmentCode())){ + LOGGER.info("第{}行,设备代码不能为空", i); + i++; + continue; + } + ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备代码不能为空"); + + DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(item.getEquipmentCode(), "equipmentCode", seriesPackBean); + MesEquipment itemFlg = equipmentRepository.getByProperty(seriesPackBean); + if (StringUtil.isEmpty(itemFlg)) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("【%s】设备代码不存在,请检查数据", item.getEquipmentCode()) + .build(); + } + item.setEquipId(itemFlg.getEquipId()); + i++; + } + return beanList; + } + } 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 381e050..21618c4 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 @@ -856,6 +856,22 @@ public class MesWorkOrderService extends BaseMesService implements double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty()); mesWorkOrderDb.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); if (mesWorkOrderDb.getReportedQty() > mesWorkOrderDb.getQty()) { + //查询产线信息 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", packBean); + MesWorkCenter workCenter = mesWorkCenterRDao.getByProperty(packBean); + // 以下则是超工单逻辑 + // 如果产线中没有配置超工单,则直接阻断 + if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), workCenter.getIsCheckOrderQty())) { + MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); + } + // 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断 + double rate = (mesWorkOrder.getReportedQty() - mesWorkOrder.getQty())/mesWorkOrder.getQty(); + if (rate > workCenter.getOrderRate()) { + MesException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty(), workCenter.getOrderRate()); + } + mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); + MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工", mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty()); } else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) {