package com.ruoyi.tms.service.impl; import java.util.List; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.DateUtils; import javax.annotation.Resource; import com.ruoyi.tms.domain.TmsArBillItem; import com.ruoyi.tms.domain.TmsReceivableFee; import com.ruoyi.tms.mapper.TmsArBillItemMapper; import com.ruoyi.tms.mapper.TmsReceivableFeeMapper; 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.TmsArBillMapper; import com.ruoyi.tms.domain.TmsArBill; import com.ruoyi.tms.service.ITmsArBillService; import com.ruoyi.common.core.text.Convert; /** * 应收账单Service业务层处理 * * @author ruoyi * @date 2025-12-13 */ @Service @Transactional(rollbackFor = Exception.class) public class TmsArBillServiceImpl extends BaseService implements ITmsArBillService { protected final Logger logger = LoggerFactory.getLogger(getClass()); @Resource private TmsArBillMapper tmsArBillMapper; @Resource private TmsArBillItemMapper tmsArBillItemMapper; @Resource private TmsReceivableFeeMapper tmsReceivableFeeMapper; /** * 查询应收账单 * * @param id 应收账单ID * @return 应收账单 */ @DataSource(DataSourceType.SLAVE) @Override public TmsArBill selectTmsArBillById(Integer id) { TmsArBill tmsArBill = tmsArBillMapper.selectTmsArBillById(id); tmsArBill.setItems(tmsArBillItemMapper.selectTmsArBillItemList(new TmsArBillItem(){{setBillId( id);setStatus(0);}})); return tmsArBill; } /** * 查询应收账单 记录数 * * @param tmsArBill 应收账单 * @return 应收账单集合 */ @DataSource(DataSourceType.SLAVE) @Override public int selectTmsArBillCount(TmsArBill tmsArBill) { return tmsArBillMapper.selectTmsArBillCount(tmsArBill); } /** * 查询应收账单列表 * * @param tmsArBill 应收账单 * @return 应收账单 */ @DataSource(DataSourceType.SLAVE) @Override public List selectTmsArBillList(TmsArBill tmsArBill) { return tmsArBillMapper.selectTmsArBillList(tmsArBill); } /** * 查询应收账单列表 异步 导出 * * @param tmsArBill 应收账单 * @param exportKey 导出功能的唯一标识 * @return 应收账单集合 */ @DataSource(DataSourceType.SLAVE) @Async @Override public void export(TmsArBill tmsArBill,String exportKey) { super.export(TmsArBill.class,exportKey,"tmsArBillData",(pageNum)->{ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE); return selectTmsArBillList(tmsArBill); }); } /** * 新增应收账单 * * @param tmsArBill 应收账单 * @return 结果 */ @Override public int insertTmsArBill(TmsArBill tmsArBill) { tmsArBill.setCreateTime(DateUtils.getNowDate()); return tmsArBillMapper.insertTmsArBill(tmsArBill); } @Override public AjaxResult cancelArBill(Integer id) { TmsArBillItem billItem = tmsArBillItemMapper.selectTmsArBillItemById(id); if(billItem == null){ return AjaxResult.warn("数据不存在"); } if(billItem.getStatus() == 1){ return AjaxResult.warn("该数据已作废"); } billItem.setStatus(1); tmsArBillItemMapper.updateTmsArBillItem(billItem); tmsReceivableFeeMapper.update(new LambdaUpdateWrapper() .set(TmsReceivableFee::getStatus,0) .in(TmsReceivableFee::getId, billItem.getArFeeId()) ); tmsArBillMapper.update(new LambdaUpdateWrapper() .setSql("settle_amount = settle_amount - " + billItem.getEstimateAmount()) .setSql("actual_settlement_amount = actual_settlement_amount - " + billItem.getEstimateAmount()) .eq(TmsArBill::getId, billItem.getBillId()) ); return AjaxResult.success(); } /** * 新增应收账单[批量] * * @param tmsArBills 应收账单 * @return 结果 */ @Override public int insertTmsArBillBatch(List tmsArBills) { int rows = tmsArBillMapper.insertTmsArBillBatch(tmsArBills); return rows; } /** * 修改应收账单 * * @param tmsArBill 应收账单 * @return 结果 */ @Override public int updateTmsArBill(TmsArBill tmsArBill) { tmsArBill.setUpdateTime(DateUtils.getNowDate()); return tmsArBillMapper.updateTmsArBill(tmsArBill); } /** * 修改应收账单[批量] * * @param tmsArBills 应收账单 * @return 结果 */ @Override public int updateTmsArBillBatch(List tmsArBills){ return tmsArBillMapper.updateTmsArBillBatch(tmsArBills); } /** * 删除应收账单对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteTmsArBillByIds(String ids) { return deleteTmsArBillByIds(Convert.toIntArray(ids)); } /** * 删除应收账单对象 * * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteTmsArBillByIds(Integer[] ids) { return tmsArBillMapper.deleteTmsArBillByIds(ids); } /** * 删除应收账单信息 * * @param id 应收账单ID * @return 结果 */ @Override public int deleteTmsArBillById(Integer id) { return tmsArBillMapper.deleteTmsArBillById(id); } }