From 45d07effe37d251b68fa1122983969f9ade9aca6 Mon Sep 17 00:00:00 2001 From: jun Date: Tue, 18 Jun 2024 17:45:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E7=9B=B8=E5=85=B3=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/base/IMesWorkOrderLogService.java | 3 +- .../base/MesWcEquipmentServiceImpl.java | 50 +++-------- .../serviceimpl/base/MesWorkOrderLogService.java | 9 +- .../serviceimpl/base/MesWorkOrderService.java | 99 ++++++++++------------ 4 files changed, 65 insertions(+), 96 deletions(-) diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java index 885b03b..084fd23 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderLogService.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.api.base; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog; /** @@ -9,5 +10,5 @@ import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog; */ public interface IMesWorkOrderLogService extends IBaseMesService { - + void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWcEquipmentServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWcEquipmentServiceImpl.java index 88a565a..4d2e61f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWcEquipmentServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWcEquipmentServiceImpl.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWcEquipmentService; +import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.util.MesConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; @@ -14,10 +15,6 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; -import org.springframework.util.StringUtils; - -import java.util.List; /** * @Description :工作单元设备关系 @@ -84,45 +81,18 @@ public class MesWcEquipmentServiceImpl extends BaseMesService im new Object[]{mesWcEquipment.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), mesWcEquipment.getEquipmentCode()}); if (null == mesEquipmentDb) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) - .setErrorDetail("设备代码【%s】无效", mesWcEquipment.getEquipmentCode()) - .build(); + MesException.throwMesBusiException("设备代码【%s】无效", mesWcEquipment.getEquipmentCode()); } //查询设备已关联数据 - List mesWcEquipments = baseRDao.findByProperty( - new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, "equipmentCode"}, - new Object[]{mesWcEquipment.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), - mesWcEquipment.getEquipmentCode()}); - if (!CollectionUtils.isEmpty(mesWcEquipments)) { - for (MesWcEquipment wc : mesWcEquipments) { - boolean isCheck = true; - //更新时校验设备是否已经绑定该工位需要判断ID - if (!StringUtils.isEmpty(mesWcEquipment.getId()) && mesWcEquipment.getId().equals(wc.getId())) { - isCheck = false; - } - if (isCheck) { - //校验设备是否已经绑定该工位 - if (mesWcEquipment.getWorkCellCode().equals(wc.getWorkCellCode())) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("工位代码【%s】与设备代码【%s】已经绑定,不能重复绑定" - , mesWcEquipment.getWorkCellCode(), mesWcEquipment.getEquipmentCode()) - .build(); - } - } - //校验设备是否已经绑定其他生产线 - if (wc.getId() !=mesWcEquipment.getId() && !mesWcEquipment.getWorkCenterCode().equals(wc.getWorkCenterCode())) { - throw ImppExceptionBuilder.newInstance() - .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) - .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) - .setErrorDetail("不能绑定!设备代码【%s】,已经绑定生产线代码【%s】", mesWcEquipment.getEquipmentCode(), wc.getWorkCenterCode()) - .build(); - } - } + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWcEquipment.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesWcEquipment.getEquipmentCode(),"equipmentCode",ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesWcEquipment.getWorkCellCode(),"workCellCode",ddlPackBean); + DdlPreparedPack.getNumNOEqualPack(mesWcEquipment.getId(),"id",ddlPackBean); + + if (baseRDao.isExitByHql(ddlPackBean)) { + MesException.throwMesBusiException("工位代码【%s】与设备代码【%s】已经绑定,不能重复绑定" + , mesWcEquipment.getWorkCellCode(), mesWcEquipment.getEquipmentCode()); } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java index 353c0df..e92e1c2 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderLogService.java @@ -1,13 +1,20 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderLogService; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @Service @Slf4j public class MesWorkOrderLogService extends BaseMesService implements IMesWorkOrderLogService { - + @Override + public void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder) { + MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); + BeanUtils.copyProperties(mesWorkOrder, workOrderLog, "id"); + baseRDao.insert(workOrderLog); + } } 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 904195c..d6c1167 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 @@ -39,7 +39,7 @@ import java.util.stream.Collectors; @Slf4j public class MesWorkOrderService extends BaseMesService implements IMesWorkOrderService { @Autowired - private MesWorkOrderLogService workOrderLogService; + private IMesWorkOrderLogService workOrderLogService; @Autowired private ISyncFuncService syncFuncService; @Autowired @@ -110,11 +110,8 @@ public class MesWorkOrderService extends BaseMesService implements copyMesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser()); - MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); - BeanUtils.copyProperties(copyMesWorkOrder, workOrderLog, "id"); - baseRDao.insert(copyMesWorkOrder); - workOrderLogService.insert(workOrderLog); + workOrderLogService.saveMesWorkOrderLog(copyMesWorkOrder); return bean; } else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) { //生成工单号 @@ -138,9 +135,7 @@ public class MesWorkOrderService extends BaseMesService implements bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelInitialize(bean, bean.getCreateUser()); - MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); - BeanUtils.copyProperties(bean, workOrderLog, "id"); - workOrderLogService.insert(workOrderLog); + workOrderLogService.saveMesWorkOrderLog(bean); bean = baseRDao.insert(bean); return bean; } @@ -155,10 +150,12 @@ public class MesWorkOrderService extends BaseMesService implements MesExtEnumUtil.ORDER_TYPE.SORT.getDescription())); } } else { - //工单数量只能比原来的大 - if (bean.getQty() < result.getQty()) { - MesException.throwMesBusiException(String.format("工单数量不能小于工单源数量【%s】", - result.getQty())); + //更新工单数量 + if (!bean.getQty().equals(result.getQty()) && result.getWorkOrderStatus() > MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) { + MesException.throwMesBusiException(String.format("工单状态为【%s】不允许更新工单数量", MesExtEnumUtil.ORDER_STATUS.valueOfDescription(result.getWorkOrderStatus()))); + }else{ + result.setQty(bean.getQty()); + result.setUnCompleteQty(MathOperation.sub(bean.getQty(),result.getReportedQty())); } } //在加工的工单不能修改物料信息 @@ -169,29 +166,14 @@ public class MesWorkOrderService extends BaseMesService implements } } - result.setQty(bean.getQty()); - //更新已汇报 - if (bean.getReportedQty() >= 0) { - result.setReportedQty(bean.getReportedQty()); - } - if (bean.getUnCompleteQty() >= 0) { - result.setUnCompleteQty(bean.getUnCompleteQty()); - } - if (bean.getAdjustQty() > 0) { - result.setAdjustQty(bean.getAdjustQty()); - } //更新状态 - if (bean.getWorkOrderStatus() > 0) { + if(result.getWorkOrderStatus().intValue() != bean.getWorkOrderStatus().intValue()){ result.setWorkOrderStatus(bean.getWorkOrderStatus()); } + //修改工单,工单标识需要改为未同步 result.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); - ConvertBean.serviceModelInitialize(result, AuthUtil.getSessionUser().getUserName()); - MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); - BeanUtils.copyProperties(result, workOrderLog, "id"); - workOrderLogService.insert(workOrderLog); - - baseRDao.update(result); + updateMesWorkOrder(result); return result; } @@ -338,6 +320,7 @@ public class MesWorkOrderService extends BaseMesService implements if (StringUtil.isEmpty(item.getProduceTime())) { item.setProduceTime(TimeTool.getToday()); } + item.setUnCompleteQty(item.getQty()); } @@ -428,49 +411,49 @@ public class MesWorkOrderService extends BaseMesService implements } @Override - protected void onUpdateBean(MesWorkOrder item) { - - } - - @Override public void doProductReport(MesWorkOrder mesWorkOrder) { + MesWorkOrder mesWorkOrderDb = baseRDao.getById(mesWorkOrder.getId()); + if (Objects.isNull(mesWorkOrderDb)) { + MesException.throwMesBusiException("工单id为【%s】工单信息不存在", mesWorkOrder.getId()); + } //查询物料信息 - MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode()); + MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getOrganizeCode()); //查询产线信息 - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getWorkCenterCode(), "workCenterCode", ddlPackBean); MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean); if (Objects.isNull(mesWorkCenter)) { - MesException.throwMesBusiException("产线【%s】不存在", mesWorkOrder.getWorkCenterCode()); + MesException.throwMesBusiException("产线【%s】不存在", mesWorkOrderDb.getWorkCenterCode()); } //获取生产版本 - MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder); + MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb); //物料+生产版本获取bom信息 List mesBoms = getBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); //报工类型 - if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) { - mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getReportedQty())); + if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderDb.getReportType()) { + mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty())); //更新工单状态 - double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); - mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); - if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) { + double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty()); + mesWorkOrderDb.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); + if (mesWorkOrderDb.getReportedQty() > mesWorkOrderDb.getQty()) { MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工", - mesWorkOrder.getReportedQty(), mesWorkOrder.getQty()); - } else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) { - mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); + mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty()); + } else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) { + mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); } else { - mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); + mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); } } else { //冲销数量大于工单完成数量报错 - if (MathOperation.add(mesWorkOrder.getNum(),mesWorkOrder.getAdjustQty()) > mesWorkOrder.getReportedQty()) { + if (MathOperation.add(mesWorkOrder.getNum(),mesWorkOrderDb.getAdjustQty()) > mesWorkOrderDb.getReportedQty()) { MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销", - mesWorkOrder.getNum(), mesWorkOrder.getReportedQty()); + mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty()); } //报工调整数量加- - mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getAdjustQty()))); + mesWorkOrderDb.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getAdjustQty()))); } - update(mesWorkOrder); + //更新工单 + updateMesWorkOrder(mesWorkOrderDb); //生成条码 List resultList = getStringList(mesWorkOrder); @@ -652,7 +635,8 @@ public class MesWorkOrderService extends BaseMesService implements } //更新工单 - update(mesWorkOrder); + updateMesWorkOrder(mesWorkOrder); + //保存报工记录 if (CollectionUtils.isNotEmpty(mesProductOffLineList)) { mesProductOffLineService.insertBatch(mesProductOffLineList); @@ -691,6 +675,13 @@ public class MesWorkOrderService extends BaseMesService implements mesProductOffLineService.insertBatch(mesProductOffLineList); } + private void updateMesWorkOrder(MesWorkOrder mesWorkOrder) { + ConvertBean.serviceModelUpdate(mesWorkOrder, AuthUtil.getSessionUser().getUserName()); + baseRDao.update(mesWorkOrder); + //保存记录 + workOrderLogService.saveMesWorkOrderLog(mesWorkOrder); + } + private MesProductOffLine getMesProductOffLine(WmsProductModel model, MesPart mesPart, MesProductVersion mesProductVersion, MesBom mesBom) { MesProductOffLine newMesProductOffLine = new MesProductOffLine(); newMesProductOffLine.setReportPartNo(mesPart.getPartNo());