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.dto.SalaryArchiveTaxAgentFormDTO; import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.*; import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum; import com.engine.salary.util.ResponseResult; import com.engine.salary.wrapper.SalaryArchiveItemWrapper; import com.engine.salary.wrapper.SalaryArchiveTaxAgentWrapper; import com.engine.salary.wrapper.SalaryArchiveWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jetbrains.annotations.Nullable; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.StreamingOutput; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 薪资档案 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ public class SalaryArchiveController { private SalaryArchiveWrapper getSalaryArchiveWrapper(User user) { return ServiceUtil.getService(SalaryArchiveWrapper.class, user); } private SalaryArchiveItemWrapper getSalaryArchiveItemWrapper(User user) { return ServiceUtil.getService(SalaryArchiveItemWrapper.class, user); } private SalaryArchiveTaxAgentWrapper getSalaryArchiveTaxAgentWrapper(User user) { return ServiceUtil.getService(SalaryArchiveTaxAgentWrapper.class, user); } // /******** 薪资档案主表 start ***********************************************************************************************/ /** * 薪资档案列表 * * @param queryParam * @return */ @POST @Path("/list") @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 */ @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); 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(); } /** * 获取薪资档案详情表单 * * @return */ @GET @Path("/getForm") @Produces(MediaType.APPLICATION_JSON) public String getFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); String salaryArchiveIdStr = request.getParameter("salaryArchiveId"); Long salaryArchiveId = null; if (StringUtils.isNotBlank(salaryArchiveIdStr)) { salaryArchiveId = Long.valueOf(salaryArchiveIdStr); } return new ResponseResult().run(getSalaryArchiveWrapper(user)::getFrom, salaryArchiveId); } /** * 获取离职时段设置表单 * * @return */ @GET @Path("/getDimissionSetForm") @Produces(MediaType.APPLICATION_JSON) public String getDimissionSetForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>().run(getSalaryArchiveWrapper(user)::getDimissionSetForm); } /** * 保存离职时段设置 * * @return */ @POST @Path("/saveDimissionSet") @Produces(MediaType.APPLICATION_JSON) public String saveDimissionSet(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveDimissionSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult().run(getSalaryArchiveWrapper(user)::saveDimissionSet, saveParam); } /** * 获取导入类型 * * @return */ @GET @Path("/getImportTypes") @Produces(MediaType.APPLICATION_JSON) public String getImportTypes(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>>().run(getSalaryArchiveWrapper(user)::getImportTypes); } /** * 下载导入模板 * * @return */ @GET @Path("/downloadTemplate") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response downloadTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); SalaryArchiveQueryParam queryParam = buildParam(request); XSSFWorkbook workbook = getSalaryArchiveWrapper(user).downloadTemplate(queryParam); SalaryArchiveImportTypeEnum importTypeEnum = SalaryArchiveImportTypeEnum.parseByValue(queryParam.getImportType()); String fileName = "薪资档案导入模板-" + importTypeEnum.getDefaultLabel(); 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(); } @Nullable private SalaryArchiveQueryParam buildParam(HttpServletRequest request) { SalaryArchiveQueryParam param = new SalaryArchiveQueryParam(); String ids = request.getParameter("ids"); if (StringUtils.isNotBlank(ids)) { param.setIds(Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList())); } String keyword = request.getParameter("username"); if (StringUtils.isNotBlank(keyword)) { param.setUsername(keyword); } String taxAgentId = request.getParameter("taxAgentId"); if (StringUtils.isNotBlank(taxAgentId)) { param.setTaxAgentId(Long.valueOf(taxAgentId)); } String departmentIds = request.getParameter("departmentIds"); if (StringUtils.isNotBlank(departmentIds)) { param.setDepartmentIds(Arrays.stream(departmentIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); } String positionIds = request.getParameter("positionIds"); if (StringUtils.isNotBlank(positionIds)) { param.setPositionIds(Arrays.stream(positionIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); } String userstatus = request.getParameter("userstatus"); if (StringUtils.isNotBlank(userstatus)) { param.setUserstatus(userstatus); } String hiredate = request.getParameter("hiredate"); if (StringUtils.isNotBlank(hiredate)) { param.setHiredate(Arrays.asList(hiredate.split(","))); } String importType = request.getParameter("importType"); if (StringUtils.isNotBlank(importType)) { param.setImportType(importType); } return param; } @POST @Path("/preview") @Produces(MediaType.APPLICATION_JSON) public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveImportHandleParam importParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>().run(getSalaryArchiveWrapper(user)::preview, importParam); } @POST @Path("/importSalaryArchive") @Produces(MediaType.APPLICATION_JSON) public String importSalaryArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveImportHandleParam importParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>().run(getSalaryArchiveWrapper(user)::importSalaryArchive, importParam); } // ******** 薪资档案主表 end ***********************************************************************************************/ // ******** 薪资项目调整 start ***********************************************************************************************/ // /** // * 通过薪资档案id获取薪资项目调整表单 // * // * @param salaryArchiveId // * @return // */ // @GetMapping("/getSalaryItemForm") // @ApiOperation("获取薪资项目调整表单") // @WeaPermission // public WeaResult getSalaryItemForm(@RequestParam Long salaryArchiveId) { // return WeaResult.success(salaryArchiveItemWrapper.getSalaryItemForm(salaryArchiveId, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); // } /** * 获取薪资项目调整前的值 * * @param adjustBeforeParam * @return */ @POST @Path("/getSalaryItemAdjustBeforeValue") @Produces(MediaType.APPLICATION_JSON) public String getSalaryItemAdjustBeforeValue(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemAdjustBeforeParam adjustBeforeParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult().run(getSalaryArchiveItemWrapper(user)::getSalaryItemAdjustBeforeValue, adjustBeforeParam); } /** * 通过薪资档案的薪资项目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); } /** * 保存薪资项目调整 */ @POST @Path("/saveSalaryItem") @Produces(MediaType.APPLICATION_JSON) public String saveSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveItemSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult().run(getSalaryArchiveItemWrapper(user)::saveSalaryItem, saveParam); } /** * 删除薪资项目调整 */ @POST @Path("/deleteSalaryItem") @Produces(MediaType.APPLICATION_JSON) public String deleteSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Long salaryArchiveItemId) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult().run(getSalaryArchiveItemWrapper(user)::deleteSalaryItem, salaryArchiveItemId); } // ******** 薪资项目调整 end ***********************************************************************************************/ // ******** 个税扣缴义务人调整 start ***********************************************************************************************/ /** * 获取个税扣缴义务人调整表单 * * @param salaryArchiveId * @return */ @GET @Path("/getTaxAgentForm") @Produces(MediaType.APPLICATION_JSON) public String getTaxAgentForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryArchiveId") Long salaryArchiveId) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult().run(getSalaryArchiveTaxAgentWrapper(user)::getTaxAgentForm, salaryArchiveId); } /** * 通过薪资档案的个税扣缴义务人id获取个税扣缴义务人调整表单` * * @param salaryArchiveTaxAgentId * @return */ @GET @Path("/getTaxAgentFormBySalaryArchiveTaxAgentId") @Produces(MediaType.APPLICATION_JSON) public String getTaxAgentFormBySalaryArchiveTaxAgentId(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryArchiveTaxAgentId") Long salaryArchiveTaxAgentId) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult().run(getSalaryArchiveTaxAgentWrapper(user)::getTaxAgentFormBySalaryArchiveTaxAgentId, salaryArchiveTaxAgentId); } /** * 保存个税扣缴义务人调整 * * @param saveParam * @return */ @POST @Path("/saveTaxAgent") @Produces(MediaType.APPLICATION_JSON) public String saveTaxAgent(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveTaxAgentSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult().run(getSalaryArchiveTaxAgentWrapper(user)::saveTaxAgent, saveParam); } /** * 删除个税扣缴义务人调整 * * @param salaryArchiveTaxAgentId * @return */ /** * 保存个税扣缴义务人调整 * * @return */ @POST @Path("/deleteTaxAgent") @Produces(MediaType.APPLICATION_JSON) public String deleteTaxAgent(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Long salaryArchiveTaxAgentId) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult().run(getSalaryArchiveTaxAgentWrapper(user)::deleteTaxAgent, salaryArchiveTaxAgentId); } // ******** 薪资项目调整 end ***********************************************************************************************/ // ******** 薪资项目调整记录 start ***********************************************************************************************/ /** * 薪资项目调整记录列表 * * @param queryParam * @return */ @POST @Path("/adjustRecord/salaryItemList") @Produces(MediaType.APPLICATION_JSON) public String adjustRecordList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemAdjustRecordQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>().run(getSalaryArchiveItemWrapper(user)::adjustRecordList, queryParam); } // /** // * 单个档案的薪资项目调整记录列表 // * // * @param queryParam // * @return // */ // @PostMapping("/adjustRecord/singleSalaryItemList") // @ApiOperation("单个档案的薪资项目调整记录列表") // @WeaPermission // public WeaResult> singleSalaryItemAdjustRecordList(@RequestBody SingleSalaryItemAdjustRecordQueryParam queryParam) { // return WeaResult.success(salaryArchiveItemWrapper.singleSalaryItemAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); // } // // /** // * 导出薪资项目调整记录列表 // * // * @param queryParam // * @return // */ // @PostMapping("/adjustRecord/exportSalaryItemList") // @ApiOperation("导出薪资项目调整记录列表") // @WeaPermission // public WeaResult> exportSalaryItemList(@RequestBody SalaryItemAdjustRecordQueryParam queryParam) { // return WeaResult.success(salaryArchiveItemWrapper.exportAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); // } // /******** 薪资项目调整记录 end ***********************************************************************************************/ // // /******** 个税扣缴义务人调整记录 start ***********************************************************************************************/ // /** // * 个税扣缴义务人调整记录列表的高级搜索 // * // * @return // */ // @GetMapping("/adjustRecord/getTaxAgentSearchCondition") // @ApiOperation("个税扣缴义务人调整记录列表的高级搜索") // @WeaPermission // public WeaResult getTaxAgentSearchCondition() { // return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).getAdjustRecordSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); // } // // /** // * 个税扣缴义务人调整记录列表 // * // * @param queryParam // * @return // */ // @PostMapping("/adjustRecord/taxAgentList") // @ApiOperation("个税扣缴义务人调整记录列表") // @WeaPermission // public WeaResult> taxAgentList(@RequestBody TaxAgentAdjustRecordQueryParam queryParam) { // return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).adjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); // } // // /** // * 单个档案的个税扣缴义务人调整记录列表 // * // * @param queryParam // * @return // */ // @PostMapping("/adjustRecord/singleTaxAgentList") // @ApiOperation("单个档案的个税扣缴义务人调整记录列表") // @WeaPermission // public WeaResult> SingleTaxAgentAdjustRecordList(@RequestBody SingleTaxAgentAdjustRecordQueryParam queryParam) { // return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).singleTaxAgentAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); // } // // /** // * 导出个税扣缴义务人调整记录列表 // * // * @param queryParam // * @return // */ // @PostMapping("/adjustRecord/exportTaxAgentList") // @ApiOperation("导出个税扣缴义务人调整记录列表") // @WeaPermission // public WeaResult> exportTaxAgentList(@RequestBody TaxAgentAdjustRecordQueryParam queryParam) { // return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).exportAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); // } // /******** 个税扣缴义务人调整记录 end ***********************************************************************************************/ }