package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.bo.SalarySobBackItemBO; import com.engine.salary.entity.salarysob.dto.SalarySobBackItemDTO; import com.engine.salary.entity.salarysob.param.SalarySobBackItemSaveParam; import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salarysob.SalarySobBackItemMapper; import com.engine.salary.service.SalaryFormulaService; import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.SalarySobBackItemService; import com.engine.salary.service.SalarySobService; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.google.common.collect.Lists; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; import java.time.LocalDateTime; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Objects; /** * @author Harryxzy * @date 2022/11/15 16:19 * @description 薪资账套的回算项目 */ public class SalarySobBackItemServiceImpl extends Service implements SalarySobBackItemService { private SalarySobBackItemMapper getSalarySobBackItemMapper() { return MapperProxyFactory.getProxy(SalarySobBackItemMapper.class); } private SalarySobService getSalarySobService(User user) { return ServiceUtil.getService(SalarySobServiceImpl.class, user); } private SalaryItemService getSalaryItemService(User user) { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } private SalaryFormulaService getSalaryFormulaService(User user) { return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); } @Override public List listBySalarySobId(Long salarySobId) { return getSalarySobBackItemMapper().listSome(SalarySobBackItemPO.builder().salarySobId(salarySobId).build()); } @Override public List listAll() { return getSalarySobBackItemMapper().listAll(); } @Override public void batchInsert(List needInsertSalarySobBackItems) { List> partition = Lists.partition(needInsertSalarySobBackItems, 100); partition.forEach(getSalarySobBackItemMapper()::batchInsert); } @Override public SalarySobBackItemPO getById(Long salarySobBackItemId) { return getSalarySobBackItemMapper().getById(salarySobBackItemId); } @Override public List save(SalarySobBackItemSaveParam saveParam) { // 查询薪资账套是否存在 SalarySobPO salarySobPO = getSalarySobService(user).getById(saveParam.getSalarySobId()); if (Objects.isNull(salarySobPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98769, "薪资账套不存在或已被删除")); } // 查询薪资账套下的回算薪资项目 SalarySobBackItemPO salarySobBackItem = getById(saveParam.getId()); if (Objects.isNull(salarySobBackItem)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "回算薪资项目不存在或已被删除")); } // 查询薪资项目 SalaryItemPO salaryItem = getSalaryItemService(user).getById(saveParam.getSalaryItemId()); if (salaryItem == null) { throw new SalaryRunTimeException("参数错误,项目不存在或已被删除"); } salarySobBackItem.setRoundingMode(saveParam.getRoundingMode().getValue()); salarySobBackItem.setPattern(saveParam.getPattern()); salarySobBackItem.setValueType(saveParam.getValueType().getValue()); salarySobBackItem.setFormulaId(saveParam.getValueType() == SalaryValueTypeEnum.INPUT ? NumberUtils.LONG_ZERO : saveParam.getFormulaId()); salarySobBackItem.setUpdateTime(SalaryDateUtil.localDateTimeToDate(LocalDateTime.now())); getSalarySobBackItemMapper().updateIgnoreNull(salarySobBackItem); // 查询公式 List expressFormulas = getSalaryFormulaService(user).listExpressFormula(Collections.singleton(salarySobBackItem.getFormulaId())); return SalarySobBackItemBO.convert2DTO(Collections.singletonList(salarySobBackItem), Collections.singletonList(salaryItem), expressFormulas); } @Override public Long getCountBySalarySobIdIn(Collection salarySobIds) { return getSalarySobBackItemMapper().countBySalarySobIdIn(salarySobIds); } @Override public int deleteBySalarySobIds(Collection salarySobIds) { return getSalarySobBackItemMapper().deleteBySalarySobIds(salarySobIds); } @Override public List listBySalaryItemIds(Collection salaryItemIds) { return getSalarySobBackItemMapper().listSome(SalarySobBackItemPO.builder().salaryItemIds(salaryItemIds).build()); } }