package com.ruoyi.cwgl.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.common.utils.DateUtils;
|
import javax.annotation.Resource;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.cwgl.domain.EstimatedReceivableBillLog;
|
import com.ruoyi.cwgl.domain.PendingSettlementBusiness;
|
import com.ruoyi.cwgl.mapper.EstimatedReceivableMapper;
|
import com.ruoyi.cwgl.mapper.PendingSettlementBusinessMapper;
|
import com.ruoyi.cwgl.service.IEstimatedReceivableBillLogService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
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.cwgl.mapper.EstimatedReceivableBillMapper;
|
import com.ruoyi.cwgl.domain.EstimatedReceivableBill;
|
import com.ruoyi.cwgl.service.IEstimatedReceivableBillService;
|
import com.ruoyi.common.core.text.Convert;
|
|
/**
|
* 预估应收账单Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2025-08-07
|
*/
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class EstimatedReceivableBillServiceImpl extends BaseService<EstimatedReceivableBillMapper, EstimatedReceivableBill> implements IEstimatedReceivableBillService
|
{
|
protected final Logger logger = LoggerFactory.getLogger(getClass());
|
@Resource
|
private EstimatedReceivableBillMapper estimatedReceivableBillMapper;
|
@Autowired
|
private IEstimatedReceivableBillLogService logService;
|
@Resource
|
private PendingSettlementBusinessMapper pendingSettlementBusinessMapper;
|
@Resource
|
private EstimatedReceivableMapper estimatedReceivableMapper;
|
|
|
/**
|
* 查询预估应收账单
|
*
|
* @param id 预估应收账单ID
|
* @return 预估应收账单
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Override
|
public EstimatedReceivableBill selectEstimatedReceivableBillById(Integer id)
|
{
|
return estimatedReceivableBillMapper.selectEstimatedReceivableBillById(id);
|
}
|
|
/**
|
* 查询预估应收账单 记录数
|
*
|
* @param estimatedReceivableBill 预估应收账单
|
* @return 预估应收账单集合
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Override
|
public int selectEstimatedReceivableBillCount(EstimatedReceivableBill estimatedReceivableBill)
|
{
|
return estimatedReceivableBillMapper.selectEstimatedReceivableBillCount(estimatedReceivableBill);
|
}
|
|
/**
|
* 查询预估应收账单列表
|
*
|
* @param estimatedReceivableBill 预估应收账单
|
* @return 预估应收账单
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Override
|
public List<EstimatedReceivableBill> selectEstimatedReceivableBillList(EstimatedReceivableBill estimatedReceivableBill)
|
{
|
return estimatedReceivableBillMapper.selectEstimatedReceivableBillList(estimatedReceivableBill);
|
}
|
|
/**
|
* 查询预估应收账单列表 异步 导出
|
*
|
* @param estimatedReceivableBill 预估应收账单
|
* @param exportKey 导出功能的唯一标识
|
* @return 预估应收账单集合
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Async
|
@Override
|
public void export(EstimatedReceivableBill estimatedReceivableBill,String exportKey) {
|
|
super.export(EstimatedReceivableBill.class,exportKey,"estimatedReceivableBillData",(pageNum)->{
|
PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
|
return selectEstimatedReceivableBillList(estimatedReceivableBill);
|
});
|
}
|
|
|
/**
|
* 新增预估应收账单
|
*
|
* @param estimatedReceivableBill 预估应收账单
|
* @return 结果
|
*/
|
@Override
|
public int insertEstimatedReceivableBill(EstimatedReceivableBill estimatedReceivableBill)
|
{
|
estimatedReceivableBill.setCreateTime(DateUtils.getNowDate());
|
return estimatedReceivableBillMapper.insertEstimatedReceivableBill(estimatedReceivableBill);
|
}
|
|
/**
|
* 新增预估应收账单[批量]
|
*
|
* @param estimatedReceivableBills 预估应收账单
|
* @return 结果
|
*/
|
@Override
|
public int insertEstimatedReceivableBillBatch(List<EstimatedReceivableBill> estimatedReceivableBills)
|
{
|
int rows = estimatedReceivableBillMapper.insertEstimatedReceivableBillBatch(estimatedReceivableBills);
|
return rows;
|
}
|
|
/**
|
* 修改预估应收账单
|
*
|
* @param estimatedReceivableBill 预估应收账单
|
* @return 结果
|
*/
|
@Override
|
public int updateEstimatedReceivableBill(EstimatedReceivableBill estimatedReceivableBill)
|
{
|
estimatedReceivableBill.setUpdateTime(DateUtils.getNowDate());
|
EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog();
|
estimatedReceivableBillLog.setCreateTime(new Date());
|
estimatedReceivableBillLog.setBillId(estimatedReceivableBill.getId());
|
estimatedReceivableBillLog.setCreateBy(SecurityUtils.getUsername());
|
estimatedReceivableBillLog.setOperation("修改账单名称为"+estimatedReceivableBill.getBillName());
|
logService.insertEstimatedReceivableBillLog(estimatedReceivableBillLog);
|
pendingSettlementBusinessMapper.updatePendingSettlementBusinessByBillId(estimatedReceivableBill.getId(),estimatedReceivableBill.getBillName());
|
return estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill);
|
}
|
|
/**
|
* 修改预估应收账单[批量]
|
*
|
* @param estimatedReceivableBills 预估应收账单
|
* @return 结果
|
*/
|
@Override
|
public int updateEstimatedReceivableBillBatch(List<EstimatedReceivableBill> estimatedReceivableBills){
|
return estimatedReceivableBillMapper.updateEstimatedReceivableBillBatch(estimatedReceivableBills);
|
}
|
|
/**
|
* 删除预估应收账单对象
|
*
|
* @param ids 需要删除的数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteEstimatedReceivableBillByIds(String ids)
|
{
|
return deleteEstimatedReceivableBillByIds(Convert.toIntArray(ids));
|
}
|
|
/**
|
* 删除预估应收账单对象
|
*
|
*
|
* @param ids 需要删除的数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteEstimatedReceivableBillByIds(Integer[] ids)
|
{
|
return estimatedReceivableBillMapper.deleteEstimatedReceivableBillByIds(ids);
|
}
|
|
/**
|
* 删除预估应收账单信息
|
*
|
* @param id 预估应收账单ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteEstimatedReceivableBillById(Integer id)
|
{
|
return estimatedReceivableBillMapper.deleteEstimatedReceivableBillById(id);
|
}
|
|
@Override
|
public int settlement(EstimatedReceivableBill estimatedReceivableBill) {
|
Integer id = estimatedReceivableBill.getId();
|
EstimatedReceivableBill oldData = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(id);
|
//应结算金额
|
Long totalAmount = oldData.getTotalAmount()==null?0L:oldData.getTotalAmount();
|
//已结算金额
|
Long settledAmount = oldData.getSettledAmount()==null?0L:oldData.getSettledAmount();
|
//当前提交金额
|
Long settlementAmount = estimatedReceivableBill.getSettlementAmount();
|
EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog();
|
|
estimatedReceivableBill.setSettledAmount(settlementAmount);
|
estimatedReceivableBillLog.setCreateTime(new Date());
|
estimatedReceivableBillLog.setBillId(estimatedReceivableBill.getId());
|
estimatedReceivableBillLog.setCreateBy(SecurityUtils.getUsername());
|
estimatedReceivableBillLog.setOperation("本次提交金额"+ settlementAmount);
|
logService.insertEstimatedReceivableBillLog(estimatedReceivableBillLog);
|
settledAmount = settledAmount+settlementAmount;
|
List<String>dispatchNos =pendingSettlementBusinessMapper.selectPendingSettlementBusinessDispatchNos(estimatedReceivableBill.getId());
|
if (settledAmount>totalAmount){
|
//已结算大于应计算金额为已结算
|
estimatedReceivableBill.setStatus(2);
|
estimatedReceivableMapper.updateEstimatedReceivableBillStatus(dispatchNos,3);
|
}else {
|
//否则部分结算
|
estimatedReceivableBill.setStatus(1);
|
estimatedReceivableMapper.updateEstimatedReceivableBillStatus(dispatchNos,2);
|
}
|
return estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill);
|
}
|
|
@Override
|
public int cancelRelevancy(Integer id) {
|
PendingSettlementBusiness pendingSettlementBusiness = pendingSettlementBusinessMapper.selectPendingSettlementBusinessById(id);
|
if (pendingSettlementBusiness==null){
|
throw new ServiceException("待入账业务不存在");
|
}
|
Integer billId = pendingSettlementBusiness.getBillId();
|
EstimatedReceivableBill estimatedReceivableBill = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(billId);
|
estimatedReceivableBill.setDispatchCount(estimatedReceivableBill.getDispatchCount()-1);
|
//应结算金额修改
|
Long totalAmount = estimatedReceivableBill.getTotalAmount();
|
estimatedReceivableBill.setTotalAmount(totalAmount-pendingSettlementBusiness.getEstimatedTotalIncome());
|
EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog();
|
estimatedReceivableBillLog.setCreateTime(new Date());
|
estimatedReceivableBillLog.setBillId(billId);
|
estimatedReceivableBillLog.setCreateBy(SecurityUtils.getUsername());
|
String dispatchNo = pendingSettlementBusiness.getDispatchNo();
|
estimatedReceivableBillLog.setOperation("取消调度单"+ dispatchNo +"关联");
|
logService.insertEstimatedReceivableBillLog(estimatedReceivableBillLog);
|
List<String> dispatchNos = new ArrayList<>();
|
dispatchNos.add(dispatchNo);
|
estimatedReceivableMapper.updateEstimatedReceivableBillStatus(dispatchNos,0);
|
|
return pendingSettlementBusinessMapper.cancelRelevancy(id);
|
|
}
|
}
|