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))