From 64ad0a30d4237d119da9cbc45a32e172ce1c011d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 21 Apr 2025 10:33:06 +0800 Subject: [PATCH 01/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dsql=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/DM/sql202411190103.sql | 36 ----------------- resource/sqlupgrade/DM/sql202504020203.sql | 36 +++++++++++++++++ resource/sqlupgrade/GS/sql202411190103.sql | 36 ----------------- resource/sqlupgrade/GS/sql202504020203.sql | 36 +++++++++++++++++ resource/sqlupgrade/JC/sql202411190103.sql | 36 ----------------- resource/sqlupgrade/JC/sql202504020203.sql | 36 +++++++++++++++++ resource/sqlupgrade/Mysql/sql202411190103.sql | 36 ----------------- resource/sqlupgrade/Mysql/sql202504020203.sql | 36 +++++++++++++++++ .../sqlupgrade/Oracle/sql202411190103.sql | 37 ------------------ .../sqlupgrade/Oracle/sql202504020203.sql | 36 +++++++++++++++++ resource/sqlupgrade/PG/sql202411190103.sql | 37 ------------------ resource/sqlupgrade/PG/sql202504020203.sql | 36 +++++++++++++++++ .../sqlupgrade/SQLServer/sql202411190103.sql | 39 ------------------- .../sqlupgrade/SQLServer/sql202504020203.sql | 38 ++++++++++++++++++ resource/sqlupgrade/ST/sql202411190103.sql | 36 ----------------- resource/sqlupgrade/ST/sql202504020203.sql | 36 +++++++++++++++++ 16 files changed, 290 insertions(+), 293 deletions(-) diff --git a/resource/sqlupgrade/DM/sql202411190103.sql b/resource/sqlupgrade/DM/sql202411190103.sql index 1d13e52dd..a02da0e03 100644 --- a/resource/sqlupgrade/DM/sql202411190103.sql +++ b/resource/sqlupgrade/DM/sql202411190103.sql @@ -32,39 +32,3 @@ CREATE TABLE hrsa_push_setting_item ); / -CREATE TABLE hrsa_push_record -( - id NUMBER(38,0) NOT NULL, - name varchar2(200), - setting_id NUMBER(38,0), - mode_id number, - table_name varchar2(100), - acct_record_id NUMBER(38,0), - type number, - status number, - start_time date, - end_time date, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -); -/ - -CREATE TABLE hrsa_push_record_detail -( - id NUMBER(38,0) NOT NULL, - record_id NUMBER(38,0), - acct_emp_id NUMBER(38,0), - formula CLOB, - execute_time date, - status number, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -); -/ - diff --git a/resource/sqlupgrade/DM/sql202504020203.sql b/resource/sqlupgrade/DM/sql202504020203.sql index d54eff0ca..fb88e05b0 100644 --- a/resource/sqlupgrade/DM/sql202504020203.sql +++ b/resource/sqlupgrade/DM/sql202504020203.sql @@ -1,3 +1,39 @@ +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + formula CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); / diff --git a/resource/sqlupgrade/GS/sql202411190103.sql b/resource/sqlupgrade/GS/sql202411190103.sql index 1d13e52dd..a02da0e03 100644 --- a/resource/sqlupgrade/GS/sql202411190103.sql +++ b/resource/sqlupgrade/GS/sql202411190103.sql @@ -32,39 +32,3 @@ CREATE TABLE hrsa_push_setting_item ); / -CREATE TABLE hrsa_push_record -( - id NUMBER(38,0) NOT NULL, - name varchar2(200), - setting_id NUMBER(38,0), - mode_id number, - table_name varchar2(100), - acct_record_id NUMBER(38,0), - type number, - status number, - start_time date, - end_time date, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -); -/ - -CREATE TABLE hrsa_push_record_detail -( - id NUMBER(38,0) NOT NULL, - record_id NUMBER(38,0), - acct_emp_id NUMBER(38,0), - formula CLOB, - execute_time date, - status number, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -); -/ - diff --git a/resource/sqlupgrade/GS/sql202504020203.sql b/resource/sqlupgrade/GS/sql202504020203.sql index d54eff0ca..fb88e05b0 100644 --- a/resource/sqlupgrade/GS/sql202504020203.sql +++ b/resource/sqlupgrade/GS/sql202504020203.sql @@ -1,3 +1,39 @@ +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + formula CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); / diff --git a/resource/sqlupgrade/JC/sql202411190103.sql b/resource/sqlupgrade/JC/sql202411190103.sql index 1d13e52dd..a02da0e03 100644 --- a/resource/sqlupgrade/JC/sql202411190103.sql +++ b/resource/sqlupgrade/JC/sql202411190103.sql @@ -32,39 +32,3 @@ CREATE TABLE hrsa_push_setting_item ); / -CREATE TABLE hrsa_push_record -( - id NUMBER(38,0) NOT NULL, - name varchar2(200), - setting_id NUMBER(38,0), - mode_id number, - table_name varchar2(100), - acct_record_id NUMBER(38,0), - type number, - status number, - start_time date, - end_time date, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -); -/ - -CREATE TABLE hrsa_push_record_detail -( - id NUMBER(38,0) NOT NULL, - record_id NUMBER(38,0), - acct_emp_id NUMBER(38,0), - formula CLOB, - execute_time date, - status number, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -); -/ - diff --git a/resource/sqlupgrade/JC/sql202504020203.sql b/resource/sqlupgrade/JC/sql202504020203.sql index d54eff0ca..fb88e05b0 100644 --- a/resource/sqlupgrade/JC/sql202504020203.sql +++ b/resource/sqlupgrade/JC/sql202504020203.sql @@ -1,3 +1,39 @@ +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + formula CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); / diff --git a/resource/sqlupgrade/Mysql/sql202411190103.sql b/resource/sqlupgrade/Mysql/sql202411190103.sql index fdfc32280..9ceb2c5b9 100644 --- a/resource/sqlupgrade/Mysql/sql202411190103.sql +++ b/resource/sqlupgrade/Mysql/sql202411190103.sql @@ -33,39 +33,3 @@ CREATE TABLE hrsa_push_setting_item PRIMARY KEY (id) USING BTREE ); - -CREATE TABLE hrsa_push_record -( - id bigint(0) NOT NULL, - name varchar(200), - setting_id bigint(0), - mode_id int(0), - table_name varchar(100), - acct_record_id bigint(0), - type int(0), - status int(0), - start_time datetime(0), - end_time datetime(0), - creator bigint(0), - create_time datetime(0), - update_time datetime(0), - delete_type int(0), - tenant_key varchar(10), - PRIMARY KEY (id) USING BTREE -); - -CREATE TABLE hrsa_push_record_detail -( - id bigint(0) NOT NULL, - record_id bigint(0), - acct_emp_id bigint(0), - formula text, - execute_time datetime(0), - status int(0), - creator bigint(0), - create_time datetime(0), - update_time datetime(0), - delete_type int(0), - tenant_key varchar(10), - PRIMARY KEY (id) USING BTREE -); \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202504020203.sql b/resource/sqlupgrade/Mysql/sql202504020203.sql index f7f94d4b6..43798afc8 100644 --- a/resource/sqlupgrade/Mysql/sql202504020203.sql +++ b/resource/sqlupgrade/Mysql/sql202504020203.sql @@ -1,3 +1,39 @@ +CREATE TABLE hrsa_push_record +( + id bigint(0) NOT NULL, + name varchar(200), + setting_id bigint(0), + mode_id int(0), + table_name varchar(100), + acct_record_id bigint(0), + type int(0), + status int(0), + start_time datetime(0), + end_time datetime(0), + creator bigint(0), + create_time datetime(0), + update_time datetime(0), + delete_type int(0), + tenant_key varchar(10), + PRIMARY KEY (id) USING BTREE +); + +CREATE TABLE hrsa_push_record_detail +( + id bigint(0) NOT NULL, + record_id bigint(0), + acct_emp_id bigint(0), + formula text, + execute_time datetime(0), + status int(0), + creator bigint(0), + create_time datetime(0), + update_time datetime(0), + delete_type int(0), + tenant_key varchar(10), + PRIMARY KEY (id) USING BTREE +); + ALTER TABLE hrsa_push_record ADD COLUMN fail_reason varchar(4000); ALTER TABLE hrsa_push_record_detail ADD COLUMN fail_reason varchar(4000) ; diff --git a/resource/sqlupgrade/Oracle/sql202411190103.sql b/resource/sqlupgrade/Oracle/sql202411190103.sql index 09f3ee1bd..68b19ec3e 100644 --- a/resource/sqlupgrade/Oracle/sql202411190103.sql +++ b/resource/sqlupgrade/Oracle/sql202411190103.sql @@ -31,41 +31,4 @@ CREATE TABLE hrsa_push_setting_item delete_type number, tenant_key varchar2(10) ) -/ - - -CREATE TABLE hrsa_push_record -( - id NUMBER(38,0) NOT NULL, - name varchar2(200), - setting_id NUMBER(38,0), - mode_id number, - table_name varchar2(100), - acct_record_id NUMBER(38,0), - type number, - status number, - start_time date, - end_time date, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -) -/ - -CREATE TABLE hrsa_push_record_detail -( - id NUMBER(38,0) NOT NULL, - record_id NUMBER(38,0), - acct_emp_id NUMBER(38,0), - formula CLOB, - execute_time date, - status number, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -) / \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202504020203.sql b/resource/sqlupgrade/Oracle/sql202504020203.sql index ea71581d2..2246611d0 100644 --- a/resource/sqlupgrade/Oracle/sql202504020203.sql +++ b/resource/sqlupgrade/Oracle/sql202504020203.sql @@ -1,3 +1,39 @@ +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +) +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + formula CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +) +/ + ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); / diff --git a/resource/sqlupgrade/PG/sql202411190103.sql b/resource/sqlupgrade/PG/sql202411190103.sql index 5f4272388..3874c397f 100644 --- a/resource/sqlupgrade/PG/sql202411190103.sql +++ b/resource/sqlupgrade/PG/sql202411190103.sql @@ -31,41 +31,4 @@ CREATE TABLE hrsa_push_setting_item delete_type int, tenant_key varchar(10), PRIMARY KEY (id) -); - - -CREATE TABLE hrsa_push_record -( - id bigint NOT NULL, - name varchar(200), - setting_id bigint, - mode_id int, - table_name varchar(100), - acct_record_id bigint, - type int, - status int, - start_time timestamp, - end_time timestamp, - creator bigint, - create_time timestamp, - update_time timestamp, - delete_type int, - tenant_key varchar(10), - PRIMARY KEY (id) -); - -CREATE TABLE hrsa_push_record_detail -( - id bigint NOT NULL, - record_id bigint, - acct_emp_id bigint, - formula text, - execute_time timestamp, - status int, - creator bigint, - create_time timestamp, - update_time timestamp, - delete_type int, - tenant_key varchar(10), - PRIMARY KEY (id) ); \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202504020203.sql b/resource/sqlupgrade/PG/sql202504020203.sql index adb7b31e2..6643f1adf 100644 --- a/resource/sqlupgrade/PG/sql202504020203.sql +++ b/resource/sqlupgrade/PG/sql202504020203.sql @@ -1,3 +1,39 @@ +CREATE TABLE hrsa_push_record +( + id bigint NOT NULL, + name varchar(200), + setting_id bigint, + mode_id int, + table_name varchar(100), + acct_record_id bigint, + type int, + status int, + start_time timestamp, + end_time timestamp, + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +); + +CREATE TABLE hrsa_push_record_detail +( + id bigint NOT NULL, + record_id bigint, + acct_emp_id bigint, + formula text, + execute_time timestamp, + status int, + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +); + alter table hrsa_push_record add fail_reason VARCHAR(4000) ; alter table hrsa_push_record_detail add fail_reason VARCHAR(4000) ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202411190103.sql b/resource/sqlupgrade/SQLServer/sql202411190103.sql index dd06040a8..334e78b42 100644 --- a/resource/sqlupgrade/SQLServer/sql202411190103.sql +++ b/resource/sqlupgrade/SQLServer/sql202411190103.sql @@ -33,43 +33,4 @@ CREATE TABLE hrsa_push_setting_item tenant_key varchar(10), PRIMARY KEY (id) ) -GO - - -CREATE TABLE hrsa_push_record -( - id bigint NOT NULL, - name varchar(200), - setting_id bigint, - mode_id int, - table_name varchar(100), - acct_record_id bigint, - type int, - status int, - start_time datetime, - end_time datetime, - creator bigint, - create_time datetime, - update_time datetime, - delete_type int, - tenant_key varchar(10), - PRIMARY KEY (id) -) -GO - -CREATE TABLE hrsa_push_record_detail -( - id bigint NOT NULL, - record_id bigint, - acct_emp_id bigint, - formula text, - execute_time datetime, - status int, - creator bigint, - create_time datetime, - update_time datetime, - delete_type int, - tenant_key varchar(10), - PRIMARY KEY (id) -) GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202504020203.sql b/resource/sqlupgrade/SQLServer/sql202504020203.sql index 312077f79..fbedb9edd 100644 --- a/resource/sqlupgrade/SQLServer/sql202504020203.sql +++ b/resource/sqlupgrade/SQLServer/sql202504020203.sql @@ -1,3 +1,41 @@ +CREATE TABLE hrsa_push_record +( + id bigint NOT NULL, + name varchar(200), + setting_id bigint, + mode_id int, + table_name varchar(100), + acct_record_id bigint, + type int, + status int, + start_time datetime, + end_time datetime, + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +) +GO + +CREATE TABLE hrsa_push_record_detail +( + id bigint NOT NULL, + record_id bigint, + acct_emp_id bigint, + formula text, + execute_time datetime, + status int, + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10), + PRIMARY KEY (id) +) +GO + alter table hrsa_push_record add fail_reason VARCHAR(4000) go diff --git a/resource/sqlupgrade/ST/sql202411190103.sql b/resource/sqlupgrade/ST/sql202411190103.sql index 1d13e52dd..a02da0e03 100644 --- a/resource/sqlupgrade/ST/sql202411190103.sql +++ b/resource/sqlupgrade/ST/sql202411190103.sql @@ -32,39 +32,3 @@ CREATE TABLE hrsa_push_setting_item ); / -CREATE TABLE hrsa_push_record -( - id NUMBER(38,0) NOT NULL, - name varchar2(200), - setting_id NUMBER(38,0), - mode_id number, - table_name varchar2(100), - acct_record_id NUMBER(38,0), - type number, - status number, - start_time date, - end_time date, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -); -/ - -CREATE TABLE hrsa_push_record_detail -( - id NUMBER(38,0) NOT NULL, - record_id NUMBER(38,0), - acct_emp_id NUMBER(38,0), - formula CLOB, - execute_time date, - status number, - creator NUMBER(38,0), - create_time date, - update_time date, - delete_type number, - tenant_key varchar2(10) -); -/ - diff --git a/resource/sqlupgrade/ST/sql202504020203.sql b/resource/sqlupgrade/ST/sql202504020203.sql index d54eff0ca..fb88e05b0 100644 --- a/resource/sqlupgrade/ST/sql202504020203.sql +++ b/resource/sqlupgrade/ST/sql202504020203.sql @@ -1,3 +1,39 @@ +CREATE TABLE hrsa_push_record +( + id NUMBER(38,0) NOT NULL, + name varchar2(200), + setting_id NUMBER(38,0), + mode_id number, + table_name varchar2(100), + acct_record_id NUMBER(38,0), + type number, + status number, + start_time date, + end_time date, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_push_record_detail +( + id NUMBER(38,0) NOT NULL, + record_id NUMBER(38,0), + acct_emp_id NUMBER(38,0), + formula CLOB, + execute_time date, + status number, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); / From 0e93cbab0494284e80310b51b34fcebc36167f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 21 Apr 2025 10:37:44 +0800 Subject: [PATCH 02/26] t --- .../entity/salaryacct/param/SalaryAcctCalculateParam.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java index 52c3b7f13..d07b79a6b 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java @@ -20,7 +20,7 @@ import java.util.Collection; @Builder @NoArgsConstructor @AllArgsConstructor -public class SalaryAcctCalculateParam { +public class SalaryAcctCalculateParam { //核算人员的id,不是employeeId而是salaryAcctEmpId private Collection ids; From 552cee8a6f984b8c54138b71a4c63ff38aac6ed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 21 Apr 2025 15:49:28 +0800 Subject: [PATCH 03/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E8=AE=A1=E7=A8=8E=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java index d5155f0ae..d5399daab 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.salaryacct.bo; +import cn.hutool.core.util.StrUtil; import com.engine.salary.constant.TaxDeclarationDataIndexConstant; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; @@ -73,6 +74,9 @@ public class SalaryAcctConsolidatedTaxBO { .filter(e -> Objects.equals(e.getSalaryItemId(), optional.get())) .map(e -> SalaryEntityUtil.empty2Zero(e.getResultValue())) .reduce(BigDecimal.ZERO, BigDecimal::add); + if (StrUtil.isBlank(resultValue)) { + resultValue = "0.00"; + } return new BigDecimal(resultValue).add(income).toPlainString(); } // 个税调差为0 @@ -98,6 +102,9 @@ public class SalaryAcctConsolidatedTaxBO { .map(e -> SalaryEntityUtil.empty2Zero(e.getResultValue())) .reduce(BigDecimal.ZERO, BigDecimal::add); } + if (StrUtil.isBlank(resultValue)) { + resultValue = "0.00"; + } return new BigDecimal(resultValue).add(refundedOrSupplementedTax).subtract(taxAdjustment).toPlainString(); } return resultValue; From 6532bfdd0775e9795f40ac2afaf37b5a67b2c2b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 22 Apr 2025 15:33:28 +0800 Subject: [PATCH 04/26] =?UTF-8?q?=E6=8B=93=E6=89=91=E5=9B=BE=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=9D=9E=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalarySobItemServiceImpl.java | 221 ++++++++++++++++-- 1 file changed, 202 insertions(+), 19 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 781c99af5..15a14933e 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -9,20 +9,29 @@ import com.engine.salary.biz.SalarySobItemGroupBiz; import com.engine.salary.biz.SalarySobItemHideBiz; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.AddUpDeduction; +import com.engine.salary.entity.datacollection.AddUpSituation; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.datacollection.dto.AttendQuoteDataDTO; +import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; +import com.engine.salary.entity.datacollection.po.OtherDeductionPO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.entity.salaryacct.bo.CalculateFormulaVarBO; +import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculateBO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculatePriorityBO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; -import com.engine.salary.entity.salaryarchive.config.ArchiveFieldConfig; +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salaryformula.ExpressFormula; -import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryformula.config.FormluaConfig; import com.engine.salary.entity.salaryformula.po.FormulaPO; import com.engine.salary.entity.salaryformula.po.FormulaVar; -import com.engine.salary.entity.salaryitem.config.SalaryItemAllConfig; -import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO; import com.engine.salary.entity.salarysob.dto.SalaryItemTopologyDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemFormDTO; import com.engine.salary.entity.salarysob.param.SalaryItemTopologyQueryParam; @@ -31,6 +40,7 @@ import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; +import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.enums.salaryformula.SalarySQLReferenceEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -46,11 +56,13 @@ import com.engine.salary.util.valid.ValidUtil; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.general.BaseBean; import weaver.hrm.User; +import java.time.Month; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -121,6 +133,59 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } // private LoggerTemplate salarySobLoggerTemplate; + private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) { + return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); + } + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + + private SIAccountService getSIAccountService(User user) { + return ServiceUtil.getService(SIAccountServiceImpl.class, user); + } + + private AttendQuoteFieldService getAttendQuoteFieldService(User user) { + return ServiceUtil.getService(AttendQuoteFieldServiceImpl.class, user); + } + + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + private SalaryArchiveService getSalaryArchiveService(User user) { + return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); + } + + private AddUpSituationService getAddUpSituationService(User user) { + return ServiceUtil.getService(AddUpSituationServiceImpl.class, user); + } + + private AddUpDeductionService getAddUpDeductionService(User user) { + return ServiceUtil.getService(AddUpDeductionServiceImpl.class, user); + } + + private OtherDeductionService getOtherDeductionService(User user) { + return ServiceUtil.getService(OtherDeductionServiceImpl.class, user); + } + + private AttendQuoteDataService getAttendQuoteDataService(User user) { + return ServiceUtil.getService(AttendQuoteDataServiceImpl.class, user); + } + + private VariableArchiveService getVariableArchiveService(User user) { + return ServiceUtil.getService(VariableArchiveServiceImpl.class, user); + } + + @Override public List list() { return salarySobItemMapper.listAll(); @@ -629,7 +694,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } salarySobItemPO.setFormula(formulaPO); } - if(SalaryEntityUtil.isNotNullOrEmpty(salarySobItemPO.getSalaryItemId())){ + if (SalaryEntityUtil.isNotNullOrEmpty(salarySobItemPO.getSalaryItemId())) { SalaryItemPO salaryItemPO = itemIdMap.get(salarySobItemPO.getSalaryItemId()); salarySobItemPO.setSalaryItem(salaryItemPO); } @@ -677,7 +742,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe salarySobItemFormDTO .setId(salarySobItemPO.getId()) .setName(salaryItemPO.getName()) - .setItemHide(salarySobItemPO.getItemHide()==null?0:Integer.parseInt(salarySobItemPO.getItemHide().toString())) + .setItemHide(salarySobItemPO.getItemHide() == null ? 0 : Integer.parseInt(salarySobItemPO.getItemHide().toString())) .setDataType(salaryItemPO.getDataType()) .setRoundingMode(salarySobItemPO.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : salarySobItemPO.getRoundingMode()) .setPattern(salarySobItemPO.getPattern() == null ? salaryItemPO.getPattern() : salarySobItemPO.getPattern()) @@ -726,7 +791,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe salaryItemTopologyDTO.setSalaryItemId(salaryItemPO.getId()); salaryItemTopologyDTO.setSalaryItemName(salaryItemPO.getName()); salaryItemTopologyDTO.setFormula(expressFormula); - salaryItemTopologyDTO.setResult(topologyData.getResultItemMap().getOrDefault(salaryItemPO.getId(), "")); + salaryItemTopologyDTO.setResult(topologyData.getResultItemMap().getOrDefault(SalaryFormulaReferenceEnum.SALARY_ITEM.getValue() + "_" + salaryItemPO.getCode(), "")); topology(salaryItemTopologyDTO, topologyData); @@ -767,7 +832,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe for (int i = 0; i < parameters.size(); i++) { FormulaVar formulaVar = parameters.get(i); String source = formulaVar.getSource(); - String fieldId = formulaVar.getFieldId().replace(source + "_", ""); + String fieldId = formulaVar.getFieldId(); + String code = fieldId.replace(source + "_", ""); String name = formulaVar.getName(); String fieldName = formulaVar.getFieldName(); //是否是薪资项目 @@ -785,26 +851,26 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } ExpressFormula expressFormula; - if (salarySobItemCodeMap.containsKey(fieldId)) { + if (salarySobItemCodeMap.containsKey(code)) { // 如果薪资账套下重新定义了薪资项目的公式,则使用薪资账套下的公式,否则使用薪资项目本身的公式 - expressFormula = expressFormulaIdMap.get(salarySobItemCodeMap.get(fieldId).getFormulaId()); - } else if (salaryItemCodeMap.containsKey(fieldId)) { - expressFormula = expressFormulaIdMap.get(salaryItemCodeMap.get(fieldId).getFormulaId()); + expressFormula = expressFormulaIdMap.get(salarySobItemCodeMap.get(code).getFormulaId()); + } else if (salaryItemCodeMap.containsKey(code)) { + expressFormula = expressFormulaIdMap.get(salaryItemCodeMap.get(code).getFormulaId()); } else { expressFormula = null; } - SalaryItemPO salaryItemChild = isSalaryItemVar ? salaryItemCodeMap.get(fieldId) : new SalaryItemPO(); + SalaryItemPO salaryItemChild = isSalaryItemVar ? salaryItemCodeMap.get(code) : new SalaryItemPO(); SalaryItemTopologyDTO salaryItemTopologyChild = new SalaryItemTopologyDTO(); salaryItemTopologyChild.setSalaryItemId(isSalaryItemVar ? salaryItemChild.getId() : null); salaryItemTopologyChild.setSalaryItemName(isSalaryItemVar ? salaryItemChild.getName() : fieldName); salaryItemTopologyChild.setFormula(expressFormula); - salaryItemTopologyChild.setResult(isSalaryItemVar ? topologyData.getResultItemMap().getOrDefault(salaryItemChild.getId(), "") : ""); + salaryItemTopologyChild.setResult(topologyData.getResultItemMap().getOrDefault(fieldId, "")); salaryItemTopologyDTOChildren.add(salaryItemTopologyChild); if (isSalaryItemVar) { - SalaryItemPO salaryItemChildChild = salaryItemCodeMap.get(fieldId); + SalaryItemPO salaryItemChildChild = salaryItemCodeMap.get(code); SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(salaryItemChildChild.getValueType()); if (salaryValueTypeEnum != SalaryValueTypeEnum.INPUT) { topologyData.setSalaryItemId(salaryItemChildChild.getId()); @@ -849,9 +915,126 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe //薪资结果 Long acctEmpId = param.getAcctEmpId(); if (acctEmpId != null) { - List results = getSalaryAcctResultService(user).listBySalaryAcctEmployeeId(acctEmpId); - Map resultItemMap = SalaryEntityUtil.convert2Map(results, SalaryAcctResultPO::getSalaryItemId, SalaryAcctResultPO::getResultValue); - topologyData.setResultItemMap(resultItemMap); + SalaryAcctEmployeePO acctEmployeePO = getSalaryAcctEmployeeService(user).getById(acctEmpId); + List acctEmployeePOS = new ArrayList<>(); + acctEmployeePOS.add(acctEmployeePO); + + Long salaryAcctRecordId = acctEmployeePO.getSalaryAcctRecordId(); + + // 1、查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + //查询对应账套 + SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId()); + if (Objects.isNull(salarySobPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资账套不存在或已被删除")); + } + + // 不是查询薪资账套下实时的薪资项目,而是查询发起薪资核算时存储的薪资项目快照 + SalaryAcctConfig salaryAcctSobConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(salaryAcctRecordId); + + // 1.1、如果薪资核算记录已经归档了,就不能继续核算 + if (!Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99148, "当前薪资核算记录已归档,请重新打开后再进行核算")); + } + // 2、查询薪资核算记录的薪资周期、考勤周期等 + SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(salaryAcctRecordId); + // 3、查询薪资核算记录所用薪资账套的薪资项目副本 + List salarySobItemPOS = salaryAcctSobConfig.getSalarySobItems(); + if (CollectionUtils.isEmpty(salarySobItemPOS)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99151, "当前所用的薪资账套未选择任何薪资项目,无法核算")); + } + // 回算薪资项目 + List salarySobBackItems = Collections.emptyList(); + if (Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), 1)) { + salarySobBackItems = salaryAcctSobConfig.getSalarySobBackItems(); + } + // 4、查询当前租户的所有薪资项目 + List salaryItemPOS = getSalaryItemService(user).listAll(); + // 6、查询社保福利的所有字段 + Map welfareColumns = getSIAccountService(user).welfareColumns(); + // 7、查询考勤引用的所有字段 + List attendQuoteFieldListDTOS = getAttendQuoteFieldService(user).listAll(); + List variableItemPOS = getVariableItemService(user).listAll(); + + // 8、查询公式详情 + Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); + formulaIds.addAll(SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getFormulaId)); + formulaIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getFormulaId)); + List formulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); + // 本次运算的回算薪资项目所涉及的变量 +// Set issuedFieldIds = getIssuedFieldIds(salarySobBackItems); + + // 10、根据id查询其他合并计税的薪资核算记录 + List otherSalaryAcctRecordPOS = getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAcctRecordPO.getId()); + + // 12.3、生成本次运算的key + String calculateKey = UUID.randomUUID().toString(); + // 12.5、多线程运算,运算结果存放在临时表中 + SalaryAcctCalculateBO salaryAcctCalculateBO = new SalaryAcctCalculateBO() + .setSalaryAcctRecordPO(salaryAcctRecordPO) + .setSalarySobPO(salarySobPO) + .setSalarySobCycleDTO(salarySobCycleDTO) + .setOtherSalaryAcctRecordPOS(otherSalaryAcctRecordPOS) + .setSalarySobItemPOS(salarySobItemPOS) + .setSalaryItemIdWithPriorityList(new ArrayList<>()) + .setExpressFormulas(formulas) + .setSalaryItemPOS(salaryItemPOS) + .setSalarySobAdjustRulePOS(new ArrayList<>()) + .setWelfareColumns(MapUtils.emptyIfNull(welfareColumns)) + .setAttendQuoteFieldListDTOS(attendQuoteFieldListDTOS) + .setSalaryAcctEmployeePOS(acctEmployeePOS) + .setIssuedFieldIds(new HashSet<>()) + .setResults(null) + .setCalculateKey(calculateKey) + .setVariableItems(variableItemPOS) + .setTaxDeclarationFunction(null) + .setTaxIds(null); + + + List employeeIds = Collections.singletonList(acctEmployeePO.getEmployeeId()); + List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); + Long taxAgentId = salaryAcctCalculateBO.getSalarySobPO().getTaxAgentId(); + List salaryArchiveData = getSalaryArchiveService(user).getSalaryArchiveData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId); + List addUpSituationPOS; + if (salarySobCycleDTO.getTaxCycle().getMonth() == Month.JANUARY) { + // 3.1、如果当前税款所属期是本年度第一个税款所属期,就不需要查询往期累计情况 + addUpSituationPOS = Collections.emptyList(); + } else { + addUpSituationPOS = getAddUpSituationService(user).getAddUpSituationList(salarySobCycleDTO.getTaxCycle().plusMonths(-1), employeeIds); + } + List addUpDeductionPOS = getAddUpDeductionService(user).getAddUpDeductionList(salarySobCycleDTO.getTaxCycle(), employeeIds, taxAgentId); + List otherDeductionPOS = getOtherDeductionService(user).getOtherDeductionList(salarySobCycleDTO.getTaxCycle(), employeeIds, taxAgentId); + List> welfareData = new ArrayList<>(); + welfareData.addAll(getSIAccountService(user).welfareData(salarySobCycleDTO.getSocialSecurityCycle().toString(), employeeIds, taxAgentId)); + List attendQuoteDataDTOS = getAttendQuoteDataService(user).getAttendQuoteData(salarySobCycleDTO.getSalaryMonth(), salarySobCycleDTO.getSalarySobId(), employeeIds); + List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList()); + List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); + Map empItemValueMap = SalaryEntityUtil.convert2Map(salaryAcctResultPOS, p -> p.getSalaryAcctEmpId() + "_" + p.getSalaryItemId(), SalaryAcctResultPO::getResultValue); + List> variableArchiveList = getVariableArchiveService(user).listBySalaryMonthAndEmployeeIds(salarySobCycleDTO.getSalaryMonth(), employeeIds, taxAgentId); + Map> collect = salaryAcctResultPOS.stream().collect(Collectors.groupingBy(k -> k.getEmployeeId() + "-" + k.getTaxAgentId() + "-" + k.getSalaryItemId())); + Map salaryAcctResultPOMap = new HashMap<>(); + for (Map.Entry> et : collect.entrySet()) { + salaryAcctResultPOMap.put(et.getKey(), et.getValue().get(0).getOriginResultValue()); + } + Set otherSalaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getOtherSalaryAcctRecordPOS(), SalaryAcctRecordPO::getId); + List otherSalaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndEmployeeIds(otherSalaryAcctRecordIds, employeeIds); + Map> otherSalaryAcctResultPOMap = SalaryEntityUtil.group2Map(otherSalaryAcctResultPOS, e -> e.getEmployeeId() + "_" + e.getTaxAgentId()); + List otherSalaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIdsAndEmployeeIds(otherSalaryAcctRecordIds, employeeIds); + Map> otherSalaryAcctEmployeePOMap = SalaryEntityUtil.group2Map(otherSalaryAcctEmployeePOS, salaryAcctEmployeePO -> salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId()); +// List lastMonthResultPOS = getSalaryAcctResultService(user).listBySobSalaryMonth(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth().minusMonths(1), 1), salaryAcctCalculateBO.getSalarySobPO().getId(), employeeIds); + CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList); + Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); + + Map resultMap = new HashMap<>(); + formulaVarMap.entrySet().forEach(e -> { + e.getValue().forEach(f -> { + resultMap.put(f.getFieldId(), f.getFieldValue()); + }); + }); + topologyData.setResultItemMap(resultMap); } else { topologyData.setResultItemMap(new HashMap<>()); } @@ -885,7 +1068,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe /** * 核算结果 */ - Map resultItemMap; + Map resultItemMap; } From 595fceddaa0ec77012a7337c320a150b5921d19b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 22 Apr 2025 15:41:11 +0800 Subject: [PATCH 05/26] =?UTF-8?q?=E6=8B=93=E6=89=91=E5=9B=BE=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=9D=9E=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalarySobItemServiceImpl.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 96a8c7abf..76ec0d017 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -41,15 +41,16 @@ import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; +import com.engine.salary.enums.auth.AuthFilterTypeEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.enums.salaryformula.SalarySQLReferenceEnum; -import com.engine.salary.enums.auth.AuthFilterTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salarysob.SalarySobDefaultItemMapper; import com.engine.salary.mapper.salarysob.SalarySobEmpFieldMapper; import com.engine.salary.mapper.salarysob.SalarySobItemMapper; import com.engine.salary.service.*; +import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.IdGenerator; @@ -992,8 +993,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe List employeeIds = Collections.singletonList(acctEmployeePO.getEmployeeId()); List simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); - Long taxAgentId = salaryAcctCalculateBO.getSalarySobPO().getTaxAgentId(); - List salaryArchiveData = getSalaryArchiveService(user).getSalaryArchiveData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId); + List taxAgentIds = salaryAcctCalculateBO.getSalarySobPO().getTaxAgentIds(); + List salaryArchiveData = getSalaryArchiveService(user).getSalaryArchiveData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentIds); List addUpSituationPOS; if (salarySobCycleDTO.getTaxCycle().getMonth() == Month.JANUARY) { // 3.1、如果当前税款所属期是本年度第一个税款所属期,就不需要查询往期累计情况 @@ -1001,15 +1002,16 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } else { addUpSituationPOS = getAddUpSituationService(user).getAddUpSituationList(salarySobCycleDTO.getTaxCycle().plusMonths(-1), employeeIds); } - List addUpDeductionPOS = getAddUpDeductionService(user).getAddUpDeductionList(salarySobCycleDTO.getTaxCycle(), employeeIds, taxAgentId); - List otherDeductionPOS = getOtherDeductionService(user).getOtherDeductionList(salarySobCycleDTO.getTaxCycle(), employeeIds, taxAgentId); + List addUpDeductionPOS = getAddUpDeductionService(user).getAddUpDeductionList(salarySobCycleDTO.getTaxCycle(), employeeIds, taxAgentIds); + List otherDeductionPOS = getOtherDeductionService(user).getOtherDeductionList(salarySobCycleDTO.getTaxCycle(), employeeIds, taxAgentIds); List> welfareData = new ArrayList<>(); - welfareData.addAll(getSIAccountService(user).welfareData(salarySobCycleDTO.getSocialSecurityCycle().toString(), employeeIds, taxAgentId)); + taxAgentIds.forEach(id -> { + welfareData.addAll(getSIAccountService(user).welfareData(salarySobCycleDTO.getSocialSecurityCycle().toString(), employeeIds, id)); + }); List attendQuoteDataDTOS = getAttendQuoteDataService(user).getAttendQuoteData(salarySobCycleDTO.getSalaryMonth(), salarySobCycleDTO.getSalarySobId(), employeeIds); List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList()); List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); - Map empItemValueMap = SalaryEntityUtil.convert2Map(salaryAcctResultPOS, p -> p.getSalaryAcctEmpId() + "_" + p.getSalaryItemId(), SalaryAcctResultPO::getResultValue); - List> variableArchiveList = getVariableArchiveService(user).listBySalaryMonthAndEmployeeIds(salarySobCycleDTO.getSalaryMonth(), employeeIds, taxAgentId); + List> variableArchiveList = getVariableArchiveService(user).listBySalaryMonthAndEmployeeIds(salarySobCycleDTO.getSalaryMonth(), employeeIds, taxAgentIds); Map> collect = salaryAcctResultPOS.stream().collect(Collectors.groupingBy(k -> k.getEmployeeId() + "-" + k.getTaxAgentId() + "-" + k.getSalaryItemId())); Map salaryAcctResultPOMap = new HashMap<>(); for (Map.Entry> et : collect.entrySet()) { @@ -1020,8 +1022,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe Map> otherSalaryAcctResultPOMap = SalaryEntityUtil.group2Map(otherSalaryAcctResultPOS, e -> e.getEmployeeId() + "_" + e.getTaxAgentId()); List otherSalaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIdsAndEmployeeIds(otherSalaryAcctRecordIds, employeeIds); Map> otherSalaryAcctEmployeePOMap = SalaryEntityUtil.group2Map(otherSalaryAcctEmployeePOS, salaryAcctEmployeePO -> salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId()); -// List lastMonthResultPOS = getSalaryAcctResultService(user).listBySobSalaryMonth(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth().minusMonths(1), 1), salaryAcctCalculateBO.getSalarySobPO().getId(), employeeIds); - CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList); + List lastMonthResultPOS = getSalaryAcctResultService(user).listBySobSalaryMonth(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth().minusMonths(1), 1), salaryAcctCalculateBO.getSalarySobPO().getId(), employeeIds); + CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList,lastMonthResultPOS); Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); Map resultMap = new HashMap<>(); From 47c267ba3ba7c5d61d7a486ed810094bdc97a108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 22 Apr 2025 15:45:56 +0800 Subject: [PATCH 06/26] =?UTF-8?q?=E6=8B=93=E6=89=91=E5=9B=BE=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=9D=9E=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SalarySobItemServiceImpl.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 76ec0d017..e830f6f9c 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -1017,11 +1017,6 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe for (Map.Entry> et : collect.entrySet()) { salaryAcctResultPOMap.put(et.getKey(), et.getValue().get(0).getOriginResultValue()); } - Set otherSalaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getOtherSalaryAcctRecordPOS(), SalaryAcctRecordPO::getId); - List otherSalaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndEmployeeIds(otherSalaryAcctRecordIds, employeeIds); - Map> otherSalaryAcctResultPOMap = SalaryEntityUtil.group2Map(otherSalaryAcctResultPOS, e -> e.getEmployeeId() + "_" + e.getTaxAgentId()); - List otherSalaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIdsAndEmployeeIds(otherSalaryAcctRecordIds, employeeIds); - Map> otherSalaryAcctEmployeePOMap = SalaryEntityUtil.group2Map(otherSalaryAcctEmployeePOS, salaryAcctEmployeePO -> salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId()); List lastMonthResultPOS = getSalaryAcctResultService(user).listBySobSalaryMonth(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth().minusMonths(1), 1), salaryAcctCalculateBO.getSalarySobPO().getId(), employeeIds); CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList,lastMonthResultPOS); Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); From 7a7030a91ce428b69df20cd307b5ab8bca82e0bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 23 Apr 2025 17:39:30 +0800 Subject: [PATCH 07/26] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E8=A1=A8=E7=A8=8E?= =?UTF-8?q?=E6=AC=BE=E6=89=80=E5=B1=9E=E6=9C=9F=E6=A3=80=E7=B4=A2=E5=92=8C?= =?UTF-8?q?=E7=94=B3=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/TaxDeclarationListDTO.java | 8 ++++---- .../param/TaxDeclarationListQueryParam.java | 17 +++++++---------- .../taxdeclaration/po/TaxDeclarationPO.java | 7 +++++++ .../taxdeclaration/TaxDeclarationMapper.xml | 6 ++++++ .../service/impl/TaxDeclarationServiceImpl.java | 7 ++----- .../salary/web/TaxDeclarationController.java | 5 +---- 6 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationListDTO.java b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationListDTO.java index f52ce6a86..420daca25 100644 --- a/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationListDTO.java +++ b/src/com/engine/salary/entity/taxdeclaration/dto/TaxDeclarationListDTO.java @@ -37,6 +37,10 @@ public class TaxDeclarationListDTO { @TableTitle(title = "薪资类型", dataIndex = "incomeCategory", key = "incomeCategory") private String incomeCategory; + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") + @TableTitle(title = "税款所属期", dataIndex = "taxCycle", key = "taxCycle") + private Date taxCycle; + @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") @TableTitle(title = "薪资所属月", dataIndex = "salaryMonth", key = "salaryMonth") private Date salaryMonth; @@ -47,10 +51,6 @@ public class TaxDeclarationListDTO { @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") private String taxAgentName; - @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8") - @TableTitle(title = "税款所属期", dataIndex = "taxCycle", key = "taxCycle") - private Date taxCycle; - //@TableTitle(title = "操作人id", dataIndex = "operateEmployeeId", key = "operateEmployeeId") private Long operateEmployeeId; diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationListQueryParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationListQueryParam.java index 521fadd56..79b4ac79a 100644 --- a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationListQueryParam.java +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationListQueryParam.java @@ -1,9 +1,12 @@ package com.engine.salary.entity.taxdeclaration.param; import com.engine.salary.common.BaseQueryParam; -import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; -import java.time.YearMonth; +import java.util.Date; /** * 个税申报记录查询条件 @@ -19,13 +22,7 @@ import java.time.YearMonth; @AllArgsConstructor public class TaxDeclarationListQueryParam extends BaseQueryParam { - //薪资所属月范围起点 - private YearMonth fromSalaryMonth; + private Date fromSalaryMonth; - //薪资所属月范围终点 - private YearMonth endSalaryMonth; - - private String fromSalaryMonthStr; - - private String endSalaryMonthStr; + private Date endSalaryMonth; } diff --git a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java index 8319f9e4d..9950f55cd 100644 --- a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java +++ b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java @@ -86,6 +86,13 @@ public class TaxDeclarationPO { LocalDateRange salaryMonths; + //"开始日期 + private Date taxCycleFromDate; + + //结束日期 + private Date taxCycleEndDate; + + private Collection taxAgentIds; } diff --git a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationMapper.xml b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationMapper.xml index 1810e8970..b034b00ff 100644 --- a/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationMapper.xml +++ b/src/com/engine/salary/mapper/taxdeclaration/TaxDeclarationMapper.xml @@ -61,6 +61,12 @@ AND salary_month #{salaryMonths.endDate} + + AND tax_cycle = ]]> #{taxCycleFromDate} + + + AND tax_cycle #{taxCycleEndDate} + AND tax_agent_id IN diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java index 4388047f9..e47049045 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java @@ -114,15 +114,12 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration // 分页参数 TaxDeclarationPO po = TaxDeclarationPO.builder().build(); - LocalDateRange localDateRange = new LocalDateRange(); if (Objects.nonNull(queryParam.getFromSalaryMonth())) { - localDateRange.setFromDate(SalaryDateUtil.localDateToDate(queryParam.getFromSalaryMonth().atDay(1))); + po.setTaxCycleFromDate(queryParam.getFromSalaryMonth()); } if (Objects.nonNull(queryParam.getEndSalaryMonth())) { - localDateRange.setEndDate(SalaryDateUtil.localDateToDate(queryParam.getEndSalaryMonth().atEndOfMonth())); + po.setTaxCycleEndDate(queryParam.getEndSalaryMonth()); } - po.setSalaryMonths(localDateRange); - // 分权 Boolean openDevolution = getTaxAgentService(user).isNeedAuth(currentEmployeeId); diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 6d2332dd4..1c65fd7a2 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -31,7 +31,6 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.StreamingOutput; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import java.text.ParseException; import java.time.LocalDate; @@ -58,10 +57,8 @@ public class TaxDeclarationController { @POST @Path("/list") @Produces(MediaType.APPLICATION_JSON) - public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclarationListQueryParam queryParam) throws ParseException { + public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclarationListQueryParam queryParam){ User user = HrmUserVarify.getUser(request, response); - queryParam.setFromSalaryMonth(SalaryDateUtil.String2YearMonth(queryParam.getFromSalaryMonthStr() == null ? "" : queryParam.getFromSalaryMonthStr())); - queryParam.setEndSalaryMonth(SalaryDateUtil.String2YearMonth(queryParam.getEndSalaryMonthStr() == null ? "" : queryParam.getEndSalaryMonthStr())); return new ResponseResult>(user).run(getTaxDeclarationWrapper(user)::listPage, queryParam); } From 491a746c75b44079a319982f4745c34f4d325790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 23 Apr 2025 17:45:14 +0800 Subject: [PATCH 08/26] =?UTF-8?q?=E7=94=B3=E6=8A=A5=E8=A1=A8=E7=A8=8E?= =?UTF-8?q?=E6=AC=BE=E6=89=80=E5=B1=9E=E6=9C=9F=E6=A3=80=E7=B4=A2=E5=92=8C?= =?UTF-8?q?=E7=94=B3=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TaxDeclarationServiceImpl.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java index dee5e3801..963b5a3d2 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java @@ -126,19 +126,6 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration po.setTaxCycleEndDate(queryParam.getEndSalaryMonth()); } - - // 分权 - Boolean openDevolution = getTaxAgentService(user).isNeedAuth(currentEmployeeId); - if (openDevolution) { - // 查询负责管理的个税扣缴义务人 - Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgents(currentEmployeeId); - if (CollectionUtils.isEmpty(taxAgentPOS)) { - return new PageInfo<>(new ArrayList<>()); - } - Set taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId); - po.setTaxAgentIds(taxAgentIds); - } - // 查询个税申报表 List taxDeclarationPOS = getTaxDeclarationMapper().listSome(po); From 0bdc48f1c20fc0be2bbe728d4d61c6e36ba0ec72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 24 Apr 2025 11:03:13 +0800 Subject: [PATCH 09/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BD=92=E6=A1=A3?= =?UTF-8?q?=E5=90=8E=E6=9F=A5=E7=9C=8B=E6=8B=93=E6=89=91=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalarySobItemServiceImpl.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 15a14933e..3e4d548b5 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -40,7 +40,6 @@ import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; -import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.enums.salaryformula.SalarySQLReferenceEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -935,17 +934,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe // 不是查询薪资账套下实时的薪资项目,而是查询发起薪资核算时存储的薪资项目快照 SalaryAcctConfig salaryAcctSobConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(salaryAcctRecordId); - // 1.1、如果薪资核算记录已经归档了,就不能继续核算 - if (!Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99148, "当前薪资核算记录已归档,请重新打开后再进行核算")); - } // 2、查询薪资核算记录的薪资周期、考勤周期等 SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(salaryAcctRecordId); // 3、查询薪资核算记录所用薪资账套的薪资项目副本 List salarySobItemPOS = salaryAcctSobConfig.getSalarySobItems(); - if (CollectionUtils.isEmpty(salarySobItemPOS)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99151, "当前所用的薪资账套未选择任何薪资项目,无法核算")); - } // 回算薪资项目 List salarySobBackItems = Collections.emptyList(); if (Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), 1)) { From 22f494fe120376f975c8b46c78d463889e08db98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 24 Apr 2025 16:02:34 +0800 Subject: [PATCH 10/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8C=89=E7=85=A7?= =?UTF-8?q?=E6=89=A3=E7=BC=B4=E4=B9=89=E5=8A=A1=E4=BA=BA=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E6=A3=80=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/TaxDeclarationListQueryParam.java | 9 +++++++++ .../service/impl/TaxDeclarationServiceImpl.java | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationListQueryParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationListQueryParam.java index 79b4ac79a..a7de714a9 100644 --- a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationListQueryParam.java +++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationListQueryParam.java @@ -1,11 +1,13 @@ package com.engine.salary.entity.taxdeclaration.param; import com.engine.salary.common.BaseQueryParam; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; + import java.util.Date; /** @@ -22,7 +24,14 @@ import java.util.Date; @AllArgsConstructor public class TaxDeclarationListQueryParam extends BaseQueryParam { + //薪资所属月范围起点 + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date fromSalaryMonth; + //薪资所属月范围终点 + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date endSalaryMonth; + + //个税扣缴义务人菜单") + private String taxAgentName; } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java index e47049045..afe5a6991 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; @@ -9,6 +10,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationBO; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; @@ -135,6 +137,15 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration // 查询个税申报表 List taxDeclarationPOS = getTaxDeclarationMapper().listSome(po); + + + if (StrUtil.isNotBlank(queryParam.getTaxAgentName())) { + List taxAgentPOs = getTaxAgentService(user).list(TaxAgentQueryParam.builder().name(queryParam.getTaxAgentName()).build()); + Set taxAgentIds = SalaryEntityUtil.properties(taxAgentPOs, TaxAgentPO::getId); + taxDeclarationPOS = taxDeclarationPOS.stream().filter(tax -> taxAgentIds.contains(tax.getTaxAgentId())).collect(Collectors.toList()); + } + + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), taxDeclarationPOS, TaxDeclarationPO.class); From ee3fd8da8e46cea728f10f04631b0938b04564cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 24 Apr 2025 16:19:23 +0800 Subject: [PATCH 11/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8C=89=E7=85=A7?= =?UTF-8?q?=E6=89=A3=E7=BC=B4=E4=B9=89=E5=8A=A1=E4=BA=BA=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E6=A3=80=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/TaxDeclareRecordServiceImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index af3d81c1c..cdec3def1 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; @@ -23,6 +24,7 @@ import com.engine.salary.entity.salarysob.po.SalarySobAddUpRulePO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO; import com.engine.salary.entity.taxagent.bo.TaxAgentTaxReturnBO; +import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; import com.engine.salary.entity.taxapiflow.bo.TaxApiFlowBO; @@ -250,6 +252,13 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe } List taxDeclareRecordPOS = getTaxDeclareRecordMapper().listSome(build); + + if (StrUtil.isNotBlank(queryParam.getTaxAgentName())) { + List taxAgentPOs = getTaxAgentService(user).list(TaxAgentQueryParam.builder().name(queryParam.getTaxAgentName()).build()); + Set taxAgentIds = SalaryEntityUtil.properties(taxAgentPOs, TaxAgentPO::getId); + taxDeclareRecordPOS = taxDeclareRecordPOS.stream().filter(tax -> taxAgentIds.contains(tax.getTaxAgentId())).collect(Collectors.toList()); + } + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), taxDeclareRecordPOS, TaxDeclareRecordPO.class); } From efd2eafd1ecb459897673135331c64657b863858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 24 Apr 2025 16:45:24 +0800 Subject: [PATCH 12/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E5=88=86=E9=A1=B5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/PushServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index cf01efde8..3dbb7f735 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -543,7 +543,8 @@ public class PushServiceImpl extends Service implements PushService { .build()) .collect(Collectors.toList()); - PageInfo pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, PushRecordDTO.class); + PageInfo pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), PushRecordDTO.class); + pageInfo.setList(listDTOS); pageInfo.setTotal(pushRecordPOS.size()); return pageInfo; } From 508012c82bcd9999f9bf093fd688f9ff7d0da3ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 24 Apr 2025 17:35:22 +0800 Subject: [PATCH 13/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=9F=A5=E8=AF=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/PushServiceImpl.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/service/impl/PushServiceImpl.java b/src/com/engine/salary/service/impl/PushServiceImpl.java index cf01efde8..8996e88ad 100644 --- a/src/com/engine/salary/service/impl/PushServiceImpl.java +++ b/src/com/engine/salary/service/impl/PushServiceImpl.java @@ -112,16 +112,16 @@ public class PushServiceImpl extends Service implements PushService { Map sobPOMap = SalaryEntityUtil.convert2Map(salarySobPOS, SalarySobPO::getId); List list = pushSettingPOS.stream() - .filter(po -> StrUtil.isBlank(param.getName()) || po.getName().contains(param.getName())).map( - po -> PushSettingDTO.builder() - .id(po.getId()) - .name(po.getName()) - .tableName(po.getTableName()) - .modeName(po.getModeName()) - .modeId(po.getModeId()) - .able(po.getAble()) - .salarySobs(po.getSalarySobIds().stream().map(sobPOMap::get).collect(Collectors.toList())) - .build()).collect(Collectors.toList()); + .filter(po -> StrUtil.isBlank(param.getName()) || po.getName().contains(param.getName())) + .map(po -> PushSettingDTO.builder() + .id(po.getId()) + .name(po.getName()) + .tableName(po.getTableName()) + .modeName(po.getModeName()) + .modeId(po.getModeId()) + .able(po.getAble()) + .salarySobs(po.getSalarySobIds().stream().map(sobPOMap::get).collect(Collectors.toList())) + .build()).collect(Collectors.toList()); return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), list, PushSettingDTO.class); } @@ -526,8 +526,9 @@ public class PushServiceImpl extends Service implements PushService { @Override public PageInfo recordList(RecordListQueryParam param) { List pushRecordPOS = getPushRecordMapper().listAll(); - List listDTOS = SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pushRecordPOS) + List listDTOS = pushRecordPOS .stream() + .filter(po -> StrUtil.isBlank(param.getName()) || po.getName().contains(param.getName())) .map(po -> PushRecordDTO.builder() .id(po.getId()) .name(po.getName()) @@ -544,7 +545,6 @@ public class PushServiceImpl extends Service implements PushService { .collect(Collectors.toList()); PageInfo pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, PushRecordDTO.class); - pageInfo.setTotal(pushRecordPOS.size()); return pageInfo; } From 25c8479d53c29d7eb05136b49293e3d87d9fbdfc Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 24 Apr 2025 17:48:54 +0800 Subject: [PATCH 14/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E5=8F=B0=E8=B4=A6=E7=BA=BF=E4=B8=8B=E5=AF=B9?= =?UTF-8?q?=E6=AF=94=E5=92=8C=E6=A0=B8=E7=AE=97=E4=BA=BA=E6=95=B0=E4=B8=8D?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SIAComparisonResultServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java b/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java index 79f3ee877..39d4116b7 100644 --- a/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAComparisonResultServiceImpl.java @@ -172,7 +172,8 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar List baseInfoPOList = getInsuranceBaseInfoMapper().listAll(); List canAccountIds = baseInfoPOList.stream() .filter(f->f.getPaymentOrganization().toString().equals(queryParam.getPaymentOrganization()) - && (f.getRunStatus().equals(EmployeeStatusEnum.PAYING.getValue()) || f.getRunStatus().equals(EmployeeStatusEnum.STAY_DEL.getValue()))) + && !f.getRunStatus().equals(EmployeeStatusEnum.STAY_ADD.getValue()) + ) .map(InsuranceArchivesBaseInfoPO::getEmployeeId) .collect(Collectors.toList()); accountExportPOS = accountExportPOS.stream().filter(v -> canAccountIds.contains(v.getEmployeeId())).collect(Collectors.toList()); From bc8e80b4e6c6dbe48df7668bb811eadfa5d791b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 28 Apr 2025 18:14:17 +0800 Subject: [PATCH 15/26] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=EF=BC=B3=EF=BC=B5?= =?UTF-8?q?=EF=BC=A2=EF=BC=B3=EF=BC=B4=EF=BC=B2=E6=8B=A6=E6=88=AA=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/util/valid/ValidUtil.java | 4 +++- .../engine/salary/wrapper/SalarySobRangeWrapper.java | 10 ++++++++-- src/com/engine/salary/wrapper/TaxAgentWrapper.java | 10 ++++++++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/com/engine/salary/util/valid/ValidUtil.java b/src/com/engine/salary/util/valid/ValidUtil.java index 906718077..bcdec10d6 100644 --- a/src/com/engine/salary/util/valid/ValidUtil.java +++ b/src/com/engine/salary/util/valid/ValidUtil.java @@ -250,7 +250,9 @@ public class ValidUtil { .replace("between", "between") .replace("BETWEEN", "BETWEEN") .replace("union", "union") - .replace("UNION", "UNION"); + .replace("UNION", "UNION") + .replace("substr", "substr") + .replace("SUBSTR", "SUBSTR"); } setValue(t, field.getName(), result); } else if (valueTypeEnum == ValueTypeEnum.OBJECT) { diff --git a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java index 1ae272efc..b308f7b82 100644 --- a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java @@ -97,7 +97,10 @@ public class SalarySobRangeWrapper extends Service { .replace("between", "between") .replace("BETWEEN", "BETWEEN") .replace("union", "union") - .replace("UNION", "UNION")); + .replace("UNION", "UNION") + .replace("substr", "substr") + .replace("SUBSTR", "SUBSTR") + ); } }); @@ -127,7 +130,10 @@ public class SalarySobRangeWrapper extends Service { .replace("between", "between") .replace("BETWEEN", "BETWEEN") .replace("union", "union") - .replace("UNION", "UNION")); + .replace("UNION", "UNION") + .replace("substr", "substr") + .replace("SUBSTR", "SUBSTR") + ); } }); diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java index d3ae590e6..ef31083b0 100644 --- a/src/com/engine/salary/wrapper/TaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -365,7 +365,10 @@ public class TaxAgentWrapper extends Service { .replace("between", "between") .replace("BETWEEN", "BETWEEN") .replace("union", "union") - .replace("UNION", "UNION")); + .replace("UNION", "UNION") + .replace("substr", "substr") + .replace("SUBSTR", "SUBSTR") + ); } }); @@ -399,7 +402,10 @@ public class TaxAgentWrapper extends Service { .replace("between", "between") .replace("BETWEEN", "BETWEEN") .replace("union", "union") - .replace("UNION", "UNION")); + .replace("UNION", "UNION") + .replace("substr", "substr") + .replace("SUBSTR", "SUBSTR") + ); } }); From 1a66a1f846ae52678abd0b3ff488fa673ebfd860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 29 Apr 2025 16:07:51 +0800 Subject: [PATCH 16/26] =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- src/com/engine/salary/util/excel/ExcelUtilPlus.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index 24be7d7cc..1aca83e4c 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -1,5 +1,5 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E -version=3.0.2.2504.01 +version=3.0.2.2504.02 openFormulaForcedEditing=false \ No newline at end of file diff --git a/src/com/engine/salary/util/excel/ExcelUtilPlus.java b/src/com/engine/salary/util/excel/ExcelUtilPlus.java index 9da402ce7..194aa01a2 100644 --- a/src/com/engine/salary/util/excel/ExcelUtilPlus.java +++ b/src/com/engine/salary/util/excel/ExcelUtilPlus.java @@ -131,7 +131,7 @@ public class ExcelUtilPlus { for (int i = 0; i < header.size(); i++) { WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) header.get(i); XSSFCell rowZeroCell = row0.createCell(i, CellType.STRING); - rowZeroCell.setCellValue(columnGroupItem.getText().toString()); + rowZeroCell.setCellValue(columnGroupItem.getText()); rowZeroCell.setCellStyle(titleCellStyle); //设置列宽 sheet.setColumnWidth(i, Math.min(255, Math.max(12, columnGroupItem.getText().length() * 4)) * 256); From ca75a5f403cf79ddfa51683078c4278d83edaa99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 29 Apr 2025 16:57:33 +0800 Subject: [PATCH 17/26] =?UTF-8?q?fix=E5=AF=BC=E5=87=BA=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/util/excel/ExcelUtilPlus.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/util/excel/ExcelUtilPlus.java b/src/com/engine/salary/util/excel/ExcelUtilPlus.java index 9da402ce7..194aa01a2 100644 --- a/src/com/engine/salary/util/excel/ExcelUtilPlus.java +++ b/src/com/engine/salary/util/excel/ExcelUtilPlus.java @@ -131,7 +131,7 @@ public class ExcelUtilPlus { for (int i = 0; i < header.size(); i++) { WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) header.get(i); XSSFCell rowZeroCell = row0.createCell(i, CellType.STRING); - rowZeroCell.setCellValue(columnGroupItem.getText().toString()); + rowZeroCell.setCellValue(columnGroupItem.getText()); rowZeroCell.setCellStyle(titleCellStyle); //设置列宽 sheet.setColumnWidth(i, Math.min(255, Math.max(12, columnGroupItem.getText().length() * 4)) * 256); From af89a43da7ee7a566313312b816b6435698658e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 30 Apr 2025 11:04:18 +0800 Subject: [PATCH 18/26] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E7=BA=BF=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TaxAgentServiceImpl.java | 28 +++++-------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java index 0051bd7b8..bea5d61a6 100644 --- a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java @@ -687,29 +687,15 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { return taxAgentManageRangeEmployeeList; } - List taxAgentIds = allTaxAgents.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); - if (employeeStatus != null) { - List personnelStatusList; - // 查询人员状态 -// if (employeeStatus.equals(SalaryEmployeeStatusEnum.NORMAL)) { -// allEmployees = allEmployees.stream().filter(f -> UserStatusEnum.getNormalStatus().contains(f.getStatus())).collect(Collectors.toList()); -// } else if (employeeStatus.equals(SalaryEmployeeStatusEnum.UNAVAILABLE)) { -// allEmployees = allEmployees.stream().filter(f -> UserStatusEnum.getUnavailableStatus().contains(f.getStatus())).collect(Collectors.toList()); -// } - } + TaxAgentQueryParam param = TaxAgentQueryParam.builder().build(); + param.setFilterType(AuthFilterTypeEnum.QUERY_DATA); + List taxAgentList = listAuth(param); + List taxAgentIds = SalaryEntityUtil.properties(taxAgentList, TaxAgentPO::getId, Collectors.toList()); - // 是否开启分权 - if (!isOpenDevolution() || isChief(employeeId)) { - return getTaxAgentEmp(allTaxAgents, taxAgentIds); - } - // 1.判断自己是否是管理员, 如果是管理员,就是能够操作所属个税扣缴义务人下的所有人的数据 - List taxAgentAdminList = getTaxAgentAdminService(user).listByTaxAgentIdsAndEmployeeId(taxAgentIds, (long) user.getUID()); - // 是管理员的列表 - List adminTaxAgentIds = taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList()); - - if (CollectionUtils.isNotEmpty(adminTaxAgentIds)) { - taxAgentManageRangeEmployeeList.addAll(getTaxAgentEmp(allTaxAgents, adminTaxAgentIds)); + if (CollectionUtils.isNotEmpty(taxAgentIds)) { + List taxAgentEmp = getTaxAgentEmp(allTaxAgents, taxAgentIds); + taxAgentManageRangeEmployeeList.addAll(taxAgentEmp); } return taxAgentManageRangeEmployeeList; From 98556e3a904ea776f9f9754014031b635e51bf8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 9 May 2025 10:13:08 +0800 Subject: [PATCH 19/26] =?UTF-8?q?=E4=BF=AE=E6=94=B9oracle=E5=8E=BB?= =?UTF-8?q?=E9=99=A4;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/sqlupgrade/Oracle/sql202504020203.sql | 4 ++-- resource/sqlupgrade/Oracle/sql202504030103.sql | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resource/sqlupgrade/Oracle/sql202504020203.sql b/resource/sqlupgrade/Oracle/sql202504020203.sql index 2246611d0..b6737d61f 100644 --- a/resource/sqlupgrade/Oracle/sql202504020203.sql +++ b/resource/sqlupgrade/Oracle/sql202504020203.sql @@ -34,8 +34,8 @@ CREATE TABLE hrsa_push_record_detail ) / -ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000); +ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000) / -ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000); +ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000) / \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202504030103.sql b/resource/sqlupgrade/Oracle/sql202504030103.sql index 8c2ab620f..37869d261 100644 --- a/resource/sqlupgrade/Oracle/sql202504030103.sql +++ b/resource/sqlupgrade/Oracle/sql202504030103.sql @@ -1,5 +1,5 @@ -ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER; +ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER / -ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0); +ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0) / \ No newline at end of file From ac1a767a29ed5ad07e39b69d0af005c0c4ee3a57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 9 May 2025 10:19:58 +0800 Subject: [PATCH 20/26] =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index 1aca83e4c..c4b7713cc 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -1,5 +1,5 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E -version=3.0.2.2504.02 +version=3.0.2.2504.03 openFormulaForcedEditing=false \ No newline at end of file From 8c4fbf79191d57391752e56537262a3894d97708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 9 May 2025 11:45:06 +0800 Subject: [PATCH 21/26] =?UTF-8?q?=E6=8B=BC=E6=8E=A5=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java b/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java index 83892cf9a..504e7d3d7 100644 --- a/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java +++ b/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java @@ -711,7 +711,7 @@ public enum IncomeCategoryEnum implements BaseEnum { } List rysbsblb = feedbackResponse.getBody().getRysbsblb(); if (CollectionUtil.isNotEmpty(rysbsblb)) { - String err = rysbsblb.stream().map(GetASynIndividualIncomeTaxFeedbackResponse.Body.rysbsb::getSbyy).collect(Collectors.joining(";")); + String err = rysbsblb.stream().map(sb -> Util.null2String(sb.getXm()) + Util.null2String(sb.getSbyy())).collect(Collectors.joining(";")); throw new OnlineCalculateTaxException(err); } } From 6925e4daea3485b22a9ad84776b135b5a16c78d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 9 May 2025 16:21:17 +0800 Subject: [PATCH 22/26] =?UTF-8?q?fix=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/TaxDeclarationServiceImpl.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java index a516e0d74..55f6e6a1b 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java @@ -164,13 +164,18 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration if (Objects.nonNull(queryParam.getEndSalaryMonth())) { po.setTaxCycleEndDate(queryParam.getEndSalaryMonth()); } - po.setSalaryMonths(localDateRange); // 查询个税申报表 List taxDeclarationPOS = getTaxDeclarationMapper().listSome(po); - taxDeclarationPOS = getAuthService(user).auth(taxDeclarationPOS, AuthFilterTypeEnum.DATA_OPT, TaxDeclarationPO.class); + if (StrUtil.isNotBlank(queryParam.getTaxAgentName())) { + List taxAgentPOs = getTaxAgentService(user).list(TaxAgentQueryParam.builder().name(queryParam.getTaxAgentName()).build()); + Set taxAgentIds = SalaryEntityUtil.properties(taxAgentPOs, TaxAgentPO::getId); + taxDeclarationPOS = taxDeclarationPOS.stream().filter(tax -> taxAgentIds.contains(tax.getTaxAgentId())).collect(Collectors.toList()); + } + + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), taxDeclarationPOS, TaxDeclarationPO.class); From df093e606c9fca0faa3c5e098aac0d61f327ea2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 9 May 2025 17:59:40 +0800 Subject: [PATCH 23/26] =?UTF-8?q?=E4=BA=8C=E5=BC=80=EF=BC=8C=E8=87=AA?= =?UTF-8?q?=E7=A6=BB=E8=B4=A6=E5=A5=97=E4=B8=8D=E5=8F=82=E4=B8=8E=E7=94=B3?= =?UTF-8?q?=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taxdeclaration/po/TaxDeclarationPO.java | 8 ------- .../impl/SalarySobItemServiceImpl.java | 14 ++++++++++--- .../impl/TaxDeclareRecordServiceImpl.java | 21 ++++++++++++++++++- 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java index 53795f78d..85946e041 100644 --- a/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java +++ b/src/com/engine/salary/entity/taxdeclaration/po/TaxDeclarationPO.java @@ -116,14 +116,6 @@ public class TaxDeclarationPO { //结束日期 private Date taxCycleEndDate; - - /** - * 税款所属期 - */ - LocalDateRange taxMonths; - - - private Collection taxAgentIds; private Set opts; } diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index 29345763f..b485b65ba 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -3,6 +3,8 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; +import com.engine.kq.service.KQGroupService; +import com.engine.kq.service.impl.KQGroupServiceImpl; import com.engine.salary.biz.SalarySobBiz; import com.engine.salary.biz.SalarySobItemBiz; import com.engine.salary.biz.SalarySobItemGroupBiz; @@ -42,7 +44,6 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.enums.auth.AuthFilterTypeEnum; -import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum; import com.engine.salary.enums.salaryformula.SalarySQLReferenceEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -188,6 +189,12 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe return ServiceUtil.getService(VariableArchiveServiceImpl.class, user); } + private KQGroupService getKQGroupService() { + User user = new User(); + user.setUid(1); + user.setLoginid("sysadmin"); + return (KQGroupService) ServiceUtil.getService(KQGroupServiceImpl.class, user); + } @Override public List list() { @@ -1011,8 +1018,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe salaryAcctResultPOMap.put(et.getKey(), et.getValue().get(0).getOriginResultValue()); } List lastMonthResultPOS = getSalaryAcctResultService(user).listBySobSalaryMonth(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth().minusMonths(1), 1), salaryAcctCalculateBO.getSalarySobPO().getId(), employeeIds); - CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList,lastMonthResultPOS); - Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); + CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList, lastMonthResultPOS); + KQGroupService kqGroupService = getKQGroupService(); + Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO, kqGroupService, null); Map resultMap = new HashMap<>(); formulaVarMap.entrySet().forEach(e -> { diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index cdec3def1..e2b89bce1 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -54,6 +54,8 @@ import com.engine.salary.remote.tax.response.declare.GetCompanyIncomesResponse; import com.engine.salary.remote.tax.response.declare.GetDeclareTaxResultFeedbackResponse; import com.engine.salary.service.*; import com.engine.salary.service.factory.TaxPaymentServiceFactory; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.*; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; @@ -181,6 +183,10 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe return ServiceUtil.getService(OtherDeductionServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + private TaxPaymentServiceFactory taxPaymentServiceFactory = new TaxPaymentServiceFactory(user); @@ -283,12 +289,19 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe salaryAcctTaxAgents = salaryAcctTaxAgents.stream().filter(e -> taxAgentIds.contains(e.getTaxAgentId())).collect(Collectors.toList()); List salaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctTaxAgents, SalaryAcctTaxAgentPO::getSalaryAcctRecordId, Collectors.toList()); salaryAcctRecords = salaryAcctRecords.stream().filter(e -> salaryAcctRecordIds.contains(e.getId())).collect(Collectors.toList()); + + //二开,自离账套不参与申报 + String notaxsobids = getSalarySysConfService(user).getValueByCode("notaxsobids"); + List noTaxSobIds = Arrays.stream(notaxsobids.split(",")).map(Long::valueOf).collect(Collectors.toList()); + salaryAcctRecords = salaryAcctRecords.stream().filter(e -> !noTaxSobIds.contains(e.getSalarySobId())).collect(Collectors.toList()); + + List finalSalaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctRecords, SalaryAcctRecordPO::getId, Collectors.toList()); // 校验是否可以生成个税申报表 // 返回目前已经生成的个税申报表 List taxDeclareRecords = checkBeforeSave(saveParam, taxAgentNameMap, salaryAcctRecords, salaryAcctTaxAgents); Map taxDeclareRecordMap = SalaryEntityUtil.convert2Map(taxDeclareRecords, e -> e.getTaxCycle() + "-" + e.getTaxAgentId()); // 查询薪资核算人员 - List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listByRecordIdsAndEmpIdAndTaxAgentId(salaryAcctRecordIds, null, taxAgents.stream().findFirst().orElse(new TaxAgentPO()).getId()); + List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listByRecordIdsAndEmpIdAndTaxAgentId(finalSalaryAcctRecordIds, null, taxAgents.stream().findFirst().orElse(new TaxAgentPO()).getId()); // 薪资核算人员按照税款所属期聚合分类 Map> taxCycleKeyEmployeeMap = SalaryEntityUtil.group2Map(salaryAcctEmployees, SalaryAcctEmployeePO::getTaxCycle); for (Map.Entry> taxCycleEntry : taxCycleKeyEmployeeMap.entrySet()) { @@ -378,6 +391,12 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe .taxCycle(taxDeclareRecord.getTaxCycle()) .build(); List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listByTaxCycleAndTaxAgentId(salaryAcctEmployeeQueryParam); + + //二开,自离账套不参与申报 + String notaxsobids = getSalarySysConfService(user).getValueByCode("notaxsobids"); + List noTaxSobIds = Arrays.stream(notaxsobids.split(",")).map(Long::valueOf).collect(Collectors.toList()); + salaryAcctEmployees = salaryAcctEmployees.stream().filter(e -> !noTaxSobIds.contains(e.getSalarySobId())).collect(Collectors.toList()); + // 查询薪资核算记录 Set salaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctEmployees, SalaryAcctEmployeePO::getSalaryAcctRecordId); List salaryAcctRecords = getSalaryAcctRecordService(user).listByIds(salaryAcctRecordIds); From d296fba3e9c13e26fa86dda632217e9ba686d46f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 9 May 2025 19:43:44 +0800 Subject: [PATCH 24/26] =?UTF-8?q?=E4=BA=8C=E5=BC=80=EF=BC=8C=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E6=8A=A5=E9=80=81=EF=BC=8C=E5=88=B7=E6=96=B0=E4=B8=8D?= =?UTF-8?q?=E9=87=87=E9=9B=86=E7=A8=8E=E6=9C=9F=E5=BD=93=E6=9C=88=E6=88=96?= =?UTF-8?q?=E8=80=85=E4=B9=8B=E5=90=8E=E6=9C=88=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/employeedeclare/bo/EmployeeDeclareRefresh.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java index 72191b404..539285926 100644 --- a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java +++ b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java @@ -147,6 +147,12 @@ public class EmployeeDeclareRefresh { employeeDeclare.setEmploymentStatus(EmploymentStatusEnum.ABNORMAL.getValue()); employeeDeclare.setDismissDate(salaryArchive.getPayEndDate()); } + + //二开,过滤起始发薪日期>=当前税款所属期的 + Date payStartDate = salaryArchive.getPayStartDate(); + if (!payStartDate.before(dto.getTaxCycle())) { + continue; + } } employeeIds.add(employeeDeclare.getEmployeeId()); result.getNewEmployeeDeclares().add(employeeDeclare); From 24e7cbb32e3a1ac2905bb67b0a0e0d3415e6ced8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 9 May 2025 19:46:32 +0800 Subject: [PATCH 25/26] =?UTF-8?q?=E5=A4=84=E7=90=86=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E4=BA=BA=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/TaxDeclareRecordServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index cdec3def1..334ea2f51 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; @@ -917,7 +918,8 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe declareStatus.setTaxDeclareStatus(taxDeclareStatusEnum.getValue()); // 申报类型 declareStatus.setTaxPayAmount(Util.null2String(declareTaxFeedbackResponse.getBody().get("ykjse"))); - declareStatus.setPersonNum(Integer.parseInt(Optional.ofNullable(declareTaxFeedbackResponse.getBody().get("nsrc")).orElse("0").toString())); + String nsrc = Util.null2String(declareTaxFeedbackResponse.getBody().get("nsrc")); + declareStatus.setPersonNum(Integer.parseInt(NumberUtil.isNumber(nsrc) ? nsrc : "0")); declareStatus.setDeclareRequestId(declareStatus.getRequestId()); declareStatus.setRequestId(""); //实缴(不含滞纳金) From 810cbdbbd56c728ba9ad18f9091832e85d24e91f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Sun, 11 May 2025 14:07:26 +0800 Subject: [PATCH 26/26] =?UTF-8?q?=E6=89=93=E5=BC=80=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=85=AC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index c4b7713cc..d1a30653c 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -2,4 +2,4 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E version=3.0.2.2504.03 -openFormulaForcedEditing=false \ No newline at end of file +openFormulaForcedEditing=true \ No newline at end of file