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