From 9858d8e024a7c7afb935a5b12ae54c4be8bf1dc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 26 Jan 2026 14:32:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E7=A8=8E=E4=BA=91=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=20=E5=8F=96=E6=B6=88=EF=BC=9A=E4=B8=8D=E5=86=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=A1=AB=E5=86=99=E2=80=9C=E4=BA=BA=E5=91=98=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E2=80=9D=EF=BC=88=E5=8E=9F=E2=80=9C=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?/=E9=9D=9E=E6=AD=A3=E5=B8=B8=E2=80=9D=E9=80=89=E9=A1=B9?= =?UTF-8?q?=EF=BC=89=EF=BC=9B=20=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E7=A6=BB=E8=81=8C=E5=90=8E=E8=A1=A5=E5=8F=91=E5=B7=A5?= =?UTF-8?q?=E8=B5=84=EF=BC=9A=E5=91=98=E5=B7=A5=E6=9C=89=E7=A6=BB=E8=81=8C?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E6=97=B6=E5=8F=AF=E9=80=89=E6=8B=A9=E2=80=9C?= =?UTF-8?q?=E6=98=AF/=E5=90=A6=E2=80=9D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202601220103.sql | 6 +++ resource/sqlupgrade/GS/sql202601220103.sql | 6 +++ resource/sqlupgrade/JC/sql202601220103.sql | 6 +++ resource/sqlupgrade/Mysql/sql202601220103.sql | 3 ++ .../sqlupgrade/Oracle/sql202601220103.sql | 5 +++ resource/sqlupgrade/PG/sql202601220103.sql | 3 ++ .../sqlupgrade/SQLServer/sql202601220103.sql | 5 +++ resource/sqlupgrade/ST/sql202601220103.sql | 6 +++ .../employeedeclare/bo/EmployeeDeclareBO.java | 2 + .../bo/EmployeeDeclareRequest.java | 5 +++ .../dto/EmployeeDeclareExcelDTO.java | 6 +++ .../dto/EmployeeDeclareFromDTO.java | 9 +++++ .../param/EmployeeDeclareSaveParam.java | 12 ++++++ .../employeedeclare/po/EmployeeDeclarePO.java | 19 ++++++++++ .../employeedeclare/EmployeeDeclareMapper.xml | 38 +++++++++++++++++++ .../salaryacct/SalaryAcctEmployeeMapper.xml | 4 +- .../TaxDeclarationValueMapper.xml | 2 +- .../service/EmployeeDeclareService.java | 1 + .../impl/EmployeeDeclareExcelServiceImpl.java | 36 ++++++++++++++++++ .../impl/EmployeeDeclareServiceImpl.java | 10 +++++ .../impl/SalaryAcctEmployeeServiceImpl.java | 32 +++++++++++----- .../impl/TaxDeclareEmployeeServiceImpl.java | 18 ++++++--- .../engine/salary/util/SalaryDateUtil.java | 24 ++++++++---- .../wrapper/EmployeeDeclareWrapper.java | 2 + 24 files changed, 236 insertions(+), 24 deletions(-) create mode 100644 resource/sqlupgrade/DM/sql202601220103.sql create mode 100644 resource/sqlupgrade/GS/sql202601220103.sql create mode 100644 resource/sqlupgrade/JC/sql202601220103.sql create mode 100644 resource/sqlupgrade/Mysql/sql202601220103.sql create mode 100644 resource/sqlupgrade/Oracle/sql202601220103.sql create mode 100644 resource/sqlupgrade/PG/sql202601220103.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202601220103.sql create mode 100644 resource/sqlupgrade/ST/sql202601220103.sql diff --git a/resource/sqlupgrade/DM/sql202601220103.sql b/resource/sqlupgrade/DM/sql202601220103.sql new file mode 100644 index 000000000..a4398f959 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202601220103.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_employee_declare ADD reissue_salary number; +/ + +ALTER TABLE hrsa_employee_declare ADD reissue_tax_cycle DATE; +/ + diff --git a/resource/sqlupgrade/GS/sql202601220103.sql b/resource/sqlupgrade/GS/sql202601220103.sql new file mode 100644 index 000000000..a4398f959 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202601220103.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_employee_declare ADD reissue_salary number; +/ + +ALTER TABLE hrsa_employee_declare ADD reissue_tax_cycle DATE; +/ + diff --git a/resource/sqlupgrade/JC/sql202601220103.sql b/resource/sqlupgrade/JC/sql202601220103.sql new file mode 100644 index 000000000..a4398f959 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202601220103.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_employee_declare ADD reissue_salary number; +/ + +ALTER TABLE hrsa_employee_declare ADD reissue_tax_cycle DATE; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202601220103.sql b/resource/sqlupgrade/Mysql/sql202601220103.sql new file mode 100644 index 000000000..fca7fac22 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202601220103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_employee_declare +ADD COLUMN reissue_salary tinyint(0) NULL, +ADD COLUMN reissue_tax_cycle date NULL; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202601220103.sql b/resource/sqlupgrade/Oracle/sql202601220103.sql new file mode 100644 index 000000000..c02ad090b --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202601220103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_employee_declare ADD reissue_salary number +/ + +ALTER TABLE hrsa_employee_declare ADD reissue_tax_cycle DATE +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202601220103.sql b/resource/sqlupgrade/PG/sql202601220103.sql new file mode 100644 index 000000000..33a196a11 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202601220103.sql @@ -0,0 +1,3 @@ +alter table hrsa_employee_declare add reissue_salary int ; + +alter table hrsa_employee_declare add reissue_tax_cycle timestamp ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202601220103.sql b/resource/sqlupgrade/SQLServer/sql202601220103.sql new file mode 100644 index 000000000..7d487a02f --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202601220103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_employee_declare ADD reissue_salary int +GO + +ALTER TABLE hrsa_employee_declare ADD reissue_tax_cycle datetime +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202601220103.sql b/resource/sqlupgrade/ST/sql202601220103.sql new file mode 100644 index 000000000..a4398f959 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202601220103.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_employee_declare ADD reissue_salary number; +/ + +ALTER TABLE hrsa_employee_declare ADD reissue_tax_cycle DATE; +/ + diff --git a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareBO.java b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareBO.java index 1e3b7243c..575d48d78 100644 --- a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareBO.java +++ b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareBO.java @@ -29,6 +29,8 @@ public class EmployeeDeclareBO { .mobile(dto.getMobile()) .employmentDate(dto.getEmploymentDate()) .dismissDate(dto.getDismissDate()) + .reissueSalary(dto.getReissueSalary()) + .reissueTaxCycle(dto.getReissueTaxCycle()) .disability(dto.getDisability()) .disabilityCardNo(dto.getDisabilityCardNo()) .martyrDependents(dto.getMartyrDependents()) diff --git a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRequest.java b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRequest.java index d45c35b79..9aa58b539 100644 --- a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRequest.java +++ b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRequest.java @@ -75,6 +75,11 @@ public class EmployeeDeclareRequest { employeeInfoMap.put("rzsgrq", SalaryDateUtil.getFormatLocalDate(employeeDeclare.getEmploymentDate())); // 离职日期 employeeInfoMap.put("lzrq", SalaryDateUtil.getFormatLocalDate(employeeDeclare.getDismissDate())); + //是否离职后补发工资 + SalaryOnOffEnum reissueSalary = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getReissueSalary(), SalaryOnOffEnum.class); + employeeInfoMap.put("sflzhbfgz", reissueSalary == null ? "" : reissueSalary.getDefaultLabel()); + //补发税款所属月份 + employeeInfoMap.put("bfskssyf", SalaryDateUtil.getFormatYYYYMM(employeeDeclare.getReissueTaxCycle())); // 是否残疾 SalaryOnOffEnum disability = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getDisability(), SalaryOnOffEnum.class); employeeInfoMap.put("sfcj", disability == null ? "" : disability.getDefaultLabel()); diff --git a/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java index 0da6dea75..2d247d15c 100644 --- a/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java +++ b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java @@ -126,6 +126,12 @@ public class EmployeeDeclareExcelDTO { @TableTitle(title = "离职日期", dataIndex = "dismissDate", key = "dismissDate") private Date dismissDate; + //是否离职后补发工资 + private Integer reissueSalary; + + //补发税期 + private Date reissueTaxCycle; + /** * 首次入境时间 */ diff --git a/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareFromDTO.java b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareFromDTO.java index 3abbb76d7..a1f0dfca5 100644 --- a/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareFromDTO.java +++ b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareFromDTO.java @@ -111,6 +111,15 @@ public class EmployeeDeclareFromDTO { @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date dismissDate; + // 是否离职后补发工资 + @TableTitle(title = "是否离职后补发工资", dataIndex = "reissueSalary", key = "reissueSalary") + private SalaryOnOffEnum reissueSalary; + + // 补发税款所属月份 + @TableTitle(title = "补发税款所属月份", dataIndex = "reissueTaxCycle", key = "reissueTaxCycle") + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") + private Date reissueTaxCycle; + // 首次入境时间 @TableTitle(title = "首次入境时间", dataIndex = "entryDate", key = "entryDate") diff --git a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareSaveParam.java b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareSaveParam.java index 02df109dd..968816ea8 100644 --- a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareSaveParam.java +++ b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareSaveParam.java @@ -94,6 +94,18 @@ public class EmployeeDeclareSaveParam { //离职日期 private LocalDate dismissDate; + /** + * 是否离职后补发工资 + * 1是,0否。默认为0 + */ + private SalaryOnOffEnum reissueSalary; + + /** + * 补发税款所属月份 + * 当“是否离职后补发工资”选“是”时必填(格式YYYY-MM,需≥2019年9月,且不小于离职月份)。 + */ + private LocalDate reissueTaxCycle; + //首次入境时间 private LocalDate entryDate; diff --git a/src/com/engine/salary/entity/employeedeclare/po/EmployeeDeclarePO.java b/src/com/engine/salary/entity/employeedeclare/po/EmployeeDeclarePO.java index b282f68a8..9c9f88001 100644 --- a/src/com/engine/salary/entity/employeedeclare/po/EmployeeDeclarePO.java +++ b/src/com/engine/salary/entity/employeedeclare/po/EmployeeDeclarePO.java @@ -80,6 +80,7 @@ public class EmployeeDeclarePO { /** * 证件类型 + * * @see CardTypeEnum */ @ElogTransform(name = "证件类型") @@ -105,6 +106,7 @@ public class EmployeeDeclarePO { /** * 性别 + * * @see GenderEnum */ @ElogTransform(name = "性别") @@ -170,6 +172,21 @@ public class EmployeeDeclarePO { private Date dismissDate; + /** + * 是否离职后补发工资 + * 1是,0否。默认为0 + */ + private Integer reissueSalary; + + + /** + * 补发税款所属月份 + * 当“是否离职后补发工资”选“是”时必填(格式YYYY-MM,需≥2019年9月,且不小于离职月份)。 + */ + @ElogTransform(name = "补发税款所属月份") + private Date reissueTaxCycle; + + /** * 首次入境时间 */ @@ -298,6 +315,8 @@ public class EmployeeDeclarePO { ", employmentFirstYear='" + employmentFirstYear + '\'' + ", employmentDate=" + employmentDate + ", dismissDate=" + dismissDate + + ", reissueSalary=" + reissueSalary + + ", reissueTaxCycle=" + reissueTaxCycle + ", entryDate=" + entryDate + ", departureDate=" + departureDate + ", disability=" + disability + diff --git a/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml index c5d985ffc..cbd4323bd 100644 --- a/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml +++ b/src/com/engine/salary/mapper/employeedeclare/EmployeeDeclareMapper.xml @@ -20,6 +20,8 @@ + + @@ -63,6 +65,8 @@ , t.employment_first_year , t.employment_date , t.dismiss_date + , t.reissue_salary + , t.reissue_tax_cycle , t.entry_date , t.departure_date , t.disability @@ -161,6 +165,12 @@ AND dismiss_date = #{dismissDate} + + AND reissue_salary = #{reissueSalary} + + + AND reissue_tax_cycle = #{reissueTaxCycle} + AND disability = #{disability} @@ -284,6 +294,12 @@ dismiss_date, + + reissue_salary, + + + reissue_tax_cycle, + entry_date, @@ -397,6 +413,12 @@ #{dismissDate}, + + #{reissueSalary}, + + + #{reissueTaxCycle}, + #{entryDate}, @@ -474,6 +496,8 @@ disability, disability_card_no, dismiss_date, + reissue_salary, + reissue_tax_cycle, entry_date, departure_date, employee_id, @@ -514,6 +538,8 @@ #{item.disability}, #{item.disabilityCardNo}, #{item.dismissDate}, + #{item.reissueSalary}, + #{item.reissueTaxCycle}, #{item.entryDate}, #{item.departureDate}, #{item.employeeId}, @@ -558,6 +584,8 @@ disability, disability_card_no, dismiss_date, + reissue_salary, + reissue_tax_cycle, entry_date, departure_date, employee_id, @@ -599,6 +627,8 @@ #{item.disability,jdbcType=INTEGER}, #{item.disabilityCardNo,jdbcType=VARCHAR}, #{item.dismissDate,jdbcType=DATE}, + #{item.reissueSalary,jdbcType=INTEGER}, + #{item.reissueTaxCycle,jdbcType=DATE}, #{item.entryDate,jdbcType=DATE}, #{item.departureDate,jdbcType=DATE}, #{item.employeeId,jdbcType=DOUBLE}, @@ -644,6 +674,8 @@ disability, disability_card_no, dismiss_date, + reissue_salary, + reissue_tax_cycle, entry_date, departure_date, employee_id, @@ -684,6 +716,8 @@ #{item.disability}, #{item.disabilityCardNo}, #{item.dismissDate}, + #{item.reissueSalary}, + #{item.reissueTaxCycle}, #{item.entryDate}, #{item.departureDate}, #{item.employeeId}, @@ -734,6 +768,8 @@ employment_first_year=#{employmentFirstYear}, employment_date=#{employmentDate}, dismiss_date=#{dismissDate}, + reissue_salary=#{reissueSalary}, + reissue_tax_cycle=#{reissueTaxCycle}, entry_date=#{entryDate}, departure_date=#{departureDate}, disability=#{disability}, @@ -811,6 +847,8 @@ employment_date=#{employmentDate}, dismiss_date=#{dismissDate}, + reissue_salary=#{reissueSalary}, + reissue_tax_cycle=#{reissueTaxCycle}, entry_date=#{entryDate}, departure_date=#{departureDate}, birthplace=#{birthplace}, diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 17377b967..2640685f4 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -1196,7 +1196,7 @@ AND hed.tax_agent_id = #{param.taxAgentId} AND hed.tax_cycle = #{param.taxCycle} AND hed.successfully_declared = 1 - AND hed.employment_status = 0 + AND (hed.employment_status = 0 OR hed.dismiss_date = ]]> #{param.taxCycle}) AND hed.declare_status IN (4) ) @@ -1214,7 +1214,7 @@ AND hed.tax_agent_id = #{param.taxAgentId} AND hed.tax_cycle = #{param.taxCycle} AND hed.successfully_declared = 1 - AND hed.employment_status = 0 + AND (hed.employment_status = 0 OR hed.dismiss_date = ]]> #{param.taxCycle}) AND hed.declare_status IN (4) ) diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml index 5eba618cb..e2954ff45 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationValueMapper.xml @@ -411,7 +411,7 @@ AND hed.tax_agent_id = #{param.taxAgentId} AND hed.tax_cycle = #{param.taxCycle} AND hed.successfully_declared = 1 - AND hed.employment_status = 0 + AND (hed.employment_status = 0 OR hed.dismiss_date = ]]> #{param.taxCycle}) AND hed.declare_status IN (4) ) diff --git a/src/com/engine/salary/service/EmployeeDeclareService.java b/src/com/engine/salary/service/EmployeeDeclareService.java index 715f4d428..60b15cbd0 100644 --- a/src/com/engine/salary/service/EmployeeDeclareService.java +++ b/src/com/engine/salary/service/EmployeeDeclareService.java @@ -194,4 +194,5 @@ public interface EmployeeDeclareService{ void batchInsert(List insertList); + List listReissueEmp(Long taxAgentId, Date taxCycle); } diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index d8a01f687..a9a9e2a8f 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -109,6 +109,8 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee row.add(employmentTypeEnum == null ? EmploymentTypeEnum.EMPLOYEE.getDefaultLabel() : employmentTypeEnum.getDefaultLabel()); row.add(SalaryDateUtil.getFormatDate(employeeDeclare.getEmploymentDate())); row.add(SalaryDateUtil.getFormatDate(employeeDeclare.getDismissDate())); + row.add(Objects.equals(employeeDeclare.getReissueSalary(), 1) ? yesI18 : noI18); + row.add(SalaryDateUtil.getFormatYearMonth(employeeDeclare.getReissueTaxCycle())); row.add(SalaryDateUtil.getFormatDate(employeeDeclare.getEntryDate())); row.add(SalaryDateUtil.getFormatDate(employeeDeclare.getDepartureDate())); row.add(employeeDeclare.getTaxReasons()); @@ -396,6 +398,38 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee employeeDeclareExcel.setDismissDate(SalaryDateUtil.dateStrToLocalDate(dataValue)); } } + } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(0, "是否离职后补发工资"))) { + if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { + employeeDeclareExcel.setReissueSalary(SalaryOnOffEnum.ON.getValue()); + } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { + employeeDeclareExcel.setReissueSalary(SalaryOnOffEnum.OFF.getValue()); + } else { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(0, "是否离职后补发工资只能填写是与否")); + errorData.add(errorMessageMap); + } + } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(0, "补发税款所属月份"))) { + if (StringUtils.isEmpty(dataValue)) { + if (Objects.equals(employeeDeclareExcel.getReissueSalary(), SalaryOnOffEnum.ON.getValue())) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(0, "是否离职后补发工资为是时,补发税款所属月份必填")); + errorData.add(errorMessageMap); + } + } else { + if (StringUtils.isNotBlank(dataValue) && dataValue.length() >= 10) { + dataValue = dataValue.substring(0, 7); + } + if (SalaryDateUtil.parse(dataValue, SalaryDateUtil.MONTH_FORMATTER_PATTERN) == null) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(0, "补发税款所属月份不正确,正确示例:2025-01")); + errorData.add(errorMessageMap); + } else { + employeeDeclareExcel.setReissueTaxCycle(SalaryDateUtil.yyyyMMDateStrToLocalDate(dataValue)); + } + } } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(0, "首次入境时间"))) { if (StringUtils.isNotBlank(dataValue)) { if (dataValue.length() >= 10) { @@ -1165,6 +1199,8 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee headers.add(SalaryI18nUtil.getI18nLabel(111111, "任职受雇从业类型")); headers.add(SalaryI18nUtil.getI18nLabel(111111, "任职受雇从业日期")); headers.add(SalaryI18nUtil.getI18nLabel(111111, "离职日期")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "是否离职后补发工资")); + headers.add(SalaryI18nUtil.getI18nLabel(111111, "补发税款所属月份")); headers.add(SalaryI18nUtil.getI18nLabel(111111, "首次入境时间")); headers.add(SalaryI18nUtil.getI18nLabel(111111, "预计离境时间")); headers.add(SalaryI18nUtil.getI18nLabel(111111, "涉税事由")); diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java index a74f33cf9..410a081df 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java @@ -225,6 +225,8 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla employeeDeclare.setEmploymentFirstYear(""); employeeDeclare.setEmploymentDate(SalaryDateUtil.localDateToDate(saveParam.getEmploymentDate())); employeeDeclare.setDismissDate(SalaryDateUtil.localDateToDate(saveParam.getDismissDate())); + employeeDeclare.setReissueSalary(saveParam.getReissueSalary().getValue()); + employeeDeclare.setReissueTaxCycle(SalaryDateUtil.localDateToDate(saveParam.getReissueTaxCycle())); employeeDeclare.setEntryDate(SalaryDateUtil.localDateToDate(saveParam.getEntryDate())); employeeDeclare.setDepartureDate(SalaryDateUtil.localDateToDate(saveParam.getDepartureDate())); employeeDeclare.setDisability(saveParam.getDisability().getValue()); @@ -764,4 +766,12 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla List> partition = Lists.partition(insertList, 50); partition.forEach(getEmployeeDeclareMapper()::batchInsert); } + + @Override + public List listReissueEmp(Long taxAgentId, Date taxCycle) { + return getEmployeeDeclareMapper().listSome(EmployeeDeclarePO.builder() + .reissueTaxCycle(taxCycle) + .taxAgentId(taxAgentId) + .build()); + } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 54822e860..6b29d01bb 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -8,6 +8,7 @@ import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; import com.engine.salary.entity.salaryacct.dto.AbnormalEmployeeListDTO; @@ -115,6 +116,10 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user); } + private EmployeeDeclareService getEmployeeDeclareService(User user) { + return ServiceUtil.getService(EmployeeDeclareServiceImpl.class, user); + } + private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); @@ -852,6 +857,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public PageInfo listPage4NotDeclareByParam(AbnormalEmployeeListQueryParam queryParam) { + List list = listPage4NotDeclare(queryParam); + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, AbnormalEmployeeListDTO.class); + } + + List listPage4NotDeclare(AbnormalEmployeeListQueryParam queryParam) { Long recordId = queryParam.getRecordId(); SalaryAcctRecordPO recordPO = getSalaryAcctRecordService(user).getById(recordId); @@ -860,19 +870,23 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct queryParam.setTaxAgentId(sobPO.getTaxAgentId()); List list = getSalaryAcctEmployeeMapper().listPage4NotDeclareByParam(queryParam); - return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, AbnormalEmployeeListDTO.class); + + if (CollUtil.isNotEmpty(list)) { + //补发逻辑 + List employeeDeclares = getEmployeeDeclareService(user).listReissueEmp(queryParam.getTaxAgentId(), queryParam.getTaxCycle()); + if(CollUtil.isNotEmpty(employeeDeclares)){ + Set empIds = SalaryEntityUtil.properties(employeeDeclares, EmployeeDeclarePO::getEmployeeId); + list = list.stream().filter(taxDeclarationValue -> !empIds.contains(taxDeclarationValue.getEmployeeId())).collect(Collectors.toList()); + } + } + + return list; } @Override public int countNotDeclareByParam(AbnormalEmployeeListQueryParam queryParam) { - - Long recordId = queryParam.getRecordId(); - SalaryAcctRecordPO recordPO = getSalaryAcctRecordService(user).getById(recordId); - SalarySobPO sobPO = getSalarySobService(user).getById(recordPO.getSalarySobId()); - queryParam.setTaxCycle(recordPO.getTaxCycle()); - queryParam.setTaxAgentId(sobPO.getTaxAgentId()); - - return getSalaryAcctEmployeeMapper().countNotDeclareByParam(queryParam); + List list = listPage4NotDeclare(queryParam); + return list.size(); } @Override diff --git a/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java index d2ed11f26..ea11d6a24 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -23,10 +24,7 @@ import com.engine.salary.util.page.SalaryPageUtil; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -64,7 +62,17 @@ public class TaxDeclareEmployeeServiceImpl extends Service implements TaxDeclare @Override public List list4NotDeclareByParam(AbnormalEmployeeListQueryParam queryParam) { - return getTaxDeclarationValueMapper().list4NotDeclareByParam(queryParam); + //根据正常/非正常状态和离职日期查询是否有未报送的人员 + List list = getTaxDeclarationValueMapper().list4NotDeclareByParam(queryParam); + if (CollUtil.isNotEmpty(list)) { + //补发逻辑 + List employeeDeclares = getEmployeeDeclareService(user).listReissueEmp(queryParam.getTaxAgentId(), queryParam.getTaxCycle()); + if(CollUtil.isNotEmpty(employeeDeclares)){ + Set empIds = SalaryEntityUtil.properties(employeeDeclares, EmployeeDeclarePO::getEmployeeId); + list = list.stream().filter(taxDeclarationValue -> !empIds.contains(taxDeclarationValue.getEmployeeId())).collect(Collectors.toList()); + } + } + return list; } @Override diff --git a/src/com/engine/salary/util/SalaryDateUtil.java b/src/com/engine/salary/util/SalaryDateUtil.java index f6369ff5e..f9829116b 100644 --- a/src/com/engine/salary/util/SalaryDateUtil.java +++ b/src/com/engine/salary/util/SalaryDateUtil.java @@ -247,7 +247,7 @@ public class SalaryDateUtil { Calendar c = Calendar.getInstance(); c.setTime(localDate); int year = c.get(Calendar.YEAR); - return year ; + return year; } public static LocalDateRange localDate2Range(Date localDate) { @@ -277,6 +277,7 @@ public class SalaryDateUtil { cal.set(Calendar.DAY_OF_MONTH, last); return cal.getTime(); } + public static Date getFirstDayDateOfMonthWithMinutesAndSeconds(final Date date) { final Calendar cal = Calendar.getInstance(); cal.setTime(date); @@ -314,8 +315,6 @@ public class SalaryDateUtil { } - - public static String getMonthBegin(String specifiedDay) { int year; int month; @@ -544,6 +543,15 @@ public class SalaryDateUtil { return localDate; } + public static Date yyyyMMDateStrToLocalDate(String date) { + if (date.contains("/")) { + date = date + "/01"; + } else if (date.contains("-")) { + date = date + "-01"; + } + return dateStrToLocalDate(date); + } + public static Date dateStrToLocalTime(String date) { Date localDate = null; try { @@ -570,7 +578,7 @@ public class SalaryDateUtil { if (StringUtils.isNotBlank(startMonth)) { startMonth = startMonth + "-01"; Date socialStartDate = SalaryDateUtil.dateStrToLocalDate(startMonth); - if(socialStartDate == null) { + if (socialStartDate == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "年月解析异常,请检查档案中相关数据设置") + ":" + startMonth.substring(0, startMonth.length() - 3)); } else if (billMonthDate.before(socialStartDate)) { inDataRange = false; @@ -579,7 +587,7 @@ public class SalaryDateUtil { if (StringUtils.isNotBlank(endMonth)) { endMonth = endMonth + "-01"; Date socialEndDate = SalaryDateUtil.dateStrToLocalDate(endMonth); - if(socialEndDate == null) { + if (socialEndDate == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "年月解析异常,请检查档案中相关数据设置") + ":" + endMonth.substring(0, endMonth.length() - 3)); } else if (billMonthDate.after(socialEndDate)) { inDataRange = false; @@ -590,9 +598,10 @@ public class SalaryDateUtil { /** * 转换时间对象 - * @see SalaryDateUtil#toDate(LocalDateTime, String) + * * @param dateTime LocalDateTime * @return Date + * @see SalaryDateUtil#toDate(LocalDateTime, String) */ public static Date toDate(LocalDateTime dateTime) { return toDate(dateTime, null); @@ -601,8 +610,9 @@ public class SalaryDateUtil { /** * 转换时间对象 + * * @param dateTime LocalDateTime - * @param offset 时区,e.g. +8 + * @param offset 时区,e.g. +8 * @return Date */ public static Date toDate(LocalDateTime dateTime, String offset) { diff --git a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java index d251f51dc..778f7270c 100644 --- a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java +++ b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java @@ -290,6 +290,8 @@ public class EmployeeDeclareWrapper extends Service { .setEmploymentType(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentType(), EmploymentTypeEnum.class)) .setEmploymentDate(employeeDeclare.getEmploymentDate()) .setDismissDate(employeeDeclare.getDismissDate()) + .setReissueSalary(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getReissueSalary(), SalaryOnOffEnum.class)) + .setReissueTaxCycle(employeeDeclare.getReissueTaxCycle()) .setDisability(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getDisability(), SalaryOnOffEnum.class)) .setDisabilityCardNo(employeeDeclare.getDisabilityCardNo()) .setLonelyOld(SalaryEnumUtil.enumMatchByValue(employeeDeclare.getLonelyOld(), SalaryOnOffEnum.class))