From 34669fa71bd2cc4a4ff57d7d2440a95da998b6b5 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期一, 30 三月 2026 15:47:55 +0800
Subject: [PATCH] 修改异步
---
tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 102 insertions(+), 10 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 ce326d6..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,14 +1,15 @@
package com.ruoyi.tms.service.impl;
import java.math.BigDecimal;
-import java.util.Collections;
-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;
import com.ruoyi.common.utils.DateUtils;
import javax.annotation.Resource;
@@ -108,7 +109,6 @@
return null;
}
LambdaQueryWrapper<TmsFinanceDetail> eq = new LambdaQueryWrapper<TmsFinanceDetail>()
-
.eq(TmsFinanceDetail::getFinanceType, 2)
.eq(TmsFinanceDetail::getCreateId, SecurityUtils.getUserId());
if (dispatchId !=null){
@@ -116,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());
+ }
+ });
}
/**
@@ -205,6 +270,28 @@
}
return 1;
+
+ }
+
+ @Override
+ public int saveTmsFinanceDetail2(List<TmsFinanceDetail> tmsFinanceDetails) {
+ String username = SecurityUtils.getUsername();
+ Long userId = SecurityUtils.getUserId();
+ Date nowDate = DateUtils.getNowDate();
+ for (TmsFinanceDetail tmsFinanceDetail : tmsFinanceDetails) {
+ if (StringUtils.isNotEmpty(tmsFinanceDetail.getFeeType() ) &&
+ tmsFinanceDetail.getActualFeeAmount() != null) {
+ tmsFinanceDetail.setCreateBy(username);
+ tmsFinanceDetail.setInitialFeeAmount(tmsFinanceDetail.getActualFeeAmount());
+ tmsFinanceDetail.setCreateId(userId);
+ tmsFinanceDetail.setFeeCreateTime(nowDate);
+ tmsFinanceDetail.setCreateTime(nowDate);
+ }else {
+ throw new ServiceException("閲戦鎴栬�呰垂鐢ㄧ被鍨嬩笉鑳戒负绌�");
+ }
+ }
+
+ return tmsFinanceDetailMapper.insertTmsFinanceDetailBatch(tmsFinanceDetails);
}
@@ -290,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