package com.engine.salary.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.SalarySobItemGroupBiz; import com.engine.salary.entity.salaryformula.config.FormluaConfig; import com.engine.salary.entity.salaryformula.po.FormulaPO; import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.service.SalaryFormulaService; import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.SalarySobItemGroupService; import com.engine.salary.service.SalarySobItemService; import com.engine.salary.util.SalaryEntityUtil; import weaver.hrm.User; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; /** * 薪资账套中的薪资项目分类 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ public class SalarySobItemGroupServiceImpl extends Service implements SalarySobItemGroupService { private SalarySobItemGroupBiz salarySobItemGroupMapper = new SalarySobItemGroupBiz(); private SalarySobItemService getSalarySobItemService(User user) { return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); } private SalaryFormulaService getSalaryFormulaService(User user) { return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); } private SalaryItemService getSalaryItemService(User user) { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } @Override public SalarySobItemGroupPO getById(Long id) { return salarySobItemGroupMapper.getById(id); } @Override public List listBySalarySobId(Long salarySobId) { return salarySobItemGroupMapper.listSome(SalarySobItemGroupPO.builder().salarySobId(salarySobId).build()); } @Override public void batchSave(Collection salarySobItemGroupPOS) { salarySobItemGroupMapper.batchInsert(salarySobItemGroupPOS); } @Override public void deleteBySalarySobIds(Collection salarySobIds) { salarySobItemGroupMapper.deleteBySalarySobIds(salarySobIds); } @Override public List getConfig(Long salarySobId) { List salarySobItemGroupPOS = salarySobItemGroupMapper.listSome(SalarySobItemGroupPO.builder().salarySobId(salarySobId).build()); if (CollectionUtil.isNotEmpty(salarySobItemGroupPOS)) { List sobItemPOS = getSalarySobItemService(user).listBySalarySobId(salarySobId); Map> itemListMap = SalaryEntityUtil.group2Map(sobItemPOS, SalarySobItemPO::getSalarySobItemGroupId); FormluaConfig config = getSalaryFormulaService(user).getConfig(); List formulaPOS = config.getFormulas(); Map formulaMap = SalaryEntityUtil.convert2Map(formulaPOS, FormulaPO::getId); List formulaVars = config.getFormulaVars(); Map> varListMap = SalaryEntityUtil.group2Map(formulaVars, FormulaVar::getFormulaId); List salaryItems = getSalaryItemService(user).listAll(); Map itemIdMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId); salarySobItemGroupPOS.forEach(salarySobItemGroupPO -> { List salarySobItemPOS = itemListMap.getOrDefault(salarySobItemGroupPO.getId(), new ArrayList<>()); salarySobItemPOS.forEach(po -> { if (SalaryEntityUtil.isNotNullOrEmpty(po.getFormulaId())) { FormulaPO formulaPO = formulaMap.get(po.getFormulaId()); if (SalaryEntityUtil.isNotNullOrEmpty(formulaPO)) { List formulaVarList = varListMap.getOrDefault(formulaPO.getId(), new ArrayList<>()); formulaPO.setFormulaVars(formulaVarList); } po.setFormula(formulaPO); } if(SalaryEntityUtil.isNotNullOrEmpty(po.getSalaryItemId())){ SalaryItemPO salaryItemPO = itemIdMap.get(po.getSalaryItemId()); po.setSalaryItem(salaryItemPO); } }); salarySobItemGroupPO.setSalarySobItems(salarySobItemPOS); }); } return salarySobItemGroupPOS; } }