package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.taxagent.dto.TaxAgentFormDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeFormDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeListDTO; import com.engine.salary.entity.taxagent.param.*; import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; import com.engine.salary.entity.taxagent.po.TaxAgentExtRangePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.TaxAgentBaseWrapper; import com.engine.salary.wrapper.TaxAgentSubAdminWrapper; import com.engine.salary.wrapper.TaxAgentWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; 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.util.*; public class TaxAgentController { private TaxAgentBaseWrapper getTaxAgentBaseWrapper(User user) { return ServiceUtil.getService(TaxAgentBaseWrapper.class, user); } private TaxAgentSubAdminWrapper getTaxAgentSubAdminWrapper(User user) { return ServiceUtil.getService(TaxAgentSubAdminWrapper.class, user); } private TaxAgentWrapper getTaxAgentWrapper(User user) { return ServiceUtil.getService(TaxAgentWrapper.class, user); } /** * 是否是薪酬模块总管理员 */ @GET @Path("/isChief") @Produces(MediaType.APPLICATION_JSON) public String isChief(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::isChief, (long) user.getUID()); } /** * 权限信息 * * @param request * @param response * @return */ @GET @Path("/permission") @Produces(MediaType.APPLICATION_JSON) public String permission(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxAgentWrapper(user)::permission, (long) user.getUID()); } /* ****** 基础信息 start ***********************************************************************************************/ /** * 获取个税扣缴义务人基础信息表单 * * @return */ @GET @Path("/base/getForm") @Produces(MediaType.APPLICATION_JSON) public String getBaseFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentBaseWrapper(user)::getFrom); } /** * 保存个税扣缴义务人基础信息 * * @param saveBaseParam * @return */ @POST @Path("/base/save") @Produces(MediaType.APPLICATION_JSON) public String saveBase(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSaveBaseParam saveBaseParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentBaseWrapper(user)::save, saveBaseParam); } /* ******* 基础信息 end ***********************************************************************************************/ /* ******* 个税扣缴义务人 start ***********************************************************************************************/ /** * 个税扣缴义务人列表 * * @param queryParam * @return */ @POST @Path("/list") @Produces(MediaType.APPLICATION_JSON) public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>>(user).run(getTaxAgentWrapper(user)::list, queryParam); } //查询个税扣缴义务人下面的代缴机构") @GET @Path("/paymentAgency/list") @Produces(MediaType.APPLICATION_JSON) public String paymentAgencyList(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); TaxAgentQueryParam queryParam = new TaxAgentQueryParam(); queryParam.setIds(Collections.singleton(id)); return new ResponseResult>>(user).run(getTaxAgentWrapper(user)::paymentAgencyList, queryParam); } //保存个税扣缴义务人下的代缴机构") @POST @Path("/paymentAgency/save") @Produces(MediaType.APPLICATION_JSON) public String paymentAgencySave(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::paymentAgencySave, saveParam); } /** * 获取个税扣缴义务人表单 * * @param id 表单id * @return 表单对象 */ @GET @Path("/getForm") @Produces(MediaType.APPLICATION_JSON) public String getFrom(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::getFrom, id); } /** * 新建个税扣缴义务人 * * @param saveParam 个税扣缴义务人保存参数 * @return 个税扣缴义务人id */ @POST @Path("/save") @Produces(MediaType.APPLICATION_JSON) public String save(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::save, saveParam); } /** * 编辑个税扣缴义务人 * * @param saveParam * @return */ @POST @Path("/update") @Produces(MediaType.APPLICATION_JSON) public String update(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::update, saveParam); } /** * 更换管理员校验 * * @param checkParam * @return */ @POST @Path("/adminChangeCheck") @Produces(MediaType.APPLICATION_JSON) public String adminChangeCheck(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentAdminChangeCheckParam checkParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::adminChangeCheck, checkParam); } /** * 删除个税扣缴义务人 * * @param ids * @return */ @POST @Path("/delete") @Produces(MediaType.APPLICATION_JSON) public String delete(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody List ids) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult, String>(user).run(getTaxAgentWrapper(user)::delete, ids); } /** * 人员范围列表 * * @param queryParam * @return */ @POST @Path("/range/listInclude") @Produces(MediaType.APPLICATION_JSON) public String rangeListInclude(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentRangeQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxAgentWrapper(user)::listRangeInclude, queryParam); } /** * 人员范围排除列表 * * @param queryParam * @return */ @POST @Path("/range/listExclude") @Produces(MediaType.APPLICATION_JSON) public String rangeListExclude(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentRangeQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxAgentWrapper(user)::listRangeExclude, queryParam); } //获取人员范围表单") @POST @Path("/range/getForm") @Produces(MediaType.APPLICATION_JSON) public String getRangeFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::getRangeFrom); } //保存人员范围 @POST @Path("/range/save") @Produces(MediaType.APPLICATION_JSON) public String saveRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentRangeSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::saveRange, saveParam); } //删除人员范围 @POST @Path("/range/delete") @Produces(MediaType.APPLICATION_JSON) public String deleteRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult, String>(user).run(getTaxAgentWrapper(user)::deleteRange, ids); } //外部人员 @POST @Path("/range/listExt") @Produces(MediaType.APPLICATION_JSON) public String listExt(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentRangeExtQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxAgentWrapper(user)::listExt, queryParam); } @POST @Path("/range/ext/save") @Produces(MediaType.APPLICATION_JSON) public String saveExtRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentManageRangeExtSaveParam saveParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::saveExtRange, saveParam); } //删除外部人员范围 @POST @Path("/range/ext/delete") @Produces(MediaType.APPLICATION_JSON) public String deleteExtRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult, String>(user).run(getTaxAgentWrapper(user)::deleteExtRange, ids); } /** * 下载人员范围导入模板 * * @return */ @GET @Path("/range/downloadTemplate") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response downloadTemplateRange(@Context HttpServletRequest request, @Context HttpServletResponse response ,@QueryParam(value = "taxAgentId") Long taxAgentId) { try { User user = HrmUserVarify.getUser(request, response); TaxAgentPO taxAgent = taxAgentId == null ? null : getTaxAgentWrapper(user).getTaxAgentService(user).getById(taxAgentId); TaxAgentRangeDownloadTemplateParam build = TaxAgentRangeDownloadTemplateParam.builder().taxAgentId(taxAgentId).build(); XSSFWorkbook workbook = getTaxAgentWrapper(user).exportImportTemplate(build); String time = LocalDate.now().toString(); String fileName = Objects.isNull(taxAgent) ? "人员范围导入模板" + time : taxAgent.getName() + "人员范围导入模板" + 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) { throw e; } } /** * 预览人员范围导入模板 * * @return */ @POST @Path("/range/preview") @Produces(MediaType.APPLICATION_JSON) public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentImportParam importParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxAgentWrapper(user)::preview, importParam); } /** * 个税扣缴义务人人员范围导入 * * @return */ @POST @Path("/range/importData") @Produces(MediaType.APPLICATION_JSON) public String importEmployeeRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentImportParam importParam) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxAgentWrapper(user)::importData, importParam); } /** * 个税扣缴义务人下拉列表 * * @return */ @GET @Path("/selectList") @Produces(MediaType.APPLICATION_JSON) public String selectList(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); boolean needAuth = !StringUtils.equals("true", request.getParameter("isShare")); return new ResponseResult>>(user).run(getTaxAgentWrapper(user)::selectList, needAuth); } @GET @Path("/selectListAsAdmin") @Produces(MediaType.APPLICATION_JSON) public String selectListAsAdmin(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult, List>>(user).run(getTaxAgentWrapper(user)::selectListAsAdmin); } @GET @Path("/getEmpListInTaxAgent") @Produces(MediaType.APPLICATION_JSON) public String getEmpListInTaxAgent(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getTaxAgentWrapper(user)::getEmpListInTaxAgent, id); } //同步人员范围 @POST @Path("/range/sync") @Produces(MediaType.APPLICATION_JSON) public String syncRange(@Context HttpServletRequest request, @Context HttpServletResponse response) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxAgentWrapper(user)::syncRange); } /* ******* 个税扣缴义务人 end ***********************************************************************************************/ /* ******* 分管理员 start ***********************************************************************************************/ /** * 分管理员列表 * * @param queryParam * @return */ // @POST // @Path("/subAdmin/list") // @Produces(MediaType.APPLICATION_JSON) // public String subAdminList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminQueryParam queryParam) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult>(user).run(getTaxAgentSubAdminWrapper(user)::list, queryParam); // } /** * 获取分管理员基础设置表单 * * @return */ // @POST // @Path("/subAdmin/getBaseForm") // @Produces(MediaType.APPLICATION_JSON) // public String getSubAdminBaseFrom(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminBaseFormParam baseFormParam) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult(user).run(getTaxAgentSubAdminWrapper(user)::getBaseFrom, baseFormParam); // } /** * 分管理员基础设置保存 * * @param saveParam * @return */ // @POST // @Path("/subAdmin/saveBase") // @Produces(MediaType.APPLICATION_JSON) // public String saveSubAdminBase(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminBaseSaveParam saveParam) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult(user).run(getTaxAgentSubAdminWrapper(user)::saveBase, saveParam); // } /** * 删除个税扣缴义务人分管理员 * * @param ids * @return */ // @POST // @Path("/subAdmin/delete") // @Produces(MediaType.APPLICATION_JSON) // public String deleteSubAdmin(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult, String>(user).run(getTaxAgentSubAdminWrapper(user)::delete, ids); // } //分管理员的管理范围列表 // @POST // @Path("/subAdmin/range/listInclude") // @Produces(MediaType.APPLICATION_JSON) // public String subAdminRangeListInclude(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminRangeQueryParam queryParam) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult>(user).run(getTaxAgentSubAdminWrapper(user)::listRangeInclude, queryParam); // } //分管理员的管理范围排除列表 // @POST // @Path("/subAdmin/range/listExclude") // @Produces(MediaType.APPLICATION_JSON) // public String subAdminRangeListExclude(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminRangeQueryParam queryParam) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult>(user).run(getTaxAgentSubAdminWrapper(user)::listRangeExclude, queryParam); // } //获取分管理员的管理范围表单 // @POST // @Path("/subAdmin/range/getForm") // @Produces(MediaType.APPLICATION_JSON) // public String getSubAdminRangeFrom(@Context HttpServletRequest request, @Context HttpServletResponse response) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult(user).run(getTaxAgentSubAdminWrapper(user)::getRangeFrom); // } //保存分管理员的管理范围 // @POST // @Path("/subAdmin/range/save") // @Produces(MediaType.APPLICATION_JSON) // public String saveSubAdminRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentSubAdminRangeSaveParam saveParam) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult(user).run(getTaxAgentSubAdminWrapper(user)::saveRange, saveParam); // } //删除分管理员的管理范围 // @POST // @Path("/subAdmin/range/delete") // @Produces(MediaType.APPLICATION_JSON) // public String deleteSubAdminRange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody Collection ids) { // User user = HrmUserVarify.getUser(request, response); // return new ResponseResult, String>(user).run(getTaxAgentSubAdminWrapper(user)::deleteRange, ids); // } /******** 分管理员 end ***********************************************************************************************/ }