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 1/8] =?UTF-8?q?=E4=B8=AA=E7=A8=8E=E4=BA=91=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=20=E5=8F=96=E6=B6=88=EF=BC=9A=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E5=A1=AB=E5=86=99=E2=80=9C=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E2=80=9D=EF=BC=88=E5=8E=9F=E2=80=9C=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8/=E9=9D=9E=E6=AD=A3=E5=B8=B8=E2=80=9D=E9=80=89?= =?UTF-8?q?=E9=A1=B9=EF=BC=89=EF=BC=9B=20=E6=96=B0=E5=A2=9E=EF=BC=9A?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E7=A6=BB=E8=81=8C=E5=90=8E=E8=A1=A5=E5=8F=91?= =?UTF-8?q?=E5=B7=A5=E8=B5=84=EF=BC=9A=E5=91=98=E5=B7=A5=E6=9C=89=E7=A6=BB?= =?UTF-8?q?=E8=81=8C=E6=97=A5=E6=9C=9F=E6=97=B6=E5=8F=AF=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E2=80=9C=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)) From af0344662886cb7aa3184764cb3d9cc6027fb316 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 28 Jan 2026 13:48:15 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=B8=AA=E7=A8=8E=E4=BA=91=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=20=E5=8F=96=E6=B6=88=EF=BC=9A=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E5=A1=AB=E5=86=99=E2=80=9C=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E2=80=9D=EF=BC=88=E5=8E=9F=E2=80=9C=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8/=E9=9D=9E=E6=AD=A3=E5=B8=B8=E2=80=9D=E9=80=89?= =?UTF-8?q?=E9=A1=B9=EF=BC=89=EF=BC=9B=20=E6=96=B0=E5=A2=9E=EF=BC=9A?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E7=A6=BB=E8=81=8C=E5=90=8E=E8=A1=A5=E5=8F=91?= =?UTF-8?q?=E5=B7=A5=E8=B5=84=EF=BC=9A=E5=91=98=E5=B7=A5=E6=9C=89=E7=A6=BB?= =?UTF-8?q?=E8=81=8C=E6=97=A5=E6=9C=9F=E6=97=B6=E5=8F=AF=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E2=80=9C=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 --- .../salary/service/impl/EmployeeDeclareExcelServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index a9a9e2a8f..e1a88f6f6 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -141,7 +141,6 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee InputStream fileInputStream = null; try { - fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); From dee4e13c6cb854b040457b0b7a4e0ed2082e1930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 29 Jan 2026 10:43:42 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E8=80=83=E5=8B=A4=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=AD=97=E6=AE=B5=E6=97=B6=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E5=BC=95=E7=94=A8=E8=80=83=E5=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/AttendQuoteFieldSettingServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/AttendQuoteFieldSettingServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteFieldSettingServiceImpl.java index dd8eef639..a6b07bbaf 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteFieldSettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteFieldSettingServiceImpl.java @@ -57,7 +57,7 @@ public class AttendQuoteFieldSettingServiceImpl extends Service implements Atten @Override public List list(AttendQuoteFieldSettingQueryParam queryParam) { //同步字段 - getAttendQuoteFieldService(user).syncAttendFields(); +// getAttendQuoteFieldService(user).syncAttendFields(); // 获取字段设置 List list = biz.getAttendQuoteFieldSetting(queryParam.getSourceType()); From dee1ed1b9c884119bdadf13fdcd7d64dd39c25c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 2 Feb 2026 15:17:38 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=B8=AA=E7=A8=8E=E4=BA=91=E5=8D=87?= =?UTF-8?q?=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../employeedeclare/bo/EmployeeDeclareRequest.java | 4 ++-- .../mapper/salaryacct/SalaryAcctEmployeeMapper.xml | 4 ++-- .../taxdeclaration/TaxDeclarationValueMapper.xml | 4 ++-- .../impl/SalaryAcctEmployeeServiceImpl.java | 11 ----------- .../impl/TaxDeclareEmployeeServiceImpl.java | 14 ++++---------- 5 files changed, 10 insertions(+), 27 deletions(-) diff --git a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRequest.java b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRequest.java index 9aa58b539..60bba2281 100644 --- a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRequest.java +++ b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRequest.java @@ -76,8 +76,8 @@ public class EmployeeDeclareRequest { // 离职日期 employeeInfoMap.put("lzrq", SalaryDateUtil.getFormatLocalDate(employeeDeclare.getDismissDate())); //是否离职后补发工资 - SalaryOnOffEnum reissueSalary = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getReissueSalary(), SalaryOnOffEnum.class); - employeeInfoMap.put("sflzhbfgz", reissueSalary == null ? "" : reissueSalary.getDefaultLabel()); + SalaryOnOffEnum reissueSalary = employeeDeclare.getReissueSalary() == null ? SalaryOnOffEnum.OFF : SalaryEnumUtil.enumMatchByValue(employeeDeclare.getReissueSalary(), SalaryOnOffEnum.class); + employeeInfoMap.put("sflzhbfgz", (reissueSalary != null && reissueSalary == SalaryOnOffEnum.ON) ? "是" : ""); //补发税款所属月份 employeeInfoMap.put("bfskssyf", SalaryDateUtil.getFormatYYYYMM(employeeDeclare.getReissueTaxCycle())); // 是否残疾 diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 2640685f4..cd6d26811 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 OR hed.dismiss_date = ]]> #{param.taxCycle}) + AND (hed.dismiss_date is null OR hed.dismiss_date = ]]> #{param.taxCycle} OR hed.reissue_tax_cycle = #{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 OR hed.dismiss_date = ]]> #{param.taxCycle}) + AND (hed.dismiss_date is null OR hed.dismiss_date = ]]> #{param.taxCycle} OR hed.reissue_tax_cycle = #{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 e2954ff45..7744bcbad 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 OR hed.dismiss_date = ]]> #{param.taxCycle}) + AND (hed.dismiss_date is null OR hed.dismiss_date = ]]> #{param.taxCycle} OR hed.reissue_tax_cycle = #{param.taxCycle}) AND hed.declare_status IN (4) ) @@ -432,7 +432,7 @@ AND tax_agent_id = #{param.taxAgentId} AND tax_cycle = #{param.taxCycle} AND successfully_declared = 1 - AND employment_status = 0 + AND (dismiss_date is null OR dismiss_date = ]]> #{param.taxCycle} OR reissue_tax_cycle = #{param.taxCycle}) AND employee_id NOT IN ( SELECT employee_id FROM hrsa_tax_declaration_value htdv diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 6b29d01bb..06bb292fa 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -8,7 +8,6 @@ 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; @@ -870,16 +869,6 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct queryParam.setTaxAgentId(sobPO.getTaxAgentId()); List list = getSalaryAcctEmployeeMapper().listPage4NotDeclareByParam(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; } diff --git a/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java index ea11d6a24..3367bc5e1 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java @@ -1,6 +1,5 @@ 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; @@ -24,7 +23,10 @@ import com.engine.salary.util.page.SalaryPageUtil; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; /** @@ -64,14 +66,6 @@ public class TaxDeclareEmployeeServiceImpl extends Service implements TaxDeclare public List list4NotDeclareByParam(AbnormalEmployeeListQueryParam 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; } From 6de4a4f2414ff3e7da50fa40ce25015573d399d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 3 Feb 2026 15:37:24 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SIRepairServiceImpl.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java index bb24354e2..79ae11524 100644 --- a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java @@ -387,11 +387,15 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { && (projects.contains(ProjectTypeEnum.MEDICAL_INSURANCE.getValue()))) { if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); - socialMap = socialMap.entrySet().stream().filter(e -> "9001".equals(e.getKey()) || "9002".equals(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + if(socialMap!=null){ + socialMap = socialMap.entrySet().stream().filter(e -> "9001".equals(e.getKey()) || "9002".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); - socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey()) || "9002".equals(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + if(socialComMap!=null){ + socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey()) || "9002".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } List socialIds = new ArrayList<>(); socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialMap.keySet()); @@ -434,12 +438,16 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { && (!projects.contains(ProjectTypeEnum.MEDICAL_INSURANCE.getValue()))) { if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); - socialMap = socialMap.entrySet().stream().filter(e -> "9001".equals(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + if (socialMap != null) { + socialMap = socialMap.entrySet().stream().filter(e -> "9001".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); - socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + if (socialComMap != null) { + socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } List socialIds = new ArrayList<>(); socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); socialIds.addAll(socialComMap == null ? Collections.emptyList() :socialComMap.keySet()); @@ -482,8 +490,10 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { && (projects.contains(ProjectTypeEnum.MEDICAL_INSURANCE.getValue()))) { if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); - socialMap = socialMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + if(socialMap!=null){ + socialMap = socialMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + } Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); if(socialComMap !=null){ socialComMap = socialComMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) From 49738114fca6217abcbb20491bcdba3df94ac559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 5 Feb 2026 15:03:31 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E5=AF=BC=E5=85=A5=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/mapper/archive/SalaryArchiveMapper.xml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 17229b2e9..3e8f2a2fc 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -620,9 +620,7 @@ - - when id=#{item.id} then #{item.payEndDate} - + when id=#{item.id} then #{item.payEndDate} @@ -650,9 +648,7 @@ pay_start_date=#{item.payStartDate}, - pay_end_date=#{item.payEndDate}, - WHERE id = #{item.id} AND delete_type = 0 From 11827aa33af78239705dcf2be3e3e6fce53a5a14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 10 Feb 2026 15:42:08 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=A4=84=E7=90=86=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=8A=A5=E9=80=81=E6=8E=A5=E5=8F=A3=E5=A4=B1=E8=B4=A5=EF=BC=8C?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/TaxDeclarationApiFlowStatisticDetailListDTO.java | 2 +- .../salary/service/impl/EmployeeDeclareServiceImpl.java | 4 ++++ .../wrapper/TaxDeclarationApiFlowStatisticWrapper.java | 6 ++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/entity/taxapiflow/dto/TaxDeclarationApiFlowStatisticDetailListDTO.java b/src/com/engine/salary/entity/taxapiflow/dto/TaxDeclarationApiFlowStatisticDetailListDTO.java index cf4d4ee9f..e3c71155f 100644 --- a/src/com/engine/salary/entity/taxapiflow/dto/TaxDeclarationApiFlowStatisticDetailListDTO.java +++ b/src/com/engine/salary/entity/taxapiflow/dto/TaxDeclarationApiFlowStatisticDetailListDTO.java @@ -33,7 +33,7 @@ public class TaxDeclarationApiFlowStatisticDetailListDTO { private String taxAgentName; //税款所属期 - @TableTitle(title = "",key = "",dataIndex = "") + @TableTitle(title = "税款所属期",key = "taxMonth",dataIndex = "税款所属期") private String taxMonth; //月使用流量数 diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java index 410a081df..7db2ddf9e 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java @@ -666,9 +666,13 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla DeclareEmployeeFeedbackResponse declareEmployeeFeedbackResponse = JsonUtil.parseObject(res, DeclareEmployeeFeedbackResponse.class); if (Objects.isNull(declareEmployeeFeedbackResponse) || Objects.isNull(declareEmployeeFeedbackResponse.getHead())) { log.error("服务异常:" + res); + // 删除原来的人员报送记录 + getEmployeeDeclareRecordService(user).deleteByTaxCycleAndTaxAgentId(param.getTaxCycle(), param.getTaxAgentId()); throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156449, "服务异常")); } if (!Objects.equals(declareEmployeeFeedbackResponse.getHead().getCode(), SzyhApiConstant.SUCCESS_CODE)) { + // 删除原来的人员报送记录 + getEmployeeDeclareRecordService(user).deleteByTaxCycleAndTaxAgentId(param.getTaxCycle(), param.getTaxAgentId()); throw new SalaryRunTimeException(declareEmployeeFeedbackResponse.getHead().getMsg()); } DeclareEmployeeFeedbackResponse.DeclareEmployeeFeedbackResponseBody declareEmployeeFeedbackResponseBody = declareEmployeeFeedbackResponse.getBody(); diff --git a/src/com/engine/salary/wrapper/TaxDeclarationApiFlowStatisticWrapper.java b/src/com/engine/salary/wrapper/TaxDeclarationApiFlowStatisticWrapper.java index 4129ea15e..4f5026cd2 100644 --- a/src/com/engine/salary/wrapper/TaxDeclarationApiFlowStatisticWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclarationApiFlowStatisticWrapper.java @@ -9,8 +9,6 @@ import com.engine.salary.entity.taxapiflow.dto.TaxDeclarationApiFlowTotalDTO; import com.engine.salary.entity.taxapiflow.param.TaxDeclarationApiFlowMonthQueryParam; import com.engine.salary.service.TaxDeclarationApiFlowStatisticService; import com.engine.salary.service.impl.TaxDeclarationApiFlowStatisticServiceImpl; -import com.engine.salary.util.SalaryAssert; -import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -47,13 +45,13 @@ public class TaxDeclarationApiFlowStatisticWrapper extends Service { public XSSFWorkbook exportFlowStatistics() { List dtoList = getTaxDeclarationApiFlowStatisticService(user).listFlowStatistic(); - SalaryAssert.notEmpty(dtoList, SalaryI18nUtil.getI18nLabel(95795, "数据不存在")); +// SalaryAssert.notEmpty(dtoList, SalaryI18nUtil.getI18nLabel(95795, "数据不存在")); return getTaxDeclarationApiFlowStatisticService(user).exportFlowStatistics(dtoList); } public XSSFWorkbook exportFlowStatisticsDetail(TaxDeclarationApiFlowMonthQueryParam queryParam) { List dtoList = getTaxDeclarationApiFlowStatisticService(user).listFlowStatisticDetail(queryParam); - SalaryAssert.notEmpty(dtoList, SalaryI18nUtil.getI18nLabel(95795, "数据不存在")); +// SalaryAssert.notEmpty(dtoList, SalaryI18nUtil.getI18nLabel(95795, "数据不存在")); return getTaxDeclarationApiFlowStatisticService(user).exportFlowStatisticsDetail(dtoList); } From 76dee330be4d4635f07f3bec0b625cc1af6b198d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 10 Feb 2026 17:48:12 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=B8=AA=E7=A8=8E=E6=9C=88=E5=BA=A6?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/TaxDeclarationApiFlowStatisticDetailListDTO.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/entity/taxapiflow/dto/TaxDeclarationApiFlowStatisticDetailListDTO.java b/src/com/engine/salary/entity/taxapiflow/dto/TaxDeclarationApiFlowStatisticDetailListDTO.java index e3c71155f..8f095c351 100644 --- a/src/com/engine/salary/entity/taxapiflow/dto/TaxDeclarationApiFlowStatisticDetailListDTO.java +++ b/src/com/engine/salary/entity/taxapiflow/dto/TaxDeclarationApiFlowStatisticDetailListDTO.java @@ -29,11 +29,11 @@ public class TaxDeclarationApiFlowStatisticDetailListDTO { private Long taxAgentId; @JsonIgnore - @TableTitle(title = "个税扣缴义务人",key = "taxAgentName",dataIndex = "taxAgentName") +// @TableTitle(title = "个税扣缴义务人",key = "taxAgentName",dataIndex = "taxAgentName") private String taxAgentName; //税款所属期 - @TableTitle(title = "税款所属期",key = "taxMonth",dataIndex = "税款所属期") + @TableTitle(title = "税款所属期",key = "taxMonth",dataIndex = "taxMonth") private String taxMonth; //月使用流量数