package com.ruoyi.tms.service.impl; import java.util.List; 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.TmsArBill; import com.ruoyi.tms.mapper.TmsArBillMapper; 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.TmsArSettlementMapper; import com.ruoyi.tms.domain.TmsArSettlement; import com.ruoyi.tms.service.ITmsArSettlementService; import com.ruoyi.common.core.text.Convert; /** * 结算单Service业务层处理 * * @author ruoyi * @date 2025-12-13 */ @Service @Transactional(rollbackFor = Exception.class) public class TmsArSettlementServiceImpl extends BaseService implements ITmsArSettlementService { protected final Logger logger = LoggerFactory.getLogger(getClass()); @Resource private TmsArSettlementMapper tmsArSettlementMapper; @Resource private TmsArBillMapper tmsArBillMapper; /** * 查询结算单 * * @param id 结算单ID * @return 结算单 */ @DataSource(DataSourceType.SLAVE) @Override public TmsArSettlement selectTmsArSettlementById(Integer id) { return tmsArSettlementMapper.selectTmsArSettlementById(id); } /** * 查询结算单 记录数 * * @param tmsArSettlement 结算单 * @return 结算单集合 */ @DataSource(DataSourceType.SLAVE) @Override public int selectTmsArSettlementCount(TmsArSettlement tmsArSettlement) { return tmsArSettlementMapper.selectTmsArSettlementCount(tmsArSettlement); } /** * 查询结算单列表 * * @param tmsArSettlement 结算单 * @return 结算单 */ @DataSource(DataSourceType.SLAVE) @Override public List selectTmsArSettlementList(TmsArSettlement tmsArSettlement) { return tmsArSettlementMapper.selectTmsArSettlementList(tmsArSettlement); } /** * 查询结算单列表 异步 导出 * * @param tmsArSettlement 结算单 * @param exportKey 导出功能的唯一标识 * @return 结算单集合 */ @DataSource(DataSourceType.SLAVE) @Async @Override public void export(TmsArSettlement tmsArSettlement,String exportKey) { super.export(TmsArSettlement.class,exportKey,"tmsArSettlementData",(pageNum)->{ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE); return selectTmsArSettlementList(tmsArSettlement); }); } /** * 新增结算单 * * @param tmsArSettlement 结算单 * @return 结果 */ @Override public int insertTmsArSettlement(TmsArSettlement tmsArSettlement) { tmsArSettlement.setCreateTime(DateUtils.getNowDate()); tmsArSettlement.setCreateBy(SecurityUtils.getUsername()); tmsArBillMapper.update(null, new LambdaUpdateWrapper() .setSql("settled_amount = settled_amount + " + tmsArSettlement.getSettleAmount()) .setSql( "status = CASE " + "WHEN settled_amount + " + tmsArSettlement.getSettleAmount() + " >= settle_amount THEN 2 " + "ELSE 1 END" ) .eq(TmsArBill::getId, tmsArSettlement.getBillId()) ); return tmsArSettlementMapper.insertTmsArSettlement(tmsArSettlement); } /** * 新增结算单[批量] * * @param tmsArSettlements 结算单 * @return 结果 */ @Override public int insertTmsArSettlementBatch(List tmsArSettlements) { int rows = tmsArSettlementMapper.insertTmsArSettlementBatch(tmsArSettlements); return rows; } /** * 修改结算单 * * @param tmsArSettlement 结算单 * @return 结果 */ @Override public int updateTmsArSettlement(TmsArSettlement tmsArSettlement) { tmsArSettlement.setUpdateTime(DateUtils.getNowDate()); return tmsArSettlementMapper.updateTmsArSettlement(tmsArSettlement); } /** * 修改结算单[批量] * * @param tmsArSettlements 结算单 * @return 结果 */ @Override public int updateTmsArSettlementBatch(List tmsArSettlements){ return tmsArSettlementMapper.updateTmsArSettlementBatch(tmsArSettlements); } /** * 删除结算单对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteTmsArSettlementByIds(String ids) { return deleteTmsArSettlementByIds(Convert.toIntArray(ids)); } /** * 删除结算单对象 * * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteTmsArSettlementByIds(Integer[] ids) { return tmsArSettlementMapper.deleteTmsArSettlementByIds(ids); } /** * 删除结算单信息 * * @param id 结算单ID * @return 结果 */ @Override public int deleteTmsArSettlementById(Integer id) { return tmsArSettlementMapper.deleteTmsArSettlementById(id); } }