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;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import com.ruoyi.common.utils.PageUtils;
|
import com.ruoyi.common.constant.Constants;
|
import com.ruoyi.common.annotation.DataSource;
|
import com.ruoyi.common.enums.DataSourceType;
|
import com.ruoyi.common.core.service.BaseService;
|
|
import com.ruoyi.tms.mapper.TmsFinanceMapper;
|
import com.ruoyi.tms.domain.TmsFinance;
|
import com.ruoyi.tms.service.ITmsFinanceService;
|
import com.ruoyi.common.core.text.Convert;
|
|
/**
|
* 费用主表Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2025-11-13
|
*/
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class TmsFinanceServiceImpl extends BaseService<TmsFinanceMapper, TmsFinance> implements ITmsFinanceService
|
{
|
protected final Logger logger = LoggerFactory.getLogger(getClass());
|
@Resource
|
private TmsFinanceMapper tmsFinanceMapper;
|
|
@Resource
|
private TmsFinanceDetailMapper tmsFinanceDetailMapper;
|
@Resource
|
private TmsQuoteDetailMapper tmsQuoteDetailMapper;
|
|
@Resource
|
private TmsDispatchOrderMapper tmsDispatchOrderMapper;
|
|
/**
|
* 查询费用主表
|
*
|
* @param id 费用主表ID
|
* @return 费用主表
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Override
|
public TmsFinance selectTmsFinanceById(Integer id)
|
{
|
return tmsFinanceMapper.selectTmsFinanceById(id);
|
}
|
|
/**
|
* 查询费用主表 记录数
|
*
|
* @param tmsFinance 费用主表
|
* @return 费用主表集合
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Override
|
public int selectTmsFinanceCount(TmsFinance tmsFinance)
|
{
|
return tmsFinanceMapper.selectTmsFinanceCount(tmsFinance);
|
}
|
|
/**
|
* 查询费用主表列表
|
*
|
* @param tmsFinance 费用主表
|
* @return 费用主表
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Override
|
public List<TmsFinance> selectTmsFinanceList(TmsFinance tmsFinance)
|
{
|
return tmsFinanceMapper.selectTmsFinanceList(tmsFinance);
|
}
|
|
/**
|
* 查询费用主表列表 异步 导出
|
*
|
* @param tmsFinance 费用主表
|
* @param exportKey 导出功能的唯一标识
|
* @return 费用主表集合
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Async
|
@Override
|
public void export(TmsFinance tmsFinance,String exportKey) {
|
|
super.export(TmsFinance.class,exportKey,"tmsFinanceData",(pageNum)->{
|
PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
|
return selectTmsFinanceList(tmsFinance);
|
});
|
}
|
|
|
/**
|
* 新增费用主表
|
*
|
* @param tmsFinance 费用主表
|
* @return 结果
|
*/
|
@Override
|
public int insertTmsFinance(TmsFinance tmsFinance)
|
{
|
tmsFinance.setCreateTime(DateUtils.getNowDate());
|
return tmsFinanceMapper.insertTmsFinance(tmsFinance);
|
}
|
|
/**
|
* 新增费用主表[批量]
|
*
|
* @param tmsFinances 费用主表
|
* @return 结果
|
*/
|
@Override
|
public int insertTmsFinanceBatch(List<TmsFinance> tmsFinances)
|
{
|
int rows = tmsFinanceMapper.insertTmsFinanceBatch(tmsFinances);
|
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);
|
|
}
|
|
/**
|
* 修改费用主表
|
*
|
* @param tmsFinance 费用主表
|
* @return 结果
|
*/
|
@Override
|
public int updateTmsFinance(TmsFinance tmsFinance)
|
{
|
tmsFinance.setUpdateTime(DateUtils.getNowDate());
|
return tmsFinanceMapper.updateTmsFinance(tmsFinance);
|
}
|
|
/**
|
* 修改费用主表[批量]
|
*
|
* @param tmsFinances 费用主表
|
* @return 结果
|
*/
|
@Override
|
public int updateTmsFinanceBatch(List<TmsFinance> tmsFinances){
|
return tmsFinanceMapper.updateTmsFinanceBatch(tmsFinances);
|
}
|
|
/**
|
* 删除费用主表对象
|
*
|
* @param ids 需要删除的数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteTmsFinanceByIds(String ids)
|
{
|
return deleteTmsFinanceByIds(Convert.toIntArray(ids));
|
}
|
|
/**
|
* 删除费用主表对象
|
*
|
*
|
* @param ids 需要删除的数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteTmsFinanceByIds(Integer[] ids)
|
{
|
return tmsFinanceMapper.deleteTmsFinanceByIds(ids);
|
}
|
|
/**
|
* 删除费用主表信息
|
*
|
* @param id 费用主表ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteTmsFinanceById(Integer id)
|
{
|
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);
|
}
|
}
|