830 lines
33 KiB
Java
830 lines
33 KiB
Java
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<TaxDeclarationListQueryParam, PageInfo>(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<Long, Map>(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<Long, List<TaxDeclareStatusPO>>(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<TaxDeclareRecordParam, TaxDeclarationInfoDTO>(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<TaxDeclarationSaveParam, String>(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<Long, TaxDeclarationInfoDTO>(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<Long> ids) {
|
|
User user = HrmUserVarify.getUser(request, response);
|
|
return new ResponseResult<Collection<Long>, 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<String, TaxDeclarationRateDTO>(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<TaxDeclareRecordParam, List<TaxDeclarationTabDTO>>(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<TaxDeclarationAddParam, String>(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<TaxDeclarationDeleteParam, String>(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<TaxDeclareRecordParam, String>(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<TaxDeclareRecordParam, String>(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<GetCompanyIncomesQueryParam, Object>(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<ContrastQueryParam, Map<String, Object>>(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<TaxDeclareRecordParam, String>(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<TaxDeclareRecordParam, String>(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<TaxDeclareRecordParam, String>(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<Long, String>(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<Long, String>(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<TaxDeclareRecordDetailFormParam, TaxDeclareRecordDetailFormDTO>(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<TaxDeclareRecordDetailSaveParam, String>(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<TaxDeclareRecordDetailSaveParam, String>(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<Long, TaxDeclareRecordDetailFormDTO>(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<Long, String>(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<TaxDeclarationValueListQueryParam, PageInfo>(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<AbnormalEmployeeListQueryParam, PageInfo<AbnormalEmployeeListDTO>>(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<AbnormalEmployeeListQueryParam, PageInfo<AbnormalEmployeeListDTO>>(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<AbnormalEmployeeListQueryParam, PageInfo<FailEmployeeListDTO>>(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<DownloadTemplateParam, Map<String, Object>>(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<DownloadTemplateParam, Map<String, Object>>(user).run(getTaxDeclareRecordWrapper(user)::importData, importParam);
|
|
}
|
|
|
|
}
|