diff --git a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareListQueryParam.java b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareListQueryParam.java index e569ecbf1..27222c08f 100644 --- a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareListQueryParam.java +++ b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareListQueryParam.java @@ -48,6 +48,7 @@ public class EmployeeDeclareListQueryParam extends BaseQueryParam { // 员工姓名/编号 private String keyword; + private Long employeeId; // 部门 private Collection departmentIds; diff --git a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationDetailBO.java b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationDetailBO.java index 81010fb7b..5b8454a82 100644 --- a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationDetailBO.java +++ b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationDetailBO.java @@ -2,11 +2,9 @@ package com.engine.salary.entity.taxdeclaration.bo; import com.engine.salary.constant.TaxDeclarationDataIndexConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationAnnualListDTO; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationEmployeeDTO; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationLaborListDTO; -import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationWageListDTO; +import com.engine.salary.entity.taxdeclaration.dto.*; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationDetailPO; +import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -15,6 +13,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import java.util.*; +import java.util.stream.Collectors; /** * 个税申报表详情 @@ -177,4 +176,23 @@ public class TaxDeclarationDetailBO { } return taxDeclarationLaborListDTOS; } + + + public static List convert2ListTaxReportColumn(List pos) { + if (CollectionUtils.isEmpty(pos)) { + return Collections.emptyList(); + } + + List collect = pos.stream().map(po -> { + TaxDeclareRecordDetailFormDTO.TaxReportColumn taxReportColumn = new TaxDeclareRecordDetailFormDTO.TaxReportColumn(); + taxReportColumn.setReportColumnName(po.getReportColumnName()); + taxReportColumn.setReportColumnDataIndex(po.getReportColumnDataIndex()); + taxReportColumn.setTaxReportType(po.getTaxReportType()); + taxReportColumn.setIncomeCategory(po.getIncomeCategory()); + taxReportColumn.setDataType(po.getDataType()); + return taxReportColumn; + }).collect(Collectors.toList()); + + return collect; + } } diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java new file mode 100644 index 000000000..a94811684 --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclareRecordDetailFormDTO.java @@ -0,0 +1,76 @@ +package com.engine.salary.entity.taxdeclaration.dto; + +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * 个税申报明细新增表单 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TaxDeclareRecordDetailFormDTO { + + /** + * 个税申报表id + */ + private Long taxDeclarationId; + + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + private String jobNum; + + @TableTitle(title = "姓名", dataIndex = "username", key = "username") + private String username; + + @TableTitle(title = "证件类型", dataIndex = "cardType", key = "cardType") + private String cardType; + + @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum") + private String cardNum; + + /** + * 收入所得项目 + */ + private String incomeCategory; + + /** + * 人员报送下拉选择 + */ + private List employeeDeclares; + + /** + * 当前申报类型可编辑字段 + */ + private List taxReportColumns; + private Map resultValue; + + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class TaxReportColumn { + //报表类型 + private String taxReportType; + //所得项目 + private String incomeCategory; + //申报表列索引 + private String reportColumnDataIndex ; + //申报表的列名 + private String reportColumnName; + //数值类型 + private String dataType; + } +} diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailFormParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailFormParam.java new file mode 100644 index 000000000..3386119bf --- /dev/null +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailFormParam.java @@ -0,0 +1,21 @@ +package com.engine.salary.entity.taxdeclaration.param; + +import lombok.Data; + +/** + * 个税申报明细保存 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class TaxDeclareRecordDetailFormParam { + + /** + * 个税申报表id + */ + private Long taxDeclarationId; + +} diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java index 7744819ba..0f60decd9 100644 --- a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordDetailSaveParam.java @@ -1,7 +1,5 @@ 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; @@ -23,10 +21,7 @@ public class TaxDeclareRecordDetailSaveParam { @JsonSerialize(using = ToStringSerializer.class) private Long id; - //个税申报记录id") - private Long taxDeclareRecordId; - - //个税申报表id") + //个税申报表id private Long taxDeclarationId; //人员id @@ -34,31 +29,6 @@ public class TaxDeclareRecordDetailSaveParam { 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/mapper/employeedeclare/EmployeeDeclareMapper.xml b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml index 890181735..33e2deec0 100644 --- a/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml +++ b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml @@ -838,6 +838,9 @@ AND declare_status = #{param.declareStatus.value} + + AND employee_id=#{param.employeeId} + AND employment_status = #{param.employmentStatus.value} diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java index 8ec154857..ab129909c 100644 --- a/src/com/engine/salary/service/TaxDeclarationValueService.java +++ b/src/com/engine/salary/service/TaxDeclarationValueService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationValuePO; import com.engine.salary.util.page.PageInfo; @@ -58,10 +59,17 @@ public interface TaxDeclarationValueService { */ void batchSave(List taxDeclarationValues); + + void save(TaxDeclareRecordDetailSaveParam param); + void edit(TaxDeclareRecordDetailSaveParam param); + TaxDeclarationValuePO getById(Long id); + /** * 删除个税申报表明细 * * @param taxDeclareRecordIds */ void deleteByTaxDeclareRecordIds(Collection taxDeclareRecordIds); + + } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index f7aaf17c9..e45ba18f2 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -3,6 +3,7 @@ package com.engine.salary.service.impl; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; @@ -10,11 +11,13 @@ import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationValueList; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationValueListDTO; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationValueListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordDetailSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationValuePO; import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationValueMapper; import com.engine.salary.service.*; import com.engine.salary.util.JsonUtil; @@ -24,6 +27,7 @@ import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; +import dm.jdbc.util.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; @@ -63,6 +67,10 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user); } + private TaxDeclarationService getTaxDeclarationService(User user) { + return ServiceUtil.getService(TaxDeclarationServiceImpl.class, user); + } + @Override public PageInfo listPageByTaxDeclarationIds(TaxDeclarationValueListQueryParam queryParam, Collection taxDeclarationIds) { List taxDeclarationValuePOS = getTaxDeclarationValueMapper().listSome(TaxDeclarationValuePO.builder().taxDeclarationIds(taxDeclarationIds).build()); @@ -131,6 +139,55 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar } } + @Override + public void save(TaxDeclareRecordDetailSaveParam param) { + TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); + if(taxDeclaration==null){ + throw new SalaryRunTimeException("个税申报表不存在!"); + } + + TaxDeclarationValuePO po = TaxDeclarationValuePO.builder() + .id(IdGenerator.generate()) + .taxDeclarationId(param.getTaxDeclarationId()) + .taxDeclareRecordId(taxDeclaration.getTaxDeclareRecordId()) + .employeeId(param.getEmployeeId()) + .employeeType(param.getEmployeeType()) + .resultValue(param.getTaxReportColumnValues()) + .resultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())) + .createTime(new Date()) + .updateTime(new Date()) + .creator((long) user.getUID()) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + encryptUtil.encrypt(po, TaxDeclarationValuePO.class); + + getTaxDeclarationValueMapper().insertIgnoreNull(po); + + } + + @Override + public void edit(TaxDeclareRecordDetailSaveParam param) { + TaxDeclarationValuePO po = getById(param.getId()); + po.setResultValue(param.getTaxReportColumnValues()); + po.setResultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())); + po.setUpdateTime(new Date()); + encryptUtil.encrypt(po, TaxDeclarationValuePO.class); + getTaxDeclarationValueMapper().updateIgnoreNull(po); + } + + @Override + public TaxDeclarationValuePO getById(Long id) { + TaxDeclarationValuePO po = getTaxDeclarationValueMapper().getById(id); + if(po==null){ + throw new SalaryRunTimeException("个税申报明细不存在!"); + } + encryptUtil.decrypt(po,TaxDeclarationValuePO.class); + po.setResultValue(JsonUtil.parseMap(po.getResultValueJson(), String.class)); + + return po; + } + @Override public void deleteByTaxDeclareRecordIds(Collection taxDeclareRecordIds) { if (CollectionUtils.isEmpty(taxDeclareRecordIds)) { diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 64fba69e2..0d6ad1e9e 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -337,19 +337,20 @@ public class TaxDeclarationController { /** * 新增表单 * - * @param incomeCategory + * @param param * @return */ - @GET + @POST @Path("/getAddForm") @Produces(MediaType.APPLICATION_JSON) - public String getAddForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "IncomeCategoryEnum") IncomeCategoryEnum incomeCategory) { + public String getAddForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailFormParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getAddForm, incomeCategory); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getAddForm, param); } /** * 新增 + * * @param request * @param response * @param param @@ -358,11 +359,45 @@ public class TaxDeclarationController { @POST @Path("/add") @Produces(MediaType.APPLICATION_JSON) - public String add(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclareRecordDetailSaveParam param) { + public String add(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordDetailSaveParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(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(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(user).run(getTaxDeclareRecordWrapper(user)::detailInfo, id); + } + + /** * 个税申报表详情列表 * @@ -407,9 +442,7 @@ public class TaxDeclarationController { }; response.setContentType("application/octet-stream"); - return Response.ok(output) - .header("Content-disposition", "attachment;filename=" + fileName) - .header("Cache-Control", "no-cache").build(); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } catch (Exception e) { log.error("个税申报表明细导出异常", e); throw e; @@ -544,9 +577,7 @@ public class TaxDeclarationController { }; response.setContentType("application/octet-stream"); - return Response.ok(output) - .header("Content-disposition", "attachment;filename=" + fileName) - .header("Cache-Control", "no-cache").build(); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } catch (Exception e) { log.error("未报送的人员导出异常", e); throw e; @@ -581,9 +612,7 @@ public class TaxDeclarationController { }; response.setContentType("application/octet-stream"); - return Response.ok(output) - .header("Content-disposition", "attachment;filename=" + fileName) - .header("Cache-Control", "no-cache").build(); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } catch (Exception e) { log.error("缺少申报数据的人员导出异常", e); throw e; @@ -617,9 +646,7 @@ public class TaxDeclarationController { }; response.setContentType("application/octet-stream"); - return Response.ok(output) - .header("Content-disposition", "attachment;filename=" + fileName) - .header("Cache-Control", "no-cache").build(); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); } catch (Exception e) { log.error("申报失败人员导出异常", e); throw e; diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 96c8e6ee6..17b58d8e1 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -3,12 +3,17 @@ 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.employeedeclare.param.EmployeeDeclareListQueryParam; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationDetailBO; import com.engine.salary.entity.taxdeclaration.dto.*; import com.engine.salary.entity.taxdeclaration.param.*; import com.engine.salary.entity.taxdeclaration.po.*; +import com.engine.salary.enums.employeedeclare.CardTypeEnum; +import com.engine.salary.enums.employeedeclare.DeclareStatusEnum; +import com.engine.salary.enums.employeedeclare.EmploymentStatusEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.enums.taxdeclaration.TaxDeclareStatusEnum; import com.engine.salary.enums.taxdeclaration.TaxDeclareTypeEnum; @@ -91,6 +96,10 @@ public class TaxDeclareRecordWrapper extends Service { return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user); } + private EmployeeDeclareService getEmployeeDeclareService(User user) { + return ServiceUtil.getService(EmployeeDeclareServiceImpl.class, user); + } + /** * 个税申报记录列表 @@ -663,29 +672,77 @@ public class TaxDeclareRecordWrapper extends Service { return getTaxDeclarationExcelService(user).exportEmployee4Fail(queryParam); } - public List getAddForm(IncomeCategoryEnum incomeCategoryEnum) { + public TaxDeclareRecordDetailFormDTO getAddForm(TaxDeclareRecordDetailFormParam param) { + TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(param.getTaxDeclarationId()); // 查询个税申报表列 - List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(incomeCategoryEnum); - return taxReportColumns; + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclaration.getIncomeCategory())); + //当前税款所属期报送成功且状态正常的人员 + List employeeDeclarePOS = getEmployeeDeclareService(user).listByParam( + EmployeeDeclareListQueryParam + .builder() + .taxCycle(taxDeclaration.getTaxCycle()) + .taxAgentId(taxDeclaration.getTaxAgentId()) + .declareStatus(DeclareStatusEnum.DECLARE_SUCCESS) + .employmentStatus(EmploymentStatusEnum.NORMAL) + .build() + ); + + //过滤申报表中已存在的人员 + List taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationIds(Collections.singletonList(param.getTaxDeclarationId())); + Set empIds = SalaryEntityUtil.properties(taxDeclarationValuePOS, TaxDeclarationValuePO::getEmployeeId); + + employeeDeclarePOS = employeeDeclarePOS.stream().filter(emp -> !empIds.contains(emp.getEmployeeId())).collect(Collectors.toList()); + + return TaxDeclareRecordDetailFormDTO.builder() + .taxReportColumns(TaxDeclarationDetailBO.convert2ListTaxReportColumn(taxReportColumns)) + .employeeDeclares(employeeDeclarePOS) + .taxDeclarationId(taxDeclaration.getTaxAgentId()) + .build(); } + /** + * 新增 + * @param param + */ public void add(TaxDeclareRecordDetailSaveParam param) { + getTaxDeclarationValueService(user).save(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) + /** + * 编辑 + * @param param + */ + public void edit(TaxDeclareRecordDetailSaveParam param) { + getTaxDeclarationValueService(user).edit(param); + } + + public TaxDeclareRecordDetailFormDTO detailInfo(Long id) { + TaxDeclarationValuePO declarationValuePO = getTaxDeclarationValueService(user).getById(id); + TaxDeclarationPO taxDeclarationPO = getTaxDeclarationService(user).getById(declarationValuePO.getTaxDeclarationId()); + + List employeeDeclarePOS = getEmployeeDeclareService(user).listByParam( + EmployeeDeclareListQueryParam + .builder() + .taxCycle(taxDeclarationPO.getTaxCycle()) + .taxAgentId(taxDeclarationPO.getTaxAgentId()) + .employeeId(declarationValuePO.getEmployeeId()) + .build() + ); + + if (CollectionUtils.isEmpty(employeeDeclarePOS)) { + throw new SalaryRunTimeException("当前人员未报送!"); + } + EmployeeDeclarePO employeeDeclarePO = employeeDeclarePOS.get(0); + // 查询个税申报表列 + List taxReportColumns = getTaxReportColumnService(user).listByIncomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory())); + return TaxDeclareRecordDetailFormDTO.builder() + .incomeCategory(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory()).getDefaultLabel()) + .cardNum(employeeDeclarePO.getCardNum()) + .cardType(SalaryEnumUtil.enumMatchByValue(employeeDeclarePO.getCardType(), CardTypeEnum.class).getDefaultLabel()) + .username(employeeDeclarePO.getEmployeeName()) + .jobNum(employeeDeclarePO.getJobNum()) + .taxReportColumns(TaxDeclarationDetailBO.convert2ListTaxReportColumn(taxReportColumns)) + .resultValue(declarationValuePO.getResultValue()) .build(); - List objects = new ArrayList<>(); - objects.add(build); - getTaxDeclarationValueService(user).batchSave(objects); } }