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.VoucherSubjectFeeMapper; import com.ruoyi.cwgl.domain.VoucherSubjectFee; import com.ruoyi.cwgl.domain.VoucherSubjectFeeLog; import com.ruoyi.cwgl.service.IVoucherSubjectFeeService; import com.ruoyi.cwgl.service.IVoucherSubjectFeeLogService; import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; /** * 科目费用对照设置Service业务层处理 * * @author ruoyi * @date 2026-01-19 */ @Service @Transactional(rollbackFor = Exception.class) public class VoucherSubjectFeeServiceImpl extends BaseService implements IVoucherSubjectFeeService { protected final Logger logger = LoggerFactory.getLogger(getClass()); @Resource private VoucherSubjectFeeMapper voucherSubjectFeeMapper; @Resource private IVoucherSubjectFeeLogService voucherSubjectFeeLogService; /** * 查询科目费用对照设置 * * @param id 科目费用对照设置ID * @return 科目费用对照设置 */ @DataSource(DataSourceType.SLAVE) @Override public VoucherSubjectFee selectVoucherSubjectFeeById(Integer id) { return voucherSubjectFeeMapper.selectVoucherSubjectFeeById(id); } /** * 查询科目费用对照设置 记录数 * * @param voucherSubjectFee 科目费用对照设置 * @return 科目费用对照设置集合 */ @DataSource(DataSourceType.SLAVE) @Override public int selectVoucherSubjectFeeCount(VoucherSubjectFee voucherSubjectFee) { return voucherSubjectFeeMapper.selectVoucherSubjectFeeCount(voucherSubjectFee); } /** * 查询科目费用对照设置列表 * * @param voucherSubjectFee 科目费用对照设置 * @return 科目费用对照设置 */ @DataSource(DataSourceType.SLAVE) @Override public List selectVoucherSubjectFeeList(VoucherSubjectFee voucherSubjectFee) { return voucherSubjectFeeMapper.selectVoucherSubjectFeeList(voucherSubjectFee); } /** * 查询科目费用对照设置列表 异步 导出 * * @param voucherSubjectFee 科目费用对照设置 * @param exportKey 导出功能的唯一标识 * @return 科目费用对照设置集合 */ @DataSource(DataSourceType.SLAVE) @Async @Override public void export(VoucherSubjectFee voucherSubjectFee,String exportKey) { super.export(VoucherSubjectFee.class,exportKey,"voucherSubjectFeeData",(pageNum)->{ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE); return selectVoucherSubjectFeeList(voucherSubjectFee); }); } /** * 新增科目费用对照设置 * * @param voucherSubjectFee 科目费用对照设置 * @return 结果 */ @Override public int insertVoucherSubjectFee(VoucherSubjectFee voucherSubjectFee) { voucherSubjectFee.setCreateTime(DateUtils.getNowDate()); int result = voucherSubjectFeeMapper.insertVoucherSubjectFee(voucherSubjectFee); // 记录新增日志 if (result > 0) { VoucherSubjectFeeLog log = new VoucherSubjectFeeLog(); log.setSubjectId(voucherSubjectFee.getId()); log.setCreateBy(SecurityUtils.getUsername()); log.setOperation("新增费用对照:【" + voucherSubjectFee.getFeeName() + "】"); voucherSubjectFeeLogService.insertVoucherSubjectFeeLog(log); } return result; } /** * 新增科目费用对照设置[批量] * * @param voucherSubjectFees 科目费用对照设置 * @return 结果 */ @Override public int insertVoucherSubjectFeeBatch(List voucherSubjectFees) { int rows = voucherSubjectFeeMapper.insertVoucherSubjectFeeBatch(voucherSubjectFees); return rows; } /** * 修改科目费用对照设置 * * @param voucherSubjectFee 科目费用对照设置 * @return 结果 */ @Override public int updateVoucherSubjectFee(VoucherSubjectFee voucherSubjectFee) { // 获取原始数据用于比较 VoucherSubjectFee original = voucherSubjectFeeMapper.selectVoucherSubjectFeeById(voucherSubjectFee.getId()); voucherSubjectFee.setUpdateTime(DateUtils.getNowDate()); int result = voucherSubjectFeeMapper.updateVoucherSubjectFee(voucherSubjectFee); // 记录修改日志 if (result > 0 && original != null) { String changeLog = generateFeeChangeLog(original, voucherSubjectFee); if (!changeLog.isEmpty()) { VoucherSubjectFeeLog log = new VoucherSubjectFeeLog(); log.setSubjectId(voucherSubjectFee.getId()); log.setCreateBy(SecurityUtils.getUsername()); log.setOperation("修改费用对照:【" + original.getFeeName() + "】" + changeLog); voucherSubjectFeeLogService.insertVoucherSubjectFeeLog(log); } } return result; } /** * 生成费用对照字段变更日志 * @param original 原始数据 * @param updated 更新后数据 * @return 变更日志字符串 */ private String generateFeeChangeLog(VoucherSubjectFee original, VoucherSubjectFee updated) { StringBuilder changeLog = new StringBuilder(); // 比较科目代码 if (!StringUtils.equals(original.getSubjectCode(), updated.getSubjectCode())) { changeLog.append("科目代码【").append(original.getSubjectCode()).append("】修改为【").append(updated.getSubjectCode()).append("】;"); } // 比较科目名称 if (!StringUtils.equals(original.getSubjectName(), updated.getSubjectName())) { changeLog.append("科目名称【").append(original.getSubjectName()).append("】修改为【").append(updated.getSubjectName()).append("】;"); } // 比较科目类别 if (!StringUtils.equals(original.getSubjectType(), updated.getSubjectType())) { changeLog.append("科目类别【").append(original.getSubjectType()).append("】修改为【").append(updated.getSubjectType()).append("】;"); } // 比较费用类别 if (!StringUtils.equals(original.getFeeType(), updated.getFeeType())) { changeLog.append("费用类别【").append(original.getFeeType()).append("】修改为【").append(updated.getFeeType()).append("】;"); } // 比较费用名称 if (!StringUtils.equals(original.getFeeName(), updated.getFeeName())) { changeLog.append("费用名称【").append(original.getFeeName()).append("】修改为【").append(updated.getFeeName()).append("】;"); } // 比较帐套类型 if (!StringUtils.equals(original.getType(), updated.getType())) { changeLog.append("帐套类型【").append(original.getType()).append("】修改为【").append(updated.getType()).append("】;"); } // 比较物料类别 if (!StringUtils.equals(original.getMaterialType(), updated.getMaterialType())) { changeLog.append("物料类别【").append(original.getMaterialType()).append("】修改为【").append(updated.getMaterialType()).append("】;"); } // 比较状态 if (!StringUtils.equals(original.getStatus(), updated.getStatus())) { changeLog.append("状态【").append(original.getStatus()).append("】修改为【").append(updated.getStatus()).append("】;"); } // 比较备注 if (!StringUtils.equals(original.getRemark(), updated.getRemark())) { changeLog.append("备注【").append(original.getRemark()).append("】修改为【").append(updated.getRemark()).append("】;"); } return changeLog.toString(); } /** * 修改科目费用对照设置[批量] * * @param voucherSubjectFees 科目费用对照设置 * @return 结果 */ @Override public int updateVoucherSubjectFeeBatch(List voucherSubjectFees){ return voucherSubjectFeeMapper.updateVoucherSubjectFeeBatch(voucherSubjectFees); } /** * 删除科目费用对照设置对象 * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteVoucherSubjectFeeByIds(String ids) { return deleteVoucherSubjectFeeByIds(Convert.toIntArray(ids)); } /** * 删除科目费用对照设置对象 * * * @param ids 需要删除的数据ID * @return 结果 */ @Override public int deleteVoucherSubjectFeeByIds(Integer[] ids) { return voucherSubjectFeeMapper.deleteVoucherSubjectFeeByIds(ids); } /** * 删除科目费用对照设置信息 * * @param id 科目费用对照设置ID * @return 结果 */ @Override public int deleteVoucherSubjectFeeById(Integer id) { return voucherSubjectFeeMapper.deleteVoucherSubjectFeeById(id); } }