package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.taxdeclaration.dto.*; import com.engine.salary.entity.taxdeclaration.param.*; import com.engine.salary.entity.taxdeclaration.po.TaxDeclareStatusPO; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.service.TaxDeclarationExcelService; import com.engine.salary.service.TaxDeclarationService; import com.engine.salary.service.impl.TaxDeclarationExcelServiceImpl; import com.engine.salary.service.impl.TaxDeclarationServiceImpl; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.TaxDeclarationDetailWrapper; import com.engine.salary.wrapper.TaxDeclarationWrapper; import com.engine.salary.wrapper.TaxDeclareRecordWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; 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.*; 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.time.LocalDateTime; import java.util.Collection; import java.util.List; import java.util.Map; @Slf4j public class TaxDeclarationController { private TaxDeclarationService getService(User user) { return ServiceUtil.getService(TaxDeclarationServiceImpl.class, user); } private TaxDeclarationWrapper getTaxDeclarationWrapper(User user) { return ServiceUtil.getService(TaxDeclarationWrapper.class, user); } private TaxDeclarationExcelService getTaxDeclarationExcelService(User user) { return ServiceUtil.getService(TaxDeclarationExcelServiceImpl.class, user); } private TaxDeclarationDetailWrapper getTaxDeclarationDetailWrapper(User user) { return ServiceUtil.getService(TaxDeclarationDetailWrapper.class, user); } private TaxDeclareRecordWrapper getTaxDeclareRecordWrapper(User user) { return ServiceUtil.getService(TaxDeclareRecordWrapper.class, user); } /** * 个税申报表列表 * * @param queryParam 查询条件 * @return */ @POST @Path("/list") @Produces(MediaType.APPLICATION_JSON) public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclarationListQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::listPage, queryParam); } /** * 个税申报表表单 * * @param id 个税申报记录id * @return */ @GET @Path("/getForm") @Produces(MediaType.APPLICATION_JSON) public String getForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getForm, id); } /** * 个税申报左侧分类 * * @param id 个税申报记录id * @return */ @GET @Path("/getTaxReports") @Produces(MediaType.APPLICATION_JSON) public String getTaxReportType(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::getTaxReports, id); } /** * 个税申报表相关信息 * * @return */ @POST @Path("/getTaxDeclarationInfo") @Produces(MediaType.APPLICATION_JSON) public String getTaxDeclarationInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getTaxDeclarationInfoById, param); } /** * 个税申报表生成 * * @param saveParam 保存参数 * @return */ @Path("/save") @POST @Produces(MediaType.APPLICATION_JSON) public String saveTaxDeclaration(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclarationSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::save, saveParam); } /** * 刷新个税申报表的待刷新标识 * * @param param 更新参数 * @return */ @POST @Path("/updateIcon") @Produces(MediaType.APPLICATION_JSON) public String updateIcon(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::updateIcon, param.getTaxDeclareRecordId()); } /** * 删除个税申报记录 * * @param ids 个税申报记录id * @return */ @POST @Path("/delete") @Produces(MediaType.APPLICATION_JSON) public String delete(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult, TaxDeclarationInfoDTO>(user).run(getTaxDeclareRecordWrapper(user)::delete, ids); } /** * 个税申报表是否已经生成 * * @param index 进度缓存索引 * @return */ @GET @Path("/getRate") @Produces(MediaType.APPLICATION_JSON) public String getRate(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "index") String index) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getRate, index); } /** * 获取个税申报记录下的个税申报表TAB * * @return */ @POST @Path("/getTaxDeclarationTab") @Produces(MediaType.APPLICATION_JSON) public String getTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::getTaxDeclarationTab, param); } /** * 新增个税申报记录下的个税申报表TAB * * @param param 个税申报记录id * @return */ @POST @Path("/addTaxDeclaration") @Produces(MediaType.APPLICATION_JSON) public String addTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody TaxDeclarationAddParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::addTaxDeclaration, param); } /** * 删除申报表 * * @param request * @param response * @param param * @return */ @POST @Path("/deleteTaxDeclaration") @Produces(MediaType.APPLICATION_JSON) public String deleteTaxDeclaration(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody TaxDeclarationDeleteParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::deleteTaxDeclaration, param); } /** * 在线申报 * * @param taxDeclareRecordParam 在线申报参数 * @return */ @POST @Path("/declare") @Produces(MediaType.APPLICATION_JSON) public String declare(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::declare, taxDeclareRecordParam); } /** * 获取在线申报反馈 * * @param taxDeclareRecordParam 申报反馈参数 * @return */ @POST @Path("/getDeclareFeedback") @Produces(MediaType.APPLICATION_JSON) public String getDeclareFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getDeclareFeedback, taxDeclareRecordParam); } /** * 查询企业申报数据明细 * * @param * @return */ @POST @Path("/getCompanyIncomes") @Produces(MediaType.APPLICATION_JSON) public String getCompanyIncomes(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody GetCompanyIncomesQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getCompanyIncomes, param); } /** * 企业申报数据明细 * * @return */ @POST @Path("/exportGetCompanyIncomes") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportGetCompanyIncomes(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody GetCompanyIncomesQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetCompanyIncomes(param); String fileName = "企业申报数据明细-" + LocalDate.now(); 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; } } /** * 申报内置算税结果 * * @return */ @POST @Path("/exportGetDeclareTaxResultFeedback") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportGetDeclareTaxResultFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeclareTaxResultFeedbackQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(param); String fileName = "申报内置算税结果-" + LocalDate.now(); 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; } } /** * 对比算税过程 * * @param request * @param response * @param param * @return */ @POST @Path("/contrast") @Produces(MediaType.APPLICATION_JSON) public String contrast(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ContrastQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::contrast, param); } /** * 导出在线对比 * * @return */ @POST @Path("/exportContrast") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportContrast(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ContrastQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportContrast(param); String fileName = "在线对比结果-" + LocalDate.now(); 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; } } /** * 作废 * * @param taxDeclareRecordParam 作废参数 * @return */ @POST @Path("/cancel") @Produces(MediaType.APPLICATION_JSON) public String cancel(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::cancelDeclare, taxDeclareRecordParam); } /** * 获取作废反馈 * * @param taxDeclareRecordParam 作废反馈参数 * @return */ @POST @Path("/getCancelFeedback") @Produces(MediaType.APPLICATION_JSON) public String getCancelFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getCancelFeedback, taxDeclareRecordParam); } /** * 更正申报 * * @param taxDeclareRecordParam 更正申报参数 * @return */ @POST @Path("/updateDeclare") @Produces(MediaType.APPLICATION_JSON) public String updateDeclare(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::updateDeclare, taxDeclareRecordParam); } /** * 撤销更正申报,税局存在逻辑问题。误更正申报,先再走申报处理 * * @param taxDeclareRecordParam 撤销更正申报参数 * @return */ // @POST // @Path("/cancelCorrect") // @Produces(MediaType.APPLICATION_JSON) // public String cancelCorrect(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::cancelCorrect, taxDeclareRecordParam.getTaxDeclareRecordId()); // } /** * 刷新数据 * * @param taxDeclareRecordParam 刷新数据参数 * @return */ @POST @Path("/refreshData") @Produces(MediaType.APPLICATION_JSON) public String refreshData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::refreshData, taxDeclareRecordParam.getTaxDeclareRecordId()); } /** * 新增表单 * * @param param * @return */ @POST @Path("/getAddForm") @Produces(MediaType.APPLICATION_JSON) public String getAddForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailFormParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getAddForm, param); } /** * 新增 * * @param request * @param response * @param param * @return */ @POST @Path("/add") @Produces(MediaType.APPLICATION_JSON) public String add(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailSaveParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::add, param); } /** * 编辑 * * @param request * @param response * @param param * @return */ @POST @Path("/edit") @Produces(MediaType.APPLICATION_JSON) public String edit(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailSaveParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::edit, param); } /** * 获取详细详细 * * @param request * @param response * @param id * @return */ @GET @Path("/detailInfo") @Produces(MediaType.APPLICATION_JSON) public String edit(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::detailInfo, id); } /** * 删除详细详细 * * @param request * @param response * @param param * @return */ @POST @Path("/deleteInfo") @Produces(MediaType.APPLICATION_JSON) public String deleteInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailSaveParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::deleteInfo, param.getId()); } /** * 个税申报表详情列表 * * @param queryParam 查询条件 * @return */ @POST @Path("/detail/list") @Produces(MediaType.APPLICATION_JSON) public String listTaxDeclarationValue(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclarationValueListQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::listValuePage, queryParam); } /** * 导出个税申报表申报数据 * * @return */ @GET @Path("/detail/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportDetail(@Context HttpServletRequest request, @Context HttpServletResponse response) { TaxDeclarationValueListQueryParam queryParam = genTaxDeclarationValueListQueryParam(request); try { User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportTaxDeclarationValue(queryParam); String fileName = SalaryI18nUtil.getI18nLabel(156419, "个税申报表明细") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now()); 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; } } private TaxDeclarationValueListQueryParam genTaxDeclarationValueListQueryParam(HttpServletRequest request) { TaxDeclarationValueListQueryParam param = new TaxDeclarationValueListQueryParam(); String current = request.getParameter("current"); if (StringUtils.isNotBlank(current)) { param.setCurrent(Integer.valueOf(current)); } String pageSize = request.getParameter("pageSize"); if (StringUtils.isNotBlank(pageSize)) { param.setPageSize(Integer.valueOf(pageSize)); } String taxDeclareRecordId = request.getParameter("taxDeclareRecordId"); if (StringUtils.isNotBlank(taxDeclareRecordId)) { param.setTaxDeclareRecordId(Long.valueOf(taxDeclareRecordId)); } String taxDeclarationId = request.getParameter("taxDeclarationId"); if (StringUtils.isNotBlank(taxDeclarationId)) { param.setTaxDeclarationId(Long.valueOf(taxDeclarationId)); } String incomeCategory = request.getParameter("incomeCategory"); if (StringUtils.isNotBlank(incomeCategory)) { param.setIncomeCategory(IncomeCategoryEnum.valueOf(incomeCategory)); } return param; } /** * 个税申报表申报数据-人员未报送列表 * * @param queryParam 查询条件 * @return */ @POST @Path("/employee/list4NotDeclare") @Produces(MediaType.APPLICATION_JSON) public String listEmployee4NotDeclare(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AbnormalEmployeeListQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::listEmployeePage4NotDeclare, queryParam); } /** * 个税申报表申报数据-报送人员无申报数据列表 * * @param queryParam 查询条件 * @return */ @POST @Path("/employee/list4NoValue") @Produces(MediaType.APPLICATION_JSON) public String listEmployee4NoValue(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AbnormalEmployeeListQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::listEmployeePage4NoValue, queryParam); } /** * 个税申报表申报数据-申报失败列表 * * @param queryParam 查询条件 * @return */ @POST @Path("/employee/list4Fail") @Produces(MediaType.APPLICATION_JSON) public String listEmployee4Fail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AbnormalEmployeeListQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::listEmployeePage4Fail, queryParam); } private AbnormalEmployeeListQueryParam genAbnormalEmployeeListQueryParam(HttpServletRequest request) { AbnormalEmployeeListQueryParam param = new AbnormalEmployeeListQueryParam(); String current = request.getParameter("current"); if (StringUtils.isNotBlank(current)) { param.setCurrent(Integer.valueOf(current)); } String pageSize = request.getParameter("pageSize"); if (StringUtils.isNotBlank(pageSize)) { param.setPageSize(Integer.valueOf(pageSize)); } String keyword = request.getParameter("keyword"); if (StringUtils.isNotBlank(keyword)) { param.setKeyword(keyword); } String taxDeclareRecordId = request.getParameter("taxDeclareRecordId"); if (StringUtils.isNotBlank(taxDeclareRecordId)) { param.setTaxDeclareRecordId(Long.valueOf(taxDeclareRecordId)); } String taxAgentId = request.getParameter("taxAgentId"); if (StringUtils.isNotBlank(taxAgentId)) { param.setTaxAgentId(Long.valueOf(taxAgentId)); } String taxCycle = request.getParameter("taxCycle"); if (StringUtils.isNotBlank(taxCycle)) { param.setTaxCycle(SalaryDateUtil.stringToDate(taxCycle)); } return param; } /** * 个税申报表申报数据-导出人员未报送列表 * * @return */ @GET @Path("/employee/export4NotDeclare") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportEmployee4NotDeclare(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { User user = HrmUserVarify.getUser(request, response); AbnormalEmployeeListQueryParam queryParam = genAbnormalEmployeeListQueryParam(request); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportEmployee4NotDeclare(queryParam); String fileName = SalaryI18nUtil.getI18nLabel(156420, "未报送的人员") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now()); 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; } } /** * 个税申报表申报数据-导出报送人员无申报数据列表 * * @return */ @GET @Path("/employee/export4NoValue") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportEmployee4NoValue(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { User user = HrmUserVarify.getUser(request, response); AbnormalEmployeeListQueryParam queryParam = genAbnormalEmployeeListQueryParam(request); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportEmployee4NoValue(queryParam); String fileName = SalaryI18nUtil.getI18nLabel(156421, "缺少申报数据的人员") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now()); 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; } } /** * 个税申报表申报数据-导出申报失败列表 * * @return */ @GET @Path("/employee/export4Fail") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response exportEmployee4Fail(@Context HttpServletRequest request, @Context HttpServletResponse response) { try { User user = HrmUserVarify.getUser(request, response); AbnormalEmployeeListQueryParam queryParam = genAbnormalEmployeeListQueryParam(request); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportEmployee4Fail(queryParam); String fileName = SalaryI18nUtil.getI18nLabel(156422, "申报失败人员") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now()); 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; } } @POST @Path("/downloadTemplate") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response downloadTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DownloadTemplateParam param) { try { User user = HrmUserVarify.getUser(request, response); XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).downloadTemplate(param); String fileName = "申报表导入模板" + LocalDate.now(); try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); } catch (UnsupportedEncodingException e) { log.error(e.getMessage(), e); } 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; } } @POST @Path("/preview") @Produces(MediaType.APPLICATION_JSON) public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DownloadTemplateParam importParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::preview, importParam); } @POST @Path("/importData") @Produces(MediaType.APPLICATION_JSON) public String importAddUpDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DownloadTemplateParam importParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::importData, importParam); } }