From f0570bd1986323562fa041e4e1e03607e7899ea3 Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期一, 30 三月 2026 15:04:47 +0800
Subject: [PATCH] 新增线上配置

---
 tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java |   90 +++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 79 insertions(+), 11 deletions(-)

diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java
index cf963b6..9c9efac 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java
@@ -1,13 +1,12 @@
 package com.ruoyi.tms.service.impl;
 
 import java.math.BigDecimal;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.enums.SystemDataNoEnum;
 import com.ruoyi.common.exception.ServiceException;
@@ -110,7 +109,6 @@
             return null;
         }
         LambdaQueryWrapper<TmsFinanceDetail> eq = new LambdaQueryWrapper<TmsFinanceDetail>()
-
                 .eq(TmsFinanceDetail::getFinanceType, 2)
                 .eq(TmsFinanceDetail::getCreateId, SecurityUtils.getUserId());
         if (dispatchId !=null){
@@ -118,15 +116,80 @@
         }
         List<TmsFinanceDetail> tmsFinanceDetails = tmsFinanceDetailMapper.selectList(eq);
         if (tmsFinanceDetails != null && !tmsFinanceDetails.isEmpty()){
-            tmsFinanceDetails.forEach(tmsFinanceDetail -> {
-                TmsDispatchOrder tmsDispatchOrder = tmsDispatchOrderMapper.selectById(tmsFinanceDetail.getDispatchOrderId());
-                if (tmsDispatchOrder != null){
-                    tmsFinanceDetail.setDispatchNo(tmsDispatchOrder.getDispatchNo());
-                    tmsFinanceDetail.setCustomerName(tmsDispatchOrder.getCustomerName());
-                }
-            });
+            enrichDispatchInfo(tmsFinanceDetails);
         }
         return tmsFinanceDetails;
+    }
+
+    @Override
+    public Map<String, Object> getTmsFinanceDetailListPage(Integer dispatchId, Integer pageNum, Integer pageSize) {
+        Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId());
+        if (deviceId == null) {
+            Map<String, Object> empty = new HashMap<>();
+            empty.put("rows", Collections.emptyList());
+            empty.put("total", 0);
+            empty.put("totalAmount", BigDecimal.ZERO);
+            return empty;
+        }
+
+        LambdaQueryWrapper<TmsFinanceDetail> wrapper = new LambdaQueryWrapper<TmsFinanceDetail>()
+                .eq(TmsFinanceDetail::getFinanceType, 2)
+                .eq(TmsFinanceDetail::getCreateId, SecurityUtils.getUserId());
+        if (dispatchId != null) {
+            wrapper.eq(TmsFinanceDetail::getDispatchOrderId, dispatchId);
+        }
+        // 鎸夊垱寤烘椂闂村�掑簭
+        wrapper.orderByDesc(TmsFinanceDetail::getFeeCreateTime);
+
+        // 鏌ユ�婚噾棰濓紙涓嶅垎椤碉級
+        List<TmsFinanceDetail> allRecords = tmsFinanceDetailMapper.selectList(
+                new LambdaQueryWrapper<TmsFinanceDetail>()
+                        .select(TmsFinanceDetail::getActualFeeAmount)
+                        .eq(TmsFinanceDetail::getFinanceType, 2)
+                        .eq(TmsFinanceDetail::getCreateId, SecurityUtils.getUserId())
+                        .eq(dispatchId != null, TmsFinanceDetail::getDispatchOrderId, dispatchId)
+        );
+        BigDecimal totalAmount = allRecords.stream()
+                .map(TmsFinanceDetail::getActualFeeAmount)
+                .filter(Objects::nonNull)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        // 鍒嗛〉鏌ヨ
+        Page<TmsFinanceDetail> page = new Page<>(pageNum, pageSize);
+        Page<TmsFinanceDetail> result = tmsFinanceDetailMapper.selectPage(page, wrapper);
+
+        List<TmsFinanceDetail> rows = result.getRecords();
+        if (rows != null && !rows.isEmpty()) {
+            enrichDispatchInfo(rows);
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("rows", rows);
+        map.put("total", result.getTotal());
+        map.put("totalAmount", totalAmount);
+        return map;
+    }
+
+    /**
+     * 濉厖璋冨害鍗曚俊鎭紙璋冨害鍗曞彿銆佸鎴峰悕绉帮級
+     */
+    private void enrichDispatchInfo(List<TmsFinanceDetail> list) {
+        // 鎵归噺鏌ヨ璋冨害鍗曪紝閬垮厤 N+1
+        Set<Integer> orderIds = new HashSet<>();
+        list.forEach(d -> { if (d.getDispatchOrderId() != null) orderIds.add(d.getDispatchOrderId()); });
+        if (orderIds.isEmpty()) return;
+
+        List<TmsDispatchOrder> orders = tmsDispatchOrderMapper.selectBatchIds(orderIds);
+        Map<Integer, TmsDispatchOrder> orderMap = new HashMap<>();
+        orders.forEach(o -> orderMap.put(o.getId(), o));
+
+        list.forEach(d -> {
+            TmsDispatchOrder order = orderMap.get(d.getDispatchOrderId());
+            if (order != null) {
+                d.setDispatchNo(order.getDispatchNo());
+                d.setCustomerName(order.getCustomerName());
+            }
+        });
     }
 
     /**
@@ -314,6 +377,11 @@
         }};
         return tmsFinanceMapper.updateTmsFinance(tmsFinance1);
     }
+    @Override
+    public int updateTmsFinanceDetail2(TmsFinanceDetail tmsFinanceDetail)
+    {
+      return tmsFinanceDetailMapper.updateTmsFinanceDetail(tmsFinanceDetail);
+    }
 
     @Override
     public AjaxResult cancelFinanceDetail(Integer id) {

--
Gitblit v1.8.0