package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.ly.param.LyPZGenParam; import com.engine.salary.entity.ly.param.LySalaryReportQueryParam; import com.engine.salary.util.ResponseResult; import com.engine.salary.wrapper.LySalaryWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; 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.time.LocalDate; import java.util.List; import java.util.Map; /** * @author Harryxzy * @ClassName LySalaryController * @date 2024/08/21 16:54 * @description 领悦二开 */ @Slf4j public class LySalaryController { private LySalaryWrapper getLySalaryWrapper(User user) { return ServiceUtil.getService(LySalaryWrapper.class, user); } /** * 领悦报表权限 * * @param request * @param response * @param param * @return */ @POST @Path("/salaryReport/lyPermission") @Produces(MediaType.APPLICATION_JSON) public String lyReportPermission(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getLySalaryWrapper(user)::lyReportPermission, user); } //---------------------------------------------------------薪酬汇总报表start------------------------------------------ /** * 生成薪酬汇总报表 * * @param request * @param response * @param param * @return */ @POST @Path("/salaryReport/generate") @Produces(MediaType.APPLICATION_JSON) public String generateSalaryReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getLySalaryWrapper(user)::generateSalaryReport, param); } /** * 查询薪酬汇总报表 * * @param request * @param response * @param param * @return */ @POST @Path("/salaryReport/list") @Produces(MediaType.APPLICATION_JSON) public String listSalaryReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getLySalaryWrapper(user)::listSalaryReport, param); } /** * 薪酬统计报表 合计行 * * @param request * @param response * @param param * @return */ @POST @Path("/salaryReport/sum") @Produces(MediaType.APPLICATION_JSON) public String salaryReportSum(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getLySalaryWrapper(user)::salaryReportSum, param); } /** * 删除报表数据 * * @param request * @param response * @param param * @return */ @POST @Path("/salaryReport/batchDelete") @Produces(MediaType.APPLICATION_JSON) public String deleteSalaryReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult, String>(user).run(getLySalaryWrapper(user)::deleteSalaryReport, param.getIds()); } /** * 导出报表数据 * * @param request * @param response * @param param * @return */ @POST @Path("/salaryReport/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportSalaryReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getLySalaryWrapper(user).exportSalaryReport(param); String time = LocalDate.now().toString(); String fileName = param.getSalaryMonth() +"薪酬统计报表" + "-" + time; 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(); } catch (Exception e) { log.error("薪酬统计报表导出异常", e); throw e; } } //---------------------------------------------------------薪酬汇总报表end-------------------------------------------- //---------------------------------------------------------社保公积金汇总报表start------------------------------------- /** * 生成社保公积金汇总报表 * * @param request * @param response * @param param * @return */ @POST @Path("/SIReport/generate") @Produces(MediaType.APPLICATION_JSON) public String generateSIReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getLySalaryWrapper(user)::generateSIReport, param); } /** * 查询社保公积金汇总报表 * * @param request * @param response * @param param * @return */ @POST @Path("/SIReport/list") @Produces(MediaType.APPLICATION_JSON) public String listSIReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getLySalaryWrapper(user)::listSIReport, param); } /** * 社保公积金汇总报表 合计行 * * @param request * @param response * @param param * @return */ @POST @Path("/SIReport/sum") @Produces(MediaType.APPLICATION_JSON) public String sIReportSum(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getLySalaryWrapper(user)::sIReportSum, param); } /** * 删除报表数据 * * @param request * @param response * @param param * @return */ @POST @Path("/SIReport/batchDelete") @Produces(MediaType.APPLICATION_JSON) public String deleteSIReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult, String>(user).run(getLySalaryWrapper(user)::deleteSIReport, param.getIds()); } /** * 导出报表数据 * * @param request * @param response * @param param * @return */ @POST @Path("/socialReport/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportSIReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LySalaryReportQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getLySalaryWrapper(user).exportSIReport(param); String time = LocalDate.now().toString(); String fileName = param.getSalaryMonth() +"社保公积金汇总报表" + "-" + time; 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(); } catch (Exception e) { log.error("社保公积金汇总报表导出异常", e); throw e; } } //---------------------------------------------------------社保公积金汇总报表end--------------------------------------- //---------------------------------------------------------领悦生成凭证start------------------------------------------ @POST @Path("/PZ/genAndPreveiw") @Produces(MediaType.APPLICATION_JSON) public String genAndPreveiwPZ(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody LyPZGenParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getLySalaryWrapper(user)::genPZ, param); } //---------------------------------------------------------领悦生成凭证end-------------------------------------------- }