package com.ruoyi.cwgl.service.impl; import java.util.List; import com.ruoyi.common.utils.DateUtils; import javax.annotation.Resource; 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.FundFlowMapper; import com.ruoyi.cwgl.domain.FundFlow; import com.ruoyi.cwgl.domain.FundFlowLog; import com.ruoyi.cwgl.service.IFundFlowService; import com.ruoyi.cwgl.service.IFundFlowLogService; import com.ruoyi.common.core.text.Convert; /** * 资金流水Service业务层处理 * * @author ruoyi * @date 2026-01-12 */ @Service @Transactional(rollbackFor = Exception.class) public class FundFlowServiceImpl extends BaseService implements IFundFlowService { protected final Logger logger = LoggerFactory.getLogger(getClass()); @Resource private FundFlowMapper fundFlowMapper; @Resource private IFundFlowLogService fundFlowLogService; /** * 查询资金流水 * * @param id 资金流水ID * @return 资金流水 */ @DataSource(DataSourceType.SLAVE) @Override public FundFlow selectFundFlowById(Integer id) { return fundFlowMapper.selectFundFlowById(id); } /** * 查询资金流水 记录数 * * @param fundFlow 资金流水 * @return 资金流水集合 */ @DataSource(DataSourceType.SLAVE) @Override public int selectFundFlowCount(FundFlow fundFlow) { return fundFlowMapper.selectFundFlowCount(fundFlow); } /** * 查询资金流水列表 * * @param fundFlow 资金流水 * @return 资金流水 */ @DataSource(DataSourceType.SLAVE) @Override public List selectFundFlowList(FundFlow fundFlow) { return fundFlowMapper.selectFundFlowList(fundFlow); } /** * 查询资金流水列表 异步 导出 * * @param fundFlow 资金流水 * @param exportKey 导出功能的唯一标识 * @return 资金流水集合 */ @DataSource(DataSourceType.SLAVE) @Async @Override public void export(FundFlow fundFlow,String exportKey) { super.export(FundFlow.class,exportKey,"fundFlowData",(pageNum)->{ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE); return selectFundFlowList(fundFlow); }); } /** * 新增资金流水 * * @param fundFlow 资金流水 * @return 结果 */ @Override public int insertFundFlow(FundFlow fundFlow) { fundFlow.setCreateTime(DateUtils.getNowDate()); int result = fundFlowMapper.insertFundFlow(fundFlow); // 记录操作日志 if (result > 0) { FundFlowLog log = new FundFlowLog(); log.setFlowId(fundFlow.getId()); log.setOperation("新增资金流水,流水号:" + fundFlow.getBankFlowNo()); fundFlowLogService.insertFundFlowLog(log); } return result; } /** * 新增资金流水[批量] * * @param fundFlows 资金流水 * @return 结果 */ @Override public int insertFundFlowBatch(List fundFlows) { int rows = fundFlowMapper.insertFundFlowBatch(fundFlows); return rows; } /** * 修改资金流水 * * @param fundFlow 资金流水 * @return 结果 */ @Override public int updateFundFlow(FundFlow fundFlow) { fundFlow.setUpdateTime(DateUtils.getNowDate()); int result = fundFlowMapper.updateFundFlow(fundFlow); // 记录操作日志 if (result > 0) { FundFlowLog log = new FundFlowLog(); log.setFlowId(fundFlow.getId()); log.setOperation("修改资金流水,流水号:" + fundFlow.getBankFlowNo()); fundFlowLogService.insertFundFlowLog(log); } return result; } /** * 修改资金流水[批量] * * @param fundFlows 资金流水 * @return 结果 */ @Override public int updateFundFlowBatch(List fundFlows){ return fundFlowMapper.updateFundFlowBatch(fundFlows); } /** * 删除资金流水对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteFundFlowByIds(String ids) { return deleteFundFlowByIds(Convert.toIntArray(ids)); } /** * 删除资金流水对象 * * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteFundFlowByIds(Integer[] ids) { return fundFlowMapper.deleteFundFlowByIds(ids); } /** * 删除资金流水信息 * * @param id 资金流水ID * @return 结果 */ @Override public int deleteFundFlowById(Integer id) { return fundFlowMapper.deleteFundFlowById(id); } /** * 确认资金流水(将状态改为待认领) * * @param id 资金流水ID * @return 结果 */ @Override public int confirmFundFlow(Integer id) { // 先查询资金流水信息 FundFlow fundFlow = fundFlowMapper.selectFundFlowById(id); if (fundFlow == null) { throw new RuntimeException("资金流水不存在"); } // 判断状态是否为0(正常)才能确认 if (!"0".equals(fundFlow.getStatus())) { throw new RuntimeException("只有状态为草稿的资金流水才能确认"); } // 将状态改为"1"(待认领) fundFlow.setStatus("1"); int result = fundFlowMapper.updateFundFlow(fundFlow); // 记录操作日志 if (result > 0) { FundFlowLog log = new FundFlowLog(); log.setFlowId(id); log.setOperation("确认资金流水,流水号:" + fundFlow.getBankFlowNo() + ",状态从草稿改为待认领"); fundFlowLogService.insertFundFlowLog(log); } return result; } }