diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java
new file mode 100644
index 000000000..7744819ba
--- /dev/null
+++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java
@@ -0,0 +1,64 @@
+package com.engine.salary.entity.taxdeclaration.param;
+
+import com.engine.salary.annotation.SalaryTableColumn;
+import com.engine.salary.annotation.TableTitle;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * 个税申报明细保存
+ *
Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+public class TaxDeclareRecordDetailSaveParam {
+
+ //主键id
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long id;
+
+ //个税申报记录id")
+ private Long taxDeclareRecordId;
+
+ //个税申报表id")
+ private Long taxDeclarationId;
+
+ //人员id
+ @JsonSerialize(using = ToStringSerializer.class)
+ private Long employeeId;
+ private Integer employeeType;
+
+ @SalaryTableColumn(
+ text = "工号", width = "10%", column = "jobNum"
+ )
+ @TableTitle(title ="工号",dataIndex = "jobNum",key = "jobNum")
+ private String jobNum;
+
+ @SalaryTableColumn(
+ text = "姓名", width = "10%", column = "username"
+ )
+ @TableTitle(title ="姓名",dataIndex = "username",key = "username")
+ private String username;
+
+ @SalaryTableColumn(
+ text = "证件类型", width = "10%", column = "cardType"
+ )
+ @TableTitle(title ="证件类型",dataIndex = "cardType",key = "cardType")
+ private String cardType;
+
+ @SalaryTableColumn(
+ text = "证件号码", width = "10%", column = "cardNum"
+ )
+ @TableTitle(title ="证件号码",dataIndex = "cardNum",key = "cardNum")
+ private String cardNum;
+
+ private Map taxReportColumnValues;
+
+
+}
diff --git a/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java b/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java
index 5e824dc48..a6591e714 100644
--- a/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java
+++ b/src/com/engine/salary/entity/taxdeclaration/po/TaxReportColumnPO.java
@@ -20,34 +20,34 @@ import java.util.Date;
@Builder
@AllArgsConstructor
@NoArgsConstructor
-//hrsa_tax_report_column")
+//hrsa_tax_report_column
public class TaxReportColumnPO {
- //name = "主键id")
+ //name = 主键id
private Long id;
- //name = "报表类型")
+ //name = 报表类型
private String taxReportType;
- //name = "所得项目")
+ //name = 所得项目
private String incomeCategory;
- //name = "申报表的列名")
+ //name = 申报表的列名
private String reportColumnName;
- //name = "申报表的列名多语言标签")
+ //name = 申报表的列名多语言标签
private Integer reportColumnLabel;
- //name = "申报表的列索引")
+ //name = 申报表的列索引
private String reportColumnDataIndex;
- //name = "数值类型")
+ //name = 数值类型
private String dataType;
- //name = "个税对接时的参数key")
+ //name = 个税对接时的参数key
private String requestParamKey;
- //name = "租户key", ignore = true)
+ //name = 租户key
private String tenantKey;
- //name = "创建人id", ignore = true)
+ //name = 创建人id
private Long creator;
- //name = "是否删除", ignore = true)
+ //name = 是否删除
private Integer deleteType;
- //name = "创建时间", ignore = true)
+ //name = 创建时间
private Date createTime;
- //name = "更新时间", ignore = true)
+ //name = 更新时间
private Date updateTime;
Collection ids;
diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java
index ac6829f00..23606e23e 100644
--- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java
+++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java
@@ -414,7 +414,15 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
// 薪资核算结果
Set salaryAcctEmployeeIdSet = SalaryEntityUtil.properties(incomeCategoryEntry.getValue(), SalaryAcctEmployeePO::getId);
List> resultValues = salaryAcctEmployeeIdSet.stream().map(salaryAcctResultValueMap::get).filter(Objects::nonNull).collect(Collectors.toList());
- TaxDeclareContext taxDeclareContext = new TaxDeclareContext().setSalaryAcctRecordMap(salaryAcctRecordMap).setSalaryAcctEmployees(incomeCategoryEntry.getValue()).setSalaryAcctResultValues(salaryAcctResultValues).setTaxDeclaration(taxDeclaration).setSalarySobTaxReportRuleMap(salarySobTaxReportRuleMap).setSalarySobAddUpRuleMap(salarySobAddUpRuleMap).setTaxReportColumns(taxReportColumnMap.get(incomeCategoryEntry.getKey())).setSalaryItems(salaryItems);
+ TaxDeclareContext taxDeclareContext = new TaxDeclareContext()
+ .setSalaryAcctRecordMap(salaryAcctRecordMap)
+ .setSalaryAcctEmployees(incomeCategoryEntry.getValue())
+ .setSalaryAcctResultValues(salaryAcctResultValues)
+ .setTaxDeclaration(taxDeclaration)
+ .setSalarySobTaxReportRuleMap(salarySobTaxReportRuleMap)
+ .setSalarySobAddUpRuleMap(salarySobAddUpRuleMap)
+ .setTaxReportColumns(taxReportColumnMap.get(incomeCategoryEntry.getKey()))
+ .setSalaryItems(salaryItems);
TaxDeclarationStrategy taxDeclarationStrategy = new TaxDeclarationCommon();
TaxDeclarationGenerateResult generateResult = taxDeclarationStrategy.generate(taxDeclareContext, (long) user.getUID());
taxDeclarationValues.addAll(generateResult.getTaxDeclarationValues());
diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java
index f3e0a89e5..64fba69e2 100644
--- a/src/com/engine/salary/web/TaxDeclarationController.java
+++ b/src/com/engine/salary/web/TaxDeclarationController.java
@@ -229,7 +229,7 @@ public class TaxDeclarationController {
try {
User user = HrmUserVarify.getUser(request, response);
- XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(id ,requestId);
+ XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(id, requestId);
String fileName = "申报内置算税结果-" + LocalDate.now();
try {
fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
@@ -334,6 +334,35 @@ public class TaxDeclarationController {
return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::refreshData, taxDeclareRecordParam.getTaxDeclareRecordId());
}
+ /**
+ * 新增表单
+ *
+ * @param incomeCategory
+ * @return
+ */
+ @GET
+ @Path("/getAddForm")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String getAddForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "IncomeCategoryEnum") IncomeCategoryEnum incomeCategory) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getAddForm, incomeCategory);
+ }
+
+ /**
+ * 新增
+ * @param request
+ * @param response
+ * @param param
+ * @return
+ */
+ @POST
+ @Path("/add")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String add(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclareRecordDetailSaveParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::add, param);
+ }
+
/**
* 个税申报表详情列表
*
diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java
index edd3900df..96c8e6ee6 100644
--- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java
+++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java
@@ -3,13 +3,11 @@ package com.engine.salary.wrapper;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.cache.SalaryCacheKey;
+import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.entity.taxdeclaration.dto.*;
-import com.engine.salary.entity.taxdeclaration.param.AbnormalEmployeeListQueryParam;
-import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam;
-import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam;
-import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam;
+import com.engine.salary.entity.taxdeclaration.param.*;
import com.engine.salary.entity.taxdeclaration.po.*;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.enums.taxdeclaration.TaxDeclareStatusEnum;
@@ -89,6 +87,11 @@ public class TaxDeclareRecordWrapper extends Service {
return ServiceUtil.getService(TaxDeclareFailServiceImpl.class, user);
}
+ private TaxReportColumnService getTaxReportColumnService(User user) {
+ return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user);
+ }
+
+
/**
* 个税申报记录列表
*
@@ -463,11 +466,11 @@ public class TaxDeclareRecordWrapper extends Service {
public Object getDeclareTaxResultFeedback(Long id) {
- return getTaxDeclareRecordService(user).getDeclareTaxResultFeedback(id);
+ return getTaxDeclareRecordService(user).getDeclareTaxResultFeedback(id);
}
- public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id,String requestId) {
+ public XSSFWorkbook exportGetDeclareTaxResultFeedback(Long id, String requestId) {
return getTaxDeclareRecordService(user).exportGetDeclareTaxResultFeedback(id, requestId);
}
@@ -660,4 +663,29 @@ public class TaxDeclareRecordWrapper extends Service {
return getTaxDeclarationExcelService(user).exportEmployee4Fail(queryParam);
}
+ public List getAddForm(IncomeCategoryEnum incomeCategoryEnum) {
+ // 查询个税申报表列
+ List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum);
+ return taxReportColumns;
+ }
+
+ public void add(TaxDeclareRecordDetailSaveParam param) {
+
+ TaxDeclarationValuePO build = TaxDeclarationValuePO.builder()
+ .id(IdGenerator.generate())
+ .taxDeclarationId(param.getTaxDeclarationId())
+ .taxDeclareRecordId(param.getTaxDeclareRecordId())
+ .employeeId(param.getEmployeeId())
+ .employeeType(param.getEmployeeType())
+ .resultValue(param.getTaxReportColumnValues())
+ .createTime(new Date())
+ .updateTime(new Date())
+ .creator((long) user.getUID())
+ .deleteType(0)
+ .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
+ .build();
+ List objects = new ArrayList<>();
+ objects.add(build);
+ getTaxDeclarationValueService(user).batchSave(objects);
+ }
}