package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salaryacct.SalaryAcctSobConfigMapper; import com.engine.salary.service.*; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; import java.util.*; /** * 薪资核算的账套副本配置 *
Copyright: Copyright (c) 2024
*Company: 泛微软件
* * @author qiantao * @version 1.0 **/ public class SalaryAcctSobConfigServiceImpl extends Service implements SalaryAcctSobConfigService { private SalaryAcctSobConfigMapper getSalaryAcctSobConfigMapper() { return MapperProxyFactory.getProxy(SalaryAcctSobConfigMapper.class); } private SalaryFormulaService getSalaryFormulaService(User user) { return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); } private SalaryItemService getSalaryItemService(User user) { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } private SalaryAcctRecordService getSalaryAcctRecordService(User user) { return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); } private SalarySobService getSalarySobService(User user) { return ServiceUtil.getService(SalarySobServiceImpl.class, user); } private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) { return ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user); } private SalarySobItemGroupService getSalarySobItemGroupService(User user) { return ServiceUtil.getService(SalarySobItemGroupServiceImpl.class, user); } private SalarySobItemService getSalarySobItemService(User user) { return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); } private SalarySobBackItemService getSalarySobBackItemService(User user) { return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user); } private SalarySobAdjustRuleService getSalarySobAdjustRuleService(User user) { return ServiceUtil.getService(SalarySobAdjustRuleServiceImpl.class, user); } private SalarySobCheckRuleService salarySobCheckRuleService; private SalaryCacheService getSalaryCacheService(User user) { return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); } @Override public SalaryAcctSobConfigPO getBySalaryAcctRecordId(Long salaryAcctRecordId) { return getBySalaryAcctRecordId(true, salaryAcctRecordId); } @Override public SalaryAcctConfig getSalaryAcctConfig(Long salaryAcctRecordId) { SalaryAcctSobConfigPO po = getBySalaryAcctRecordId(true, salaryAcctRecordId); return SalaryAcctConfig.parse(po); } @Override public SalaryAcctSobConfigPO getBySalaryAcctRecordId(boolean needInit, Long salaryAcctRecordId) { SalaryAcctSobConfigPO salaryAcctSobConfig = getSalaryAcctSobConfigMapper().getBySalaryAcctRecordId(salaryAcctRecordId); if (Objects.nonNull(salaryAcctSobConfig)) { return salaryAcctSobConfig; } // 查询薪资核算记录 SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); // 初始化薪资核算记录的列配置 if (needInit) { salaryAcctSobConfig = initBySalaryAcctRecord(salaryAcctRecord); } return salaryAcctSobConfig; } @Override public SalarySobItemAggregateDTO getSalarySobItemAggregate(Long salaryAcctRecordId) { return getSalarySobItemAggregate(true, salaryAcctRecordId); } @Override public SalarySobItemAggregateDTO getSalarySobItemAggregateNoFormula(Long salaryAcctRecordId) { return getSalarySobItemAggregate(false, salaryAcctRecordId); } private SalarySobItemAggregateDTO getSalarySobItemAggregate(boolean needFormula, Long salaryAcctRecordId) { // 查询薪资核算 SalaryAcctSobConfigPO salaryAcctSobConfig = getBySalaryAcctRecordId(salaryAcctRecordId); // 薪资账套的基本信息 SalarySobPO salarySob = JsonUtil.parseObject(salaryAcctSobConfig.getBasicConfig(), SalarySobPO.class); // 员工信息字段 List