package cn.iocoder.yudao.module.hrm.service.salary;
|
|
import cn.iocoder.yudao.module.hrm.dal.dataobject.salary.HrmSalaryStructureDO;
|
import cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper;
|
import cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmEmployeeSalaryMapper;
|
import cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSalaryStructureMapper;
|
import jakarta.annotation.Resource;
|
import org.springframework.stereotype.Service;
|
import org.springframework.validation.annotation.Validated;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.SALARY_STRUCTURE_IN_USE;
|
import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.SALARY_STRUCTURE_NAME_EXISTS;
|
import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.SALARY_STRUCTURE_NOT_EXISTS;
|
|
@Service
|
@Validated
|
public class HrmSalaryStructureServiceImpl implements HrmSalaryStructureService {
|
|
@Resource
|
private HrmSalaryStructureMapper salaryStructureMapper;
|
@Resource
|
private HrmEmployeeMapper employeeMapper;
|
@Resource
|
private HrmEmployeeSalaryMapper employeeSalaryMapper;
|
|
@Override
|
public Long createSalaryStructure(HrmSalaryStructureDO structure) {
|
validateNameUnique(null, structure.getName());
|
// 基本工资由员工档案维护。数据库历史字段非空,新建结构统一写入占位值 0。
|
structure.setBaseSalary(BigDecimal.ZERO);
|
salaryStructureMapper.insert(structure);
|
return structure.getId();
|
}
|
|
@Override
|
public void updateSalaryStructure(HrmSalaryStructureDO structure) {
|
validateExists(structure.getId());
|
validateNameUnique(structure.getId(), structure.getName());
|
salaryStructureMapper.updateById(structure);
|
}
|
|
@Override
|
public void deleteSalaryStructure(Long id) {
|
validateExists(id);
|
if (employeeMapper.selectCountBySalaryStructureId(id) > 0
|
|| employeeSalaryMapper.selectCountBySalaryStructureId(id) > 0) {
|
throw exception(SALARY_STRUCTURE_IN_USE);
|
}
|
salaryStructureMapper.deleteById(id);
|
}
|
|
@Override
|
public HrmSalaryStructureDO getSalaryStructure(Long id) {
|
return salaryStructureMapper.selectById(id);
|
}
|
|
@Override
|
public List<HrmSalaryStructureDO> getSalaryStructureList(String name, Integer status) {
|
return salaryStructureMapper.selectListByCondition(name, status);
|
}
|
|
private void validateExists(Long id) {
|
if (id == null || salaryStructureMapper.selectById(id) == null) {
|
throw exception(SALARY_STRUCTURE_NOT_EXISTS);
|
}
|
}
|
|
private void validateNameUnique(Long id, String name) {
|
HrmSalaryStructureDO structure = salaryStructureMapper.selectByName(name);
|
if (structure != null && !structure.getId().equals(id)) {
|
throw exception(SALARY_STRUCTURE_NAME_EXISTS);
|
}
|
}
|
|
}
|