diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemFormDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemFormDTO.java index 3d53a5629..22d856fbf 100644 --- a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemFormDTO.java +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveItemFormDTO.java @@ -5,6 +5,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Map; + /** * 薪资项目调整 *

Copyright: Copyright (c) 2022

@@ -23,9 +25,9 @@ public class SalaryArchiveItemFormDTO { //薪资档案id") private Long salaryArchiveId; -// //基本调整信息") -// private WeaForm salaryArchiveItemForm; -// -// //薪资项目调整明细") -// private EditableTable salaryArchiveItemDetail; + //基本调整信息") + private Map salaryArchiveItemForm; + + //薪资项目调整明细") + private Map salaryArchiveItemDetail; } diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryItemAdjustRecordListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryItemAdjustRecordListDTO.java index bf89fbe4e..8af78946f 100644 --- a/src/com/engine/salary/entity/salaryarchive/dto/SalaryItemAdjustRecordListDTO.java +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryItemAdjustRecordListDTO.java @@ -9,7 +9,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import java.time.LocalDate; import java.util.Date; /** @@ -100,7 +99,7 @@ public class SalaryItemAdjustRecordListDTO { // tableColumn = @TableColumn(width = "100") // ) @JsonFormat(pattern = "yyyy-MM-dd") - private LocalDate effectiveTime; + private Date effectiveTime; //操作人") // @WeaFormat( diff --git a/src/com/engine/salary/enums/salaryarchive/SalaryArchiveItemAdjustReasonEnum.java b/src/com/engine/salary/enums/salaryarchive/SalaryArchiveItemAdjustReasonEnum.java index 4946ab68a..cdd869f76 100644 --- a/src/com/engine/salary/enums/salaryarchive/SalaryArchiveItemAdjustReasonEnum.java +++ b/src/com/engine/salary/enums/salaryarchive/SalaryArchiveItemAdjustReasonEnum.java @@ -1,6 +1,9 @@ package com.engine.salary.enums.salaryarchive; +import com.engine.salary.util.SalaryI18nUtil; + import java.util.Arrays; +import java.util.Optional; /** * @Description: 薪资档案-薪资项目调整原因 @@ -53,4 +56,9 @@ public enum SalaryArchiveItemAdjustReasonEnum { } return ""; } + public static String getDefaultLabelByValue(String value) { + Optional optionalAdjustReason = Arrays.stream(SalaryArchiveItemAdjustReasonEnum.values()).filter(r->r.getValue().equals(value)).findFirst(); + return optionalAdjustReason.isPresent()? SalaryI18nUtil.getI18nLabel(optionalAdjustReason.get().getLabelId(), optionalAdjustReason.get().getDefaultLabel()):""; + } + } diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml index aaa6d883e..61757f7c6 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml @@ -439,7 +439,7 @@ LEFT JOIN hrsa_salary_item t2 ON t2.id = t1.salary_item_id WHERE t1. t1.delete_type = 0 - AND e.status != 'unavailable' AND e.tenant_key = #{tenantKey} + AND e.status != '7' AND t1.salary_item_id IN @@ -486,7 +486,7 @@ LEFT JOIN hrsa_salary_item t2 ON t2.id = t1.salary_item_id WHERE t1. t1.delete_type = 0 - AND e.status != 'unavailable' AND e.tenant_key = #{tenantKey} + AND e.status != '7' AND t1.salary_item_id IN @@ -593,7 +593,7 @@ LEFT JOIN hrsa_salary_item t2 ON t2.id = t1.salary_item_id WHERE t1. t1.delete_type = 0 - AND e.status != 'unavailable' AND e.tenant_key = #{tenantKey} + AND e.status != '7' AND t1.salary_item_id IN @@ -896,7 +896,7 @@ AND t.salary_archive_id IN - + #{param.salaryArchiveId} diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index f8f687059..c1dcb93d5 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -183,16 +183,18 @@ - - t1.id, + t1 + . + id + , t1.employee_id, e.mobile, e.lastname as username, e.status AS employeeStatus, d.departmentname AS departmentName - + @@ -229,7 +231,7 @@ - AND (e.hiredate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) + AND (e.companystartdate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) @@ -245,9 +247,6 @@ - - - AND d.id IN @@ -267,7 +266,7 @@ - AND (e.hiredate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) + AND (e.companystartdate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) @@ -283,9 +282,6 @@ - - - AND d.id IN @@ -305,7 +301,7 @@ - AND (e.hiredate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) + AND (e.companystartdate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) @@ -317,7 +313,7 @@ hrsa_salary_archive t1 LEFT JOIN hrmresource e ON e.id = t1.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid - WHERE t1.delete_type = 0 + WHERE t1.delete_type = 0 ORDER BY t1.id DESC @@ -329,13 +325,13 @@ e.mobile, e.lastname as username, e.status AS employeeStatus, - d.departmentname AS departmentName + d.departmentname AS departmentName FROM hrsa_salary_archive t1 LEFT JOIN hrmresource e ON e.id = t1.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid - WHERE t1.delete_type = 0 + WHERE t1.delete_type = 0 AND t1.id IN @@ -343,15 +339,9 @@ #{id} - AND e.lastname like '%'||#{param.username}||'%' - - - - - AND d.id IN @@ -371,12 +361,13 @@ - AND (e.hiredate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) + AND (e.companystartdate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) ORDER BY t1.id DESC - SELECT t1.id, @@ -384,13 +375,13 @@ e.mobile, e.lastname as username, e.status AS employeeStatus, - d.departmentname AS departmentName + d.departmentname AS departmentName FROM hrsa_salary_archive t1 LEFT JOIN hrmresource e ON e.id = t1.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid - WHERE t1.delete_type = 0 + WHERE t1.delete_type = 0 AND t1.id IN @@ -402,11 +393,6 @@ AND e.lastname like '%'+#{param.username}+'%' - - - - - AND d.id IN @@ -426,7 +412,7 @@ - AND (e.hiredate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) + AND (e.companystartdate BETWEEN #{param.hiredate[0]} AND #{param.hiredate[1]}) ORDER BY t1.id DESC diff --git a/src/com/engine/salary/service/SalaryArchiveService.java b/src/com/engine/salary/service/SalaryArchiveService.java index 2fcd91879..750eb6c5e 100644 --- a/src/com/engine/salary/service/SalaryArchiveService.java +++ b/src/com/engine/salary/service/SalaryArchiveService.java @@ -76,13 +76,10 @@ public interface SalaryArchiveService { /** * 导出薪资档案列表 * - * @param map - * @param username - * @param eteamsId * @param queryParam * @throws Exception */ - void exportList(Map map, String username, String eteamsId, SalaryArchiveQueryParam queryParam); + XSSFWorkbook exportList(SalaryArchiveQueryParam queryParam); /** * 下载导入模板 @@ -95,7 +92,6 @@ public interface SalaryArchiveService { /** * 获取离职时段设置 - * */ List dimissionSets(); @@ -111,7 +107,7 @@ public interface SalaryArchiveService { * 根据日期范围与人员id获取薪资档案-薪资项目数据 * * @param localDateRange - * @param employeeIds 为空则返回所有人的 + * @param employeeIds 为空则返回所有人的 * @return */ List getSalaryArchiveData(LocalDateRange localDateRange, Collection employeeIds); @@ -120,7 +116,7 @@ public interface SalaryArchiveService { * 根据日期范围与人员id获取薪资档案-个税扣缴义务人数据 * * @param localDateRange - * @param employeeIds 为空则返回所有人的 + * @param employeeIds 为空则返回所有人的 * @return */ List getSalaryArchiveTaxAgentData(LocalDateRange localDateRange, Collection employeeIds); diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index ceceb9ea4..30ef3a910 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -182,7 +182,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe } @Override - public void exportList(Map map, String username, String eteamsId, SalaryArchiveQueryParam queryParam) { + public XSSFWorkbook exportList( SalaryArchiveQueryParam queryParam) { // 1.工作簿名称 String sheetName = SalaryI18nUtil.getI18nLabel(85368, "薪资档案"); // 获取所有可被引用的薪资项目 @@ -222,7 +222,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe }); // 3.表数据 - ExcelUtil.genWorkbookV2(rows, sheetName); + return ExcelUtil.genWorkbookV2(rows, sheetName); } @Override diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index 4a27b756c..f91f463b2 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -1,11 +1,15 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveFormDTO; +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemFormDTO; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveDimissionSaveParam; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam; import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.wrapper.SalaryArchiveItemWrapper; import com.engine.salary.wrapper.SalaryArchiveWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.apache.commons.lang3.StringUtils; @@ -43,27 +47,14 @@ public class SalaryArchiveController { private SalaryArchiveWrapper getSalaryArchiveWrapper(User user) { return ServiceUtil.getService(SalaryArchiveWrapper.class, user); } -// -// @Autowired -// private SalaryArchiveWrapper salaryArchiveWrapper; -// @Autowired -// private SalaryArchiveItemWrapper salaryArchiveItemWrapper; + + private SalaryArchiveItemWrapper getSalaryArchiveItemWrapper(User user) { + return ServiceUtil.getService(SalaryArchiveItemWrapper.class, user); + } // private SalaryArchiveTaxAgentWrapper salaryArchiveTaxAgentWrapper; // /******** 薪资档案主表 start ***********************************************************************************************/ -// /** -// * 薪资档案列表的高级搜索 -// * -// * @return -// */ -// @GetMapping("/getSearchCondition") -// @ApiOperation("薪资档案列表的高级搜索") -// @WeaPermission -// public WeaResult getSearchCondition() { -// return WeaResult.success(salaryArchiveWrapper.getSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); -// } - /** * 薪资档案列表 @@ -76,22 +67,38 @@ public class SalaryArchiveController { @Produces(MediaType.APPLICATION_JSON) public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>().run(getSalaryArchiveWrapper(user)::list, queryParam); + return new ResponseResult>>().run(getSalaryArchiveWrapper(user)::list, queryParam); } + /** + * 导出薪资档案 + * + * @return + */ + @GET + @Path("/exportList") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportList(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + SalaryArchiveQueryParam queryParam = buildParam(request); -// /** -// * 导出薪资档案 -// * -// * @param queryParam -// * @return -// */ -// @PostMapping("/exportList") -// @ApiOperation("导出薪资档案") -// @WeaPermission -// public WeaResult> exportList(@RequestBody SalaryArchiveQueryParam queryParam) throws Exception { -// return WeaResult.success(salaryArchiveWrapper.exportList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); -// } + XSSFWorkbook workbook = getSalaryArchiveWrapper(user).exportList(queryParam); + + String fileName = "薪资档案"; + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + } /** * 获取薪资档案详情表单 @@ -108,7 +115,7 @@ public class SalaryArchiveController { if (StringUtils.isNotBlank(salaryArchiveIdStr)) { salaryArchiveId = Long.valueOf(salaryArchiveIdStr); } - return new ResponseResult>().run(getSalaryArchiveWrapper(user)::getFrom, salaryArchiveId); + return new ResponseResult().run(getSalaryArchiveWrapper(user)::getFrom, salaryArchiveId); } @@ -241,9 +248,9 @@ public class SalaryArchiveController { -// /******** 薪资档案主表 end ***********************************************************************************************/ -// -// /******** 薪资项目调整 start ***********************************************************************************************/ + // ******** 薪资档案主表 end ***********************************************************************************************/ + + // ******** 薪资项目调整 start ***********************************************************************************************/ // /** // * 通过薪资档案id获取薪资项目调整表单 // * @@ -269,20 +276,25 @@ public class SalaryArchiveController { // public WeaResult getSalaryItemAdjustBeforeValue(@RequestBody SalaryItemAdjustBeforeParam adjustBeforeParam) { // return WeaResult.success(salaryArchiveItemWrapper.getSalaryItemAdjustBeforeValue(adjustBeforeParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); // } -// -// /** -// * 通过薪资档案的薪资项目id获取薪资项目调整表单 -// * -// * @param salaryArchiveItemId -// * @return -// */ -// @GetMapping("/getSalaryItemFormBySalaryArchiveItemId") -// @ApiOperation("获取薪资项目调整表单") -// @WeaPermission -// public WeaResult getSalaryItemFormBySalaryArchiveItemId(@RequestParam(value = "salaryArchiveItemId") Long salaryArchiveItemId) { -// return WeaResult.success(salaryArchiveItemWrapper.getSalaryItemFormBySalaryArchiveItemId(salaryArchiveItemId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); -// } -// + + /** + * 通过薪资档案的薪资项目id获取薪资项目调整表单 + * + * @return + */ + @GET + @Path("/getSalaryItemFormBySalaryArchiveItemId") + @Produces(MediaType.APPLICATION_JSON) + public String getSalaryItemFormBySalaryArchiveItemId(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + String salaryArchiveItemIdStr = request.getParameter("salaryArchiveItemId"); + Long salaryArchiveItemId = null; + if (StringUtils.isNotBlank(salaryArchiveItemIdStr)) { + salaryArchiveItemId = Long.valueOf(salaryArchiveItemIdStr); + } + return new ResponseResult().run(getSalaryArchiveItemWrapper(user)::getSalaryItemFormBySalaryArchiveItemId,salaryArchiveItemId); + } + // /** // * 保存薪资项目调整 // * diff --git a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java new file mode 100644 index 000000000..2db7daab3 --- /dev/null +++ b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java @@ -0,0 +1,286 @@ +package com.engine.salary.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemFormDTO; +import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; +import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemSaveParam; +import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustBeforeParam; +import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.enums.SalaryUserStatusEnum; +import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.service.SalaryArchiveItemService; +import com.engine.salary.service.impl.SalaryArchiveItemServiceImpl; +import com.engine.salary.util.SalaryI18nUtil; +import com.google.common.collect.Lists; +import org.springframework.stereotype.Component; +import weaver.hrm.User; + +import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; + +/** + * 薪资项目 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Component +public class SalaryArchiveItemWrapper extends Service { + + private SalaryArchiveItemService getSalaryArchiveItemService(User user) { + return (SalaryArchiveItemService) ServiceUtil.getService(SalaryArchiveItemServiceImpl.class, user); + } + + private ExecutorService taskExecutor; + + + /** + * 构建薪资项目基础信息表单 + * + * @param effectiveTime + * @param adjustReason + * @param description + * @return + */ + private Map buildSalaryArchiveItemForm(Date effectiveTime, String adjustReason, String description) { + + // 控件数据 + Map data = new HashMap<>(); + data.put("effectiveTime", effectiveTime + ""); + data.put("adjustReason", adjustReason); + data.put("description", description); + + return data; + } + + /** + * 构建薪资档案调整明细 + * + * @return + */ + private Map buildSalaryArchiveItemAdjustDetailTable(List> tableData) { + Map map = new HashMap<>(); + // 表头 + List headers = new ArrayList<>(); + headers.add(SalaryI18nUtil.getI18nLabel(84960, "薪资项目")); + headers.add(SalaryI18nUtil.getI18nLabel(85433, "调整前")); + headers.add(SalaryI18nUtil.getI18nLabel(85434, "调整后")); + // 获取所有可被引用的薪资项目 + List salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems(); + List> salaryItems = salaryItemList.stream().map(m -> { + Map salaryItemMap = new LinkedHashMap<>(); + salaryItemMap.put("id", String.valueOf(m.getId())); + salaryItemMap.put("content", m.getName()); + return salaryItemMap; + }).collect(Collectors.toList()); + + map.put("headers", headers); + map.put("list", tableData); + map.put("salaryItemList", salaryItems); + + return map; + } + + /** + * 获取薪资项目调整前的值 + * + * @param adjustBeforeParam + * @return + */ + public String getSalaryItemAdjustBeforeValue(SalaryItemAdjustBeforeParam adjustBeforeParam) { + return getSalaryArchiveItemService(user).getSalaryItemAdjustBeforeValue(adjustBeforeParam); + } + + /** + * 通过薪资档案的薪资项目id获取薪资项目调整表单 + * + * @param salaryArchiveItemId + * @return + */ + public SalaryArchiveItemFormDTO getSalaryItemFormBySalaryArchiveItemId(Long salaryArchiveItemId) { + if (salaryArchiveItemId == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100427, "薪资档案的薪资项目id不能为空")); + } + SalaryArchiveItemPO salaryArchiveItem = getSalaryArchiveItemService(user).getById(salaryArchiveItemId); + if (salaryArchiveItem == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100428, "该薪资档案的薪资项目的调整记录不存在")); + } + Long salaryArchiveId = salaryArchiveItem.getSalaryArchiveId(); + Date effectiveTime; + String adjustReason; + String description; + // 调整明细数据 + List> tableData = Lists.newArrayList(); + // 获取调整前 + String archiveItemBeforeValue = getSalaryArchiveItemService(user).getSalaryItemAdjustBeforeValue(SalaryItemAdjustBeforeParam.builder() + .salaryArchiveId(salaryArchiveItem.getSalaryArchiveId()) + .salaryArchiveItemId(salaryArchiveItem.getId()) + .salaryItemId(salaryArchiveItem.getSalaryItemId()) + .build()); + + effectiveTime = salaryArchiveItem.getEffectiveTime(); + adjustReason = salaryArchiveItem.getAdjustReason(); + description = salaryArchiveItem.getDescription(); + Map map = new HashMap<>(3); + map.put("salaryItem", String.valueOf(salaryArchiveItem.getSalaryItemId())); + map.put("salaryBefore", archiveItemBeforeValue); + map.put("adjustAfter", salaryArchiveItem.getItemValue()); + tableData.add(map); + + return SalaryArchiveItemFormDTO.builder() + .salaryArchiveId(salaryArchiveId) + .salaryArchiveItemForm(buildSalaryArchiveItemForm(effectiveTime, adjustReason, description)) + .salaryArchiveItemDetail(buildSalaryArchiveItemAdjustDetailTable(tableData)) + .build(); + } + + /** + * 保存薪资项目调整 + * + * @param saveParam + * @return + */ + public String saveSalaryItem(SalaryArchiveItemSaveParam saveParam) { + return getSalaryArchiveItemService(user).saveSalaryItem(saveParam); + } + + /** + * 删除薪资项目调整 + * + * @param salaryArchiveItemId + * @return + */ + public String deleteSalaryItem(Long salaryArchiveItemId) { + return getSalaryArchiveItemService(user).deleteSalaryItem(salaryArchiveItemId); + } + + + /** + * 薪资项目调整记录列表 + * + * @param queryParam + * @return + */ + public List adjustRecordList(SalaryItemAdjustRecordQueryParam queryParam) { + // 获取所有可被引用的薪资项目 + List salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems(); + List salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); + + List listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds); + List list = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(queryParam, salaryItemIds); + //获取上次更改的记录 + list.forEach(m -> { + if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) { + listAll.removeIf(a -> a.getId().equals(m.getId())); + } + Optional optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId()) && f.getSalaryItemId().equals(m.getSalaryItemId())).findFirst(); + m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : ""); + + m.setEmployeeStatus(SalaryUserStatusEnum.getDefaultLabelByValue(m.getEmployeeStatus())); + m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason())); + }); + + return list; + } + +// /** +// * 单个档案的薪资项目调整记录列表 +// * +// * @param queryParam +// * @param employeeId +// * @param tenantKey +// * @return +// */ +// public WeaTable singleSalaryItemAdjustRecordList(SingleSalaryItemAdjustRecordQueryParam queryParam, Long employeeId, String tenantKey) { +// if (queryParam.getSalaryArchiveId() == null) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空")); +// } +// // 获取所有可被引用的薪资项目 +// List salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems(tenantKey); +// List salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); +// +// Page page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true); +// SalaryItemAdjustRecordQueryParam adjustRecordQueryParam = new SalaryItemAdjustRecordQueryParam(); +// BeanUtils.copyProperties(queryParam, adjustRecordQueryParam); +// page = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(page, adjustRecordQueryParam, salaryItemIds, tenantKey); +// Page listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount()); +// +// List listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds, tenantKey); +// List list = page.getRecords(); +// List resultList = Lists.newArrayList(); +// list.forEach(m -> { +// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) { +// listAll.removeIf(a -> a.getId().equals(m.getId())); +// } +// Optional optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId()) && f.getSalaryItemId().equals(m.getSalaryItemId())).findFirst(); +// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : ""); +// +// m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason(), employeeId, tenantKey)); +// +// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecordList = new SingleSalaryItemAdjustRecordListDTO(); +// BeanUtils.copyProperties(m, singleSalaryItemAdjustRecordList); +// resultList.add(singleSalaryItemAdjustRecordList); +// }); +// listPage.setRecords(resultList); +// +// WeaTable weaTable = FormatManager.getInstance() +// .genTable(SingleSalaryItemAdjustRecordListDTO.class, listPage); +// weaTable.setModule("hrmsalary"); +// List salaryItemPageIds = listPage.getRecords().stream().map(SingleSalaryItemAdjustRecordListDTO::getSalaryItemId).collect(Collectors.toList()); +// List effectiveSalaryItems = getSalaryArchiveItemService(user).getEffectiveSalaryItems(queryParam.getSalaryArchiveId(), salaryItemPageIds, tenantKey); +// // 行记录按钮权限控制 +// for (int i = 0; i < listPage.getRecords().size(); i++) { +// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecord = listPage.getRecords().get(i); +// Optional optional = effectiveSalaryItems.stream().filter(f -> f.getSalaryItemId().equals(singleSalaryItemAdjustRecord.getSalaryItemId())).findFirst(); +// LocalDate effectiveDate = optional.map(SalaryArchiveItemPO::getEffectiveTime).orElse(null); +// List permissions = weaTable.getOperatesPermission().get(i); +// for (int j = 0; j < permissions.size(); j++) { +// Permission permission = permissions.get(j); +// if (effectiveDate != null && singleSalaryItemAdjustRecord.getEffectiveTime().isBefore(effectiveDate)) { +// permission.setVisible(false); +// permission.setDisabled(true); +// } +// if (j > 0 && singleSalaryItemAdjustRecord.getEffectiveTime().equals(effectiveDate)) { +// permission.setVisible(false); +// permission.setDisabled(false); +// } +// } +// } +// // 在外展示操作按钮 +// weaTable.getOperates().get(0).setOuter(Boolean.TRUE); +// return weaTable; +// } +// +// /** +// * 导出薪资项目调整记录列表 +// * +// * @param queryParam +// * @param employeeId +// * @param tenantKey +// * @return +// */ +// public Map exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam, Long employeeId, String tenantKey) { +// // 构建异步导出参数 +// Map map = salaryBatchService.buildeExportParam("exportSalaryArchiveItemAdjustRecord"); +// +// String username = UserContext.getCurrentUser().getUsername(); +// String eteamsId = TenantRpcContext.getEteamsId(); +// taskExecutor.execute(() -> { +// try { +// DSTenantKeyThreadVar.tenantKey.set(tenantKey); +// +// getSalaryArchiveItemService(user).exportAdjustRecordList(map, username, eteamsId, queryParam, employeeId, tenantKey); +// } finally { +// DSTenantKeyThreadVar.tenantKey.remove(); +// } +// }); +// return map; +// } +} diff --git a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java index 3d5c23b55..279d0513f 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java @@ -239,18 +239,9 @@ public class SalaryArchiveWrapper extends Service { getSalaryArchiveService(user).importSalaryArchive(param); } + public XSSFWorkbook exportList(SalaryArchiveQueryParam queryParam) { + return getSalaryArchiveService(user).exportList(queryParam); + } + -// -// /** -// * 获取导入参数 -// * -// * @return -// */ -// public ExcelImportParam getImportParams() { -// return salaryBatchService.buildImportParam("importSalaryArchive", -// "importSalaryArchive", -// SalaryI18nUtil.getI18nLabel(TenantContext.getCurrentTenantKey(), UserContext.getCurrentEmployeeId(), 85368, "薪资档案"), -// null, -// null); -// } }