package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.EmployBiz; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordFormDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordListDTO; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.SalaryAcctEmployeeService; import com.engine.salary.service.SalaryAcctRecordService; import com.engine.salary.service.SalarySobService; import com.engine.salary.service.impl.SalaryAcctEmployeeServiceImpl; import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl; import com.engine.salary.service.impl.SalarySobServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; /** * 薪资核算记录 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ public class SalaryAcctRecordWrapper extends Service { private SalaryAcctRecordService getSalaryAcctRecordService(User user) { return (SalaryAcctRecordService) ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); } private SalarySobService getSalarySobService(User user) { return (SalarySobService) ServiceUtil.getService(SalarySobServiceImpl.class, user); } private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) { return (SalaryAcctEmployeeService) ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); } // private ComInfoCache comInfoCache; public PageInfo listPage(SalaryAcctRecordQueryParam queryParam) { EmployBiz employBiz = new EmployBiz(); // 查询薪资核算记录(分页) PageInfo page = getSalaryAcctRecordService(user).listPageByParam(queryParam); PageInfo dtoPage = new PageInfo(SalaryAcctRecordListDTO.class); dtoPage.setPageNum(queryParam.getCurrent()); dtoPage.setPageSize(queryParam.getPageSize()); List list = page.getList(); if (CollectionUtils.isNotEmpty(list)) { // 查询薪资账套 Set salarySobIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getSalarySobId); List salarySobPOS = getSalarySobService(user).listByIds(salarySobIds); // 查询薪资核算记录的创建人员的人员信息 List employeeIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getCreator, Collectors.toList()); List employeeComInfos = employBiz.getEmployeeByIdsAll(employeeIds); // 查询薪资核算人数的数量 Set salaryAcctRecordIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getId); List salaryAcctEmployeeCountDTOS = getSalaryAcctEmployeeService(user).countBySalaryAcctRecordId(salaryAcctRecordIds); // 转换成列表dto List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS); dtoPage.setList(salaryAcctRecordListDTOS); } // WeaTable weaTable = SalaryFormatUtil.getInstance().buildTable(SalaryAcctRecordListDTO.class, dtoPage); // 只有未归档时可以"核算"、"删除"、"归档" // 归档后、申报后可以"查看"、"重新核算" // for (int i = 0; i < page.getRecords().size(); i++) { // SalaryAcctRecordPO salaryAcctRecord = page.getRecords().get(i); // List permissions = weaTable.getOperatesPermission().get(i); // for (int j = 0; j < permissions.size(); j++) { // Permission permission = permissions.get(j); // if ((j == 0 || j == 1 || j == 3) && !Objects.equals(salaryAcctRecord.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())) { // permission.setVisible(false); // permission.setDisabled(false); // } // if ((j == 2 || j == 5) && Objects.equals(salaryAcctRecord.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())) { // permission.setVisible(false); // permission.setDisabled(false); // } // } // } return dtoPage; } /** * 薪资核算记录详情 * * @param id 薪资核算记录id * @return */ public Map getForm(Long id) { SalaryAcctRecordFormDTO formDTO = new SalaryAcctRecordFormDTO(); // 查询所有启用的薪资账套 List salarySobPOS = getSalarySobService(user).listByDisable(NumberUtils.INTEGER_ZERO); // 薪资核算详情表单中"薪资账套"的下拉选择项 List> salarySobs = salarySobPOS.stream() .map(salarySobPO -> { Map map = new HashMap<>(); map.put("id",salarySobPO.getId()); map.put("name",salarySobPO.getName()); return map; }) .collect(Collectors.toList()); if (Objects.nonNull(id)) { // 查询薪资核算 SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(id); if (Objects.isNull(salaryAcctRecordPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); } // 查询薪资账套 SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId()); if (Objects.isNull(salarySobPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98769, "薪资账套不存在或已被删除")); } // 转换成薪资核算记录详情dto formDTO.setId(salaryAcctRecordPO.getId()) .setSalarySobId(salarySobPO.getId()) .setSalarySobName(salarySobPO.getName()) .setSalaryMonth(SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth()).toString()) .setDescription(salaryAcctRecordPO.getDescription()); } // 转换成前端所需的数据格式 Map result = new HashMap<>(); result.put("formDTO",formDTO); result.put("salarySobs",salarySobs); return result; } /** * 薪资核算记录所用的薪资账套薪资周期、考勤周期…… * * @param id 薪资核算记录的id * @return */ public SalarySobCycleDTO getSalarySobCycleById(Long id) { return getSalaryAcctRecordService(user).getSalarySobCycleById(id); } /** * 保存 * * @param saveParam 保存参数 * @return */ public Long save(SalaryAcctRecordSaveParam saveParam) { return getSalaryAcctRecordService(user).save(saveParam); } /** * 删除 * * @param ids 薪资核算记录的id */ public void delete(Collection ids) { getSalaryAcctRecordService(user).deleteByIds(ids); } /** * 归档 * * @param id 薪资核算记录的id */ public void file(Long id) { getSalaryAcctRecordService(user).file(id); } /** * 重新归档 * * @param id 薪资核算记录的id */ public void reCalculate(Long id) { getSalaryAcctRecordService(user).reCalculate(id); } /** * 判断是否存在合并计税 * * @param id 主键id * @return */ public Integer hasConsolidatedTax(Long id) { return getSalaryAcctRecordService(user).hasConsolidatedTax(id); } }