From 8782476e9cb4480be5da588888d08022b7942d0c Mon Sep 17 00:00:00 2001
From: xiaoyi <908147524@qq.com>
Date: 星期六, 07 十一月 2026 14:07:59 +0800
Subject: [PATCH] feat: 补齐需求10/15/16/17/18/21/23,改用现有模块替代 ERP 依赖

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

diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java
index 6fff993..f3aff84 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/batch/MesWmBatchController.java
@@ -12,6 +12,10 @@
 import cn.iocoder.yudao.module.mes.controller.admin.wm.batch.vo.MesWmBatchSalesTargetRespVO;
 import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi;
 import cn.iocoder.yudao.module.crm.api.customer.dto.CrmCustomerRespDTO;
+import cn.iocoder.yudao.module.aftersales.api.AfterSaleTicketApi;
+import cn.iocoder.yudao.module.aftersales.api.dto.AfterSaleTicketRespDTO;
+import cn.iocoder.yudao.module.srm.api.certificate.SrmSupplierCertificateApi;
+import cn.iocoder.yudao.module.srm.api.certificate.dto.SrmSupplierCertificateRespDTO;
 import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi;
 import cn.iocoder.yudao.module.srm.api.supplier.dto.SrmSupplierRespDTO;
 import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi;
@@ -44,9 +48,12 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -66,6 +73,10 @@
     private MdmUnitMeasureApi mdmUnitMeasureApi;
     @Resource
     private SrmSupplierApi srmSupplierApi;
+    @Resource
+    private SrmSupplierCertificateApi srmSupplierCertificateApi;
+    @Resource
+    private AfterSaleTicketApi afterSaleTicketApi;
     @Resource
     private CrmCustomerApi customerApi;
     @Resource
@@ -132,6 +143,42 @@
         return success(buildSalesTargetRespVOList(list));
     }
 
+    @GetMapping("/certificates")
+    @Operation(summary = "鎵规鍘熸潗鏂欏悎瑙勮瘉涔�",
+            description = "鎸夋壒娆$殑閲囪喘鏉ユ簮渚涘簲鍟嗘煡璇㈠悎瑙勮瘉涔︼紱璇佷功杩囨湡鏍囪鐢� SRM 鍒ゅ畾")
+    @Parameter(name = "code", description = "鎵规缂栫爜", required = true, example = "BATCH20250314001")
+    @PreAuthorize("@ss.hasPermission('mes:wm-batch:query')")
+    public CommonResult<List<SrmSupplierCertificateRespDTO>> getCertificateList(@RequestParam("code") @Valid String code) {
+        List<SrmSupplierCertificateRespDTO> result = new ArrayList<>();
+        Set<Long> vendorIds = batchService.getPurchaseSourceList(code).stream()
+                .map(MesWmBatchPurchaseSourceRespVO::getVendorId)
+                .filter(Objects::nonNull).collect(Collectors.toSet());
+        for (Long vendorId : vendorIds) {
+            List<SrmSupplierCertificateRespDTO> list =
+                    srmSupplierCertificateApi.getCertificatesBySupplierId(vendorId).getCheckedData();
+            if (list != null) result.addAll(list);
+        }
+        return success(result);
+    }
+
+    @GetMapping("/aftersales")
+    @Operation(summary = "鎵规鍞悗鏁呴殰璁板綍",
+            description = "鎸夋壒娆¢攢鍞幓鍚戝叧鑱旂殑閿�鍞鍗曞彿鏌ヨ鍞悗宸ュ崟锛岀敤浜庤川閲忚拷婧欢浼稿埌鍞悗鐜妭")
+    @Parameter(name = "code", description = "鎵规缂栫爜", required = true, example = "BATCH20250314001")
+    @PreAuthorize("@ss.hasPermission('mes:wm-batch:query')")
+    public CommonResult<List<AfterSaleTicketRespDTO>> getAfterSaleList(@RequestParam("code") @Valid String code) {
+        List<AfterSaleTicketRespDTO> result = new ArrayList<>();
+        Set<String> saleOrderNos = batchService.getSalesTargetList(code).stream()
+                .map(MesWmBatchSalesTargetRespVO::getSalesOrderCode)
+                .filter(Objects::nonNull).filter(s -> !s.isBlank()).collect(Collectors.toSet());
+        for (String saleOrderNo : saleOrderNos) {
+            List<AfterSaleTicketRespDTO> list =
+                    afterSaleTicketApi.getTicketsBySaleOrderNo(saleOrderNo).getCheckedData();
+            if (list != null) result.addAll(list);
+        }
+        return success(result);
+    }
+
     @GetMapping("/process-trace")
     @Operation(summary = "鎵规宸ュ簭娴佽浆锛堜骇鍑�/鎶曞叆浜嬩欢锛�")
     @Parameter(name = "code", description = "鎵规缂栫爜", required = true, example = "BATCH20250314001")

--
Gitblit v1.9.3