导出申报表明细

This commit is contained in:
钱涛 2023-12-20 17:21:46 +08:00
parent d9c952e80c
commit c581c8d74d
7 changed files with 490 additions and 272 deletions

View File

@ -19,6 +19,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import dm.jdbc.util.IdGenerator; import dm.jdbc.util.IdGenerator;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -63,8 +64,7 @@ public class TaxDeclarationCommon implements TaxDeclarationStrategy {
SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap() SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap()
.get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex()); .get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex());
List<SalaryAcctResultPO> salaryAcctResultValue = salaryAcctResultValueMap.get(lastSalaryAcctEmployee.getId()); List<SalaryAcctResultPO> salaryAcctResultValue = salaryAcctResultValueMap.get(lastSalaryAcctEmployee.getId());
String defaultValue = Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0" : ""; String value = "";
String value = defaultValue;
if (salarySobTaxReportRule != null && salaryAcctResultValue != null) { if (salarySobTaxReportRule != null && salaryAcctResultValue != null) {
value = salaryAcctResultValue.stream() value = salaryAcctResultValue.stream()
.filter(result -> result.getSalaryItemId().equals(salarySobTaxReportRule.getSalaryItemId())) .filter(result -> result.getSalaryItemId().equals(salarySobTaxReportRule.getSalaryItemId()))
@ -72,6 +72,7 @@ public class TaxDeclarationCommon implements TaxDeclarationStrategy {
.orElse(new SalaryAcctResultPO()) .orElse(new SalaryAcctResultPO())
.getResultValue(); .getResultValue();
} }
value = StringUtils.isNotBlank(value) ? value : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : "";
valueMap.put(taxReportColumn.getReportColumnDataIndex(), value); valueMap.put(taxReportColumn.getReportColumnDataIndex(), value);
} }
TaxDeclarationValuePO taxDeclarationValue = TaxDeclarationValuePO.builder() TaxDeclarationValuePO taxDeclarationValue = TaxDeclarationValuePO.builder()

View File

@ -1,13 +1,12 @@
package com.engine.salary.enums.salarysob; package com.engine.salary.enums.salarysob;
import com.engine.salary.enums.BaseEnum; import com.engine.salary.enums.BaseEnum;
import com.engine.salary.remote.tax.response.employee.GetDeclareTaxResultFeedbackResponse;
import com.engine.salary.util.excel.ExcelUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import java.util.Collection; import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/** /**
* 应税项目 * 应税项目
@ -20,19 +19,123 @@ import java.util.Objects;
public enum IncomeCategoryEnum implements BaseEnum<Integer> { public enum IncomeCategoryEnum implements BaseEnum<Integer> {
// todo 多语言 // todo 多语言
WAGES_AND_SALARIES(1, "0101", "正常工资薪金", 160487), WAGES_AND_SALARIES(1, "0101", "正常工资薪金", 160487) {
REMUNERATION_FOR_LABOR(4, "0400", "一般劳务报酬所得", 160488), @Override
ONETIME_ANNUAL_BONUS(2, "0103", "全年一次性奖金收入", 160489), public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
COMPENSATION_FOR_RETIRE(107, "0107", "内退一次性补偿金", 181936), List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getZcgzxj().getSscglb();
COMPENSATION_FOR_DISMISS(108, "0108", "解除劳动合同一次性补偿金", 181937), List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
INCOME_FOR_INDIVIDUAL_EQUITY_INCENTIVE(109, "0109", "个人股权激励收入", 181938), result.put(this.getDefaultLabel(), zhsdSheetData);
ANNUITY_RECEIPT(110, "0110", "年金领取", 181939), return result;
INCOME_FOR_INSURANCE_SALESMAN(402, "0402", "保险营销员佣金收入", 181940), }
INCOME_FOR_SECURITIES_BROKER(403, "0403", "证券经纪人佣金收入", 181942), },
REMUNERATION_FOR_OTHER_CONTINUOUS_LABOR(489, "0489", "其他连续劳务报酬所得", 181943), REMUNERATION_FOR_LABOR(4, "0400", "一般劳务报酬所得", 160488) {
REMUNERATION_FOR_OTHER_LABOR(499, "0499", "其他非连续劳务报酬所得", 175330), @Override
REMUNERATION_FOR_AUTHOR(500, "0500", "稿酬所得", 181944), public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
ROYALTIES(600, "0600", "特许权使用费所得", 181945), List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getLwbclb().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
ONETIME_ANNUAL_BONUS(2, "0103", "全年一次性奖金收入", 160489) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQnycxjjsslb().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
COMPENSATION_FOR_RETIRE(107, "0107", "内退一次性补偿金", 181936) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getNtycxbcjlb().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
COMPENSATION_FOR_DISMISS(108, "0108", "解除劳动合同一次性补偿金", 181937) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getJcldhtycxbcjlb().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
INCOME_FOR_INDIVIDUAL_EQUITY_INCENTIVE(109, "0109", "个人股权激励收入", 181938) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getGrgqjl().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
ANNUITY_RECEIPT(110, "0110", "年金领取", 181939) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQynj().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
INCOME_FOR_INSURANCE_SALESMAN(402, "0402", "保险营销员佣金收入", 181940) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getBxyxy().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
INCOME_FOR_SECURITIES_BROKER(403, "0403", "证券经纪人佣金收入", 181942) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getZqjjr().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
REMUNERATION_FOR_OTHER_CONTINUOUS_LABOR(489, "0489", "其他连续劳务报酬所得", 181943) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQtlxlwbc().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
REMUNERATION_FOR_OTHER_LABOR(499, "0499", "其他非连续劳务报酬所得", 175330) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQtflxlwbc().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
REMUNERATION_FOR_AUTHOR(500, "0500", "稿酬所得", 181944) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getGcsdlb().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
ROYALTIES(600, "0600", "特许权使用费所得", 181945) {
@Override
public Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) {
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getTxq().getSscglb();
List<List<Object>> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd);
result.put(this.getDefaultLabel(), zhsdSheetData);
return result;
}
},
; ;
@ -51,6 +154,8 @@ public enum IncomeCategoryEnum implements BaseEnum<Integer> {
this.labelId = labelId; this.labelId = labelId;
} }
public abstract Map<String, List<List<Object>>> parseGetDeclareTaxResultFeedbackResponse(Map<String, List<List<Object>>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse);
@Override @Override
public Integer getValue() { public Integer getValue() {
return value; return value;
@ -79,6 +184,7 @@ public enum IncomeCategoryEnum implements BaseEnum<Integer> {
} }
return null; return null;
} }
public static List<IncomeCategoryEnum> parseByValue(Collection<Integer> values) { public static List<IncomeCategoryEnum> parseByValue(Collection<Integer> values) {
if (CollectionUtils.isEmpty(values)) { if (CollectionUtils.isEmpty(values)) {
return Collections.emptyList(); return Collections.emptyList();

View File

@ -58,10 +58,11 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse {
// * 限售股所得 必填 见限售股所得计算结果 // * 限售股所得 必填 见限售股所得计算结果
// */ // */
// private 对象 xsgsd; // private 对象 xsgsd;
// /**
// * 人员申报失败列表 必填 参考人员代报结果对象 /**
// */ * 人员申报失败列表 必填 参考人员代报结果对象
// private 数组 rysbsblb; */
private List<rydbjgdx> rysbsblb;
@Data @Data
public static class zhsd { public static class zhsd {
@ -73,66 +74,66 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse {
* 正常工资薪金算税结果对象 参考综合所得算税结果对象 * 正常工资薪金算税结果对象 参考综合所得算税结果对象
*/ */
private zcgzxj zcgzxj; private zcgzxj zcgzxj;
// /** /**
// * 全年一次性奖金收入算税结果对象 参考综合所得算税结果对象 * 全年一次性奖金收入算税结果对象 参考综合所得算税结果对象
// */ */
// private 对象 qnycxjjsslb; private zcgzxj qnycxjjsslb;
// /** /**
// * 稿酬所得算税结果对象 参考综合所得算税结果对象 * 稿酬所得算税结果对象 参考综合所得算税结果对象
// */ */
// private 对象 gcsdlb; private zcgzxj gcsdlb;
// /** /**
// * 一般劳务报酬算税结果对象 参考综合所得算税结果对象 * 一般劳务报酬算税结果对象 参考综合所得算税结果对象
// */ */
// private 对象 lwbclb; private zcgzxj lwbclb;
// /** /**
// * 解除劳动合同一次性补偿金列表 参考综合所得算税结果对象 * 解除劳动合同一次性补偿金列表 参考综合所得算税结果对象
// */ */
// private 对象 jcldhtycxbcjlb; private zcgzxj jcldhtycxbcjlb;
// /** /**
// * 保险营销员薪金算税结果对象 参考综合所得算税结果对象 * 保险营销员薪金算税结果对象 参考综合所得算税结果对象
// */ */
// private 对象 bxyxy; private zcgzxj bxyxy;
// /** /**
// * 证券经纪人薪金算税结果对象 参考综合所得算税结果对象 * 证券经纪人薪金算税结果对象 参考综合所得算税结果对象
// */ */
// private 对象 zqjjr; private zcgzxj zqjjr;
// /** /**
// * 特许权算税结果对象 参考综合所得算税结果对象 * 特许权算税结果对象 参考综合所得算税结果对象
// */ */
// private 对象 txq; private zcgzxj txq;
// /** /**
// * 个人股权激励结果对象 参考综合所得算税结果对象 * 个人股权激励结果对象 参考综合所得算税结果对象
// */ */
// private 对象 grgqjl; private zcgzxj grgqjl;
// /** /**
// * 企业年金结果对象 参考综合所得算税结果对象 * 企业年金结果对象 参考综合所得算税结果对象
// */ */
// private 对象 qynj; private zcgzxj qynj;
// /** /**
// * 内退一次性补偿金 参考综合所得算税结果对象 * 内退一次性补偿金 参考综合所得算税结果对象
// */ */
// private 对象 ntycxbcjlb; private zcgzxj ntycxbcjlb;
// /** /**
// * 其他连续劳务报酬 参考综合所得算税结果对象 * 其他连续劳务报酬 参考综合所得算税结果对象
// */ */
// private 对象 qtlxlwbc; private zcgzxj qtlxlwbc;
// /** /**
// * 其他非连续劳务报酬 参考综合所得算税结果对象 * 其他非连续劳务报酬 参考综合所得算税结果对象
// */ */
// private 对象 qtflxlwbc; private zcgzxj qtflxlwbc;
// /** /**
// * 提前退休一次性补贴 参考综合所得算税结果对象 * 提前退休一次性补贴 参考综合所得算税结果对象
// */ */
// private 对象 tqtxycxbt; private zcgzxj tqtxycxbt;
// /** /**
// * 央企负责人绩效薪金延期兑现收入和任期奖励 参考综合所得算税结果对象 * 央企负责人绩效薪金延期兑现收入和任期奖励 参考综合所得算税结果对象
// */ */
// private 对象 yqfzrsrhjl; private zcgzxj yqfzrsrhjl;
// /** /**
// * 法律援助劳务报酬 参考综合所得算税结果对象 * 法律援助劳务报酬 参考综合所得算税结果对象
// */ */
// private 对象 flyzlwbclb; private zcgzxj flyzlwbclb;
/** /**
@ -234,7 +235,6 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse {
/** /**
* 是否明细申报 必填 是或者否 * 是否明细申报 必填 是或者否
*/ */
@SalaryTableColumn(text = "是否明细申报", width = "10%", column = "sfmxsb")
private String sfmxsb; private String sfmxsb;
/** /**
* 姓名 必填null 如果是汇总申报返回空 * 姓名 必填null 如果是汇总申报返回空
@ -264,133 +264,143 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse {
/** /**
* 当期收入额 必填 不填写默认为0 * 当期收入额 必填 不填写默认为0
*/ */
@SalaryTableColumn(text = "当期收入额", width = "10%", column = "sre") @SalaryTableColumn(text = "本期收入", width = "10%", column = "sre")
private BigDecimal sre; private BigDecimal sre;
/** /**
* 当期免税收入 必填null * 当期免税收入 必填null
*/ */
@SalaryTableColumn(text = "期免税收入", width = "10%", column = "mssd") @SalaryTableColumn(text = "期免税收入", width = "10%", column = "mssd")
private BigDecimal mssd; private BigDecimal mssd;
/** /**
* 基本养老保险 必填null * 基本养老保险 必填null
*/ */
@SalaryTableColumn(text = "基本养老保险", width = "10%", column = "jbylaobxf") @SalaryTableColumn(text = "本期基本养老保险", width = "10%", column = "jbylaobxf")
private BigDecimal jbylaobxf; private BigDecimal jbylaobxf;
/** /**
* 基本医疗保险 必填null * 基本医疗保险 必填null
*/ */
@SalaryTableColumn(text = "基本医疗保险", width = "10%", column = "jbylbxf") @SalaryTableColumn(text = "本期基本医疗保险", width = "10%", column = "jbylbxf")
private BigDecimal jbylbxf; private BigDecimal jbylbxf;
/** /**
* 失业保险 必填null * 失业保险 必填null
*/ */
@SalaryTableColumn(text = "失业保险", width = "10%", column = "sybxf") @SalaryTableColumn(text = "本期失业保险", width = "10%", column = "sybxf")
private BigDecimal sybxf; private BigDecimal sybxf;
/** /**
* 住房公积金 必填null * 住房公积金 必填null
*/ */
@SalaryTableColumn(text = "住房公积金", width = "10%", column = "zfgjj") @SalaryTableColumn(text = "本期住房公积金", width = "10%", column = "zfgjj")
private BigDecimal 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 * 年金 必填null
*/ */
@SalaryTableColumn(text = "年金", width = "10%", column = "nj") @SalaryTableColumn(text = "本期企业(职业)年金", width = "10%", column = "nj")
private BigDecimal nj; private BigDecimal nj;
/** /**
* 商业健康保险 必填null * 商业健康保险 必填null
*/ */
@SalaryTableColumn(text = "商业健康保险", width = "10%", column = "syjkbx") @SalaryTableColumn(text = "本期商业健康保险费", width = "10%", column = "syjkbx")
private BigDecimal syjkbx; private BigDecimal syjkbx;
/** /**
* 税延养老保险 必填null * 税延养老保险 必填null
*/ */
@SalaryTableColumn(text = "税延养老保险", width = "10%", column = "syylbx") @SalaryTableColumn(text = "本期税延养老保险费", width = "10%", column = "syylbx")
private BigDecimal syylbx; private BigDecimal syylbx;
/** /**
* 其他 必填null 按法律规定可以在税前扣除的项目 * 其他 必填null 按法律规定可以在税前扣除的项目
*/ */
@SalaryTableColumn(text = "其他", width = "10%", column = "qt") @SalaryTableColumn(text = "本期其他扣除(其他)", width = "10%", column = "qt")
private BigDecimal qt; private BigDecimal qt;
/** /**
* 准予扣除的捐赠 必填null * 累计收入额 必填null
*/ */
@SalaryTableColumn(text = "准予扣除的捐赠", width = "10%", column = "zykcjze") @SalaryTableColumn(text = "累计收入额", width = "10%", column = "ljsre")
private BigDecimal zykcjze; private BigDecimal ljsre;
/** /**
* 减免税 必填null * 累计免税收入额 必填null
*/ */
@SalaryTableColumn(text = "减免税额", width = "10%", column = "jmse") @SalaryTableColumn(text = "累计免税收入", width = "10%", column = "ljmssd")
private BigDecimal jmse; private BigDecimal ljmssd;
/** /**
* 备注 必填null * 累计减除费用额 必填null 正常工资薪金累计减除费用 对应保险营销员证券经纪人累计费用
*/ */
@SalaryTableColumn(text = "备注", width = "10%", column = "bz") @SalaryTableColumn(text = "累计减除费用", width = "10%", column = "ljjcfye")
private String bz; private BigDecimal ljjcfye;
/** /**
* 减除费用 必填null 正常工资薪金的减除费用 对应保险营销员证券经纪人的费用 * 累计专项扣除额 必填null 三险一金合计
*/ */
@SalaryTableColumn(text = "减除费用", width = "10%", column = "jcfy") @SalaryTableColumn(text = "累计专项扣除", width = "10%", column = "ljzxkce")
private BigDecimal jcfy; private BigDecimal ljzxkce;
/** /**
* 其他扣除合计 必填null * 累计子女教育支出 必填null
*/ */
@SalaryTableColumn(text = "其他扣除合计", width = "10%", column = "qtckhj") @SalaryTableColumn(text = "累计子女教育支出扣除", width = "10%", column = "ljznjyzc")
private BigDecimal qtckhj; private BigDecimal ljznjyzc;
/** /**
* 应纳税所得额 必填null 正常工资薪金返回Null * 累计继续教育支出 必填null
*/ */
@SalaryTableColumn(text = "应纳税所得额", width = "10%", column = "ynssde") @SalaryTableColumn(text = "累计继续教育支出扣除", width = "10%", column = "ljjxjyzc")
private BigDecimal ynssde; private BigDecimal ljjxjyzc;
/** /**
* 应纳税额 必填null 正常工资薪金返回Null * 累计非学历继续教育支持 必填null
*/ */
@SalaryTableColumn(text = "应纳税额", width = "10%", column = "ynse") private BigDecimal ljfxljxjyzc;
private BigDecimal ynse;
/** /**
* 已缴税额 必填null 正常工资薪金返回Null * 累计学历继续教育支持 必填null
*/ */
@SalaryTableColumn(text = "已缴税额", width = "10%", column = "ykjse") private BigDecimal ljxljxjyzc;
private BigDecimal ykjse;
/** /**
* 应扣缴税额 必填null 正常工资薪金返回Null * 累计住房租金支出 必填null
*/ */
@SalaryTableColumn(text = "应扣缴税额", width = "10%", column = "yingkjse") @SalaryTableColumn(text = "累计住房租金支出扣除", width = "10%", column = "ljzfzjzc")
private BigDecimal yingkjse; 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 = "ljgrylj")
private BigDecimal ljgrylj;
/**
* 累计其他扣除额 必填null
*/
@SalaryTableColumn(text = "累计其他扣除", width = "10%", column = "ljqtkce")
private BigDecimal ljqtkce;
/**
* 累计准予扣除的捐赠额 必填null
*/
@SalaryTableColumn(text = "累计准予扣除的捐赠", width = "10%", column = "ljzykcjze")
private BigDecimal ljzykcjze;
/**
* 累计应纳税所得额 必填null
*/
@SalaryTableColumn(text = "累计应纳税所得额", width = "10%", column = "ljynssde")
private BigDecimal ljynssde;
/** /**
* 税率 必填null * 税率 必填null
*/ */
@ -401,81 +411,19 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse {
*/ */
@SalaryTableColumn(text = "速算扣除数", width = "10%", column = "sskcs") @SalaryTableColumn(text = "速算扣除数", width = "10%", column = "sskcs")
private BigDecimal 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 * 累计应纳税额 必填null
*/ */
@SalaryTableColumn(text = "累计应纳税额", width = "10%", column = "ljynse") @SalaryTableColumn(text = "累计应纳税额", width = "10%", column = "ljynse")
private BigDecimal ljynse; private BigDecimal ljynse;
/**
* 累计减免税额 必填null
*/
@SalaryTableColumn(text = "累计减免税额", width = "10%", column = "ljjmse")
private BigDecimal ljjmse;
/** /**
* 累计应扣缴税额 必填null 累计应扣缴税额 = 累计应纳税额 - 累计减免税额 * 累计应扣缴税额 必填null 累计应扣缴税额 = 累计应纳税额 - 累计减免税额
*/ */
@ -487,59 +435,114 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse {
@SalaryTableColumn(text = "累计已缴税额", width = "10%", column = "ljykjse") @SalaryTableColumn(text = "累计已缴税额", width = "10%", column = "ljykjse")
private BigDecimal ljykjse; private BigDecimal ljykjse;
/** /**
* 累计子女教育支出 必填null * 已缴税额 必填null 正常工资薪金返回Null
*/ */
@SalaryTableColumn(text = "累计子女教育支出", width = "10%", column = "ljznjyzc") @SalaryTableColumn(text = "已缴税额", width = "10%", column = "ykjse")
private BigDecimal ljznjyzc; private BigDecimal ykjse;
/** /**
* 累计继续教育支出 必填null * 累计专项附加扣除额 必填null 专项附加合计
*/ */
@SalaryTableColumn(text = "累计继续教育支出", width = "10%", column = "ljjxjyzc") @SalaryTableColumn(text = "累计专项附加扣除额", width = "10%", column = "ljzxfjkce")
private BigDecimal ljjxjyzc; private BigDecimal ljzxfjkce;
/** /**
* 累计非学历继续教育支持 必填null * 应补退税额 必填null 应补退税额=累计应扣缴税额-累计已缴税额
*/ */
@SalaryTableColumn(text = "累计非学历继续教育支持", width = "10%", column = "ljfxljxjyzc") @SalaryTableColumn(text = "应补退税额", width = "10%", column = "ybtse")
private BigDecimal ljfxljxjyzc; private BigDecimal ybtse;
/** /**
* 累计学历继续教育支持 必填null * 备注 必填null
*/ */
@SalaryTableColumn(text = "累计学历继续教育支持", width = "10%", column = "ljxljxjyzc") @SalaryTableColumn(text = "备注", width = "10%", column = "bz")
private BigDecimal ljxljxjyzc; private String bz;
/** /**
* 累计住房租金支出 必填null * 子女教育支出 必填null
*/ */
@SalaryTableColumn(text = "累计住房租金支出", width = "10%", column = "ljzfzjzc") private BigDecimal znjyzc;
private BigDecimal ljzfzjzc;
/** /**
* 累计房屋贷款支出 必填null * 赡养老人支出 必填null
*/ */
@SalaryTableColumn(text = "累计房屋贷款支出", width = "10%", column = "ljzfdklxzc") private BigDecimal sylrzc;
private BigDecimal ljzfdklxzc;
/** /**
* 累计赡养老人支出 必填null * 住房贷款利息支出 必填null
*/ */
@SalaryTableColumn(text = "累计赡养老人支出", width = "10%", column = "ljsylrzc") private BigDecimal zfdklxzc;
private BigDecimal ljsylrzc;
/** /**
* 累计3岁以下婴幼儿照护支出 必填null * 住房租金支出 必填null
*/ */
@SalaryTableColumn(text = "累计3岁以下婴幼儿照护支出", width = "10%", column = "ljyyezhzc") private BigDecimal zfzjzc;
private BigDecimal ljyyezhzc;
/** /**
* 累计准予扣除的捐赠额 必填null * 继续教育支出 必填null
*/ */
@SalaryTableColumn(text = "累计准予扣除的捐赠额", width = "10%", column = "ljzykcjze") private BigDecimal jxjyzc;
private BigDecimal ljzykcjze;
/** /**
* 累计个人养老金 必填null * 非学历继续教育支出 必填null
*/ */
@SalaryTableColumn(text = "累计个人养老金", width = "10%", column = "ljgrylj") private BigDecimal fxljxjyzc;
private BigDecimal ljgrylj; /**
* 3岁以下婴幼儿照护支出 必填null
*/
private BigDecimal yyezhzc;
/**
* 准予扣除的捐赠额 必填null
*/
private BigDecimal zykcjze;
/**
* 减免税额 必填null
*/
private BigDecimal jmse;
/**
* 减除费用 必填null 正常工资薪金的减除费用 对应保险营销员证券经纪人的费用
*/
private BigDecimal jcfy;
/**
* 其他扣除合计 必填null
*/
private BigDecimal qtckhj;
/**
* 应纳税所得额 必填null 正常工资薪金返回Null
*/
private BigDecimal ynssde;
/**
* 应纳税额 必填null 正常工资薪金返回Null
*/
private BigDecimal ynse;
/**
* 应扣缴税额 必填null 正常工资薪金返回Null
*/
private BigDecimal yingkjse;
/**
* 所得项目名称 必填 正常工资薪金全年一次性奖金收入稿酬所得劳务报酬
*/
private String sdxm;
/**
* 累计月减除费用 必填null 保险营销员证券经纪人其他连续劳务报酬的减除费用
*/
private BigDecimal ljyjcfy;
/**
* 允许扣除税费 必填null 保险营销员证券经纪人
*/
private BigDecimal yxkcsf;
/**
* 展业成本 必填null 保险营销员证券经纪人
*/
private BigDecimal zycb;
/**
* 月减除费用 必填null 保险营销员证券经纪人其他连续劳务报酬的减除费用
*/
private BigDecimal yjcfy;
/** /**
* 累计个人养老金校验码 必填null * 累计个人养老金校验码 必填null
*/ */
@SalaryTableColumn(text = "累计个人养老金校验码", width = "10%", column = "ljgryljjym")
private String ljgryljjym; private String ljgryljjym;
/** /**
* 企业上月是否已申报 必填null 仅在两个月算税场景时使用当前月分为N月 * 企业上月是否已申报 必填null 仅在两个月算税场景时使用当前月分为N月
@ -547,34 +550,28 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse {
* 1表示N-1月上月已申报 * 1表示N-1月上月已申报
* 2表示N-2月上上个月未申报 * 2表示N-2月上上个月未申报
*/ */
@SalaryTableColumn(text = "企业上月是否已申报", width = "10%", column = "qysysfysb")
private String qysysfysb; private String qysysfysb;
/** /**
* 员工在税局累计已扣缴的税额 必填null 当前月分为N,如果N-1上月已申报则返回N-1月员工在税局累计已扣缴的税额; * 员工在税局累计已扣缴的税额 必填null 当前月分为N,如果N-1上月已申报则返回N-1月员工在税局累计已扣缴的税额;
* 如果N-1月未申报则返回N-2月工在税局累计已扣缴的税额; * 如果N-1月未申报则返回N-2月工在税局累计已扣缴的税额;
*/ */
@SalaryTableColumn(text = "员工在税局累计已扣缴的税额", width = "10%", column = "ygzsjljykjse")
private BigDecimal ygzsjljykjse; private BigDecimal ygzsjljykjse;
/** /**
* 本月已累计扣除税额 必填null 针对一月多次算税的场景字段 * 本月已累计扣除税额 必填null 针对一月多次算税的场景字段
*/ */
@SalaryTableColumn(text = "本月已累计扣除税额", width = "10%", column = "byyljkjse")
private BigDecimal byyljkjse; private BigDecimal byyljkjse;
/** /**
* 本次应扣缴税额 必填null 针对一月多次算税的场景字段本次应扣缴税额=本月应扣缴税额-本月已累计税额 * 本次应扣缴税额 必填null 针对一月多次算税的场景字段本次应扣缴税额=本月应扣缴税额-本月已累计税额
*/ */
@SalaryTableColumn(text = "本次应扣缴税额", width = "10%", column = "bcykjse")
private BigDecimal bcykjse; private BigDecimal bcykjse;
/** /**
* 分摊年度数 必填null * 分摊年度数 必填null
*/ */
@SalaryTableColumn(text = "分摊年度数", width = "10%", column = "ftnds")
private Integer ftnds; private Integer ftnds;
/** /**
* 年减除费用 必填null 默认为60000 * 年减除费用 必填null 默认为60000
*/ */
@SalaryTableColumn(text = "年减除费用", width = "10%", column = "njcfy")
private BigDecimal njcfy; private BigDecimal njcfy;
} }
@ -622,6 +619,44 @@ public class GetDeclareTaxResultFeedbackResponse extends BaseResponse {
} }
/**
* 4.4.1.3.1.1人员代报结果对象
*/
@Data
public static class rydbjgdx {
/**
* 人员ID
*/
private Integer ygid;
/**
* 人员名称
*/
private String xm;
/**
* 证件类型 见证件类型字典
*/
private String zzlx;
/**
* 证件号码
*/
private String zzhm;
/**
* 错误码
*/
private String cwm;
/**
* 错误信息
*/
private String cwxx;
/**
* 所得税的code
*/
private String sdxmdm;
/**
* 所得税的名称
*/
private String sdxmmc;
}
} }

View File

@ -23,6 +23,8 @@ public interface TaxDeclarationService {
*/ */
List<TaxDeclarationPO> listByTaxCycleAndTaxAgentIds(YearMonth salaryMonth, Collection<Long> taxAgentIds); List<TaxDeclarationPO> listByTaxCycleAndTaxAgentIds(YearMonth salaryMonth, Collection<Long> taxAgentIds);
List<TaxDeclarationPO> listByTaxDeclareRecordId(Long taxDeclareRecordId);
PageInfo<TaxDeclarationPO> listPageByParam(TaxDeclarationListQueryParam queryParam); PageInfo<TaxDeclarationPO> listPageByParam(TaxDeclarationListQueryParam queryParam);
List<TaxAgentPO> countByTaxDeclarationId(Collection<Long> taxAgentIds); List<TaxAgentPO> countByTaxDeclarationId(Collection<Long> taxAgentIds);
@ -33,7 +35,6 @@ public interface TaxDeclarationService {
/** /**
* 删除个税申报表 * 删除个税申报表
*
*/ */
void delete(SalaryAcctRecordPO salaryAcctRecordPO); void delete(SalaryAcctRecordPO salaryAcctRecordPO);
@ -48,6 +49,7 @@ public interface TaxDeclarationService {
/** /**
* 撤回个税申报单 * 撤回个税申报单
*
* @param taxDeclarationId * @param taxDeclarationId
*/ */
void withDrawTaxDeclaration(Long taxDeclarationId); void withDrawTaxDeclaration(Long taxDeclarationId);

View File

@ -94,6 +94,15 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration
return taxDeclarationPOS; return taxDeclarationPOS;
} }
@Override
public List<TaxDeclarationPO> listByTaxDeclareRecordId(Long taxDeclareRecordId) {
if (Objects.isNull(taxDeclareRecordId)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误"));
}
TaxDeclarationPO po = TaxDeclarationPO.builder().taxDeclareRecordId(taxDeclareRecordId).build();
return getTaxDeclarationMapper().listSome(po);
}
@Override @Override
public PageInfo<TaxDeclarationPO> listPageByParam(TaxDeclarationListQueryParam queryParam) { public PageInfo<TaxDeclarationPO> listPageByParam(TaxDeclarationListQueryParam queryParam) {
long currentEmployeeId = user.getUID(); long currentEmployeeId = user.getUID();
@ -205,7 +214,7 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration
// 无薪资核算结果不允许生成个税申报表 // 无薪资核算结果不允许生成个税申报表
if (CollectionUtils.isEmpty(salaryAcctResultPOS)) { if (CollectionUtils.isEmpty(salaryAcctResultPOS)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110093, "{0}无可申报数据") throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(110093, "{0}无可申报数据")
.replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth()))); .replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth())));
} }
Set<Long> salaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctResultPOS, SalaryAcctResultPO::getSalaryAcctRecordId); Set<Long> salaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctResultPOS, SalaryAcctResultPO::getSalaryAcctRecordId);
@ -214,14 +223,14 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration
boolean notArchived = salaryAcctRecordPOS.stream().anyMatch(salaryAcctRecordPO -> Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())); boolean notArchived = salaryAcctRecordPOS.stream().anyMatch(salaryAcctRecordPO -> Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()));
if (notArchived) { if (notArchived) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98875, "{0}有未归档数据,请全部归档后再申报") throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98875, "{0}有未归档数据,请全部归档后再申报")
.replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth()))); .replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth())));
} }
// 如果当前薪资所属月下存在不同的税款所属期属于异常业务场景不允许生成个税申报表 // 如果当前薪资所属月下存在不同的税款所属期属于异常业务场景不允许生成个税申报表
Date taxCycle = salaryAcctRecordPOS.get(0).getTaxCycle(); Date taxCycle = salaryAcctRecordPOS.get(0).getTaxCycle();
boolean differentTaxCycle = salaryAcctRecordPOS.stream().anyMatch(salaryAcctRecordPO -> salaryAcctRecordPO.getTaxCycle().compareTo(taxCycle) != 0); boolean differentTaxCycle = salaryAcctRecordPOS.stream().anyMatch(salaryAcctRecordPO -> salaryAcctRecordPO.getTaxCycle().compareTo(taxCycle) != 0);
if (differentTaxCycle) { if (differentTaxCycle) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98876, "{0}存在不同的税款所属期,无法正常生成个税申报表,请调整账套设置,重新核算后再生成个税申报表") throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98876, "{0}存在不同的税款所属期,无法正常生成个税申报表,请调整账套设置,重新核算后再生成个税申报表")
.replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth()))); .replace("{0}", SalaryDateUtil.getFormatYearMonth(saveParam.getSalaryMonth())));
} }
// 查询薪资账套 // 查询薪资账套
Set<Long> salarySobIds = SalaryEntityUtil.properties(salaryAcctRecordPOS, SalaryAcctRecordPO::getSalarySobId); Set<Long> salarySobIds = SalaryEntityUtil.properties(salaryAcctRecordPOS, SalaryAcctRecordPO::getSalarySobId);

View File

@ -35,6 +35,7 @@ import com.engine.salary.entity.taxdeclaration.response.DeclareTaxResponse;
import com.engine.salary.entity.taxdeclaration.response.UpdateDeclareResponse; import com.engine.salary.entity.taxdeclaration.response.UpdateDeclareResponse;
import com.engine.salary.enums.employeedeclare.DeclareStatusEnum; import com.engine.salary.enums.employeedeclare.DeclareStatusEnum;
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.enums.sicategory.DeleteTypeEnum;
import com.engine.salary.enums.taxagent.TaxAgentTaxReturnStatusEnum; import com.engine.salary.enums.taxagent.TaxAgentTaxReturnStatusEnum;
import com.engine.salary.enums.taxdeclaration.*; import com.engine.salary.enums.taxdeclaration.*;
@ -942,12 +943,11 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId()); DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId());
GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(StringUtils.isEmpty(requestId) ? taxDeclareRecord.getRequestId() : requestId); GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(StringUtils.isEmpty(requestId) ? taxDeclareRecord.getRequestId() : requestId);
List<GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw> sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getZcgzxj().getSscglb();
// 需要导出的数据 Map<String, List<List<Object>>> map = new HashMap<>();
List<List<Object>> excelSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, sscglb); List<TaxDeclarationPO> list = getTaxDeclarationService(user).listByTaxDeclareRecordId(id);
list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e->e.parseGetDeclareTaxResultFeedbackResponse(map,declareTaxResultFeedbackResponse));
return ExcelUtil.genWorkbookV2(excelSheetData, "申报内置算税结果"); return ExcelUtil.genWorkbookV2(map);
} }

View File

@ -272,6 +272,71 @@ public class ExcelUtil {
return workbook; return workbook;
} }
public static XSSFWorkbook genWorkbookV2(Map<String, List<List<Object>>> map) {
XSSFWorkbook workbook = new XSSFWorkbook();
map.entrySet().forEach(en->{
String sheetName = en.getKey();
List<List<Object>> rowList = en.getValue();
// 设置title样式
XSSFCellStyle titleCellStyle = workbook.createCellStyle();
XSSFFont titleFont = workbook.createFont();
titleFont.setFontName("仿宋");
titleFont.setFontHeightInPoints((short) 15);
titleCellStyle.setFont(titleFont);
titleCellStyle.setAlignment(HorizontalAlignment.CENTER);
titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//背景色
titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 设置主体样式
XSSFCellStyle cellStyle = workbook.createCellStyle();
XSSFFont font = workbook.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 10);// 设置字体大小
cellStyle.setFont(font);// 选择需要用到的字体格式
cellStyle.setWrapText(true);
XSSFSheet sheet = workbook.createSheet(sheetName);
//自适应宽度
sheet.autoSizeColumn(0, true);
//默认列宽
sheet.setDefaultColumnWidth(20);
//默认行高
sheet.setDefaultRowHeightInPoints(18);
for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) {
List<Object> infoList = rowList.get(rowIndex);
XSSFRow row = sheet.createRow(rowIndex);
for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) {
XSSFCell cell = row.createCell(cellIndex);
if (rowIndex == 0) {
cell.setCellStyle(titleCellStyle);
} else {
cell.setCellStyle(cellStyle);
}
Object o = infoList.get(cellIndex);
if (o instanceof String) {
cell.setCellType(CellType.STRING);
cell.setCellValue(String.valueOf(o));
} else if (o instanceof Boolean) {
cell.setCellType(CellType.BOOLEAN);
cell.setCellValue(String.valueOf(o));
} else if (o instanceof Date) {
cell.setCellType(CellType.STRING);
cell.setCellValue(SalaryDateUtil.getFormatLocalDate((Date) o));
} else {
cell.setCellType(CellType.STRING);
cell.setCellValue(o == null ? "" : o.toString());
}
}
}
});
return workbook;
}
public static XSSFWorkbook genWorkbook(ExcelSheetData excelSheetData) { public static XSSFWorkbook genWorkbook(ExcelSheetData excelSheetData) {
List<List<Object>> list = new ArrayList<>(); List<List<Object>> list = new ArrayList<>();
list.add(excelSheetData.getHeaders()); list.add(excelSheetData.getHeaders());