From 3849263b31a16a91ff08acaa42786ecfde76f33c Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期四, 27 十一月 2025 20:18:08 +0800
Subject: [PATCH] 提交

---
 tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java |  119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 115 insertions(+), 4 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 14b546d..ce3bc60 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,17 +1,24 @@
 package com.ruoyi.tms.service.impl;
 
+import java.math.BigDecimal;
+import java.util.Collections;
 import java.util.List;
 
 import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.enums.SystemDataNoEnum;
 import com.ruoyi.common.utils.DateUtils;
 import javax.annotation.Resource;
 
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.system.service.ISystemDataNoService;
 import com.ruoyi.tms.domain.TmsDispatchOrder;
 import com.ruoyi.tms.domain.TmsFinance;
+import com.ruoyi.tms.domain.vo.FinanceDetailItem;
 import com.ruoyi.tms.mapper.TmsDispatchOrderMapper;
 import com.ruoyi.tms.mapper.TmsFinanceMapper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,7 +59,8 @@
     private TmsDispatchOrderMapper tmsDispatchOrderMapper;
     @Autowired
     ISystemDataNoService systemDataNoService;
-
+    @Autowired
+    private ISysUserService userService;
     /**
      * 鏌ヨ璐圭敤鏄庣粏
      *
@@ -92,6 +100,32 @@
         return tmsFinanceDetailMapper.selectTmsFinanceDetailList(tmsFinanceDetail);
     }
 
+    @Override
+    public List<TmsFinanceDetail> getTmsFinanceDetailList(Integer dispatchId) {
+        Integer deviceId = userService.getDeviceId(SecurityUtils.getUserId());
+        if (deviceId == null){
+            return null;
+        }
+        LambdaQueryWrapper<TmsFinanceDetail> eq = new LambdaQueryWrapper<TmsFinanceDetail>()
+
+                .eq(TmsFinanceDetail::getFinanceType, 2)
+                .eq(TmsFinanceDetail::getCreateId, SecurityUtils.getUserId());
+        if (dispatchId !=null){
+            eq.eq(TmsFinanceDetail::getDispatchOrderId, dispatchId);
+        }
+        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());
+                }
+            });
+        }
+        return tmsFinanceDetails;
+    }
+
     /**
      * 鏌ヨ璐圭敤鏄庣粏鍒楄〃 寮傛 瀵煎嚭
      *
@@ -126,6 +160,28 @@
                 .ne(TmsFinance::getStatus, 2)
                 .last("limit 1")
         );
+
+
+        if (StringUtils.isNotEmpty(tmsFinanceDetail.getFeeType())){
+            addItem(tmsFinance, tmsFinanceDetail);
+        }
+
+        // 1銆佹煡璇㈠綋鍓嶈皟搴﹀崟瀵瑰簲鐨勮垂鐢�
+        List<FinanceDetailItem> items = tmsFinanceDetail.getItems();
+
+        if (items != null && !items.isEmpty()){
+            items.forEach(item->{
+                TmsFinanceDetail tmsFinanceDetailNew = BeanUtil.copyProperties(tmsFinanceDetail, TmsFinanceDetail.class);
+                BeanUtil.copyProperties(item, tmsFinanceDetailNew);
+                tmsFinanceDetailNew.setActualFeeAmount(item.getPrice().multiply(BigDecimal.valueOf(item.getCount())));
+                addItem(tmsFinance, tmsFinanceDetailNew);
+            });
+        }
+        return 1;
+    }
+
+
+    public void addItem (TmsFinance tmsFinance, TmsFinanceDetail tmsFinanceDetail){
         if (tmsFinance == null){
 
             TmsDispatchOrder tmsDispatchOrder = tmsDispatchOrderMapper.selectTmsDispatchOrderById(tmsFinanceDetail.getDispatchOrderId());
@@ -133,7 +189,9 @@
                 throw new RuntimeException("鏈壘鍒板搴旂殑璋冨害鍗�");
             }
             tmsFinance = BeanUtil.copyProperties(tmsDispatchOrder,TmsFinance.class);
-            tmsFinance.setSystemCode(systemDataNoService.getNoByKey(SystemDataNoEnum.OF));
+            SystemDataNoEnum systemDataNoEnum = tmsFinanceDetail.getFinanceType() == 0 ? SystemDataNoEnum.YFD :
+                    tmsFinanceDetail.getFinanceType() == 1 ? SystemDataNoEnum.YSD : SystemDataNoEnum.OF;
+            tmsFinance.setSystemCode(systemDataNoService.getNoByKey(systemDataNoEnum));
             tmsFinance.setDispatchId(tmsFinanceDetail.getDispatchOrderId());
             tmsFinance.setType(tmsFinanceDetail.getFinanceType());
             tmsFinance.setStatus(0);
@@ -155,7 +213,7 @@
         tmsFinanceDetail.setCreateId(SecurityUtils.getUserId());
         tmsFinanceDetail.setFeeCreateTime(DateUtils.getNowDate());
         tmsFinanceDetail.setCreateTime(DateUtils.getNowDate());
-        return tmsFinanceDetailMapper.insertTmsFinanceDetail(tmsFinanceDetail);
+        tmsFinanceDetailMapper.insertTmsFinanceDetail(tmsFinanceDetail);
     }
 
     /**
@@ -180,8 +238,61 @@
     @Override
     public int updateTmsFinanceDetail(TmsFinanceDetail tmsFinanceDetail)
     {
+        Integer financeId = tmsFinanceDetail.getFinanceId();
+        TmsFinance tmsFinance = tmsFinanceMapper.selectTmsFinanceById(financeId);
+        if (tmsFinance == null){
+            throw new RuntimeException("鏈壘鍒板搴旂殑璐圭敤鍗�");
+        }
+        tmsFinanceDetail.setUpdateBy(SecurityUtils.getUsername());
         tmsFinanceDetail.setUpdateTime(DateUtils.getNowDate());
-        return tmsFinanceDetailMapper.updateTmsFinanceDetail(tmsFinanceDetail);
+        tmsFinanceDetailMapper.updateTmsFinanceDetail(tmsFinanceDetail);
+        // 鏌ヨ璇ヨ垂鐢ㄥ崟涓嬫墍鏈夌姸鎬佷负0鐨勮垂鐢ㄦ槑缁嗙殑瀹為檯璐圭敤閲戦鎬诲拰
+        List<TmsFinanceDetail> detailList = tmsFinanceDetailMapper.selectList(new LambdaQueryWrapper<TmsFinanceDetail>()
+                .eq(TmsFinanceDetail::getFinanceId, financeId)
+                .eq(TmsFinanceDetail::getStatus, 0)
+        );
+        // 璁$畻鎬诲拰
+        // 璁$畻鎬诲拰
+        double totalAmount = detailList.stream()
+                .mapToDouble(detail -> detail.getActualFeeAmount().doubleValue())
+                .sum();
+
+        TmsFinance tmsFinance1 = new TmsFinance() {{
+            setId(financeId);
+            setTotalAmount(new BigDecimal(totalAmount));
+        }};
+        return tmsFinanceMapper.updateTmsFinance(tmsFinance1);
+    }
+
+    @Override
+    public AjaxResult cancelFinanceDetail(Integer id) {
+
+        TmsFinanceDetail tmsFinanceDetail = tmsFinanceDetailMapper.selectById(id);
+        if (tmsFinanceDetail == null){
+            return AjaxResult.error("鏈壘鍒板搴旂殑璐圭敤鏄庣粏");
+        }
+        tmsFinanceDetail.setStatus(1);
+        tmsFinanceDetail.setUpdateBy(SecurityUtils.getUsername());
+        tmsFinanceDetailMapper.updateTmsFinanceDetail(tmsFinanceDetail);
+
+
+        // 鏌ヨ璇ヨ垂鐢ㄥ崟涓嬫墍鏈夌姸鎬佷负0鐨勮垂鐢ㄦ槑缁嗙殑瀹為檯璐圭敤閲戦鎬诲拰
+        List<TmsFinanceDetail> detailList = tmsFinanceDetailMapper.selectList(new LambdaQueryWrapper<TmsFinanceDetail>()
+                .eq(TmsFinanceDetail::getFinanceId, tmsFinanceDetail.getFinanceId())
+                .eq(TmsFinanceDetail::getStatus, 0)
+        );
+        // 璁$畻鎬诲拰
+        // 璁$畻鎬诲拰
+        double totalAmount = detailList.stream()
+                .mapToDouble(detail -> detail.getActualFeeAmount().doubleValue())
+                .sum();
+
+        TmsFinance tmsFinance1 = new TmsFinance() {{
+            setId( tmsFinanceDetail.getFinanceId());
+            setTotalAmount(new BigDecimal(totalAmount));
+        }};
+         tmsFinanceMapper.updateTmsFinance(tmsFinance1);
+        return AjaxResult.success("鍙栨秷鎴愬姛");
     }
 
     /**

--
Gitblit v1.8.0