From 174cc2a8aa52f00334e0e9a3a0ea91b2e3e7acd3 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期四, 30 十月 2025 16:20:41 +0800
Subject: [PATCH] 修改次破报表翻页汇总不正确问题

---
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java |   98 +++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 83 insertions(+), 15 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
index cefbbb1..c5241eb 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.example.erp.common.AsyncQueryExecutor;
 import com.example.erp.common.Constants;
 import com.example.erp.dto.pp.OrderNumberTransferDTO;
 import com.example.erp.entity.pp.*;
@@ -34,12 +35,16 @@
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.client.RestTemplate;
 
+
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 
 @Service
 @DS("pp")
@@ -70,7 +75,8 @@
     private final BasicDataMapper basicDataMapper;
     private final FinishedGoodsInventoryService finishedGoodsInventoryService;
 
-
+    @Resource
+    private AsyncQueryExecutor asyncExecutor;
     /*public ReportingWorkService(ReportingWorkMapper reportingWorkMapper, BasicDateProduceMapper basicDateProduceMapper, DamageDetailsMapper damageDetailsMapper, ReportingWorkDetailMapper reportingWorkDetailMapper, OrderProcessDetailMapper orderProcessDetailMapper, OrderProcessDetailService orderProcessDetailService, OrderMapper orderMapper, FlowCardMapper flowCardMapper, LogService logService, LogMapper logMapper, OrderGlassDetailMapper orderGlassDetailMapper, SysErrorService sysErrorService, OrderDetailMapper orderDetailMapper, FinishedOperateLogMapper finishedOperateLogMapper, ReportingWorkTransferMapper reportingWorkTransferMapper) {
         this.reportingWorkMapper = reportingWorkMapper;
         this.basicDateProduceMapper = basicDateProduceMapper;
@@ -676,7 +682,7 @@
 
 
 
-        List<Map<String, Object>> reportingWorkDetails = reportingWorkMapper.selectByReportingWorkId(reportingWorkId, reportingWork.getNextProcess());
+        List<Map<String, Object>> reportingWorkDetails = reportingWorkMapper.selectByReportingWorkId(reportingWorkId, reportingWork.getNextProcess(),reportingWork.getOrderId());
         reportingWorkDetails.forEach(reportingWorkDetail -> {
             List<DamageDetails> damageDetailsList = new ArrayList<>();
             damageDetailsList = damageDetailsMapper.selectList(new LambdaQueryWrapper<DamageDetails>()
@@ -811,30 +817,92 @@
     }
 
     //鎶ュ伐绠$悊鏌ヨ
-    public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, List<String> selectDate, String orderId, ReportingWork reportingWork) {
+//    public Map<String, Object> selectReportingWorkSv(Integer pageNum, Integer pageSize, List<String> selectDate, String orderId, ReportingWork reportingWork) {
+//        Integer offset = (pageNum - 1) * pageSize;
+//        if ("null".equals(orderId)) {
+//            orderId = "";
+//        }
+//        String endDate = LocalDate.now().toString();
+//        String startDate = LocalDate.now().minusDays(3).toString();
+//        if(selectDate !=null && selectDate.size()==2){
+//            if(!selectDate.get(0).isEmpty()){
+//                startDate = selectDate.get(0);
+//            }
+//            if(!selectDate.get(1).isEmpty()){
+//                endDate = selectDate.get(1);
+//            }
+//        }
+//        Map<String, Object> map = new HashMap<>();
+//        map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, startDate, endDate, orderId, reportingWork));
+//        map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, startDate, endDate, orderId, reportingWork));
+//        List<String> list = new ArrayList<>();
+//        list.add(startDate);
+//        list.add(endDate);
+//        map.put("selectDate",list);
+//        return map;
+//    }
+
+
+    public Map<String, Object> selectReportingWorkSv(
+            Integer pageNum, Integer pageSize,
+            List<String> selectDate, String orderId,
+            ReportingWork reportingWork) {
+
         Integer offset = (pageNum - 1) * pageSize;
+
         if ("null".equals(orderId)) {
             orderId = "";
         }
+
+        // 榛樿鏃堕棿锛氭渶杩� 3 澶�
         String endDate = LocalDate.now().toString();
         String startDate = LocalDate.now().minusDays(3).toString();
-        if(selectDate !=null && selectDate.size()==2){
-            if(!selectDate.get(0).isEmpty()){
+
+        // 濡傛灉浼犲叆鑷畾涔夋棩鏈�
+        if (selectDate != null && selectDate.size() == 2) {
+            if (!selectDate.get(0).isEmpty()) {
                 startDate = selectDate.get(0);
             }
-            if(!selectDate.get(1).isEmpty()){
+            if (!selectDate.get(1).isEmpty()) {
                 endDate = selectDate.get(1);
             }
         }
-        Map<String, Object> map = new HashMap<>();
-        map.put("data", reportingWorkMapper.selectReportingWorkMp(offset, pageSize, startDate, endDate, orderId, reportingWork));
-       // map.put("total", reportingWorkMapper.getPageTotal(offset, pageSize, selectTime1, selectTime2, orderId, reportingWork));
-        map.put("total" ,reportingWorkMapper.getFootSum(offset, pageSize, startDate, endDate, orderId, reportingWork));
-        List<String> list = new ArrayList<>();
-        list.add(startDate);
-        list.add(endDate);
-        map.put("selectDate",list);
-        return map;
+
+        Map<String, Object> result = new HashMap<>();
+
+        try {
+            // 骞惰鎵ц涓ゆ潯 SQL 鏌ヨ
+            String finalStartDate = startDate;
+            String finalEndDate = endDate;
+            String finalOrderId = orderId;
+            CompletableFuture<List<ReportingWork>> dataFuture =
+                    asyncExecutor.runAsync(() ->
+                            reportingWorkMapper.selectReportingWorkMp(
+                                    offset, pageSize, finalStartDate, finalEndDate, finalOrderId, reportingWork));
+
+            CompletableFuture<Map<String, Float>> totalFuture =
+                    asyncExecutor.runAsync(() ->
+                            reportingWorkMapper.getFootSum(
+                                    offset, pageSize, finalStartDate, finalEndDate, finalOrderId, reportingWork));
+
+            // 绛夊緟鍏ㄩ儴瀹屾垚
+            CompletableFuture.allOf(dataFuture, totalFuture).join();
+
+            result.put("data", dataFuture.get());
+            result.put("total", totalFuture.get());
+
+            // 鏃ユ湡鑼冨洿
+            List<String> list = new ArrayList<>();
+            list.add(startDate);
+            list.add(endDate);
+            result.put("selectDate", list);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("骞惰鏌ヨ鎶ュ伐璁板綍寮傚父锛�" + e.getMessage(), e);
+        }
+
+        return result;
     }
 
     //鍒犻櫎鎶ュ伐

--
Gitblit v1.8.0