From 5f1edfec21b921ec885b40b0a86c7ffe4aa5a7de Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期一, 15 九月 2025 11:52:06 +0800 Subject: [PATCH] 齐套性检查排除已检查过且齐套的物料 --- src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java index 83314ea..62f19b8 100644 --- a/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java +++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesProductionWorkOrderServiceImpl.java @@ -29,6 +29,7 @@ import org.jeecg.modules.mes.entity.MesKittingCompletenessCheck; import org.jeecg.modules.mes.entity.MesProductionOrder; import org.jeecg.modules.mes.enums.ProductionOrderStatus; +import org.jeecg.modules.mes.service.IMesKittingCompletenessCheckService; import org.jeecg.modules.mes.service.IMesProductionOrderService; import org.jeecg.modules.mes.service.IMesProductionWorkOrderService; import org.jeecg.modules.mes.entity.MesProductionWorkOrder; @@ -76,6 +77,8 @@ private ILswMaterialInventoryService lswMaterialInventoryService; @Autowired private ILineSideWarehouseService lineSideWarehouseService; + @Autowired + private IMesKittingCompletenessCheckService mesKittingCompletenessCheckService; @Override public List<MesProductionWorkOrder> schedule(MesProductionWorkScheduleRequest request) { @@ -234,14 +237,25 @@ List<String> bomMaterialNumberList = processBillMaterialsDetails.stream() .map(PmsProcessBillMaterialsDetail::getMaterialNumber).collect(Collectors.toList()); Map<String, LswMaterialInventoryVo> lswMaterialInventoryMap = lswMaterialInventoryService - .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId()).stream() + .selectLineSideMaterialInventoryByMaterialNumber(bomMaterialNumberList, lineSideWarehouse.getId(), null).stream() .collect(Collectors.toMap(LswMaterialInventoryVo::getMaterialNumber, v1 -> v1, (v1, v2) -> v1)); List<MesKittingCompletenessCheck> completenessCheckResultList = CollectionUtil.newArrayList(); + //鏌ヨ鏄惁鏈夐綈濂楁鏌ヨ褰曪紙宸查綈澶囩殑锛� + List<String> checkedMaterialNumberList = mesKittingCompletenessCheckService.list(new LambdaQueryWrapper<MesKittingCompletenessCheck>() + .eq(MesKittingCompletenessCheck::getWorkOrderId, workOrder.getId()) + .in(MesKittingCompletenessCheck::getMaterialNumber, bomMaterialNumberList) + .eq(MesKittingCompletenessCheck::getCheckFlag, CommonConstant.DEFAULT_1)) + .stream().map(MesKittingCompletenessCheck::getMaterialNumber).collect(Collectors.toList()); //鏍规嵁璁㈠崟BOM鏄庣粏鍒楀嚭榻愬妫�鏌ョ粨鏋� for (PmsProcessBillMaterialsDetail processBillMaterialsDetail : processBillMaterialsDetails) { - LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryMap.get(processBillMaterialsDetail.getMaterialNumber()); + String materialNumber = processBillMaterialsDetail.getMaterialNumber(); + if (checkedMaterialNumberList.contains(materialNumber)) { + //濡傛灉宸茬粡鍋氳繃榻愬鎬ф鏌ワ紝骞朵笖榻愬锛屽氨蹇界暐鎺� + continue; + } + LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryMap.get(materialNumber); MesKittingCompletenessCheck completenessCheckItem = new MesKittingCompletenessCheck() - .setMaterialNumber(processBillMaterialsDetail.getMaterialNumber()) + .setMaterialNumber(materialNumber) .setMaterialName(processBillMaterialsDetail.getMaterialName()) //闇�姹傛暟閲� = (bom鏄庣粏鐨勯渶姹傛暟閲� / bom璁㈠崟鐨勬暟閲�) * 鎺掍骇宸ュ崟璁″垝鐢熶骇鏁伴噺 .setRequiredQuantity(processBillMaterialsDetail.getUsageQuantity() @@ -260,4 +274,37 @@ }); return completenessCheckResultList; } + + @Override + public List<MesKittingCompletenessCheck> workOrderCompletenessCheckOnHeatTreatment(MesProductionWorkOrder workOrder) { + //鏌ヨ宸ュ崟鎵�灞炰骇绾垮搴旂殑绾胯竟浠� + LineSideWarehouse lineSideWarehouse = lineSideWarehouseService.list(new LambdaQueryWrapper<LineSideWarehouse>() + .eq(LineSideWarehouse::getFactoryId, workOrder.getFactoryId()) + .eq(LineSideWarehouse::getDelFlag, CommonConstant.DEL_FLAG_0) + .eq(LineSideWarehouse::getWarehouseStatus, CommonConstant.DEFAULT_1)) + .stream().findFirst().orElse(null); + if (lineSideWarehouse == null) { + throw new JeecgBootException("璇ヤ骇绾挎湭閰嶇疆绾胯竟浠擄紒"); + } + //鏌ヨ宸ュ崟鐑鐞嗙墿鏂欏搴旀瘺鍧湪绾胯竟浠撶殑搴撳瓨 + LswMaterialInventoryVo materialInventoryVo = lswMaterialInventoryService.selectLineSideMaterialInventoryByMaterialNumber(Collections + .singletonList(workOrder.getMaterialNumber()), lineSideWarehouse.getId(), CommonConstant.DEFAULT_0) + .stream().findFirst().orElse(null); + if (materialInventoryVo == null) { + throw new JeecgBootException("绾胯竟搴撶墿鏂欎笉瀛樺湪锛�"); + } + MesKittingCompletenessCheck completenessCheck = new MesKittingCompletenessCheck() + .setMaterialNumber(materialInventoryVo.getMaterialNumber()) + .setMaterialName(materialInventoryVo.getMaterialName()) + .setRequiredQuantity(workOrder.getPlanQuantity()) + .setActualQuantity(materialInventoryVo.getStockQuantity()) + .setProductionUnit("PC") + .setCheckFlag(materialInventoryVo.getStockQuantity().compareTo(workOrder.getPlanQuantity()) > 0 ? CommonConstant.DEFAULT_1 : CommonConstant.DEFAULT_0); + return Collections.singletonList(completenessCheck); + } + + @Override + public IPage<MesProductionWorkOrder> queryWorkOrderByTransfer(Page<MesProductionWorkOrder> page) { + return this.getBaseMapper().queryWorkOrderByTransfer(page); + } } -- Gitblit v1.9.3