zhangback
2025-11-18 f656483a233cb1213c85f32c6b4f81d71bd4db4c
tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceDetailServiceImpl.java
@@ -1,10 +1,13 @@
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;
@@ -162,7 +165,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);
@@ -209,8 +214,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("取消成功");
    }
    /**