From c16a5f590db461391a4441e520f3264526c11905 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 15 六月 2026 13:13:56 +0800
Subject: [PATCH] feat(sales): 优化发货信息管理功能

---
 src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java |   83 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 80 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
index 994b390..10cc97c 100644
--- a/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
+++ b/src/main/java/com/ruoyi/sales/controller/SalesLedgerController.java
@@ -23,9 +23,11 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -161,6 +163,30 @@
     }
 
     /**
+     * 瀵煎嚭閿�鍞彴璐﹀垪琛紙鍖呭惈浜у搧鏄庣粏锛屼袱涓猻heet椤碉級
+     */
+    @Log(title = "閿�鍞彴璐�", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportWithProducts")
+    @ApiOperation("瀵煎嚭閿�鍞彴璐﹀強浜у搧鏄庣粏锛堜袱涓猻heet椤碉級")
+    public void exportWithProducts(HttpServletResponse response, SalesLedgerDto salesLedgerDto) {
+        salesLedgerService.exportWithProducts(response, salesLedgerDto);
+    }
+
+    /**
+     * 瀵煎嚭鍞悗鍙拌处宸ヨ壓璺嚎
+     */
+    @Log(title = "閿�鍞彴璐﹀伐鑹鸿矾绾�", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportProcessRoute")
+    @ApiOperation("瀵煎嚭鍞悗鍙拌处宸ヨ壓璺嚎")
+    public void exportProcessRoute(HttpServletResponse response,
+                                   HttpServletRequest request,
+                                   @RequestParam(value = "completedTimeStart", required = false) String completedTimeStart,
+                                   @RequestParam(value = "completedTimeEnd", required = false) String completedTimeEnd) {
+        List<Long> salesLedgerIds = parseSalesLedgerIds(request);
+        salesLedgerService.exportProcessRoute(response, salesLedgerIds, completedTimeStart, completedTimeEnd);
+    }
+
+    /**
      * 瀵煎嚭寮�绁ㄧ櫥璁板垪琛�
      */
     @Log(title = "瀵煎嚭寮�绁ㄧ櫥璁板垪琛�", businessType = BusinessType.EXPORT)
@@ -188,8 +214,8 @@
      */
     @PostMapping("/saleProcessBind")
     @ApiOperation("閿�鍞鍗曠粦瀹氬伐鑹鸿矾绾�")
-    public AjaxResult saleProcessBind(@RequestBody SalesLedgerProcessRoute salesLedgerProcessRoute) {
-        salesLedgerService.saleProcessBind(salesLedgerProcessRoute);
+    public AjaxResult saleProcessBind(@RequestBody SalesLedgerProcessRouteDto salesLedgerProcessRouteDto) {
+        salesLedgerService.saleProcessBind(salesLedgerProcessRouteDto);
         return AjaxResult.success();
     }
 
@@ -216,7 +242,9 @@
     @ApiOperation("鏍囪璁㈠崟瀹屾垚锛堜笉鍙挙閿�锛�")
     public AjaxResult markOrderCompleted(@RequestBody Map<String, Object> params) {
         @SuppressWarnings("unchecked")
-        List<Long> ids = (List<Long>) params.get("ids");
+        List<Long> ids = ((List<Object>) params.get("ids")).stream()
+            .map(obj -> Long.valueOf(obj.toString()))
+            .collect(Collectors.toList());
         if (ids == null || ids.isEmpty()) {
             return AjaxResult.error("璇烽�夋嫨瑕佹爣璁板畬鎴愮殑璁㈠崟");
         }
@@ -433,4 +461,53 @@
         excelUtil.importTemplateExcel(response, "鏈嚭搴撳鍏ユā鏉夸笅杞�");
     }
 
+    private List<Long> parseSalesLedgerIds(HttpServletRequest request) {
+        if (request == null) {
+            return Collections.emptyList();
+        }
+
+        List<Long> ids = new ArrayList<>();
+        Map<String, String[]> parameterMap = request.getParameterMap();
+        if (parameterMap == null || parameterMap.isEmpty()) {
+            return ids;
+        }
+
+        String directValue = request.getParameter("salesLedgerIds");
+        if (StringUtils.hasText(directValue)) {
+            for (String value : directValue.split(",")) {
+                addParsedLong(ids, value);
+            }
+        }
+
+        for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
+            String key = entry.getKey();
+            if (!StringUtils.hasText(key)) {
+                continue;
+            }
+            if (!"salesLedgerIds".equals(key) && !key.startsWith("salesLedgerIds[")) {
+                continue;
+            }
+            String[] values = entry.getValue();
+            if (values == null) {
+                continue;
+            }
+            for (String value : values) {
+                addParsedLong(ids, value);
+            }
+        }
+
+        return ids.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList());
+    }
+
+    private void addParsedLong(List<Long> target, String value) {
+        if (target == null || !StringUtils.hasText(value)) {
+            return;
+        }
+        try {
+            target.add(Long.valueOf(value.trim()));
+        } catch (Exception ignored) {
+            // ignore invalid id values
+        }
+    }
+
 }

--
Gitblit v1.9.3