diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties
index d95554ef6..55360c99a 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.0.2503.01
+version=3.0.1.2503.01
openFormulaForcedEditing=false
\ No newline at end of file
diff --git a/resource/sqlupgrade/DM/sql202411190103.sql b/resource/sqlupgrade/DM/sql202411190103.sql
new file mode 100644
index 000000000..1d13e52dd
--- /dev/null
+++ b/resource/sqlupgrade/DM/sql202411190103.sql
@@ -0,0 +1,70 @@
+CREATE TABLE hrsa_push_setting
+(
+ id NUMBER(38,0) primary key NOT NULL,
+ name varchar2(200),
+ able number,
+ salary_sob_ids varchar2(2000),
+ mode_id number,
+ mode_name varchar2(200),
+ table_name varchar2(200),
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ delete_type number,
+ tenant_key varchar2(10)
+);
+/
+
+CREATE TABLE hrsa_push_setting_item
+(
+ id NUMBER(38,0) NOT NULL,
+ setting_id NUMBER(38,0),
+ source varchar2(100),
+ item varchar2(200),
+ item_name varchar2(200),
+ field_name varchar2(200),
+ field_type number,
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ 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)
+);
+/
+
diff --git a/resource/sqlupgrade/DM/sql202503190103.sql b/resource/sqlupgrade/DM/sql202503190103.sql
new file mode 100644
index 000000000..9940e3121
--- /dev/null
+++ b/resource/sqlupgrade/DM/sql202503190103.sql
@@ -0,0 +1,38 @@
+create table hrsa_deduction_amount
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ employee_id number,
+ employee_type number,
+ employee_name varchar2(100),
+ job_num varchar2(100),
+ card_type number,
+ card_num varchar2(100),
+ nationality varchar2(200),
+ deduct_flag number,
+ successfully_declared number,
+ declare_status number,
+ declare_error_msg varchar2(1000)
+);
+/
+
+create table hrsa_deduction_amount_record
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ request_id varchar2(100)
+);
+/
+
diff --git a/resource/sqlupgrade/DM/sql202504020203.sql b/resource/sqlupgrade/DM/sql202504020203.sql
new file mode 100644
index 000000000..d54eff0ca
--- /dev/null
+++ b/resource/sqlupgrade/DM/sql202504020203.sql
@@ -0,0 +1,6 @@
+ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000);
+/
+
+ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000);
+/
+
diff --git a/resource/sqlupgrade/DM/sql202504030103.sql b/resource/sqlupgrade/DM/sql202504030103.sql
new file mode 100644
index 000000000..013d261c1
--- /dev/null
+++ b/resource/sqlupgrade/DM/sql202504030103.sql
@@ -0,0 +1,6 @@
+ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER;
+/
+
+ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0);
+/
+
diff --git a/resource/sqlupgrade/GS/sql202411190103.sql b/resource/sqlupgrade/GS/sql202411190103.sql
new file mode 100644
index 000000000..1d13e52dd
--- /dev/null
+++ b/resource/sqlupgrade/GS/sql202411190103.sql
@@ -0,0 +1,70 @@
+CREATE TABLE hrsa_push_setting
+(
+ id NUMBER(38,0) primary key NOT NULL,
+ name varchar2(200),
+ able number,
+ salary_sob_ids varchar2(2000),
+ mode_id number,
+ mode_name varchar2(200),
+ table_name varchar2(200),
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ delete_type number,
+ tenant_key varchar2(10)
+);
+/
+
+CREATE TABLE hrsa_push_setting_item
+(
+ id NUMBER(38,0) NOT NULL,
+ setting_id NUMBER(38,0),
+ source varchar2(100),
+ item varchar2(200),
+ item_name varchar2(200),
+ field_name varchar2(200),
+ field_type number,
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ 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)
+);
+/
+
diff --git a/resource/sqlupgrade/GS/sql202503190103.sql b/resource/sqlupgrade/GS/sql202503190103.sql
new file mode 100644
index 000000000..9940e3121
--- /dev/null
+++ b/resource/sqlupgrade/GS/sql202503190103.sql
@@ -0,0 +1,38 @@
+create table hrsa_deduction_amount
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ employee_id number,
+ employee_type number,
+ employee_name varchar2(100),
+ job_num varchar2(100),
+ card_type number,
+ card_num varchar2(100),
+ nationality varchar2(200),
+ deduct_flag number,
+ successfully_declared number,
+ declare_status number,
+ declare_error_msg varchar2(1000)
+);
+/
+
+create table hrsa_deduction_amount_record
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ request_id varchar2(100)
+);
+/
+
diff --git a/resource/sqlupgrade/GS/sql202504020203.sql b/resource/sqlupgrade/GS/sql202504020203.sql
new file mode 100644
index 000000000..d54eff0ca
--- /dev/null
+++ b/resource/sqlupgrade/GS/sql202504020203.sql
@@ -0,0 +1,6 @@
+ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000);
+/
+
+ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000);
+/
+
diff --git a/resource/sqlupgrade/GS/sql202504030103.sql b/resource/sqlupgrade/GS/sql202504030103.sql
new file mode 100644
index 000000000..013d261c1
--- /dev/null
+++ b/resource/sqlupgrade/GS/sql202504030103.sql
@@ -0,0 +1,6 @@
+ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER;
+/
+
+ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0);
+/
+
diff --git a/resource/sqlupgrade/JC/sql202411190103.sql b/resource/sqlupgrade/JC/sql202411190103.sql
new file mode 100644
index 000000000..1d13e52dd
--- /dev/null
+++ b/resource/sqlupgrade/JC/sql202411190103.sql
@@ -0,0 +1,70 @@
+CREATE TABLE hrsa_push_setting
+(
+ id NUMBER(38,0) primary key NOT NULL,
+ name varchar2(200),
+ able number,
+ salary_sob_ids varchar2(2000),
+ mode_id number,
+ mode_name varchar2(200),
+ table_name varchar2(200),
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ delete_type number,
+ tenant_key varchar2(10)
+);
+/
+
+CREATE TABLE hrsa_push_setting_item
+(
+ id NUMBER(38,0) NOT NULL,
+ setting_id NUMBER(38,0),
+ source varchar2(100),
+ item varchar2(200),
+ item_name varchar2(200),
+ field_name varchar2(200),
+ field_type number,
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ 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)
+);
+/
+
diff --git a/resource/sqlupgrade/JC/sql202503190103.sql b/resource/sqlupgrade/JC/sql202503190103.sql
new file mode 100644
index 000000000..9940e3121
--- /dev/null
+++ b/resource/sqlupgrade/JC/sql202503190103.sql
@@ -0,0 +1,38 @@
+create table hrsa_deduction_amount
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ employee_id number,
+ employee_type number,
+ employee_name varchar2(100),
+ job_num varchar2(100),
+ card_type number,
+ card_num varchar2(100),
+ nationality varchar2(200),
+ deduct_flag number,
+ successfully_declared number,
+ declare_status number,
+ declare_error_msg varchar2(1000)
+);
+/
+
+create table hrsa_deduction_amount_record
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ request_id varchar2(100)
+);
+/
+
diff --git a/resource/sqlupgrade/JC/sql202504020203.sql b/resource/sqlupgrade/JC/sql202504020203.sql
new file mode 100644
index 000000000..d54eff0ca
--- /dev/null
+++ b/resource/sqlupgrade/JC/sql202504020203.sql
@@ -0,0 +1,6 @@
+ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000);
+/
+
+ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000);
+/
+
diff --git a/resource/sqlupgrade/JC/sql202504030103.sql b/resource/sqlupgrade/JC/sql202504030103.sql
new file mode 100644
index 000000000..013d261c1
--- /dev/null
+++ b/resource/sqlupgrade/JC/sql202504030103.sql
@@ -0,0 +1,6 @@
+ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER;
+/
+
+ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0);
+/
+
diff --git a/resource/sqlupgrade/Mysql/sql202411190103.sql b/resource/sqlupgrade/Mysql/sql202411190103.sql
index 9ceb2c5b9..fdfc32280 100644
--- a/resource/sqlupgrade/Mysql/sql202411190103.sql
+++ b/resource/sqlupgrade/Mysql/sql202411190103.sql
@@ -33,3 +33,39 @@ 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/sql202503190103.sql b/resource/sqlupgrade/Mysql/sql202503190103.sql
new file mode 100644
index 000000000..6c78f00ed
--- /dev/null
+++ b/resource/sqlupgrade/Mysql/sql202503190103.sql
@@ -0,0 +1,37 @@
+CREATE TABLE hrsa_deduction_amount
+(
+ id bigint(0),
+ create_time datetime(0),
+ update_time datetime(0),
+ creator bigint(0),
+ delete_type int(0),
+ tenant_key varchar(10),
+ tax_agent_id bigint(0),
+ year varchar(100),
+ employee_id bigint(0),
+ employee_type tinyint(0),
+ employee_name varchar(100),
+ job_num varchar(100),
+ card_type tinyint(0),
+ card_num varchar(100),
+ nationality varchar(200),
+ deduct_flag tinyint(0),
+ successfully_declared tinyint(0),
+ declare_status tinyint(0),
+ declare_error_msg varchar(3000),
+ PRIMARY KEY (id) USING BTREE
+);
+
+CREATE TABLE hrsa_deduction_amount_record
+(
+ id bigint(0),
+ create_time datetime(0),
+ update_time datetime(0),
+ creator bigint(0),
+ delete_type int(0),
+ tenant_key varchar(10),
+ tax_agent_id bigint(0),
+ year varchar(255),
+ request_id varchar(100),
+ PRIMARY KEY (id) USING BTREE
+);
diff --git a/resource/sqlupgrade/Mysql/sql202504020203.sql b/resource/sqlupgrade/Mysql/sql202504020203.sql
new file mode 100644
index 000000000..f7f94d4b6
--- /dev/null
+++ b/resource/sqlupgrade/Mysql/sql202504020203.sql
@@ -0,0 +1,3 @@
+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/Mysql/sql202504030103.sql b/resource/sqlupgrade/Mysql/sql202504030103.sql
new file mode 100644
index 000000000..f21868d14
--- /dev/null
+++ b/resource/sqlupgrade/Mysql/sql202504030103.sql
@@ -0,0 +1,3 @@
+ALTER TABLE hrsa_push_setting_item ADD COLUMN sorted_index int(0);
+
+ALTER TABLE hrsa_push_record_detail ADD COLUMN data_id bigint(0);
diff --git a/resource/sqlupgrade/Oracle/sql202411190103.sql b/resource/sqlupgrade/Oracle/sql202411190103.sql
new file mode 100644
index 000000000..09f3ee1bd
--- /dev/null
+++ b/resource/sqlupgrade/Oracle/sql202411190103.sql
@@ -0,0 +1,71 @@
+CREATE TABLE hrsa_push_setting
+(
+ id NUMBER(38,0) primary key NOT NULL,
+ name varchar2(200),
+ able number,
+ salary_sob_ids varchar2(2000),
+ mode_id number,
+ mode_name varchar2(200),
+ table_name varchar2(200),
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ delete_type number,
+ tenant_key varchar2(10)
+)
+/
+
+
+CREATE TABLE hrsa_push_setting_item
+(
+ id NUMBER(38,0) NOT NULL,
+ setting_id NUMBER(38,0),
+ source varchar2(100),
+ item varchar2(200),
+ item_name varchar2(200),
+ field_name varchar2(200),
+ field_type number,
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ 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/sql202503190103.sql b/resource/sqlupgrade/Oracle/sql202503190103.sql
new file mode 100644
index 000000000..172207806
--- /dev/null
+++ b/resource/sqlupgrade/Oracle/sql202503190103.sql
@@ -0,0 +1,37 @@
+create table hrsa_deduction_amount
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ employee_id number,
+ employee_type number,
+ employee_name varchar2(100),
+ job_num varchar2(100),
+ card_type number,
+ card_num varchar2(100),
+ nationality varchar2(200),
+ deduct_flag number,
+ successfully_declared number,
+ declare_status number,
+ declare_error_msg varchar2(1000)
+)
+/
+
+create table hrsa_deduction_amount_record
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ request_id varchar2(100)
+)
+/
\ No newline at end of file
diff --git a/resource/sqlupgrade/Oracle/sql202504020203.sql b/resource/sqlupgrade/Oracle/sql202504020203.sql
new file mode 100644
index 000000000..ea71581d2
--- /dev/null
+++ b/resource/sqlupgrade/Oracle/sql202504020203.sql
@@ -0,0 +1,5 @@
+ALTER TABLE hrsa_push_record 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
new file mode 100644
index 000000000..8c2ab620f
--- /dev/null
+++ b/resource/sqlupgrade/Oracle/sql202504030103.sql
@@ -0,0 +1,5 @@
+ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER;
+/
+
+ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0);
+/
\ No newline at end of file
diff --git a/resource/sqlupgrade/PG/sql202411190103.sql b/resource/sqlupgrade/PG/sql202411190103.sql
new file mode 100644
index 000000000..5f4272388
--- /dev/null
+++ b/resource/sqlupgrade/PG/sql202411190103.sql
@@ -0,0 +1,71 @@
+CREATE TABLE hrsa_push_setting
+(
+ id bigint NOT NULL,
+ name varchar(200),
+ able int,
+ salary_sob_ids varchar(2000),
+ mode_id int,
+ mode_name varchar(200),
+ table_name varchar(200),
+ creator bigint,
+ create_time timestamp,
+ update_time timestamp,
+ delete_type int,
+ tenant_key varchar(10),
+ PRIMARY KEY (id)
+);
+
+
+CREATE TABLE hrsa_push_setting_item
+(
+ id bigint NOT NULL,
+ setting_id bigint,
+ source varchar(100),
+ item varchar(200),
+ item_name varchar(200),
+ field_name varchar(200),
+ field_type int,
+ creator bigint,
+ create_time timestamp,
+ update_time timestamp,
+ 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/sql202503190103.sql b/resource/sqlupgrade/PG/sql202503190103.sql
new file mode 100644
index 000000000..7f39dcf84
--- /dev/null
+++ b/resource/sqlupgrade/PG/sql202503190103.sql
@@ -0,0 +1,37 @@
+create table hrsa_deduction_amount
+(
+ id bigint primary key ,
+ create_time timestamp,
+ update_time timestamp,
+ creator bigint,
+ delete_type int,
+ tenant_key varchar(10),
+ tax_agent_id bigint,
+ year varchar(100),
+ employee_id bigint,
+ employee_type smallint,
+ employee_name varchar(100),
+ job_num varchar(100),
+ card_type smallint,
+ card_num varchar(100),
+ nationality varchar(200),
+ deduct_flag smallint,
+ successfully_declared smallint,
+ declare_status smallint,
+ declare_error_msg varchar(3000)
+);
+/
+
+create table hrsa_deduction_amount_record
+(
+ id bigint primary key ,
+ create_time timestamp,
+ update_time timestamp,
+ creator bigint,
+ delete_type int default 0,
+ tenant_key varchar(10),
+ tax_agent_id bigint,
+ year varchar(100),
+ request_id varchar(100)
+);
+/
\ No newline at end of file
diff --git a/resource/sqlupgrade/PG/sql202504020203.sql b/resource/sqlupgrade/PG/sql202504020203.sql
new file mode 100644
index 000000000..adb7b31e2
--- /dev/null
+++ b/resource/sqlupgrade/PG/sql202504020203.sql
@@ -0,0 +1,3 @@
+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/PG/sql202504030103.sql b/resource/sqlupgrade/PG/sql202504030103.sql
new file mode 100644
index 000000000..a0bda613d
--- /dev/null
+++ b/resource/sqlupgrade/PG/sql202504030103.sql
@@ -0,0 +1,3 @@
+alter table hrsa_push_setting_item add sorted_index int ;
+
+alter table hrsa_push_record_detail add data_id bigint ;
\ No newline at end of file
diff --git a/resource/sqlupgrade/SQLServer/sql202411190103.sql b/resource/sqlupgrade/SQLServer/sql202411190103.sql
new file mode 100644
index 000000000..dd06040a8
--- /dev/null
+++ b/resource/sqlupgrade/SQLServer/sql202411190103.sql
@@ -0,0 +1,75 @@
+CREATE TABLE hrsa_push_setting
+(
+ id bigint NOT NULL,
+ name varchar(200),
+ able int,
+ salary_sob_ids varchar(2000),
+ mode_id int,
+ mode_name varchar(200),
+ table_name varchar(200),
+ creator bigint,
+ create_time datetime,
+ update_time datetime,
+ delete_type int,
+ tenant_key varchar(10),
+ PRIMARY KEY (id)
+)
+GO
+
+
+CREATE TABLE hrsa_push_setting_item
+(
+ id bigint NOT NULL,
+ setting_id bigint,
+ source varchar(100),
+ item varchar(200),
+ item_name varchar(200),
+ field_name varchar(200),
+ field_type int,
+ creator bigint,
+ create_time datetime,
+ update_time datetime,
+ delete_type int,
+ 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/sql202503190103.sql b/resource/sqlupgrade/SQLServer/sql202503190103.sql
new file mode 100644
index 000000000..3aaee1960
--- /dev/null
+++ b/resource/sqlupgrade/SQLServer/sql202503190103.sql
@@ -0,0 +1,37 @@
+create table hrsa_deduction_amount
+(
+ id bigint primary key ,
+ create_time datetime,
+ update_time datetime,
+ creator bigint,
+ delete_type int,
+ tenant_key nvarchar(10),
+ tax_agent_id bigint,
+ year nvarchar(100),
+ employee_id bigint,
+ employee_type tinyint,
+ employee_name nvarchar(100),
+ job_num nvarchar(100),
+ card_type tinyint,
+ card_num nvarchar(100),
+ nationality nvarchar(255),
+ deduct_flag tinyint,
+ successfully_declared tinyint,
+ declare_status tinyint,
+ declare_error_msg nvarchar(3000)
+)
+GO
+
+create table hrsa_deduction_amount_record
+(
+ id bigint primary key ,
+ create_time datetime,
+ update_time datetime,
+ creator bigint,
+ delete_type int,
+ tenant_key nvarchar(10),
+ tax_agent_id bigint,
+ year nvarchar(100),
+ request_id nvarchar(100)
+)
+GO
\ No newline at end of file
diff --git a/resource/sqlupgrade/SQLServer/sql202504020203.sql b/resource/sqlupgrade/SQLServer/sql202504020203.sql
new file mode 100644
index 000000000..312077f79
--- /dev/null
+++ b/resource/sqlupgrade/SQLServer/sql202504020203.sql
@@ -0,0 +1,5 @@
+alter table hrsa_push_record add fail_reason VARCHAR(4000)
+go
+
+alter table hrsa_push_record_detail add fail_reason VARCHAR(4000)
+go
\ No newline at end of file
diff --git a/resource/sqlupgrade/SQLServer/sql202504030103.sql b/resource/sqlupgrade/SQLServer/sql202504030103.sql
new file mode 100644
index 000000000..db030fdb3
--- /dev/null
+++ b/resource/sqlupgrade/SQLServer/sql202504030103.sql
@@ -0,0 +1,5 @@
+alter table hrsa_push_setting_item add sorted_index int
+go
+
+alter table hrsa_push_record_detail add data_id bigint
+go
\ No newline at end of file
diff --git a/resource/sqlupgrade/ST/sql202411190103.sql b/resource/sqlupgrade/ST/sql202411190103.sql
new file mode 100644
index 000000000..1d13e52dd
--- /dev/null
+++ b/resource/sqlupgrade/ST/sql202411190103.sql
@@ -0,0 +1,70 @@
+CREATE TABLE hrsa_push_setting
+(
+ id NUMBER(38,0) primary key NOT NULL,
+ name varchar2(200),
+ able number,
+ salary_sob_ids varchar2(2000),
+ mode_id number,
+ mode_name varchar2(200),
+ table_name varchar2(200),
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ delete_type number,
+ tenant_key varchar2(10)
+);
+/
+
+CREATE TABLE hrsa_push_setting_item
+(
+ id NUMBER(38,0) NOT NULL,
+ setting_id NUMBER(38,0),
+ source varchar2(100),
+ item varchar2(200),
+ item_name varchar2(200),
+ field_name varchar2(200),
+ field_type number,
+ creator NUMBER(38,0),
+ create_time date,
+ update_time date,
+ 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)
+);
+/
+
diff --git a/resource/sqlupgrade/ST/sql202503190103.sql b/resource/sqlupgrade/ST/sql202503190103.sql
new file mode 100644
index 000000000..9940e3121
--- /dev/null
+++ b/resource/sqlupgrade/ST/sql202503190103.sql
@@ -0,0 +1,38 @@
+create table hrsa_deduction_amount
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ employee_id number,
+ employee_type number,
+ employee_name varchar2(100),
+ job_num varchar2(100),
+ card_type number,
+ card_num varchar2(100),
+ nationality varchar2(200),
+ deduct_flag number,
+ successfully_declared number,
+ declare_status number,
+ declare_error_msg varchar2(1000)
+);
+/
+
+create table hrsa_deduction_amount_record
+(
+ id number primary key ,
+ create_time date,
+ update_time date,
+ creator number,
+ delete_type int,
+ tenant_key varchar2(10),
+ tax_agent_id number,
+ year varchar2(100),
+ request_id varchar2(100)
+);
+/
+
diff --git a/resource/sqlupgrade/ST/sql202504020203.sql b/resource/sqlupgrade/ST/sql202504020203.sql
new file mode 100644
index 000000000..d54eff0ca
--- /dev/null
+++ b/resource/sqlupgrade/ST/sql202504020203.sql
@@ -0,0 +1,6 @@
+ALTER TABLE hrsa_push_record ADD fail_reason varchar2(4000);
+/
+
+ALTER TABLE hrsa_push_record_detail ADD fail_reason varchar2(4000);
+/
+
diff --git a/resource/sqlupgrade/ST/sql202504030103.sql b/resource/sqlupgrade/ST/sql202504030103.sql
new file mode 100644
index 000000000..013d261c1
--- /dev/null
+++ b/resource/sqlupgrade/ST/sql202504030103.sql
@@ -0,0 +1,6 @@
+ALTER TABLE hrsa_push_setting_item ADD sorted_index NUMBER;
+/
+
+ALTER TABLE hrsa_push_record_detail ADD data_id NUMBER(38,0);
+/
+
diff --git a/src/com/api/salary/web/DeductionAmountController.java b/src/com/api/salary/web/DeductionAmountController.java
new file mode 100644
index 000000000..b18635031
--- /dev/null
+++ b/src/com/api/salary/web/DeductionAmountController.java
@@ -0,0 +1,15 @@
+package com.api.salary.web;
+
+import javax.ws.rs.Path;
+
+/**
+ * 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单
+ *
Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Path("/bs/hrmsalary/deductionAmount")
+public class DeductionAmountController extends com.engine.salary.web.DeductionAmountController {
+}
diff --git a/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java b/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java
new file mode 100644
index 000000000..234ec01cd
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/dto/DeductionAmountDTO.java
@@ -0,0 +1,126 @@
+package com.engine.salary.entity.deductionamount.dto;
+
+import com.engine.salary.annotation.TableTitle;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Collection;
+import java.util.Date;
+
+/**
+ * 人员报送记录
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+//hrsa_deduction_amount
+public class DeductionAmountDTO {
+
+ /**
+ * ID
+ */
+ private Long id;
+
+ /**
+ * 个税扣缴义务人ID
+ */
+ private Long taxAgentId;
+
+
+ /**
+ * 税款所属年度
+ */
+ @TableTitle(title = "税款所属年度", dataIndex = "year", key = "year")
+ private String year;
+ /**
+ * 人员id
+ */
+ private Long employeeId;
+
+ /**
+ * 姓名
+ */
+ @TableTitle(title = "姓名", dataIndex = "employeeName", key = "employeeName")
+ private String employeeName;
+
+ /**
+ * 人员类型
+ */
+ private Integer employeeType;
+
+ /**
+ * 工号
+ */
+ @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum")
+ private String jobNum;
+
+ /**
+ * 证件号码
+ */
+ @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum")
+ private String cardNum;
+
+ /**
+ * 证件类型
+ */
+ private Integer cardType;
+
+ /**
+ * 国籍
+ */
+ @TableTitle(title = "国籍", dataIndex = "nationality", key = "nationality")
+ private String nationality;
+
+ /**
+ * 是否扣除
+ */
+ @TableTitle(title = "是否扣除", dataIndex = "deductFlag", key = "deductFlag")
+ private Integer deductFlag;
+
+ /**
+ * 报送状态
+ */
+ @TableTitle(title = "报送状态", dataIndex = "declareStatusName", key = "declareStatusName")
+ private String declareStatusName;
+ private Integer declareStatus;
+
+ private String declareErrorMsg;
+
+
+ /**
+ * 是否成功报送过
+ */
+ private Integer successfullyDeclared;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+ /**
+ * 修改时间
+ */
+ private Date updateTime;
+
+ /**
+ * 创建人id
+ */
+ private Long creator;
+
+ /**
+ * 是否删除
+ */
+ private Integer deleteType;
+
+ /**
+ * 租户KEY
+ */
+ private String tenantKey;
+
+ //主键id集合
+ private Collection ids;
+
+}
\ No newline at end of file
diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountAddParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountAddParam.java
new file mode 100644
index 000000000..0deb8966f
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountAddParam.java
@@ -0,0 +1,45 @@
+package com.engine.salary.entity.deductionamount.param;
+
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 扣除名单查询参数
+ * Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeductionAmountAddParam {
+ /**
+ * ID
+ */
+ private Long id;
+
+ /**
+ * 个税扣缴义务人id
+ */
+ @DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
+ private Long taxAgentId;
+
+ /**
+ * 税款所属年度
+ */
+ @DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
+ private String year;
+
+ /**
+ * 报送人员ids
+ */
+ private List employeeDeclareIds;
+}
diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountConfirmParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountConfirmParam.java
new file mode 100644
index 000000000..e5fe93593
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountConfirmParam.java
@@ -0,0 +1,31 @@
+package com.engine.salary.entity.deductionamount.param;
+
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 扣除名单查询参数
+ * Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeductionAmountConfirmParam {
+
+ // 个税扣缴义务人id
+ @DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
+ private Long taxAgentId;
+
+ // 税款所属年度
+ @DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
+ private String year;
+
+}
diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountDeleteParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountDeleteParam.java
new file mode 100644
index 000000000..922884a44
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountDeleteParam.java
@@ -0,0 +1,27 @@
+package com.engine.salary.entity.deductionamount.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 扣除名单查询参数
+ * Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeductionAmountDeleteParam {
+ /**
+ * ID
+ */
+ private List ids;
+}
diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountEditParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountEditParam.java
new file mode 100644
index 000000000..f0e2a2412
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountEditParam.java
@@ -0,0 +1,30 @@
+package com.engine.salary.entity.deductionamount.param;
+
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 扣除名单查询参数
+ * Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeductionAmountEditParam {
+ /**
+ * ID
+ */
+ @DataCheck(require = true, message = "参数错误,id不能为空")
+ private Long id;
+
+ @DataCheck(require = true, message = "请选择是否扣除")
+ private Integer deductFlag;
+}
diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java
new file mode 100644
index 000000000..111c7011e
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountFeedBackParam.java
@@ -0,0 +1,30 @@
+package com.engine.salary.entity.deductionamount.param;
+
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 扣除名单查询参数
+ * Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeductionAmountFeedBackParam {
+
+ // 个税扣缴义务人id
+ @DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
+ private Long taxAgentId;
+
+ // 税款所属年度
+ @DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
+ private String year;
+}
diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountListParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountListParam.java
new file mode 100644
index 000000000..0ce30402b
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountListParam.java
@@ -0,0 +1,36 @@
+package com.engine.salary.entity.deductionamount.param;
+
+import com.engine.salary.common.BaseQueryParam;
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 扣除名单查询参数
+ * Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeductionAmountListParam extends BaseQueryParam {
+
+ /**
+ * 个税扣缴义务人id
+ */
+ @DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
+ private Long taxAgentId;
+
+ /**
+ * 税款所属年度
+ */
+ @DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
+ private String year;
+
+}
diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountOnlineQueryParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountOnlineQueryParam.java
new file mode 100644
index 000000000..cd5c8f2ee
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountOnlineQueryParam.java
@@ -0,0 +1,31 @@
+package com.engine.salary.entity.deductionamount.param;
+
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 扣除名单查询参数
+ * Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeductionAmountOnlineQueryParam {
+
+ // 个税扣缴义务人id
+ @DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
+ private Long taxAgentId;
+
+ // 税款所属年度
+ @DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
+ private String year;
+
+}
diff --git a/src/com/engine/salary/entity/deductionamount/param/DeductionAmountQueryParam.java b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountQueryParam.java
new file mode 100644
index 000000000..d6b87fb23
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/param/DeductionAmountQueryParam.java
@@ -0,0 +1,31 @@
+package com.engine.salary.entity.deductionamount.param;
+
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 扣除名单查询参数
+ * Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class DeductionAmountQueryParam {
+
+ // 个税扣缴义务人id
+ @DataCheck(require = true, message = "参数错误,个税扣缴义务人id不能为空")
+ private Long taxAgentId;
+
+ // 税款所属年度
+ @DataCheck(require = true, message = "参数错误,税款所属年度参数格式错误")
+ private String year;
+
+}
diff --git a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java
new file mode 100644
index 000000000..24bd438a2
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountPO.java
@@ -0,0 +1,140 @@
+package com.engine.salary.entity.deductionamount.po;
+
+import com.engine.hrmelog.annotation.ElogTransform;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Collection;
+import java.util.Date;
+
+/**
+ * 扣除名单
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+//hrsa_deduction_amount
+public class DeductionAmountPO {
+
+ /**
+ * ID
+ */
+ @ElogTransform(name = "ID")
+ private Long id;
+
+ /**
+ * 个税扣缴义务人ID
+ */
+ @ElogTransform(name = "个税扣缴义务人ID")
+ private Long taxAgentId;
+
+
+ /**
+ * 税款所属年度
+ */
+ @ElogTransform(name = "税款所属年度")
+ private String year;
+ /**
+ * 人员id
+ */
+ @ElogTransform(name = "人员id")
+ private Long employeeId;
+
+ /**
+ * 姓名
+ */
+ @ElogTransform(name = "姓名")
+ private String employeeName;
+
+ /**
+ * 人员类型
+ */
+ @ElogTransform(name = "人员类型")
+ private Integer employeeType;
+
+ /**
+ * 工号
+ */
+ @ElogTransform(name = "工号")
+ private String jobNum;
+
+ /**
+ * 国籍
+ */
+ @ElogTransform(name = "国籍")
+ private String nationality;
+
+ /**
+ * 证件号码
+ */
+ @ElogTransform(name = "证件号码")
+ private String cardNum;
+
+ /**
+ * 证件类型
+ */
+ @ElogTransform(name = "证件类型")
+ private Integer cardType;
+
+ /**
+ * 是否扣除
+ */
+ @ElogTransform(name = "是否扣除")
+ private Integer deductFlag;
+ /**
+ * 是否成功报送过
+ */
+ @ElogTransform(name = "是否成功报送过")
+ private Integer successfullyDeclared;
+
+ /**
+ * 报送状态
+ */
+ @ElogTransform(name = "报送状态")
+ private Integer declareStatus;
+
+ /**
+ * 申报失败的错误信息
+ */
+ @ElogTransform(name = "失败的错误信息")
+ private String declareErrorMsg;
+
+
+ /**
+ * 创建时间
+ */
+ @ElogTransform(name = "创建时间")
+ private Date createTime;
+
+
+ /**
+ * 修改时间
+ */
+ @ElogTransform(name = "修改时间")
+ private Date updateTime;
+
+ /**
+ * 创建人id
+ */
+ @ElogTransform(name = "创建人id")
+ private Long creator;
+
+ /**
+ * 是否删除
+ */
+ @ElogTransform(name = "是否删除")
+ private Integer deleteType;
+
+ /**
+ * 租户KEY
+ */
+ @ElogTransform(name = "租户KEY")
+ private String tenantKey;
+
+ //主键id集合
+ private Collection ids;
+
+}
\ No newline at end of file
diff --git a/src/com/engine/salary/entity/deductionamount/po/DeductionAmountRecordPO.java b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountRecordPO.java
new file mode 100644
index 000000000..f476627f1
--- /dev/null
+++ b/src/com/engine/salary/entity/deductionamount/po/DeductionAmountRecordPO.java
@@ -0,0 +1,66 @@
+package com.engine.salary.entity.deductionamount.po;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.util.Collection;
+import java.util.Date;
+
+/**
+ * 扣减报送记录
+ * Copyright: Copyright (c) 2023
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Accessors(chain = true)
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+//"hrsa_employee_declare_record")
+public class DeductionAmountRecordPO {
+
+ /**
+ * 主键id
+ */
+ private Long id;
+ /**
+ * 个税扣缴义务人
+ */
+ private Long taxAgentId;
+ /**
+ * 税款所属年
+ */
+ private String year;
+ /**
+ * 请求的requestId
+ */
+ private String requestId;
+ /**
+ * 租户key
+ */
+ private String tenantKey;
+ /**
+ * 创建人id
+ */
+ private Long creator;
+ /**
+ * 是否删除
+ */
+ private Integer deleteType;
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ private Collection ids;
+}
diff --git a/src/com/engine/salary/entity/push/dto/PushRecordDTO.java b/src/com/engine/salary/entity/push/dto/PushRecordDTO.java
index af5dd4d2a..74df0f8d4 100644
--- a/src/com/engine/salary/entity/push/dto/PushRecordDTO.java
+++ b/src/com/engine/salary/entity/push/dto/PushRecordDTO.java
@@ -3,6 +3,7 @@ package com.engine.salary.entity.push.dto;
import com.engine.hrmelog.annotation.ElogTransform;
import com.engine.salary.annotation.TableTitle;
import com.engine.salary.enums.push.PushRecordStatusEnum;
+import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -50,7 +51,7 @@ public class PushRecordDTO {
/**
* 数据库表名
*/
- @TableTitle(title = "记录名", dataIndex = "name", key = "name")
+ @TableTitle(title = "数据表名", dataIndex = "tableName", key = "tableName")
private String tableName;
@@ -59,56 +60,53 @@ public class PushRecordDTO {
*
* @see PushRecordStatusEnum
*/
- @TableTitle(title = "推送状态", dataIndex = "status", key = "status")
+ @TableTitle(title = "推送状态", dataIndex = "statusName", key = "statusName")
+ private String statusName;
private Integer status;
/**
* 执行时间
*/
- @TableTitle(title = "执行时间", dataIndex = "startTime", key = "startTime")
+ @TableTitle(title = "执行开始时间", dataIndex = "startTime", key = "startTime")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
/**
* 结束时间
*/
- @ElogTransform(name = "结束时间")
+ @TableTitle(title = "执行结束时间", dataIndex = "endTime", key = "endTime")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
/**
* 推送类型,0推送,1撤回
*/
- @ElogTransform(name = "推送类型")
private Integer type;
/**
* 创建时间
*/
- @ElogTransform(name = "创建时间")
private Date createTime;
/**
* 创建人
*/
- @ElogTransform(name = "创建人")
private Long creator;
/**
* 是否已删除。0:未删除、1:已删除
*/
- @ElogTransform(name = "是否已删除。0:未删除、1:已删除")
private Integer deleteType;
/**
* 租户ID
*/
- @ElogTransform(name = "租户ID")
private String tenantKey;
/**
* 更新时间
*/
- @ElogTransform(name = "更新时间")
private Date updateTime;
diff --git a/src/com/engine/salary/entity/push/dto/PushRecordDetailDTO.java b/src/com/engine/salary/entity/push/dto/PushRecordDetailDTO.java
index 2807eaf69..de9d56fe5 100644
--- a/src/com/engine/salary/entity/push/dto/PushRecordDetailDTO.java
+++ b/src/com/engine/salary/entity/push/dto/PushRecordDetailDTO.java
@@ -33,18 +33,22 @@ public class PushRecordDetailDTO {
*/
private Long acctEmpId;
+ @TableTitle(title = "人员", dataIndex = "username",key = "username")
+ private String username;
+
/**
* 执行状态
* @see com.engine.salary.enums.push.PushRecordDetailStatusEnum
*/
- @TableTitle(title = "执行状态", dataIndex = "status",key = "status")
+ @TableTitle(title = "执行状态", dataIndex = "statusName",key = "statusName")
+ private String statusName;
private Integer status;
/**
* 失败原因
*/
@TableTitle(title = "失败原因", dataIndex = "fail_reason",key = "status")
- private String fail_reason;
+ private String failReason;
/**
* 执行sql
diff --git a/src/com/engine/salary/entity/push/dto/PushSettingItemDTO.java b/src/com/engine/salary/entity/push/dto/PushSettingItemDTO.java
index a45d4635f..22c8832d6 100644
--- a/src/com/engine/salary/entity/push/dto/PushSettingItemDTO.java
+++ b/src/com/engine/salary/entity/push/dto/PushSettingItemDTO.java
@@ -59,4 +59,7 @@ public class PushSettingItemDTO {
@TableTitle(title = "字段类型", dataIndex = "fieldTypeName", key = "fieldTypeName")
private String fieldTypeName;
+ @TableTitle(title = "排序", dataIndex = "sortedIndex", key = "sortedIndex")
+ private Integer sortedIndex;
+
}
\ No newline at end of file
diff --git a/src/com/engine/salary/entity/push/param/CreatePushParam.java b/src/com/engine/salary/entity/push/param/CreatePushParam.java
new file mode 100644
index 000000000..5ef10fef4
--- /dev/null
+++ b/src/com/engine/salary/entity/push/param/CreatePushParam.java
@@ -0,0 +1,29 @@
+package com.engine.salary.entity.push.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+
+/**
+ * 创建推送记录
+ * Copyright: Copyright (c) 2024
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CreatePushParam {
+
+
+ private List salaryAcctRecordIds;
+
+
+}
\ No newline at end of file
diff --git a/src/com/engine/salary/entity/push/param/PushParam.java b/src/com/engine/salary/entity/push/param/PushParam.java
index 24f8c257e..f653c639b 100644
--- a/src/com/engine/salary/entity/push/param/PushParam.java
+++ b/src/com/engine/salary/entity/push/param/PushParam.java
@@ -13,6 +13,8 @@ import lombok.NoArgsConstructor;
public class PushParam {
+ private Long id;
+
private Long salaryAcctRecordId;
diff --git a/src/com/engine/salary/entity/push/param/PushSettingItemSaveParam.java b/src/com/engine/salary/entity/push/param/PushSettingItemSaveParam.java
index 57f46c330..d095b9697 100644
--- a/src/com/engine/salary/entity/push/param/PushSettingItemSaveParam.java
+++ b/src/com/engine/salary/entity/push/param/PushSettingItemSaveParam.java
@@ -59,6 +59,11 @@ public class PushSettingItemSaveParam {
@DataCheck(require = true, message = "字段类型为空")
private PushItemFieldEnum fieldType;
+ /**
+ * 排序
+ */
+ private Integer sortedIndex;
+
//主键id集合
private Collection ids;
diff --git a/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java b/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java
index 64e27ed08..88308a8b6 100644
--- a/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java
+++ b/src/com/engine/salary/entity/push/po/PushRecordDetailPO.java
@@ -34,6 +34,11 @@ public class PushRecordDetailPO {
@ElogTransform(name = "核算人员id")
private Long acctEmpId;
+ /**
+ * 核算人员id
+ */
+ private Long dataId;
+
/**
* 执行状态
* @see com.engine.salary.enums.push.PushRecordDetailStatusEnum
@@ -45,13 +50,13 @@ public class PushRecordDetailPO {
* 失败原因
*/
@ElogTransform(name = "失败原因")
- private String fail_reason;
+ private String failReason;
/**
* 执行sql
*/
@ElogTransform(name = "执行sql")
- private String execute;
+ private String formula;
/**
* 创建时间
diff --git a/src/com/engine/salary/entity/push/po/PushRecordPO.java b/src/com/engine/salary/entity/push/po/PushRecordPO.java
index 6101e4b18..a0ed7080a 100644
--- a/src/com/engine/salary/entity/push/po/PushRecordPO.java
+++ b/src/com/engine/salary/entity/push/po/PushRecordPO.java
@@ -64,7 +64,7 @@ public class PushRecordPO {
* 失败原因
*/
@ElogTransform(name = "失败原因")
- private String fail_reason;
+ private String failReason;
/**
* 开始时间
diff --git a/src/com/engine/salary/entity/push/po/PushSettingItemPO.java b/src/com/engine/salary/entity/push/po/PushSettingItemPO.java
index ad7f97da1..71b16e335 100644
--- a/src/com/engine/salary/entity/push/po/PushSettingItemPO.java
+++ b/src/com/engine/salary/entity/push/po/PushSettingItemPO.java
@@ -62,6 +62,10 @@ public class PushSettingItemPO {
@ElogTransform(name = "字段类型")
private Integer fieldType;
+
+ @ElogTransform(name = "排序")
+ private Integer sortedIndex;
+
/**
* 租户ID
*/
diff --git a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java
index e870f624e..19d0e742f 100644
--- a/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java
+++ b/src/com/engine/salary/entity/taxdeclaration/bo/TaxDeclarationCommon.java
@@ -1,5 +1,7 @@
package com.engine.salary.entity.taxdeclaration.bo;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.StrUtil;
import com.engine.salary.annotation.SalaryFormulaVar;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.AddUpSituation;
@@ -20,7 +22,6 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.IdGenerator;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field;
import java.math.BigDecimal;
@@ -49,29 +50,116 @@ public class TaxDeclarationCommon implements TaxDeclarationStrategy {
List taxDeclarationValues = Lists.newArrayListWithExpectedSize(employeeIdKeyMap.size());
for (Map.Entry> employeeIdEntry : employeeIdKeyMap.entrySet()) {
- // 取最后一次薪资核算记录的核算结果作为个税申报表的数据来源
- SalaryAcctEmployeePO lastSalaryAcctEmployee = SalaryEntityUtil.findFirst(employeeIdEntry.getValue());
- for (SalaryAcctEmployeePO salaryAcctEmployee : employeeIdEntry.getValue()) {
- SalaryAcctRecordPO salaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(salaryAcctEmployee.getSalaryAcctRecordId());
- SalaryAcctRecordPO lastSalaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(lastSalaryAcctEmployee.getSalaryAcctRecordId());
- if (salaryAcctRecord.getCreateTime().compareTo(lastSalaryAcctRecord.getCreateTime()) > 0) {
- lastSalaryAcctEmployee = salaryAcctEmployee;
- }
- }
+
Map valueMap = Maps.newHashMap();
for (TaxReportColumnPO taxReportColumn : taxDeclareContext.getTaxReportColumns()) {
- SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap()
- .get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex());
- List salaryAcctResultValue = salaryAcctResultValueMap.get(lastSalaryAcctEmployee.getId());
String value = "";
- if (salarySobTaxReportRule != null && salaryAcctResultValue != null) {
- value = salaryAcctResultValue.stream()
- .filter(result -> result.getSalaryItemId().equals(salarySobTaxReportRule.getSalaryItemId()))
- .findFirst()
- .orElse(new SalaryAcctResultPO())
- .getResultValue();
+
+ List firstValueList = Lists.newArrayList(
+ "taxFreeIncome",
+ "endowmentInsurance",
+ "medicalInsurance",
+ "unemploymentInsurance",
+ "housingProvidentFund",
+ "addUpChildEducation",
+ "addUpHousingLoanInterest",
+ "addUpHousingRent",
+ "addUpSupportElderly",
+ "addUpContinuingEducation",
+ "addUpInfantCare",
+ "annuity",
+ "commercialHealthInsurance",
+ "taxDeferredEndowmentInsurance",
+ "other",
+ "allowedDonation",
+ "taxDeduction",
+ "description",
+ "addUpAdvanceTax");
+
+ List lastValueList = Lists.newArrayList(
+ "addUpIncome",
+ "addUpTaxFreeIncome",
+ "addUpSubtraction",
+ "addUpSpecialDeduction",
+ "addUpOtherDeduction",
+ "addUpAllowedDonation",
+ "addUpTaxableIncome",
+ "taxRate",
+ "quickDeductionFactor",
+ "addUpTaxPayable",
+ "addUpTaxDeduction"
+ );
+
+ List mergeValueList = Lists.newArrayList(
+ "income",
+ "refundedOrSupplementedTax"
+ );
+
+ //取第一次值
+ if (firstValueList.contains(taxReportColumn.getReportColumnDataIndex())) {
+ SalaryAcctEmployeePO lastSalaryAcctEmployee = SalaryEntityUtil.findFirst(employeeIdEntry.getValue());
+ for (SalaryAcctEmployeePO salaryAcctEmployee : employeeIdEntry.getValue()) {
+ SalaryAcctRecordPO salaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(salaryAcctEmployee.getSalaryAcctRecordId());
+ SalaryAcctRecordPO lastSalaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(lastSalaryAcctEmployee.getSalaryAcctRecordId());
+ if (salaryAcctRecord.getCreateTime().compareTo(lastSalaryAcctRecord.getCreateTime()) < 0) {
+ lastSalaryAcctEmployee = salaryAcctEmployee;
+ }
+ }
+ SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap()
+ .get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex());
+ List salaryAcctResultValue = salaryAcctResultValueMap.get(lastSalaryAcctEmployee.getId());
+ if (salarySobTaxReportRule != null && salaryAcctResultValue != null) {
+ value = salaryAcctResultValue.stream()
+ .filter(result -> result.getSalaryItemId().equals(salarySobTaxReportRule.getSalaryItemId()))
+ .findFirst()
+ .orElse(new SalaryAcctResultPO())
+ .getResultValue();
+ }
+ value = StrUtil.isNotBlank(value) ? value : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : "";
+ }
+ //取多次累计值
+ else if (mergeValueList.contains(taxReportColumn.getReportColumnDataIndex()) && Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue())) {
+ List employeePOS = employeeIdEntry.getValue();
+ BigDecimal income = new BigDecimal("0.00");
+ for (SalaryAcctEmployeePO salaryAcctEmployeePO : employeePOS) {
+ SalarySobTaxReportRulePO incomeRule = taxDeclareContext.getSalarySobTaxReportRuleMap()
+ .get(salaryAcctEmployeePO.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex());
+ List salaryAcctResultValue = salaryAcctResultValueMap.get(salaryAcctEmployeePO.getId());
+ if (incomeRule != null && salaryAcctResultValue != null) {
+ String incomeValue = salaryAcctResultValue.stream()
+ .filter(result -> result.getSalaryItemId().equals(incomeRule.getSalaryItemId()))
+ .findFirst()
+ .orElse(new SalaryAcctResultPO())
+ .getResultValue();
+ if (StrUtil.isNotBlank(incomeValue) && NumberUtil.isNumber(incomeValue)) {
+ income = income.add(new BigDecimal(incomeValue));
+ }
+ }
+ }
+ value = income.toPlainString();
+ }
+ //取最后一次值
+ else {
+ SalaryAcctEmployeePO lastSalaryAcctEmployee = SalaryEntityUtil.findFirst(employeeIdEntry.getValue());
+ for (SalaryAcctEmployeePO salaryAcctEmployee : employeeIdEntry.getValue()) {
+ SalaryAcctRecordPO salaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(salaryAcctEmployee.getSalaryAcctRecordId());
+ SalaryAcctRecordPO lastSalaryAcctRecord = taxDeclareContext.getSalaryAcctRecordMap().get(lastSalaryAcctEmployee.getSalaryAcctRecordId());
+ if (salaryAcctRecord.getCreateTime().compareTo(lastSalaryAcctRecord.getCreateTime()) > 0) {
+ lastSalaryAcctEmployee = salaryAcctEmployee;
+ }
+ }
+ SalarySobTaxReportRulePO salarySobTaxReportRule = taxDeclareContext.getSalarySobTaxReportRuleMap()
+ .get(lastSalaryAcctEmployee.getSalarySobId() + "-" + taxReportColumn.getReportColumnDataIndex());
+ List salaryAcctResultValue = salaryAcctResultValueMap.get(lastSalaryAcctEmployee.getId());
+ if (salarySobTaxReportRule != null && salaryAcctResultValue != null) {
+ value = salaryAcctResultValue.stream()
+ .filter(result -> result.getSalaryItemId().equals(salarySobTaxReportRule.getSalaryItemId()))
+ .findFirst()
+ .orElse(new SalaryAcctResultPO())
+ .getResultValue();
+ }
+ value = StrUtil.isNotBlank(value) ? value : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : "";
}
- value = StringUtils.isNotBlank(value) ? value : Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue()) ? "0.00" : "";
valueMap.put(taxReportColumn.getReportColumnDataIndex(), value);
}
TaxDeclarationValuePO taxDeclarationValue = TaxDeclarationValuePO.builder()
diff --git a/src/com/engine/salary/enums/employeedeclare/DeclareStatusEnum.java b/src/com/engine/salary/enums/employeedeclare/DeclareStatusEnum.java
index 2a91aafde..e0d759613 100644
--- a/src/com/engine/salary/enums/employeedeclare/DeclareStatusEnum.java
+++ b/src/com/engine/salary/enums/employeedeclare/DeclareStatusEnum.java
@@ -2,6 +2,8 @@ package com.engine.salary.enums.employeedeclare;
import com.engine.salary.enums.BaseEnum;
+import java.util.Objects;
+
/**
* 人员报送状态
* Copyright: Copyright (c) 2023
@@ -43,4 +45,13 @@ public enum DeclareStatusEnum implements BaseEnum {
public Integer getLabelId() {
return labelId;
}
+
+ public static DeclareStatusEnum getByValue(Integer value) {
+ for (DeclareStatusEnum e : DeclareStatusEnum.values()) {
+ if (Objects.equals(e.getValue(), value)) {
+ return e;
+ }
+ }
+ return NOT_DECLARE;
+ }
}
diff --git a/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java b/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java
index 47245a544..c2d677d42 100644
--- a/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java
+++ b/src/com/engine/salary/enums/push/PushRecordDetailStatusEnum.java
@@ -17,7 +17,8 @@ public enum PushRecordDetailStatusEnum implements BaseEnum {
PREPARE(0, "待推送", 87625),
SUCCESS(1, "推送成功", 85393),
FAIL(2, "推送失败", 85393),
- WITHDRAW(3, "已撤回", 85393);
+ WITHDRAW_SUCCESS(3, "已撤回", 85393),
+ WITHDRAW_FAIL(4, "撤回失败", 85393);
private int value;
@@ -52,7 +53,7 @@ public enum PushRecordDetailStatusEnum implements BaseEnum {
return salaryDataSourceEnum;
}
}
- return null;
+ return PREPARE;
}
public static String getDefaultLabelByValue(Integer value) {
diff --git a/src/com/engine/salary/enums/push/PushRecordStatusEnum.java b/src/com/engine/salary/enums/push/PushRecordStatusEnum.java
index 7b537e28e..3e3ea14c4 100644
--- a/src/com/engine/salary/enums/push/PushRecordStatusEnum.java
+++ b/src/com/engine/salary/enums/push/PushRecordStatusEnum.java
@@ -14,13 +14,14 @@ import java.util.Objects;
* @version 1.0
**/
public enum PushRecordStatusEnum implements BaseEnum {
- DATA_PREPARE(0, "数据构建", 87625),
- DATA_FINISH(1, "构建完毕", 87625),
- RUN_WAITING(2, "等待执行", 87625),
- RUN_PROGRESS(3, "执行中", 85393),
- RUN_COMPLETE(4, "执行完毕", 85393),
- RUN_SUCCESS(5, "执行成功", 85393),
- RUN_FAIL(6, "执行失败", 85393);
+ DATA_PREPARE(0, "准备中", 87625),
+ DATA_FINISH(1, "准备完毕", 87625),
+ RUN_PROGRESS(2, "推送中", 85393),
+ RUN_SUCCESS(3, "推送成功", 85393),
+ RUN_FAIL(4, "推送失败", 85393),
+ WITHDRAW(5, "撤回中", 85393),
+ WITHDRAW_SUCCESS(6, "已撤回", 85393),
+ WITHDRAW_FAIL(7, "撤回失败", 85393);
private int value;
@@ -55,7 +56,7 @@ public enum PushRecordStatusEnum implements BaseEnum {
return salaryDataSourceEnum;
}
}
- return null;
+ return DATA_PREPARE;
}
public static String getDefaultLabelByValue(Integer value) {
diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.java b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.java
new file mode 100644
index 000000000..352d00a2e
--- /dev/null
+++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.java
@@ -0,0 +1,74 @@
+package com.engine.salary.mapper.deductionamount;
+
+import com.engine.salary.entity.deductionamount.po.DeductionAmountPO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Collection;
+import java.util.List;
+
+public interface DeductionAmountMapper {
+
+ /**
+ * 查询所有记录
+ *
+ * @return 返回集合,没有返回空List
+ */
+ List listAll();
+
+ /**
+ * 条件查询
+ *
+ * @return 返回集合,没有返回空List
+ */
+ List listSome(DeductionAmountPO deductionAmount);
+
+
+ /**
+ * 根据主键查询
+ *
+ * @param id 主键
+ * @return 返回记录,没有返回null
+ */
+ DeductionAmountPO getById(Long id);
+
+ /**
+ * 新增,忽略null字段
+ *
+ * @param deductionAmount 新增的记录
+ * @return 返回影响行数
+ */
+ int insertIgnoreNull(DeductionAmountPO deductionAmount);
+
+
+ /**
+ * 修改,修改所有字段
+ *
+ * @param deductionAmount 修改的记录
+ * @return 返回影响行数
+ */
+ int update(DeductionAmountPO deductionAmount);
+
+ /**
+ * 修改,忽略null字段
+ *
+ * @param deductionAmount 修改的记录
+ * @return 返回影响行数
+ */
+ int updateIgnoreNull(DeductionAmountPO deductionAmount);
+
+ /**
+ * 删除记录
+ *
+ * @param deductionAmount 待删除的记录
+ * @return 返回影响行数
+ */
+ int delete(DeductionAmountPO deductionAmount);
+
+ /**
+ * 批量删除记录
+ *
+ * @param ids 主键id集合
+ */
+ void deleteByIds(@Param("ids") Collection ids);
+
+}
\ No newline at end of file
diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml
new file mode 100644
index 000000000..023a41f81
--- /dev/null
+++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountMapper.xml
@@ -0,0 +1,375 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t
+ .
+ card_num
+ , t.card_type
+ , t.create_time
+ , t.creator
+ , t.declare_status
+ , t.deduct_flag
+ , t.delete_type
+ , t.employee_id
+ , t.employee_name
+ , t.employee_type
+ , t.id
+ , t.job_num
+ , t.successfully_declared
+ , t.declare_error_msg
+ , t.tax_agent_id
+ , t.tenant_key
+ , t.update_time
+ , t.year
+ , t.nationality
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO hrsa_deduction_amount
+
+
+
+ card_num,
+
+
+ card_type,
+
+
+ create_time,
+
+
+ creator,
+
+
+ declare_status,
+
+
+ deduct_flag,
+
+
+ delete_type,
+
+
+ employee_id,
+
+
+ employee_name,
+
+
+ employee_type,
+
+
+ id,
+
+
+ job_num,
+
+
+ successfully_declared,
+
+
+ declare_error_msg,
+
+
+ tax_agent_id,
+
+
+ tenant_key,
+
+
+ update_time,
+
+
+ year,
+
+
+ nationality,
+
+
+
+
+ #{cardNum},
+
+
+ #{cardType},
+
+
+ #{createTime},
+
+
+ #{creator},
+
+
+ #{declareStatus},
+
+
+ #{deductFlag},
+
+
+ #{deleteType},
+
+
+ #{employeeId},
+
+
+ #{employeeName},
+
+
+ #{employeeType},
+
+
+ #{id},
+
+
+ #{jobNum},
+
+
+ #{successfullyDeclared},
+
+
+ #{declareErrorMsg},
+
+
+ #{taxAgentId},
+
+
+ #{tenantKey},
+
+
+ #{updateTime},
+
+
+ #{year},
+
+
+ #{nationality},
+
+
+
+
+
+
+
+ UPDATE hrsa_deduction_amount
+
+ card_num=#{cardNum},
+ card_type=#{cardType},
+ create_time=#{createTime},
+ creator=#{creator},
+ declare_status=#{declareStatus},
+ deduct_flag=#{deductFlag},
+ delete_type=#{deleteType},
+ employee_id=#{employeeId},
+ employee_name=#{employeeName},
+ employee_type=#{employeeType},
+ job_num=#{jobNum},
+ successfully_declared=#{successfullyDeclared},
+ declare_error_msg=#{declareErrorMsg},
+ tax_agent_id=#{taxAgentId},
+ tenant_key=#{tenantKey},
+ update_time=#{updateTime},
+ year=#{year},
+ nationality=#{nationality},
+
+ WHERE id = #{id} AND delete_type = 0
+
+
+
+
+
+ UPDATE hrsa_deduction_amount
+
+
+ card_num=#{cardNum},
+
+
+ card_type=#{cardType},
+
+
+ create_time=#{createTime},
+
+
+ creator=#{creator},
+
+
+ declare_status=#{declareStatus},
+
+
+ deduct_flag=#{deductFlag},
+
+
+ delete_type=#{deleteType},
+
+
+ employee_id=#{employeeId},
+
+
+ employee_name=#{employeeName},
+
+
+ employee_type=#{employeeType},
+
+
+ job_num=#{jobNum},
+
+
+ successfully_declared=#{successfullyDeclared},
+
+
+ declare_error_msg=#{declareErrorMsg},
+
+
+ tax_agent_id=#{taxAgentId},
+
+
+ tenant_key=#{tenantKey},
+
+
+ update_time=#{updateTime},
+
+
+ year=#{year},
+
+
+ nationality=#{nationality},
+
+
+ WHERE id = #{id} AND delete_type = 0
+
+
+
+
+
+ UPDATE hrsa_deduction_amount
+ SET delete_type=1
+ WHERE id = #{id}
+ AND delete_type = 0
+
+
+
+ UPDATE hrsa_deduction_amount
+ SET delete_type = 1
+ WHERE delete_type = 0
+ AND id IN
+
+ #{id}
+
+
+
+
+
\ No newline at end of file
diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.java b/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.java
new file mode 100644
index 000000000..ca2815680
--- /dev/null
+++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.java
@@ -0,0 +1,77 @@
+package com.engine.salary.mapper.deductionamount;
+
+import com.engine.salary.entity.deductionamount.po.DeductionAmountRecordPO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Collection;
+import java.util.List;
+
+public interface DeductionAmountRecordMapper {
+
+ /**
+ * 查询所有记录
+ *
+ * @return 返回集合,没有返回空List
+ */
+ List listAll();
+
+ /**
+ * 条件查询
+ *
+ * @return 返回集合,没有返回空List
+ */
+ List listSome(DeductionAmountRecordPO deductionAmountRecord);
+
+
+ /**
+ * 根据主键查询
+ *
+ * @param id 主键
+ * @return 返回记录,没有返回null
+ */
+ DeductionAmountRecordPO getById(Long id);
+
+
+ DeductionAmountRecordPO getByTaxAgentIdAndYear(@Param("taxAgentId")Long taxAgentId,@Param("year") String year);
+
+ /**
+ * 新增,忽略null字段
+ *
+ * @param deductionAmountRecord 新增的记录
+ * @return 返回影响行数
+ */
+ int insertIgnoreNull(DeductionAmountRecordPO deductionAmountRecord);
+
+ /**
+ * 修改,修改所有字段
+ *
+ * @param deductionAmountRecord 修改的记录
+ * @return 返回影响行数
+ */
+ int update(DeductionAmountRecordPO deductionAmountRecord);
+
+ /**
+ * 修改,忽略null字段
+ *
+ * @param deductionAmountRecord 修改的记录
+ * @return 返回影响行数
+ */
+ int updateIgnoreNull(DeductionAmountRecordPO deductionAmountRecord);
+
+ /**
+ * 删除记录
+ *
+ * @param deductionAmountRecord 待删除的记录
+ * @return 返回影响行数
+ */
+ int delete(DeductionAmountRecordPO deductionAmountRecord);
+
+ /**
+ * 批量删除记录
+ * @param ids 主键id集合
+ */
+ void deleteByIds(@Param("ids") Collection ids);
+
+ void deleteByTaxAgentIdAndYear(@Param("taxAgentId")Long taxAgentId,@Param("year") String year);
+
+}
\ No newline at end of file
diff --git a/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.xml b/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.xml
new file mode 100644
index 000000000..930371420
--- /dev/null
+++ b/src/com/engine/salary/mapper/deductionamount/DeductionAmountRecordMapper.xml
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t
+ .
+ create_time
+ , t.creator
+ , t.delete_type
+ , t.id
+ , t.request_id
+ , t.tax_agent_id
+ , t.tenant_key
+ , t.update_time
+ , t.year
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO hrsa_deduction_amount_record
+
+
+
+ create_time,
+
+
+ creator,
+
+
+ delete_type,
+
+
+ id,
+
+
+ request_id,
+
+
+ tax_agent_id,
+
+
+ tenant_key,
+
+
+ update_time,
+
+
+ year,
+
+
+
+
+ #{createTime},
+
+
+ #{creator},
+
+
+ #{deleteType},
+
+
+ #{id},
+
+
+ #{requestId},
+
+
+ #{taxAgentId},
+
+
+ #{tenantKey},
+
+
+ #{updateTime},
+
+
+ #{year},
+
+
+
+
+
+
+ UPDATE hrsa_deduction_amount_record
+
+ create_time=#{createTime},
+ creator=#{creator},
+ delete_type=#{deleteType},
+ request_id=#{requestId},
+ tax_agent_id=#{taxAgentId},
+ tenant_key=#{tenantKey},
+ update_time=#{updateTime},
+ year=#{year},
+
+ WHERE id = #{id} AND delete_type = 0
+
+
+
+
+
+ UPDATE hrsa_deduction_amount_record
+
+
+ create_time=#{createTime},
+
+
+ creator=#{creator},
+
+
+ delete_type=#{deleteType},
+
+
+ request_id=#{requestId},
+
+
+ tax_agent_id=#{taxAgentId},
+
+
+ tenant_key=#{tenantKey},
+
+
+ update_time=#{updateTime},
+
+
+ year=#{year},
+
+
+ WHERE id = #{id} AND delete_type = 0
+
+
+
+
+
+ UPDATE hrsa_deduction_amount_record
+ SET delete_type=1
+ WHERE id = #{id}
+ AND delete_type = 0
+
+
+
+ UPDATE hrsa_deduction_amount_record
+ SET delete_type = 1
+ WHERE delete_type = 0
+ AND id IN
+
+ #{id}
+
+
+
+
+ UPDATE hrsa_deduction_amount_record
+ SET delete_type = 1
+ WHERE delete_type = 0
+ AND tax_agent_id=#{taxAgentId}
+ AND year=#{year}
+
+
\ No newline at end of file
diff --git a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.java b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.java
index 5ad4a105f..1c63a36c2 100644
--- a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.java
+++ b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.java
@@ -1,5 +1,6 @@
package com.engine.salary.mapper.push;
+import com.engine.salary.entity.push.dto.PushRecordDetailDTO;
import com.engine.salary.entity.push.po.PushRecordDetailPO;
import org.apache.ibatis.annotations.Param;
@@ -21,7 +22,9 @@ public interface PushRecordDetailMapper {
* @return 返回集合,没有返回空List
*/
List listSome(PushRecordDetailPO pushRecordDetail);
-
+
+ List listDTO(PushRecordDetailDTO dto);
+
/**
* 根据主键查询
diff --git a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml
index ecbeef0cd..73220be28 100644
--- a/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml
+++ b/src/com/engine/salary/mapper/push/PushRecordDetailMapper.xml
@@ -6,12 +6,14 @@
-
+
+
+
@@ -22,12 +24,14 @@
, t.create_time
, t.creator
, t.delete_type
- , t.execute
+ , t.formula
, t.id
, t.record_id
, t.status
, t.tenant_key
, t.update_time
+ , t.fail_reason
+ , t.data_id
@@ -64,8 +68,8 @@
AND delete_type = #{deleteType}
-
- AND execute = #{execute}
+
+ AND formula = #{formula}
AND id = #{id}
@@ -88,6 +92,54 @@
#{id}
+ ORDER BY id DESC
+
+
+
@@ -109,8 +161,8 @@
delete_type,
-
- execute,
+
+ formula,
id,
@@ -127,6 +179,12 @@
update_time,
+
+ fail_reason,
+
+
+ data_id,
+
@@ -141,8 +199,8 @@
#{deleteType},
-
- #{execute},
+
+ #{formula},
#{id},
@@ -159,6 +217,12 @@
#{updateTime},
+
+ #{failReason},
+
+
+ #{dataId},
+
@@ -170,11 +234,13 @@
create_time=#{createTime},
creator=#{creator},
delete_type=#{deleteType},
- execute=#{execute},
+ formula=#{formula},
record_id=#{recordId},
status=#{status},
tenant_key=#{tenantKey},
update_time=#{updateTime},
+ fail_reason=#{failReason},
+ data_id=#{dataId},
WHERE id = #{id} AND delete_type = 0
@@ -196,8 +262,8 @@
delete_type=#{deleteType},
-
- execute=#{execute},
+
+ formula=#{formula},
record_id=#{recordId},
@@ -211,6 +277,12 @@
update_time=#{updateTime},
+
+ fail_reason=#{failReason},
+
+
+ data_id=#{dataId},
+
WHERE id = #{id} AND delete_type = 0
diff --git a/src/com/engine/salary/mapper/push/PushRecordMapper.xml b/src/com/engine/salary/mapper/push/PushRecordMapper.xml
index 7009997ee..48e1a2765 100644
--- a/src/com/engine/salary/mapper/push/PushRecordMapper.xml
+++ b/src/com/engine/salary/mapper/push/PushRecordMapper.xml
@@ -3,18 +3,21 @@
+
+
+
-
-
-
-
+
+
+
+
@@ -34,6 +37,9 @@
, t.tenant_key
, t.type
, t.update_time
+ , t.fail_reason
+ , t.start_time
+ , t.end_time
@@ -98,6 +104,15 @@
AND update_time = #{updateTime}
+
+ AND fail_reason = #{failReason}
+
+
+ AND start_time = #{startTime}
+
+
+ AND end_time = #{endTime}
+
AND id IN
@@ -152,6 +167,15 @@
update_time,
+
+ fail_reason,
+
+
+ start_time,
+
+
+ end_time,
+
@@ -193,6 +217,15 @@
#{updateTime},
+
+ #{failReason},
+
+
+ #{startTime},
+
+
+ #{endTime},
+
@@ -212,6 +245,9 @@
tenant_key=#{tenantKey},
type=#{type},
update_time=#{updateTime},
+ fail_reason=#{failReason},
+ start_time=#{startTime},
+ end_time=#{endTime},
WHERE id = #{id} AND delete_type = 0
@@ -257,6 +293,15 @@
update_time=#{updateTime},
+
+ fail_reason=#{failReason},
+
+
+ start_time=#{startTime},
+
+
+ end_time=#{endTime},
+
WHERE id = #{id} AND delete_type = 0
diff --git a/src/com/engine/salary/mapper/push/PushSettingItemMapper.xml b/src/com/engine/salary/mapper/push/PushSettingItemMapper.xml
index f708ed48c..2c5322940 100644
--- a/src/com/engine/salary/mapper/push/PushSettingItemMapper.xml
+++ b/src/com/engine/salary/mapper/push/PushSettingItemMapper.xml
@@ -12,6 +12,7 @@
+
@@ -32,6 +33,7 @@
, t.setting_id
, t.tenant_key
, t.update_time
+ , t.sorted_index
@@ -40,6 +42,7 @@
FROM hrsa_push_setting_item t
WHERE delete_type = 0
+ ORDER BY sorted_index DESC
@@ -85,6 +88,9 @@
AND setting_id = #{settingId}
+
+
+ AND sorted_index = #{sortedIndex}
AND tenant_key = #{tenantKey}
@@ -98,7 +104,7 @@
#{id}
- ORDER BY id DESC
+ ORDER BY sorted_index DESC
@@ -137,6 +143,9 @@
setting_id,
+
+ sorted_index,
+
tenant_key,
@@ -175,6 +184,9 @@
#{settingId},
+
+ #{sortedIndex},
+
#{tenantKey},
@@ -197,6 +209,7 @@
item_name=#{itemName},
source=#{source},
setting_id=#{settingId},
+ sorted_index=#{sortedIndex},
tenant_key=#{tenantKey},
update_time=#{updateTime},
@@ -235,6 +248,9 @@
setting_id=#{settingId},
+
+ sorted_index=#{sortedIndex},
+
tenant_key=#{tenantKey},
diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml
index 010c05fa8..519af2c54 100644
--- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml
+++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml
@@ -143,6 +143,9 @@
AND t.tax_cycle #{taxCycleDateRange.endDate}
+
+ AND sob.tax_agent_id = #{taxAgentId}
+
ORDER BY t.id DESC