From 616a6b2e9a7824da8d11a4e11730fd2f9b615299 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 06 十一月 2026 09:46:53 +0800
Subject: [PATCH] fix(qc): 修复巡检记录校验缺少租户隔离问题

---
 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/scrap/MesWmScrapReceiptController.java |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/scrap/MesWmScrapReceiptController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/scrap/MesWmScrapReceiptController.java
index b77debc..60d9a9d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/scrap/MesWmScrapReceiptController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/scrap/MesWmScrapReceiptController.java
@@ -42,6 +42,49 @@
     @Resource private MesProWorkOrderMapper workOrderMapper;
     @Resource private MesWmTransactionService transactionService;
     @Resource private MesWmWarehouseAreaService areaService;
+    @Resource private cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService warehouseService;
+    @Resource private cn.iocoder.yudao.module.mdm.api.item.MdmItemApi itemApi;
+
+    @GetMapping("/order-outputs")
+    @PreAuthorize("@ss.hasPermission('mes:wm-scrap-receipt:create')")
+    public CommonResult<List<OutputItem>> orderOutputs(@RequestParam("workOrderId") Long workOrderId) {
+        var order = workOrderMapper.selectById(workOrderId);
+        if (order == null || !java.util.Objects.equals(order.getStatus(), cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum.FINISHED.getStatus()))
+            throw new ServiceException(400, "浠呭凡瀹屾垚鐨勭敓浜ц鍗曞彲浠ョ櫥璁板簾鏂�");
+        var list = receiptMapper.selectOrderOutputs(workOrderId, cn.iocoder.yudao.module.mes.enums.wm.MesWmProductProduceStatusEnum.FINISHED.getStatus());
+        var items = itemApi.getItemMap(list.stream().map(OutputItem::getItemId).collect(java.util.stream.Collectors.toSet()));
+        list.forEach(output -> { var item = items.get(output.getItemId()); if (item != null) { output.setItemName(item.getName()); output.setItemCode(item.getCode()); } });
+        return success(list);
+    }
+
+    @PostMapping("/create-from-output")
+    @PreAuthorize("@ss.hasPermission('mes:wm-scrap-receipt:create')")
+    @Transactional(rollbackFor = Exception.class)
+    public CommonResult<Long> createFromOutput(@Valid @RequestBody CreateReq req) {
+        var locked = workOrderMapper.lockScheduleOrders(List.of(req.getWorkOrderId()));
+        if (locked.isEmpty() || !java.util.Objects.equals(locked.get(0).getStatus(), cn.iocoder.yudao.module.mes.enums.pro.MesProWorkOrderStatusEnum.FINISHED.getStatus()))
+            throw new ServiceException(400, "浠呭凡瀹屾垚鐨勭敓浜ц鍗曞彲浠ョ櫥璁板簾鏂�");
+        if (receiptMapper.selectOrderOutputs(req.getWorkOrderId(), cn.iocoder.yudao.module.mes.enums.wm.MesWmProductProduceStatusEnum.FINISHED.getStatus()).stream()
+                .noneMatch(item -> java.util.Objects.equals(item.getItemId(), req.getItemId())
+                        && java.util.Objects.equals(item.getBatchId(), req.getBatchId())
+                        && java.util.Objects.equals(cn.hutool.core.util.StrUtil.blankToDefault(item.getBatchCode(), ""),
+                                cn.hutool.core.util.StrUtil.blankToDefault(req.getBatchCode(), ""))))
+            throw new ServiceException(400, "鎵�閫夌墿鏂欎笉鏄璁㈠崟鐨勫凡瀹屾垚浜у嚭");
+        var warehouse = warehouseService.validateWarehouseExists(req.getWarehouseId());
+        if (!java.util.Objects.equals("搴熸枡浠�", warehouse.getWarehouseType()) && !java.util.Objects.equals("搴熸枡", warehouse.getWarehouseType()))
+            throw new ServiceException(400, "璇烽�夋嫨浠撳簱绫诲瀷涓哄簾鏂欎粨鐨勪粨搴�");
+        return create(req);
+    }
+
+    @Data
+    public static class OutputItem {
+        private Long itemId;
+        private String itemCode;
+        private String itemName;
+        private Long batchId;
+        private String batchCode;
+        private BigDecimal quantity;
+    }
 
     @PostMapping("/create")
     @PreAuthorize("@ss.hasPermission('mes:wm-scrap-receipt:create')")

--
Gitblit v1.9.3