diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index 73a128f3e..60b4e6089 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=2.16.1.2410.01 +version=2.17.1.2411.01 openFormulaForcedEditing=false \ No newline at end of file diff --git a/resource/sqlupgrade/DM/sql202404251103.sql b/resource/sqlupgrade/DM/sql202404251103.sql new file mode 100644 index 000000000..42204eed9 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +); +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50); +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50); +/ + diff --git a/resource/sqlupgrade/DM/sql202410090103.sql b/resource/sqlupgrade/DM/sql202410090103.sql new file mode 100644 index 000000000..69ba04c00 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/DM/sql202410090203.sql b/resource/sqlupgrade/DM/sql202410090203.sql new file mode 100644 index 000000000..32c3a6712 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410090203.sql @@ -0,0 +1,70 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/DM/sql202410250303.sql b/resource/sqlupgrade/DM/sql202410250303.sql new file mode 100644 index 000000000..be178d1f8 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410250303.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add account_type NUMBER; +/ + diff --git a/resource/sqlupgrade/DM/sql202411060203.sql b/resource/sqlupgrade/DM/sql202411060203.sql new file mode 100644 index 000000000..d19f32161 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202411060203.sql @@ -0,0 +1,30 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + template_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202404251103.sql b/resource/sqlupgrade/GS/sql202404251103.sql new file mode 100644 index 000000000..42204eed9 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +); +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50); +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50); +/ + diff --git a/resource/sqlupgrade/GS/sql202410090103.sql b/resource/sqlupgrade/GS/sql202410090103.sql new file mode 100644 index 000000000..69ba04c00 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202410090203.sql b/resource/sqlupgrade/GS/sql202410090203.sql new file mode 100644 index 000000000..32c3a6712 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410090203.sql @@ -0,0 +1,70 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/GS/sql202410250303.sql b/resource/sqlupgrade/GS/sql202410250303.sql new file mode 100644 index 000000000..be178d1f8 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410250303.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add account_type NUMBER; +/ + diff --git a/resource/sqlupgrade/GS/sql202411060203.sql b/resource/sqlupgrade/GS/sql202411060203.sql new file mode 100644 index 000000000..d19f32161 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202411060203.sql @@ -0,0 +1,30 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + template_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202404251103.sql b/resource/sqlupgrade/JC/sql202404251103.sql new file mode 100644 index 000000000..42204eed9 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +); +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50); +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50); +/ + diff --git a/resource/sqlupgrade/JC/sql202410090103.sql b/resource/sqlupgrade/JC/sql202410090103.sql new file mode 100644 index 000000000..69ba04c00 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202410090203.sql b/resource/sqlupgrade/JC/sql202410090203.sql new file mode 100644 index 000000000..32c3a6712 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410090203.sql @@ -0,0 +1,70 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/JC/sql202410250303.sql b/resource/sqlupgrade/JC/sql202410250303.sql new file mode 100644 index 000000000..be178d1f8 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410250303.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add account_type NUMBER; +/ + diff --git a/resource/sqlupgrade/JC/sql202411060203.sql b/resource/sqlupgrade/JC/sql202411060203.sql new file mode 100644 index 000000000..d19f32161 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202411060203.sql @@ -0,0 +1,30 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + template_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202404251103.sql b/resource/sqlupgrade/Mysql/sql202404251103.sql new file mode 100644 index 000000000..61d412db9 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202404251103.sql @@ -0,0 +1,16 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id bigint NOT NULL, + salary_sob_id bigint NOT NULL, + open_approval int NOT NULL, + approval_group_setting text NULL, + workflow_url varchar(500) NULL DEFAULT NULL, + delete_type int NOT NULL, + create_time datetime NOT NULL , + update_time datetime NOT NULL, + creator bigint NOT NULL, + PRIMARY KEY (id) +); + +alter table hrsa_salary_acct_record add approval_id varchar(50); + +alter table hrsa_salary_acct_record add approval_status varchar(50); \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202410090103.sql b/resource/sqlupgrade/Mysql/sql202410090103.sql new file mode 100644 index 000000000..a7bb9b4d8 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410090103.sql @@ -0,0 +1,22 @@ +ALTER TABLE hrsa_bill_detail_temp +ADD COLUMN subcompany_name text , +ADD COLUMN subcompany_id bigint(0), +ADD COLUMN department_name text , +ADD COLUMN department_id bigint(0), +ADD COLUMN jobtitle_name text , +ADD COLUMN jobtitle_id bigint(0) , +ADD COLUMN jobcall text , +ADD COLUMN jobcall_id bigint(0), +ADD COLUMN status text ; + + +ALTER TABLE hrsa_bill_detail +ADD COLUMN subcompany_name text , +ADD COLUMN subcompany_id bigint(0), +ADD COLUMN department_name text , +ADD COLUMN department_id bigint(0), +ADD COLUMN jobtitle_name text , +ADD COLUMN jobtitle_id bigint(0) , +ADD COLUMN jobcall text , +ADD COLUMN jobcall_id bigint(0), +ADD COLUMN status text ; \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202410090203.sql b/resource/sqlupgrade/Mysql/sql202410090203.sql new file mode 100644 index 000000000..0b58cbde8 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410090203.sql @@ -0,0 +1,29 @@ +update hrsa_bill_detail a INNER JOIN ( + select e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) as b +on a.employee_id = b.employeeId + set a.department_id = b.departmentId, + a.department_name = b.departmentName, + a.subcompany_id = b.subcompanyid, + a.subcompany_name = b.subcompanyName, + a.jobtitle_id = b.jobtitleId, + a.jobtitle_name = b.jobtitleName, + a.jobcall_id = b.jobcallId, + a.jobcall = b.jobcall, + a.status = b.status +where a.delete_type=0; \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202410250303.sql b/resource/sqlupgrade/Mysql/sql202410250303.sql new file mode 100644 index 000000000..c1c7cb26c --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410250303.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_salary_acct_emp ADD COLUMN account_type int(0); \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202411060203.sql b/resource/sqlupgrade/Mysql/sql202411060203.sql new file mode 100644 index 000000000..57144b7ee --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202411060203.sql @@ -0,0 +1,28 @@ +CREATE TABLE hrsa_page_link +( + id bigint(0) NOT NULL, + employee_id bigint(0), + page varchar(200), + template_id bigint(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_page_list_template ( +id bigint(0) NOT NULL, +name varchar(200), +page varchar(200), +shared_type int(0), +limit_ids varchar(2000), +setting text, +creator bigint(0), +create_time datetime(0), +update_time datetime(0), +delete_type int(0), +tenant_key varchar(10), +PRIMARY KEY (id) USING BTREE +); diff --git a/resource/sqlupgrade/Oracle/sql202404251103.sql b/resource/sqlupgrade/Oracle/sql202404251103.sql new file mode 100644 index 000000000..ed864ec3e --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202404251103.sql @@ -0,0 +1,18 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +) +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50) +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202410090103.sql b/resource/sqlupgrade/Oracle/sql202410090103.sql new file mode 100644 index 000000000..c4c7780d7 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410090103.sql @@ -0,0 +1,37 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL +/ +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null +/ +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL +/ +alter table hrsa_bill_detail_temp add department_id NUMBER null +/ +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL +/ +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL +/ +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL +/ +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL +/ +alter table hrsa_bill_detail_temp add status varchar2(200) NULL +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL +/ +alter table hrsa_bill_detail add subcompany_id NUMBER null +/ +alter table hrsa_bill_detail add department_name varchar2(200) NULL +/ +alter table hrsa_bill_detail add department_id NUMBER null +/ +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL +/ +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL +/ +alter table hrsa_bill_detail add jobcall varchar2(200) NULL +/ +alter table hrsa_bill_detail add jobcall_id NUMBER NULL +/ +alter table hrsa_bill_detail add status varchar2(200) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202410090203.sql b/resource/sqlupgrade/Oracle/sql202410090203.sql new file mode 100644 index 000000000..27f8f43c6 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410090203.sql @@ -0,0 +1,69 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202410250303.sql b/resource/sqlupgrade/Oracle/sql202410250303.sql new file mode 100644 index 000000000..d70f10dc0 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410250303.sql @@ -0,0 +1,2 @@ +alter table hrsa_salary_acct_emp add account_type NUMBER +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202411060203.sql b/resource/sqlupgrade/Oracle/sql202411060203.sql new file mode 100644 index 000000000..0bd5a59a9 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202411060203.sql @@ -0,0 +1,29 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + template_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +) +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + 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/PG/sql202404251103.sql b/resource/sqlupgrade/PG/sql202404251103.sql new file mode 100644 index 000000000..66ff0a56e --- /dev/null +++ b/resource/sqlupgrade/PG/sql202404251103.sql @@ -0,0 +1,18 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id bigint primary key, + salary_sob_id bigint, + open_approval int, + approval_group_setting text, + workflow_url varchar(500) DEFAULT NULL, + delete_type int, + create_time timestamp, + update_time timestamp, + creator bigint +) +/ + +alter table hrsa_salary_acct_record add approval_id varchar(50) +/ + +alter table hrsa_salary_acct_record add approval_status varchar(50) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410090103.sql b/resource/sqlupgrade/PG/sql202410090103.sql new file mode 100644 index 000000000..b1954e9d6 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410090203.sql b/resource/sqlupgrade/PG/sql202410090203.sql new file mode 100644 index 000000000..1c23bc156 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410090203.sql @@ -0,0 +1,68 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410250303.sql b/resource/sqlupgrade/PG/sql202410250303.sql new file mode 100644 index 000000000..7d8b52851 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410250303.sql @@ -0,0 +1 @@ +alter table hrsa_salary_acct_emp add account_type int; \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202411060203.sql b/resource/sqlupgrade/PG/sql202411060203.sql new file mode 100644 index 000000000..21dae6b98 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202411060203.sql @@ -0,0 +1,27 @@ +create table hrsa_page_link +( + id bigint primary key, + employee_id bigint, + page varchar(200), + template_id bigint, + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10) +); + +create table hrsa_page_list_template +( + id bigint primary key, + name varchar(200), + page varchar(200), + shared_type int, + limit_ids varchar(2000), + setting text, + creator bigint, + create_time timestamp, + update_time timestamp, + delete_type int, + tenant_key varchar(10) +); \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202404251103.sql b/resource/sqlupgrade/SQLServer/sql202404251103.sql new file mode 100644 index 000000000..ba5e60f8c --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id bigint NOT NULL, + salary_sob_id bigint NOT NULL, + open_approval int NOT NULL, + approval_group_setting text NULL, + workflow_url varchar(500)NULL DEFAULT NULL, + delete_type int NOT NULL, + create_time datetime NOT NULL , + update_time datetime NOT NULL, + creator bigint NOT NULL, + PRIMARY KEY (id) +) +GO + +alter table hrsa_salary_acct_record add approval_id varchar(50) +GO + +alter table hrsa_salary_acct_record add approval_status varchar(50) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410090103.sql b/resource/sqlupgrade/SQLServer/sql202410090103.sql new file mode 100644 index 000000000..08a49b2d1 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410090103.sql @@ -0,0 +1,23 @@ +ALTER TABLE hrsa_bill_detail_temp +ADD subcompany_name varchar(200), +subcompany_id bigint, +department_name varchar(200), +department_id bigint, +jobtitle_name varchar(200), +jobtitle_id bigint, +jobcall varchar(200), +jobcall_id bigint, +status varchar(200) +GO + +ALTER TABLE hrsa_bill_detail +ADD subcompany_name varchar(200), +subcompany_id bigint, +department_name varchar(200), +department_id bigint, +jobtitle_name varchar(200), +jobtitle_id bigint, +jobcall varchar(200), +jobcall_id bigint, +status varchar(200) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410090203.sql b/resource/sqlupgrade/SQLServer/sql202410090203.sql new file mode 100644 index 000000000..7a1efdb02 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410090203.sql @@ -0,0 +1,31 @@ +UPDATE hrsa_bill_detail +set department_id = b.departmentId, + department_name = b.departmentName, + subcompany_id = b.subcompanyid, + subcompany_name = b.subcompanyName, + jobtitle_id = b.jobtitleId, + jobtitle_name = b.jobtitleName, + jobcall_id = b.jobcallId, + jobcall = b.jobcall, + status = b.status +FROM hrsa_bill_detail a INNER JOIN ( + select e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) as b +on a.employee_id = b.employeeId +WHERE a.delete_type=0 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410250303.sql b/resource/sqlupgrade/SQLServer/sql202410250303.sql new file mode 100644 index 000000000..9235eb7dd --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410250303.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_salary_acct_emp ADD account_type int +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202411060203.sql b/resource/sqlupgrade/SQLServer/sql202411060203.sql new file mode 100644 index 000000000..d901127a1 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202411060203.sql @@ -0,0 +1,29 @@ +create table hrsa_page_link +( + id bigint primary key, + employee_id bigint, + page varchar(200), + template_id bigint, + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10) +) +GO + +create table hrsa_page_list_template +( + id bigint primary key, + name varchar(200), + page varchar(200), + shared_type int, + limit_ids varchar(2000), + setting text, + creator bigint, + create_time datetime, + update_time datetime, + delete_type int, + tenant_key varchar(10) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202404251103.sql b/resource/sqlupgrade/ST/sql202404251103.sql new file mode 100644 index 000000000..42204eed9 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202404251103.sql @@ -0,0 +1,19 @@ +CREATE TABLE hrsa_salary_approval_rule ( + id NUMBER(38,0) primary key, + salary_sob_id NUMBER(38,0), + open_approval NUMBER, + approval_group_setting clob, + workflow_url varchar2(500) DEFAULT NULL, + delete_type NUMBER, + create_time DATE default sysdate, + update_time DATE default sysdate, + creator NUMBER(38,0) +); +/ + +alter table hrsa_salary_acct_record add approval_id varchar2(50); +/ + +alter table hrsa_salary_acct_record add approval_status varchar2(50); +/ + diff --git a/resource/sqlupgrade/ST/sql202410090103.sql b/resource/sqlupgrade/ST/sql202410090103.sql new file mode 100644 index 000000000..69ba04c00 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410090103.sql @@ -0,0 +1,54 @@ +alter table hrsa_bill_detail_temp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add department_id NUMBER null; +/ + +alter table hrsa_bill_detail_temp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail_temp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail_temp add status varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add subcompany_id NUMBER null; +/ + +alter table hrsa_bill_detail add department_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add department_id NUMBER null; +/ + +alter table hrsa_bill_detail add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add jobcall varchar2(200) NULL; +/ + +alter table hrsa_bill_detail add jobcall_id NUMBER NULL; +/ + +alter table hrsa_bill_detail add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/ST/sql202410090203.sql b/resource/sqlupgrade/ST/sql202410090203.sql new file mode 100644 index 000000000..32c3a6712 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410090203.sql @@ -0,0 +1,70 @@ +update hrsa_bill_detail a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/ST/sql202410250303.sql b/resource/sqlupgrade/ST/sql202410250303.sql new file mode 100644 index 000000000..be178d1f8 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410250303.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add account_type NUMBER; +/ + diff --git a/resource/sqlupgrade/ST/sql202411060203.sql b/resource/sqlupgrade/ST/sql202411060203.sql new file mode 100644 index 000000000..d19f32161 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202411060203.sql @@ -0,0 +1,30 @@ +CREATE TABLE hrsa_page_link +( + id NUMBER(38,0) primary key NOT NULL, + employee_id NUMBER(38,0), + page varchar2(200), + template_id NUMBER(38,0), + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + +CREATE TABLE hrsa_page_list_template +( + id NUMBER(38,0) primary key NOT NULL, + name varchar2(200), + page varchar2(200), + shared_type number, + limit_ids varchar2(2000), + setting CLOB, + creator NUMBER(38,0), + create_time date, + update_time date, + delete_type number, + tenant_key varchar2(10) +); +/ + diff --git a/resource/wiki/常用查询.md b/resource/wiki/常用查询.md index 71f4f51a6..637ebc08f 100644 --- a/resource/wiki/常用查询.md +++ b/resource/wiki/常用查询.md @@ -25,5 +25,5 @@ where item.name = '工资薪金合计' left join hrsa_salary_item c on c.id=i.salary_item_id left join hrsa_tax_agent t on a.tax_agent_id=t.id where a.delete_type=0 and i.delete_type=0 and t.delete_type=0 and c.delete_type=0 - and a.employee_id=人员id and t.name=扣缴义务人名称 - c.name='基本工资' order by effective_time desc \ No newline at end of file + and a.employee_id=人员id and t.name=扣缴义务人名称 + and c.name='基本工资' order by effective_time desc \ No newline at end of file diff --git a/src/com/engine/salary/action/BatEditSalaryExcelAction.java b/src/com/engine/salary/action/BatEditSalaryExcelAction.java index adddc2de9..adc1f7160 100644 --- a/src/com/engine/salary/action/BatEditSalaryExcelAction.java +++ b/src/com/engine/salary/action/BatEditSalaryExcelAction.java @@ -7,6 +7,7 @@ import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum; import com.engine.salary.service.SalaryArchiveExcelService; import com.engine.salary.service.impl.SalaryArchiveExcelServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -45,6 +46,17 @@ public class BatEditSalaryExcelAction implements Action { this.operatorField = operatorField; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -53,6 +65,11 @@ public class BatEditSalaryExcelAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } String docId = fieldMap.get(batSalaryExcelField); RecordSet rs = new RecordSet(); diff --git a/src/com/engine/salary/action/CheckBatEditSalaryExcelAction.java b/src/com/engine/salary/action/CheckBatEditSalaryExcelAction.java index 408b2fa7f..0378e8b62 100644 --- a/src/com/engine/salary/action/CheckBatEditSalaryExcelAction.java +++ b/src/com/engine/salary/action/CheckBatEditSalaryExcelAction.java @@ -7,6 +7,7 @@ import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum; import com.engine.salary.service.SalaryArchiveExcelService; import com.engine.salary.service.impl.SalaryArchiveExcelServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -46,6 +47,17 @@ public class CheckBatEditSalaryExcelAction implements Action { this.operatorField = operatorField; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -53,6 +65,11 @@ public class CheckBatEditSalaryExcelAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } String docId = fieldMap.get(batSalaryExcelField); RecordSet rs = new RecordSet(); diff --git a/src/com/engine/salary/action/CheckEditSIArchiveAction.java b/src/com/engine/salary/action/CheckEditSIArchiveAction.java index f4f8d9165..2a0bbccb7 100644 --- a/src/com/engine/salary/action/CheckEditSIArchiveAction.java +++ b/src/com/engine/salary/action/CheckEditSIArchiveAction.java @@ -7,6 +7,7 @@ import com.engine.salary.service.impl.SISchemeServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -42,6 +43,17 @@ public class CheckEditSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -49,6 +61,11 @@ public class CheckEditSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CheckEditSalaryAction.java b/src/com/engine/salary/action/CheckEditSalaryAction.java index 7cee919f3..f8c2dcb75 100644 --- a/src/com/engine/salary/action/CheckEditSalaryAction.java +++ b/src/com/engine/salary/action/CheckEditSalaryAction.java @@ -6,6 +6,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.wrapper.SalaryArchiveWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -38,6 +39,17 @@ public class CheckEditSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -46,7 +58,11 @@ public class CheckEditSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); - + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CheckInitSalaryAction.java b/src/com/engine/salary/action/CheckInitSalaryAction.java index 34dd5782a..157ecab8a 100644 --- a/src/com/engine/salary/action/CheckInitSalaryAction.java +++ b/src/com/engine/salary/action/CheckInitSalaryAction.java @@ -60,6 +60,17 @@ public class CheckInitSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -68,6 +79,11 @@ public class CheckInitSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); diff --git a/src/com/engine/salary/action/CheckStayAddToPaySIArchiveAction.java b/src/com/engine/salary/action/CheckStayAddToPaySIArchiveAction.java index 786d4c863..6adfa8299 100644 --- a/src/com/engine/salary/action/CheckStayAddToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/CheckStayAddToPaySIArchiveAction.java @@ -9,6 +9,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -49,6 +50,17 @@ public class CheckStayAddToPaySIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -57,6 +69,12 @@ public class CheckStayAddToPaySIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } + RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CheckStayDelToStopSIArchiveAction.java b/src/com/engine/salary/action/CheckStayDelToStopSIArchiveAction.java index a89df0ad4..ef816fbd8 100644 --- a/src/com/engine/salary/action/CheckStayDelToStopSIArchiveAction.java +++ b/src/com/engine/salary/action/CheckStayDelToStopSIArchiveAction.java @@ -9,6 +9,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -49,6 +50,17 @@ public class CheckStayDelToStopSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -57,6 +69,11 @@ public class CheckStayDelToStopSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CheckStopSalaryAction.java b/src/com/engine/salary/action/CheckStopSalaryAction.java index f4cdc0fb2..78b3c0a7c 100644 --- a/src/com/engine/salary/action/CheckStopSalaryAction.java +++ b/src/com/engine/salary/action/CheckStopSalaryAction.java @@ -54,6 +54,17 @@ public class CheckStopSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -62,6 +73,11 @@ public class CheckStopSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/CopyToPaySIArchiveAction.java b/src/com/engine/salary/action/CopyToPaySIArchiveAction.java index 2fcfb6596..8f0421c71 100644 --- a/src/com/engine/salary/action/CopyToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/CopyToPaySIArchiveAction.java @@ -11,6 +11,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -18,7 +19,10 @@ import weaver.interfaces.workflow.action.Action; import weaver.soa.workflow.request.Property; import weaver.soa.workflow.request.RequestInfo; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -47,6 +51,17 @@ public class CopyToPaySIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -54,6 +69,11 @@ public class CopyToPaySIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/EditSIArchiveAction.java b/src/com/engine/salary/action/EditSIArchiveAction.java index 22dda2d3e..4cb6eb505 100644 --- a/src/com/engine/salary/action/EditSIArchiveAction.java +++ b/src/com/engine/salary/action/EditSIArchiveAction.java @@ -7,6 +7,7 @@ import com.engine.salary.service.impl.SISchemeServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -41,6 +42,17 @@ public class EditSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -48,6 +60,11 @@ public class EditSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/EditSalaryAction.java b/src/com/engine/salary/action/EditSalaryAction.java index eed5d1648..3c8dd5446 100644 --- a/src/com/engine/salary/action/EditSalaryAction.java +++ b/src/com/engine/salary/action/EditSalaryAction.java @@ -6,6 +6,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.wrapper.SalaryArchiveWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -38,6 +39,17 @@ public class EditSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -46,7 +58,11 @@ public class EditSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); - + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/EditToPaySIArchiveAction.java b/src/com/engine/salary/action/EditToPaySIArchiveAction.java index c736f9698..31259e94a 100644 --- a/src/com/engine/salary/action/EditToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/EditToPaySIArchiveAction.java @@ -15,6 +15,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -59,6 +60,17 @@ public class EditToPaySIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -66,6 +78,11 @@ public class EditToPaySIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/EditToStopSIArchiveAction.java b/src/com/engine/salary/action/EditToStopSIArchiveAction.java index 80b16ab93..1f2a612fd 100644 --- a/src/com/engine/salary/action/EditToStopSIArchiveAction.java +++ b/src/com/engine/salary/action/EditToStopSIArchiveAction.java @@ -15,6 +15,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -59,6 +60,17 @@ public class EditToStopSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -66,6 +78,11 @@ public class EditToStopSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/InitSalaryAction.java b/src/com/engine/salary/action/InitSalaryAction.java index 3593dcb9b..af3ab875e 100644 --- a/src/com/engine/salary/action/InitSalaryAction.java +++ b/src/com/engine/salary/action/InitSalaryAction.java @@ -52,6 +52,9 @@ public class InitSalaryAction implements Action { private String tableName; + private String archiveStatus; + + public String getTableName() { return tableName; } @@ -60,6 +63,17 @@ public class InitSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -67,6 +81,11 @@ public class InitSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; @@ -132,6 +151,10 @@ public class InitSalaryAction implements Action { .importDatas(importData) .build(); + if (StringUtils.isNotBlank(archiveStatus) && archiveStatus.equals(SalaryArchiveStatusEnum.PENDING.getValue())) { + build.setKeepStatus(true); + } + //操作人 String uid = importDataMap.getOrDefault("操作人", "1").toString(); Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).importSalaryArchiveInit(build); diff --git a/src/com/engine/salary/action/RehireAction.java b/src/com/engine/salary/action/RehireAction.java index a2410578c..f0ac107f3 100644 --- a/src/com/engine/salary/action/RehireAction.java +++ b/src/com/engine/salary/action/RehireAction.java @@ -70,6 +70,17 @@ public class RehireAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -78,6 +89,12 @@ public class RehireAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } + RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/SendSalaryAction.java b/src/com/engine/salary/action/SendSalaryAction.java index f0f3ef154..39705e5c2 100644 --- a/src/com/engine/salary/action/SendSalaryAction.java +++ b/src/com/engine/salary/action/SendSalaryAction.java @@ -65,12 +65,30 @@ public class SendSalaryAction implements Action { */ private String sendBy; + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { Property[] properties = requestInfo.getMainTableInfo().getProperty(); Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } + String idStr = fieldMap.get(idFieldName); if (StringUtils.isBlank(idStr)) { requestInfo.getRequestManager().setMessage("核算记录id或工资单id不能为空"); diff --git a/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java b/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java index c0bc0c0b0..371bdd8ee 100644 --- a/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java +++ b/src/com/engine/salary/action/StayAddToPaySIArchiveAction.java @@ -12,6 +12,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -54,6 +55,17 @@ public class StayAddToPaySIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -62,6 +74,11 @@ public class StayAddToPaySIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; diff --git a/src/com/engine/salary/action/StayDelToStopSIArchiveAction.java b/src/com/engine/salary/action/StayDelToStopSIArchiveAction.java index 1c75d42c0..b715b9eea 100644 --- a/src/com/engine/salary/action/StayDelToStopSIArchiveAction.java +++ b/src/com/engine/salary/action/StayDelToStopSIArchiveAction.java @@ -5,17 +5,16 @@ import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; -import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.SIArchivesService; import com.engine.salary.service.impl.SIArchivesServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; -import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -57,6 +56,17 @@ public class StayDelToStopSIArchiveAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -65,6 +75,11 @@ public class StayDelToStopSIArchiveAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; @@ -89,11 +104,24 @@ public class StayDelToStopSIArchiveAction implements Action { Long employeeId = Long.valueOf(importDataMap.getOrDefault("员工id", "-1").toString()); String payEndYearMonth = importDataMap.getOrDefault("最后缴纳月", "").toString(); + // 如果只有一个“最后缴纳月”, 代表社保、公积金、其他均使用同一个最后缴纳月 + String fundEndYearMonth = importDataMap.getOrDefault("公积金最后缴纳月", "").toString(); + String otherEndYearMonth = importDataMap.getOrDefault("其他福利最后缴纳月", "").toString(); if (StrUtil.isNotBlank(payEndYearMonth) && !SalaryDateUtil.checkYearMonth(payEndYearMonth)) { requestInfo.getRequestManager().setMessage("最后缴纳月格式有误,正确格式示例为'2021-01'"); return FAILURE_AND_CONTINUE; } + if (StrUtil.isNotBlank(fundEndYearMonth) && !SalaryDateUtil.checkYearMonth(fundEndYearMonth)) { + requestInfo.getRequestManager().setMessage("公积金最后缴纳月格式有误,正确格式示例为'2021-01'"); + return FAILURE_AND_CONTINUE; + } + + if (StrUtil.isNotBlank(otherEndYearMonth) && !SalaryDateUtil.checkYearMonth(otherEndYearMonth)) { + requestInfo.getRequestManager().setMessage("其他福利最后缴纳月格式有误,正确格式示例为'2021-01'"); + return FAILURE_AND_CONTINUE; + } + //操作人 String uid = importDataMap.getOrDefault("操作人","1").toString(); User user = new User(Integer.parseInt(uid)); @@ -111,7 +139,7 @@ public class StayDelToStopSIArchiveAction implements Action { if (StrUtil.isBlank(payEndYearMonth)) { resultMap = getSIArchivesService(user).stayDelToStop(Collections.singletonList(insuranceArchivesBaseInfoPO.getId())); } else { - resultMap = getSIArchivesService(user).stopWithoutLimit(Collections.singletonList(insuranceArchivesBaseInfoPO.getId()), payEndYearMonth); + resultMap = getSIArchivesService(user).stopWithoutLimit(Collections.singletonList(insuranceArchivesBaseInfoPO.getId()), payEndYearMonth, fundEndYearMonth, otherEndYearMonth); } if (resultMap.get("type").toString().equals("fail")) { requestInfo.getRequestManager().setMessage(resultMap.get("msg").toString()); diff --git a/src/com/engine/salary/action/StopSalaryAction.java b/src/com/engine/salary/action/StopSalaryAction.java index 7eafe84bb..6433e4e95 100644 --- a/src/com/engine/salary/action/StopSalaryAction.java +++ b/src/com/engine/salary/action/StopSalaryAction.java @@ -60,6 +60,17 @@ public class StopSalaryAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { @@ -68,6 +79,11 @@ public class StopSalaryAction implements Action { Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } RecordSet rs = new RecordSet(); diff --git a/src/com/engine/salary/action/UpdateSISchemeDetailAction.java b/src/com/engine/salary/action/UpdateSISchemeDetailAction.java index 0d406455a..91c93c377 100644 --- a/src/com/engine/salary/action/UpdateSISchemeDetailAction.java +++ b/src/com/engine/salary/action/UpdateSISchemeDetailAction.java @@ -55,12 +55,32 @@ public class UpdateSISchemeDetailAction implements Action { this.tableName = tableName; } + // 是否执行action的字段, 0代表不执行,其余代表执行 + private String enableField; + + public String getEnableField() { + return enableField; + } + + public void setEnableField(String enableField) { + this.enableField = enableField; + } + @Override public String execute(RequestInfo requestInfo) { try { RequestManager requestManager = requestInfo.getRequestManager(); User user = requestManager.getUser(); + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + String enable = fieldMap.get(enableField); + if (StringUtils.isNotBlank(enable) && enable.equals("0")) { + // 不执行action + return SUCCESS; + } + DetailTable[] detailTables = requestInfo.getDetailTableInfo().getDetailTable(); List> detailList = new ArrayList<>(); if (detailTables.length > 0) { diff --git a/src/com/engine/salary/action/updateSalaryApprovalStatusAction.java b/src/com/engine/salary/action/updateSalaryApprovalStatusAction.java new file mode 100644 index 000000000..14e613881 --- /dev/null +++ b/src/com/engine/salary/action/updateSalaryApprovalStatusAction.java @@ -0,0 +1,78 @@ +package com.engine.salary.action; + +import cn.hutool.core.util.NumberUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper; +import com.engine.salary.service.SalaryAcctRecordService; +import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @ClassName updateSalaryApprovalStatusAction + * @author Harryxzy + * @date 2024/4/24 15:44 + * @description 跟新薪资核算审批状态 + */ +@Slf4j +public class updateSalaryApprovalStatusAction implements Action { + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SalaryAcctRecordMapper getSalaryAcctRecordMapper() { + return MapperProxyFactory.getProxy(SalaryAcctRecordMapper.class); + } + + + // 记录薪资核算记录id的字段 + private String salaryAcctRecordIdField; + + // 修改为对应的状态 + private String status; + + @Override + public String execute(RequestInfo requestInfo) { + try { + if (StringUtils.isEmpty(salaryAcctRecordIdField)) { + requestInfo.getRequestManager().setMessage("薪资核算记录id字段不能为空"); + return FAILURE_AND_CONTINUE; + } + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + String salaryAcctRecordId = fieldMap.get(salaryAcctRecordIdField); + if (!NumberUtil.isNumber(salaryAcctRecordId)) { + requestInfo.getRequestManager().setMessage("核算记录id不为数字"); + return FAILURE_AND_CONTINUE; + } + User user = new User(); + user.setUid(1); + user.setLoginid("sysadmin"); + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(Long.valueOf(salaryAcctRecordId)); + if (salaryAcctRecordPO == null) { + requestInfo.getRequestManager().setMessage("核算记录不存在或已被删除"); + return FAILURE_AND_CONTINUE; + } + salaryAcctRecordPO.setApprovalStatus(status); + getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO); + } catch (Exception e) { + log.error("审批状态更新失败", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } +} diff --git a/src/com/engine/salary/biz/SIAccountBiz.java b/src/com/engine/salary/biz/SIAccountBiz.java index 46abbf098..9b2bbb180 100644 --- a/src/com/engine/salary/biz/SIAccountBiz.java +++ b/src/com/engine/salary/biz/SIAccountBiz.java @@ -517,7 +517,7 @@ public class SIAccountBiz extends Service { //临时表数据入库 if (CollectionUtils.isNotEmpty(list)) { encryptUtil.encryptList(list, InsuranceAccountDetailTempPO.class); - List> lists = splitList(list, 40); + List> lists = splitList(list, 20); lists.forEach(subList -> { getSIAccountDetailTempMapper().batchSaveAccountTempDetails(subList); }); diff --git a/src/com/engine/salary/encrypt/AESEncryptUtil.java b/src/com/engine/salary/encrypt/AESEncryptUtil.java index 4ec7f60de..99d68d106 100644 --- a/src/com/engine/salary/encrypt/AESEncryptUtil.java +++ b/src/com/engine/salary/encrypt/AESEncryptUtil.java @@ -20,6 +20,8 @@ public class AESEncryptUtil { static String aesEncryptScrect = bb.getPropValue("hrmSalary", "AESEncryptScrect"); + static String aes4SalaryBillEncryptScrect = "OETEP8JBA1C8IH721C1513AE82IFPE5"; + /** * AES加密 * @@ -34,6 +36,31 @@ public class AESEncryptUtil { return source; } + /** + * 工资单推送-员工id加密 + * @param source + * @return + */ + public static String encrypt4SalaryBill(String source) { + //防止初始化老数据时二次加密 + if (StringUtils.isNotBlank(source) && !source.startsWith(SalarySysConstant.SALARY_BILL_PRE_SIGN_ENCRYPT)) { + return SalarySysConstant.SALARY_BILL_PRE_SIGN_ENCRYPT + AES.encrypt(source, aes4SalaryBillEncryptScrect); + } + return source; + } + + public static String decrypt4SalaryBill(String encryptStr) { + if (StringUtils.isNotBlank(encryptStr)) { + if (encryptStr.startsWith(SalarySysConstant.SALARY_BILL_PRE_SIGN_ENCRYPT)) { + encryptStr = encryptStr.substring(4, encryptStr.length()); + return AES.decrypt(encryptStr, aes4SalaryBillEncryptScrect); + } else { + return ""; + } + } + return encryptStr; + } + /** * AES解密 diff --git a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java index 21dad30c7..b32585361 100644 --- a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java +++ b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java @@ -114,6 +114,17 @@ public class DataCollectionEmployee { @SalaryFormulaVar(defaultLabel = "证件号码", labelId = 98624, dataType = "string") private String idNo; + + @SalaryFormulaVar(defaultLabel = "账号类型", labelId = 98622, dataType = "string") + private String accountTypeName; + + /** + * 账号类型 + * 0/null:主账号 1:次账号 + */ + @SalaryFormulaVar(defaultLabel = "账号类型编码", labelId = 98622, dataType = "string") + private Integer accountType; + //是否是系统管理员 private Boolean isAdmin; diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java index cd1a8f016..4e219c477 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java @@ -9,6 +9,7 @@ import com.engine.salary.constant.HrmSalaryPayrollConf; import com.engine.salary.constant.SalaryArchiveConstant; import com.engine.salary.constant.SalaryBillConstant; import com.engine.salary.constant.SalaryTemplateSalaryItemSetGroupConstant; +import com.engine.salary.encrypt.AESEncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryBill.dto.*; import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; @@ -145,6 +146,8 @@ public class SalaryBillBO { .workcode(simpleEmployee.getWorkcode()) .idNo(simpleEmployee.getIdNo()) .statusName(simpleEmployee.getStatusName()) + .accountType(simpleEmployee.getAccountType()) + .accountTypeName(simpleEmployee.getAccountTypeName()) .build(); List items = employeeInformation.getItems(); // 1.SalaryAcctResultBO.buildEmployeeFieldName()的取法 @@ -248,9 +251,9 @@ public class SalaryBillBO { String title = billTitle; // 标题 String context = "点击查看详情"; // 内容 // PC端链接 - String linkUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?id=" + id + "&recipient=" + employeeId; + String linkUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?id=" + id + "&salaryCode=" + AESEncryptUtil.encrypt4SalaryBill(employeeId.toString()); // 移动端链接 - String linkMobileUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?type=phone&id=" + id + "&recipient=" + employeeId; + String linkMobileUrl = weaver.general.GCONST.getContextPath() + "/spa/hrmSalary/static/index.html#/main/hrmSalary/mobilepayroll?type=phone&id=" + id + "&salaryCode=" + AESEncryptUtil.encrypt4SalaryBill(employeeId.toString()); try { MessageBean messageBean = Util_Message.createMessage(messageType, userIdList, title, context, linkUrl, linkMobileUrl); messageBean.setCreater(Integer.parseInt(salaryBillSendParam.getSendUser().getUID() + ""));// 创建人id diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryBillGetTokenParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryBillGetTokenParam.java new file mode 100644 index 000000000..2ab5be248 --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryBillGetTokenParam.java @@ -0,0 +1,26 @@ +package com.engine.salary.entity.salaryBill.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName SalaryBillGetTokenParam + * @author Harryxzy + * @date 2024/11/6 9:59 + * @description 第三方获取token参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryBillGetTokenParam { + + // 新 + private String salaryCode; + + // 老 未加密 + private String recipient; + +} diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java index c0c2dfa53..a8dbc514e 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java @@ -8,6 +8,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveTaxAgentDataDTO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.AccountTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; @@ -66,6 +67,7 @@ public class SalaryAcctEmployeeBO { .departmentId(e.getDepartmentId()) .departmentName(e.getDepartmentName()) .status(UserStatusEnum.getDefaultLabelByValue(NumberUtils.toInt(e.getStatus()))) + .accountType(AccountTypeEnum.getDefaultLabelByValue(e.getAccountType())) .mobile(simpleEmployee.getMobile()) .jobNum(simpleEmployee.getWorkcode()) .hireDate(simpleEmployee.getCompanystartdate()) @@ -110,6 +112,7 @@ public class SalaryAcctEmployeeBO { .subcompanyId(emp.getSubcompanyid()) .subcompanyName(emp.getSubcompanyName()) .status(emp.getStatus()) + .accountType(emp.getAccountType()) .creator(employeeId) .createTime(now) .updateTime(now) @@ -138,6 +141,8 @@ public class SalaryAcctEmployeeBO { simpleEmployee.setJobtitleName(acctEmployeePO.getJobtitleName()); simpleEmployee.setStatusName(UserStatusEnum.getDefaultLabelByValue(new Integer(Util.null2s(acctEmployeePO.getStatus(), "1")))); simpleEmployee.setStatus(acctEmployeePO.getStatus()); + simpleEmployee.setAccountType(acctEmployeePO.getAccountType()); + simpleEmployee.setAccountTypeName(AccountTypeEnum.getDefaultLabelByValue(acctEmployeePO.getAccountType())); } diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java index 32028e25a..cc19925b2 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java @@ -92,6 +92,8 @@ public class SalaryAcctFormulaBO { .sex(sexName) .status(simpleEmployee.getStatus()) .statusName(simpleEmployee.getStatusName()) + .accountType(simpleEmployee.getAccountType()) + .accountTypeName(simpleEmployee.getAccountTypeName()) .departmentName(simpleEmployee.getDepartmentName()) .departmentId(simpleEmployee.getDepartmentId()) .subcompanyName(simpleEmployee.getSubcompanyName()) @@ -115,6 +117,8 @@ public class SalaryAcctFormulaBO { .sex(sexName) .status(simpleEmployee.getStatus()) .statusName(simpleEmployee.getStatusName()) + .accountType(simpleEmployee.getAccountType()) + .accountTypeName(simpleEmployee.getAccountTypeName()) .departmentName(salaryAcctEmployeePO.getDepartmentName()) .departmentId(salaryAcctEmployeePO.getDepartmentId()) .subcompanyName(salaryAcctEmployeePO.getSubcompanyName()) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java index e0fad94bd..ad98f4ad7 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctRecordBO.java @@ -47,7 +47,10 @@ public class SalaryAcctRecordBO { List employeeComInfos, List salaryAcctEmployeeCountDTOS, List salarySendCheckResult, - List taxAgentPOS) { + List taxAgentPOS, + List needApprovalSalarySobIds, + boolean approvalCanFile, + boolean approvalCanReCalc) { if (CollectionUtils.isEmpty(salaryAcctRecordPOS)) { return Collections.emptyList(); } @@ -69,16 +72,22 @@ public class SalaryAcctRecordBO { if(!Objects.equals(salaryAcctRecordPO.getBackCalcStatus(),NumberUtils.INTEGER_ONE)){ btnList.add(new WeaTableOperate("删除", null, "1")); } - btnList.add(new WeaTableOperate("归档", null, "2")); + if (approvalCanFile || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { + btnList.add(new WeaTableOperate("归档", null, "2")); + } } else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){ btnList.add(new WeaTableOperate("查看", null, "3")); - btnList.add(new WeaTableOperate("重新核算", null, "4")); + if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { + btnList.add(new WeaTableOperate("重新核算", null, "4")); + } if(salaryAcctRecordPO.getBackCalcStatus() == null || salaryAcctRecordPO.getBackCalcStatus() == NumberUtils.INTEGER_ZERO) { btnList.add(new WeaTableOperate("回算", null, "5")); } } else { btnList.add(new WeaTableOperate("查看", null, "3")); - btnList.add(new WeaTableOperate("重新核算", null, "4")); + if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) { + btnList.add(new WeaTableOperate("重新核算", null, "4")); + } } return SalaryAcctRecordListDTO.builder() .id(salaryAcctRecordPO.getId()) @@ -96,6 +105,7 @@ public class SalaryAcctRecordBO { .accountantName(usernameMap.getOrDefault(salaryAcctRecordPO.getCreator(), StringUtils.EMPTY)) .updateTime(SalaryDateUtil.getFormatLocalDateTime(salaryAcctRecordPO.getUpdateTime())) .description(salaryAcctRecordPO.getDescription()) + .approvalStatus(salaryAcctRecordPO.getApprovalStatus()) .operate(btnList) .build(); }).collect(Collectors.toList()); diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index 5a0c49c6b..db26a2fdd 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -20,6 +20,7 @@ import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO; import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.AccountTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryaccounting.LockStatusEnum; @@ -310,6 +311,10 @@ public class SalaryAcctResultBO { map.put("status", e.getStatus()); } else if ("statusName".equals(salarySobEmpField.getFieldCode())) { map.put("statusName", UserStatusEnum.getDefaultLabelByValue(new Integer(Util.null2s(e.getStatus(), "1")))); + } else if ("accountType".equals(salarySobEmpField.getFieldCode())) { + map.put("accountType", e.getAccountType()); + } else if ("accountTypeName".equals(salarySobEmpField.getFieldCode())) { + map.put("accountTypeName", AccountTypeEnum.getDefaultLabelByValue(e.getAccountType())); } else { map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); } @@ -467,6 +472,10 @@ public class SalaryAcctResultBO { map.put("status", salaryAcctEmployee.getStatus()); } else if ("statusName".equals(salarySobEmpField.getFieldCode())) { map.put("statusName", UserStatusEnum.getDefaultLabelByValue(new Integer(Util.null2s(salaryAcctEmployee.getStatus(), "1")))); + } else if ("accountType".equals(salarySobEmpField.getFieldCode())) { + map.put("accountType", salaryAcctEmployee.getAccountType()); + } else if ("accountTypeName".equals(salarySobEmpField.getFieldCode())) { + map.put("accountTypeName", AccountTypeEnum.getDefaultLabelByValue(salaryAcctEmployee.getAccountType())); } else { map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); } diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAccEmployeeListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAccEmployeeListDTO.java index 5f9d256f8..40da19f1d 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAccEmployeeListDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAccEmployeeListDTO.java @@ -30,7 +30,7 @@ public class SalaryAccEmployeeListDTO { @TableTitle(title = "姓名", dataIndex = "employeeName", key = "employeeName") private String employeeName; - //个税扣缴义务人id") + //个税扣缴义务人id private Long taxAgentId; @@ -38,30 +38,28 @@ public class SalaryAccEmployeeListDTO { @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") private String taxAgentName; - //部门id") + //部门id private Long departmentId; - //部门") @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") private String departmentName; - //手机号 @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile") private String mobile; - //工号") @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") private String jobNum; - //员工状态") @TableTitle(title = "员工状态", dataIndex = "status", key = "status") private String status; + @TableTitle(title = "账号类型", dataIndex = "accountType", key = "accountType") + private String accountType; + - //入职日期") @TableTitle(title = "入职日期", dataIndex = "hireDate", key = "hireDate") private String hireDate; diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java index 61a8cd3bc..edc4d99dd 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctRecordListDTO.java @@ -73,6 +73,9 @@ public class SalaryAcctRecordListDTO { @TableTitle(title = "备注", dataIndex = "description", key = "description") private String description; + @TableTitle(title = "审批状态", dataIndex = "approvalStatus", key = "approvalStatus") + private String approvalStatus; + @TableTitle(title = "操作", dataIndex = "operate", key = "operate") private List operate; } diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index bd5a19575..e9d0a10bc 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -150,13 +150,20 @@ public class SalaryAcctEmployeePO { /** * 状态 */ - @SalaryFormulaVar(defaultLabel = "状态", labelId = 86321, dataType = "string") + @SalaryFormulaVar(defaultLabel = "状态编码", labelId = 86321, dataType = "string") private String status; //锁定的项目 private List lockItems; + /** + * 主次账号 0/null:主账号 1:次账号 + */ + private Integer accountType; + + + //--------条件---------- //主键id集合 private Collection ids; diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java index 26cd0b3c4..65d771bdf 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java @@ -123,6 +123,16 @@ public class SalaryAcctRecordPO { @ElogTransform( name = "更新时间" ) private Date updateTime; + /** + * 审批流程id + */ + private String approvalId; + + /** + * 审批状态 + */ + private String approvalStatus; + /** * 锁定的薪资项目 */ diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java index 2855c40d6..aa5ae2961 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveBO.java @@ -72,6 +72,7 @@ public class SalaryArchiveBO { employeeIdColumn.setDisplay(WeaBoolAttr.FALSE); columns.add(employeeIdColumn); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "姓名"), "username")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "账号类型"), "accountType")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "taxAgentName")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "分部"), "subcompanyName")); columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "部门"), "departmentName")); diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index 58eaabcad..d32117615 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -760,7 +760,8 @@ public class SalaryArchiveExcelBO extends Service { // 待停薪导入 || ((sa.getRunStatus().equals(SalaryArchiveStatusEnum.FIXED.getValue()) || sa.getRunStatus().equals(SalaryArchiveStatusEnum.SUSPEND.getValue())) && importHandleParam.isSuspendList()); if (isEnabled) { - if (importHandleParam.isInit()) { + if (importHandleParam.isInit() && + (importHandleParam.getKeepStatus() == null || importHandleParam.getKeepStatus().equals(Boolean.FALSE))) { sa.setRunStatus(SalaryArchiveStatusEnum.FIXED.getValue()); } // sa.setModifier(importHandleParam.getCurrentEmployeeId()); @@ -782,6 +783,10 @@ public class SalaryArchiveExcelBO extends Service { .deleteType(NumberUtils.INTEGER_ZERO) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) .build(); + // 定薪action 保持状态为待定薪 + if (importHandleParam.isInit() && importHandleParam.getKeepStatus() != null && importHandleParam.getKeepStatus().equals(Boolean.TRUE)) { + salaryArchive.setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); + } importHandleParam.getSalaryArchiveSaves().add(salaryArchive); } return salaryArchive; diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java index 1083ca4dd..7719f7c15 100644 --- a/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java +++ b/src/com/engine/salary/entity/salaryarchive/dto/SalaryArchiveListDTO.java @@ -121,4 +121,7 @@ public class SalaryArchiveListDTO { */ private String archiveStatus; + //主次账号 0/null:主账号 1:次账号 + private Integer accountType; + } diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java index 06dc670c6..0f8e3a602 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportActionParam.java @@ -42,4 +42,9 @@ public class SalaryArchiveImportActionParam { * 说明 */ private String description; + + /** + * 档案状态是否保持不变 + */ + private Boolean keepStatus; } diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java index a9bd77eb5..155cba89c 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveImportHandleParam.java @@ -172,4 +172,9 @@ public class SalaryArchiveImportHandleParam { * 薪资档案-账套关联 */ List salaryArchiveSobSaves; + + /** + * 薪资档案状态是否保持不变 + */ + Boolean keepStatus; } diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java index fd36884d3..bbbd2cc80 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java @@ -112,4 +112,10 @@ public class SalaryArchiveQueryParam extends BaseQueryParam { // 最后发薪日期止 private Date payEndDateEndDate; + // 调薪起始日期 + private Date adjustSalaryStartDate; + + // 调薪结束日期 + private Date adjustSalaryEndDate; + } diff --git a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java index e0c306341..4d92e4d67 100644 --- a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java +++ b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java @@ -69,6 +69,11 @@ public class SalaryFormulaEmployeeDTO { @SalaryFormulaVar(defaultLabel = "状态", labelId = 98622, dataType = "string") private String statusName; + @SalaryFormulaVar(defaultLabel = "账号类型", labelId = 98622, dataType = "string") + private String accountTypeName; + + @SalaryFormulaVar(defaultLabel = "账号类型编码", labelId = 98622, dataType = "string") + private Integer accountType; //工号 @SalaryFormulaVar(defaultLabel = "工号", labelId = 98622, dataType = "string") private String workcode; diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSearchParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSearchParam.java index 32e088f1e..e0c63f108 100644 --- a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSearchParam.java +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSearchParam.java @@ -25,6 +25,9 @@ import java.util.Collection; @AllArgsConstructor public class SalaryItemSearchParam extends BaseQueryParam { + // 账套id + private Long salarySobId; + //名称 private String name; diff --git a/src/com/engine/salary/entity/salarysob/bo/SalaryApprovalBO.java b/src/com/engine/salary/entity/salarysob/bo/SalaryApprovalBO.java new file mode 100644 index 000000000..f8657019c --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/bo/SalaryApprovalBO.java @@ -0,0 +1,91 @@ +package com.engine.salary.entity.salarysob.bo; + +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO; +import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SalaryEntityUtil; +import org.apache.commons.lang.StringUtils; +import weaver.hrm.User; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author Harryxzy + * @ClassName SalaryApprovalBO + * @date 2024/04/23 17:47 + * @description 薪资账套的薪资审批 + */ +public class SalaryApprovalBO { + + public static SalaryApprovalDTO convert2DTO(SalaryApprovalRulePO salaryApprovalRulePO, List salaryItemList) { + if (salaryApprovalRulePO == null) { + return new SalaryApprovalDTO(); + } + Map salaryItemNameMap = SalaryEntityUtil.convert2Map(salaryItemList, SalaryItemPO::getId, SalaryItemPO::getName); + List approvalItemGroups = JsonUtil.parseList(salaryApprovalRulePO.getApprovalGroupSetting(), SalaryApprovalDTO.approvalItemGroup.class); + for (SalaryApprovalDTO.approvalItemGroup group : approvalItemGroups) { + for(SalaryApprovalDTO.approvalItem item : group.getApprovalItems()) { + item.setSalaryItemName(salaryItemNameMap.getOrDefault(item.getSalaryItemId(), "")); + } + } + + return SalaryApprovalDTO.builder() + .id(salaryApprovalRulePO.getId()) + .salarySobId(salaryApprovalRulePO.getSalarySobId()) + .isOpenApproval(salaryApprovalRulePO.getOpenApproval().equals(1)) + .approvalWorkflowUrl(StringUtils.isBlank(salaryApprovalRulePO.getWorkflowUrl()) ? "" : salaryApprovalRulePO.getWorkflowUrl()) + .approvalItemGroup(approvalItemGroups) + .build(); + + } + + /** + * 将账套薪资项目设置转换成审批中的项目设置信息 + * @param aggregateBySalarySobId + */ + public static String sobItemAggregate2approvalGroupSetting(SalarySobItemAggregateDTO aggregateBySalarySobId) { + List groupList = new ArrayList<>(); + // 薪资项目分组 + List itemGroups = aggregateBySalarySobId.getItemGroups(); + for (SalarySobItemGroupDTO sobItemGroupDTO: itemGroups) { + SalaryApprovalDTO.approvalItemGroup approvalGroup = new SalaryApprovalDTO.approvalItemGroup(); + approvalGroup.setGroupName(sobItemGroupDTO.getName()); + approvalGroup.setSorted(sobItemGroupDTO.getSortedIndex()); + List approvalItemList = new ArrayList<>(); + for (SalarySobItemDTO groupItem : sobItemGroupDTO.getItems()) { + SalaryApprovalDTO.approvalItem approvalItem = new SalaryApprovalDTO.approvalItem(); + approvalItem.setSalaryItemId(groupItem.getSalaryItemId()); + approvalItem.setSalaryItemName(groupItem.getName()); + approvalItem.setSorted(groupItem.getSortedIndex()); + approvalItemList.add(approvalItem); + } + approvalGroup.setApprovalItems(approvalItemList); + groupList.add(approvalGroup); + } + // 未分类 + List items = aggregateBySalarySobId.getItems(); + List approvalItemList2 = new ArrayList<>(); + for (SalarySobItemDTO groupItem : items) { + SalaryApprovalDTO.approvalItem approvalItem = new SalaryApprovalDTO.approvalItem(); + approvalItem.setSalaryItemId(groupItem.getSalaryItemId()); + approvalItem.setSalaryItemName(groupItem.getName()); + approvalItem.setSorted(groupItem.getSortedIndex()); + approvalItemList2.add(approvalItem); + } + SalaryApprovalDTO.approvalItemGroup approvalGroup = new SalaryApprovalDTO.approvalItemGroup(); + approvalGroup.setGroupName("未分类"); + approvalGroup.setSorted(groupList.size()); + approvalGroup.setApprovalItems(approvalItemList2); + groupList.add(approvalGroup); + return JsonUtil.toJsonString(groupList); + } + + +} diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java index 6b3f41896..743555800 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java @@ -57,35 +57,6 @@ public class SalarySobRangeBO { resultParams.add(queryParam); }); return resultParams; - - -// Map> rangeMap = SalaryEntityUtil.group2Map(salarySobRanges, SalarySobRangePO::getTargetType); -// List resultParams = Lists.newArrayListWithExpectedSize(rangeMap.size()); -// rangeMap.forEach((targetType, salarySobRangePOS) -> { -// List employeeStatus = salarySobRangePOS.stream() -// .map(e -> SalaryEmployeeStatusEnum.parseByValue(e.getEmployeeStatus())) -// .filter(Objects::nonNull) -// .map(e -> e.name().toLowerCase()) -// .distinct() -// .collect(Collectors.toList()); -// if (employeeStatus.contains(SalaryEmployeeStatusEnum.ALL.name().toLowerCase())) { -// employeeStatus = Collections.emptyList(); -// } -// if (employeeStatus.contains(SalaryEmployeeStatusEnum.NORMAL.name().toLowerCase())) { -// employeeStatus = UserStatusEnum.getNormalStatus(); -// } -// if (employeeStatus.contains(SalaryEmployeeStatusEnum.UNAVAILABLE.name().toLowerCase())) { -// employeeStatus = UserStatusEnum.getUnavailableStatus(); -// } -// TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(targetType); -// SalarySobRangeEmpQueryParam queryParam = SalarySobRangeEmpQueryParam.builder() -// .targetType(Optional.ofNullable(targetTypeEnum).map(TargetTypeEnum::name).orElse(StringUtils.EMPTY)) -// .targetIds(SalaryEntityUtil.properties(salarySobRangePOS, SalarySobRangePO::getTargetId)) -// .employeeStatus(employeeStatus) -// .build(); -// resultParams.add(queryParam); -// }); -// return resultParams; } /** @@ -117,7 +88,7 @@ public class SalarySobRangeBO { return SalarySobRangeListDTO.builder() .id(salarySobRangePO.getId()) .salarySobId(salarySobRangePO.getSalarySobId()) - .targetType(targetTypeEnum != null ? targetTypeEnum.getValue() : -1) + .targetType(targetTypeEnum) .targetTypeName(Optional.ofNullable(targetTypeEnum) .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) .orElse(StringUtils.EMPTY)) @@ -125,6 +96,7 @@ public class SalarySobRangeBO { .target(salarySobRangePO.getTarget()) .targetName(buildTargetName(salarySobRangePO, employeeComInfoMap, departmentComInfoMap, subCompanyComInfoMap, positionComInfoMap)) .employeeStatus(employeeStatusesStr) + .status(parseByStatuses(salarySobRangePO.getEmployeeStatuses())) .build(); }) .collect(Collectors.toList()); @@ -150,6 +122,20 @@ public class SalarySobRangeBO { return sb.toString(); } + private static String parseByStatuses(String employeeStatuses) { + String[] split = employeeStatuses.split(","); + List enumsList = Arrays.asList(split).stream().map(item -> Integer.valueOf(item)).collect(Collectors.toList()); + List salaryEmployeeStatusEnums = SalaryEmployeeStatusEnum.parseByValues(enumsList); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < salaryEmployeeStatusEnums.size(); i++) { + sb.append(salaryEmployeeStatusEnums.get(i)); + if (i + 1 != salaryEmployeeStatusEnums.size()) { + sb.append(","); + } + } + return sb.toString(); + } + /** * 解析薪资账套人员范围中对象的名称(可能是人员名称、部门名称、岗位名称……) * diff --git a/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java new file mode 100644 index 000000000..143d98fca --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/dto/SalaryApprovalDTO.java @@ -0,0 +1,78 @@ +package com.engine.salary.entity.salarysob.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 薪资审批设置列表 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author xuzhuoyan + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryApprovalDTO { + + // 主键id + private Long id; + + // 薪资账套id + private Long salarySobId; + + // 是否开启审批 + private Boolean isOpenApproval; + + // 审批流程地址 + private String approvalWorkflowUrl; + + // 审批项目信息 + private List approvalItemGroup; + + private Boolean canEdit; + + /** + * 审批项目信息分组形式 + */ + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class approvalItemGroup { + + // 分组名称 + private String groupName; + + // 项目信息 + private List approvalItems; + + // 排序 + private Integer sorted; + } + + /** + * 审批薪资项目 + */ + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class approvalItem { + // 薪资项目id + private Long salaryItemId; + + // 薪资项目名称 + private String salaryItemName; + + // 排序 + private Integer sorted; + + } +} diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java index b5060f113..1d6d234dc 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java @@ -37,7 +37,7 @@ public class SalarySobRangeListDTO { * * @see TargetTypeEnum */ - private Integer targetType; + private TargetTypeEnum targetType; @SalaryTableColumn(text = "对象类型", width = "10%", column = "targetTypeName") @TableTitle(title = "对象类型", dataIndex = "targetTypeName", key = "targetTypeName") @@ -54,4 +54,6 @@ public class SalarySobRangeListDTO { @SalaryTableColumn(text = "员工状态", width = "10%", column = "employeeStatus") @TableTitle(title = "员工状态", dataIndex = "employeeStatus", key = "employeeStatus") private String employeeStatus; + + private String status; } diff --git a/src/com/engine/salary/entity/salarysob/param/ApprovalRequestSaveParam.java b/src/com/engine/salary/entity/salarysob/param/ApprovalRequestSaveParam.java new file mode 100644 index 000000000..e3ef6882d --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/param/ApprovalRequestSaveParam.java @@ -0,0 +1,27 @@ +package com.engine.salary.entity.salarysob.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName SalaryApprovalQueryParam + * @author Harryxzy + * @date 2024/4/23 15:05 + * @description 薪资审批流程id保存参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ApprovalRequestSaveParam { + + // 流程id + @DataCheck(require = true, message = "流程id不能为空") + private String requestId; + + // 核算记录id + private Long salaryAcctRecordId; +} diff --git a/src/com/engine/salary/entity/salarysob/param/SalaryApprovalQueryParam.java b/src/com/engine/salary/entity/salarysob/param/SalaryApprovalQueryParam.java new file mode 100644 index 000000000..770bb7933 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/param/SalaryApprovalQueryParam.java @@ -0,0 +1,24 @@ +package com.engine.salary.entity.salarysob.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @ClassName SalaryApprovalQueryParam + * @author Harryxzy + * @date 2024/4/23 15:05 + * @description 薪资审批设置查询参数 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryApprovalQueryParam { + + // 薪资账套id + @DataCheck(require = true, message = "薪资账套的ID不允许为空") + private Long salarySobId; +} diff --git a/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java b/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java new file mode 100644 index 000000000..8683696a4 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/po/SalaryApprovalRulePO.java @@ -0,0 +1,70 @@ +package com.engine.salary.entity.salarysob.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * @author Harryxzy + * @ClassName SalaryApprovalRulePO + * @date 2024/04/23 17:31 + * @description 薪资核算审批规则 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryApprovalRulePO { + /** + * 主键id + */ + private Long id; + + /** + * 薪资账套id + */ + private Long salarySobId; + + /** + * 是否开启工资单审批 + */ + private Integer openApproval; + + /** + * 审批薪资项目设置 + */ + private String approvalGroupSetting; + + /** + * 审批流程地址 + */ + private String workflowUrl; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人id + */ + private Long creator; + + private Integer deleteType; + + /** + * 修改时间 + */ + private Date updateTime; + + //主键id集合 + private Collection ids; + + //薪资账套id集合 + private Collection salarySobIds; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java b/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java index afe2de81c..56648ec45 100644 --- a/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java +++ b/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java @@ -5,9 +5,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -/** - * 薪资帐套表 - */ + @Data @Builder @NoArgsConstructor diff --git a/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java new file mode 100644 index 000000000..c79352ed9 --- /dev/null +++ b/src/com/engine/salary/entity/setting/dto/PageListTemplateDTO.java @@ -0,0 +1,20 @@ +package com.engine.salary.entity.setting.dto; + +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateDTO { + private List setting; + private List checked; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListColumnsQueryParam.java b/src/com/engine/salary/entity/setting/param/PageListColumnsQueryParam.java new file mode 100644 index 000000000..5f8072d19 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListColumnsQueryParam.java @@ -0,0 +1,21 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListColumnsQueryParam { + + @DataCheck(require = true,message = "请选择页面") + private String page; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListTemplateChangeParam.java b/src/com/engine/salary/entity/setting/param/PageListTemplateChangeParam.java new file mode 100644 index 000000000..3f8d05fd3 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateChangeParam.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateChangeParam { + + /** + * 页面,0:薪资明细 + */ + @DataCheck(require = true,message = "请选择页面") + private String page; + + /** + * 模板id + */ + @DataCheck(require = true,message = "请选择模板") + private Long templateId; + + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java b/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java new file mode 100644 index 000000000..61213bbee --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateQueryParam.java @@ -0,0 +1,27 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateQueryParam { + + private Long id; + + @DataCheck(require = true,message = "请选择页面") + private String page; + + /** + * 字段name + */ + private String name; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java b/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java new file mode 100644 index 000000000..1ef45247a --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListTemplateSaveParam.java @@ -0,0 +1,43 @@ +package com.engine.salary.entity.setting.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplateSaveParam { + private Long id; + + /** + * 页面,0:薪资明细 + */ + @DataCheck(require = true,message = "请选择页面") + private String page; + + /** + * 模板名称 + */ + @DataCheck(require = true,message = "请选择模板名称") + private String name; + + @DataCheck(require = true,message = "请选择共享类型") + private Integer sharedType; + + private List limitIds; + + /** + * 设置 + */ + @DataCheck(require = true,message = "请选择设置") + private List setting; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/po/PageLinkPO.java b/src/com/engine/salary/entity/setting/po/PageLinkPO.java new file mode 100644 index 000000000..7037abe77 --- /dev/null +++ b/src/com/engine/salary/entity/setting/po/PageLinkPO.java @@ -0,0 +1,70 @@ +package com.engine.salary.entity.setting.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 +public class PageLinkPO { + + @ElogTransform(name = "id") + private Long id; + + @ElogTransform(name = "人员id") + private Long employeeId; + + /** + * 页面 + */ + @ElogTransform(name = "页面") + private String page; + + /** + * 页面模板id + */ + @ElogTransform(name = "页面模板id") + private Long templateId; + + /** + * 租户ID + */ + @ElogTransform(name = "租户ID") + private String tenantKey; + + /** + * 更新时间 + */ + @ElogTransform(name = "更新时间") + private Date updateTime; + /** + * 创建时间 + */ + @ElogTransform(name = "创建时间") + private Date createTime; + + /** + * 创建人 + */ + @ElogTransform(name = "创建人") + private Long creator; + + + /** + * 是否已删除。0:未删除、1:已删除 + */ + @ElogTransform(name = "是否已删除。0:未删除、1:已删除") + private Integer deleteType; + + + //主键id集合 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java index 59b7f2ea1..c27bec6a3 100644 --- a/src/com/engine/salary/entity/setting/po/PageListSettingPO.java +++ b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java @@ -8,18 +8,16 @@ import lombok.NoArgsConstructor; import java.util.Collection; import java.util.Date; +import java.util.List; -/** - * 薪资帐套表 - */ @Data @Builder @NoArgsConstructor @AllArgsConstructor +//hrsa_page_list_setting public class PageListSettingPO { - - @ElogTransform(name = "") + @ElogTransform(name = "id") private Long id; /** @@ -32,7 +30,7 @@ public class PageListSettingPO { * 设置 */ @ElogTransform(name = "设置") - private String setting; + private List setting; /** diff --git a/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java b/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java new file mode 100644 index 000000000..8177534c1 --- /dev/null +++ b/src/com/engine/salary/entity/setting/po/PageListTemplatePO.java @@ -0,0 +1,94 @@ +package com.engine.salary.entity.setting.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; +import java.util.List; + +/** + * 薪资帐套表 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListTemplatePO { + + + @ElogTransform(name = "id") + private Long id; + + + /** + * 模板名称 + */ + @ElogTransform(name = "模板名称") + private String name; + + /** + * 页面 + */ + @ElogTransform(name = "页面") + private String page; + + /** + * 设置 + */ + @ElogTransform(name = "设置") + private List setting; + + /** + * 是否共享,0否,1是 + */ + @ElogTransform(name = "是否共享,0否,1是") + private Integer sharedType; + + + /** + * 限制 + */ + @ElogTransform(name = "限制") + private List limitIds; + + /** + * 租户ID + */ + @ElogTransform(name = "租户ID") + private String tenantKey; + + /** + * 更新时间 + */ + @ElogTransform(name = "更新时间") + private Date updateTime; + + /** + * 创建时间 + */ + @ElogTransform(name = "创建时间") + private Date createTime; + + /** + * 创建人 + */ + @ElogTransform(name = "创建人") + private Long creator; + + /** + * 是否已删除。0:未删除、1:已删除 + */ + @ElogTransform(name = "是否已删除。0:未删除、1:已删除") + private Integer deleteType; + + + //主键id集合 + private Collection ids; + + private Boolean checked; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java index b8e56f090..d348af32b 100644 --- a/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java +++ b/src/com/engine/salary/entity/siaccount/param/InsuranceAccountDetailParam.java @@ -44,6 +44,8 @@ public class InsuranceAccountDetailParam extends BaseQueryParam { private String workcode; private List departmentIds; + private List fixedDepartmentIds; private List subCompanyIds; + private List fixedSubCompanyIds; } diff --git a/src/com/engine/salary/entity/siaccount/param/SupplementAccountBaseParam.java b/src/com/engine/salary/entity/siaccount/param/SupplementAccountBaseParam.java index 0125705dd..7b42531c7 100644 --- a/src/com/engine/salary/entity/siaccount/param/SupplementAccountBaseParam.java +++ b/src/com/engine/salary/entity/siaccount/param/SupplementAccountBaseParam.java @@ -87,4 +87,15 @@ public class SupplementAccountBaseParam { * 补缴类型 */ private String supplementType; + + + private String subcompanyName; + private Long subcompanyId; + private String departmentName; + private Long departmentId; + private String jobtitleName; + private Long jobtitleId; + private String jobcall; + private Long jobcallId; + private String status; } diff --git a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountBatchPO.java b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountBatchPO.java index 362815eef..310bd8e17 100644 --- a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountBatchPO.java +++ b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountBatchPO.java @@ -129,5 +129,13 @@ public class InsuranceAccountBatchPO { @ElogTransform(name = "个税扣缴义务人id") private Long paymentOrganization; - + private String subcompanyName; + private Long subcompanyId; + private String departmentName; + private Long departmentId; + private String jobtitleName; + private Long jobtitleId; + private String jobcall; + private Long jobcallId; + private String status; } diff --git a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java index aadf8b4bb..310009f9c 100644 --- a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java +++ b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailPO.java @@ -328,4 +328,14 @@ public class InsuranceAccountDetailPO { */ @ElogTransform(name = "个税扣缴义务人") private Long paymentOrganization; + + private String subcompanyName; + private Long subcompanyId; + private String departmentName; + private Long departmentId; + private String jobtitleName; + private Long jobtitleId; + private String jobcall; + private Long jobcallId; + private String status; } diff --git a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java index dc8c1c2c0..8d6d5254f 100644 --- a/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java +++ b/src/com/engine/salary/entity/siaccount/po/InsuranceAccountDetailTempPO.java @@ -275,4 +275,15 @@ public class InsuranceAccountDetailTempPO { * 个税扣缴义务人 */ private Long paymentOrganization; + + + private String subcompanyName; + private Long subcompanyId; + private String departmentName; + private Long departmentId; + private String jobtitleName; + private Long jobtitleId; + private String jobcall; + private Long jobcallId; + private String status; } diff --git a/src/com/engine/salary/entity/siexport/po/AccountExportPO.java b/src/com/engine/salary/entity/siexport/po/AccountExportPO.java index 73c82c82e..cb7324228 100644 --- a/src/com/engine/salary/entity/siexport/po/AccountExportPO.java +++ b/src/com/engine/salary/entity/siexport/po/AccountExportPO.java @@ -22,8 +22,12 @@ public class AccountExportPO extends InsuranceAccountDetailPO { @I18n private String departmentName; + @I18n + private String fixedDepartmentName; + private Integer userStatus; + private Integer fixedUserStatus; private String workcode; } diff --git a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java index cd1ed7b36..caf20dca6 100644 --- a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java +++ b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java @@ -301,6 +301,7 @@ public class TaxAgentBO { .target(taxAgentManageRange.getTarget()) .targetName(buildTargetName(taxAgentManageRange, employeeComInfoMap, departmentComInfoMap, subDepartmentComInfoMap, positionComInfoMap)) .employeeStatus(buildEmployeeStatus(hrmStatusNameMap, taxAgentManageRange.getEmployeeStatus())) + .status(buildStatus(taxAgentManageRange.getEmployeeStatus())) .build(); }) .collect(Collectors.toList()); @@ -316,6 +317,14 @@ public class TaxAgentBO { .collect(Collectors.joining(",")); } + private static String buildStatus( String employeeStatus) { + List employeeStatusList = JsonUtil.parseList(employeeStatus, String.class); + if (CollectionUtils.isEmpty(employeeStatusList)) { + return StringUtils.EMPTY; + } + return String.join(",", employeeStatusList); + } + /** * 构建对象名 * diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java index d87bf0a3b..db8f3411f 100644 --- a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java @@ -59,4 +59,6 @@ public class TaxAgentManageRangeListDTO { ) @TableTitle(title ="员工状态",key = "employeeStatus",dataIndex = "employeeStatus") private String employeeStatus; + + private String status; } diff --git a/src/com/engine/salary/enums/AccountTypeEnum.java b/src/com/engine/salary/enums/AccountTypeEnum.java new file mode 100644 index 000000000..34368239c --- /dev/null +++ b/src/com/engine/salary/enums/AccountTypeEnum.java @@ -0,0 +1,68 @@ +package com.engine.salary.enums; + +import java.util.Arrays; +import java.util.Objects; +import java.util.Optional; + +/** + * 账号类型 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public enum AccountTypeEnum implements BaseEnum { + + MAIN(0, "主账号", 1), + SECOND(1, "次账号", 1); + + private Integer value; + private String defaultLabel; + private int labelId; + + + AccountTypeEnum(Integer value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public Integer getValue() { + return value; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + public static String getDefaultLabelByValue(Integer value) { + if (value == null) { + return MAIN.defaultLabel; + } + Optional optional = Arrays.stream(AccountTypeEnum.values()).filter(r -> r.getValue().equals(value)).findFirst(); + return optional.isPresent() ? optional.get().defaultLabel : ""; + } + + + public static AccountTypeEnum parseByValue(Integer value) { + if (value == null) { + return MAIN; + } + + for (AccountTypeEnum statusEnum : AccountTypeEnum.values()) { + if (Objects.equals(statusEnum.getValue(), value)) { + return statusEnum; + } + } + return MAIN; + } + +} diff --git a/src/com/engine/salary/enums/setting/PageListSettingPageEnum.java b/src/com/engine/salary/enums/setting/PageListSettingPageEnum.java new file mode 100644 index 000000000..49110ae17 --- /dev/null +++ b/src/com/engine/salary/enums/setting/PageListSettingPageEnum.java @@ -0,0 +1,39 @@ +package com.engine.salary.enums.setting; + +import com.engine.salary.enums.BaseEnum; + +/** + * 人员类型 + */ +public enum PageListSettingPageEnum implements BaseEnum { + + SALARY_DETAILS_REPORT("salary_details_report", "薪资明细报表", 109125) + ; + + private String value; + + private String defaultLabel; + + private int labelId; + + PageListSettingPageEnum(String value, String defaultLabel, int labelId) { + this.value = value; + this.defaultLabel = defaultLabel; + this.labelId = labelId; + } + + @Override + public String getValue() { + return value; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } +} diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.xml b/src/com/engine/salary/mapper/InsuranceExportMapper.xml index dbe86d9f6..3a5397af8 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.xml +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.xml @@ -3,6 +3,8 @@ SELECT a.*, + a.department_name AS fixedDepartmentName, + a.status AS fixedUserStatus, e.username AS userName, e.mobile AS telephone, d.departmentname AS departmentName, @@ -223,6 +237,8 @@ SELECT - a.*,e.username AS userName,e.mobile AS telephone,d.departmentname AS departmentName,e.status AS userStatus,e.workcode AS workcode + a.*, + e.username AS userName,e.mobile AS telephone,d.departmentname AS departmentName,e.status AS userStatus,e.workcode AS workcode FROM( SELECT * from hrsa_excel_bill_detail WHERE delete_type = 0 AND bill_month = #{param.billMonth} AND payment_status = #{param.paymentStatus} AND payment_organization = #{param.paymentOrganization} @@ -277,7 +296,8 @@ + + UPDATE hrsa_salary_archive_item diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 259cb45d1..e9d06ab89 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -101,6 +101,7 @@ , e.enddate as dismissdate , e.status AS employeeStatus ,e.certificatenum as idNo + ,e.accounttype as accountType , d.departmentname AS departmentName , c.subcompanyname AS subcompanyName @@ -118,7 +119,7 @@ WHERE t.delete_type = 0 and t.employee_type is null and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.id IN @@ -222,7 +223,7 @@ WHERE t.delete_type = 0 and t.employee_type is null and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.id IN @@ -323,7 +324,7 @@ WHERE t.delete_type = 0 and t.employee_type is null and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.id IN diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml index 900888f9c..3639039e2 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveTaxAgentMapper.xml @@ -556,7 +556,7 @@ WHERE t1.delete_type = 0 AND e.status != '7' - and (e.accounttype is null or e.accounttype = 0) + AND ( @@ -580,7 +580,7 @@ WHERE t1.delete_type = 0 AND e.status != '7' - and (e.accounttype is null or e.accounttype = 0) + AND ( e.lastname like '%'||#{param.keyword}||'%' @@ -602,7 +602,7 @@ WHERE t1.delete_type = 0 AND e.status != '7' - and (e.accounttype is null or e.accounttype = 0) + AND ( e.lastname like '%'+#{param.keyword}+'%' diff --git a/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml index ebd2b723f..5393e4363 100644 --- a/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AddUpDeductionMapper.xml @@ -96,7 +96,7 @@ from hrmresource e left join hrmdepartment d on e.departmentid = d.id where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -326,7 +326,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -347,7 +347,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -367,7 +367,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -649,7 +649,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY t1.declare_month DESC @@ -664,7 +664,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + and tax_agent_id in diff --git a/src/com/engine/salary/mapper/datacollection/AddUpSituationMapper.xml b/src/com/engine/salary/mapper/datacollection/AddUpSituationMapper.xml index 1a4e58158..2b5c45519 100644 --- a/src/com/engine/salary/mapper/datacollection/AddUpSituationMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AddUpSituationMapper.xml @@ -336,7 +336,7 @@ t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -360,7 +360,7 @@ t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -384,7 +384,7 @@ t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -405,7 +405,7 @@ t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY t1.tax_year_month DESC diff --git a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml index 234d990b3..ca51de22a 100644 --- a/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AttendQuoteDataMapper.xml @@ -261,7 +261,7 @@ WHERE t1.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -279,7 +279,7 @@ WHERE t1.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -297,7 +297,7 @@ WHERE t1.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index c0ee7621b..354fa001f 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -10,11 +10,12 @@ e.mobile, e.workcode, e.certificatenum as idNo, + e.accounttype as accountType, 'false' as extEmp from hrmresource e left join hrmdepartment d on e.departmentid = d.id where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -279,6 +286,7 @@ e.certificatenum as idNo, e.companystartdate as companystartdate, e.mobile as mobile, + e.accounttype as accountType, e.subcompanyid1 as subcompanyid, d.departmentname as departmentName, d.id as departmentId, @@ -288,7 +296,6 @@ left join hrmdepartment d on e.departmentid = d.id left join hrmjobtitles c on e.jobtitle = c.id where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) @@ -320,6 +328,7 @@ e.mobile as mobile, e.departmentid as departmentId, e.subcompanyid1 as subcompanyid, + e.accounttype as accountType, e.costcenterid as costcenterId, e.locationid as locationId, e.jobtitle as jobtitleId, @@ -328,7 +337,7 @@ from hrmresource e left join hrmdepartment d on e.departmentid = d.id where e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -481,6 +490,7 @@ e.workcode as workcode, e.companystartdate as companystartdate, e.mobile as mobile, + e.accounttype as accountType, e.enddate as dismissdate from hrmresource e where e.status in (4,5,6) @@ -558,11 +568,12 @@ c.jobtitlename as jobtitleName, c.id as jobtitleId, e.companystartdate as companystartdate, + e.accounttype as accountType, e.mobile as mobile from hrmresource e left join hrmdepartment d on e.departmentid = d.id left join hrmjobtitles c on e.jobtitle = c.id - WHERE e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + WHERE e.status not in (7) AND e.subcompanyid1 IN @@ -581,6 +592,7 @@ resultType="com.engine.salary.entity.datacollection.DataCollectionEmployee"> select e.RESOURCEID as employeeId, e.SUBCOMPANYID as subcompanyid, + h.accounttype as accountType, e.DEPARTMENTID as departmentId from hrmresourcevirtual e left join hrmresource h on e.RESOURCEID=h.id @@ -598,6 +610,7 @@ select e.RESOURCEID as employeeId, e.SUBCOMPANYID as subcompanyid, + h.accounttype as accountType, e.DEPARTMENTID as departmentId from hrmresourcevirtual e left join hrmresource h on e.RESOURCEID=h.id diff --git a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml index 0afae02a2..f21fed4a1 100644 --- a/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/OtherDeductionMapper.xml @@ -280,7 +280,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -299,7 +299,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY t1.declare_month DESC diff --git a/src/com/engine/salary/mapper/datacollection/SpecialAddDeductionMapper.xml b/src/com/engine/salary/mapper/datacollection/SpecialAddDeductionMapper.xml index ce701f1d9..442fe485e 100644 --- a/src/com/engine/salary/mapper/datacollection/SpecialAddDeductionMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/SpecialAddDeductionMapper.xml @@ -619,7 +619,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + ORDER BY t1.create_time desc @@ -633,7 +633,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t1.tax_agent_id IN @@ -653,7 +653,7 @@ WHERE t1.delete_type = 0 AND t2.delete_type = 0 AND e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + order by ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc} diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml index 0070d0bdf..b9e9b94b4 100644 --- a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml @@ -116,7 +116,7 @@ LEFT JOIN hrsa_tax_agent a ON t.tax_agent_id = a.id WHERE t.delete_type = 0 and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.tax_agent_id IN @@ -173,7 +173,7 @@ LEFT JOIN hrsa_tax_agent a ON t.tax_agent_id = a.id WHERE t.delete_type = 0 and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.tax_agent_id IN @@ -230,7 +230,7 @@ LEFT JOIN hrsa_tax_agent a ON t.tax_agent_id = a.id WHERE t.delete_type = 0 and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + AND t.tax_agent_id IN diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 352eb7416..9aeca4df9 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -26,6 +26,7 @@ + @@ -83,7 +85,8 @@ jobtitle_id, jobcall, jobcall_id, - status) + status, + account_type) VALUES ( @@ -107,7 +110,8 @@ #{emp.jobtitleId}, #{emp.jobcall}, #{emp.jobcallId}, - #{emp.status} + #{emp.status}, + #{emp.accountType} ) @@ -123,7 +127,9 @@ jobtitle_id, jobcall, jobcall_id, - status) + status, + account_type + ) select #{emp.salaryAcctRecordId,jdbcType=DOUBLE}, @@ -146,7 +152,8 @@ #{emp.jobtitleId,jdbcType=DOUBLE}, #{emp.jobcall,jdbcType=VARCHAR}, #{emp.jobcallId,jdbcType=DOUBLE}, - #{emp.status,jdbcType=VARCHAR} + #{emp.status,jdbcType=VARCHAR}, + #{emp.accountType,jdbcType=INTEGER} from dual @@ -163,7 +170,9 @@ jobtitle_id, jobcall, jobcall_id, - status) + status, + account_type + ) VALUES ( #{emp.salaryAcctRecordId}, @@ -186,7 +195,8 @@ #{emp.jobtitleId}, #{emp.jobcall}, #{emp.jobcallId}, - #{emp.status} + #{emp.status}, + #{emp.accountType} ) @@ -264,7 +274,6 @@ AND employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) AND em.lastname LIKE '%'||#{param.employeeName}||'%' @@ -345,7 +354,7 @@ AND employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) + AND em.lastname LIKE '%'+#{param.employeeName}+'%' @@ -618,7 +627,7 @@ AND t.employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) + AND em.lastname LIKE CONCAT('%',#{param.employeeName},'%') @@ -712,7 +721,7 @@ AND t.employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) + AND em.lastname LIKE '%'||#{param.employeeName}||'%' @@ -804,7 +813,7 @@ AND t.employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) - and (em.accounttype is null or em.accounttype = 0) + AND em.lastname LIKE '%'+#{param.employeeName}+'%' @@ -1023,6 +1032,7 @@ + @@ -1052,6 +1062,7 @@ , t.jobcall_id , t.status , t.lock_items + , t.account_type @@ -1220,6 +1231,9 @@ status=#{salaryAcctEmployeePO.status}, + + account_type=#{salaryAcctEmployeePO.accountType}, + WHERE id = #{salaryAcctEmployeePO.id} AND delete_type = 0 diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml index 7254cda9f..9da99248d 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctRecordMapper.xml @@ -35,7 +35,9 @@ , t.delete_type , t.tenant_key , t.back_calc_status - ,t.lock_salary_item_ids + , t.lock_salary_item_ids + , t.approval_status + , t.approval_id @@ -388,6 +390,12 @@ back_calc_status=#{backCalcStatus}, + + approval_id=#{approvalId}, + + + approval_status=#{approvalStatus}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.java b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.java new file mode 100644 index 000000000..0aea946f8 --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.java @@ -0,0 +1,72 @@ +package com.engine.salary.mapper.salarysob; + +import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryApprovalRuleMapper + * @date 2024/04/23 17:36 + * @description + */ +public interface SalaryApprovalRuleMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(SalaryApprovalRulePO salaryApprovalRule); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryApprovalRulePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param salaryApprovalRule 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 修改,修改所有字段 + * + * @param salaryApprovalRule 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 修改,忽略null字段 + * + * @param salaryApprovalRule 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 删除记录 + * + * @param salaryApprovalRule 待删除的记录 + * @return 返回影响行数 + */ + int delete(SalaryApprovalRulePO salaryApprovalRule); + + void deleteBySalarySobId(@Param("salarySobId") Long salarySobId); +} diff --git a/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml new file mode 100644 index 000000000..9d21ed200 --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/SalaryApprovalRuleMapper.xml @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + t.approval_group_setting + , t.create_time + , t.creator + , t.delete_type + , t.id + , t.open_approval + , t.salary_sob_id + , t.update_time + , t.workflow_url + + + + + + + + + + + + + + + INSERT INTO hrsa_salary_approval_rule + + + + approval_group_setting, + + + create_time, + + + creator, + + + delete_type, + + + id, + + + open_approval, + + + salary_sob_id, + + + update_time, + + + workflow_url, + + + + + #{approvalGroupSetting}, + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{id}, + + + #{openApproval}, + + + #{salarySobId}, + + + #{updateTime}, + + + #{workflowUrl}, + + + + + + + UPDATE hrsa_salary_approval_rule + + approval_group_setting=#{approvalGroupSetting}, + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + open_approval=#{openApproval}, + salary_sob_id=#{salarySobId}, + update_time=#{updateTime}, + workflow_url=#{workflowUrl}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_approval_rule + + + approval_group_setting=#{approvalGroupSetting}, + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + open_approval=#{openApproval}, + + + salary_sob_id=#{salarySobId}, + + + update_time=#{updateTime}, + + + workflow_url=#{workflowUrl}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_salary_approval_rule + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_salary_approval_rule + SET delete_type=1 + WHERE salary_sob_id = #{salarySobId} AND delete_type = 0 + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml index d46406ff5..e05bdf60f 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml @@ -434,7 +434,7 @@ + SELECT + + FROM hrsa_page_link t + WHERE delete_type = 0 + + + + + + + + + + + + INSERT INTO hrsa_page_link + + + + create_time, + + + creator, + + + delete_type, + + + employee_id, + + + id, + + + page, + + + template_id, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{employeeId}, + + + #{id}, + + + #{page}, + + + #{templateId}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_page_link + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + employee_id=#{employeeId}, + page=#{page}, + template_id=#{templateId}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_link + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + employee_id=#{employeeId}, + + + page=#{page}, + + + template_id=#{templateId}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_link + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_page_link + 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/setting/PageListSettingMapper.java b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java index 9c2ce51f8..d45faa161 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.java +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.java @@ -69,5 +69,9 @@ public interface PageListSettingMapper { */ void deleteByIds(@Param("ids") Collection ids); + //获取页面默认配置 PageListSettingPO getByPage(String page); + + //获取页面配置模板 + List getTemplatesByPage(String page); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml index 644707567..f52abe207 100644 --- a/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml +++ b/src/com/engine/salary/mapper/setting/PageListSettingMapper.xml @@ -2,14 +2,14 @@ - - - - - + + + + + @@ -64,9 +64,6 @@ AND page = #{page} - - AND setting = #{setting} - AND tenant_key = #{tenantKey} @@ -130,7 +127,7 @@ #{page}, - #{setting}, + #{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, #{tenantKey}, @@ -150,7 +147,7 @@ creator=#{creator}, delete_type=#{deleteType}, page=#{page}, - setting=#{setting}, + setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, tenant_key=#{tenantKey}, update_time=#{updateTime}, @@ -175,7 +172,7 @@ page=#{page}, - setting=#{setting}, + setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, tenant_key=#{tenantKey}, @@ -214,5 +211,13 @@ and page = #{page} + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListTemplateMapper.java b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.java new file mode 100644 index 000000000..b729cd64e --- /dev/null +++ b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.setting; + +import com.engine.salary.entity.setting.po.PageListTemplatePO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface PageListTemplateMapper { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + /** + * 条件查询 + * + * @return 返回集合,没有返回空List + */ + List listSome(PageListTemplatePO pageListTemplate); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + PageListTemplatePO getById(Long id); + + /** + * 新增,忽略null字段 + * + * @param pageListTemplate 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(PageListTemplatePO pageListTemplate); + + + /** + * 修改,修改所有字段 + * + * @param pageListTemplate 修改的记录 + * @return 返回影响行数 + */ + int update(PageListTemplatePO pageListTemplate); + + /** + * 修改,忽略null字段 + * + * @param pageListTemplate 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(PageListTemplatePO pageListTemplate); + + /** + * 删除记录 + * + * @param pageListTemplate 待删除的记录 + * @return 返回影响行数 + */ + int delete(PageListTemplatePO pageListTemplate); + + /** + * 批量删除记录 + * @param ids 主键id集合 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml new file mode 100644 index 000000000..80704b199 --- /dev/null +++ b/src/com/engine/salary/mapper/setting/PageListTemplateMapper.xml @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + + + t + . + create_time + , t.creator + , t.delete_type + , t.id + , t.limit_ids + , t.name + , t.page + , t.setting + , t.shared_type + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_page_list_template + + + + create_time, + + + creator, + + + delete_type, + + + id, + + + limit_ids, + + + name, + + + page, + + + setting, + + + shared_type, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{id}, + + + #{limitIds, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + + #{name}, + + + #{page}, + + + #{setting , jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + + #{sharedType}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_page_list_template + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + limit_ids=#{limitIds, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + name=#{name}, + page=#{page}, + setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + shared_type=#{sharedType}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_template + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + limit_ids=#{limitIds, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + + name=#{name}, + + + page=#{page}, + + + setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + + shared_type=#{sharedType}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_template + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_page_list_template + 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/siaccount/InsuranceAccountDetailMapper.xml b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml index 3a17f83e7..f996327c7 100644 --- a/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/InsuranceAccountDetailMapper.xml @@ -49,6 +49,16 @@ + + + + + + + + + + @@ -103,6 +113,15 @@ , t.update_time , t.tenant_key , t.payment_organization + , t.subcompany_name + , t.subcompany_id + , t.department_name + , t.department_id + , t.jobtitle_name + , t.jobtitle_id + , t.jobcall + , t.jobcall_id + , t.status t @@ -203,6 +222,19 @@ #{taxAgent} + + AND t.department_id IN + + #{fixedDepartmentId} + + + + AND t.subcompany_id IN + + #{fixedSubCompanyId} + + + AND e.departmentid IN @@ -244,6 +276,18 @@ #{taxAgent} + + AND t.department_id IN + + #{fixedDepartmentId} + + + + AND t.subcompany_id IN + + #{fixedSubCompanyId} + + AND e.departmentid IN @@ -285,6 +329,18 @@ #{taxAgent} + + AND t.department_id IN + + #{fixedDepartmentId} + + + + AND t.subcompany_id IN + + #{fixedSubCompanyId} + + AND e.departmentid IN @@ -327,6 +383,18 @@ #{taxAgent} + + AND t.department_id IN + + #{fixedDepartmentId} + + + + AND t.subcompany_id IN + + #{fixedSubCompanyId} + + AND e.department_id IN @@ -368,6 +436,18 @@ #{taxAgent} + + AND t.department_id IN + + #{fixedDepartmentId} + + + + AND t.subcompany_id IN + + #{fixedSubCompanyId} + + AND e.department_id IN @@ -409,6 +489,18 @@ #{taxAgent} + + AND t.department_id IN + + #{fixedDepartmentId} + + + + AND t.subcompany_id IN + + #{fixedSubCompanyId} + + AND e.department_id IN @@ -434,7 +526,7 @@ LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 WHERE t.delete_type = 0 and e.status not in (7) - and (e.accounttype is null or e.accounttype = 0) + @@ -589,7 +681,7 @@ ON e.ID = l.resource_n WHERE( e.status != '5' - and (e.accounttype is null or e.accounttype = 0) + OR l.dismissdate IS NULL OR l.dismissdate = '' OR l.dismissdate @@ -659,7 +751,7 @@ - + @@ -808,7 +900,8 @@ fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, - social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string, + subcompany_name,subcompany_id,department_name,department_id,jobtitle_name,jobtitle_id,jobcall,jobcall_id,status) VALUES ( @@ -857,7 +950,16 @@ #{item.paymentOrganization}, #{item.socialPaymentComBaseString}, #{item.fundPaymentComBaseString}, - #{item.otherPaymentComBaseString} + #{item.otherPaymentComBaseString}, + #{item.subcompanyName}, + #{item.subcompanyId}, + #{item.departmentName}, + #{item.departmentId}, + #{item.jobtitleName}, + #{item.jobtitleId}, + #{item.jobcall}, + #{item.jobcallId}, + #{item.status} ) @@ -867,7 +969,8 @@ fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, - social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string, + subcompany_name,subcompany_id,department_name,department_id,jobtitle_name,jobtitle_id,jobcall,jobcall_id,status) select #{item.employeeId,jdbcType=DOUBLE}, @@ -915,7 +1018,16 @@ #{item.paymentOrganization,jdbcType=DOUBLE}, #{item.socialPaymentComBaseString,jdbcType=VARCHAR}, #{item.fundPaymentComBaseString,jdbcType=VARCHAR}, - #{item.otherPaymentComBaseString,jdbcType=VARCHAR} + #{item.otherPaymentComBaseString,jdbcType=VARCHAR}, + #{item.subcompanyName,jdbcType=VARCHAR}, + #{item.subcompanyId,jdbcType=DOUBLE}, + #{item.departmentName,jdbcType=VARCHAR}, + #{item.departmentId,jdbcType=DOUBLE}, + #{item.jobtitleName,jdbcType=VARCHAR}, + #{item.jobtitleId,jdbcType=DOUBLE}, + #{item.jobcall,jdbcType=VARCHAR}, + #{item.jobcallId,jdbcType=DOUBLE}, + #{item.status,jdbcType=VARCHAR} from dual @@ -926,7 +1038,8 @@ fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, - social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string, + subcompany_name,subcompany_id,department_name,department_id,jobtitle_name,jobtitle_id,jobcall,jobcall_id,status) VALUES ( #{item.employeeId}, @@ -974,7 +1087,16 @@ #{item.paymentOrganization}, #{item.socialPaymentComBaseString}, #{item.fundPaymentComBaseString}, - #{item.otherPaymentComBaseString} + #{item.otherPaymentComBaseString}, + #{item.subcompanyName}, + #{item.subcompanyId}, + #{item.departmentName}, + #{item.departmentId}, + #{item.jobtitleName}, + #{item.jobtitleId}, + #{item.jobcall}, + #{item.jobcallId}, + #{item.status} ) @@ -1045,7 +1167,7 @@ LEFT JOIN bill_hrmdismiss l ON e.ID = l.resource_n LEFT JOIN hrmdepartment d ON d.ID = e.departmentid WHERE - e.STATUS = 5 and (e.accounttype is null or e.accounttype = 0) AND h.payment_status = 0 + e.STATUS = 5 AND h.payment_status = 0 AND(l.dismissdate IS NOT NULL) )AS t @@ -1121,7 +1243,7 @@ LEFT JOIN hrmdepartment d ON d.ID = e.departmentid WHERE e.STATUS not in (4,5,6,7) - and (e.accounttype is null or e.accounttype = 0) + AND( l.dismissdate IS NULL OR l.dismissdate = '' diff --git a/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml b/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml index 19b6fb3e5..ca12fe478 100644 --- a/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml +++ b/src/com/engine/salary/mapper/siaccount/SIAccountDetailTempMapper.xml @@ -102,6 +102,15 @@ , t.update_time , t.tenant_key , t.payment_organization + , t.subcompany_name as subcompanyName + , t.subcompany_id as subcompanyId + , t.department_name as departmentName + , t.department_id as departmentId + , t.jobtitle_name as jobtitleName + , t.jobtitle_id as jobtitleId + , t.jobcall as jobcall + , t.jobcall_id as jobcallId + , t.status as status @@ -137,7 +146,8 @@ fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, - social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string, + subcompany_name,subcompany_id,department_name,department_id,jobtitle_name,jobtitle_id,jobcall,jobcall_id,status) VALUES ( @@ -185,7 +195,16 @@ #{item.paymentOrganization}, #{item.socialPaymentComBaseString}, #{item.fundPaymentComBaseString}, - #{item.otherPaymentComBaseString} + #{item.otherPaymentComBaseString}, + #{item.subcompanyName}, + #{item.subcompanyId}, + #{item.departmentName}, + #{item.departmentId}, + #{item.jobtitleName}, + #{item.jobtitleId}, + #{item.jobcall}, + #{item.jobcallId}, + #{item.status} ) @@ -195,7 +214,8 @@ fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, - social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string, + subcompany_name,subcompany_id,department_name,department_id,jobtitle_name,jobtitle_id,jobcall,jobcall_id,status) select @@ -243,7 +263,16 @@ #{item.paymentOrganization,jdbcType=DOUBLE}, #{item.socialPaymentComBaseString,jdbcType=VARCHAR}, #{item.fundPaymentComBaseString,jdbcType=VARCHAR}, - #{item.otherPaymentComBaseString,jdbcType=VARCHAR} + #{item.otherPaymentComBaseString,jdbcType=VARCHAR}, + #{item.subcompanyName,jdbcType=VARCHAR}, + #{item.subcompanyId,jdbcType=DOUBLE}, + #{item.departmentName,jdbcType=VARCHAR}, + #{item.departmentId,jdbcType=DOUBLE}, + #{item.jobtitleName,jdbcType=VARCHAR}, + #{item.jobtitleId,jdbcType=DOUBLE}, + #{item.jobcall,jdbcType=VARCHAR}, + #{item.jobcallId,jdbcType=DOUBLE}, + #{item.status,jdbcType=VARCHAR} from dual @@ -254,7 +283,8 @@ fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json, social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum, com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization, - social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string) + social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string, + subcompany_name,subcompany_id,department_name,department_id,jobtitle_name,jobtitle_id,jobcall,jobcall_id,status) VALUES ( #{item.employeeId}, @@ -301,7 +331,16 @@ #{item.paymentOrganization}, #{item.socialPaymentComBaseString}, #{item.fundPaymentComBaseString}, - #{item.otherPaymentComBaseString} + #{item.otherPaymentComBaseString}, + #{item.subcompanyName}, + #{item.subcompanyId}, + #{item.departmentName}, + #{item.departmentId}, + #{item.jobtitleName}, + #{item.jobtitleId}, + #{item.jobcall}, + #{item.jobcallId}, + #{item.status} ) diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index e8565471a..18823cca7 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -336,7 +336,6 @@ LEFT JOIN bill_hrmdismiss f on a.id = f.resource_n WHERE a.status not in (7) - and (a.accounttype is null or a.accounttype = 0) ORDER BY a.id asc diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index c030d038e..813b0e867 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -41,6 +41,8 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT; + /** * 薪酬统计员工明细 *

Copyright: Copyright (c) 2022

@@ -338,37 +340,20 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(emp -> queryParam.getIds().contains(emp.getId())).collect(Collectors.toList()); } salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth).reversed()).collect(Collectors.toList()); - PageInfo SalaryAcctEmployeePageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeeList); + PageInfo salaryAcctEmployeePageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeeList); if (queryParam.isExport()) { - SalaryAcctEmployeePageInfo.setList(salaryAcctEmployeeList); + salaryAcctEmployeePageInfo.setList(salaryAcctEmployeeList); } - return SalaryAcctEmployeePageInfo; + return salaryAcctEmployeePageInfo; } @Override public SalaryStatisticsEmployeeDetailResultDTO getDetailSalaryAcctResultByAcctEmp(List salaryAcctEmployeeList) { // 3.获取薪资项目 - PageListSettingQueryParam param = PageListSettingQueryParam.builder().page("salary_details_report").build(); + PageListSettingQueryParam param = PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).build(); Map setting = getSettingService(user).getPageListSetting(param); List checked = setting.get("checked") != null ? JsonUtil.parseList(setting.get("checked"), Long.class) : new ArrayList<>(); List salaryItemList = getSalaryItemService(user).listByIds(checked); -// salaryItemList = salaryItemList.stream() -// .sorted(new Comparator() { -// @Override -// public int compare(SalaryItemPO o1, SalaryItemPO o2) { -// if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { -// Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); -// Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); -// return systemType1.compareTo(systemType2); -// } else { -// Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); -// Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); -// return sortedIndex2.compareTo(sortedIndex1); -// } -// } -// }) -// .collect(Collectors.toList()); - if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(Collections.emptyList()) @@ -381,100 +366,10 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); - - return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(salaryAcctEmployeeList) .salaryAcctResultValueList(salaryAcctResultValues) .salaryItemList(salaryItemList) .build(); } - - - // @Override -// public void exportDetailList(Map map, SalaryStatisticsEmployeeDetailQueryParam queryParam) { -// DataCollectionEmployee employee = getSalaryEmployeeService(user).getEmployeeById(queryParam.getEmployeeId()); -// // 获取核算数据 -// SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult; -// if (Objects.isNull(employee)) { -// salaryStatisticsEmployeeDetailResult = SalaryStatisticsEmployeeDetailResultDTO.builder() -// .salaryAcctEmployeeList(Lists.newArrayList()) -// .salaryAcctResultValueList(Lists.newArrayList()) -// .salaryItemList(Lists.newArrayList()) -// .build(); -// } else { -// salaryStatisticsEmployeeDetailResult = this.getDetailSalaryAcctResult(queryParam); -// } -// -// String nameI18n = (StringUtils.isEmpty(employee.getUsername()) ? "" : "[" + employee.getUsername() + "]") + SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 177855, "薪资明细表"); -// -// List sheetList = new ArrayList<>(); -// ExcelSheetData excelSheetData = new ExcelSheetData(); -// // 1.工作簿名称 -// excelSheetData.setSheetName(nameI18n); -// List headerList = Lists.newArrayList(); -// headerList.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 87614, "薪资所属月")); -// headerList.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 86184, "个税扣缴义务人")); -// headerList.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 121908, "收入所得项目")); -// salaryStatisticsEmployeeDetailResult.getSalaryItemList().forEach(item -> headerList.add(item.getName())); -// // 2.表头 -// excelSheetData.setHeaders(Collections.singletonList(headerList.toArray(new String[]{}))); -// -// List taxAgentList = getTaxAgentService(user).listAll(tenantKey); -// Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgentList, TaxAgentPO::getId, TaxAgentPO::getName); -// -// Map> acctResultValueMap = SalaryEntityUtil.convert2Map(salaryStatisticsEmployeeDetailResult.getSalaryAcctResultValueList(), SalaryAcctResultPO::getSalaryAcctEmployeeId, SalaryAcctResultPO::getResultValue); -// -// // 组装数据 -// List> rows = new ArrayList<>(); -// for (SalaryAcctEmployeePO se : salaryStatisticsEmployeeDetailResult.getSalaryAcctEmployeeList()) { -// if (CollectionUtils.isNotEmpty(queryParam.getIds()) && !queryParam.getIds().contains(se.getId())) { -// continue; -// } -// List row = new ArrayList<>(); -// row.add(se.getSalaryMonth()); -// row.add(taxAgentMap.get(se.getTaxAgentId())); -// IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(Integer.parseInt(se.getIncomeCategory())); -// row.add(Objects.isNull(incomeCategoryEnum) ? "" : SalaryI18nUtil.getI18nLabel(incomeCategoryEnum.getLabelId(), incomeCategoryEnum.getDefaultLabel())); -// // 薪资项目 -// Map resultValueMap = Optional.ofNullable(acctResultValueMap.get(se.getId())).orElse(Maps.newHashMap()); -// salaryStatisticsEmployeeDetailResult.getSalaryItemList().forEach(item -> row.add(Optional.ofNullable(resultValueMap.get(item.getId().toString())).orElse(""))); -// -// rows.add(row); -// } -// if (CollectionUtils.isNotEmpty(rows)) { -// List countRow = new ArrayList<>(); -// countRow.add(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 93278, "合计")); -// countRow.add("-"); -// countRow.add("-"); -// -// for (int i = 3; i < headerList.size(); i++) { -// BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.D_ZERO); -// for (List row : rows) { -// sumBigDecimal = sumBigDecimal.add(new BigDecimal(StringUtils.isEmpty(row.get(i).toString()) ? SalaryStatisticsReportBO.ZERO : row.get(i).toString())); -// } -// countRow.add(sumBigDecimal.toString()); -// } -// rows.add(countRow); -// } -// -// // 3.表数据 -// excelSheetData.setRows(rows); -// -// sheetList.add(excelSheetData); -// -// salaryBatchService.simpleExportExcel(ExportExcelInfo.builder() -//// .sharePassword(queryParam.getSharePassword()) -// .bizId(map.get("biz").toString()) -// .flag(true) -// .userId(employeeId) -// .eteamsId(map.get("eteamsId").toString()) -// .tenantKey(tenantKey) -// .operator(map.get("username").toString()) -// .module(map.get("module").toString()) -// .fileName(nameI18n + ReportTimeUtil.getFormatLocalDateTime(LocalDateTime.now())) -// .handlerName("exportSalaryStatisticsEmployeeDetailList") -// .dataType(nameI18n) -// .function("exportSalaryStatisticsEmployeeDetailList").build(), sheetList); -// } } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 63e0863cf..e140ed0fd 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -23,7 +23,11 @@ import com.engine.salary.report.service.SalaryStatisticsEmployeeService; import com.engine.salary.report.service.impl.SalaryStatisticsEmployeeServiceImpl; import com.engine.salary.report.util.ReportDataUtil; import com.engine.salary.service.SalaryItemService; +import com.engine.salary.service.SettingService; import com.engine.salary.service.impl.SalaryItemServiceImpl; +import com.engine.salary.service.impl.SettingServiceImpl; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.excel.ExcelUtilPlus; @@ -46,6 +50,9 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; +import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT; +import static com.engine.salary.sys.constant.SalarySysConstant.SALARY_DETAILS_REPORT_SHOW_TYPE; + /** * 薪酬统计员工明细 *

Copyright: Copyright (c) 2022

@@ -64,6 +71,17 @@ public class SalaryStatisticsEmployeeWrapper extends Service { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } + private SettingService getSettingService(User user) { + return ServiceUtil.getService(SettingServiceImpl.class, user); + } + + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + + //是否模板显示 + private final boolean templateShow = "1".equals(getSalarySysConfService(user).getValueByCode(SALARY_DETAILS_REPORT_SHOW_TYPE)); + /** * 员工列表 * @@ -162,39 +180,36 @@ public class SalaryStatisticsEmployeeWrapper extends Service { SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(salaryAcctEmployeePageInfo.getList()); List> records = getSalaryStatisticsEmployeeService(user).listDetailPage(salaryStatisticsEmployeeDetailResult, null); - Map countResultMap = Maps.newHashMap(); - if (CollectionUtils.isNotEmpty(records)) { + PageInfo> pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize()); + pageInfo.setList(records); + pageInfo.setTotal(salaryAcctEmployeePageInfo.getTotal()); + + List weaTableColumns; + //显示方案1,显示模板 + if (templateShow) { + weaTableColumns = getSettingService(user).getPageListColumns(SALARY_DETAILS_REPORT.getValue()); + } else { + // 显示方案0,显示定制列,默认方式 + weaTableColumns = buildDetailTableColumns(salaryStatisticsEmployeeDetailResult, true); + } + + // 结果 + resultMap.put("columns", weaTableColumns); + if (queryParam.isExport()) { + Map countResultMap = Maps.newHashMap(); List salaryItems = salaryStatisticsEmployeeDetailResult.getSalaryItemList(); - for (SalaryItemPO item : salaryItems) { - BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.ZERO); - String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; - for (Map record : records) { - if (record.containsKey(itemKey)) { - if (Objects.nonNull(record.get(itemKey)) && StringUtils.isNotEmpty(record.get(itemKey).toString()) && NumberUtils.isCreatable(record.get(itemKey).toString())) { + if (CollectionUtils.isNotEmpty(records)) { + for (SalaryItemPO item : salaryItems) { + BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.ZERO); + String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; + for (Map record : records) { + if (Objects.nonNull(record.get(itemKey)) && NumberUtils.isCreatable(record.get(itemKey).toString())) { sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); - record.put(itemKey, record.get(itemKey).toString()); } } - } - // 薪资项目合计 - if (queryParam.isExport()) { countResultMap.put(itemKey, sumBigDecimal.toString()); } } - } - PageInfo> pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize()); - pageInfo.setList(records); - if (queryParam.isExport()) { - pageInfo.setList(records); - } - pageInfo.setTotal(salaryAcctEmployeePageInfo.getTotal()); - - // 列表columns - List weaTableColumns = buildDetailTableColumns(salaryStatisticsEmployeeDetailResult, true); - - // 结果 - if (queryParam.isExport()) { - resultMap.put("columns", weaTableColumns); resultMap.put("salaryItems", salaryStatisticsEmployeeDetailResult.getSalaryItemList()); resultMap.put("countResult", countResultMap); } else { @@ -222,6 +237,8 @@ public class SalaryStatisticsEmployeeWrapper extends Service { */ public Map salaryListSum(SalaryStatisticsEmployeeSalaryQueryParam queryParam) { Map resultMap = Maps.newHashMap(); + Map sumResultMap = Maps.newHashMap(); + resultMap.put("sumRow", sumResultMap); if (StringUtils.isBlank(queryParam.getStartDateStr()) || StringUtils.isBlank(queryParam.getEndDateStr())) { return resultMap; } @@ -229,11 +246,10 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 获取发薪人员 PageInfo salaryAcctEmployeePageInfo = getSalaryStatisticsEmployeeService(user).listSalaryAcctEmp(queryParam); List employeePOS = salaryAcctEmployeePageInfo.getList(); - if (CollectionUtils.isEmpty(employeePOS)){ + if (CollectionUtils.isEmpty(employeePOS)) { return resultMap; } - Map sumResultMap = Maps.newHashMap(); List> empParts = Lists.partition(employeePOS, 500); @@ -251,7 +267,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; for (Map record : records) { if (record.containsKey(itemKey)) { - if (Objects.nonNull(record.get(itemKey)) && StringUtils.isNotEmpty(record.get(itemKey).toString()) && NumberUtils.isCreatable(record.get(itemKey).toString())) { + if (Objects.nonNull(record.get(itemKey)) && NumberUtils.isCreatable(record.get(itemKey).toString())) { sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); } } @@ -274,9 +290,9 @@ public class SalaryStatisticsEmployeeWrapper extends Service { queryParam.setCurrent(1); queryParam.setExport(true); Map resultMap = salaryList(queryParam); - List columns = (List)resultMap.get("columns"); + List columns = (List) resultMap.get("columns"); List> resultList = ((PageInfo>) resultMap.get("pageInfo")).getList(); - Map countResult = (Map)resultMap.get("countResult"); + Map countResult = (Map) resultMap.get("countResult"); Map columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); // 获取薪资项目保留小数位数 @@ -289,7 +305,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { SalaryItemPO salaryItemPO = salaryItemMap.get(column.getColumn()); Integer pattern = salaryItemPO == null ? 0 : salaryItemPO.getPattern(); String dataType = salaryItemPO == null ? SalaryDataTypeEnum.STRING.getValue() : salaryItemPO.getDataType(); - finalColumns.add(new WeaTableColumnGroup("100px", column.getText(), column.getColumn(), "false", pattern, dataType)); + finalColumns.add(new WeaTableColumnGroup("100px", Util.formatMultiLang(column.getText()), column.getColumn(), "false", pattern, dataType)); } }); List> rowList = new ArrayList<>(); @@ -299,7 +315,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { for (Map valueMap : resultList) { List list = new ArrayList<>(); for (Object column : finalColumns) { - WeaTableColumnGroup col = (WeaTableColumnGroup)column; + WeaTableColumnGroup col = (WeaTableColumnGroup) column; if (col.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())) { try { list.add(new BigDecimal(Util.null2String(valueMap.get(col.getColumn())))); @@ -316,7 +332,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { List sumRow = new ArrayList<>(); sumRow.add("总计"); for (int i = 1; i < finalColumns.size(); i++) { - WeaTableColumnGroup weaTableColumnGroup = (WeaTableColumnGroup)finalColumns.get(i); + WeaTableColumnGroup weaTableColumnGroup = (WeaTableColumnGroup) finalColumns.get(i); if (weaTableColumnGroup.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())) { try { sumRow.add(new BigDecimal(Util.null2String(countResult.get(weaTableColumnGroup.getColumn())))); diff --git a/src/com/engine/salary/service/RecordsBuildService.java b/src/com/engine/salary/service/RecordsBuildService.java index ab3c105a6..3edbecd45 100644 --- a/src/com/engine/salary/service/RecordsBuildService.java +++ b/src/com/engine/salary/service/RecordsBuildService.java @@ -14,7 +14,7 @@ import java.util.Map; **/ public interface RecordsBuildService { - List> buildCommonRecords(List list, Long employeeId); + List> buildCommonRecords(List list, Long employeeId, boolean dynamicEmpInfo); List> buildCommonRecordsWithStyle(List list, Long employeeId); diff --git a/src/com/engine/salary/service/SIArchivesService.java b/src/com/engine/salary/service/SIArchivesService.java index b6ff23d69..8e114c756 100644 --- a/src/com/engine/salary/service/SIArchivesService.java +++ b/src/com/engine/salary/service/SIArchivesService.java @@ -77,7 +77,7 @@ public interface SIArchivesService { /** * 批量减员,直接减员,并给予最后缴纳月 */ - Map stopWithoutLimit(Collection ids, String yearMonth); + Map stopWithoutLimit(Collection ids, String yearMonth, String fundEndYearMonth, String otherEndYearMonth); /** * 全量减员 diff --git a/src/com/engine/salary/service/SIExportService.java b/src/com/engine/salary/service/SIExportService.java index 045ea5f1e..f9ee4608e 100644 --- a/src/com/engine/salary/service/SIExportService.java +++ b/src/com/engine/salary/service/SIExportService.java @@ -30,5 +30,5 @@ public interface SIExportService { */ XSSFWorkbook exportAccount(Integer paymentStatus, InsuranceExportParam param); - List> buildCommonRecords(List list); + List> buildCommonRecords(List list, boolean isImport); } diff --git a/src/com/engine/salary/service/SalaryApprovalRuleService.java b/src/com/engine/salary/service/SalaryApprovalRuleService.java new file mode 100644 index 000000000..21caa1c1d --- /dev/null +++ b/src/com/engine/salary/service/SalaryApprovalRuleService.java @@ -0,0 +1,117 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO; +import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam; +import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam; +import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; + +import java.util.Collection; +import java.util.List; + +/** + * @author Harryxzy + * @ClassName SalaryApprovalRuleService + * @date 2024/04/23 17:33 + * @description 薪资核算审批规则 + */ +public interface SalaryApprovalRuleService { + + /** + * 查询所有记录 + * + * @return 返回集合,没有返回空List + */ + List listAll(); + + + /** + * 根据主键查询 + * + * @param id 主键 + * @return 返回记录,没有返回null + */ + SalaryApprovalRulePO getById(Long id); + + + /** + * 新增,忽略null字段 + * + * @param salaryApprovalRule 新增的记录 + * @return 返回影响行数 + */ + int insertIgnoreNull(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 修改,修改所有字段 + * + * @param salaryApprovalRule 修改的记录 + * @return 返回影响行数 + */ + int update(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 修改,忽略null字段 + * + * @param salaryApprovalRule 修改的记录 + * @return 返回影响行数 + */ + int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 删除记录 + * + * @param salaryApprovalRule 待删除的记录 + * @return 返回影响行数 + */ + int delete(SalaryApprovalRulePO salaryApprovalRule); + + /** + * 根据账套id查询审批设置 + * @param salarySobId + * @return + */ + SalaryApprovalRulePO getBySalarySobId(Long salarySobId); + + /** + * 根据薪资账套id删除 + * @param salarySobId + */ + void deleteBySalarySobId(Long salarySobId); + + /** + * 薪资账套的薪资审批规则 + * @param queryParam + * @return + */ + SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam); + + /** + * 保存薪资账套的薪资审批规则 + * @param salaryApprovalDTO + */ + void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO); + + List listSalaryApprovalItem(SalaryItemSearchParam queryParam); + + SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId); + + /** + * 获取该核算记录是否可以编辑、核算 + * @param salaryAcctRecordPO + * @return + */ + boolean getRecordIsCanEdit(SalaryAcctRecordPO salaryAcctRecordPO); + + /** + * 保存审批流程id + * @param saveParam + */ + void saveApprovalRequestId(ApprovalRequestSaveParam saveParam); + + void deleteBySalarySobIds(Collection ids); + + List listBySalarySobIds(Collection salarySobIds); +} diff --git a/src/com/engine/salary/service/SalaryArchiveItemService.java b/src/com/engine/salary/service/SalaryArchiveItemService.java index 9d9081bd8..6e22d49ba 100644 --- a/src/com/engine/salary/service/SalaryArchiveItemService.java +++ b/src/com/engine/salary/service/SalaryArchiveItemService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.salaryarchive.config.ArchiveFieldConfig; import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemSaveParam; @@ -163,4 +164,13 @@ public interface SalaryArchiveItemService { ArchiveFieldConfig getConfig(); UploadConfigResponse.Result parseConfig(ArchiveFieldConfig config); + + /** + * 根据薪资档案id和生效日期范围获取数据 + * + * @param salaryArchiveIds + * @param dateRange + * @return + */ + List listByArchiveIdAndEffectiveTime(List salaryArchiveIds, LocalDateRange dateRange); } diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java index 27b7e679e..aa6526b02 100644 --- a/src/com/engine/salary/service/SettingService.java +++ b/src/com/engine/salary/service/SettingService.java @@ -1,12 +1,25 @@ package com.engine.salary.service; -import com.engine.salary.entity.setting.param.PageListSettingQueryParam; -import com.engine.salary.entity.setting.param.PageListSettingSaveParam; +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.param.*; +import com.engine.salary.entity.setting.po.PageListTemplatePO; +import java.util.List; import java.util.Map; public interface SettingService { - void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); + void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); - Map getPageListSetting(PageListSettingQueryParam param); + Map getPageListSetting(PageListSettingQueryParam param); + + PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param); + + List getPageListTemplates(PageListTemplateQueryParam queryParam); + + PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param); + + void changePageListTemplate(PageListTemplateChangeParam param); + + List getPageListColumns(String page); } diff --git a/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java b/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java index 4151c33d9..29ee07ccc 100644 --- a/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java +++ b/src/com/engine/salary/service/impl/RecordsBuildServiceImpl.java @@ -70,7 +70,7 @@ public class RecordsBuildServiceImpl extends Service implements RecordsBuildServ } @Override - public List> buildCommonRecords(List list, Long employeeId) { + public List> buildCommonRecords(List list, Long employeeId, boolean dynamicEmpInfo) { // boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); boolean welBaseDiffSign = getSIArchivesService(user).isDiffWelBase(); List> result = new ArrayList<>(); @@ -99,10 +99,24 @@ public class RecordsBuildServiceImpl extends Service implements RecordsBuildServ record.put("billMonth", item.getBillMonth()); record.put("billStatus", SalaryEnumUtil.enumMatchByValue(item.getBillStatus(), BillStatusEnum.values(), BillStatusEnum.class)); record.put("userName", simpleEmployee.getUsername()); - record.put("department", simpleEmployee.getDepartmentName()); - record.put("supplementaryMonth", item.getSupplementaryMonth()); record.put("mobile", simpleEmployee.getMobile()); - record.put("employeeStatus", simpleEmployee.getStatus() != null ? UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(simpleEmployee.getStatus())) : ""); + if (!dynamicEmpInfo) { + record.put("department", item.getDepartmentName()); + record.put("departmentId", item.getDepartmentId()); + record.put("subcompany", item.getSubcompanyName()); + record.put("subcompanyId", item.getSubcompanyId()); + record.put("jobtitle", item.getJobtitleName()); + record.put("jobtitleId", item.getJobtitleId()); + record.put("jobcall", item.getJobcall()); + record.put("jobcallId", item.getJobcallId()); + record.put("employeeStatus", item.getStatus() != null ? UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(item.getStatus())) : ""); + } else { + record.put("department", simpleEmployee.getDepartmentName()); + record.put("departmentId", simpleEmployee.getDepartmentId()); + record.put("employeeStatus", simpleEmployee.getStatus() != null ? UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(simpleEmployee.getStatus())) : ""); + } + + record.put("supplementaryMonth", item.getSupplementaryMonth()); ResourceFromEnum from = SalaryEnumUtil.enumMatchByValue(item.getResourceFrom(), ResourceFromEnum.values(), ResourceFromEnum.class); record.put("workcode", StringUtils.isBlank(simpleEmployee.getWorkcode()) ? "" : simpleEmployee.getWorkcode()); record.put("idNo", Util.null2String(simpleEmployee.getIdNo())); diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 969f0ceb5..df3bf68a1 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -346,7 +346,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { List insuranceAccountDetailPOS = pageInfo.getList(); //数据组装 - List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId); + List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId, false); PageInfo> pageInfos = new PageInfo<>(records); pageInfos.setTotal(pageInfo.getTotal()); pageInfos.setPageNum(queryParam.getCurrent()); @@ -413,7 +413,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { List insuranceAccountDetailPOS = pageInfo.getList(); encryptUtil.decryptList(insuranceAccountDetailPOS, InsuranceAccountDetailPO.class); //数据组装 - List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId); + List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId, false); PageInfo> pageInfos = new PageInfo<>(records); pageInfos.setTotal(pageInfo.getTotal()); pageInfos.setPageNum(queryParam.getCurrent()); @@ -483,7 +483,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { List insuranceAccountDetailPOS = pageInfo.getList(); encryptUtil.decryptList(insuranceAccountDetailPOS, InsuranceAccountDetailPO.class); //数据组装 - List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId); + List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId, false); PageInfo> pageInfos = new PageInfo<>(records); pageInfos.setTotal(pageInfo.getTotal()); pageInfos.setPageNum(queryParam.getCurrent()); @@ -542,7 +542,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { List insuranceAccountDetailPOS = pageInfo.getList(); encryptUtil.decryptList(insuranceAccountDetailPOS, InsuranceAccountDetailPO.class); //数据组装 - List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId); + List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId, false); PageInfo> pageInfos = new PageInfo<>(records); pageInfos.setTotal(pageInfo.getTotal()); pageInfos.setPageNum(queryParam.getCurrent()); @@ -1964,11 +1964,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { public void socialSecurityBenefitsRecalculate(InsuranceAccountBatchPO param) { //fixme 重新核算的校验逻辑 1、先取台账对应扣缴义务人下的所有账套 2、取账套下所有核算记录 3、判断核算记录有没有使用对应月份的福利台账 // int num = getSiAccountBiz(user).checkIfBusinessaccounting(param); - int num = checkIfBusinessAccounting(param); - //表示已经被核算过不能重新核算 - if (num > 0) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "已被薪酬核算给核算过,无法重新核算!")); - } +// int num = checkIfBusinessAccounting(param); +// //表示已经被核算过不能重新核算 +// if (num > 0) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "已被薪酬核算给核算过,无法重新核算!")); +// } param.setBillStatus(0); // getSiAccountBiz(user).updateById(param); updateById(param); @@ -2049,7 +2049,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { encryptUtil.decryptList(accountExportPOS, AccountExportPO.class); SalaryI18nUtil.i18nList(accountExportPOS); // 数据组装 - List> records = getSIExportService(user).buildCommonRecords(accountExportPOS); + List> records = getSIExportService(user).buildCommonRecords(accountExportPOS, true); // excel导出的数据 List> rows = Lists.newArrayListWithExpectedSize(records.size()); @@ -2242,11 +2242,23 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { if (!empIdsInPayMonthRange.contains(employeeId)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99920, "无核算人员")); } + DataCollectionEmployee employee = getSalaryEmployeeService(user).getEmployeeById(employeeId); // 封装InsuranceAccountDetailPO Date now = new Date(); InsuranceAccountDetailPO insuranceAccountDetailPO = new InsuranceAccountDetailPO(); insuranceAccountDetailPO.setBillStatus(0); insuranceAccountDetailPO.setEmployeeId(employeeId); + if (employee != null) { + insuranceAccountDetailPO.setSubcompanyName(employee.getSubcompanyName()); + insuranceAccountDetailPO.setSubcompanyId(employee.getSubcompanyid()); + insuranceAccountDetailPO.setDepartmentName(employee.getDepartmentName()); + insuranceAccountDetailPO.setDepartmentId(employee.getDepartmentId()); + insuranceAccountDetailPO.setJobtitleName(employee.getJobtitleName()); + insuranceAccountDetailPO.setJobtitleId(employee.getJobtitleId()); + insuranceAccountDetailPO.setJobcall(employee.getJobcall()); + insuranceAccountDetailPO.setJobcallId(employee.getJobcallId()); + insuranceAccountDetailPO.setStatus(employee.getStatus()); + } insuranceAccountDetailPO.setPaymentOrganization(paymentOrganization); insuranceAccountDetailPO.setPaymentStatus(1); insuranceAccountDetailPO.setResourceFrom(0); @@ -4606,7 +4618,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { PageInfo pageInfo = siBatchListCommonPage(queryParam); List insuranceAccountDetailPOS = pageInfo.getList(); // 数据组装 - List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId); + List> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId, false); // Map maxSizeRecord = records.stream().reduce(new HashMap<>(), (a, b) -> a.size() > b.size() ? a : b); Map sumRow = countSum(records); datas.put("sumRow", sumRow); @@ -4642,7 +4654,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { list.addAll(extList); encryptUtil.decryptList(list, InsuranceAccountDetailPO.class); //数据组装 - List> records = getService(user).buildCommonRecords(list, employeeId); + List> records = getService(user).buildCommonRecords(list, employeeId, false); // Map maxSizeRecord = records.stream().reduce(new HashMap<>(), (a, b) -> a.size() > b.size() ? a : b); Map sumRow = countSum(records); datas.put("sumRow", sumRow); @@ -4681,7 +4693,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { list.addAll(extList); encryptUtil.decryptList(list, InsuranceAccountDetailPO.class); //数据组装 - List> records = getService(user).buildCommonRecords(list, employeeId); + List> records = getService(user).buildCommonRecords(list, employeeId, false); Map sumRow = countSum(records); datas.put("sumRow", sumRow); return datas; @@ -4719,7 +4731,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { list.addAll(extList); encryptUtil.decryptList(list, InsuranceAccountDetailPO.class); //数据组装 - List> records = getService(user).buildCommonRecords(list, employeeId); + List> records = getService(user).buildCommonRecords(list, employeeId, false); Map sumRow = countSum(records); datas.put("sumRow", sumRow); return datas; @@ -4994,6 +5006,19 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { InsuranceAccountDetailPO insuranceAccountDetailPO = new InsuranceAccountDetailPO(); insuranceAccountDetailPO.setId(IdGenerator.generate()); insuranceAccountDetailPO.setEmployeeId(employeeId); + DataCollectionEmployee employee = getSalaryEmployeeService(user).getEmployeeById(employeeId); + if (employee != null) { + insuranceAccountDetailPO.setSubcompanyName(employee.getSubcompanyName()); + insuranceAccountDetailPO.setSubcompanyId(employee.getSubcompanyid()); + insuranceAccountDetailPO.setDepartmentName(employee.getDepartmentName()); + insuranceAccountDetailPO.setDepartmentId(employee.getDepartmentId()); + insuranceAccountDetailPO.setJobtitleName(employee.getJobtitleName()); + insuranceAccountDetailPO.setJobtitleId(employee.getJobtitleId()); + insuranceAccountDetailPO.setJobcall(employee.getJobcall()); + insuranceAccountDetailPO.setJobcallId(employee.getJobcallId()); + insuranceAccountDetailPO.setStatus(employee.getStatus()); + } + insuranceAccountDetailPO.setBillMonth(billMonth.substring(0, 7)); insuranceAccountDetailPO.setBillStatus(BillStatusEnum.NOT_ARCHIVED.getValue()); insuranceAccountDetailPO.setPaymentStatus(PaymentStatusEnum.BALANCE.getValue()); @@ -5394,7 +5419,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } log.info("开始生成福利核算数据,待处理人员数量:{}", ids.size()); - siCommonAccount(param.getBillMonth(), ids, param.getPaymentOrganization()); + siCommonAccount(param.getBillMonth(), ids, param.getPaymentOrganization(), param.isFlag()); log.info("福利核算数据生成完毕,开始数据处理"); handleData(ids, param); @@ -5422,10 +5447,21 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } - public void siCommonAccount(String billMonth, List ids, Long paymentOrganization) { + public void siCommonAccount(String billMonth, List ids, Long paymentOrganization, boolean isFirstFlag) { // Map insuranceArchivesAccountPOS = siArchivesBiz.buildBatchAccount(ids, paymentOrganization); Map insuranceArchivesAccountPOS = getSIArchivesService(user).buildBatchAccount(ids, paymentOrganization); + List historyDetailData = new ArrayList<>(); + List employeeList = new ArrayList<>(); + if (!isFirstFlag) { + // 不是首次核算,需要把社保历史数据取出 + historyDetailData.addAll(getInsuranceAccountDetailMapper().list(InsuranceAccountDetailParam.builder().billMonth(billMonth).paymentOrganization(paymentOrganization.toString()).employeeIds(ids).build())); + } else { + employeeList = getSalaryEmployeeService(user).listByIds(ids); + } + Map historyDetailDataMap = SalaryEntityUtil.convert2Map(historyDetailData, InsuranceAccountDetailPO::getEmployeeId); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + List list = new ArrayList<>(); int count = 0; for (Map.Entry entry : insuranceArchivesAccountPOS.entrySet()) { @@ -5443,6 +5479,34 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { insuranceAccountDetailPO.setResourceFrom(ResourceFromEnum.SYSTEM.getValue()); insuranceAccountDetailPO.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); insuranceAccountDetailPO.setPaymentOrganization(paymentOrganization); + if (isFirstFlag) { + // 初次核算 + DataCollectionEmployee employee = employeeMap.get(k); + if (employee != null) { + insuranceAccountDetailPO.setSubcompanyName(employee.getSubcompanyName()); + insuranceAccountDetailPO.setSubcompanyId(employee.getSubcompanyid()); + insuranceAccountDetailPO.setDepartmentName(employee.getDepartmentName()); + insuranceAccountDetailPO.setDepartmentId(employee.getDepartmentId()); + insuranceAccountDetailPO.setJobtitleName(employee.getJobtitleName()); + insuranceAccountDetailPO.setJobtitleId(employee.getJobtitleId()); + insuranceAccountDetailPO.setJobcall(employee.getJobcall()); + insuranceAccountDetailPO.setJobcallId(employee.getJobcallId()); + insuranceAccountDetailPO.setStatus(employee.getStatus()); + } + } else { + InsuranceAccountDetailPO historyDetail = historyDetailDataMap.get(k); + if (historyDetail != null) { + insuranceAccountDetailPO.setSubcompanyName(historyDetail.getSubcompanyName()); + insuranceAccountDetailPO.setSubcompanyId(historyDetail.getSubcompanyId()); + insuranceAccountDetailPO.setDepartmentName(historyDetail.getDepartmentName()); + insuranceAccountDetailPO.setDepartmentId(historyDetail.getDepartmentId()); + insuranceAccountDetailPO.setJobtitleName(historyDetail.getJobtitleName()); + insuranceAccountDetailPO.setJobtitleId(historyDetail.getJobtitleId()); + insuranceAccountDetailPO.setJobcall(historyDetail.getJobcall()); + insuranceAccountDetailPO.setJobcallId(historyDetail.getJobcallId()); + insuranceAccountDetailPO.setStatus(historyDetail.getStatus()); + } + } //核算社保 accountSocial(insuranceAccountDetailPO, v, billMonth); @@ -5478,7 +5542,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { //临时表数据入库 if (CollectionUtils.isNotEmpty(list)) { encryptUtil.encryptList(list, InsuranceAccountDetailTempPO.class); - List> lists = splitList(list, 40); + List> lists = splitList(list, 20); lists.forEach(subList -> { getSIAccountDetailTempMapper().batchSaveAccountTempDetails(subList); }); @@ -6363,8 +6427,14 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { employeeIds = employeeIds.stream().filter(f -> empIdsInPayMonthRange.contains(f)).collect(Collectors.toList()); SalaryAssert.notEmpty(employeeIds, SalaryI18nUtil.getI18nLabel(0, "无核算人员")); + + // 获取员工信息 + List employeeList = getSalaryEmployeeService(user).listByIds(employeeIds); + Map empMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + List baseList = new ArrayList<>(); employeeIds.stream().forEach(id -> { + DataCollectionEmployee employee = empMap.get(id); param.getBillMonthList().stream().forEach(month -> { SupplementAccountBaseParam supplementAccountBaseParam = SupplementAccountBaseParam.builder() .supplementaryMonth(month) @@ -6374,6 +6444,17 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { .billMonth(param.getBillMonth()) .supplementType(param.getSupplementType()) .build(); + if (employee != null) { + supplementAccountBaseParam.setSubcompanyName(employee.getSubcompanyName()); + supplementAccountBaseParam.setSubcompanyId(employee.getSubcompanyid()); + supplementAccountBaseParam.setDepartmentName(employee.getDepartmentName()); + supplementAccountBaseParam.setDepartmentId(employee.getDepartmentId()); + supplementAccountBaseParam.setJobtitleName(employee.getJobtitleName()); + supplementAccountBaseParam.setJobtitleId(employee.getJobtitleId()); + supplementAccountBaseParam.setJobcall(employee.getJobcall()); + supplementAccountBaseParam.setJobcallId(employee.getJobcallId()); + supplementAccountBaseParam.setStatus(employee.getStatus()); + } if ("2".equals(param.getSupplementType())) { supplementAccountBaseParam.setSocialPaymentBaseString(param.getSocialPaymentBaseString()); supplementAccountBaseParam.setFundPaymentBaseString(param.getFundPaymentBaseString()); @@ -6430,6 +6511,16 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { insuranceAccountDetailPO.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); insuranceAccountDetailPO.setId(IdGenerator.generate()); insuranceAccountDetailPO.setEmployeeId(baseParam.getEmployeeId()); + insuranceAccountDetailPO.setSubcompanyName(baseParam.getSubcompanyName()); + insuranceAccountDetailPO.setSubcompanyId(baseParam.getSubcompanyId()); + insuranceAccountDetailPO.setDepartmentName(baseParam.getDepartmentName()); + insuranceAccountDetailPO.setDepartmentId(baseParam.getDepartmentId()); + insuranceAccountDetailPO.setJobtitleName(baseParam.getJobtitleName()); + insuranceAccountDetailPO.setJobtitleId(baseParam.getJobtitleId()); + insuranceAccountDetailPO.setJobcall(baseParam.getJobcall()); + insuranceAccountDetailPO.setJobcallId(baseParam.getJobcallId()); + insuranceAccountDetailPO.setStatus(baseParam.getStatus()); + insuranceAccountDetailPO.setPaymentStatus(PaymentStatusEnum.REPAIR.getValue()); insuranceAccountDetailPO.setSupplementaryMonth(baseParam.getSupplementaryMonth()); insuranceAccountDetailPO.setPaymentOrganization(baseParam.getPaymentOrganization()); diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 1fe3ee033..b14d1b74a 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -989,7 +989,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService //获取社保档案 socialList = getSocialSchemeMapper().getSocialById(socialIds); //筛选可减员的社保档案相关信息 - toStopSocialIds = socialList.stream().filter(f-> f.getSocialSchemeId() == null || (f.getSocialEndTime() != null && f.getSocialEndTime().length() > 0 && (f.getSocialEndTime().compareTo(todayMonth)) <= 0)) + toStopSocialIds = socialList.stream().filter(f-> f.getSocialSchemeId() == null || (f.getSocialEndTime() != null && f.getSocialEndTime().length() > 0)) .map(InsuranceArchivesSocialSchemePO::getId).collect(Collectors.toList()); List finalToStopSocialIds = toStopSocialIds; @@ -999,7 +999,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService if (fundIds.size() > 0) { fundList = getFundSchemeMapper().getFundById(fundIds); - toStopFundIds = fundList.stream().filter(f->f.getFundSchemeId() == null || (f.getFundEndTime() != null && f.getFundEndTime().length() > 0 && (f.getFundEndTime().compareTo(todayMonth)) <= 0)) + toStopFundIds = fundList.stream().filter(f->f.getFundSchemeId() == null || (f.getFundEndTime() != null && f.getFundEndTime().length() > 0)) .map(InsuranceArchivesFundSchemePO::getId).collect(Collectors.toList()); List finalToStopFundIds = toStopFundIds; noStopBaseInfoIds = (List) CollectionUtils.union(noStopBaseInfoIds, baseInfoPOList.stream().filter(f -> !finalToStopFundIds.contains(f.getFundArchivesId())).map(InsuranceArchivesBaseInfoPO::getId).collect(Collectors.toList())); @@ -1008,7 +1008,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService if (otherIds.size() > 0) { otherList = getOtherSchemeMapper().getOtherById(otherIds); - toStopOtherIds= otherList.stream().filter(f->f.getOtherSchemeId() == null || (f.getOtherEndTime() != null && f.getOtherEndTime().length() > 0 && (f.getOtherEndTime().compareTo(todayMonth)) <= 0)) + toStopOtherIds= otherList.stream().filter(f->f.getOtherSchemeId() == null || (f.getOtherEndTime() != null && f.getOtherEndTime().length() > 0)) .map(InsuranceArchivesOtherSchemePO::getId).collect(Collectors.toList()); List finalToStopOtherIds = toStopOtherIds; noStopBaseInfoIds = (List) CollectionUtils.union(noStopBaseInfoIds, baseInfoPOList.stream().filter(f -> !finalToStopOtherIds.contains(f.getOtherArchivesId())).map(InsuranceArchivesBaseInfoPO::getId).collect(Collectors.toList())); @@ -1081,7 +1081,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService } @Override - public Map stopWithoutLimit(Collection ids, String yearMonth) { + public Map stopWithoutLimit(Collection ids, String yearMonth, String fundEndYearMonth, String otherEndYearMonth) { if (CollectionUtils.isEmpty(ids)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(145969, "没有可以操作的记录")); @@ -1102,10 +1102,13 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService if (baseInfoIds.size() > 0) { getInsuranceBaseInfoMapper().updateRunStatusByIds(InsuranceArchivesBaseInfoPO.builder() .ids(baseInfoIds).runStatus(EmployeeStatusEnum.STOP_PAYMENT_FROM_DEL.getValue()).build()); + String socialEndYearMonth = yearMonth; + fundEndYearMonth = StringUtils.isBlank(fundEndYearMonth) ? yearMonth : fundEndYearMonth; + otherEndYearMonth = StringUtils.isBlank(otherEndYearMonth) ? yearMonth : otherEndYearMonth; - getSocialSchemeMapper().batchUpdateEndTime(socialIds, yearMonth); - getFundSchemeMapper().batchUpdateEndTime(fundIds, yearMonth); - getOtherSchemeMapper().batchUpdateEndTime(otherIds, yearMonth); + getSocialSchemeMapper().batchUpdateEndTime(socialIds, socialEndYearMonth); + getFundSchemeMapper().batchUpdateEndTime(fundIds, fundEndYearMonth); + getOtherSchemeMapper().batchUpdateEndTime(otherIds, otherEndYearMonth); } diff --git a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java index 4b7750224..bebb03851 100644 --- a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java @@ -8,6 +8,7 @@ import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.encrypt.EncryptUtil; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.siaccount.param.BalanceAccountBaseParam; import com.engine.salary.entity.siaccount.param.InspectAccountParam; import com.engine.salary.entity.siaccount.po.InsuranceAccountBatchPO; @@ -35,6 +36,7 @@ import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.SIAccountService; import com.engine.salary.service.SIBalanceService; +import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.IdGenerator; @@ -98,6 +100,10 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { return MapperProxyFactory.getProxy(TaxAgentMapper.class); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + @Override public void del(InspectAccountParam param, Long employeeId) { @@ -323,10 +329,24 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { if (balanceAccountPO != null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "补差数据已存在,不可重复新增!")); } + DataCollectionEmployee employeeById = getSalaryEmployeeService(user).getEmployeeById(employeeId); InsuranceAccountDetailPO insuranceAccountDetailPO = new InsuranceAccountDetailPO(); insuranceAccountDetailPO.setId(IdGenerator.generate()); insuranceAccountDetailPO.setEmployeeId(employeeId); + if (employeeById != null) { + insuranceAccountDetailPO.setSubcompanyName(employeeById.getSubcompanyName()); + insuranceAccountDetailPO.setSubcompanyId(employeeById.getSubcompanyid()); + insuranceAccountDetailPO.setDepartmentName(employeeById.getDepartmentName()); + insuranceAccountDetailPO.setDepartmentId(employeeById.getDepartmentId()); + insuranceAccountDetailPO.setJobtitleName(employeeById.getJobtitleName()); + insuranceAccountDetailPO.setJobtitleId(employeeById.getJobtitleId()); + insuranceAccountDetailPO.setJobcall(employeeById.getJobcall()); + insuranceAccountDetailPO.setJobcallId(employeeById.getJobcallId()); + insuranceAccountDetailPO.setStatus(employeeById.getStatus()); + } + + insuranceAccountDetailPO.setBillMonth(billMonth); insuranceAccountDetailPO.setBillStatus(BillStatusEnum.NOT_ARCHIVED.getValue()); insuranceAccountDetailPO.setPaymentStatus(PaymentStatusEnum.BALANCE.getValue()); diff --git a/src/com/engine/salary/service/impl/SICategoryServiceImpl.java b/src/com/engine/salary/service/impl/SICategoryServiceImpl.java index 875947741..58f395dfb 100644 --- a/src/com/engine/salary/service/impl/SICategoryServiceImpl.java +++ b/src/com/engine/salary/service/impl/SICategoryServiceImpl.java @@ -289,7 +289,7 @@ public class SICategoryServiceImpl extends Service implements SICategoryService List insuranceAccountDetailPOS = getInsuranceAccountDetailMapper().listAll(); encryptUtil.decryptList(insuranceAccountDetailPOS, InsuranceAccountDetailPO.class); //数据组装 - List> records = getRecordsBuildService(user).buildCommonRecords(insuranceAccountDetailPOS, null); + List> records = getRecordsBuildService(user).buildCommonRecords(insuranceAccountDetailPOS, null, false); String welfareTypeName = ""; switch (categoryPO.getWelfareType()) { case 1: diff --git a/src/com/engine/salary/service/impl/SIExportServiceImpl.java b/src/com/engine/salary/service/impl/SIExportServiceImpl.java index 8e6f9c7a0..c0f281ae9 100644 --- a/src/com/engine/salary/service/impl/SIExportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIExportServiceImpl.java @@ -220,7 +220,7 @@ public class SIExportServiceImpl extends Service implements SIExportService { // } columns = buildCommonColumns(accountExportPOS, paymentStatus); - records = buildCommonRecords(accountExportPOS); + records = buildCommonRecords(accountExportPOS, false); List> excelSheetData = new ArrayList<>(); //工作簿名称 String sheetName = SalaryI18nUtil.getI18nLabel(0, "社保福利台账"); @@ -280,7 +280,7 @@ public class SIExportServiceImpl extends Service implements SIExportService { } @Override - public List> buildCommonRecords(List list) { + public List> buildCommonRecords(List list, boolean isExport) { // boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase(); boolean welBaseDiffSign = getSIArchivesService(user).isDiffWelBase(); List> result = new ArrayList<>(); @@ -294,12 +294,17 @@ public class SIExportServiceImpl extends Service implements SIExportService { record.put("billMonth", item.getBillMonth()); record.put("billStatus", SalaryEnumUtil.enumMatchByValue(item.getBillStatus(), BillStatusEnum.values(), BillStatusEnum.class)); record.put("userName", item.getUserName()); - record.put("department", item.getDepartmentName()); + if (isExport) { + record.put("department", item.getDepartmentName()); + record.put("employeeStatus", item.getUserStatus() == null ? "" : getDefaultLabelByValue(item.getUserStatus())); + } else { + record.put("department", item.getFixedDepartmentName()); + record.put("employeeStatus", item.getFixedUserStatus() == null ? "" : getDefaultLabelByValue(item.getFixedUserStatus())); + } record.put("supplementaryMonth", item.getSupplementaryMonth()); record.put("mobile", item.getTelephone()); record.put("workcode", item.getWorkcode()); record.put("idNo", item.getIdNo()); - record.put("employeeStatus", item.getUserStatus() == null ? "" : getDefaultLabelByValue(item.getUserStatus())); ResourceFromEnum from = SalaryEnumUtil.enumMatchByValue(item.getResourceFrom(), ResourceFromEnum.values(), ResourceFromEnum.class); record.put("sourceFrom", SalaryI18nUtil.getI18nLabel(from.getLabelId(), from.getDefaultLabel())); diff --git a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java index 6766dae2b..e620c082e 100644 --- a/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRecessionServiceImpl.java @@ -7,6 +7,7 @@ import com.engine.core.impl.Service; import com.engine.salary.config.SalaryElogConfig; import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.encrypt.EncryptUtil; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.dto.HrmInfoDTO; import com.engine.salary.entity.hrm.param.HrmQueryParam; import com.engine.salary.entity.siaccount.param.InsuranceAccountDetailParam; @@ -27,6 +28,7 @@ import com.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.SIAccountService; import com.engine.salary.service.SIRecessionService; +import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.TaxAgentService; import com.engine.salary.util.SalaryAssert; import com.engine.salary.util.SalaryEntityUtil; @@ -75,6 +77,10 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic return MapperProxyFactory.getProxy(TaxAgentMapper.class); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + @Override public void save(RecessionParam param, Long employeeId) { @@ -108,12 +114,17 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic //处理数据 List finalDetailPOS = detailPOS; List finalRecessionDetails = new ArrayList<>(); + + // 获取员工信息 + List employeeList = getSalaryEmployeeService(user).listByIds(employeeIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); employeeIds.forEach(id -> { + DataCollectionEmployee employee = employeeMap.getOrDefault(id, DataCollectionEmployee.builder().build()); param.getRecessionMonthList().forEach(billMonth -> { Optional detailPOOptional = finalDetailPOS.stream().filter( detail -> Objects.equals(billMonth, detail.getBillMonth()) && Objects.equals(id, detail.getEmployeeId())).findFirst(); - detailPOOptional.ifPresent(insuranceAccountDetailPO -> recessionAccount(param, insuranceAccountDetailPO, finalRecessionDetails)); + detailPOOptional.ifPresent(insuranceAccountDetailPO -> recessionAccount(param, insuranceAccountDetailPO, finalRecessionDetails, employee)); }); }); //退差数据入库 @@ -173,10 +184,10 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic } - private void recessionAccount(RecessionParam param, InsuranceAccountDetailPO insuranceAccountDetailPO, List recessionDetails) { + private void recessionAccount(RecessionParam param, InsuranceAccountDetailPO insuranceAccountDetailPO, List recessionDetails, DataCollectionEmployee employee) { List projects = param.getProjects(); InsuranceAccountDetailPO temp = new InsuranceAccountDetailPO(); - recessionBaseBuild(param, temp, insuranceAccountDetailPO); + recessionBaseBuild(param, temp, insuranceAccountDetailPO, employee); if (projects.contains(ProjectTypeEnum.ALL.getValue())) { recessionSocial(param, temp, insuranceAccountDetailPO); recessionFund(param, temp, insuranceAccountDetailPO); @@ -198,7 +209,7 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic - private void recessionBaseBuild(RecessionParam param, InsuranceAccountDetailPO temp, InsuranceAccountDetailPO insuranceAccountDetailPO) { + private void recessionBaseBuild(RecessionParam param, InsuranceAccountDetailPO temp, InsuranceAccountDetailPO insuranceAccountDetailPO, DataCollectionEmployee employee) { InsuranceAccountBatchPO insuranceAccountBatchPO = getInsuranceAccountBatchMapper().getByBillMonth(param.getBillMonth(), Long.valueOf(param.getPaymentOrganization())); temp.setPaymentStatus(PaymentStatusEnum.RECESSION.getValue()); // temp.setId(IdGenerator.generate()); @@ -209,6 +220,17 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic temp.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); temp.setTenantKey(insuranceAccountDetailPO.getTenantKey()); temp.setEmployeeId(insuranceAccountDetailPO.getEmployeeId()); + temp.setSubcompanyName(employee.getSubcompanyName()); + temp.setSubcompanyId(employee.getSubcompanyid()); + temp.setDepartmentName(employee.getDepartmentName()); + temp.setDepartmentId(employee.getDepartmentId()); + temp.setJobtitleName(employee.getJobtitleName()); + temp.setJobtitleId(employee.getJobtitleId()); + temp.setJobcall(employee.getJobcall()); + temp.setJobcallId(employee.getJobcallId()); + temp.setStatus(employee.getStatus()); + temp.setBillMonth(param.getBillMonth()); + temp.setBillStatus(BillStatusEnum.NOT_ARCHIVED.getValue()); temp.setBillMonth(param.getBillMonth()); temp.setBillStatus(BillStatusEnum.NOT_ARCHIVED.getValue()); temp.setSupplementaryMonth(insuranceAccountDetailPO.getBillMonth()); diff --git a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java index 270fbb143..64758d625 100644 --- a/src/com/engine/salary/service/impl/SIRepairServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIRepairServiceImpl.java @@ -223,13 +223,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { List> resultList = new ArrayList<>(); if (projects.contains(ProjectTypeEnum.ALL.getValue())) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialComMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -257,13 +262,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { }); } - if (fundSchemePO != null && StringUtils.isNotBlank(fundSchemePO.getFundPaymentBaseString())) { + if (fundSchemePO != null && (StringUtils.isNotBlank(fundSchemePO.getFundPaymentBaseString()) || StringUtils.isNotBlank(fundSchemePO.getFundPaymentComBaseString()))) { Map fundMap = JSON.parseObject(fundSchemePO.getFundPaymentBaseString(), new HashMap().getClass()); + Map fundComMap = JSON.parseObject(fundSchemePO.getFundPaymentComBaseString(), new HashMap().getClass()); + List fundIds = new ArrayList<>(); + fundIds.addAll(fundMap == null ? Collections.emptyList() : fundMap.keySet()); + fundIds.addAll(fundComMap == null ? Collections.emptyList() : fundComMap.keySet()); + fundIds = fundIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(fundSchemePO.getFundSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(fundSchemePO.getFundSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - fundMap.forEach((k, v) -> { + fundIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -291,13 +301,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { }); } - if (otherSchemePO != null && StringUtils.isNotBlank(otherSchemePO.getOtherPaymentBaseString())) { + if (otherSchemePO != null && (StringUtils.isNotBlank(otherSchemePO.getOtherPaymentBaseString()) || StringUtils.isNotBlank(otherSchemePO.getOtherPaymentComBaseString()))) { Map otherMap = JSON.parseObject(otherSchemePO.getOtherPaymentBaseString(), new HashMap().getClass()); + Map otherComMap = JSON.parseObject(otherSchemePO.getOtherPaymentComBaseString(), new HashMap().getClass()); + List otherIds = new ArrayList<>(); + otherIds.addAll(otherMap == null ? Collections.emptyList() : otherMap.keySet()); + otherIds.addAll(otherComMap == null ? Collections.emptyList() : otherComMap.keySet()); + otherIds = otherIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(otherSchemePO.getOtherSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(otherSchemePO.getOtherSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - otherMap.forEach((k, v) -> { + otherIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -327,13 +342,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { return resultList; } if (projects.contains(ProjectTypeEnum.SOCIAL.getValue())) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialComMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -365,15 +385,22 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { if ((!projects.contains(ProjectTypeEnum.SOCIAL.getValue())) && (projects.contains(ProjectTypeEnum.ENDOWMENT_INSURANCE.getValue())) && (projects.contains(ProjectTypeEnum.MEDICAL_INSURANCE.getValue()))) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); socialMap = socialMap.entrySet().stream().filter(e -> "9001".equals(e.getKey()) || "9002".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey()) || "9002".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach( k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -405,15 +432,23 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { if ((!projects.contains(ProjectTypeEnum.SOCIAL.getValue())) && (projects.contains(ProjectTypeEnum.ENDOWMENT_INSURANCE.getValue())) && (!projects.contains(ProjectTypeEnum.MEDICAL_INSURANCE.getValue()))) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); socialMap = socialMap.entrySet().stream().filter(e -> "9001".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + socialComMap = socialComMap.entrySet().stream().filter(e -> "9001".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() :socialComMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -445,15 +480,22 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { if ((!projects.contains(ProjectTypeEnum.SOCIAL.getValue())) && (!projects.contains(ProjectTypeEnum.ENDOWMENT_INSURANCE.getValue())) && (projects.contains(ProjectTypeEnum.MEDICAL_INSURANCE.getValue()))) { - if (socialSchemePO != null && StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString())) { + if (socialSchemePO != null && (StringUtils.isNotBlank(socialSchemePO.getSocialPaymentBaseString()) || StringUtils.isNotBlank(socialSchemePO.getSocialPaymentComBaseString()))) { Map socialMap = JSON.parseObject(socialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); socialMap = socialMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + Map socialComMap = JSON.parseObject(socialSchemePO.getSocialPaymentComBaseString(), new HashMap().getClass()); + socialComMap = socialComMap.entrySet().stream().filter(e -> "9002".equals(e.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + List socialIds = new ArrayList<>(); + socialIds.addAll(socialMap == null ? Collections.emptyList() : socialMap.keySet()); + socialIds.addAll(socialComMap == null ? Collections.emptyList() : socialComMap.keySet()); + socialIds = socialIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(socialSchemePO.getSocialSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - socialMap.forEach((k, v) -> { + socialIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -483,14 +525,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { } } if (projects.contains(ProjectTypeEnum.FUND.getValue())) { - if (fundSchemePO != null && StringUtils.isNotBlank(fundSchemePO.getFundPaymentBaseString())) { + if (fundSchemePO != null && (StringUtils.isNotBlank(fundSchemePO.getFundPaymentBaseString()) || StringUtils.isNotBlank(fundSchemePO.getFundPaymentComBaseString()))) { Map fundMap = JSON.parseObject(fundSchemePO.getFundPaymentBaseString(), new HashMap().getClass()); + Map fundComMap = JSON.parseObject(fundSchemePO.getFundPaymentComBaseString(), new HashMap().getClass()); + List fundIds = new ArrayList<>(); + fundIds.addAll(fundMap == null ? Collections.emptyList() : fundMap.keySet()); + fundIds.addAll(fundComMap == null ? Collections.emptyList() : fundComMap.keySet()); + fundIds = fundIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(fundSchemePO.getFundSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(fundSchemePO.getFundSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - - fundMap.forEach((k, v) -> { + fundIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { @@ -520,14 +566,18 @@ public class SIRepairServiceImpl extends Service implements SIRepairService { } } if (projects.contains(ProjectTypeEnum.OTHER.getValue())) { - if (otherSchemePO != null && StringUtils.isNotBlank(otherSchemePO.getOtherPaymentBaseString())) { + if (otherSchemePO != null && (StringUtils.isNotBlank(otherSchemePO.getOtherPaymentBaseString()) || StringUtils.isNotBlank(otherSchemePO.getOtherPaymentComBaseString()))) { Map otherMap = JSON.parseObject(otherSchemePO.getOtherPaymentBaseString(), new HashMap().getClass()); + Map otherComMap = JSON.parseObject(otherSchemePO.getOtherPaymentComBaseString(), new HashMap().getClass()); + List otherIds = new ArrayList<>(); + otherIds.addAll(otherMap == null ? Collections.emptyList() : otherMap.keySet()); + otherIds.addAll(otherComMap == null ? Collections.emptyList() : otherComMap.keySet()); + otherIds = otherIds.stream().distinct().collect(Collectors.toList()); //查询该福利方案下开启缴纳的福利项 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(otherSchemePO.getOtherSchemeId()); List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(otherSchemePO.getOtherSchemeId())); Map schemeValidNumMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOS, po -> po.getInsuranceId() + "-" + po.getPaymentScope(), InsuranceSchemeDetailPO::getValidNum); - - otherMap.forEach((k, v) -> { + otherIds.forEach(k -> { String welfareTypeName = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "社保" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "公积金" : "企业年金及其它福利" ); String welfareTypeSign = welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 1 ? "social" : (welfareTypeMap.get(Long.valueOf(k)) != null && welfareTypeMap.get(Long.valueOf(k)) == 2 ? "fund" : "other" ); if (insuranceIdAndScopeList.contains(k + "-" + PaymentScopeEnum.SCOPE_COMPANY.getValue())) { diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 699094813..504142ea9 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -742,6 +742,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List socialByEmployeeId = getSIArchivesService(user).getSocialByEmployeeIds(new ArrayList() {{ add(item.getEmployeeId()); }}); + // 过滤义务人 + socialByEmployeeId = socialByEmployeeId.stream().filter(s -> s.getPaymentOrganization().equals(item.getPaymentOrganization())).collect(Collectors.toList()); encryptUtil.decryptList(socialByEmployeeId, InsuranceArchivesSocialSchemePO.class); InsuranceArchivesSocialSchemePO socialItem = null; if (socialByEmployeeId.size() > 0) { @@ -752,6 +754,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List fundByEmployeeId = getSIArchivesService(user).getFundByEmployeeIds(new ArrayList() {{ add(item.getEmployeeId()); }}); + // 过滤义务人 + fundByEmployeeId = fundByEmployeeId.stream().filter(f -> f.getPaymentOrganization().equals(item.getPaymentOrganization())).collect(Collectors.toList()); encryptUtil.decryptList(fundByEmployeeId, InsuranceArchivesFundSchemePO.class); if (fundByEmployeeId.size() > 0) { @@ -762,6 +766,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { List otherByEmployeeId = getSIArchivesService(user).getOtherByEmployeeIds(new ArrayList() {{ add(item.getEmployeeId()); }}); + otherByEmployeeId = otherByEmployeeId.stream().filter(o -> o.getPaymentOrganization().equals(item.getPaymentOrganization())).collect(Collectors.toList()); encryptUtil.decryptList(otherByEmployeeId, InsuranceArchivesOtherSchemePO.class); if (otherByEmployeeId.size() > 0) { otherItem = otherByEmployeeId.get(0); diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index d17d9e95d..beae39aff 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -325,7 +325,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc //是否锁定 if (lockItems != null && lockItems.contains(salaryItemId)) { - resultValue = empItemValueMap.get(salaryAcctEmployeePOId + "_" + salaryItemId); + resultValue = empItemValueMap.getOrDefault(salaryAcctEmployeePOId + "_" + salaryItemId, StringUtils.EMPTY); } // 将已经计算过的薪资项目的值转换成公式变量的值添加到集合中 String key = SalaryFormulaReferenceEnum.SALARY_ITEM.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + salaryItemPO.getCode(); diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 6def18c61..bf037b2e9 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -166,6 +166,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + @Override public XSSFWorkbook exportSalaryAcctEmployee(SalaryAcctEmployeeQueryParam queryParam) { ValidUtil.doValidator(queryParam); @@ -1055,6 +1059,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); } stopWatch.stop(); + + // 校验是否可以编辑 + boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO); + if (StringUtils.equals("importSalaryAcctResult", importType) && !recordIsCanEdit) { + throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程"); + } // 薪资账套下的薪资项目副本 stopWatch.start("薪资账套下的薪资项目副本"); List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 069f30251..a96490b81 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -195,6 +195,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe private VariableItemService getVariableItemService(User user) { return ServiceUtil.getService(VariableItemServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + private SalaryCheckResultService salaryCheckResultService; @@ -644,6 +648,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe }); getSalaryAcctEmployeeService(user).updateIgnoreNull(salaryAcctEmployeePO); + // 校验是否可以编辑 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctEmployeePO.getSalaryAcctRecordId()); + boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO); + if (!recordIsCanEdit) { + throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程"); + } // 查询原来的薪资核算结果 List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpId(saveParam.getSalaryAcctEmpId()).build()); // 解密 diff --git a/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java new file mode 100644 index 000000000..648a08b79 --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryApprovalRuleServiceImpl.java @@ -0,0 +1,248 @@ +package com.engine.salary.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.bo.SalaryApprovalBO; +import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; +import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam; +import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam; +import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; +import com.engine.salary.entity.salarysob.po.SalarySobItemPO; +import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper; +import com.engine.salary.mapper.salarysob.SalaryApprovalRuleMapper; +import com.engine.salary.service.*; +import com.engine.salary.sys.constant.SalarySysConstant; +import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.valid.ValidUtil; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.hrm.User; + +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName SalaryApprovalRuleServiceImpl + * @date 2024/04/23 17:35 + * @description + */ +public class SalaryApprovalRuleServiceImpl extends Service implements SalaryApprovalRuleService { + + private SalaryApprovalRuleMapper getSalaryApprovalRuleMapper() { + return MapperProxyFactory.getProxy(SalaryApprovalRuleMapper.class); + } + + private SalaryAcctRecordMapper getSalaryAcctRecordMapper() { + return MapperProxyFactory.getProxy(SalaryAcctRecordMapper.class); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + private SalarySobItemService getSalarySobItemService(User user) { + return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + } + + private SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + + @Override + public List listAll() { + return getSalaryApprovalRuleMapper().listAll(); + } + + @Override + public SalaryApprovalRulePO getById(Long id) { + return getSalaryApprovalRuleMapper().getById(id); + } + + @Override + public int insertIgnoreNull(SalaryApprovalRulePO po) { + return getSalaryApprovalRuleMapper().insertIgnoreNull(po); + } + + @Override + public int update(SalaryApprovalRulePO salaryApprovalRule) { + return getSalaryApprovalRuleMapper().update(salaryApprovalRule); + } + + @Override + public int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule) { + return getSalaryApprovalRuleMapper().updateIgnoreNull(salaryApprovalRule); + } + + @Override + public int delete(SalaryApprovalRulePO salaryApprovalRule) { + return getSalaryApprovalRuleMapper().delete(salaryApprovalRule); + } + + @Override + public SalaryApprovalRulePO getBySalarySobId(Long salarySobId) { + if(salarySobId == null) { + return null; + } + List salaryApprovalRulePOS = getSalaryApprovalRuleMapper().listSome(SalaryApprovalRulePO.builder().salarySobId(salarySobId).build()); + if (CollectionUtils.isNotEmpty(salaryApprovalRulePOS) && salaryApprovalRulePOS.size() == 1) { + return salaryApprovalRulePOS.get(0); + } + return null; + } + + @Override + public void deleteBySalarySobId(Long salarySobId) { + if (salarySobId == null) { + return; + } + getSalaryApprovalRuleMapper().deleteBySalarySobId(salarySobId); + } + + @Override + public SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam) { + // 查询薪资审批设置 + SalaryApprovalRulePO approvalRulePO = getBySalarySobId(queryParam.getSalarySobId()); + if (approvalRulePO == null) { + // 没有审批设置信息,创建默认设置信息 + Date now = new Date(); + approvalRulePO = SalaryApprovalRulePO.builder() + .id(IdGenerator.generate()) + .salarySobId(queryParam.getSalarySobId()) + .openApproval(0) + .createTime(now) + .updateTime(now) + .creator(Long.valueOf(user.getUID())) + .deleteType(0) + .build(); + // 获取账套的薪资项目设置信息 + SalarySobItemAggregateDTO aggregateBySalarySobId = getSalarySobItemService(user).getAggregateBySalarySobId(queryParam.getSalarySobId()); + String setting = SalaryApprovalBO.sobItemAggregate2approvalGroupSetting(aggregateBySalarySobId); + approvalRulePO.setApprovalGroupSetting(setting); + insertIgnoreNull(approvalRulePO); + } + + List salaryItemList = getSalaryItemService(user).listAll(); + return SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList); + } + + @Override + public void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO) { + SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryApprovalDTO.getSalarySobId()); + if (salarySobPO == null) { + throw new RuntimeException("薪资账套不存在"); + } + // 删除原来的 + deleteBySalarySobId(salaryApprovalDTO.getSalarySobId()); + // 保存最新的 + Date now = new Date(); + SalaryApprovalRulePO po = SalaryApprovalRulePO.builder() + .id(IdGenerator.generate()) + .salarySobId(salaryApprovalDTO.getSalarySobId()) + .openApproval(salaryApprovalDTO.getIsOpenApproval() ? 1 : 0) + .approvalGroupSetting(JsonUtil.toJsonString(salaryApprovalDTO.getApprovalItemGroup())) + .workflowUrl(salaryApprovalDTO.getApprovalWorkflowUrl()) + .createTime(now) + .updateTime(now) + .creator(Long.valueOf(user.getUID())) + .deleteType(0) + .build(); + insertIgnoreNull(po); + } + + @Override + public List listSalaryApprovalItem(SalaryItemSearchParam queryParam) { + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(queryParam.getSalarySobId()); + List salaryItemIds = salarySobItemPOS.stream() + .filter(po -> !queryParam.getExcludeIds().contains(po.getSalaryItemId())) + .map(SalarySobItemPO::getSalaryItemId) + .collect(Collectors.toList()); + List salaryItemPOList = getSalaryItemService(user).listByIds(salaryItemIds); + return salaryItemPOList; + } + + @Override + public SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId) { + SalaryAcctRecordPO acctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if (acctRecordPO == null) { + throw new SalaryRunTimeException("薪资核算记录不存在或已被删除"); + } + SalaryApprovalRulePO approvalRulePO = getBySalarySobId(acctRecordPO.getSalarySobId()); + + List salaryItemList = getSalaryItemService(user).listAll(); + SalaryApprovalDTO salaryApprovalDTO = SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList); + // 查询是否可以核算、编辑(默认开启) + salaryApprovalDTO.setCanEdit(getRecordIsCanEdit(acctRecordPO)); + return salaryApprovalDTO; + } + + public boolean getRecordIsCanEdit(SalaryAcctRecordPO acctRecordPO) { + // 审批总开关,默认关闭 + SalarySysConfPO approvalStatus = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_APPROVAL_STATUS); + if (approvalStatus == null || approvalStatus.getConfValue().equals("0")) { + return true; + } + // 查询是否可以核算、编辑(默认开启) + SalarySysConfPO canEdit = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_EDIT_RESULT_STATUS); + if (canEdit == null || canEdit.getConfValue().equals("1")) { + return true; + } else { + // 发起审批后不能核损,判断流程id是否存在 + if (StringUtils.isBlank(acctRecordPO.getApprovalId())) { + return true; + } else { + RecordSet rs = new RecordSet(); + rs.execute("SELECT * FROM workflow_requestbase where REQUESTID =" + acctRecordPO.getApprovalId()); + return !rs.next(); + } + } + } + + @Override + public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + // 获取核算记录信息 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(saveParam.getSalaryAcctRecordId()); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException("薪资核素记录不存在或已被删除"); + } + salaryAcctRecordPO.setApprovalId(saveParam.getRequestId()); + getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO); + } + + @Override + public void deleteBySalarySobIds(Collection ids) { + ids.stream().forEach(this::deleteBySalarySobId); + } + + @Override + public List listBySalarySobIds(Collection salarySobIds) { + if (CollectionUtils.isEmpty(salarySobIds)) { + return Collections.emptyList(); + } + return getSalaryApprovalRuleMapper().listSome(SalaryApprovalRulePO.builder().salarySobIds(salarySobIds).build()); + } +} diff --git a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java index acc81e362..1ee9bc1d6 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java @@ -546,7 +546,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch // 构建导入需要的数据 SalaryArchiveImportHandleParam importHandleParam = buildImportHandleParam(SalaryArchiveImportHandleParam.builder().isProcess(true).listType(param.getListType()).importType(param.getImportType()).description(param.getDescription()).build()); - + importHandleParam.setKeepStatus(param.getKeepStatus()); int total = 0; //excel数据 diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index 01b94c051..431b56170 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -7,6 +7,7 @@ import com.engine.core.impl.Service; import com.engine.salary.biz.SalaryArchiveBiz; import com.engine.salary.biz.SalaryArchiveItemBiz; import com.engine.salary.biz.SalaryItemBiz; +import com.engine.salary.common.LocalDateRange; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -807,4 +808,16 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi return result; } + @Override + public List listByArchiveIdAndEffectiveTime(List salaryArchiveIds, LocalDateRange dateRange) { + if (CollectionUtils.isEmpty(salaryArchiveIds)) { + return Collections.emptyList(); + } + List resultList = new ArrayList<>(); + List> partition = Lists.partition(salaryArchiveIds, 1000); + partition.forEach(part -> { + resultList.addAll(getSalaryArchiveItemMapper().listByArchiveIdAndEffectiveTime(part, dateRange)); + }); + return resultList; + } } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 5165b6c50..538160d20 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -76,6 +76,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Pattern; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.OPEN_SECONDARY_ACCOUNT; import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX; /** @@ -132,6 +133,9 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe return ServiceUtil.getService(SalarySobServiceImpl.class, user); } + //主次账号是否开启 + boolean openSecondaryAccount = "1".equals(getSalarySysConfService(user).getValueByCode(OPEN_SECONDARY_ACCOUNT)); + @Override public SalaryArchivePO getById(Long salaryArchiveId) { return salaryArchiveMapper.getById(salaryArchiveId); @@ -185,6 +189,19 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe } List list = getSalaryArchiveMapper().list(queryParam); + + // 过滤调薪日期 + if (queryParam.getAdjustSalaryStartDate() != null || queryParam.getAdjustSalaryEndDate() != null) { + List salaryArchiveIds = list.stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList()); + LocalDateRange dateRange = LocalDateRange.builder().fromDate(queryParam.getAdjustSalaryStartDate()).endDate(queryParam.getAdjustSalaryEndDate()).build(); + List salaryArchiveItemPOList = getSalaryArchiveItemService(user).listByArchiveIdAndEffectiveTime(salaryArchiveIds, dateRange); + List archiveIds = salaryArchiveItemPOList.stream().map(SalaryArchiveItemPO::getSalaryArchiveId).distinct().collect(Collectors.toList()); + list = list.stream().filter(dto -> archiveIds.contains(dto.getId())).collect(Collectors.toList()); + } + + if (!openSecondaryAccount) { + list = list.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } return SalaryI18nUtil.i18nList(list); } @@ -489,6 +506,9 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe map.put("id", e.getId()); map.put("username", e.getUsername()); map.put("employeeId", e.getEmployeeId()); + if (openSecondaryAccount) { + map.put("accountType", e.getAccountType() == null || e.getAccountType() == 0 ? "主账号" : "次账号"); + } // Optional> optionalTaxAgent = taxAgentData.stream().filter(f -> f.get("salaryArchiveId").toString().equals(e.getId().toString())).findFirst(); TaxAgentPO taxAgentPO = longTaxAgentPOMap.get(e.getTaxAgentId()); @@ -790,7 +810,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe LoggerContext loggerContext = new LoggerContext(); loggerContext.setUser(user); loggerContext.setTargetId(String.valueOf(e.getId())); - loggerContext.setTargetName( Optional.ofNullable(taxAgentMap.get(e.getTaxAgentId())).orElse(StringUtils.EMPTY) + bar + Optional.ofNullable(empMap.get(e.getEmployeeId())).orElse(StringUtils.EMPTY) ); + loggerContext.setTargetName(Optional.ofNullable(taxAgentMap.get(e.getTaxAgentId())).orElse(StringUtils.EMPTY) + bar + Optional.ofNullable(empMap.get(e.getEmployeeId())).orElse(StringUtils.EMPTY)); loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); loggerContext.setOperateTypeName(operatedesc); loggerContext.setOperatedesc(operatedesc); diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index de9d908ac..6d6637dc5 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -23,12 +23,13 @@ import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.mapper.datacollection.EmployMapper; import com.engine.salary.mapper.hrm.ExpandFieldSettingsMapper; -import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.service.ExtEmpService; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.SalarySobExtRangeService; import com.engine.salary.service.SalarySobRangeService; import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.IdGenerator; @@ -44,6 +45,8 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.OPEN_SECONDARY_ACCOUNT; + /** * 人员信息 *

Copyright: Copyright (c) 2022

@@ -69,8 +72,8 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } - private SalarySysConfMapper getSalarySysConfMapper() { - return SqlProxyHandle.getProxy(SalarySysConfMapper.class); + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } @@ -90,6 +93,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee boolean openExtEmp = true; + //主次账号是否开启 + boolean openSecondaryAccount = "1".equals(getSalarySysConfService(user).getValueByCode(OPEN_SECONDARY_ACCOUNT)); + @Override public List listAll(UseEmployeeTypeEnum empType) { List result = new ArrayList<>(); @@ -103,6 +109,11 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee result.addAll(employBiz.listAll()); result.addAll(getExtEmpService(user).listEmployee()); } + + if (!openSecondaryAccount) { + result = result.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } + SalaryI18nUtil.i18nList(result); return result; } @@ -113,6 +124,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee if (openExtEmp) { result.addAll(getExtEmpService(user).listAllForReport()); } + if (!openSecondaryAccount) { + result = result.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } SalaryI18nUtil.i18nList(result); return result; } @@ -159,6 +173,10 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee includeSalaryEmployees.addAll(extEmps); } + + if (!openSecondaryAccount) { + includeSalaryEmployees = includeSalaryEmployees.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } SalaryI18nUtil.i18nList(includeSalaryEmployees); return includeSalaryEmployees; } @@ -172,6 +190,11 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee if (openExtEmp) { employeeList.addAll(getExtEmpService(user).getEmployeeByIds(ids)); } + + if (!openSecondaryAccount) { + employeeList = employeeList.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } + SalaryI18nUtil.i18nList(employeeList); return employeeList; } @@ -186,6 +209,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee result.addAll(getExtEmpService(user).getEmployeeByIds(ids)); } result.addAll(employBiz.getEmployeeByIdsAll(ids)); + if (!openSecondaryAccount) { + result = result.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } SalaryI18nUtil.i18nList(result); return result; } @@ -215,6 +241,10 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee employeeList.addAll(getExtEmpService(user).getEmployeeByIds(longs)); } } + + if (!openSecondaryAccount) { + employeeList = employeeList.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } return SalaryI18nUtil.i18nList(employeeList); } @@ -232,6 +262,10 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee employeeList.addAll(getExtEmpService(user).getEmployeeByIds(longs)); } } + + if (!openSecondaryAccount) { + employeeList = employeeList.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } return SalaryI18nUtil.i18nList(employeeList); } @@ -246,7 +280,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee employeeSameIds = employeeSameIds.stream() .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) .collect(Collectors.toList()); - + if (!openSecondaryAccount) { + employeeSameIds = employeeSameIds.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } return SalaryI18nUtil.i18nList(employeeSameIds); } @@ -272,7 +308,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee employees = employeeList.stream().filter(e -> (StringUtils.isBlank(idNo) || Objects.equals(e.getIdNo(), idNo))) .collect(Collectors.toList()); } - + if (!openSecondaryAccount) { + employees = employees.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } return SalaryI18nUtil.i18nList(employees); } @@ -285,7 +323,7 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee */ @Override public String empValidType() { - SalarySysConfPO salarySysConfPO = getSalarySysConfMapper().getOneByCode("matchEmployeeMode"); + SalarySysConfPO salarySysConfPO = getSalarySysConfService(user).getOneByCode("matchEmployeeMode"); return (salarySysConfPO != null && salarySysConfPO.getConfValue() != null && !"".equals(salarySysConfPO.getConfValue())) ? salarySysConfPO.getConfValue() : "0"; } @@ -346,6 +384,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee if (openExtEmp) { result.addAll(getExtEmpService(user).listEmployee()); } + if (!openSecondaryAccount) { + result = result.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } return SalaryI18nUtil.i18nList(result); } @@ -383,7 +424,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee // 从hrmresource和hrmresourcevirtual可能获取到重复人员数据,需要根据人员id去重 result = result.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparingLong(DataCollectionEmployee::getEmployeeId))), ArrayList::new)); - + if (!openSecondaryAccount) { + result = result.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } return result; } @@ -428,6 +471,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee .forEach(e -> e.setExtendData(extendData)); } } + if (!openSecondaryAccount) { + employees = employees.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } return SalaryI18nUtil.i18nList(employees); } @@ -531,7 +577,11 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee if (CollectionUtils.isEmpty(virtualDepartmentIds)) { return Collections.emptyList(); } - return getEmployMapper().listVirtualEmpByVirtualDepIds(virtualDepartmentIds); + List employees = getEmployMapper().listVirtualEmpByVirtualDepIds(virtualDepartmentIds); + if (!openSecondaryAccount) { + employees = employees.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } + return employees; } @Override @@ -549,6 +599,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee if (openExtEmp) { employeeList.addAll(getExtEmpService(user).listBySubCompanyOrDepartment(subCompanyIds, departmentIds)); } + if (!openSecondaryAccount) { + employeeList = employeeList.stream().filter(e -> e.getAccountType() == null || e.getAccountType() == 0).collect(Collectors.toList()); + } return SalaryI18nUtil.i18nList(employeeList); } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 066e89b8d..6bce71730 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -40,6 +40,7 @@ import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.AccountTypeEnum; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; @@ -914,7 +915,29 @@ public class SalarySendServiceImpl extends Service implements SalarySendService } if (CollectionUtils.isNotEmpty(employeeInformation.getItems())) { //获取员工信息的字段名和中文描述的map关系 - SalaryFormulaEmployeeDTO salaryFormulaEmployeeDTO = SalaryFormulaEmployeeDTO.builder().employeeId(simpleEmployee.getEmployeeId()).birthday(simpleEmployee.getBirthday()).departmentId(simpleEmployee.getDepartmentId()).departmentName(simpleEmployee.getDepartmentName()).subcompanyName(simpleEmployee.getSubcompanyName()).subcompanyId(simpleEmployee.getSubcompanyid()).email(StringUtils.isEmpty(simpleEmployee.getEmail()) ? "" : simpleEmployee.getEmail()).jobcall(simpleEmployee.getJobcall()).jobcallId(simpleEmployee.getJobcallId()).companystartdate(simpleEmployee.getCompanystartdate()).sex("0".equals(simpleEmployee.getSex()) ? "男" : "女").mobile(StringUtils.isEmpty(simpleEmployee.getMobile()) ? "" : simpleEmployee.getMobile()).jobtitleName(simpleEmployee.getJobtitleName()).jobtitleId(simpleEmployee.getJobtitleId()).status(simpleEmployee.getStatus() == null ? "" : simpleEmployee.getStatus()).statusName(simpleEmployee.getStatus() == null ? "" : UserStatusEnum.parseByValue(new Integer(Util.null2s(simpleEmployee.getStatus(), "1"))).getDefaultLabel()).telephone(StringUtils.isEmpty(simpleEmployee.getTelephone()) ? "" : simpleEmployee.getTelephone()).username(StringUtils.isEmpty(simpleEmployee.getUsername()) ? "" : simpleEmployee.getUsername()).workcode(StringUtils.isEmpty(simpleEmployee.getWorkcode()) ? "" : simpleEmployee.getWorkcode()).idNo(Util.null2String(simpleEmployee.getIdNo())).taxAgentName(taxAgentName).build(); + SalaryFormulaEmployeeDTO salaryFormulaEmployeeDTO = SalaryFormulaEmployeeDTO.builder().employeeId(simpleEmployee.getEmployeeId()) + .birthday(simpleEmployee.getBirthday()) + .departmentId(simpleEmployee.getDepartmentId()) + .departmentName(simpleEmployee.getDepartmentName()) + .subcompanyId(simpleEmployee.getSubcompanyid()) + .subcompanyName(simpleEmployee.getSubcompanyName()) + .email(StringUtils.isEmpty(simpleEmployee.getEmail()) ? "" : simpleEmployee.getEmail()) + .jobcall(simpleEmployee.getJobcall()) + .jobcallId(simpleEmployee.getJobcallId()) + .companystartdate(simpleEmployee.getCompanystartdate()) + .sex("0".equals(simpleEmployee.getSex()) ? "男" : "女") + .mobile(StringUtils.isEmpty(simpleEmployee.getMobile()) ? "" : simpleEmployee.getMobile()) + .jobtitleName(simpleEmployee.getJobtitleName()) + .jobtitleId(simpleEmployee.getJobtitleId()) + .status(simpleEmployee.getStatus() == null ? "" : simpleEmployee.getStatus()) + .statusName(simpleEmployee.getStatus() == null ? "" : UserStatusEnum.parseByValue(new Integer(Util.null2s(simpleEmployee.getStatus(),"1"))).getDefaultLabel()) + .accountTypeName(simpleEmployee.getAccountType() == null ? "" : AccountTypeEnum.parseByValue(simpleEmployee.getAccountType()).getDefaultLabel()) + .telephone(StringUtils.isEmpty(simpleEmployee.getTelephone()) ? "" : simpleEmployee.getTelephone()) + .username(StringUtils.isEmpty(simpleEmployee.getUsername()) ? "" : simpleEmployee.getUsername()) + .workcode(StringUtils.isEmpty(simpleEmployee.getWorkcode()) ? "" : simpleEmployee.getWorkcode()) + .idNo(Util.null2String(simpleEmployee.getIdNo())) + .taxAgentName(taxAgentName) + .build(); List items = employeeInformation.getItems(); Set> entries = employeeField.entrySet(); for (SalaryTemplateSalaryItemListDTO e : items) { @@ -1441,6 +1464,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService @Override public XSSFWorkbook exportInfoList(SalarySendInfoQueryParam queryParam) { + // 校验 + SalarySendInfoQueryParam.checkParam(queryParam); + // 1.工作簿名称 String sheetName = SalaryI18nUtil.getI18nLabel(100528, "工资单发放信息"); List header = new ArrayList<>(); @@ -1450,14 +1476,24 @@ public class SalarySendServiceImpl extends Service implements SalarySendService header.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); header.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); header.add(SalaryI18nUtil.getI18nLabel(86317, "发送状态")); - + SalarySendPO salarySendPO = getById(queryParam.getSalarySendId()); + if (salarySendPO == null) { + throw new SalaryRunTimeException("工资单不存在"); + } + List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId())); + if (CollectionUtils.isEmpty(salaryTemplates)) { + throw new SalaryRunTimeException("请先设置工资单模板"); + } + Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus(); + Integer feedbackStatus = salaryTemplates.get(0).getFeedbackStatus(); + if ((ackFeedbackStatus != null && NumberUtils.compare(ackFeedbackStatus, 1) == 0) + || (feedbackStatus != null && NumberUtils.compare(feedbackStatus, 1) == 0)) { + header.add(SalaryI18nUtil.getI18nLabel(0, "查看状态")); + header.add(SalaryI18nUtil.getI18nLabel(0, "确认状态")); + } List> rows = new ArrayList<>(); // 2.表头 rows.add(header); - - // 校验 - SalarySendInfoQueryParam.checkParam(queryParam); - // 获取行数据 //排序配置 OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); @@ -1468,7 +1504,10 @@ public class SalarySendServiceImpl extends Service implements SalarySendService list.forEach(e -> { // 发放状态 e.setSendStatus(SalarySendStatusEnum.getDefaultLabelByValue(Integer.valueOf(e.getSendStatus()))); - + // 查看状态 + e.setBillReadStatus(NumberUtils.isCreatable(e.getBillReadStatus()) ? BillReadStatusEnum.getDefaultLabelByValue(Integer.valueOf(e.getBillReadStatus())) : ""); + // 确认状态 + e.setBillConfirmStatus(NumberUtils.isCreatable(e.getBillConfirmStatus()) ? BillConfimStatusEnum.getDefaultLabelByValue(Integer.valueOf(e.getBillConfirmStatus())) : ""); //外部人员 if (Objects.equals(e.getEmployeeType(), 1)) { List employees = idEmpMap.getOrDefault(e.getEmployeeId(), new ArrayList<>()); @@ -1492,6 +1531,11 @@ public class SalarySendServiceImpl extends Service implements SalarySendService row.add(dto.getMobile()); row.add(dto.getJobNum()); row.add(dto.getSendStatus()); + if ((ackFeedbackStatus != null && NumberUtils.compare(ackFeedbackStatus, 1) == 0) + || (feedbackStatus != null && NumberUtils.compare(feedbackStatus, 1) == 0)) { + row.add(dto.getBillReadStatus()); + row.add(dto.getBillConfirmStatus()); + } rows.add(row); } @@ -1920,7 +1964,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService map.put("salaryAcctResult", salaryAcctResultS); // 工资单确认按钮 - if (NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(), 1) == 0) { + if (salaryTemplate.getAckFeedbackStatus() != null && NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(), 1) == 0) { // 开启了工资单确认 Integer ackStatus = salarySendInfo.getBillConfirmStatus(); if (ackStatus == null || ackStatus != BillConfimStatusEnum.CONFIRMED.getValue()) { @@ -1935,7 +1979,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // 工资单反馈 - if (NumberUtils.compare(salaryTemplate.getFeedbackStatus(), 1) == 0) { + if (salaryTemplate.getFeedbackStatus() != null && NumberUtils.compare(salaryTemplate.getFeedbackStatus(), 1) == 0) { // 开启了工资单反馈按钮 Integer confirmStatus = salarySendInfo.getBillConfirmStatus(); map.put("showFeedback", "1"); diff --git a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java index f1ff59e93..ee9066254 100644 --- a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java @@ -160,6 +160,10 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + @Override public SalarySobPO getById(Long id) { return salarySobMapper.getById(id); @@ -661,7 +665,9 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { getSalarySobBackItemService(user).deleteBySalarySobIds(ids); // 删除薪资账套的校验规则 getSalarySobCheckRuleService(user).deleteBySalarySobIds(ids); - // 记录日志 + // 删除薪资审批规则 + getSalaryApprovalRuleService(user).deleteBySalarySobIds(ids); + // 记录日志 salarySobPOS.forEach(salarySobPO -> { LoggerContext loggerContext = new LoggerContext<>(); loggerContext.setUser(user); diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java index 9f52b7ea8..485f6e24e 100644 --- a/src/com/engine/salary/service/impl/SettingServiceImpl.java +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -1,25 +1,39 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.cloudstore.eccom.constant.WeaBoolAttr; +import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; -import com.engine.salary.entity.setting.param.PageListSettingQueryParam; -import com.engine.salary.entity.setting.param.PageListSettingSaveParam; +import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.param.*; +import com.engine.salary.entity.setting.po.PageLinkPO; import com.engine.salary.entity.setting.po.PageListSettingPO; +import com.engine.salary.entity.setting.po.PageListTemplatePO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.setting.PageLinkMapper; import com.engine.salary.mapper.setting.PageListSettingMapper; +import com.engine.salary.mapper.setting.PageListTemplateMapper; +import com.engine.salary.report.common.constant.SalaryConstant; import com.engine.salary.service.SalaryItemService; -import com.engine.salary.service.SalarySobService; import com.engine.salary.service.SettingService; -import com.engine.salary.util.JsonUtil; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.valid.ValidUtil; import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY; +import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT; /** * 薪资核算 @@ -35,28 +49,37 @@ public class SettingServiceImpl extends Service implements SettingService { return MapperProxyFactory.getProxy(PageListSettingMapper.class); } - private SalarySobService getSalarySobService(User user) { - return ServiceUtil.getService(SalarySobServiceImpl.class, user); + private PageListTemplateMapper getPageListTemplateMapper() { + return MapperProxyFactory.getProxy(PageListTemplateMapper.class); + } + + private PageLinkMapper getPageLinkMapper() { + return MapperProxyFactory.getProxy(PageLinkMapper.class); } private SalaryItemService getSalaryItemService(User user) { return ServiceUtil.getService(SalaryItemServiceImpl.class, user); } + private TaxAgentService getTaxAgentService() { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + @Override public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { Date now = new Date(); PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage()); + List checked = pageListSettingSaveParam.getSetting().stream().distinct().collect(Collectors.toList()); if (pageListSettingPO != null) { - pageListSettingPO.setSetting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())); + pageListSettingPO.setSetting(checked); pageListSettingPO.setUpdateTime(now); getPageListSettingMapper().updateIgnoreNull(pageListSettingPO); } else { pageListSettingPO = PageListSettingPO.builder() .id(IdGenerator.generate()) .page(pageListSettingSaveParam.getPage()) - .setting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())) + .setting(checked) .creator((long) user.getUID()) .createTime(now) .updateTime(now) @@ -72,7 +95,7 @@ public class SettingServiceImpl extends Service implements SettingService { String page = param.getPage(); Map result = new HashMap(); PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page); - if ("salary_details_report".equals(page)) { + if (SALARY_DETAILS_REPORT.getValue().equals(page)) { List salaryItemList = getSalaryItemService(user).listAll(); salaryItemList = salaryItemList.stream() .filter(po -> { @@ -95,8 +118,8 @@ public class SettingServiceImpl extends Service implements SettingService { }) .collect(Collectors.toList()); result.put("setting", salaryItemList); - if (pageListSettingPO != null && StrUtil.isNotEmpty(pageListSettingPO.getSetting())) { - result.put("checked", JsonUtil.parseList(pageListSettingPO.getSetting(), Long.class)); + if (pageListSettingPO != null && CollUtil.isNotEmpty(pageListSettingPO.getSetting())) { + result.put("checked", pageListSettingPO.getSetting()); } else { List collect = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); result.put("checked", collect); @@ -104,4 +127,177 @@ public class SettingServiceImpl extends Service implements SettingService { } return result; } + + @Override + public PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param) { + String page = param.getPage(); + Long id = param.getId(); + if (SALARY_DETAILS_REPORT.getValue().equals(page)) { + List columns = new ArrayList<>(); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(87614, "薪资所属月"), "salaryMonth")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "taxAgent")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "账套"), "salarySob")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "姓名"), "userName")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "分部"), "subCompany")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "部门"), "department")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "岗位"), "jobTitle")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "员工状态"), "status")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "workCode")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "入职日期"), "companystartdate")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "次数"), "acctTimes").setDisplay(WeaBoolAttr.FALSE)); + if (StrUtil.isNotBlank(param.getName())) { + columns = columns.stream().filter(column -> column.getText().contains(param.getName())).collect(Collectors.toList()); + } + + List salaryItemList = getSalaryItemService(user).listAll(); + List collect = salaryItemList.stream() + .filter(po -> { + String name = param.getName(); + if (StrUtil.isNotEmpty(name)) { + return po.getName() != null && po.getName().contains(name); + } + return true; + }) + .sorted((o1, o2) -> { + if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) { + Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType(); + Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType(); + return systemType1.compareTo(systemType2); + } else { + Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex(); + Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex(); + return sortedIndex2.compareTo(sortedIndex1); + } + }) + .map(item -> new WeaTableColumn("100px", item.getName(), item.getId() + SalaryConstant.DYNAMIC_SUFFIX)) + .collect(Collectors.toList()); + + columns.addAll(collect); + + Map columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); + List checkedList = new ArrayList<>(); + if (id != null) { + PageListTemplatePO po = getPageListTemplateMapper().getById(id); + if (po != null) { + checkedList = Optional.ofNullable(po.getSetting()).orElse(new ArrayList<>()) + .stream() + .map(s -> columnMap.getOrDefault(s, new WeaTableColumn())) + .collect(Collectors.toList()); + + } + } + return PageListTemplateDTO.builder().setting(columns).checked(checkedList).build(); + } + + return PageListTemplateDTO.builder().build(); + } + + @Override + public List getPageListTemplates(PageListTemplateQueryParam param) { + + ValidUtil.doValidator(param); + + String page = param.getPage(); + + PageListTemplatePO build = PageListTemplatePO.builder().page(page).build(); + List pos = getPageListTemplateMapper().listSome(build); + + //获取当前选择的模板 + PageLinkPO link = getPageLinkMapper().getLink((long) user.getUID(), SALARY_DETAILS_REPORT.getValue()); + + Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID()); + List taxIds = SalaryEntityUtil.properties(taxAgentPOS, po -> po.getId().toString(), Collectors.toList()); + pos = pos.stream() + .filter(po -> { + if (po.getSharedType() == 1) { + List limitIds = po.getLimitIds(); + List collect = new ArrayList<>(); + for (int i = 0; i < limitIds.size(); i++) { + collect.add(limitIds.get(i).toString()); + } + return CollectionUtil.isNotEmpty(limitIds) && CollectionUtil.intersection(collect, taxIds).size() != 0; + } + return true; + }) + .peek(po -> { + po.setChecked(link != null && po.getId().equals(link.getTemplateId())); + }) + .collect(Collectors.toList()); + return pos; + } + + @Override + public PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param) { + ValidUtil.doValidator(param); + Date now = new Date(); + Long id = param.getId(); + + PageListTemplatePO po; + if (id == null) { + po = PageListTemplatePO.builder() + .id(IdGenerator.generate()) + .page(param.getPage()) + .name(param.getName()) + .sharedType(param.getSharedType()) + .limitIds(param.getLimitIds()) + .setting(param.getSetting()) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getPageListTemplateMapper().insertIgnoreNull(po); + } else { + po = getPageListTemplateMapper().getById(id); + if (po == null) { + throw new SalaryRunTimeException("模板不存在!"); + } + po.setName(param.getName()); + po.setSharedType(param.getSharedType()); + po.setLimitIds(param.getLimitIds()); + po.setSetting(param.getSetting()); + po.setUpdateTime(now); + getPageListTemplateMapper().updateIgnoreNull(po); + } + + return po; + } + + @Override + public void changePageListTemplate(PageListTemplateChangeParam param) { + + ValidUtil.doValidator(param); + + List pageLinkPOS = getPageLinkMapper().listSome(PageLinkPO.builder().employeeId((long) user.getUID()).page(param.getPage()).build()); + if (CollUtil.isNotEmpty(pageLinkPOS)) { + Set ids = SalaryEntityUtil.properties(pageLinkPOS, PageLinkPO::getId); + getPageLinkMapper().deleteByIds(ids); + } + PageLinkPO pageLinkPO = PageLinkPO.builder() + .id(IdGenerator.generate()) + .employeeId((long) user.getUID()) + .page(param.getPage()) + .templateId(param.getTemplateId()) + .tenantKey(DEFAULT_TENANT_KEY) + .createTime(new Date()) + .updateTime(new Date()) + .creator((long) user.getUID()) + .deleteType(0) + .build(); + + getPageLinkMapper().insertIgnoreNull(pageLinkPO); + } + + @Override + public List getPageListColumns(String page) { + PageLinkPO link = getPageLinkMapper().getLink((long) user.getUID(), page); + if (link != null) { + PageListTemplateDTO pageListTemplate = getPageListTemplate(PageListTemplateQueryParam.builder().page(page).id(link.getTemplateId()).build()); + return pageListTemplate.getChecked(); + } else { + PageListTemplateDTO pageListTemplate = getPageListTemplate(PageListTemplateQueryParam.builder().page(page).build()); + return pageListTemplate.getSetting(); + } + } } diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java index 82b727009..06218ebc9 100644 --- a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -20,6 +20,7 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveInitImportDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.datacollection.VariableArchiveMapper; import com.engine.salary.service.*; @@ -272,8 +273,6 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi //动态列组装 List columns = VariableArchiveBO.buildVariableArchiveTable(variableItems); - columns.add(0, new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "薪资所属月"), "salaryMonth")); - Map datas = new HashMap<>(); datas.put("data", resultMap); datas.put("column", columns); @@ -287,6 +286,7 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi .map(po -> VariableItemListDTO.builder() .id(po.getId()) .name(po.getName()) + .dataType(SalaryDataTypeEnum.parseByValue(po.getDataType()).getValue()) .build()) .collect(Collectors.toList()); return variableItemDTOList; diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index b8f1962bd..b5d5384ea 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -45,6 +45,11 @@ public class SalarySysConstant { * 加密后前缀 */ public static final String PRE_SIGN_ENCRYPT = "AES_"; + + /** + * 工资单员工加密后前缀 + */ + public static final String SALARY_BILL_PRE_SIGN_ENCRYPT = "HSE_"; /** * 锁的key */ @@ -161,4 +166,42 @@ public class SalarySysConstant { * 报表组织类型,null/0 :核算时组织信息 1:实时组织信息 */ public static final String REPORT_ORGANIZATIN_TYPE = "REPORT_ORGANIZATIN_TYPE"; + + /** + * 薪资明细页面显示类型 + */ + public static final String SALARY_DETAILS_REPORT_SHOW_TYPE = "SALARY_DETAILS_REPORT_SHOW_TYPE"; + + /** + * 主次账号开启标识 1开启 + */ + public static final String OPEN_SECONDARY_ACCOUNT = "openSecondaryAccount"; + + + /** + * 展示薪资核算审批设置按钮 + */ + public static final String SHOW_SALARY_ACCT_APPROVAL = "SHOW_SALARY_ACCT_APPROVAL"; + + /** + * 开启核算记录审批功能 + */ + public static final String SALARY_APPROVAL_STATUS = "SALARY_APPROVAL_STATUS"; + + /** + * 开启审批的核算记录允许手动归档 + */ + public static final String APPROVAL_CAN_MANUAL_FILE_STATUS = "APPROVAL_CAN_MANUAL_FILE_STATUS"; + + + /** + * 开启审批的核算记录允许重新核算 + */ + public static final String APPROVAL_CAN_RE_CALC_STATUS = "APPROVAL_CAN_RE_CALC_STATUS"; + + + /** + * 审批流程发起后允许修改核算数据 + */ + public static final String APPROVAL_CAN_EDIT_RESULT_STATUS = "APPROVAL_CAN_EDIT_RESULT_STATUS"; } diff --git a/src/com/engine/salary/util/SalaryTokenUtil.java b/src/com/engine/salary/util/SalaryTokenUtil.java index 68446cf30..ec31793d6 100644 --- a/src/com/engine/salary/util/SalaryTokenUtil.java +++ b/src/com/engine/salary/util/SalaryTokenUtil.java @@ -2,6 +2,8 @@ package com.engine.salary.util; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; +import com.engine.salary.encrypt.AESEncryptUtil; +import com.engine.salary.entity.salaryBill.param.SalaryBillGetTokenParam; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.db.IdGenerator; import org.apache.commons.lang3.StringUtils; @@ -76,8 +78,17 @@ public class SalaryTokenUtil { * * @return */ - public static Map GetToken(Long uid) { + public static Map GetToken(SalaryBillGetTokenParam param) { + String uid = ""; + if (StringUtils.isNotBlank(param.getSalaryCode())) { + uid = AESEncryptUtil.decrypt4SalaryBill(param.getSalaryCode()); + } else { + uid = param.getRecipient(); + } Map heads = new HashMap<>(); + if (StringUtils.isBlank(uid)) { + return heads; + } BaseBean baseBean = new BaseBean(); RecordSet rs = new RecordSet(); Map resultMap = new HashMap<>(); @@ -96,10 +107,12 @@ public class SalaryTokenUtil { String sql= " SELECT conf_value FROM hrsa_salary_sys_conf t WHERE delete_type = 0 AND conf_key = 'SALARY_TOKEN_SECRET'"; rs.execute(sql); String secret = ""; - if (rs.next() && StringUtils.isNotEmpty(rs.getString("conf_value"))) { + if (rs.next() && StringUtils.isNotBlank(rs.getString("conf_value"))) { // 从数据库中拿secret secret = rs.getString("conf_value"); } else { + sql= " update hrsa_salary_sys_conf set delete_type=1 WHERE delete_type = 0 AND conf_key in( 'SALARY_TOKEN_SECRET', 'SALARY_TOKEN_SPK')"; + rs.execute(sql); // 注册获取secret // 获取当前异构系统RSA加密的公钥 String cpk = new RSA().getRSA_PUB(); diff --git a/src/com/engine/salary/util/page/PageInfo.java b/src/com/engine/salary/util/page/PageInfo.java index da8313a78..9547fb686 100644 --- a/src/com/engine/salary/util/page/PageInfo.java +++ b/src/com/engine/salary/util/page/PageInfo.java @@ -17,6 +17,11 @@ public class PageInfo extends com.engine.salary.component.PageInfo { this.columns.addAll(columns); } + public void clearAndSetColumns(List columns) { + this.columns.clear(); + this.columns.addAll(columns); + } + List columns = new ArrayList<>(); List dataSource = new ArrayList<>(); diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index 0fbe3797c..8bb205be2 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -539,6 +539,30 @@ public class SalaryArchiveController { if (StringUtils.isNotBlank(extSalaryArchiveList)) { param.setExtSalaryArchiveList("true".equals(extSalaryArchiveList)); } + String payStartDateStartDateStr = request.getParameter("payStartDateStartDateStr"); + if (StringUtils.isNotBlank(payStartDateStartDateStr) && SalaryDateUtil.checkDay(payStartDateStartDateStr)) { + param.setPayStartDateStartDate(SalaryDateUtil.stringToDate(payStartDateStartDateStr)); + } + String payStartDateEndDateStr = request.getParameter("payStartDateEndDateStr"); + if (StringUtils.isNotBlank(payStartDateEndDateStr) && SalaryDateUtil.checkDay(payStartDateEndDateStr)) { + param.setPayStartDateEndDate(SalaryDateUtil.stringToDate(payStartDateEndDateStr)); + } + String payEndDateStartDateStr = request.getParameter("payEndDateStartDateStr"); + if (StringUtils.isNotBlank(payEndDateStartDateStr) && SalaryDateUtil.checkDay(payEndDateStartDateStr)) { + param.setPayEndDateStartDate(SalaryDateUtil.stringToDate(payEndDateStartDateStr)); + } + String payEndDateEndDateStr = request.getParameter("payEndDateEndDateStr"); + if (StringUtils.isNotBlank(payEndDateEndDateStr) && SalaryDateUtil.checkDay(payEndDateEndDateStr)) { + param.setPayEndDateEndDate(SalaryDateUtil.stringToDate(payEndDateEndDateStr)); + } + String adjustSalaryStartDateStr = request.getParameter("adjustSalaryStartDate"); + if (StringUtils.isNotBlank(adjustSalaryStartDateStr) && SalaryDateUtil.checkDay(adjustSalaryStartDateStr)) { + param.setAdjustSalaryStartDate(SalaryDateUtil.stringToDate(adjustSalaryStartDateStr)); + } + String adjustSalaryEndDate = request.getParameter("adjustSalaryEndDate"); + if (StringUtils.isNotBlank(adjustSalaryEndDate) && SalaryDateUtil.checkDay(adjustSalaryEndDate)) { + param.setAdjustSalaryEndDate(SalaryDateUtil.stringToDate(adjustSalaryEndDate)); + } return param; } diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index 94a2ea915..64437a579 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -642,12 +642,12 @@ public class SalaryBillController { * @param * @return */ - @GET + @POST @Path("/getToken") @Produces(MediaType.APPLICATION_JSON) - public String getToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "uid") Long uid) { + public String getToken(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryBillGetTokenParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalarySendWrapper(user)::getToken, uid); + return new ResponseResult>(user).run(getSalarySendWrapper(user)::getToken, param); } /** @@ -675,16 +675,7 @@ public class SalaryBillController { @Produces(MediaType.APPLICATION_JSON) public String mySalaryBill(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryInfoId") Long salaryInfoId) { User user = null; - String recipient = request.getParameter("recipient"); - String em_auth_userid = request.getParameter("em_auth_userid"); - log.info("salary recipient: {} em_auth_userid: {}", recipient, em_auth_userid); - if (StringUtils.isNotBlank(recipient) && NumberUtils.isCreatable(recipient)) { - user = new User(Integer.parseInt(recipient)); - } else if (StringUtils.isNotBlank(em_auth_userid) && NumberUtils.isCreatable(em_auth_userid)) { - user = new User(Integer.parseInt(em_auth_userid)); - } else { - user = HrmUserVarify.getUser(request, response); - } + user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getSalarySendWrapper(user)::mySalaryBill, salaryInfoId); } diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index d28dc0d86..28155c729 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -1,8 +1,10 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; -import com.engine.salary.entity.setting.param.PageListSettingQueryParam; -import com.engine.salary.entity.setting.param.PageListSettingSaveParam; +import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.param.*; +import com.engine.salary.entity.setting.po.PageListSettingPO; +import com.engine.salary.entity.setting.po.PageListTemplatePO; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.wrapper.SalaryCommonWrapper; @@ -66,6 +68,13 @@ public class SalaryCommonController { return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListSetting, param); } + /** + * 页面默认值 + * @param request + * @param response + * @param param + * @return + */ @POST @Path("/pageList/get/setting") @Produces(MediaType.APPLICATION_JSON) @@ -73,4 +82,64 @@ public class SalaryCommonController { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param); } + + /** + * 页面模板表单 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/pageList/template/get") + @Produces(MediaType.APPLICATION_JSON) + public String getPageListTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListTemplate, param); + } + + /** + * 页面模板列表 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/pageList/template/list") + @Produces(MediaType.APPLICATION_JSON) + public String getPageListTemplates(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryCommonWrapper(user)::getPageListTemplates, param); + } + + /** + * 页面模板列表 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/pageList/template/save") + @Produces(MediaType.APPLICATION_JSON) + public String savePageListTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListTemplate, param); + } + + /** + * 页面模板列表 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/pageList/template/change") + @Produces(MediaType.APPLICATION_JSON) + public String changeTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListTemplateChangeParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::changePageListTemplate, param); + } } diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index 018541dea..2998ede98 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -2,8 +2,10 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.SalarySobExtRangePO; +import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; import com.engine.salary.entity.salaryitem.dto.SalaryItemSobListDTO; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.*; import com.engine.salary.entity.salarysob.param.*; import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO; @@ -74,6 +76,10 @@ public class SalarySobController { return ServiceUtil.getService(SalarySobBackItemWrapper.class, user); } + private SalaryApprovalWrapper getSalaryApprovalWrapper(User user) { + return ServiceUtil.getService(SalaryApprovalWrapper.class, user); + } + /**********************************薪资账套 start*********************************/ /** @@ -585,4 +591,82 @@ public class SalarySobController { /**********************************校验规则 end*********************************/ + /**********************************薪资审批规则 start*********************************/ + + /** + * 薪资审批规则表单 + */ + @POST + @Path("/salaryApproval/getForm") + @Produces(MediaType.APPLICATION_JSON) + public String salaryApprovalForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryApprovalQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryApprovalWrapper(user)::salaryApprovalForm, queryParam); + } + + /** + * 保存薪资审批规则表单 + */ + @POST + @Path("/salaryApproval/saveForm") + @Produces(MediaType.APPLICATION_JSON) + public String saveSalaryApprovalForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryApprovalDTO saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryApprovalWrapper(user)::saveSalaryApprovalForm, saveParam); + } + + /** + * 薪资审批可选薪资项目 + */ + @POST + @Path("/salaryApproval/listSalaryItem") + @Produces(MediaType.APPLICATION_JSON) + public String listSalaryApprovalItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemSearchParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalItem, queryParam); + } + + /** + * 根据核算记录id获取审批信息 + */ + @GET + @Path("/salaryApproval/getApprovalInfoByRecordId") + @Produces(MediaType.APPLICATION_JSON) + public String getApprovalInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryAcctRecordId")Long salaryAcctRecordId ) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryApprovalWrapper(user)::getApprovalInfoByRecordId, salaryAcctRecordId); + } + + /** + * 获取审批时薪资核算结果 + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/salaryApproval/acctresult/list") + @Produces(MediaType.APPLICATION_JSON) + public String listSalaryApprovalAcctResult(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalAcctResult, param); + } + + /** + * 保存审批流程id + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/salaryApproval/saveRequestId") + @Produces(MediaType.APPLICATION_JSON) + public String saveApprovalRequestId(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ApprovalRequestSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryApprovalWrapper(user)::saveApprovalRequestId, param); + } + + /**********************************薪资审批规则 start*********************************/ + } diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 853a46e4d..7e352ce91 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -15,16 +15,22 @@ import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; +import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO; import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; +import com.engine.salary.sys.constant.SalarySysConstant; +import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.SalarySobUtil; +import com.engine.salary.util.page.Column; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.valid.ValidUtil; import com.engine.salary.wrapper.proxy.SalaryAcctRecordWrapperProxy; @@ -83,6 +89,14 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + // private ComInfoCache comInfoCache; public PageInfo listPage(SalaryAcctRecordQueryParam queryParam) { @@ -102,6 +116,24 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord // 查询薪资账套 Set salarySobIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getSalarySobId); List salarySobPOS = getSalarySobService(user).listByIds(salarySobIds); + // 规则设置中是否开启薪资审批按钮,默认关闭 + SalarySysConfPO salaryApprovalStatusConf = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_APPROVAL_STATUS); + List needApprovalSalarySobIds = new ArrayList<>(); + // 默认可以重新核算、可以手动归档 + boolean approvalCanReCalc = true; + boolean approvalCanFile = true; + if (salaryApprovalStatusConf != null && salaryApprovalStatusConf.getConfValue().equals("1")) { + // 开启了薪资审批,获取这开启审批的账套id + List salaryApprovalRules = getSalaryApprovalRuleService(user).listBySalarySobIds(salarySobIds); + needApprovalSalarySobIds = salaryApprovalRules.stream().filter(po -> po.getOpenApproval().equals(1)).map(SalaryApprovalRulePO::getSalarySobId).collect(Collectors.toList()); + + // 获取 开启审批的核算记录允许重新核算设置,默认开启 + SalarySysConfPO approvalCanReCalcFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_RE_CALC_STATUS); + approvalCanReCalc = approvalCanReCalcFileStatusPO == null ? true : approvalCanReCalcFileStatusPO.getConfValue().equals("1"); + // 获取 开启审批的核算记录允许手动归档,默认开启 + SalarySysConfPO approvalCanManualFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_MANUAL_FILE_STATUS); + approvalCanFile = approvalCanManualFileStatusPO == null ? true : approvalCanManualFileStatusPO.getConfValue().equals("1"); + } // 查询薪资核算记录的创建人员的人员信息 List employeeIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getCreator, Collectors.toList()); List employeeComInfos = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); @@ -113,10 +145,15 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord Set taxAgentIds = SalaryEntityUtil.properties(salarySobPOS, SalarySobPO::getTaxAgentId); List taxAgentPOS = getTaxAgentService(user).listByIds(taxAgentIds); - // 转换成列表dto - List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS); + List salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS, needApprovalSalarySobIds, approvalCanFile, approvalCanReCalc); dtoPage.setList(salaryAcctRecordListDTOS); + // 规则设置中是否开启审批功能,默认关闭 + if (CollectionUtils.isEmpty(needApprovalSalarySobIds)) { + // 没有开启审批的 + List columnList = dtoPage.getColumns().stream().filter(col -> !col.getKey().equals("approvalStatus")).collect(Collectors.toList()); + dtoPage.clearAndSetColumns(columnList); + } } // WeaTable weaTable = SalaryFormatUtil.getInstance().buildTable(SalaryAcctRecordListDTO.class, dtoPage); // 只有未归档时可以"核算"、"删除"、"归档" diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 460966616..a7d5abba6 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -75,6 +75,10 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + /** * 薪资核算列表 * @@ -212,6 +216,13 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult public void calculate(SalaryAcctCalculateParam calculateParam) { log.info("开始核算V1{}", calculateParam); + + // 校验是否可以编辑 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(calculateParam.getSalaryAcctRecordId()); + boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO); + if (!recordIsCanEdit) { + throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程"); + } //当前登陆人员 DataCollectionEmployee simpleEmployee = new DataCollectionEmployee(); simpleEmployee.setEmployeeId((long) user.getUID()); diff --git a/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java new file mode 100644 index 000000000..81c6b10ce --- /dev/null +++ b/src/com/engine/salary/wrapper/SalaryApprovalWrapper.java @@ -0,0 +1,168 @@ +package com.engine.salary.wrapper; + +import com.api.formmode.mybatis.util.SqlProxyHandle; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.component.WeaTableColumnGroup; +import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +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.SalaryApprovalDTO; +import com.engine.salary.entity.salarysob.dto.SalarySobEmpFieldDTO; +import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam; +import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam; +import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO; +import com.engine.salary.enums.salaryaccounting.LockStatusEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.sys.SalarySysConfMapper; +import com.engine.salary.service.*; +import com.engine.salary.service.impl.*; +import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.ValidUtil; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.math.NumberUtils; +import weaver.hrm.User; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import static com.engine.salary.sys.constant.SalarySysConstant.SALARY_ACCT_FIXED_COLUMNS; + +/** + * 薪资账套的薪资审批 + *

Copyright: Copyright (c) 2024

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class SalaryApprovalWrapper extends Service { + + private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) { + return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user); + } + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SalaryAcctResultService getSalaryAcctResultService(User user) { + return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user); + } + + private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) { + return ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + private SalarySysConfMapper getSalarySysConfMapper() { + return SqlProxyHandle.getProxy(SalarySysConfMapper.class); + } + + /** + * 薪资账套的薪资审批规则 + * + * @param queryParam 查询参数 + * @return + */ + public SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam) { + ValidUtil.doValidator(queryParam); + return getSalaryApprovalRuleService(user).salaryApprovalForm(queryParam); + } + + /** + * 保存薪资账套的薪资审批规则 + * + * @param salaryApprovalDTO + * + */ + public void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO) { + getSalaryApprovalRuleService(user).saveSalaryApprovalForm(salaryApprovalDTO); + } + + public List listSalaryApprovalItem(SalaryItemSearchParam queryParam) { + return getSalaryApprovalRuleService(user).listSalaryApprovalItem(queryParam); + } + + public SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId) { + return getSalaryApprovalRuleService(user).getApprovalInfoByRecordId(salaryAcctRecordId); + } + + public Map listSalaryApprovalAcctResult(SalaryAcctResultQueryParam queryParam) { + ValidUtil.doValidator(queryParam); + // 审批信息 + SalaryApprovalDTO approvalInfoByRecordId = getSalaryApprovalRuleService(user).getApprovalInfoByRecordId(queryParam.getSalaryAcctRecordId()); + + // 查询薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + + // 查询薪资核算结果(分页) + PageInfo> page = getSalaryAcctResultService(user).listPageByParam(queryParam); + + // 构建薪资核算结果审批列表的表头 + List columns = Lists.newArrayList(); + // 查询薪资账套的员工信息字段 + List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salarySobEmpFieldDTOS = new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS); + // 获取薪资项目信息 + List salaryItemPOS = getSalaryItemService(user).listAll(); + Map salaryItemWidthMap = SalaryEntityUtil.convert2Map(salaryItemPOS, SalaryItemPO::getId, SalaryItemPO::getWidth); + // 员工信息字段 + for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobEmpFieldDTOS) { + columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName(), 0), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId())); + } + // 薪资项目分组下的薪资项目 + for (SalaryApprovalDTO.approvalItemGroup groupDTO : approvalInfoByRecordId.getApprovalItemGroup()) { + if (CollectionUtils.isEmpty(groupDTO.getApprovalItems())) { + continue; + } + List childrenColumns = Lists.newArrayList(); + for (SalaryApprovalDTO.approvalItem approvalItemDTO : groupDTO.getApprovalItems()) { + childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(approvalItemDTO.getSalaryItemName(), salaryItemWidthMap.getOrDefault(approvalItemDTO.getSalaryItemId(), 0) == null ? 0 : salaryItemWidthMap.getOrDefault(approvalItemDTO.getSalaryItemId(), 0)), approvalItemDTO.getSalaryItemName(), "" + approvalItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue().toString())); + } + WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(groupDTO.getGroupName(), 0), groupDTO.getGroupName(), groupDTO.getGroupName(), childrenColumns); + columns.add(weaTableColumnWapper); + } + + // 获取固定列头数 + SalarySysConfPO salaryAcctFixedColumns = getSalarySysConfMapper().getOneByCode(SALARY_ACCT_FIXED_COLUMNS); + if (salaryAcctFixedColumns != null) { + int fixedNum = NumberUtils.isCreatable(salaryAcctFixedColumns.getConfValue()) ? Integer.valueOf(salaryAcctFixedColumns.getConfValue()) : 3; + if (fixedNum == 0) { + fixedNum = 3; + } + for (int i = 0; i < fixedNum; i++) { + columns.get(i).setFixed("left"); + } + } + + Map datas = new HashMap<>(); + datas.put("pageInfo", page); + datas.put("columns", columns); + + return datas; + } + + /** + * 保存审批流程id + * @param saveParam + */ + public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) { + getSalaryApprovalRuleService(user).saveApprovalRequestId(saveParam); + } +} diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index e66e09121..7719c6d5a 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -2,14 +2,16 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.entity.setting.param.PageListSettingQueryParam; -import com.engine.salary.entity.setting.param.PageListSettingSaveParam; +import com.engine.salary.entity.setting.dto.PageListTemplateDTO; +import com.engine.salary.entity.setting.param.*; +import com.engine.salary.entity.setting.po.PageListTemplatePO; import com.engine.salary.service.SalaryCacheService; import com.engine.salary.service.SettingService; import com.engine.salary.service.impl.SalaryCacheServiceImpl; import com.engine.salary.service.impl.SettingServiceImpl; import weaver.hrm.User; +import java.util.List; import java.util.Map; @@ -39,4 +41,22 @@ public class SalaryCommonWrapper extends Service { public Map getPageListSetting(PageListSettingQueryParam param) { return getSettingService(user).getPageListSetting(param); } + + + public PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param) { + return getSettingService(user).getPageListTemplate(param); + } + + public List getPageListTemplates(PageListTemplateQueryParam param) { + return getSettingService(user).getPageListTemplates(param); + } + + public PageListTemplatePO savePageListTemplate(PageListTemplateSaveParam param) { + return getSettingService(user).savePageListTemplate(param); + } + + public void changePageListTemplate(PageListTemplateChangeParam param) { + getSettingService(user).changePageListTemplate(param); + } + } diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 0fccfecd0..8bbba561c 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -744,8 +744,8 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy return getSalaryBillService(user).exportPdf(param); } - public Map getToken(Long uid) { - return SalaryTokenUtil.GetToken( uid); + public Map getToken(SalaryBillGetTokenParam param) { + return SalaryTokenUtil.GetToken(param); } public String genPdfBeforeExport(SalaryExportPdfParam salaryExportPdfParam) { diff --git a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java index 1fbe0e0e0..96bdc90db 100644 --- a/src/com/engine/salary/wrapper/SalarySobItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobItemWrapper.java @@ -177,4 +177,5 @@ public class SalarySobItemWrapper extends Service { public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) { return getSalarySobItemService(user).getSalaryItemForm(param); } + } diff --git a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java index 61f9dcc86..927fa299a 100644 --- a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java @@ -50,14 +50,14 @@ public class VariableArchiveWrapper extends Service { */ public Map list(VariableArchiveQueryParam queryParam) { - //薪资档案列表 + // 薪资档案列表 PageInfo pageInfo = getVariableArchiveService(user).listPage(queryParam); List salaryArchives = pageInfo.getList(); // 获取所有浮动薪酬项目 List variableItems = getVariableItemService(user).listAll(); - //整合所有的显示列(固定列+薪资项目动态列) + // 整合所有的显示列(固定列+薪资项目动态列) List> listMaps = getVariableArchiveService(user).buildVariableArchiveData(salaryArchives); PageInfo> pageInfos = new PageInfo>(listMaps);