导出申报明细

This commit is contained in:
钱涛 2023-12-08 18:15:56 +08:00
parent 942f6baa32
commit 82ec08bfd9
8 changed files with 628 additions and 476 deletions

View File

@ -1,7 +1,10 @@
package com.engine.salary.remote.tax.client;
import com.engine.salary.remote.tax.response.employee.GetDeclareTaxResultFeedbackResponse;
import com.engine.salary.util.HttpUtil;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.SingnatureData;
import lombok.extern.slf4j.Slf4j;
import java.util.Collections;
import java.util.HashMap;
@ -15,6 +18,7 @@ import java.util.Map;
* @author qiantao
* @version 1.0
**/
@Slf4j
public class DeclareClient extends TaxBaseClient{
public DeclareClient(Long taxAgentId) {
super(taxAgentId);
@ -25,7 +29,7 @@ public class DeclareClient extends TaxBaseClient{
* @param requestId·
* @return
*/
public Object getDeclareTaxResultFeedback(String requestId){
public GetDeclareTaxResultFeedbackResponse getDeclareTaxResultFeedback(String requestId){
// 供应商信息
String url = super.apiConfig.getHost() + "/gateway/iit/report/getDeclareTaxResultFeedback";
Map<String, String> params = new HashMap<>(1);
@ -33,9 +37,8 @@ public class DeclareClient extends TaxBaseClient{
Map<String, String> header = SingnatureData.initHeader(Collections.emptyMap(), apiConfig.getAppKey(), apiConfig.getAppSecret());
String res = HttpUtil.getRequest(url, header, params);
return res;
log.info("getDeclareTaxResultFeedback res --- {}", res);
return JsonUtil.parseObject(res, GetDeclareTaxResultFeedbackResponse.class);
}

View File

@ -1,9 +1,23 @@
package com.engine.salary.remote.tax.response.employee;
import com.engine.salary.annotation.SalaryTableColumn;
import com.engine.salary.entity.taxpayment.response.BaseResponse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.List;
public class GetDeclareTaxResultFeedbackResponse {
@Data
@EqualsAndHashCode(callSuper = true)
public class GetDeclareTaxResultFeedbackResponse extends BaseResponse {
/**
* 返回数据
*/
private Body body;
@Data
public static class Body {
/**
* 企业名称 必填
*/
@ -49,8 +63,8 @@ public class GetDeclareTaxResultFeedbackResponse {
// */
// private 数组 rysbsblb;
public class zhsd {
@Data
public static class zhsd {
/**
* 人员代代报失败列表 参考人员代报结果对象
*/
@ -124,7 +138,8 @@ public class GetDeclareTaxResultFeedbackResponse {
/**
* 人员代报结果对象
*/
public class rydbjgdx {
@Data
public static class rydbjgdx {
/**
* 姓名
*/
@ -163,7 +178,8 @@ public class GetDeclareTaxResultFeedbackResponse {
/**
* 综合所得算税结果对象
*/
public class zcgzxj {
@Data
public static class zcgzxj {
/**
* 综合算税成功列表 参考综合所得输出结果报文
*/
@ -213,254 +229,317 @@ public class GetDeclareTaxResultFeedbackResponse {
/**
* 综合所得输出结果报文
*/
public class zhsdscjgbw {
@Data
public static class zhsdscjgbw {
/**
* 是否明细申报 必填 是或者否
*/
@SalaryTableColumn(text = "是否明细申报", width = "10%", column = "sfmxsb")
private String sfmxsb;
/**
* 姓名 必填null 如果是汇总申报返回空
*/
@SalaryTableColumn(text = "姓名", width = "10%", column = "xm")
private String xm;
/**
* 证件类型 必填null 见证件类型字典
*/
@SalaryTableColumn(text = "证件类型", width = "10%", column = "zzlx")
private String zzlx;
/**
* 证件号码 必填null 如果是汇总申报返回空
*/
@SalaryTableColumn(text = "证件号码", width = "10%", column = "zzhm")
private String zzhm;
/**
* 任职受雇日期 必填 格式YYYY-MM-DD
*/
@SalaryTableColumn(text = "任职受雇日期", width = "10%", column = "rzsgrq")
private String rzsgrq;
/**
* 离职日期 必填 格式YYYY-MM-DD
*/
@SalaryTableColumn(text = "离职日期", width = "10%", column = "lzrq")
private String lzrq;
/**
* 当期收入额 必填 不填写默认为0
*/
@SalaryTableColumn(text = "当期收入额", width = "10%", column = "sre")
private BigDecimal sre;
/**
* 当期免税收入 必填null
*/
@SalaryTableColumn(text = "当期免税收入", width = "10%", column = "mssd")
private BigDecimal mssd;
/**
* 基本养老保险 必填null
*/
@SalaryTableColumn(text = "基本养老保险", width = "10%", column = "jbylaobxf")
private BigDecimal jbylaobxf;
/**
* 基本医疗保险 必填null
*/
@SalaryTableColumn(text = "基本医疗保险", width = "10%", column = "jbylbxf")
private BigDecimal jbylbxf;
/**
* 失业保险 必填null
*/
@SalaryTableColumn(text = "失业保险", width = "10%", column = "sybxf")
private BigDecimal sybxf;
/**
* 住房公积金 必填null
*/
@SalaryTableColumn(text = "住房公积金", width = "10%", column = "zfgjj")
private BigDecimal zfgjj;
/**
* 子女教育支出 必填null
*/
@SalaryTableColumn(text = "子女教育支出", width = "10%", column = "znjyzc")
private BigDecimal znjyzc;
/**
* 赡养老人支出 必填null
*/
@SalaryTableColumn(text = "赡养老人支出", width = "10%", column = "sylrzc")
private BigDecimal sylrzc;
/**
* 住房贷款利息支出 必填null
*/
@SalaryTableColumn(text = "住房贷款利息支出", width = "10%", column = "zfdklxzc")
private BigDecimal zfdklxzc;
/**
* 住房租金支出 必填null
*/
@SalaryTableColumn(text = "住房租金支出", width = "10%", column = "zfzjzc")
private BigDecimal zfzjzc;
/**
* 继续教育支出 必填null
*/
@SalaryTableColumn(text = "继续教育支出", width = "10%", column = "jxjyzc")
private BigDecimal jxjyzc;
/**
* 非学历继续教育支出 必填null
*/
@SalaryTableColumn(text = "非学历继续教育支出", width = "10%", column = "fxljxjyzc")
private BigDecimal fxljxjyzc;
/**
* 3岁以下婴幼儿照护支出 必填null
*/
@SalaryTableColumn(text = "3岁以下婴幼儿照护支出", width = "10%", column = "yyezhzc")
private BigDecimal yyezhzc;
/**
* 年金 必填null
*/
@SalaryTableColumn(text = "年金", width = "10%", column = "nj")
private BigDecimal nj;
/**
* 商业健康保险 必填null
*/
@SalaryTableColumn(text = "商业健康保险", width = "10%", column = "syjkbx")
private BigDecimal syjkbx;
/**
* 税延养老保险 必填null
*/
@SalaryTableColumn(text = "税延养老保险", width = "10%", column = "syylbx")
private BigDecimal syylbx;
/**
* 其他 必填null 按法律规定可以在税前扣除的项目
*/
@SalaryTableColumn(text = "其他", width = "10%", column = "qt")
private BigDecimal qt;
/**
* 准予扣除的捐赠额 必填null
*/
@SalaryTableColumn(text = "准予扣除的捐赠额", width = "10%", column = "zykcjze")
private BigDecimal zykcjze;
/**
* 减免税额 必填null
*/
@SalaryTableColumn(text = "减免税额", width = "10%", column = "jmse")
private BigDecimal jmse;
/**
* 备注 必填null
*/
@SalaryTableColumn(text = "备注", width = "10%", column = "bz")
private String bz;
/**
* 减除费用 必填null 正常工资薪金的减除费用 对应保险营销员证券经纪人的费用
*/
@SalaryTableColumn(text = "减除费用", width = "10%", column = "jcfy")
private BigDecimal jcfy;
/**
* 其他扣除合计 必填null
*/
@SalaryTableColumn(text = "其他扣除合计", width = "10%", column = "qtckhj")
private BigDecimal qtckhj;
/**
* 应纳税所得额 必填null 正常工资薪金返回Null
*/
@SalaryTableColumn(text = "应纳税所得额", width = "10%", column = "ynssde")
private BigDecimal ynssde;
/**
* 应纳税额 必填null 正常工资薪金返回Null
*/
@SalaryTableColumn(text = "应纳税额", width = "10%", column = "ynse")
private BigDecimal ynse;
/**
* 已缴税额 必填null 正常工资薪金返回Null
*/
@SalaryTableColumn(text = "已缴税额", width = "10%", column = "ykjse")
private BigDecimal ykjse;
/**
* 应扣缴税额 必填null 正常工资薪金返回Null
*/
@SalaryTableColumn(text = "应扣缴税额", width = "10%", column = "yingkjse")
private BigDecimal yingkjse;
/**
* 税率 必填null
*/
@SalaryTableColumn(text = "税率", width = "10%", column = "sl")
private BigDecimal sl;
/**
* 速算扣除数 必填null
*/
@SalaryTableColumn(text = "速算扣除数", width = "10%", column = "sskcs")
private BigDecimal sskcs;
/**
* 所得项目名称 必填 正常工资薪金全年一次性奖金收入稿酬所得劳务报酬
*/
@SalaryTableColumn(text = "所得项目名称", width = "10%", column = "sdxm")
private String sdxm;
/**
* 应补退税额 必填null 应补退税额=累计应扣缴税额-累计已缴税额
*/
@SalaryTableColumn(text = "应补退税额", width = "10%", column = "ybtse")
private BigDecimal ybtse;
/**
* 累计收入额 必填null
*/
@SalaryTableColumn(text = "累计收入额", width = "10%", column = "ljsre")
private BigDecimal ljsre;
/**
* 累计免税收入额 必填null
*/
@SalaryTableColumn(text = "累计免税收入额", width = "10%", column = "ljmssd")
private BigDecimal ljmssd;
/**
* 累计专项扣除额 必填null 三险一金合计
*/
@SalaryTableColumn(text = "累计专项扣除额", width = "10%", column = "ljzxkce")
private BigDecimal ljzxkce;
/**
* 累计专项附加扣除额 必填null 专项附加合计
*/
@SalaryTableColumn(text = "累计专项附加扣除额", width = "10%", column = "ljzxfjkce")
private BigDecimal ljzxfjkce;
/**
* 累计其他扣除额 必填null
*/
@SalaryTableColumn(text = "累计其他扣除额", width = "10%", column = "ljqtkce")
private BigDecimal ljqtkce;
/**
* 累计减免税额 必填null
*/
@SalaryTableColumn(text = "累计减免税额", width = "10%", column = "ljjmse")
private BigDecimal ljjmse;
/**
* 累计减除费用额 必填null 正常工资薪金累计减除费用 对应保险营销员证券经纪人累计费用
*/
@SalaryTableColumn(text = "累计减除费用额", width = "10%", column = "ljjcfye")
private BigDecimal ljjcfye;
/**
* 累计月减除费用 必填null 保险营销员证券经纪人其他连续劳务报酬的减除费用
*/
@SalaryTableColumn(text = "累计月减除费用", width = "10%", column = "ljyjcfy")
private BigDecimal ljyjcfy;
/**
* 允许扣除税费 必填null 保险营销员证券经纪人
*/
@SalaryTableColumn(text = "允许扣除税费", width = "10%", column = "yxkcsf")
private BigDecimal yxkcsf;
/**
* 展业成本 必填null 保险营销员证券经纪人
*/
@SalaryTableColumn(text = "展业成本", width = "10%", column = "zycb")
private BigDecimal zycb;
/**
* 月减除费用 必填null 保险营销员证券经纪人其他连续劳务报酬的减除费用
*/
@SalaryTableColumn(text = "月减除费用", width = "10%", column = "yjcfy")
private BigDecimal yjcfy;
/**
* 累计应纳税所得额 必填null
*/
@SalaryTableColumn(text = "累计应纳税所得额", width = "10%", column = "ljynssde")
private BigDecimal ljynssde;
/**
* 累计应纳税额 必填null
*/
@SalaryTableColumn(text = "累计应纳税额", width = "10%", column = "ljynse")
private BigDecimal ljynse;
/**
* 累计应扣缴税额 必填null 累计应扣缴税额 = 累计应纳税额 - 累计减免税额
*/
@SalaryTableColumn(text = "累计应扣缴税额", width = "10%", column = "ljyingkjse")
private BigDecimal ljyingkjse;
/**
* 累计已缴税额 必填null
*/
@SalaryTableColumn(text = "累计已缴税额", width = "10%", column = "ljykjse")
private BigDecimal ljykjse;
/**
* 累计子女教育支出 必填null
*/
@SalaryTableColumn(text = "累计子女教育支出", width = "10%", column = "ljznjyzc")
private BigDecimal ljznjyzc;
/**
* 累计继续教育支出 必填null
*/
@SalaryTableColumn(text = "累计继续教育支出", width = "10%", column = "ljjxjyzc")
private BigDecimal ljjxjyzc;
/**
* 累计非学历继续教育支持 必填null
*/
@SalaryTableColumn(text = "累计非学历继续教育支持", width = "10%", column = "ljfxljxjyzc")
private BigDecimal ljfxljxjyzc;
/**
* 累计学历继续教育支持 必填null
*/
@SalaryTableColumn(text = "累计学历继续教育支持", width = "10%", column = "ljxljxjyzc")
private BigDecimal ljxljxjyzc;
/**
* 累计住房租金支出 必填null
*/
@SalaryTableColumn(text = "累计住房租金支出", width = "10%", column = "ljzfzjzc")
private BigDecimal ljzfzjzc;
/**
* 累计房屋贷款支出 必填null
*/
@SalaryTableColumn(text = "累计房屋贷款支出", width = "10%", column = "ljzfdklxzc")
private BigDecimal ljzfdklxzc;
/**
* 累计赡养老人支出 必填null
*/
@SalaryTableColumn(text = "累计赡养老人支出", width = "10%", column = "ljsylrzc")
private BigDecimal ljsylrzc;
/**
* 累计3岁以下婴幼儿照护支出 必填null
*/
@SalaryTableColumn(text = "累计3岁以下婴幼儿照护支出", width = "10%", column = "ljyyezhzc")
private BigDecimal ljyyezhzc;
/**
* 累计准予扣除的捐赠额 必填null
*/
@SalaryTableColumn(text = "累计准予扣除的捐赠额", width = "10%", column = "ljzykcjze")
private BigDecimal ljzykcjze;
/**
* 累计个人养老金 必填null
*/
@SalaryTableColumn(text = "累计个人养老金", width = "10%", column = "ljgrylj")
private BigDecimal ljgrylj;
/**
* 累计个人养老金校验码 必填null
*/
@SalaryTableColumn(text = "累计个人养老金校验码", width = "10%", column = "ljgryljjym")
private String ljgryljjym;
/**
* 企业上月是否已申报 必填null 仅在两个月算税场景时使用当前月分为N月
@ -468,28 +547,34 @@ public class GetDeclareTaxResultFeedbackResponse {
* 1表示N-1月上月已申报
* 2表示N-2月上上个月未申报
*/
@SalaryTableColumn(text = "企业上月是否已申报", width = "10%", column = "qysysfysb")
private String qysysfysb;
/**
* 员工在税局累计已扣缴的税额 必填null 当前月分为N,如果N-1上月已申报则返回N-1月员工在税局累计已扣缴的税额;
* 如果N-1月未申报则返回N-2月工在税局累计已扣缴的税额;
*/
@SalaryTableColumn(text = "员工在税局累计已扣缴的税额", width = "10%", column = "ygzsjljykjse")
private BigDecimal ygzsjljykjse;
/**
* 本月已累计扣除税额 必填null 针对一月多次算税的场景字段
*/
@SalaryTableColumn(text = "本月已累计扣除税额", width = "10%", column = "byyljkjse")
private BigDecimal byyljkjse;
/**
* 本次应扣缴税额 必填null 针对一月多次算税的场景字段本次应扣缴税额=本月应扣缴税额-本月已累计税额
*/
@SalaryTableColumn(text = "本次应扣缴税额", width = "10%", column = "bcykjse")
private BigDecimal bcykjse;
/**
* 分摊年度数 必填null
*/
@SalaryTableColumn(text = "分摊年度数", width = "10%", column = "ftnds")
private Integer ftnds;
/**
* 年减除费用 必填null 默认为60000
*/
@SalaryTableColumn(text = "年减除费用", width = "10%", column = "njcfy")
private BigDecimal njcfy;
}
@ -497,7 +582,8 @@ public class GetDeclareTaxResultFeedbackResponse {
/**
* 4.4.1.3.2算税失败原因对象
*/
public class sssbyydx {
@Data
public static class sssbyydx {
/**
* 人员ID
*/
@ -536,5 +622,7 @@ public class GetDeclareTaxResultFeedbackResponse {
}
}
}

View File

@ -7,6 +7,7 @@ import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam;
import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO;
import com.engine.salary.entity.taxdeclaration.po.TaxDeclareRecordPO;
import com.engine.salary.util.page.PageInfo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.util.Collection;
import java.util.Date;
@ -139,6 +140,7 @@ public interface TaxDeclareRecordService {
*/
Object getDeclareTaxResultFeedback(Long id);
XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id,String requestId);
/**
* 作废
*

View File

@ -2,7 +2,6 @@ package com.engine.salary.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.annotation.SalaryTableColumn;
import com.engine.salary.entity.employeedeclare.dto.EmployeeDeclareListDTO;
import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareListQueryParam;
import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO;
@ -10,18 +9,12 @@ import com.engine.salary.service.EmployeeDeclareExcelService;
import com.engine.salary.service.EmployeeDeclareService;
import com.engine.salary.service.SalaryEmployeeService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.excel.ExcelUtil;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.hrm.User;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @description: 人员报送人员导入导出
@ -115,7 +108,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee
// 转换成dto
List<EmployeeDeclareListDTO> dtoList = getEmployeeDeclareService(user).convert(employeeDeclares);
// 需要导出的数据
List<List<Object>> excelSheetData = getExcelSheetData(EmployeeDeclareListDTO.class, dtoList);
List<List<Object>> excelSheetData = ExcelUtil.getExcelSheetData(EmployeeDeclareListDTO.class, dtoList);
return ExcelUtil.genWorkbookV2(excelSheetData, "人员信息采集");
}
@ -213,20 +206,6 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee
// }
private <T> List<List<Object>> getExcelSheetData(Class<T> clazz, List<T> dtoList) {
// 导出的表头
Map<String, List<Object>> headerMap = getHeader(clazz);
// 导出的数据
List<List<Object>> rows = new ArrayList<>();
rows.add(headerMap.get("header"));
dtoList.forEach(dto -> {
Map<String, Object> map = JsonUtil.parseMap(dto, Object.class);
List<Object> row = Lists.newArrayListWithExpectedSize(headerMap.get("dataIndex").size());
headerMap.get("dataIndex").forEach(dataIndex -> row.add(map.get(dataIndex)));
rows.add(row);
});
return rows;
}
//
// @Transactional(rollbackFor = Exception.class)
// @BatchImportHandler("importEmployeeDeclare")
@ -605,24 +584,7 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee
// SalaryI18nUtil.getI18nLabel(employeeId, 156402, "是否扣除减除费用"));
// }
private <T> Map<String, List<Object>> getHeader(Class<T> clazz) {
Map<String, List<Object>> headerMap = new HashMap<>();
// 导出的表头
List<Object> headerList = Lists.newArrayList();
List<Object> dataIndexList = Lists.newArrayList();
Field[] declaredFields = clazz.getDeclaredFields();
for (Field declaredField : declaredFields) {
if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) {
continue;
}
SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class);
headerList.add(annotation.text());
dataIndexList.add(annotation.column());
}
headerMap.put("header", headerList);
headerMap.put("dataIndex", dataIndexList);
return headerMap;
}
// /**
// * 检查表头

View File

@ -41,10 +41,12 @@ import com.engine.salary.enums.taxdeclaration.*;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.taxdeclaration.TaxDeclareRecordMapper;
import com.engine.salary.remote.tax.client.DeclareClient;
import com.engine.salary.remote.tax.response.employee.GetDeclareTaxResultFeedbackResponse;
import com.engine.salary.service.*;
import com.engine.salary.service.factory.TaxPaymentServiceFactory;
import com.engine.salary.util.*;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.excel.ExcelUtil;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.google.common.collect.ImmutableMap;
@ -54,6 +56,7 @@ import dm.jdbc.util.IdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.transaction.annotation.Transactional;
import weaver.general.Util;
import weaver.hrm.User;
@ -924,6 +927,21 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
return declareClient.getDeclareTaxResultFeedback(taxDeclareRecord.getRequestId());
}
@Override
public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id, String requestId) {
TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id);
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord();
DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId());
GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(StringUtils.isEmpty(requestId) ? taxDeclareRecord.getRequestId() : requestId);
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getZcgzxj().getSscglb();
// 需要导出的数据
List<List<Object>> excelSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, sscglb);
return ExcelUtil.genWorkbookV2(excelSheetData, "申报内置算税结果");
}
@Override
public void updateDeclare(Long id) {

View File

@ -1,6 +1,9 @@
package com.engine.salary.util.excel;
import com.engine.salary.annotation.SalaryTableColumn;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.SalaryDateUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.FillPatternType;
@ -9,6 +12,7 @@ import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.*;
import java.awt.*;
import java.lang.reflect.Field;
import java.util.*;
import java.util.List;
@ -274,4 +278,40 @@ public class ExcelUtil {
list.addAll(excelSheetData.getRows());
return genWorkbookV2(list, excelSheetData.getSheetName());
}
public static <T> Map<String, List<Object>> getHeader(Class<T> clazz) {
Map<String, List<Object>> headerMap = new HashMap<>();
// 导出的表头
List<Object> headerList = Lists.newArrayList();
List<Object> dataIndexList = Lists.newArrayList();
Field[] declaredFields = clazz.getDeclaredFields();
for (Field declaredField : declaredFields) {
if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) {
continue;
}
SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class);
headerList.add(annotation.text());
dataIndexList.add(annotation.column());
}
headerMap.put("header", headerList);
headerMap.put("dataIndex", dataIndexList);
return headerMap;
}
public static <T> List<List<Object>> getExcelSheetData(Class<T> clazz, List<T> dtoList) {
// 导出的表头
Map<String, List<Object>> headerMap = getHeader(clazz);
// 导出的数据
List<List<Object>> rows = new ArrayList<>();
rows.add(headerMap.get("header"));
dtoList.forEach(dto -> {
Map<String, Object> map = JsonUtil.parseMap(dto, Object.class);
List<Object> row = Lists.newArrayListWithExpectedSize(headerMap.get("dataIndex").size());
headerMap.get("dataIndex").forEach(dataIndex -> row.add(map.get(dataIndex)));
rows.add(row);
});
return rows;
}
}

View File

@ -31,6 +31,7 @@ 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;
@ -216,6 +217,38 @@ public class TaxDeclarationController {
return new ResponseResult<Long, Object>(user).run(getTaxDeclareRecordWrapper(user)::getDeclareTaxResultFeedback, id);
}
/**
* 人员报送-导出全部人员
*
* @return
*/
@GET
@Path("/exportGetDeclareTaxResultFeedback")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response exportGetDeclareTaxResultFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id, @QueryParam(value = "requestId") String requestId) {
try {
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(id ,requestId);
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;
}
}
/**
* 作废

View File

@ -466,6 +466,11 @@ public class TaxDeclareRecordWrapper extends Service {
return getTaxDeclareRecordService(user).getDeclareTaxResultFeedback(id);
}
public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id,String requestId) {
return getTaxDeclareRecordService(user).exportGetDeclareTaxResultFeedback(id, requestId);
}
/**
* 作废
*
@ -654,4 +659,5 @@ public class TaxDeclareRecordWrapper extends Service {
public XSSFWorkbook exportEmployee4Fail(AbnormalEmployeeListQueryParam queryParam) {
return getTaxDeclarationExcelService(user).exportEmployee4Fail(queryParam);
}
}