zhangback
2025-11-18 f656483a233cb1213c85f32c6b4f81d71bd4db4c
tms/src/main/java/com/ruoyi/tms/service/impl/TmsFinanceServiceImpl.java
@@ -1,9 +1,19 @@
package com.ruoyi.tms.service.impl;
import java.util.List;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ruoyi.common.utils.DateUtils;
import javax.annotation.Resource;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.tms.domain.TmsDispatchOrder;
import com.ruoyi.tms.domain.TmsFinanceDetail;
import com.ruoyi.tms.domain.TmsQuoteDetail;
import com.ruoyi.tms.mapper.TmsDispatchOrderMapper;
import com.ruoyi.tms.mapper.TmsFinanceDetailMapper;
import com.ruoyi.tms.mapper.TmsQuoteDetailMapper;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.scheduling.annotation.Async;
@@ -34,6 +44,13 @@
    @Resource
    private TmsFinanceMapper tmsFinanceMapper;
    @Resource
    private TmsFinanceDetailMapper tmsFinanceDetailMapper;
    @Resource
    private TmsQuoteDetailMapper tmsQuoteDetailMapper;
    @Resource
    private TmsDispatchOrderMapper tmsDispatchOrderMapper;
    /**
     * 查询费用主表
@@ -119,6 +136,39 @@
        return rows;
    }
    @Override
    public int insertTmsFinanceYFBatch(List<TmsFinance> tmsFinances) {
        // 添加主表
        int i = tmsFinanceMapper.insertTmsFinanceBatch(tmsFinances);
        List<TmsFinanceDetail> collect = tmsFinances.stream().map(item -> {
            Integer quoteId;
            if (item.getType() == 0) {
                quoteId = item.getCollectionPlanDetailId();
            } else {
                quoteId = item.getPaymentPlanDetailId();
            }
            TmsQuoteDetail tmsQuoteDetail = tmsQuoteDetailMapper.selectById(quoteId);
            TmsFinanceDetail tmsFinanceDetail = new TmsFinanceDetail();
            tmsFinanceDetail.setFinanceId(item.getId());
            tmsFinanceDetail.setFinanceType(item.getType());
            tmsFinanceDetail.setFeeType(99);
            tmsFinanceDetail.setInitialFeeAmount(tmsQuoteDetail.getFreightPrice());
            tmsFinanceDetail.setActualFeeAmount(tmsQuoteDetail.getFreightPrice());
            tmsFinanceDetail.setDispatchOrderId(item.getDispatchId());
            tmsFinanceDetail.setDataSource(0);
            tmsFinanceDetail.setCreateTime(DateUtils.getNowDate());
            tmsFinanceDetail.setCreateBy(SecurityUtils.getUsername());
            tmsFinanceDetail.setFeeCreateTime(DateUtils.getNowDate());
            tmsFinanceDetail.setCreateId(SecurityUtils.getUserId());
            tmsFinanceDetail.setStatus(0);
            return tmsFinanceDetail;
        }).collect(Collectors.toList());
        return tmsFinanceDetailMapper.insertTmsFinanceDetailBatch( collect);
    }
    /**
     * 修改费用主表
     *
@@ -179,4 +229,37 @@
    {
        return tmsFinanceMapper.deleteTmsFinanceById(id);
    }
    @Override
    public int cancelFinance(Integer id) {
        // 1、作废,头
        TmsFinance tmsFinance = selectTmsFinanceById(id);
        tmsFinance.setStatus(2);
        updateTmsFinance(tmsFinance);
        // 3、将原来的调度单变回为未结算
        LambdaUpdateWrapper<TmsDispatchOrder> eq = new LambdaUpdateWrapper<TmsDispatchOrder>()
                .eq(TmsDispatchOrder::getId, tmsFinance.getDispatchId());
        if (tmsFinance.getType() == 0){
            eq.set(TmsDispatchOrder::getAccountsReceivableStatus, 0)
                .set(TmsDispatchOrder::getCollectionPlanId, null);
        }else if (tmsFinance.getType() == 1){
            eq.set(TmsDispatchOrder::getAccountsPayableStatus, 0)
                .set(TmsDispatchOrder::getPaymentPlanId, null)
            ;
        }
        return tmsDispatchOrderMapper.update(eq);
    }
    @Override
    public int confirmFinance(Integer id) {
        // 1、作废,头
        TmsFinance tmsFinance = selectTmsFinanceById(id);
        tmsFinance.setStatus(1);
        tmsFinance.setConfirmBy(SecurityUtils.getUsername());
        tmsFinance.setConfirmTime(DateUtils.getNowDate());
        return updateTmsFinance(tmsFinance);
    }
}