package com.engine.salary.service.impl; import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.setting.param.PageListSettingSaveParam; import com.engine.salary.entity.setting.param.PageListTemplateQueryParam; import com.engine.salary.entity.setting.param.PageListTemplateSaveParam; import com.engine.salary.entity.setting.po.PageListSettingPO; import com.engine.salary.enums.SalaryOnOffEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.setting.PageListSettingMapper; import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.SalarySobService; import com.engine.salary.service.SettingService; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.valid.ValidUtil; import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY; import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT; /** * 薪资核算 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ public class SettingServiceImpl extends Service implements SettingService { private PageListSettingMapper getPageListSettingMapper() { return MapperProxyFactory.getProxy(PageListSettingMapper.class); } private SalarySobService getSalarySobService(User user) { return ServiceUtil.getService(SalarySobServiceImpl.class, user); } private SalaryItemService getSalaryItemService(User user) { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } @Override public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { Date now = new Date(); PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage()); if (pageListSettingPO != null) { pageListSettingPO.setSetting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())); pageListSettingPO.setUpdateTime(now); getPageListSettingMapper().updateIgnoreNull(pageListSettingPO); } else { pageListSettingPO = PageListSettingPO.builder() .id(IdGenerator.generate()) .name("系统默认模板") .template(SalaryOnOffEnum.OFF.getValue()) .page(pageListSettingSaveParam.getPage()) .setting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())) .creator((long) user.getUID()) .createTime(now) .updateTime(now) .deleteType(0) .tenantKey(DEFAULT_TENANT_KEY) .build(); getPageListSettingMapper().insertIgnoreNull(pageListSettingPO); } } @Override public Map getPageListSetting(PageListSettingQueryParam param) { String page = param.getPage(); Map result = new HashMap(); PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page); if (SALARY_DETAILS_REPORT.getValue().equals(page)) { List salaryItemList = getSalaryItemService(user).listAll(); salaryItemList = salaryItemList.stream() .filter(po -> { String name = param.getName(); if (StrUtil.isNotEmpty(name)) { return po.getName() != null && po.getName().contains(name); } return true; }) .sorted((o1, o2) -> { if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); return systemType1.compareTo(systemType2); } else { Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); return sortedIndex2.compareTo(sortedIndex1); } }) .collect(Collectors.toList()); result.put("setting", salaryItemList); if (pageListSettingPO != null && StrUtil.isNotEmpty(pageListSettingPO.getSetting())) { result.put("checked", JsonUtil.parseList(pageListSettingPO.getSetting(), Long.class)); } else { List collect = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); result.put("checked", collect); } } return result; } @Override public List getPageListTemplates(PageListTemplateQueryParam param) { ValidUtil.doValidator(param); String page = param.getPage(); List settingPOS = new ArrayList<>(); //系统默认模板 PageListSettingPO settingPO = getPageListSettingMapper().getByPage(page); if (settingPO != null) { settingPOS.add(settingPO); } List pos = getPageListSettingMapper().getTemplatesByPage(page); settingPOS.addAll(pos); String name = param.getName(); if (StrUtil.isNotBlank(name)) { settingPOS = settingPOS.stream().filter(po -> po.getName() != null && po.getName().contains(name)).collect(Collectors.toList()); } return settingPOS; } @Override public PageListSettingPO savePageListTemplate(PageListTemplateSaveParam param) { ValidUtil.doValidator(param); Date now = new Date(); Long id = param.getId(); PageListSettingPO po; if (id == null) { po = PageListSettingPO.builder() .id(IdGenerator.generate()) .template(SalaryOnOffEnum.ON.getValue()) .name(param.getName()) .page(param.getPage()) .setting(JsonUtil.toJsonString(param.getSetting())) .creator((long) user.getUID()) .createTime(now) .updateTime(now) .deleteType(0) .tenantKey(DEFAULT_TENANT_KEY) .build(); getPageListSettingMapper().insertIgnoreNull(po); } else { po = getPageListSettingMapper().getById(id); if (po == null) { throw new SalaryRunTimeException("模板不存在!"); } po.setName(param.getName()); po.setSetting(JsonUtil.toJsonString(param.getSetting())); po.setUpdateTime(now); getPageListSettingMapper().updateIgnoreNull(po); } return po; } }