From 32863d68c09f45cd501fd3db59c7f13e57130fe4 Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期三, 10 九月 2025 17:51:36 +0800 Subject: [PATCH] 热处理报工优化 --- src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java index 5a7af5a..2dda41a 100644 --- a/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java +++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesWorkReportingServiceImpl.java @@ -17,11 +17,15 @@ import org.jeecg.modules.base.service.IShiftService; import org.jeecg.modules.lsw.entity.LswMaterial; import org.jeecg.modules.lsw.entity.LswMaterialInbound; +import org.jeecg.modules.lsw.entity.LswMaterialInventory; import org.jeecg.modules.lsw.enums.MaterialCategoryEnum; import org.jeecg.modules.lsw.enums.MaterialInboundCategory; +import org.jeecg.modules.lsw.enums.MaterialInventoryStatusEnum; import org.jeecg.modules.lsw.service.ILswMaterialInboundService; +import org.jeecg.modules.lsw.service.ILswMaterialInventoryService; import org.jeecg.modules.lsw.service.ILswMaterialService; import org.jeecg.modules.mes.entity.*; +import org.jeecg.modules.mes.enums.ReportCategoryEnum; import org.jeecg.modules.mes.mapper.MesWorkReportingMapper; import org.jeecg.modules.mes.service.*; import org.jeecg.modules.mes.utils.CommonUtils; @@ -49,6 +53,7 @@ import java.time.temporal.ChronoField; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @Description: 宸ュ崟鎶ュ伐 @@ -94,6 +99,8 @@ private IInspectionPlanItemService inspectionPlanItemService; @Autowired private IMesMaterialConsumptionDetailService mesMaterialConsumptionDetailService; + @Autowired + private ILswMaterialInventoryService lswMaterialInventoryService; @Override public List<MesWorkReporting> queryWorkReportingByWorkOrderId(String workOrderId) { @@ -158,7 +165,7 @@ //鎷兼帴鎴愬搧鎶ュ伐鎵樺彿 String palletNumber4 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber4"); String finishedPalletNumber = material.getMaterialNumber() + date + palletNumber4; - mesWorkReporting.setPalletNumber(finishedPalletNumber).setReportType("FINISHED"); + mesWorkReporting.setPalletNumber(finishedPalletNumber).setReportType(ReportCategoryEnum.FINISHED.name()); break; case INNER_FLANGE: case OUTER_FLANGE: @@ -168,8 +175,13 @@ Shift shift = shiftService.getById(workOrder.getShiftId()); String palletNumber6 = sysBusinessCodeRuleService.generateBusinessCodeSeq("WorkReportingPalletNumber6"); String halfPalletNumber = factory.getFactoryCode() + material.getMaterialNumber() + date + shift.getShiftCode() + palletNumber6; - mesWorkReporting.setPalletNumber(halfPalletNumber).setReportType("HALF"); + mesWorkReporting.setPalletNumber(halfPalletNumber).setReportType(ReportCategoryEnum.HALF.name()); break; + case BLANK: + //鐑鐞嗘姤宸� + consumptionDetailList = heatTreatmentReport(mesWorkReporting, workOrder, lineSideWarehouse); + mesWorkReporting.setReportType(ReportCategoryEnum.HEATTREATMENT.name()); + } //鏂板鎶ュ伐璁板綍 save(mesWorkReporting); @@ -186,6 +198,48 @@ return mesWorkReporting; } + //鐑鐞嗘姤宸� + private List<MesMaterialConsumptionDetail> heatTreatmentReport(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder, LineSideWarehouse lineSideWarehouse) { + //1銆佸叆搴撶儹澶勭悊姣涘澂鍒板搴旂嚎杈瑰簱锛岀儹澶勭悊鍓嶅悗鐗╂枡缂栫爜涓嶅彂鐢熷彉鍖栵紝鍙渶瑕佹洿鏂扮儹澶勭悊鏍囪瘑锛屾墍浠ユ澶勪笉鑳界洿鎺ヨ皟鐢ㄧ嚎杈瑰簱鐨勫叆搴撴柟娉曪紝闇�瑕佺洿鎺ユ洿鏂扮墿鏂欏簱瀛樹俊鎭腑鐨勭儹澶勭悊鏍囪瘑瀛楁 + LswMaterialInventory materialInventory = lswMaterialInventoryService.list(new LambdaQueryWrapper<LswMaterialInventory>() + .eq(LswMaterialInventory::getWarehouseId, lineSideWarehouse.getId()) + .eq(LswMaterialInventory::getInventoryStatus, MaterialInventoryStatusEnum.OUTBOUND.name()) + .eq(LswMaterialInventory::getHeatTreatmentFlag, CommonConstant.STATUS_0) + .apply("EXISTS (SELECT 1 FROM lsw_material t WHERE t.id = lsw_material_inventory.material_id AND t.material_number = {0} " + + "AND t.del_flag = {1} AND t.material_status = {2})", workOrder.getMaterialNumber(), CommonConstant.DEL_FLAG_0, CommonConstant.STATUS_1)) + .stream().findFirst().orElse(null); + if (materialInventory == null) { + throw new JeecgBootException("绾胯竟搴撴棤璇ョ墿鏂欏簱瀛樹俊鎭紒"); + } + if (materialInventory.getQuantity().compareTo(mesWorkReporting.getQuantity()) != 0) { + throw new JeecgBootException("鎶ュ伐鏁伴噺涓嶇鍚堟暣鎵规鏁伴噺瑕佹眰锛�"); + } + materialInventory.setHeatTreatmentFlag(CommonConstant.STATUS_1); + materialInventory.setInventoryStatus(MaterialInventoryStatusEnum.NORMAL.name()); + lswMaterialInventoryService.updateById(materialInventory); + //2銆佹洿鏂拌鎵规鍙峰緱涓婃枡璁板綍 + MesMaterialLoading materialLoading = mesMaterialLoadingService.list(new LambdaQueryWrapper<MesMaterialLoading>() + .eq(MesMaterialLoading::getFactoryId, workOrder.getFactoryId()) + .eq(MesMaterialLoading::getWarehouseId, lineSideWarehouse.getId()) + .eq(MesMaterialLoading::getMaterialNumber, workOrder.getMaterialNumber()) + .eq(MesMaterialLoading::getBatchNumber, materialInventory.getBatchNumber())) + .stream().findFirst().orElse(null); + if (materialLoading == null) { + throw new JeecgBootException("鏈壘鍒拌鎵规鍙风殑涓婃枡璁板綍锛�"); + } + materialLoading.setRemainingQuantity(BigDecimal.ZERO); + mesMaterialLoadingService.updateById(materialLoading); + //鐑鐞嗘姤宸ワ紝鎵规鍙峰彇搴撳瓨鐨勬暣鎵规壒娆″彿 + mesWorkReporting.setBatchNumber(materialInventory.getBatchNumber()); + //3銆佽褰曟秷鑰楁槑缁� + MesMaterialConsumptionDetail materialConsumptionDetail = new MesMaterialConsumptionDetail() + .setWorkOrderId(workOrder.getId()) + .setFactoryId(workOrder.getFactoryId()) + .setLoadingId(materialLoading.getId()) + .setQuantity(mesWorkReporting.getQuantity()); + return Collections.singletonList(materialConsumptionDetail); + } + //鍗婃垚鍝�(鍐呮硶鍏般�佸娉曞叞)銆佹垚鍝佹姤宸� private List<MesMaterialConsumptionDetail> productReport(MesWorkReporting mesWorkReporting, MesProductionWorkOrder workOrder, LineSideWarehouse lineSideWarehouse) { //1銆佸叆搴� 鍗婃垚鍝�/鎴愬搧 鍒板搴旂嚎杈瑰簱 -- Gitblit v1.9.3