package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salarysob.bo.SalarySobBO; import com.engine.salary.entity.salarysob.dto.SalarySobBasicFormDTO; import com.engine.salary.entity.salarysob.dto.SalarySobListDTO; import com.engine.salary.entity.salarysob.param.SalarySobBasicSaveParam; import com.engine.salary.entity.salarysob.param.SalarySobDisableParam; import com.engine.salary.entity.salarysob.param.SalarySobDuplicateParam; import com.engine.salary.entity.salarysob.param.SalarySobListQueryParam; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.SalarySobService; import com.engine.salary.service.TaxAgentService; import com.engine.salary.service.impl.SalarySobServiceImpl; import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import weaver.hrm.User; import java.util.*; /** * 薪资账套 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ public class SalarySobWrapper extends Service { private SalarySobService getSalarySobService(User user) { return ServiceUtil.getService(SalarySobServiceImpl.class, user); } private TaxAgentService getTaxAgentService(User user) { return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } /** * 薪资账套列表 * * @param queryParam 列表查询参数 * @return */ public PageInfo listPage(SalarySobListQueryParam queryParam) { // 查询薪资账套 PageInfo page = getSalarySobService(user).listPageByParam(queryParam); // 薪资账套po转换成薪资账套列表dto List salarySobListDTOS = SalarySobBO.convert2ListDTO(page.getList()); PageInfo dtoPage = new PageInfo<>(salarySobListDTOS, SalarySobListDTO.class); dtoPage.setTotal(page.getTotal()); dtoPage.setPageNum(page.getPageNum()); dtoPage.setPageSize(page.getPageSize()); // 转换成前端所需的数据格式 return dtoPage; } /** * 薪资账套详情 * * @param id 薪资账套id * @return */ public Map getForm(Long id) { long employeeId = user.getUID(); Map data = new HashMap<>(16); // 是否可以编辑(分权后,总管理员不可以编辑管理员新建的账套) boolean canEdit = Objects.isNull(id) || canEdit(id, employeeId); // 薪资账套基础设置详情(目前核算人员范围的值固定为"1") SalarySobBasicFormDTO basicForm = new SalarySobBasicFormDTO() .setEmployeeRange("1") .setTaxableItems(IncomeCategoryEnum.WAGES_AND_SALARIES.getValue()) .setCanEdit(canEdit); if (!Objects.isNull(id)) { // 查询薪资账套 SalarySobPO salarySobPO = getSalarySobService(user).getById(id); if (Objects.isNull(salarySobPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除")); } // 薪资装套po转换成薪资账套详情dto basicForm = SalarySobBO.convert2FormDTO(basicForm,salarySobPO); } // 转换成前端所需的数据格式 data.put("basicForm", basicForm); return data; } /** * 保存 * * @param saveParam 保存参数 * @return */ public Long save(SalarySobBasicSaveParam saveParam) { return getSalarySobService(user).save(saveParam); } /** * 更新薪资账套的基础设置 * * @param saveParam 更新参数 * @return */ public Long update(SalarySobBasicSaveParam saveParam) { return getSalarySobService(user).update(saveParam); } /** * 启用/禁用薪资账套 * * @param disableParam 更新参数 */ public void updateDisable(SalarySobDisableParam disableParam) { getSalarySobService(user).updateDisable(disableParam); } /** * 删除薪资账套 * * @param ids 薪资账套的id */ public void delete(Collection ids) { getSalarySobService(user).deleteByIds(ids); } /** * 复制 * * @param duplicateParam 复制参数 */ public void duplicate(SalarySobDuplicateParam duplicateParam) { getSalarySobService(user).duplicate(duplicateParam); } /** * 判断是否可以编辑薪资账套 * * @param id * @param employeeId * @return */ public boolean canEdit(Long id, Long employeeId) { // 查询薪资账套 SalarySobPO salarySobPO = getSalarySobService(user).getById(id); if (Objects.isNull(salarySobPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除")); } // 判断是否开启了分权 Boolean openDevolution = getTaxAgentService(user).isOpenDevolution(); if (!openDevolution) { return true; } Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(employeeId); Set taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId); return taxAgentIds.contains(salarySobPO.getTaxAgentId()); } }