package cn.iocoder.yudao.module.hrm.service.salary;
|
|
import cn.iocoder.yudao.module.hrm.dal.dataobject.salary.HrmTaxRateConfigDO;
|
import cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmTaxRateConfigMapper;
|
import jakarta.annotation.Resource;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.validation.annotation.Validated;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDate;
|
import java.util.List;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.TAX_RATE_CONFIG_NOT_EXISTS;
|
|
/**
|
* 个税税率配置 Service 实现类
|
*
|
* @author 超级管理员
|
*/
|
@Service
|
@Validated
|
public class HrmTaxRateConfigServiceImpl implements HrmTaxRateConfigService {
|
|
@Resource
|
private HrmTaxRateConfigMapper taxRateConfigMapper;
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void createTaxRateConfigList(List<HrmTaxRateConfigDO> configList) {
|
for (HrmTaxRateConfigDO config : configList) {
|
applyDefaults(config);
|
taxRateConfigMapper.insert(config);
|
}
|
}
|
|
@Override
|
public void updateTaxRateConfig(HrmTaxRateConfigDO config) {
|
validateTaxRateConfigExists(config.getId());
|
applyDefaults(config);
|
taxRateConfigMapper.updateById(config);
|
}
|
|
/**
|
* 补全默认值:生效日期默认为当月 1 号,配置名称自动生成,速算扣除数/上限缺省按 0
|
*/
|
private void applyDefaults(HrmTaxRateConfigDO config) {
|
if (config.getEffectiveDate() == null) {
|
config.setEffectiveDate(LocalDate.now().withDayOfMonth(1));
|
}
|
if (config.getName() == null || config.getName().isBlank()) {
|
config.setName(config.getEffectiveDate().getYear() + "年"
|
+ config.getEffectiveDate().getMonthValue() + "月个税税率表");
|
}
|
if (config.getStatus() == null) {
|
config.setStatus(0);
|
}
|
if (config.getQuickDeduction() == null) {
|
config.setQuickDeduction(BigDecimal.ZERO);
|
}
|
if (config.getMaxAmount() == null) {
|
config.setMaxAmount(BigDecimal.ZERO);
|
}
|
}
|
|
@Override
|
public void deleteTaxRateConfig(Long id) {
|
validateTaxRateConfigExists(id);
|
taxRateConfigMapper.deleteById(id);
|
}
|
|
@Override
|
public HrmTaxRateConfigDO getTaxRateConfig(Long id) {
|
return taxRateConfigMapper.selectById(id);
|
}
|
|
@Override
|
public List<HrmTaxRateConfigDO> getTaxRateConfigList() {
|
return taxRateConfigMapper.selectListByStatus(null);
|
}
|
|
@Override
|
public List<HrmTaxRateConfigDO> getEffectiveTaxRateConfigList(LocalDate effectiveDate) {
|
return taxRateConfigMapper.selectListByEffectiveDate(effectiveDate);
|
}
|
|
private void validateTaxRateConfigExists(Long id) {
|
if (taxRateConfigMapper.selectById(id) == null) {
|
throw exception(TAX_RATE_CONFIG_NOT_EXISTS);
|
}
|
}
|
|
}
|