From 045414d98d643e9ea33ca69c666585e9c35cb737 Mon Sep 17 00:00:00 2001 From: jun Date: Sun, 1 Sep 2024 16:21:10 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E7=82=B9=E6=A3=80=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=B7=A5=E8=89=BA=E5=8F=82=E6=95=B0=E7=82=B9=E6=A3=80?= =?UTF-8?q?=EF=BC=8C=E7=9B=AE=E5=89=8D=E6=97=A0=E6=B3=95=E5=AE=8C=E6=95=B4?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E8=AF=A5=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesSpotCheckOrderService.java | 39 ++++++++++++++-------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index 4fd01c9..8f41752 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -141,24 +141,37 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { //校验点检单 checkSpotCheckOrder(model.getSpotCheckOrder()); - //检查条码 - MesProduceSn produceSn = checkProduceSn(model.getProduceSn(), org); - boolean flg = false; - for (MesSpotCheckOrderPart spotCheckOrderPart : model.getOrderPartList()) { + if (MesExtEnumUtil.SPOT_CHECK_ORDER_TYPE.PROCESS_PARAMETER_INSPECTION.getValue() == model.getSpotCheckOrder().getSpotCheckOrderType() || + MesExtEnumUtil.SPOT_CHECK_ORDER_TYPE.EQUIPMENT_INSPECTION.getValue() == model.getSpotCheckOrder().getSpotCheckOrderType()) { + MesEquipment mesEquipment = mesEquipmentExtService.getMesEquipment(org, model.getSpotCheckOrder().getEquipCode()); + if (Objects.isNull(mesEquipment)) { + throw new ImppBusiException(String.format("点检单对应的设备【%s】信息不存在", model.getSpotCheckOrder().getEquipCode())); + } + if (StringUtils.isEmpty(mesEquipment.getEquipId()) || !model.getProduceSn().equals(mesEquipment.getEquipId() + "")) { + throw new ImppBusiException(String.format("点检单对应的设备编号【%s】和扫描的设备编号【%s】不匹配,请检查数据", mesEquipment.getEquipId(), model.getProduceSn())); + } + return model; + } else { + //检查条码 + MesProduceSn produceSn = checkProduceSn(model.getProduceSn(), org); + + boolean flg = false; + for (MesSpotCheckOrderPart spotCheckOrderPart : model.getOrderPartList()) { + + if (spotCheckOrderPart.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(spotCheckOrderPart.getSn())) { + flg = true; + spotCheckOrderPart.setSn(model.getProduceSn()); + break; + } + } - if (spotCheckOrderPart.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(spotCheckOrderPart.getSn())) { - flg = true; - spotCheckOrderPart.setSn(model.getProduceSn()); - break; + if (!flg) { + throw new ImppBusiException(String.format("扫描的条码【%s】对应的物料号【%s】在点检单中不存在", produceSn.getProductSn(), produceSn.getPartNo())); } - } - if (!flg) { - throw new ImppBusiException(String.format("扫描的条码【%s】对应的物料号【%s】在点检单中不存在", produceSn.getProductSn(), produceSn.getPartNo())); + return model; } - - return model; } /** From 3d7358c134aaafc7659adb26cf9a52f9dc54f06e Mon Sep 17 00:00:00 2001 From: jun Date: Sun, 1 Sep 2024 16:28:40 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=82=B9=E6=A3=80?= =?UTF-8?q?=EF=BC=8C=E7=82=B9=E6=A3=80=E7=B1=BB=E5=9E=8B=EF=BC=9A=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=82=B9=E6=A3=80=E3=80=81=E5=B7=A5=E8=89=BA=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=82=B9=E6=A3=80=EF=BC=8C=E7=82=B9=E5=87=BB=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E7=82=B9=E6=A3=80=E5=90=8E=EF=BC=8C=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E5=BC=BA=E5=88=B6=E6=89=AB=E6=8F=8F/=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E8=AE=BE=E5=A4=87ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesSpotCheckOrderService.java | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java index 8f41752..00a0b6b 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSpotCheckOrderService.java @@ -141,16 +141,10 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { //校验点检单 checkSpotCheckOrder(model.getSpotCheckOrder()); - + //校验设备信息 if (MesExtEnumUtil.SPOT_CHECK_ORDER_TYPE.PROCESS_PARAMETER_INSPECTION.getValue() == model.getSpotCheckOrder().getSpotCheckOrderType() || MesExtEnumUtil.SPOT_CHECK_ORDER_TYPE.EQUIPMENT_INSPECTION.getValue() == model.getSpotCheckOrder().getSpotCheckOrderType()) { - MesEquipment mesEquipment = mesEquipmentExtService.getMesEquipment(org, model.getSpotCheckOrder().getEquipCode()); - if (Objects.isNull(mesEquipment)) { - throw new ImppBusiException(String.format("点检单对应的设备【%s】信息不存在", model.getSpotCheckOrder().getEquipCode())); - } - if (StringUtils.isEmpty(mesEquipment.getEquipId()) || !model.getProduceSn().equals(mesEquipment.getEquipId() + "")) { - throw new ImppBusiException(String.format("点检单对应的设备编号【%s】和扫描的设备编号【%s】不匹配,请检查数据", mesEquipment.getEquipId(), model.getProduceSn())); - } + checkEquipment(model, org); return model; } else { //检查条码 @@ -624,5 +618,15 @@ public class MesSpotCheckOrderService implements IMesSpotCheckOrderService { return produceSn; } + private void checkEquipment(MesSpotCheckOrderModel model, String org) { + MesEquipment mesEquipment = mesEquipmentExtService.getMesEquipment(org, model.getSpotCheckOrder().getEquipCode()); + if (Objects.isNull(mesEquipment)) { + throw new ImppBusiException(String.format("点检单对应的设备【%s】信息不存在", model.getSpotCheckOrder().getEquipCode())); + } + if (StringUtils.isEmpty(mesEquipment.getEquipId()) || !model.getProduceSn().equals(mesEquipment.getEquipId() + "")) { + throw new ImppBusiException(String.format("点检单对应的设备编号【%s】和扫描的设备编号【%s】不匹配,请检查数据", mesEquipment.getEquipId(), model.getProduceSn())); + } + } + } From c927a4f9e03d25129df3d79c02b4f87cb6a35cbd Mon Sep 17 00:00:00 2001 From: jun Date: Mon, 2 Sep 2024 09:39:24 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E5=8F=91=E8=BF=90=E5=8D=95=E4=B8=AD?= =?UTF-8?q?=E8=A3=85=E8=BD=A6=E5=8D=95=E5=AD=97=E6=AE=B5=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesSortShippingCheckService.java | 39 +++++++++------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java index 95cfaa0..2a127ee 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java @@ -140,22 +140,6 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService orderManagement.getShippingCode(), orderManagement.getSeq())); } } - //根据发运单查询装车单明细信息 - boolean isUpdate = false; - DdlPackBean packBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(shippingOrderManagement.getShippingCode(),"shippingCode",packBean); - MesLoadingListDetail listDetail = listDetailRepository.getByProperty(packBean); - if(!Objects.isNull(listDetail)){ - packBean = DdlPackBean.getDdlPackBean(shippingOrderManagement.getOrganizeCode()); - DdlPreparedPack.getNumEqualPack(listDetail.getPid(), "id", packBean); - MesLoadingList loadingList = listRepository.getByProperty(packBean); - if(!Objects.isNull(loadingList)){ - orderManagement.setOrderCode(loadingList.getOrderCode()); - orderManagement.setLoadingListId(loadingList.getId()); - isUpdate = true; - } - } - //根据扫描的发运单找到是否装车配置,若是,则根据发运单查询是否生成装车单,若没生成装车单则提示此发运单配置是否装车为是,但没生成装车单,请检查数据! if (Objects.equals(orderManagement.getIsLoading(), MesCommonConstant.TRUE_INTEGER)) { @@ -219,11 +203,6 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService model.setRecentlyScanShippingCode(recentlyVehiclesOrder.getShippingCode()); } - //发运单关联装车单字段赋值 - if(isUpdate){ - ConvertBean.serviceModelUpdate(orderManagement,shippingOrderManagement.getModifyUser()); - update(orderManagement); - } return model; } @@ -499,7 +478,19 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService orderManagement.getStatus() == MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue()) { orderManagement.setStartScanTime(TimeTool.getNowTime(true)); } - + //根据发运单查询装车单明细信息 + DdlPackBean packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(orderManagement.getShippingCode(),"shippingCode",packBean); + MesLoadingListDetail listDetail = listDetailRepository.getByProperty(packBean); + if(!Objects.isNull(listDetail)){ + packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(listDetail.getPid(), "id", packBean); + MesLoadingList loadingList = listRepository.getByProperty(packBean); + if(!Objects.isNull(loadingList)){ + orderManagement.setOrderCode(loadingList.getOrderCode()); + orderManagement.setLoadingListId(loadingList.getId()); + } + } //发运单状态修改为校验完成 orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE); orderManagement.setStatus(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()); @@ -515,7 +506,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService List produceSnList = new ArrayList<>(); for (MesShippingOrderManagementDetail detail : orderManagementDetailList) { //根据扫描的条码查询条码是否存在 - DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + packBean = DdlPackBean.getDdlPackBean(organizeCode); if (Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) { DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean); } else { @@ -545,6 +536,8 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService if(!CollectionUtils.isEmpty(produceSnList)){ produceSnRepository.saveAll(produceSnList); } + //更新发运单 + ConvertBean.serviceModelUpdate(orderManagement,userInfo); update(orderManagement); shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList); //1.更新装车单明细对应的发运单状态=发运 From 9b7c9e4bb20089cfa4997d772faadfe27124e8ea Mon Sep 17 00:00:00 2001 From: jun Date: Tue, 3 Sep 2024 17:22:28 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E5=8E=9F=E6=9D=90=E6=96=99=E9=98=B2?= =?UTF-8?q?=E9=94=99=EF=BC=8C=E6=8F=90=E4=BA=A4=E9=80=BB=E8=BE=91=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesRawPartChargingServiceImpl.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java index 2a0d766..5b2b88d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesRawPartChargingModel; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.TimeTool; 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.*; import cn.estsh.i3plus.pojo.mes.repository.*; @@ -118,6 +119,11 @@ public class MesRawPartChargingServiceImpl implements IMesRawPartChargingService ValidatorBean.checkNotNull(mesRawPartChargingModel.getMesRawPackagePart(), "原材料容器零件关系不能为空"); ValidatorBean.checkNotNull(mesRawPartChargingModel.getSn(), "原料条码不能为空"); ValidatorBean.checkNotNull(mesRawPartChargingModel.getLotNo(), "批次号不能为空"); + //校验是否已扫描 + List mesRawPartCharging = findMesRawPartCharging(mesRawPartChargingModel); + if (!CollectionUtils.isEmpty(mesRawPartCharging)) { + MesPcnException.throwMesBusiException("料筒条码【%s】与原料条码【%s】已绑定", mesRawPartChargingModel.getPackageSn(), mesRawPartCharging.iterator().next().getSn()); + } //保存生产控制加料 MesRawPartCharging charging = insertRawPartCharging(mesRawPartChargingModel); //保存日志 @@ -135,7 +141,9 @@ public class MesRawPartChargingServiceImpl implements IMesRawPartChargingService } for (MesRawPartCharging mesRawPartCharging : mesRawPartChargingList) { //删除绑定信息 - mesRawPartChargingRepository.deleteWeaklyById(mesRawPartCharging.getId(), mesRawPartChargingModel.getUserName()); + mesRawPartCharging.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + ConvertBean.serviceModelUpdate(mesRawPartCharging,mesRawPartChargingModel.getUserName()); + mesRawPartChargingRepository.update(mesRawPartCharging); //保存日志 saveLog(mesRawPartChargingModel, mesRawPartCharging, MesExtEnumUtil.CHARGING_LOG_STATUS.CLEAR); } From 8dc523d83daa86df6ad270c7a4b8b6ef3ec5953c Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 4 Sep 2024 09:48:01 +0800 Subject: [PATCH 05/11] =?UTF-8?q?PCN=E5=92=8C=E7=BD=91=E9=A1=B5=E7=AB=AF?= =?UTF-8?q?=E7=9A=84=E5=B7=A5=E5=8D=95=E9=A1=B5=E9=9D=A2=E5=81=9A=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=8A=A5=E5=B7=A5=EF=BC=8C=E7=94=9F=E6=88=90=E7=9A=84?= =?UTF-8?q?=E6=9D=A1=E7=A0=81=E8=A7=84=E5=88=99=E4=B8=8D=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E5=8F=96=E7=89=A9=E6=96=99=E6=89=A9=E5=B1=95=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E7=9A=84=E6=9D=A1=E7=A0=81=E8=A7=84=E5=88=99=EF=BC=8C=E5=8F=96?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=9B=BA=E5=AE=9A=E7=9A=84=E8=A7=84=E5=88=99?= =?UTF-8?q?=E5=8D=B3=E5=8F=AF=EF=BC=888=E4=BD=8D=E5=B9=B4=E6=9C=88?= =?UTF-8?q?=E6=97=A5+4=E4=BD=8D=E6=B5=81=E6=B0=B4=E5=8F=B7=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/api/busi/IMesProductVersionService.java | 11 ++++ .../busi/MesProductVersionServiceImpl.java | 37 +++++++++++++ .../serviceimpl/busi/MesWorkOrderService.java | 62 ++++++++++++---------- 3 files changed, 81 insertions(+), 29 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductVersionService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductVersionServiceImpl.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductVersionService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductVersionService.java new file mode 100644 index 0000000..7299ce7 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProductVersionService.java @@ -0,0 +1,11 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +import cn.estsh.i3plus.pojo.mes.bean.MesProductVersion; +import io.swagger.annotations.ApiOperation; + +public interface IMesProductVersionService { + + @ApiOperation(value = "查询生产版本") + MesProductVersion getMesProductVersion(String organizeCode,String partNo,String productVersion); + +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductVersionServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductVersionServiceImpl.java new file mode 100644 index 0000000..ad6c0f0 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProductVersionServiceImpl.java @@ -0,0 +1,37 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductVersionService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesProductVersion; +import cn.estsh.i3plus.pojo.mes.repository.MesProductVersionRepository; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +/** + * @Description : 生产版本 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/9/4 9:29 + * @Modify: + **/ +@Service +@Slf4j +public class MesProductVersionServiceImpl implements IMesProductVersionService { + + @Autowired + private MesProductVersionRepository mesProductVersionRepository; + + @Override + public MesProductVersion getMesProductVersion(String organizeCode, String partNo, String productVersion) { + if(StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(partNo) || StringUtils.isEmpty(productVersion)){ + return null; + } + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(productVersion, "productVersion", ddlPackBean); + return mesProductVersionRepository.getByProperty(ddlPackBean); + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 4ba57b4..fbd62b5 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -1,12 +1,11 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesShiftService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.*; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; +import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -112,6 +111,12 @@ public class MesWorkOrderService implements IMesWorkOrderService { @Autowired private SnowflakeIdMaker snowflakeIdMaker; + @Autowired + private IMesProdOrgExtService mesProdOrgExtService; + + @Autowired + private IMesProductVersionService mesProductVersionService; + @Override public MesWorkOrder queryMesWorkOrder(MesWorkOrder workOrder) { @@ -978,20 +983,9 @@ public class MesWorkOrderService implements IMesWorkOrderService { //查询物料信息 MesPart mesPart = iMesPartService.getMesPartByPartNo(mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getOrganizeCode()); //查询产线信息 - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getWorkCenterCode(), "workCenterCode", ddlPackBean); - MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean); - if (Objects.isNull(mesWorkCenter)) { - MesPcnException.throwMesBusiException("产线【%s】不存在", mesWorkOrderDb.getWorkCenterCode()); - } + MesWorkCenter mesWorkCenter = getMesWorkCenter(mesWorkOrderDb); //获取生产版本 - ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getPartNo(), "partNo", ddlPackBean); - DdlPreparedPack.getStringEqualPack(mesWorkOrderDb.getProductVersion(), "productVersion", ddlPackBean); - MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean); - if (null == mesProductVersion) { - MesPcnException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", mesWorkOrderDb.getPartNo(),mesWorkOrderDb.getProductVersion()); - } + MesProductVersion mesProductVersion = getProductVersion(mesWorkOrderDb); //物料+生产版本获取bom信息 List mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList()); mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty())); @@ -999,19 +993,15 @@ public class MesWorkOrderService implements IMesWorkOrderService { 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())) { + if (!Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), mesWorkCenter.getIsCheckOrderQty())) { MesPcnException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],且未配置超工单!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); } // 如果配置了超工单,且比例已经超过了配置的超工单比例,也需要阻断 double rate = MathOperation.div((mesWorkOrderDb.getReportedQty() - mesWorkOrderDb.getQty()), mesWorkOrderDb.getQty()); - if (rate > MathOperation.div(workCenter.getOrderRate(), 100)) { - MesPcnException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty(), workCenter.getOrderRate()); + if (rate > MathOperation.div(mesWorkCenter.getOrderRate(), 100)) { + MesPcnException.throwMesBusiException("请检查工单数量,工单号[%s],工单数量[%s]报工数量[%s],配置了超工单,但超过了比例[%s]!", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getQty(), mesWorkOrder.getReportedQty(), mesWorkCenter.getOrderRate()); } mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); } else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) { @@ -1021,7 +1011,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { } mesWorkOrderDb.setCompleteQty(mesWorkOrderDb.getReportedQty()); mesWorkOrderDb.setRemark(mesWorkOrder.getRemark()); - String sn = getOrderNo(mesWorkOrder, mesPart, userName); + String sn = getOrderNo(mesWorkOrder.getOrganizeCode(),userName); //更新工单 updateMesWorkOrder(mesWorkOrderDb, userName,mesWorkOrder.getNum()); //记录条码表&加工记录表 @@ -1039,6 +1029,22 @@ public class MesWorkOrderService implements IMesWorkOrderService { } } + private MesProductVersion getProductVersion(MesWorkOrder mesWorkOrderDb) { + MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersion(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getPartNo(),mesWorkOrderDb.getProductVersion()); + if (null == mesProductVersion) { + MesPcnException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getProductVersion()); + } + return mesProductVersion; + } + + private MesWorkCenter getMesWorkCenter(MesWorkOrder mesWorkOrderDb) { + MesWorkCenter mesWorkCenter = mesProdOrgExtService.getWorkCenterDb(mesWorkOrderDb.getOrganizeCode(), mesWorkOrderDb.getWorkCenterCode()); + if (Objects.isNull(mesWorkCenter)) { + MesPcnException.throwMesBusiException("产线【%s】不存在", mesWorkOrderDb.getWorkCenterCode()); + } + return mesWorkCenter; + } + private void saveMesProductPlan(MesWorkOrder bean, boolean isInsert, boolean isReport) { if (StringUtil.isEmpty(bean.getPlanOrderNo())) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); @@ -1246,10 +1252,8 @@ public class MesWorkOrderService implements IMesWorkOrderService { return DateUtil.parse(dateStr, (DateParser) DatePattern.NORM_DATETIME_FORMAT); } - private String getOrderNo(MesWorkOrder mesWorkOrder, MesPart mesPart, String userName) { - if (StringUtils.isEmpty(mesPart.getProductMatchRule())) - MesPcnException.throwMesBusiException("请检查零件信息,零件[%s]信息未维护零件条码编码规则!", mesPart.getPartNo()); - return syncFuncService.syncSerialNo(new GenSerialNoModel(mesPart.getProductMatchRule()).prodLocation(mesWorkOrder.getWorkCenterCode()).partNo(mesPart.getPartNo()).putDataMap(MesPart.class.getSimpleName(), mesPart).organizeCode(mesPart.getOrganizeCode()), userName, mesWorkOrder.getOrganizeCode(), 1).getResultList().get(0).toString(); + private String getOrderNo(String organizeCode,String userName) { + return syncFuncService.syncSerialNo(new GenSerialNoModel(MesCommonConstant.REPORT_SN).organizeCode(organizeCode),userName, organizeCode, 1).getResultList().iterator().next().toString(); } private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, From 463a36566066115779a5f1bd1305614574cdac71 Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 4 Sep 2024 10:30:25 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E9=9D=9E=E6=8E=92=E5=BA=8F=20=E8=BF=94?= =?UTF-8?q?=E5=B7=A5=E6=8B=86=E8=A7=A3=E6=B5=81=E7=A8=8B=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/base/MesReworkTaskServiceImpl.java | 92 ++++++++++++++++++---- .../serviceimpl/busi/MesNcProcessingService.java | 23 ++++++ 2 files changed, 101 insertions(+), 14 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java index 2163477..fed45ea 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java @@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesReworkTaskService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService; @@ -111,6 +112,12 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { @Autowired private IMesProduceSnExtService produceSnExtService; + @Autowired + private IMesAssemblyExtService mesAssemblyExtService; + + @Autowired + private MesProductionAssemblyUniqueRepository mesProductionAssemblyUniqueRepository; + @Override public ListPager queryReworkTask(MesReworkTask mesReworkTask, Pager pager) { String organizeCode = !StringUtils.isEmpty(mesReworkTask.getOrganizeCode())?mesReworkTask.getOrganizeCode():AuthUtil.getOrganizeCode(); @@ -208,9 +215,30 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { if (CollectionUtils.isEmpty(mesProductionAssemblies)) { MesPcnException.throwFlowException("装配件信息不存在"); } + //装配件是自制件,查询自制件经过的装配件记录 + recursionAssemblySn(mesProductionAssemblies,requestModel); + return mesProductionAssemblies; } + + public void recursionAssemblySn(List mesProductionAssemblyList,MesReworkTaskRequestModel requestModel){ + DdlPackBean packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode()); + DdlPreparedPack.getInPackList(mesProductionAssemblyList.stream().map(MesProductionAssembly::getAssemblySn).distinct().collect(Collectors.toList()), "productSn", packBean); + DdlPreparedPack.getNumEqualPack(requestModel.getIsOrigSn(), "isOrigSn", packBean); + if (!StringUtils.isEmpty(requestModel.getAssemblyPartNo())) { + DdlPreparedPack.getStringEqualPack(requestModel.getAssemblyPartNo(), "assemblyPartNo", packBean); + } + if (!Objects.isNull(requestModel.getAssemblyPartStatus())) { + DdlPreparedPack.getNumEqualPack(requestModel.getAssemblyPartStatus(), "assemblyStatus", packBean); + } + List mesProductionAssemblies = mesProductionAssemblyRepository.findByHqlWhere(packBean); + if(!CollectionUtils.isEmpty(mesProductionAssemblies)){ + recursionAssemblySn(mesProductionAssemblies,requestModel); + mesProductionAssemblyList.addAll(mesProductionAssemblies); + } + } + @Override public void reworkSuccess(MesReworkTaskRequestModel requestModel) { @@ -321,10 +349,9 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { // 需要新增一条替换条码的记录 MesProductionAssembly mesProductionRepeatAssembly = new MesProductionAssembly(); - BeanUtils.copyProperties(assembly, mesProductionRepeatAssembly); + BeanUtils.copyProperties(assembly, mesProductionRepeatAssembly,MesPcnExtConstWords.ID); mesProductionRepeatAssembly.setAssemblySn(requestModel.getSn()); mesProductionRepeatAssembly.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()); - mesProductionRepeatAssembly.setId(null); mesProductionRepeatAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); mesProductionRepeatAssembly.setFid(UUID .randomUUID().toString()); ConvertBean.serviceModelInitialize(mesProductionRepeatAssembly,requestModel.getUserName()); @@ -334,17 +361,14 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { ConvertBean.serviceModelUpdate(assembly,requestModel.getUserName()); mesProductionAssemblyRepository.update(assembly); // 新装配件记录为已装配 - mesProductionAssemblyRepository.insert(mesProductionRepeatAssembly); + MesProductionAssembly productionAssembly = mesProductionAssemblyRepository.insert(mesProductionRepeatAssembly); + //唯一性校验数据更新 + if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue() == assembly.getMatchType()) { + saveProductionAssemblyUnique(requestModel, assembly.getAssemblySn(), productionAssembly); + } //自制件更新条码状态 if(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_10.getValue() == assembly.getMatchType()){ - List produceSnList = produceSnExtService.getProduceSnList(requestModel.getOrganizeCode(), requestModel.getSn()); - if (CollectionUtils.isEmpty(produceSnList)) MesPcnException.throwFlowException("零件条码[%s]信息不存在!", requestModel.getSn()); - Optional optional = produceSnList.stream().filter(sn->sn.getId().equals(((MesProductionAssemblyContext)context).getProductSnId())).findFirst(); - if (!optional.isPresent()) MesPcnException.throwFlowException("零件条码[%s]信息不存在!", requestModel.getSn()); - // 更新新替换得条码为已装配 - updateNewSn(optional.get(),requestModel.getUserName()); - //更新原条码状态为已拆解 - updateOldSn(assembly); + updateProductSn(requestModel, assembly, (MesProductionAssemblyContext) context); } checkResult = false; break; @@ -359,6 +383,43 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { } } + private void updateProductSn(MesReworkTaskRequestModel requestModel, MesProductionAssembly assembly, MesProductionAssemblyContext context) { + List produceSnList = produceSnExtService.getProduceSnList(requestModel.getOrganizeCode(), requestModel.getSn()); + if (CollectionUtils.isEmpty(produceSnList)) MesPcnException.throwFlowException("零件条码[%s]信息不存在!", requestModel.getSn()); + Optional optional = produceSnList.stream().filter(sn->sn.getId().equals(context.getProductSnId())).findFirst(); + if (!optional.isPresent()) MesPcnException.throwFlowException("零件条码[%s]信息不存在!", requestModel.getSn()); + // 更新新替换得条码为已装配 + updateNewSn(optional.get(), requestModel.getUserName()); + //更新原条码状态为已拆解 + updateOldSn(assembly); + } + + private void saveProductionAssemblyUnique(MesReworkTaskRequestModel requestModel, String assemblySN, MesProductionAssembly productionAssembly) { + //绑定数据解绑 + saveProductionAssemblyUnique(requestModel, assemblySN); + //唯一性校验数据保存 + saveProductionAssemblyUnique(productionAssembly); + } + + private void saveProductionAssemblyUnique(MesReworkTaskRequestModel requestModel, String assemblySN) { + List assemblyUniqueList = mesAssemblyExtService.getProductionAssemblyUniqueList(requestModel.getOrganizeCode(), assemblySN); + if(!CollectionUtils.isEmpty(assemblyUniqueList)){ + assemblyUniqueList.forEach(t->{ + t.setSystemSyncStatus(CommonEnumUtil.FALSE); + t.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()); + ConvertBean.serviceModelUpdate(t, requestModel.getUserName()); + }); + mesProductionAssemblyUniqueRepository.saveAll(assemblyUniqueList); + } + } + + private void saveProductionAssemblyUnique(MesProductionAssembly productionAssembly) { + MesProductionAssemblyUnique productionAssemblyUnique = new MesProductionAssemblyUnique(); + BeanUtils.copyProperties(productionAssembly, productionAssemblyUnique, MesPcnExtConstWords.ID); + productionAssemblyUnique.setPid(productionAssembly.getId()); + mesProductionAssemblyUniqueRepository.insert(productionAssemblyUnique); + } + private Object getContext(MesReworkTaskRequestModel requestModel, MesProductionAssembly mesProductionAssembly,Map mesWorkCenterMap) { if(StringUtils.isEmpty(mesProductionAssembly.getWorkCenterCode())) MesPcnException.throwFlowException("产线代码不存在"); Object context = null; @@ -492,10 +553,9 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { // 需要新增一条替换条码的记录 MesProductionAssembly mesProductionRepeatAssembly = new MesProductionAssembly(); - BeanUtils.copyProperties(mesProductionAssembly, mesProductionRepeatAssembly); + BeanUtils.copyProperties(mesProductionAssembly, mesProductionRepeatAssembly,MesPcnExtConstWords.ID); mesProductionRepeatAssembly.setAssemblySn(sn); mesProductionRepeatAssembly.setAssemblyStatus(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()); - mesProductionRepeatAssembly.setId(null); mesProductionRepeatAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); mesProductionRepeatAssembly.setFid(UUID .randomUUID().toString()); @@ -509,7 +569,11 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { mesProductionAssemblyRepository.update(mesProductionAssembly); // 新装配件记录为已装配 ConvertBean.serviceModelInitialize(mesProductionRepeatAssembly,requestModel.getUserName()); - mesProductionAssemblyRepository.insert(mesProductionRepeatAssembly); + MesProductionAssembly productionAssembly = mesProductionAssemblyRepository.insert(mesProductionRepeatAssembly); + //唯一性校验数据更新 + if (MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue() == mesProductionAssembly.getMatchType()) { + saveProductionAssemblyUnique(requestModel, mesProductionAssembly.getAssemblySn(), productionAssembly); + } } /** * 需要更新NC标记后进入的表明细状态为已处理 diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java index ae5e574..7c7cad7 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java @@ -8,6 +8,7 @@ import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesNcProcessingDao; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingInputModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingPartAndLotModel; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.TimeTool; @@ -37,6 +38,7 @@ import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -384,6 +386,7 @@ public class MesNcProcessingService implements IMesNcProcessingService { reworkTask.setPartInspectionId(model.getPartInspection().getId()); reworkTask.setOrganizeCode(org); reworkTask.setResponsibleParty(model.getOnlyPerson()); + reworkTask.setDisassembleType(disassembleType(model, org, sn)); reworkTask.setLotNo(model.getPartInspection().getLotNo()); reworkTask.setType(model.getPartInspection().getSourceType()); ConvertBean.serviceModelInitialize(reworkTask, model.getUserName()); @@ -476,6 +479,26 @@ public class MesNcProcessingService implements IMesNcProcessingService { } + private int disassembleType(MesNcProcessingInputModel model, String org, MesProduceSn sn) { + if (MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue() == model.getPartInspection().getSourceType()) { + if (Objects.isNull(sn)) { + throw new ImppBusiException(String.format("【%s】此条码不存在,请检查数据", model.getSn())); + } + //产线信息 + MesWorkCenter centerDb = prodOrgExtService.getWorkCenterDb(org, sn.getWorkCenterCode()); + if (Objects.isNull(centerDb)) { + throw new ImppBusiException(String.format("产线【%s】信息不存在,请检查数据", sn.getWorkCenterCode())); + } + //拆解类型 + if (MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue() == centerDb.getCenterType()) { + return MesExtEnumUtil.REWORK_TASK_DISASSEMBLE_TYPE.SORT_DISASSEMBLE.getValue(); + } else if (MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() == centerDb.getCenterType()) { + return MesExtEnumUtil.REWORK_TASK_DISASSEMBLE_TYPE.NOSORT_DISASSEMBLE.getValue(); + } + } + return MesPcnExtConstWords.ZERO; + } + private MesProduceSn checkProduceSn(String serialNumber, String org) { //根据扫描的条码查询条码是否存在 DdlPackBean packBean = DdlPackBean.getDdlPackBean(org); From 6179c4b4b1c22ffe5d35f7dfbafae14987a81983 Mon Sep 17 00:00:00 2001 From: gsz Date: Wed, 4 Sep 2024 14:10:55 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E7=94=B5=E5=AD=90=E5=8C=96=E6=A3=80?= =?UTF-8?q?=E9=AA=8C=20=E8=B4=A8=E9=87=8F=E7=8A=B6=E6=80=81=E5=8F=91?= =?UTF-8?q?=E7=94=9F=E5=8F=98=E5=8C=96=E5=90=8E=EF=BC=8C=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=A0=87=E8=AF=86=E6=94=B9=E4=B8=BA=E6=9C=AA=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java | 10 ++++++++++ .../serviceimpl/busi/MesInputDefectRecordService.java | 3 +++ .../apiservice/serviceimpl/busi/MesNcProcessingService.java | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java index 2163477..3f46348 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java @@ -239,6 +239,16 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService { mesReworkTask.setStatus(MesExtEnumUtil.REWORK_TASK_STATUS.FINISH.getValue()); ConvertBean.serviceModelUpdate(mesReworkTask,requestModel.getUserName()); mesReworkTaskRepository.save(mesReworkTask); + if (!StringUtils.isEmpty(mesReworkTask.getId())){ + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesReworkTask.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(mesReworkTask.getId(), "reworkTaskId", packBean); + MesPartInspection mesPartInspection = mesPartInspectionRepository.getByProperty(packBean); + if (!StringUtils.isEmpty(mesReworkTask.getId())){ + mesPartInspection.setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + ConvertBean.serviceModelUpdate(mesPartInspection, requestModel.getUserName()); + mesPartInspectionRepository.update(mesPartInspection); + } + } } @Override diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index 70810f9..efb85e4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -209,6 +209,9 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService MesProduceSn produceSn = getProduceSn(model.getSn(), org); + if(!StringUtils.isEmpty(model.getPartInspection())){ + model.getPartInspection().setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + } //零件检测详情为空,则代表本次校验为合格。 if (CollectionUtils.isEmpty(model.getPartInspectionDetailList())) { MesPartInspection partInspection; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java index ae5e574..acc349f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java @@ -322,7 +322,8 @@ public class MesNcProcessingService implements IMesNcProcessingService { private void saveDate(MesNcProcessingInputModel model, MesPartSap part, Integer type, MesDefectType person, String org,String areaCode, boolean isOrder) { String workCenterCode = null == model.getPartInspection() ? null : model.getPartInspection().getWorkCenterCode(); - + assert model.getPartInspection() != null; + model.getPartInspection().setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); MesProduceSn sn = getProduceSn(model.getSn(), org); String source = configService.getCfgValue(org, "LGORT"); From 1ae2f9a3f2760e08a630e7b187e0dfc61a25631d Mon Sep 17 00:00:00 2001 From: gsz Date: Wed, 4 Sep 2024 15:03:33 +0800 Subject: [PATCH 08/11] =?UTF-8?q?42925=20=E5=8E=9F=E6=9D=90=E6=96=99?= =?UTF-8?q?=E9=98=B2=E9=94=99=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java index 5b2b88d..8b6fb49 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java @@ -118,7 +118,7 @@ public class MesRawPartChargingServiceImpl implements IMesRawPartChargingService checkNotNull(mesRawPartChargingModel); ValidatorBean.checkNotNull(mesRawPartChargingModel.getMesRawPackagePart(), "原材料容器零件关系不能为空"); ValidatorBean.checkNotNull(mesRawPartChargingModel.getSn(), "原料条码不能为空"); - ValidatorBean.checkNotNull(mesRawPartChargingModel.getLotNo(), "批次号不能为空"); +// ValidatorBean.checkNotNull(mesRawPartChargingModel.getLotNo(), "批次号不能为空"); //校验是否已扫描 List mesRawPartCharging = findMesRawPartCharging(mesRawPartChargingModel); if (!CollectionUtils.isEmpty(mesRawPartCharging)) { @@ -257,7 +257,7 @@ public class MesRawPartChargingServiceImpl implements IMesRawPartChargingService mesRawPartCharging.setQty(mesRawPartChargingModel.getMesRawPackagePart().getQty()); } mesRawPartCharging.setLoadPartTime(TimeTool.getNowTime(true)); - mesRawPartCharging.setLotNo(mesRawPartChargingModel.getLotNo()); + mesRawPartCharging.setLotNo(StringUtils.isEmpty(mesRawPartChargingModel.getLotNo())?"":mesRawPartChargingModel.getLotNo()); mesRawPartCharging.setParentPackageSn(mesRawPartChargingModel.getPackageSn()); mesRawPartCharging.setPackageId(mesRawPartChargingModel.getMesRawPackageModel().getMesRawPackage().getId()); mesRawPartCharging.setFid(UUID.randomUUID().toString()); From 17cc0df01311ed64475570cdb785cd44a36069c4 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Wed, 4 Sep 2024 15:29:02 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=8F=AF=E7=96=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/busi/MesInputDefectRecordService.java | 14 +------------- .../apiservice/serviceimpl/busi/MesWorkOrderService.java | 6 ++++++ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index efb85e4..12b0828 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -357,7 +357,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService model.getPartInspection().setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue()); ConvertBean.serviceModelUpdate(model.getPartInspection(), AuthUtil.getSessionUser().getUserName()); - + partInspectionRepository.save(model.getPartInspection()); //查询当前单据明细 List resultDetailList = queryResultDetailList(model, org); @@ -390,18 +390,6 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService if (model.getSourceType() == MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue()) { checkProduceSn(produceSn, model.getSn()); produceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()); - String defectTypeCode = MesEnumUtil.DEFECT_TYPE_CODE.DETERMIND.getValue(); - - String defectTypeCodeStr = configService.getCfgValue(org, "MES_SUSPICIOUS_DEFECT_TYPE_CODE") == null ? "QX130" :configService.getCfgValue(org, "MES_SUSPICIOUS_DEFECT_TYPE_CODE"); - - - //根据页面上选择的位置 查询位置,若不存在则提示 位置不存在,请检查数据 - DdlPackBean packBean = DdlPackBean.getDdlPackBean(org); - DdlPreparedPack.getStringEqualPack(defectTypeCodeStr, "defectTypeCode", packBean); - MesDefectType defectType = defectTypeRepository.getByProperty(packBean); - - model.getPartInspection().setDefectTypeCode(defectType.getDefectTypeCode()); - model.getPartInspection().setDefectTypeId(defectType.getId()); ConvertBean.serviceModelInitialize(produceSn, AuthUtil.getSessionUser().getUserName()); produceSnExtService.update(produceSn); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index fbd62b5..41b56e5 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -639,6 +639,12 @@ public class MesWorkOrderService implements IMesWorkOrderService { oldMesWorkOrder.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date())); workOrderExtService.update(oldMesWorkOrder); + //查询工作中心 + DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(oldMesWorkOrder.getId(), "id", orderPackBean); + workOrderRepository.updateByProperties(new String[]{"systemSyncStatus"}, + new Object[]{CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}, orderPackBean); + //保存数据 List mesProductOffLineList = new ArrayList<>(); MesProductOffLine newMesProductOffLine; From 25b01eb43c7a1fccc7cfb501b3482032475f9679 Mon Sep 17 00:00:00 2001 From: "xiangwei.zhang" <752558143@qq.com> Date: Wed, 4 Sep 2024 17:33:58 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=8F=AF=E7=96=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java index 12b0828..50997d2 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java @@ -393,8 +393,6 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService ConvertBean.serviceModelInitialize(produceSn, AuthUtil.getSessionUser().getUserName()); produceSnExtService.update(produceSn); } - - partInspectionRepository.save(model.getPartInspection()); partInspectionDetailRepository.saveAll(resultDetailList); partInspectionDetailRepository.saveAll(model.getPartInspectionDetailList()); From a5dd6cf0f38c3778e2eb09b0e92c18db74cfed0e Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Thu, 5 Sep 2024 13:27:42 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E5=B8=B8=E9=87=8F=20=E7=9D=A1=E7=9C=A02s?= =?UTF-8?q?=E6=94=B9500ms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java | 3 ++- .../cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java index 2cf1f88..5b4836f 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesEquipVariableCollectContext.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.pojo.context; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentLog; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; @@ -108,7 +109,7 @@ public class MesEquipVariableCollectContext implements Serializable { //读取信息赋值 public void copyValue(MesEquipmentLog equipmentLog) { if (null == equipmentLog) return; - BeanUtils.copyProperties(equipmentLog, this); + BeanUtils.copyProperties(equipmentLog, this, MesPcnExtConstWords.CATEGORY_LEVEL_TWO); this.messageSource = MesExtEnumUtil.CELL_MESSAGE_SOURCE.READ.getValue(); } diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java index 432030c..ba3ceb9 100644 --- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java +++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java @@ -213,7 +213,7 @@ public class MesPcnExtConstWords { // 读取失败睡眠毫秒数[工步参数] public static final String READ_FAILURE_SLEEP = "READ_FAILURE_SLEEP"; // 读取失败睡眠默认毫秒数 - public static final Long READ_FAILURE_SLEEP_DEFAULT_TIME = 2000L; + public static final Long READ_FAILURE_SLEEP_DEFAULT_TIME = 500L; // 最大重试次数[工步参数] public static final String MAX_RETRY_TIMES = "MAX_RETRY_TIMES"; // 最大重试次数[工步参数]