package com.ruoyi.cwgl.service.impl;
|
|
import java.util.List;
|
|
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;
|
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.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;
|
|
/**
|
* 凭证科目设置Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2026-01-19
|
*/
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class VoucherSubjectSettingServiceImpl extends BaseService<VoucherSubjectSettingMapper, VoucherSubjectSetting> implements IVoucherSubjectSettingService
|
{
|
protected final Logger logger = LoggerFactory.getLogger(getClass());
|
@Resource
|
private VoucherSubjectSettingMapper voucherSubjectSettingMapper;
|
|
@Resource
|
private IVoucherSubjectSettingLogService voucherSubjectSettingLogService;
|
|
|
/**
|
* 查询凭证科目设置
|
*
|
* @param id 凭证科目设置ID
|
* @return 凭证科目设置
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Override
|
public VoucherSubjectSetting selectVoucherSubjectSettingById(Integer id)
|
{
|
return voucherSubjectSettingMapper.selectVoucherSubjectSettingById(id);
|
}
|
|
/**
|
* 查询凭证科目设置 记录数
|
*
|
* @param voucherSubjectSetting 凭证科目设置
|
* @return 凭证科目设置集合
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Override
|
public int selectVoucherSubjectSettingCount(VoucherSubjectSetting voucherSubjectSetting)
|
{
|
return voucherSubjectSettingMapper.selectVoucherSubjectSettingCount(voucherSubjectSetting);
|
}
|
|
/**
|
* 查询凭证科目设置列表
|
*
|
* @param voucherSubjectSetting 凭证科目设置
|
* @return 凭证科目设置
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Override
|
public List<VoucherSubjectSetting> selectVoucherSubjectSettingList(VoucherSubjectSetting voucherSubjectSetting)
|
{
|
List<VoucherSubjectSetting> list = voucherSubjectSettingMapper.selectVoucherSubjectSettingList(voucherSubjectSetting);
|
// 设置核算项目描述
|
for (VoucherSubjectSetting subject : list) {
|
if (subject.getAccountingItems() != null) {
|
subject.setAccountingItemsDesc(subject.getAccountingItemsDesc());
|
}
|
}
|
return list;
|
}
|
|
/**
|
* 查询凭证科目设置列表 异步 导出
|
*
|
* @param voucherSubjectSetting 凭证科目设置
|
* @param exportKey 导出功能的唯一标识
|
* @return 凭证科目设置集合
|
*/
|
@DataSource(DataSourceType.SLAVE)
|
@Async
|
@Override
|
public void export(VoucherSubjectSetting voucherSubjectSetting,String exportKey) {
|
|
super.export(VoucherSubjectSetting.class,exportKey,"voucherSubjectSettingData",(pageNum)->{
|
PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
|
return selectVoucherSubjectSettingList(voucherSubjectSetting);
|
});
|
}
|
|
|
/**
|
* 新增凭证科目设置
|
*
|
* @param voucherSubjectSetting 凭证科目设置
|
* @return 结果
|
*/
|
@Override
|
public int insertVoucherSubjectSetting(VoucherSubjectSetting voucherSubjectSetting)
|
{
|
voucherSubjectSetting.setCreateTime(DateUtils.getNowDate());
|
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;
|
}
|
|
/**
|
* 新增凭证科目设置[批量]
|
*
|
* @param voucherSubjectSettings 凭证科目设置
|
* @return 结果
|
*/
|
@Override
|
public int insertVoucherSubjectSettingBatch(List<VoucherSubjectSetting> voucherSubjectSettings)
|
{
|
int rows = voucherSubjectSettingMapper.insertVoucherSubjectSettingBatch(voucherSubjectSettings);
|
return rows;
|
}
|
|
/**
|
* 修改凭证科目设置
|
*
|
* @param voucherSubjectSetting 凭证科目设置
|
* @param original
|
* @return 结果
|
*/
|
@Override
|
public int updateVoucherSubjectSetting(VoucherSubjectSetting voucherSubjectSetting, VoucherSubjectSetting original)
|
{
|
|
voucherSubjectSetting.setUpdateTime(DateUtils.getNowDate());
|
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();
|
}
|
|
/**
|
* 修改凭证科目设置[批量]
|
*
|
* @param voucherSubjectSettings 凭证科目设置
|
* @return 结果
|
*/
|
@Override
|
public int updateVoucherSubjectSettingBatch(List<VoucherSubjectSetting> voucherSubjectSettings){
|
return voucherSubjectSettingMapper.updateVoucherSubjectSettingBatch(voucherSubjectSettings);
|
}
|
|
/**
|
* 删除凭证科目设置对象
|
*
|
* @param ids 需要删除的数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteVoucherSubjectSettingByIds(String ids)
|
{
|
return deleteVoucherSubjectSettingByIds(Convert.toIntArray(ids));
|
}
|
|
/**
|
* 删除凭证科目设置对象
|
*
|
*
|
* @param ids 需要删除的数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteVoucherSubjectSettingByIds(Integer[] ids)
|
{
|
return voucherSubjectSettingMapper.deleteVoucherSubjectSettingByIds(ids);
|
}
|
|
/**
|
* 删除凭证科目设置信息
|
*
|
* @param id 凭证科目设置ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteVoucherSubjectSettingById(Integer id)
|
{
|
return voucherSubjectSettingMapper.deleteVoucherSubjectSettingById(id);
|
}
|
|
/**
|
* 校验科目代码是否唯一
|
*
|
* @param voucherSubjectSetting 凭证科目设置
|
* @return 结果
|
*/
|
@Override
|
public String checkSubjectCodeUnique(VoucherSubjectSetting voucherSubjectSetting)
|
{
|
Integer id = StringUtils.isNull(voucherSubjectSetting.getId()) ? -1 : voucherSubjectSetting.getId();
|
VoucherSubjectSetting info = voucherSubjectSettingMapper.checkSubjectCodeUnique(voucherSubjectSetting.getSubjectCode(), voucherSubjectSetting.getAccountSet());
|
if (StringUtils.isNotNull(info) && info.getId().intValue() != id.intValue())
|
{
|
return "1";
|
}
|
return "0";
|
}
|
}
|