wujianwei
2026-03-20 b2e717310b8a177b435e0a3532f520839ec26402
service/src/main/java/com/ruoyi/cwgl/service/impl/VoucherSubjectSettingServiceImpl.java
@@ -4,6 +4,8 @@
import com.ruoyi.common.utils.DateUtils;
import javax.annotation.Resource;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.stereotype.Service;
import org.springframework.scheduling.annotation.Async;
@@ -17,7 +19,9 @@
import com.ruoyi.cwgl.mapper.VoucherSubjectSettingMapper;
import com.ruoyi.cwgl.domain.VoucherSubjectSetting;
import com.ruoyi.cwgl.domain.VoucherSubjectSettingLog;
import com.ruoyi.cwgl.service.IVoucherSubjectSettingService;
import com.ruoyi.cwgl.service.IVoucherSubjectSettingLogService;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.utils.StringUtils;
@@ -34,6 +38,9 @@
    protected final Logger logger = LoggerFactory.getLogger(getClass());
    @Resource
    private VoucherSubjectSettingMapper voucherSubjectSettingMapper;
    @Resource
    private IVoucherSubjectSettingLogService voucherSubjectSettingLogService;
    /**
@@ -111,7 +118,19 @@
    public int insertVoucherSubjectSetting(VoucherSubjectSetting voucherSubjectSetting)
    {
        voucherSubjectSetting.setCreateTime(DateUtils.getNowDate());
        return voucherSubjectSettingMapper.insertVoucherSubjectSetting(voucherSubjectSetting);
        voucherSubjectSetting.setCreateBy(SecurityUtils.getUsername());
        int result = voucherSubjectSettingMapper.insertVoucherSubjectSetting(voucherSubjectSetting);
        // 记录新增日志
        if (result > 0) {
            VoucherSubjectSettingLog log = new VoucherSubjectSettingLog();
            log.setSubjectId(voucherSubjectSetting.getId());
            log.setCreateBy(voucherSubjectSetting.getCreateBy());
            log.setOperation("新增科目:【" + voucherSubjectSetting.getSubjectName() + "】");
            voucherSubjectSettingLogService.insertVoucherSubjectSettingLog(log);
        }
        return result;
    }
    /**
@@ -131,13 +150,148 @@
     * 修改凭证科目设置
     *
     * @param voucherSubjectSetting 凭证科目设置
     * @param original
     * @return 结果
     */
    @Override
    public int updateVoucherSubjectSetting(VoucherSubjectSetting voucherSubjectSetting)
    public int updateVoucherSubjectSetting(VoucherSubjectSetting voucherSubjectSetting, VoucherSubjectSetting original)
    {
        voucherSubjectSetting.setUpdateTime(DateUtils.getNowDate());
        return voucherSubjectSettingMapper.updateVoucherSubjectSetting(voucherSubjectSetting);
        int result = voucherSubjectSettingMapper.updateVoucherSubjectSetting(voucherSubjectSetting);
        // 记录修改日志
        if (result > 0 && original != null) {
            String changeLog = generateChangeLog(original, voucherSubjectSetting);
            if (!changeLog.isEmpty()) {
                VoucherSubjectSettingLog log = new VoucherSubjectSettingLog();
                log.setSubjectId(voucherSubjectSetting.getId());
                log.setCreateBy(SecurityUtils.getUsername());
                log.setOperation("修改科目:【" + original.getSubjectName() + "】" + changeLog);
                voucherSubjectSettingLogService.insertVoucherSubjectSettingLog(log);
            }
        }
        return result;
    }
    /**
     * 生成字段变更日志
     * @param original 原始数据
     * @param updated 更新后数据
     * @return 变更日志字符串
     */
    private String generateChangeLog(VoucherSubjectSetting original, VoucherSubjectSetting 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.getEnabled(), updated.getEnabled())) {
            changeLog.append("启用状态【").append(original.getEnabled()).append("】修改为【").append(updated.getEnabled()).append("】;");
        }
        // 比较余额方向
        if (!StringUtils.equals(original.getBalanceDirection(), updated.getBalanceDirection())) {
            changeLog.append("余额方向【").append(original.getBalanceDirection()).append("】修改为【").append(updated.getBalanceDirection()).append("】;");
        }
        // 比较核算项目
        if (original.getAccountingItems() != null && updated.getAccountingItems() != null &&
            !original.getAccountingItems().equals(updated.getAccountingItems())) {
            changeLog.append("核算项目【").append(original.getAccountingItems()).append("】修改为【").append(updated.getAccountingItems()).append("】;");
        }
        // 比较往来单位
        if (!StringUtils.equals(original.getContactUnit(), updated.getContactUnit())) {
            changeLog.append("往来单位【").append(original.getContactUnit()).append("】修改为【").append(updated.getContactUnit()).append("】;");
        }
        // 比较部门
        if (!StringUtils.equals(original.getDepartment(), updated.getDepartment())) {
            changeLog.append("部门【").append(original.getDepartment()).append("】修改为【").append(updated.getDepartment()).append("】;");
        }
        // 比较品名
        if (!StringUtils.equals(original.getProductName(), updated.getProductName())) {
            changeLog.append("品名【").append(original.getProductName()).append("】修改为【").append(updated.getProductName()).append("】;");
        }
        // 比较数量金额核算
        if (!StringUtils.equals(original.getQuantityAmountAccounting(), updated.getQuantityAmountAccounting())) {
            changeLog.append("数量金额核算【").append(original.getQuantityAmountAccounting()).append("】修改为【").append(updated.getQuantityAmountAccounting()).append("】;");
        }
        // 比较现金科目
        if (!StringUtils.equals(original.getCashSubject(), updated.getCashSubject())) {
            changeLog.append("现金科目【").append(original.getCashSubject()).append("】修改为【").append(updated.getCashSubject()).append("】;");
        }
        // 比较银行科目
        if (!StringUtils.equals(original.getBankSubject(), updated.getBankSubject())) {
            changeLog.append("银行科目【").append(original.getBankSubject()).append("】修改为【").append(updated.getBankSubject()).append("】;");
        }
        // 比较现金流量科目
        if (!StringUtils.equals(original.getCashFlowSubject(), updated.getCashFlowSubject())) {
            changeLog.append("现金流量科目【").append(original.getCashFlowSubject()).append("】修改为【").append(updated.getCashFlowSubject()).append("】;");
        }
        // 比较费用名称
        if (!StringUtils.equals(original.getExpenseName(), updated.getExpenseName())) {
            changeLog.append("费用名称【").append(original.getExpenseName()).append("】修改为【").append(updated.getExpenseName()).append("】;");
        }
        // 比较助记码
        if (!StringUtils.equals(original.getMnemonicCode(), updated.getMnemonicCode())) {
            changeLog.append("助记码【").append(original.getMnemonicCode()).append("】修改为【").append(updated.getMnemonicCode()).append("】;");
        }
        // 比较外币核算
        if (!StringUtils.equals(original.getForeignCurrencyAccounting(), updated.getForeignCurrencyAccounting())) {
            changeLog.append("外币核算【").append(original.getForeignCurrencyAccounting()).append("】修改为【").append(updated.getForeignCurrencyAccounting()).append("】;");
        }
        // 比较计量单位
        if (!StringUtils.equals(original.getUnitOfMeasurement(), updated.getUnitOfMeasurement())) {
            changeLog.append("计量单位【").append(original.getUnitOfMeasurement()).append("】修改为【").append(updated.getUnitOfMeasurement()).append("】;");
        }
        // 比较显示顺序
        if (original.getOrderNum() != null && updated.getOrderNum() != null &&
            !original.getOrderNum().equals(updated.getOrderNum())) {
            changeLog.append("显示顺序【").append(original.getOrderNum()).append("】修改为【").append(updated.getOrderNum()).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("】;");
        }
        // 比较帐套类型
        if (!StringUtils.equals(original.getType(), updated.getType())) {
            changeLog.append("帐套类型【").append(original.getType()).append("】修改为【").append(updated.getType()).append("】;");
        }
        return changeLog.toString();
    }
    /**