diff --git a/resource/WEB-INF/lib/hrmelog.jar b/resource/WEB-INF/lib/hrmelog.jar index b1ce56c11..b8a8aec57 100644 Binary files a/resource/WEB-INF/lib/hrmelog.jar and b/resource/WEB-INF/lib/hrmelog.jar differ diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index 5c9223804..73a128f3e 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.15.1.2407.01 +version=2.16.1.2410.01 openFormulaForcedEditing=false \ No newline at end of file diff --git a/resource/sqlupgrade/DM/sql202303130202.sql b/resource/sqlupgrade/DM/sql202303130202.sql deleted file mode 100644 index 9038f9cd1..000000000 --- a/resource/sqlupgrade/DM/sql202303130202.sql +++ /dev/null @@ -1,14 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ - -Delete from LeftMenuConfig where infoid=100186; -/ - -call LMConfig_U_ByInfoInsert (2,100118,9); -/ - -call LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ - -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file diff --git a/resource/sqlupgrade/DM/sql202408090103.sql b/resource/sqlupgrade/DM/sql202408090103.sql new file mode 100644 index 000000000..c7f9f1c64 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +); +/ + diff --git a/resource/sqlupgrade/DM/sql202408120703.sql b/resource/sqlupgrade/DM/sql202408120703.sql new file mode 100644 index 000000000..00332785c --- /dev/null +++ b/resource/sqlupgrade/DM/sql202408120703.sql @@ -0,0 +1,3 @@ +alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0); +/ + diff --git a/resource/sqlupgrade/DM/sql202408140203.sql b/resource/sqlupgrade/DM/sql202408140203.sql new file mode 100644 index 000000000..98a8d5a20 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +); +/ + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +); +/ + diff --git a/resource/sqlupgrade/DM/sql202409130201.sql b/resource/sqlupgrade/DM/sql202409130201.sql new file mode 100644 index 000000000..ee19534ed --- /dev/null +++ b/resource/sqlupgrade/DM/sql202409130201.sql @@ -0,0 +1,24 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) ; +/ + +insert into HtmlLabelIndex(id,indexdesc) select 548025,'検強方象' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検強方象' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + diff --git a/resource/sqlupgrade/DM/sql202409130302.sql b/resource/sqlupgrade/DM/sql202409130302.sql new file mode 100644 index 000000000..f9f4f825d --- /dev/null +++ b/resource/sqlupgrade/DM/sql202409130302.sql @@ -0,0 +1,15 @@ +Delete from LeftMenuInfo where id=100219; +/ + +Delete from LeftMenuConfig where infoid=100219; +/ + +call LMConfig_U_ByInfoInsert (2,100126,0); +/ + +call LMInfo_Insert (100219,548025,'','',2,100126,7,2); +/ + +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219; +/ + diff --git a/resource/sqlupgrade/DM/sql202410100103.sql b/resource/sqlupgrade/DM/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/DM/sql202410110103.sql b/resource/sqlupgrade/DM/sql202410110103.sql new file mode 100644 index 000000000..80fd04daf --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410110103.sql @@ -0,0 +1,13 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/DM/sql202410170303.sql b/resource/sqlupgrade/DM/sql202410170303.sql new file mode 100644 index 000000000..59556ae32 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202410170303.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202303130202.sql b/resource/sqlupgrade/GS/sql202303130202.sql deleted file mode 100644 index 9038f9cd1..000000000 --- a/resource/sqlupgrade/GS/sql202303130202.sql +++ /dev/null @@ -1,14 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ - -Delete from LeftMenuConfig where infoid=100186; -/ - -call LMConfig_U_ByInfoInsert (2,100118,9); -/ - -call LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ - -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file diff --git a/resource/sqlupgrade/GS/sql202408090103.sql b/resource/sqlupgrade/GS/sql202408090103.sql new file mode 100644 index 000000000..c7f9f1c64 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202408120703.sql b/resource/sqlupgrade/GS/sql202408120703.sql new file mode 100644 index 000000000..00332785c --- /dev/null +++ b/resource/sqlupgrade/GS/sql202408120703.sql @@ -0,0 +1,3 @@ +alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0); +/ + diff --git a/resource/sqlupgrade/GS/sql202408140203.sql b/resource/sqlupgrade/GS/sql202408140203.sql new file mode 100644 index 000000000..98a8d5a20 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +); +/ + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +); +/ + diff --git a/resource/sqlupgrade/GS/sql202409130201.sql b/resource/sqlupgrade/GS/sql202409130201.sql new file mode 100644 index 000000000..ee19534ed --- /dev/null +++ b/resource/sqlupgrade/GS/sql202409130201.sql @@ -0,0 +1,24 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) ; +/ + +insert into HtmlLabelIndex(id,indexdesc) select 548025,'検強方象' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検強方象' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + diff --git a/resource/sqlupgrade/GS/sql202409130302.sql b/resource/sqlupgrade/GS/sql202409130302.sql new file mode 100644 index 000000000..f9f4f825d --- /dev/null +++ b/resource/sqlupgrade/GS/sql202409130302.sql @@ -0,0 +1,15 @@ +Delete from LeftMenuInfo where id=100219; +/ + +Delete from LeftMenuConfig where infoid=100219; +/ + +call LMConfig_U_ByInfoInsert (2,100126,0); +/ + +call LMInfo_Insert (100219,548025,'','',2,100126,7,2); +/ + +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219; +/ + diff --git a/resource/sqlupgrade/GS/sql202410100103.sql b/resource/sqlupgrade/GS/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/GS/sql202410110103.sql b/resource/sqlupgrade/GS/sql202410110103.sql new file mode 100644 index 000000000..80fd04daf --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410110103.sql @@ -0,0 +1,13 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202410170303.sql b/resource/sqlupgrade/GS/sql202410170303.sql new file mode 100644 index 000000000..59556ae32 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202410170303.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202303130202.sql b/resource/sqlupgrade/JC/sql202303130202.sql deleted file mode 100644 index 9038f9cd1..000000000 --- a/resource/sqlupgrade/JC/sql202303130202.sql +++ /dev/null @@ -1,14 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ - -Delete from LeftMenuConfig where infoid=100186; -/ - -call LMConfig_U_ByInfoInsert (2,100118,9); -/ - -call LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ - -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file diff --git a/resource/sqlupgrade/JC/sql202408090103.sql b/resource/sqlupgrade/JC/sql202408090103.sql new file mode 100644 index 000000000..c7f9f1c64 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202408120703.sql b/resource/sqlupgrade/JC/sql202408120703.sql new file mode 100644 index 000000000..00332785c --- /dev/null +++ b/resource/sqlupgrade/JC/sql202408120703.sql @@ -0,0 +1,3 @@ +alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0); +/ + diff --git a/resource/sqlupgrade/JC/sql202408140203.sql b/resource/sqlupgrade/JC/sql202408140203.sql new file mode 100644 index 000000000..98a8d5a20 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +); +/ + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +); +/ + diff --git a/resource/sqlupgrade/JC/sql202409130201.sql b/resource/sqlupgrade/JC/sql202409130201.sql new file mode 100644 index 000000000..ee19534ed --- /dev/null +++ b/resource/sqlupgrade/JC/sql202409130201.sql @@ -0,0 +1,24 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) ; +/ + +insert into HtmlLabelIndex(id,indexdesc) select 548025,'検強方象' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検強方象' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + diff --git a/resource/sqlupgrade/JC/sql202409130302.sql b/resource/sqlupgrade/JC/sql202409130302.sql new file mode 100644 index 000000000..f9f4f825d --- /dev/null +++ b/resource/sqlupgrade/JC/sql202409130302.sql @@ -0,0 +1,15 @@ +Delete from LeftMenuInfo where id=100219; +/ + +Delete from LeftMenuConfig where infoid=100219; +/ + +call LMConfig_U_ByInfoInsert (2,100126,0); +/ + +call LMInfo_Insert (100219,548025,'','',2,100126,7,2); +/ + +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219; +/ + diff --git a/resource/sqlupgrade/JC/sql202410100103.sql b/resource/sqlupgrade/JC/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/JC/sql202410110103.sql b/resource/sqlupgrade/JC/sql202410110103.sql new file mode 100644 index 000000000..80fd04daf --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410110103.sql @@ -0,0 +1,13 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202410170303.sql b/resource/sqlupgrade/JC/sql202410170303.sql new file mode 100644 index 000000000..59556ae32 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202410170303.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL; +/ + diff --git a/resource/sqlupgrade/Mysql/sql202303130202.sql b/resource/sqlupgrade/Mysql/sql202303130202.sql deleted file mode 100644 index 81f96bbd2..000000000 --- a/resource/sqlupgrade/Mysql/sql202303130202.sql +++ /dev/null @@ -1,10 +0,0 @@ -Delete from LeftMenuInfo where id=100186 -; -Delete from LeftMenuConfig where infoid=100186 -; -call LMConfig_U_ByInfoInsert (2,100118,9) -; -call LMInfo_Insert (100186,541290,'','',2,100118,9,18) -; -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186 -; \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202408090103.sql b/resource/sqlupgrade/Mysql/sql202408090103.sql new file mode 100644 index 000000000..e4640368e --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202408090103.sql @@ -0,0 +1,43 @@ +CREATE TABLE hrsa_variable_archive ( + id bigint NOT NULL, + employee_id bigint NULL , + salary_month datetime NULL, + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) +; + + + +CREATE TABLE hrsa_variable_archive_item ( + id bigint NOT NULL, + employee_id bigint NOT NULL, + variable_archive_id bigint NOT NULL, + variable_item_id bigint NOT NULL, + item_value varchar(255) NULL , + create_time datetime NOT NULL , + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL , + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) ; + + + +CREATE TABLE hrsa_variable_item ( + id bigint NOT NULL, + name varchar(255) NOT NULL, + code varchar(255) NOT NULL, + data_type varchar(20) NULL, + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +); diff --git a/resource/sqlupgrade/Mysql/sql202408120703.sql b/resource/sqlupgrade/Mysql/sql202408120703.sql new file mode 100644 index 000000000..c835f6627 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202408120703.sql @@ -0,0 +1 @@ +alter table hrsa_variable_archive add tax_agent_id bigint; \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202408140203.sql b/resource/sqlupgrade/Mysql/sql202408140203.sql new file mode 100644 index 000000000..e97ad40ad --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202408140203.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD COLUMN target varchar(4000) NULL ; +ALTER TABLE hrsa_salary_sob_range ADD COLUMN target varchar(4000) NULL ; \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202409130201.sql b/resource/sqlupgrade/Mysql/sql202409130201.sql new file mode 100644 index 000000000..50f416219 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202409130201.sql @@ -0,0 +1,16 @@ +delete from HtmlLabelIndex where id = 548025 and ( indexdesc is null or indexdesc = '' ) +; +insert into HtmlLabelIndex(id,indexdesc) select 548025,'検強方象' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( indexdesc is not null and indexdesc <> '' )) limit 1 +; +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is null or labelname = '' ) +; +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検強方象' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is not null and labelname <> '' )) limit 1 +; +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is null or labelname = '' or length(labelname)!=char_length(labelname) ) +; +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is not null and labelname <> '' and length(labelname)=char_length(labelname) )) limit 1 +; +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is null or labelname = '' ) +; +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is not null and labelname <> '' )) limit 1 +; diff --git a/resource/sqlupgrade/Mysql/sql202409130302.sql b/resource/sqlupgrade/Mysql/sql202409130302.sql new file mode 100644 index 000000000..e53f1a601 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202409130302.sql @@ -0,0 +1,10 @@ +Delete from LeftMenuInfo where id=100219 +; +Delete from LeftMenuConfig where infoid=100219 +; +call LMConfig_U_ByInfoInsert (2,100126,0) +; +call LMInfo_Insert (100219,548025,'','',2,100126,7,2) +; +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219 +; \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202410100103.sql b/resource/sqlupgrade/Mysql/sql202410100103.sql new file mode 100644 index 000000000..5b645e3f6 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410100103.sql @@ -0,0 +1,3 @@ +ALTER TABLE hrsa_acct_result_template ADD COLUMN type int(0) NULL ; + +update hrsa_acct_result_template set type = 0; diff --git a/resource/sqlupgrade/Mysql/sql202410110103.sql b/resource/sqlupgrade/Mysql/sql202410110103.sql new file mode 100644 index 000000000..04ed725c6 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410110103.sql @@ -0,0 +1,12 @@ +CREATE TABLE hrsa_page_list_setting +( + id bigint(0) NOT NULL , + setting text , + page varchar(200), + creator bigint(0), + create_time datetime(0) , + update_time datetime(0), + delete_type int(0) , + tenant_key varchar(10) , + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202410170303.sql b/resource/sqlupgrade/Mysql/sql202410170303.sql new file mode 100644 index 000000000..3b0f772c0 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202410170303.sql @@ -0,0 +1 @@ +ALTER TABLE hrsa_salary_acct_emp ADD COLUMN lock_items varchar(4000); diff --git a/resource/sqlupgrade/Oracle/sql202303130202.sql b/resource/sqlupgrade/Oracle/sql202303130202.sql deleted file mode 100644 index d6b3c8be5..000000000 --- a/resource/sqlupgrade/Oracle/sql202303130202.sql +++ /dev/null @@ -1,10 +0,0 @@ -Delete from LeftMenuInfo where id=100186 -/ -Delete from LeftMenuConfig where infoid=100186 -/ -call LMConfig_U_ByInfoInsert (2,100118,9) -/ -call LMInfo_Insert (100186,541290,'','',2,100118,9,18) -/ -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186 -/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202408090103.sql b/resource/sqlupgrade/Oracle/sql202408090103.sql new file mode 100644 index 000000000..bac09a209 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +) +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +) +/ + + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202408120703.sql b/resource/sqlupgrade/Oracle/sql202408120703.sql new file mode 100644 index 000000000..f38e7b268 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202408120703.sql @@ -0,0 +1,2 @@ +alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202408140203.sql b/resource/sqlupgrade/Oracle/sql202408140203.sql new file mode 100644 index 000000000..436ecc304 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +) +/ + + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202409130201.sql b/resource/sqlupgrade/Oracle/sql202409130201.sql new file mode 100644 index 000000000..1462f878d --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202409130201.sql @@ -0,0 +1,16 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) +/ +insert into HtmlLabelIndex(id,indexdesc) select 548025,'検強方象' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検強方象' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202409130302.sql b/resource/sqlupgrade/Oracle/sql202409130302.sql new file mode 100644 index 000000000..aa1c20a30 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202409130302.sql @@ -0,0 +1,10 @@ +Delete from LeftMenuInfo where id=100219 +/ +Delete from LeftMenuConfig where infoid=100219 +/ +call LMConfig_U_ByInfoInsert (2,100126,0) +/ +call LMInfo_Insert (100219,548025,'','',2,100126,7,2) +/ +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219 +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202410100103.sql b/resource/sqlupgrade/Oracle/sql202410100103.sql new file mode 100644 index 000000000..90d5981fd --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410100103.sql @@ -0,0 +1,7 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +) +/ + +update hrsa_acct_result_template set type = 0 +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202410110103.sql b/resource/sqlupgrade/Oracle/sql202410110103.sql new file mode 100644 index 000000000..554fd4221 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410110103.sql @@ -0,0 +1,12 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202410170303.sql b/resource/sqlupgrade/Oracle/sql202410170303.sql new file mode 100644 index 000000000..53cdeed2e --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202410170303.sql @@ -0,0 +1,2 @@ +alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202303130202.sql b/resource/sqlupgrade/PG/sql202303130202.sql deleted file mode 100644 index c6ed8b220..000000000 --- a/resource/sqlupgrade/PG/sql202303130202.sql +++ /dev/null @@ -1,10 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ -Delete from LeftMenuConfig where infoid=100186; -/ -select LMConfig_U_ByInfoInsert (2,100118,9); -/ -select LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202408090103.sql b/resource/sqlupgrade/PG/sql202408090103.sql new file mode 100644 index 000000000..fa8d111f1 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202408090103.sql @@ -0,0 +1,38 @@ +CREATE TABLE hrsa_variable_archive_item ( + id bigint NOT NULL, + employee_id bigint NOT NULL, + variable_archive_id bigint NOT NULL, + variable_item_id bigint NOT NULL, + item_value varchar(255) NULL, + create_time timestamp NOT NULL, + update_time timestamp NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) ; + +CREATE TABLE hrsa_variable_archive ( + id bigint NOT NULL, + employee_id bigint NULL, + salary_month timestamp NULL , + create_time timestamp NOT NULL, + update_time timestamp NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +); + +CREATE TABLE hrsa_variable_item ( + id bigint NOT NULL, + name varchar(255) NOT NULL, + code varchar(255) NOT NULL, + data_type varchar(20)NULL , + create_time timestamp NOT NULL, + update_time timestamp NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202408120703.sql b/resource/sqlupgrade/PG/sql202408120703.sql new file mode 100644 index 000000000..c835f6627 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202408120703.sql @@ -0,0 +1 @@ +alter table hrsa_variable_archive add tax_agent_id bigint; \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202408140203.sql b/resource/sqlupgrade/PG/sql202408140203.sql new file mode 100644 index 000000000..81d7e05f0 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202408140203.sql @@ -0,0 +1,3 @@ +alter table hrsa_tax_agent_manage_range add target VARCHAR(4000) null ; + +alter table hrsa_salary_sob_range add target VARCHAR(4000) null ; \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202409130201.sql b/resource/sqlupgrade/PG/sql202409130201.sql new file mode 100644 index 000000000..acb55b3a0 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202409130201.sql @@ -0,0 +1,16 @@ +delete from HtmlLabelIndex where id = 548025 and ( indexdesc is null or indexdesc = '' ) ; +/ +insert into HtmlLabelIndex(id,indexdesc) select 548025,'検強方象' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( indexdesc is not null and indexdesc <> '' )) limit 1 ; +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is null or labelname = '' ) ; +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検強方象' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is not null and labelname <> '' )) limit 1 ; +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is null or labelname = '' or length(labelname)!=octet_length(labelname) ) ; +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is not null and labelname <> '' and length(labelname)=octet_length(labelname) )) limit 1 ; +/ +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is null or labelname = '' ) ; +/ +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is not null and labelname <> '' )) limit 1 ; +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202409130302.sql b/resource/sqlupgrade/PG/sql202409130302.sql new file mode 100644 index 000000000..70a52cf80 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202409130302.sql @@ -0,0 +1,10 @@ +Delete from LeftMenuInfo where id=100219 +; +Delete from LeftMenuConfig where infoid=100219 +; +select LMConfig_U_ByInfoInsert (2,100126,0) +; +select LMInfo_Insert (100219,548025,'','',2,100126,7,2) +; +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219 +; \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410100103.sql b/resource/sqlupgrade/PG/sql202410100103.sql new file mode 100644 index 000000000..2deb5e3a5 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410100103.sql @@ -0,0 +1,3 @@ +alter table hrsa_acct_result_template add type int null ; + +update hrsa_acct_result_template set type = 0; \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202410110103.sql b/resource/sqlupgrade/PG/sql202410110103.sql new file mode 100644 index 000000000..813426c47 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410110103.sql @@ -0,0 +1,11 @@ +create table hrsa_page_list_setting +( + id bigint primary key , + setting text , + page varchar(200), + 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/PG/sql202410170303.sql b/resource/sqlupgrade/PG/sql202410170303.sql new file mode 100644 index 000000000..deb01bd56 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202410170303.sql @@ -0,0 +1 @@ +alter table hrsa_salary_acct_emp add lock_items varchar(4000); \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202303130202.sql b/resource/sqlupgrade/SQLServer/sql202303130202.sql deleted file mode 100644 index 9b7bbe305..000000000 --- a/resource/sqlupgrade/SQLServer/sql202303130202.sql +++ /dev/null @@ -1,10 +0,0 @@ -Delete from LeftMenuInfo where id=100186 -GO -Delete from LeftMenuConfig where infoid=100186 -GO -EXECUTE LMConfig_U_ByInfoInsert 2,100118,9 -GO -EXECUTE LMInfo_Insert 100186,541290,'','',2,100118,9,18 -GO -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186 -GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202408090103.sql b/resource/sqlupgrade/SQLServer/sql202408090103.sql new file mode 100644 index 000000000..d6c193e59 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202408090103.sql @@ -0,0 +1,41 @@ +CREATE TABLE hrsa_variable_archive_item ( + id bigint NOT NULL, + employee_id bigint NOT NULL, + variable_archive_id bigint NOT NULL, + variable_item_id bigint NOT NULL, + item_value varchar(255) NULL, + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) +GO + +CREATE TABLE hrsa_variable_archive ( + id bigint NOT NULL, + employee_id bigint NULL, + salary_month datetime NULL , + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) +GO + +CREATE TABLE hrsa_variable_item ( + id bigint NOT NULL, + name varchar(255) NOT NULL, + code varchar(255) NOT NULL, + data_type varchar(20)NULL , + create_time datetime NOT NULL, + update_time datetime NOT NULL, + creator bigint NOT NULL, + delete_type int NOT NULL, + tenant_key varchar(10) NULL, + PRIMARY KEY (id) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202408120703.sql b/resource/sqlupgrade/SQLServer/sql202408120703.sql new file mode 100644 index 000000000..00e88826e --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202408120703.sql @@ -0,0 +1,2 @@ +alter table hrsa_variable_archive add tax_agent_id bigint +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202408140203.sql b/resource/sqlupgrade/SQLServer/sql202408140203.sql new file mode 100644 index 000000000..71911a3f3 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202408140203.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD target varchar(4000) NULL +GO + +ALTER TABLE hrsa_salary_sob_range ADD target varchar(4000) NULL +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202409130201.sql b/resource/sqlupgrade/SQLServer/sql202409130201.sql new file mode 100644 index 000000000..a60fae14e --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202409130201.sql @@ -0,0 +1,16 @@ +delete from HtmlLabelIndex where id = 548025 and ( indexdesc is null or indexdesc = '' ) +GO +insert into HtmlLabelIndex(id,indexdesc) select top 1 548025,'検強方象' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( indexdesc is not null and indexdesc <> '' )) +GO +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is null or labelname = '' ) +GO +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select top 1 548025 as indexid ,'検強方象' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( labelname is not null and labelname <> '' )) +GO +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is null or labelname = '' or labelname like '%[濆-恙]%' ) +GO +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select top 1 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( labelname is not null and labelname <> '' and labelname not like '%[濆-恙]%' )) +GO +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is null or labelname = '' ) +GO +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select top 1 548025 as indexid ,'検' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( labelname is not null and labelname <> '' )) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202409130302.sql b/resource/sqlupgrade/SQLServer/sql202409130302.sql new file mode 100644 index 000000000..81608c0b6 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202409130302.sql @@ -0,0 +1,10 @@ +Delete from LeftMenuInfo where id=100219 +GO +Delete from LeftMenuConfig where infoid=100219 +GO +EXECUTE LMConfig_U_ByInfoInsert 2,100126,0 +GO +EXECUTE LMInfo_Insert 100219,548025,'','',2,100126,7,2 +GO +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410100103.sql b/resource/sqlupgrade/SQLServer/sql202410100103.sql new file mode 100644 index 000000000..f2820af3a --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410100103.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_acct_result_template ADD type int NULL +GO + +update hrsa_acct_result_template set type = 0 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202410110103.sql b/resource/sqlupgrade/SQLServer/sql202410110103.sql new file mode 100644 index 000000000..8a2dae190 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410110103.sql @@ -0,0 +1,12 @@ +create table hrsa_page_list_setting +( + id bigint primary key , + setting ntext , + page varchar(200), + 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/SQLServer/sql202410170303.sql b/resource/sqlupgrade/SQLServer/sql202410170303.sql new file mode 100644 index 000000000..23c230163 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202410170303.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_salary_acct_emp ADD lock_items varchar(4000) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202303130202.sql b/resource/sqlupgrade/ST/sql202303130202.sql deleted file mode 100644 index 9038f9cd1..000000000 --- a/resource/sqlupgrade/ST/sql202303130202.sql +++ /dev/null @@ -1,14 +0,0 @@ -Delete from LeftMenuInfo where id=100186; -/ - -Delete from LeftMenuConfig where infoid=100186; -/ - -call LMConfig_U_ByInfoInsert (2,100118,9); -/ - -call LMInfo_Insert (100186,541290,'','',2,100118,9,18); -/ - -update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/externalPersonManage' where id = 100186; -/ \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202408090103.sql b/resource/sqlupgrade/ST/sql202408090103.sql new file mode 100644 index 000000000..c7f9f1c64 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202408090103.sql @@ -0,0 +1,42 @@ +CREATE TABLE hrsa_variable_archive ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NULL , + salary_month DATE NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_archive_item ( + id NUMBER(38,0) NOT NULL, + employee_id NUMBER(38,0) NOT NULL, + variable_archive_id NUMBER(38,0) NOT NULL, + variable_item_id NUMBER(38,0) NOT NULL, + item_value varchar2(255) NULL , + create_time DATE NOT NULL , + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL , + tenant_key varchar2(10) NULL, + PRIMARY KEY (id) +); +/ + +CREATE TABLE hrsa_variable_item ( + id NUMBER(38,0) NOT NULL , + name varchar2(255) NOT NULL , + code varchar2(255) NOT NULL, + data_type varchar2(20) NULL, + create_time DATE NOT NULL, + update_time DATE NOT NULL, + creator NUMBER(38,0) NOT NULL, + delete_type int NOT NULL, + tenant_key varchar2(10) NULL , + PRIMARY KEY (id) +); +/ + diff --git a/resource/sqlupgrade/ST/sql202408120703.sql b/resource/sqlupgrade/ST/sql202408120703.sql new file mode 100644 index 000000000..00332785c --- /dev/null +++ b/resource/sqlupgrade/ST/sql202408120703.sql @@ -0,0 +1,3 @@ +alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0); +/ + diff --git a/resource/sqlupgrade/ST/sql202408140203.sql b/resource/sqlupgrade/ST/sql202408140203.sql new file mode 100644 index 000000000..98a8d5a20 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +); +/ + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +); +/ + diff --git a/resource/sqlupgrade/ST/sql202409130201.sql b/resource/sqlupgrade/ST/sql202409130201.sql new file mode 100644 index 000000000..ee19534ed --- /dev/null +++ b/resource/sqlupgrade/ST/sql202409130201.sql @@ -0,0 +1,24 @@ +delete from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is null ) ; +/ + +insert into HtmlLabelIndex(id,indexdesc) select 548025,'検強方象' from HtmlLabelIndex where not exists (select id from HtmlLabelIndex where id = 548025 and ( trim(indexdesc) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検強方象' as content,7 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=7 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is null or length(labelname)!=lengthb(labelname) ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'Floating Data' as content,8 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=8 and ( trim(labelname) is not null and length(labelname)=lengthb(labelname) )) and rownum = 1 ; +/ + +delete from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is null ) ; +/ + +insert into HtmlLabelInfo(indexid,labelname,languageid) select * from (select 548025 as indexid ,'検' as content,9 as languageid from HtmlLabelInfo) t where not exists (select indexid,languageid from HtmlLabelInfo where indexid = 548025 and languageid=9 and ( trim(labelname) is not null )) and rownum = 1 ; +/ + diff --git a/resource/sqlupgrade/ST/sql202409130302.sql b/resource/sqlupgrade/ST/sql202409130302.sql new file mode 100644 index 000000000..f9f4f825d --- /dev/null +++ b/resource/sqlupgrade/ST/sql202409130302.sql @@ -0,0 +1,15 @@ +Delete from LeftMenuInfo where id=100219; +/ + +Delete from LeftMenuConfig where infoid=100219; +/ + +call LMConfig_U_ByInfoInsert (2,100126,0); +/ + +call LMInfo_Insert (100219,548025,'','',2,100126,7,2); +/ + +update LeftMenuInfo set mobxrouteurl = '',iconClassName = '',fullrouteurl='/spa/hrmSalary/static/index.html#/main/hrmSalary/variableSalary' where id = 100219; +/ + diff --git a/resource/sqlupgrade/ST/sql202410100103.sql b/resource/sqlupgrade/ST/sql202410100103.sql new file mode 100644 index 000000000..4d36ef44a --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410100103.sql @@ -0,0 +1,8 @@ +ALTER TABLE hrsa_acct_result_template ADD ( + type number NULL +); +/ + +update hrsa_acct_result_template set type = 0; +/ + diff --git a/resource/sqlupgrade/ST/sql202410110103.sql b/resource/sqlupgrade/ST/sql202410110103.sql new file mode 100644 index 000000000..80fd04daf --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410110103.sql @@ -0,0 +1,13 @@ +create table hrsa_page_list_setting +( + id number primary key , + setting clob , + page varchar2(200), + creator number, + create_time date , + update_time date, + delete_type int , + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/ST/sql202410170303.sql b/resource/sqlupgrade/ST/sql202410170303.sql new file mode 100644 index 000000000..59556ae32 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202410170303.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL; +/ + diff --git a/resource/wiki/ゆ。罅.txt b/resource/wiki/ゆ。罅.txt index 2ac8d7d2c..a3a0c6dbd 100644 --- a/resource/wiki/ゆ。罅.txt +++ b/resource/wiki/ゆ。罅.txt @@ -20,6 +20,9 @@ update hrsa_salary_archive set delete_type=3 where tax_agent_id=g軸箙>査 篋ゅ綏ユ。罅 update hrsa_salary_archive set delete_type=3 where run_status in ('STOP_FROM_PENDING','STOP_FROM_SUSPEND') +篋ゅ綏ョぞ篆罅f +update hrsa_insurance_base_info set delete_type=3 where run_status in ('4','5') + 筝ゆ絎篋阪罅f diff --git a/resource/wiki/絽悟ヨ.md b/resource/wiki/絽悟ヨ.md index 13ba2242f..71f4f51a6 100644 --- a/resource/wiki/絽悟ヨ.md +++ b/resource/wiki/絽悟ヨ.md @@ -10,6 +10,14 @@ left join hrsa_tax_agent agent on agent.id=sob.tax_agent_id and agent.delete_typ left join hrmresource e on e.id= result.employee_id +select e.lastname, record.salary_month as 莎, item.name as 莎蕁 ,result.result_value as +from hrsa_salary_acct_record record +left join hrsa_salary_acct_result result on record.id = result.salary_acct_record_id and result.delete_type = 0 and record.delete_type = 0 +left join hrsa_salary_item item on result.salary_item_id = item.id and item.delete_type = 0 +left join hrmresource e on e.id= result.employee_id +where item.name = '綏ヨ莅' + + # キ罅f篆≧ select i.item_value from hrsa_salary_archive_item i diff --git a/resource/wiki/絮/hrmSalaryCustom.properties b/resource/wiki/絮/hrmSalaryCustom.properties index 6294cc5c3..e23e93c1f 100644 --- a/resource/wiki/絮/hrmSalaryCustom.properties +++ b/resource/wiki/絮/hrmSalaryCustom.properties @@ -1 +1,2 @@ -formulaRunOvertimeThreshold= \ No newline at end of file +formulaRunOvertimeThreshold=100 +personNumberInOneThread = 100 \ No newline at end of file diff --git a/src/com/api/salary/web/VariableArchiveController.java b/src/com/api/salary/web/VariableArchiveController.java new file mode 100644 index 000000000..ccf82cd89 --- /dev/null +++ b/src/com/api/salary/web/VariableArchiveController.java @@ -0,0 +1,8 @@ +package com.api.salary.web; + +import javax.ws.rs.Path; + +@Path("/bs/hrmsalary/variableSalary") +public class VariableArchiveController extends com.engine.salary.web.VariableArchiveController { + +} diff --git a/src/com/api/salary/web/VariableItemController.java b/src/com/api/salary/web/VariableItemController.java new file mode 100644 index 000000000..6c3063aea --- /dev/null +++ b/src/com/api/salary/web/VariableItemController.java @@ -0,0 +1,8 @@ +package com.api.salary.web; + +import javax.ws.rs.Path; + +@Path("/bs/hrmsalary/variableSalaryItem") +public class VariableItemController extends com.engine.salary.web.VariableItemController { + +} diff --git a/src/com/engine/salary/action/RehireAction.java b/src/com/engine/salary/action/RehireAction.java index ac236b54a..a2410578c 100644 --- a/src/com/engine/salary/action/RehireAction.java +++ b/src/com/engine/salary/action/RehireAction.java @@ -107,7 +107,7 @@ public class RehireAction implements Action { Long taxAgentId = taxAgentPOS.get(0).getId(); Long employeeId = Long.valueOf(empIdStr); List salaryArchivePOS = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(employeeId).build()); - if (CollectionUtils.isEmpty(salaryArchivePOS)){ + if (CollectionUtils.isEmpty(salaryArchivePOS) || salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())){ // 贋・莎医action罅f InitSalaryAction initSalaryAction = new InitSalaryAction(); return initSalaryAction.doSalaryArchiveInit(requestInfo, salaryFieldMap); diff --git a/src/com/engine/salary/biz/EmployBiz.java b/src/com/engine/salary/biz/EmployBiz.java index 8f731c242..6de561546 100644 --- a/src/com/engine/salary/biz/EmployBiz.java +++ b/src/com/engine/salary/biz/EmployBiz.java @@ -118,6 +118,19 @@ public class EmployBiz extends BaseBean { } } + public PositionInfo getPositionInfoById(Long positionId) { + if (positionId == null) { + return null; + } + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + EmployMapper mapper = sqlSession.getMapper(EmployMapper.class); + return mapper.getPositionInfoById(positionId); + } finally { + sqlSession.close(); + } + } + public List listByParams(List includeQueryParams) { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { @@ -187,6 +200,20 @@ public class EmployBiz extends BaseBean { } } + public SubCompanyInfo getSubCompanyInfoById(Long subCompanyId) { + if (subCompanyId == null) { + return null; + } + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + EmployMapper mapper = sqlSession.getMapper(EmployMapper.class); + return mapper.getSubCompanyInfoById(subCompanyId); + } finally { + sqlSession.close(); + } + } + + public List listAllForReport() { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { @@ -206,4 +233,15 @@ public class EmployBiz extends BaseBean { sqlSession.close(); } } + + public DeptInfo getDeptInfoById(Long departmentId) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + EmployMapper mapper = sqlSession.getMapper(EmployMapper.class); + return mapper.getDeptInfoById(departmentId); + } finally { + sqlSession.close(); + } + } + } diff --git a/src/com/engine/salary/cache/SalaryCacheKey.java b/src/com/engine/salary/cache/SalaryCacheKey.java index 642a499c7..4d0d19280 100644 --- a/src/com/engine/salary/cache/SalaryCacheKey.java +++ b/src/com/engine/salary/cache/SalaryCacheKey.java @@ -70,4 +70,7 @@ public class SalaryCacheKey { public final static String SALARY_REPORT_DATA = "SALARY_REPORT_DATA_"; + public final static String UPLOAD_SALARY_CONFIG = "UPLOAD_SALARY_CONFIG"; + + } diff --git a/src/com/engine/salary/constant/SalaryDefaultTenantConstant.java b/src/com/engine/salary/constant/SalaryDefaultTenantConstant.java index 184ccee40..4e60d65e0 100644 --- a/src/com/engine/salary/constant/SalaryDefaultTenantConstant.java +++ b/src/com/engine/salary/constant/SalaryDefaultTenantConstant.java @@ -1,12 +1,13 @@ package com.engine.salary.constant; /** - * @description: 藥莅ょ腱key - * @author: xiajun - * @modified By: xiajun - * @date: Created in 2/8/22 11:25 AM - * @version:v1.0 - */ + * 藥莅ょ + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ public class SalaryDefaultTenantConstant { public static final String DEFAULT_TENANT_KEY = "all_teams"; diff --git a/src/com/engine/salary/constant/SalaryItemConstant.java b/src/com/engine/salary/constant/SalaryItemConstant.java index 217f1d4ea..58840b5f3 100644 --- a/src/com/engine/salary/constant/SalaryItemConstant.java +++ b/src/com/engine/salary/constant/SalaryItemConstant.java @@ -15,6 +15,11 @@ public class SalaryItemConstant { */ public static final String DYNAMIC_SUFFIX = "_salaryItem"; + /** + * 茵筝羌莎蕁合膽莚 + */ + public static final String VARIABLE_ITEM_DYNAMIC_SUFFIX = "_variableItem"; + /** * 莎悟絲弱ョ絖茵紊翫罧key */ diff --git a/src/com/engine/salary/entity/config/SalaryConfig.java b/src/com/engine/salary/entity/config/SalaryConfig.java new file mode 100644 index 000000000..175f6426f --- /dev/null +++ b/src/com/engine/salary/entity/config/SalaryConfig.java @@ -0,0 +1,49 @@ +package com.engine.salary.entity.config; + +import com.engine.salary.entity.salaryarchive.config.ArchiveFieldConfig; +import com.engine.salary.entity.salaryitem.config.SalaryItemAllConfig; +import com.engine.salary.entity.taxagent.config.TaxAgentConfig; +import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; +import com.engine.salary.sys.config.SysConfig; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("SalaryConfig") +public class SalaryConfig { + // // +// @XStreamAlias("version") +// @XStreamAsAttribute +// private String version; +// + @XStreamAlias("SysConfig") + private SysConfig sysConfig; + + //腓鞘号 + + //莎蕁合 + @XStreamAlias("SalaryItemConfig") + private SalaryItemAllConfig salaryItemConfig; + + //絖罧窮∞ + @XStreamAlias("ArchiveFieldConfig") + private ArchiveFieldConfig archiveFieldConfig; + + //榊莅丞舟 + @XStreamAlias("TaxAgentBaseConfig") + private TaxAgentBasePO taxAgentBaseConfig; + + //g軸箙>査 + @XStreamImplicit + private List taxAgentConfigs; + +} diff --git a/src/com/engine/salary/entity/datacollection/bo/AttendQuoteDataBO.java b/src/com/engine/salary/entity/datacollection/bo/AttendQuoteDataBO.java index 144ed4c0e..5b67306ca 100644 --- a/src/com/engine/salary/entity/datacollection/bo/AttendQuoteDataBO.java +++ b/src/com/engine/salary/entity/datacollection/bo/AttendQuoteDataBO.java @@ -36,6 +36,10 @@ public class AttendQuoteDataBO { continue; } String key = field.getCode(); + //弱劫阪ょ罨∞key + if(key.startsWith("attendanceSerial_")){ + key = key.replace("attendanceSerial_", ""); + } if (m.containsKey(key)) { Map map = new LinkedHashMap<>(); map.put("employeeId", m.get("resourceId")); diff --git a/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java new file mode 100644 index 000000000..f9d8345c8 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveBO.java @@ -0,0 +1,281 @@ +package com.engine.salary.entity.datacollection.bo; + +import com.cloudstore.eccom.constant.WeaBoolAttr; +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.engine.salary.constant.SalaryItemConstant; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.util.SalaryI18nUtil; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: 羌莎罅f + * @Author: xzy + */ +public class VariableArchiveBO { + + @Override + public String toString() { + return "SalaryArchiveBO{}"; + } + + + + /** + * 綮肴;弱 + * + * @param variableItems + */ + public static List buildVariableArchiveTable(List variableItems) { + // 茵取;紊 + List columns = new ArrayList<>(); + WeaTableColumn idColumn = new WeaTableColumn("100px", "id", "id"); + idColumn.setIsPrimarykey(WeaBoolAttr.TRUE); + idColumn.setDisplay(WeaBoolAttr.FALSE); + columns.add(idColumn); + WeaTableColumn employeeIdColumn = new WeaTableColumn("100px", "篋阪篆≧茵筝脂id", "employeeId"); + employeeIdColumn.setDisplay(WeaBoolAttr.FALSE); + columns.add(employeeIdColumn); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "莎絮"), "salaryMonth")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "筝腮g軸箙>査"), "taxAgentName")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "紮"), "username")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, ""), "departmentName")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86186, "阪"), "mobile")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86185, "綏ュ"), "workcode")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86186, "莚篁九埇"), "idNo")); + columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86187, "ヨユ"), "companystartdate")); + for (VariableItemPO variableItem : variableItems) { + columns.add(new WeaTableColumn("100px", variableItem.getName(), variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX)); + } + + return columns; + } + +// /** +// * 綮肴莎罅f井 +// * +// * @param salaryArchiveList +// * @param salaryArchiveItemDataList +// * @param localDateRange +// * @param allEmployeeIds +// * @param isOnlyTaxAgent +// * @return +// */ +// public static List buildSalaryArchiveData(List salaryArchiveList, +// List salaryArchiveItemDataList, +// LocalDateRange localDateRange, +// List allEmployeeIds, +// boolean isOnlyTaxAgent) { +// // 綣紮ユ +// Date start = localDateRange.getFromDate(); +// // 膸ユ +// Date end = localDateRange.getEndDate(); +// +// List list = new ArrayList<>(); +// allEmployeeIds.forEach(e -> { +// // 筝筝篋榊罅f井 +// List salaryArchives = salaryArchiveList.stream().filter(f -> f.getEmployeeId().equals(e)).collect(Collectors.toList()); +// List salaryArchiveIds = salaryArchives.stream().map(SalaryArchivePO::getId).collect(Collectors.toList()); +// // 筝筝篋榊莎蕁合莪翫兊井 +// List salaryArchiveItems = salaryArchiveItemDataList.stream().filter(d -> salaryArchiveIds.contains(d.getSalaryArchiveId())).collect(Collectors.toList()); +// List salaryArchiveItemIds = salaryArchiveItems.stream().map(SalaryArchiveItemPO::getSalaryItemId).distinct().collect(Collectors.toList()); +// +// SalaryArchiveDataDTO salaryArchiveData = new SalaryArchiveDataDTO(); +// salaryArchiveData.setEmployeeId(e); +// List taxAgents = new ArrayList<>(); +// // 筝腮g軸箙>査ユ狗贋球 +// for (SalaryArchivePO salaryArchive : salaryArchives) { +// Date fromDate = salaryArchive.getPayStartDate(); +// Date endDate = salaryArchive.getPayEndDate(); +// // 莎桁ヤ筝榊削筝筝醇膸ユ鐚ュ腥阪筝腥削篏絋筝筝榊削絨延醇綣紮ユ鐚筝莎桁ヤ醇篋 +// boolean isEnable = fromDate != null && !fromDate.after(end) && (endDate == null || (!fromDate.after(endDate) && !endDate.before(start))); +// if (isEnable) { +// SalaryArchiveTaxAgentDataDTO taxAgent = new SalaryArchiveTaxAgentDataDTO(); +// taxAgent.setTaxAgentId(salaryArchive.getTaxAgentId()); +// // taxAgent.setIncomeCategory(salaryArchive.getIncomeCategory()); +// // taxAgent.setSalarySobIds(salaryArchiveSobList.stream().filter(sob->sob.getSalaryArchiveId().equals(salaryArchive.getId())).map(SalaryArchiveSobPO::getSalarySobId).distinct().collect(Collectors.toList())); +// taxAgent.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDate.before(start) ? start : fromDate)).endDate(endDate == null || endDate.after(end) ? end : endDate).build()); +// // 莎蕁合井筝腮g軸箙>査 +// if (!isOnlyTaxAgent) { +// // 綣紮ユ +// Date startItem = taxAgent.getEffectiveDateRange().getFromDate(); +// // 膸ユ +// Date endItem = taxAgent.getEffectiveDateRange().getEndDate(); +// Date endTempItem = endItem; +// List salaryItemValues = new ArrayList<>(); +// for (Long salaryArchiveItemId : salaryArchiveItemIds) { +// boolean flag = false; +// for (SalaryArchiveItemPO salaryArchiveItem : salaryArchiveItems) { +// if (!salaryArchiveItemId.equals(salaryArchiveItem.getSalaryItemId()) || !salaryArchiveItem.getSalaryArchiveId().equals(salaryArchive.getId())) { +// continue; +// } +// Date fromDateItem = salaryArchiveItem.getEffectiveTime(); +// if (fromDateItem.after(endTempItem) || endTempItem.before(startItem)) { +// continue; +// } +// if (endTempItem.equals(startItem) && flag) { +// continue; +// } +// SalaryArchiveItemDataDTO salaryArchiveItemData = new SalaryArchiveItemDataDTO(); +// salaryArchiveItemData.setEffectiveDateRange(LocalDateRange.builder().fromDate((fromDateItem.before(startItem) ? startItem : fromDateItem)).endDate(endTempItem).build()); +// salaryArchiveItemData.setSalaryItemId(salaryArchiveItem.getSalaryItemId()); +// salaryArchiveItemData.setValue(salaryArchiveItem.getItemValue()); +// salaryItemValues.add(salaryArchiveItemData); +// flag = true; +// endTempItem = fromDateItem; +// } +// endTempItem = endItem; +// } +// taxAgent.setSalaryItemValues(salaryItemValues); +// } +// taxAgents.add(taxAgent); +// } +// } +// salaryArchiveData.setTaxAgents(taxAgents); +// list.add(salaryArchiveData); +// }); +// +// return list; +// } +// +// /** +// * 綮阪井 +// * +// * @param taxAgentEmpChangeList +// * @param salaryArchiveList +// * @param salaryArchiveItemList +// * @param currentEmployeeId +// */ +// public static ChangeData buildChangeData(List taxAgentEmpChangeList, List salaryArchiveList, List salaryArchiveItemList, Long currentEmployeeId) { +// List changeIds = taxAgentEmpChangeList.stream().map(TaxAgentEmpChangePO::getId).collect(Collectors.toList()); +// // 号筝腮g軸箙>査篋阪篁ュ紜靏糸膸 +// Map changeTypeMap = taxAgentEmpChangeList.stream().collect(Collectors.groupingBy(change -> change.getTaxAgentId() + "-" + change.getEmployeeId() + "-" + change.getChangeType(), Collectors.counting())); +// // 蕁阪莉 +// Collections.reverse(taxAgentEmpChangeList); +// // サ +// taxAgentEmpChangeList = taxAgentEmpChangeList.stream() +// .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getTaxAgentId() + "-" + f.getEmployeeId()))), ArrayList::new)); +// List taxAgentEmpChanges = taxAgentEmpChangeList +// .stream() +// // 筝悟篆鐚綽順 +// .filter(change -> !Objects.equals(changeTypeMap.get(change.getTaxAgentId() + "-" + change.getEmployeeId() + "-" + TaxAgentEmpChangeTypeEnum.ADD.getValue()) +// , changeTypeMap.get(change.getTaxAgentId() + "-" + change.getEmployeeId() + "-" + TaxAgentEmpChangeTypeEnum.DEL.getValue()))) +// .collect(Collectors.toList()); +// +// Date now = new Date(); +// Date today = new Date(); +// List stopStatus = Arrays.asList(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()); +// List salaryArchiveAddTodoList = Lists.newArrayList(); +// List salaryArchiveUpdateTodoList = Lists.newArrayList(); +// List salaryArchiveItemAddTodos = Lists.newArrayList(); +// +// Map salaryArchiveListMap = SalaryEntityUtil.convert2Map(salaryArchiveList, k -> k.getTaxAgentId() + "-" + k.getEmployeeId()); +// taxAgentEmpChanges.forEach(change -> { +// SalaryArchivePO salaryArchive = salaryArchiveListMap.get(change.getTaxAgentId() + "-" + change.getEmployeeId()); +// // 絋医 莚贋鐚絋羃≧罅f鐚医鐚絋罅f筝鐚絨掩医絎筝鐚篁ヤ肩腮g軸箙>査篋阪idゆ筝 +// if (change.getChangeType() == TaxAgentEmpChangeTypeEnum.ADD.getValue()) { +// if (salaryArchive != null) { +// // 筝莊喝緇絎鐚篁a莪b莪a鐚ゅ荀 +// if (stopStatus.contains(salaryArchive.getRunStatus())) { +// // 莊喝緇絎 +// salaryArchive.setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); +// if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { +// salaryArchive.setPayStartDate(today); +// salaryArchive.setPayEndDate(null); +// } +// salaryArchiveUpdateTodoList.add(salaryArchive); +// // 緇医絨沿紊倶亥莎蕁合 +// if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { +// // 決亥莎蕁合井 +// List salaryArchiveItemValuelList = salaryArchiveItemList.stream().filter(i -> i.getSalaryArchiveId().equals(salaryArchive.getId())).collect(Collectors.toList()); +// salaryArchiveItemValuelList.forEach(i -> { +// salaryArchiveItemAddTodos.add(SalaryArchiveItemPO.builder() +// .id(IdGenerator.generate()) +// .salaryArchiveId(salaryArchive.getId()) +// .employeeId(salaryArchive.getEmployeeId()) +// .effectiveTime(today) +// .adjustReason(SalaryArchiveItemAdjustReasonEnum.INIT.getValue()) +// .salaryItemId(i.getSalaryItemId()) +// .itemValue(i.getItemValue()) +// .description("") +// // 筝莅丞舟篏篋 +// .operateTime(now) +// .createTime(now) +// .updateTime(now) +// .creator(currentEmployeeId) +// .deleteType(NumberUtils.INTEGER_ZERO) +// .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) +// .build()); +// }); +// } +// } +// } else { +// salaryArchiveAddTodoList.add(SalaryArchivePO.builder() +// .id(IdGenerator.generate()) +// .employeeId(change.getEmployeeId()) +// .taxAgentId(change.getTaxAgentId()) +// .employeeType(change.getEmployeeType()) +// .runStatus(SalaryArchiveStatusEnum.PENDING.getValue()) +// // .incomeCategory(IncomeCategoryEnum.WAGES_AND_SALARIES.getValue()) +// // .modifier(0L) +// .createTime(now) +// .updateTime(now) +// .creator(currentEmployeeId) +// .deleteType(NumberUtils.INTEGER_ZERO) +// .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) +// .build()); +// } +// // 絋 莚贋鐚絋罅f綛銀絎茵紊鐚羃≧。罅筝膊 +// } else if (change.getChangeType() == TaxAgentEmpChangeTypeEnum.DEL.getValue()) { +// if (salaryArchive != null) { +// if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.FIXED.getValue())) { +// // 莊喝医 +// salaryArchive.setRunStatus(SalaryArchiveStatusEnum.SUSPEND.getValue()); +// // salaryArchive.setPayEndDate(today); +// salaryArchiveUpdateTodoList.add(salaryArchive); +// } else if (salaryArchive.getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())) { +// // 莊喝医 +// salaryArchive.setRunStatus(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue()); +// salaryArchiveUpdateTodoList.add(salaryArchive); +// } +// } +// } +// }); +// +// return ChangeData.builder() +// .salaryArchiveAddTodoList(salaryArchiveAddTodoList) +// .salaryArchiveUpdateTodoList(salaryArchiveUpdateTodoList) +// .salaryArchiveItemAddTodos(salaryArchiveItemAddTodos) +// .changeIds(changeIds) +// .build(); +// } +// +// @Data +// @Builder +// @NoArgsConstructor +// @AllArgsConstructor +// public static class ChangeData { +// +// /** +// * 拷鋓壕莎罅f +// */ +// private List salaryArchiveAddTodoList; +// +// /** +// * 拷医莎罅f +// */ +// private List salaryArchiveUpdateTodoList; +// +// /** +// * 遵紊莎蕁合 +// */ +// private List salaryArchiveItemAddTodos; +// +// /** +// * ゅ井 +// */ +// private List changeIds; +// } + +} diff --git a/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java new file mode 100644 index 000000000..313ddc1d4 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/bo/VariableArchiveExcelBO.java @@ -0,0 +1,315 @@ +package com.engine.salary.entity.datacollection.bo; + +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryArchiveConstant; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import com.engine.salary.entity.datacollection.po.VariableArchivePO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.IdGenerator; +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import weaver.general.Util; +import weaver.hrm.User; + +import java.util.*; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +/** + * @Description: 羌莎罅f-excel + * @Author: xzy + * @Date: 2024-08-08 10:51 + */ +public class VariableArchiveExcelBO extends Service { + + public static String userNameI18n; + public static String departmentI18n; + public static String jobNumI18n; + public static String hrStatusI18n; + public static String repeatMsg; + public static String taxAgentI18n; + public static String taxAgentRangeMsg; + public static String empRepeatMsg; + + public static String notEmptyI18n; + + public static String incomeCategoryI18n; + public static String salarySobI18n; + public static String effectiveTimeI18n; + public static String payStartDateI18n; + public static String payEndDateI18n; + public static String adjustReasonI18n; + public static String listTypeErrMsg; + public static String taxAgentNoExist; + public static String incomeCategoryNoExist; + public static String currSalarySobI18n; + public static String noExist; + public static String effectiveTimeErr; + public static String adjustReasonNoExist; + public static String dateErr; + public static String payStartUnableAfterEnd; + + public static String salaryItemNoBeforeCurrentEffectiveTime; + public static String salaryItemAdjustNoSame; + public static String salaryItemAdjustNoSameIneffective; + + public static String salaryArchiveErr; + public static String numberErr; + + /** + * 紮i18n + */ + public static void initI18n() { + userNameI18n = SalaryI18nUtil.getI18nLabel(85429, "紮"); + departmentI18n = SalaryI18nUtil.getI18nLabel(86185, ""); + jobNumI18n = SalaryI18nUtil.getI18nLabel(86317, "綏ュ"); + hrStatusI18n = SalaryI18nUtil.getI18nLabel(109332, "篋坂倶"); + repeatMsg = "[" + Joiner.on(",").join(new List[]{Arrays.asList(userNameI18n, departmentI18n, jobNumI18n, hrStatusI18n)}) + "]"; + taxAgentI18n = SalaryI18nUtil.getI18nLabel(86184, "筝腮g軸箙>査"); + taxAgentRangeMsg = SalaryI18nUtil.getI18nLabel(132633, "莚ュ綏ヤ莚ヤ肩腮g軸箙>査篋阪岩賢") + "," + SalaryI18nUtil.getI18nLabel(127308, "莚傑") + repeatMsg; + empRepeatMsg = SalaryI18nUtil.getI18nLabel(121899, "綏ヤ拭紊鐚莚傑") + repeatMsg; + + notEmptyI18n = SalaryI18nUtil.getI18nLabel(100577, "筝巡減腥"); + + incomeCategoryI18n = SalaryI18nUtil.getI18nLabel(121908, "九ユ緇蕁合"); + salarySobI18n = SalaryI18nUtil.getI18nLabel(87889, "莎茣絅"); + effectiveTimeI18n = SalaryI18nUtil.getI18nLabel(85904, "ユ"); + payStartDateI18n = SalaryI18nUtil.getI18nLabel(109527, "莎桁ユ"); + payEndDateI18n = SalaryI18nUtil.getI18nLabel(109329, "ユ"); + adjustReasonI18n = SalaryI18nUtil.getI18nLabel(85431, "莪翫"); + + listTypeErrMsg = SalaryI18nUtil.getI18nLabel(115527, "莚ユ≧井筝膃綵茵絲弱ヨ羆銀茵絖莚ユ。罅鐚筝絲弱"); + + taxAgentNoExist = SalaryI18nUtil.getI18nLabel(100545, "筝腮g軸箙>査筝絖"); + incomeCategoryNoExist = SalaryI18nUtil.getI18nLabel(121923, "九ユ緇蕁合筝絖"); + + currSalarySobI18n = SalaryI18nUtil.getI18nLabel(127213, "莚ユ九ユ緇蕁合"); + noExist = SalaryI18nUtil.getI18nLabel(127236, "筝絖"); + + effectiveTimeErr = SalaryI18nUtil.getI18nLabel(102497, "ユ莚弱鋇罩g`鐚罩g`弱霚坂筝'2022-01-01''2022/1/1'"); + adjustReasonNoExist = SalaryI18nUtil.getI18nLabel(100591, "莪翫筝絖"); + + dateErr = SalaryI18nUtil.getI18nLabel(109819, "ユ莚弱鋇罩g`鐚罩g`弱霚坂筝'2022-01-01''2022/1/1'"); + + payStartUnableAfterEnd = SalaryI18nUtil.getI18nLabel(109214, "莎桁ユ筝篋"); + + salaryItemNoBeforeCurrentEffectiveTime = SalaryI18nUtil.getI18nLabel(100429, "ユ筝篋綵綏牙莪贋ユ"); + salaryItemAdjustNoSame = SalaryI18nUtil.getI18nLabel(100432, "莪翫筝後"); + salaryItemAdjustNoSameIneffective = SalaryI18nUtil.getI18nLabel(100434, "筝莪翫筝後"); + + salaryArchiveErr = SalaryI18nUtil.getI18nLabel(101723, "莚ュ綏ョ莎罅f莅医莚鐚莚傑"); + numberErr = SalaryI18nUtil.getI18nLabel(100581, "莚決ユ医"); + + } + + + /** + * ♂茵井 + * + * @param map + * @param headers + * @param excelComments + * @param errorCount + * @param importHandleParam + * @return + */ + public static boolean singleRowCheck(List allTodoVariableArchives, + Map map, + List headers, + List> excelComments, + int errorCount, + VariableArchiveImportHandleParam importHandleParam, + User user) { + + boolean isError = false; + String rowindex = "膃" + map.get("index") + "茵"; + // 1.紮 + String userName = Optional.ofNullable(map.get(userNameI18n)).orElse("").toString(); + String deparmentName = Optional.ofNullable(map.get(departmentI18n)).orElse("").toString(); + String mobileName = Optional.ofNullable(map.get("阪")).orElse("").toString(); + String workcode = Optional.ofNullable(map.get("綏ュ")).orElse("").toString(); + String idNo = Optional.ofNullable(map.get("莚篁九埇")).orElse("").toString(); + + String validType = importHandleParam.getEmpValidType(); + List emps = new ArrayList<>(); + if ("0".equals(validType)) { + //0篁h;紮++阪埇拷鐚1篁h;綏ュ垬減筝拷 + emps = importHandleParam.getEmployees().stream().filter(e -> + (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) + && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName)) + && (StringUtils.isBlank(mobileName) || Objects.equals(e.getMobile(), mobileName))).collect(Collectors.toList()); + } else if ("1".equals(validType)) { + emps = importHandleParam.getEmployees().stream().filter(e -> (StringUtils.isBlank(workcode) || Objects.equals(e.getWorkcode(), workcode))) + .collect(Collectors.toList()); + } + else if ("2".equals(validType)) { + emps = importHandleParam.getEmployees().stream().filter(e -> (StringUtils.isBlank(idNo) || Objects.equals(e.getIdNo(), idNo))) + .collect(Collectors.toList()); + } + + List employeeSameIds = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { + employeeSameIds = emps.stream().filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())).map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { + employeeSameIds = emps.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); + } + Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 && employeeSameIds.get(0) > 0 ? employeeSameIds.get(0) : null; + + if (employeeId == null) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + "ユ鞘査紊沿乾鐚莚欠`絎紮阪垽g`筝筝"); + excelComments.add(errorMessageMap); + isError = true; + return isError; + } + + // 筝腮g軸箙>査 + String taxAgentCellVal = Optional.ofNullable(map.get(taxAgentI18n)).orElse("").toString(); + map.put("taxAgent", taxAgentCellVal); + Optional optionalTaxAgent = importHandleParam.getTaxAgentList().stream().filter(m -> m.getTaxAgentName().equals(taxAgentCellVal)).findFirst(); + if (!optionalTaxAgent.isPresent()) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + "筝腮g軸箙>査筝絖鐚筝翫"); + excelComments.add(errorMessageMap); + isError = true; + return isError; + } + Long taxAgentId = optionalTaxAgent.get().getTaxAgentId(); + map.put("taxAgentId", taxAgentId); + + // 篋紮絲弱ユ井♂ + map.put("employeeId", employeeId); + String repeatKey = optionalTaxAgent.get().getTaxAgentId() + "-" + employeeId.toString(); + if (allTodoVariableArchives.contains(repeatKey)) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + "絖紊井"); + excelComments.add(errorMessageMap); + isError = true; + return isError; + } else { + allTodoVariableArchives.add(repeatKey); + } + + // 綮肴莎罅f + VariableArchivePO finalVariableArchive = buildVariableArchive(employeeId, taxAgentId, importHandleParam); + map.put("variableArchiveId", finalVariableArchive.getId()); + List needDelArchiveItemIds = new ArrayList<>(); + for (int j = 0; j < headers.size(); j++) { + String header = headers.get(j); + Object key = header; + if (key == null) { + continue; + } + String cellVal = Optional.ofNullable(map.get(key.toString())).orElse("").toString(); + + + boolean isNotEmpty = StringUtils.isNotEmpty(cellVal); + // 1.紮紊 + if (isNotEmpty && userNameI18n.equals(key.toString())) { + if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + header + empRepeatMsg); + excelComments.add(errorMessageMap); + isError = true; + } + } else { + // 羌莎蕁合井 + if (!isError) { + Optional optionalVariableItem = importHandleParam.getVariableItems().stream().filter(e -> Util.formatMultiLang(e.getName(), String.valueOf(user.getLanguage())).equals(key)).findFirst(); + + if (optionalVariableItem.isPresent()) { + VariableItemPO variableItemPO = optionalVariableItem.get(); + // 医主瓜ゆ + boolean isNotNumber = variableItemPO.getDataType().equals(SalaryArchiveFieldTypeEnum.NUMBER.getValue()) && StringUtils.isNotEmpty(cellVal) && !Pattern.matches(SalaryArchiveConstant.NUMBER_REGEX, cellVal); + if (isNotNumber) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowindex + key + numberErr); + excelComments.add(errorMessageMap); + isError = true; + } + Long variableItemId = variableItemPO.getId(); + // 綏牙 + List effectiveList = Optional.ofNullable(importHandleParam.getEffectiveItemListMap().get(finalVariableArchive.getId() + "-" + variableItemId)).orElse(Lists.newArrayList()); + // ゅ医 + needDelArchiveItemIds.addAll(effectiveList.stream().map(VariableArchiveItemPO::getId).collect(Collectors.toList())); + + // 絲弱ユ銀荀紊蕁合 + boolean isInitNull = CollectionUtils.isEmpty(effectiveList) && StringUtils.isEmpty(cellVal); + if (!isError && !isInitNull && StringUtils.isNotBlank(cellVal)) { + importHandleParam.getVariableArchiveItemSaves().add(VariableArchiveItemPO.builder() + .id(IdGenerator.generate()) + .employeeId(finalVariableArchive.getEmployeeId()) + .variableArchiveId(finalVariableArchive.getId()) + .variableItemId(variableItemId) + .itemValue(cellVal) + .creator(importHandleParam.getCurrentEmployeeId()) + .createTime(importHandleParam.getNowTime()) + .updateTime(importHandleParam.getNowTime()) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + } + } + } + } + } + + // 絋綵♂茵羃♂蘂,篆壕儀紮ユ膸ユ膈 + if (isError) { + // 絨∽兄絅順井膸菴羯ゆ + importHandleParam.setVariableArchiveSaves(importHandleParam.getVariableArchiveSaves().stream().filter(f -> !finalVariableArchive.getId().equals(f.getId())).collect(Collectors.toList())); + importHandleParam.setVariableArchiveItemSaves(importHandleParam.getVariableArchiveItemSaves().stream().filter(f -> !finalVariableArchive.getId().equals(f.getVariableArchiveId())).collect(Collectors.toList())); + } else { + importHandleParam.getVariableArchiveItemDelSalaryItemIds().addAll(needDelArchiveItemIds); + } + + return isError; + } + + + /** + * 綮堺貴莎罅f絲壕院 + * + * @param employeeId + * @param taxAgentId + * @param importHandleParam + * @return + */ + public static VariableArchivePO buildVariableArchive(Long employeeId, Long taxAgentId, VariableArchiveImportHandleParam importHandleParam) { + VariableArchivePO variableArchivePO = importHandleParam.getVariableArchivesMap().get(taxAgentId + "-" + employeeId); + if (variableArchivePO == null) { + // 医羌罅f + variableArchivePO = VariableArchivePO.builder() + .id(IdGenerator.generate()) + .employeeId(employeeId) + .taxAgentId(taxAgentId) + .salaryMonth(importHandleParam.getSalaryMonthDate()) + .createTime(importHandleParam.getNowTime()) + .updateTime(importHandleParam.getNowTime()) + .creator(importHandleParam.getCurrentEmployeeId()) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + importHandleParam.getVariableArchiveSaves().add(variableArchivePO); + } + return variableArchivePO; + } + + + @Override + public String toString() { + return "SalaryArchiveExcelBO{}"; + } +} diff --git a/src/com/engine/salary/entity/datacollection/dto/VariableArchiveItemDTO.java b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveItemDTO.java new file mode 100644 index 000000000..f672cf27b --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveItemDTO.java @@ -0,0 +1,33 @@ +package com.engine.salary.entity.datacollection.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 羌罅f膸 + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableArchiveItemDTO { + + private Long id; + + /** + * 羌蕁合id + */ + private Long variableItemId; + + /** + * 羌 + */ + private String itemValue; +} diff --git a/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java new file mode 100644 index 000000000..6d5905390 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/VariableArchiveListDTO.java @@ -0,0 +1,99 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.cloudstore.eccom.pc.table.WeaTableType; +import com.engine.salary.annotation.I18n; +import com.engine.salary.annotation.SalaryTable; +import com.engine.salary.annotation.TableTitle; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 羌莎罅f茵 + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@SalaryTable(pageId = "bd985583-f84j-p2aj-p288-2hw3hosy6r6,", tableType = WeaTableType.CHECKBOX) +public class VariableArchiveListDTO { + + @TableTitle(title = "id", dataIndex = "id", key = "id") + private Long id; + + @TableTitle(title = "篋阪篆≧茵筝脂id", dataIndex = "employeeId", key = "employeeId") + private Long employeeId; + + private Date salaryMonth; + + /** + * 筝腮g軸箙>査 + */ + @TableTitle(title = "筝腮g軸箙>査", dataIndex = "taxAgentName", key = "taxAgentName") + @I18n + private String taxAgentName; + + /** + * 筝腮g軸箙>査id + */ + private Long taxAgentId; + + /** + * 紮 + */ + @TableTitle(title = "紮", dataIndex = "username", key = "username") + @I18n + private String username; + + /** + * + */ + @TableTitle(title = "", dataIndex = "subcompanyName", key = "subcompanyName") + @I18n + private String subcompanyName; + + /** + * + */ + @TableTitle(title = "", dataIndex = "departmentName", key = "departmentName") + @I18n + private String departmentName; + + /** + * 笈 + */ + @TableTitle(title = "笈", dataIndex = "mobile", key = "mobile") + private String mobile; + + + /** + * 綏ュ + */ + @TableTitle(title = "綏ュ", dataIndex = "workcode", key = "workcode") + private String workcode; + + /** + * 莚篁九埇 + */ + @TableTitle(title = "莚篁九埇", dataIndex = "idNo", key = "idNo") + private String idNo; + + /** + * ヨユ + */ + private String companystartdate; + + /** + * 胼肢ユ + */ + private String dismissdate; + +} diff --git a/src/com/engine/salary/entity/datacollection/dto/VariableItemListDTO.java b/src/com/engine/salary/entity/datacollection/dto/VariableItemListDTO.java new file mode 100644 index 000000000..dc38ca99b --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/dto/VariableItemListDTO.java @@ -0,0 +1,37 @@ +package com.engine.salary.entity.datacollection.dto; + +import com.engine.salary.annotation.TableTitle; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 羌莎蕁合茵 + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableItemListDTO { + + @TableTitle(title = "id", dataIndex = "id", key = "id") + private Long id; + + @TableTitle(title = "蕁合腱", dataIndex = "name", key = "name") + private String name; + + @TableTitle(title = "絖罧窮瓜", dataIndex = "dataType", key = "dataType") + private String dataType; + + /** + * + */ + private boolean canDelete; + +} diff --git a/src/com/engine/salary/entity/datacollection/param/AttendQuoteCheckOperationParam.java b/src/com/engine/salary/entity/datacollection/param/AttendQuoteCheckOperationParam.java index 932f04064..c5d99339b 100644 --- a/src/com/engine/salary/entity/datacollection/param/AttendQuoteCheckOperationParam.java +++ b/src/com/engine/salary/entity/datacollection/param/AttendQuoteCheckOperationParam.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.time.YearMonth; +import java.util.List; /** * ゅ篁ユ篏 @@ -30,5 +31,5 @@ public class AttendQuoteCheckOperationParam { //活茣絅id @DataCheck(require = true, message = "活茣絅id綽篌") - private Long salarySobId; + private List salarySobIds; } diff --git a/src/com/engine/salary/entity/datacollection/param/AttendQuoteDataSyncParam.java b/src/com/engine/salary/entity/datacollection/param/AttendQuoteDataSyncParam.java index 3cb9020df..cfe868557 100644 --- a/src/com/engine/salary/entity/datacollection/param/AttendQuoteDataSyncParam.java +++ b/src/com/engine/salary/entity/datacollection/param/AttendQuoteDataSyncParam.java @@ -6,9 +6,11 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import java.util.Collection; +import java.util.List; /** * 井-ゅ井罩ュ @@ -28,7 +30,7 @@ public class AttendQuoteDataSyncParam { private String salaryYearMonth; //活茣絅id - private Long salarySobId; + private List salarySobIds; //茣絅紊篋阪筝脂id private Collection employeeIds; @@ -43,7 +45,7 @@ public class AttendQuoteDataSyncParam { if (StringUtils.isEmpty(saveParam.getSalaryYearMonth())) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100294, "莎絮綽篌")); } - if (saveParam.getSalarySobId() == null) { + if (CollectionUtils.isEmpty(saveParam.getSalarySobIds())) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100295, "莎茣絅綽篌")); } } diff --git a/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java b/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java new file mode 100644 index 000000000..ab12ad1a0 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableArchiveImportHandleParam.java @@ -0,0 +1,104 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import com.engine.salary.entity.datacollection.po.VariableArchivePO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeDTO; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 井-羌絲弱ュ + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableArchiveImportHandleParam { + + // 筝篌篁id + String imageId; + + // 莎絮 + String salaryMonth; + + Date salaryMonthDate; + + // --------------------------- + Long currentEmployeeId; + + String tenantKey; + + /** + * 篋阪薨莚劫 + */ + String empValidType; + + /** + * キ腱隙篋阪 + */ + List employees; + + /** + * キ茴綣羌莎蕁合 + */ + List variableItems; + + /** + * ヨ√群羌莎罅f堺井 + */ + Map variableArchivesMap; + + /** + * 羌莎蕁合id + */ + Collection variableItemIds; + + /** + * ヨ√群羌莎蕁合井 + */ + Map> effectiveItemListMap; + + /** + * キ筝腮g軸箙>査 + */ + Collection taxAgentList; + + /** + * 綵狗 + */ + Date nowTime = new Date(); + + /** + * 綵紊 + */ + Date today = new Date(); + + /** + * 緇篆絖羌莎罅f + */ + List variableArchiveSaves; + + /** + * 緇篆絖羌莎罅f-羌莎蕁合 + */ + List variableArchiveItemSaves; + + /** + * 緇ゆ貴莎罅f-羌莎蕁合 + */ + List variableArchiveItemDelSalaryItemIds; +} diff --git a/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java b/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java new file mode 100644 index 000000000..aec1d0f83 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableArchiveQueryParam.java @@ -0,0 +1,52 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.common.BaseQueryParam; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//井-羌ヨ√ +public class VariableArchiveQueryParam extends BaseQueryParam { + + // 筝脂id + private Collection ids; + + // 筝脂id + private Long id; + + // 筝腮g軸箙>査 + private List taxAgentIds; + + // 莎綛贋 + @DataCheck(require = true,message = "莎絮筝巡減腥") + private String salaryMonth; + + private Date salaryMonthDate; + + // 紮 + private String username; + + // id + private List departmentIds; + + // 綏ュ + private String workcode; + + // 筝莉醇─炊絽井 + private boolean hasData; + + private List employeeIds; + + private List columns; +} diff --git a/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java b/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java new file mode 100644 index 000000000..60e82cf91 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableArchiveSaveParam.java @@ -0,0 +1,38 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.entity.datacollection.dto.VariableArchiveItemDTO; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +//井-羌罅f篆絖 +public class VariableArchiveSaveParam { + + // 筝脂id + private Long id; + + // 莎綛贋 + @DataCheck(require = true,message = "莎絮筝巡減腥") + private String salaryMonth; + + @DataCheck(require = true,message = "箙>査id筝巡減腥") + private Long taxAgentIds; + + private Date salaryMonthDate; + + // 篋阪id + private Long employeeId; + + // 羌 + private List itemValueList; +} diff --git a/src/com/engine/salary/entity/datacollection/param/VariableItemQueryParam.java b/src/com/engine/salary/entity/datacollection/param/VariableItemQueryParam.java new file mode 100644 index 000000000..a2dcc0b0b --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableItemQueryParam.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +// 羌蕁合ヨ√ +public class VariableItemQueryParam extends BaseQueryParam { + + /** + * 羌蕁合腱 + */ + private String itemName; + + + private Long id; + + /** + * 蕁合ids + */ + private List itemIds; +} diff --git a/src/com/engine/salary/entity/datacollection/param/VariableItemSaveParam.java b/src/com/engine/salary/entity/datacollection/param/VariableItemSaveParam.java new file mode 100644 index 000000000..4b82aaef3 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/param/VariableItemSaveParam.java @@ -0,0 +1,41 @@ +package com.engine.salary.entity.datacollection.param; + +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.engine.salary.util.valid.DataCheck; +import com.engine.salary.util.valid.RuntimeTypeEnum; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author xzy + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableItemSaveParam { + + //筝脂id + @JsonSerialize(using = ToStringSerializer.class) + @DataCheck(require = true, runtime = {RuntimeTypeEnum.UPDATE}, message = "id筝莅娯減腥") + private Long id; + + //腱 + @DataCheck(require = true, max = 40, message = "腱遺莅娯減腥,腱遺処菴40筝絖膃") + private String name; + + /** + * 絖罧窮瓜 + * @see SalaryDataTypeEnum + */ + @DataCheck(require = true, message = "絖罧窮瓜筝莅娯減腥") + private String dataType; +} diff --git a/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java b/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java new file mode 100644 index 000000000..cd211f2d3 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/VariableArchiveItemPO.java @@ -0,0 +1,78 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.salary.annotation.Encrypt; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * @author Harryxzy + * @ClassName VariableArchiveItemPO + * @date 2024/08/07 9:15 + * @description 羌罅f膸 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableArchiveItemPO { + + private Long id; + + /** + * 綏id + */ + private Long employeeId; + + /** + * 羌莎罅f筝脂id + */ + private Long variableArchiveId; + + /** + * 羌蕁合id + */ + private Long variableItemId; + + /** + * 羌 + */ + @Encrypt + private String itemValue; + + /** + * 綮堺狗 + */ + private Date createTime; + + /** + * 贋井狗 + */ + private Date updateTime; + + /** + * 綮坂査 + */ + private Long creator; + + /** + * 綏峨ゃ0鐚ゃ1鐚綏峨 + */ + private Integer deleteType; + + /** + * 腱ID + */ + private String tenantKey; + + + //筝脂id + private Collection ids; + private Collection variableArchiveIds; + +} diff --git a/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java b/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java new file mode 100644 index 000000000..c078f7dbc --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/VariableArchivePO.java @@ -0,0 +1,51 @@ +package com.engine.salary.entity.datacollection.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * @author Harryxzy + * @ClassName VariableArchivePO + * @date 2024/08/07 9:16 + * @description 羌罅f + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableArchivePO { + + private Long id; + + /** + * 篋阪id + */ + private Long employeeId; + + private Long taxAgentId; + + /** + * 莎篁 + */ + private Date salaryMonth; + + private Date createTime; + + private Date updateTime; + + private Long creator; + + private Integer deleteType; + + private String tenantKey; + + //筝脂id + private Collection ids; + +} diff --git a/src/com/engine/salary/entity/datacollection/po/VariableItemPO.java b/src/com/engine/salary/entity/datacollection/po/VariableItemPO.java new file mode 100644 index 000000000..78cfa8136 --- /dev/null +++ b/src/com/engine/salary/entity/datacollection/po/VariableItemPO.java @@ -0,0 +1,58 @@ +package com.engine.salary.entity.datacollection.po; + +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +/** + * @author Harryxzy + * @ClassName VariableItemPO + * @date 2024/08/07 9:14 + * @description 羌蕁合 + */ + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class VariableItemPO { + + /** + * 羌蕁合id + */ + private Long id; + + /** + * 羌蕁合腱 + */ + private String name; + + private String code; + + /** + * 絖罧窮瓜string鐚絖膃number鐚医 + * + * @see SalaryDataTypeEnum + */ + private String dataType; + + private Date createTime; + + private Date updateTime; + + private Long creator; + + private Integer deleteType; + + private String tenantKey; + + + //筝脂id + private Collection ids; + +} diff --git a/src/com/engine/salary/entity/hrm/JobCallInfo.java b/src/com/engine/salary/entity/hrm/JobCallInfo.java new file mode 100644 index 000000000..246ba1423 --- /dev/null +++ b/src/com/engine/salary/entity/hrm/JobCallInfo.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.hrm; + +import com.engine.salary.annotation.I18n; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 腱医堺篆≧ + *

Copyright: Copyright (c) 2022

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class JobCallInfo { + + private Long id; + + /** + * 腱 + */ + @I18n + private String name; + + +} diff --git a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java index e7cc9af35..1bdae5dda 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java @@ -135,6 +135,7 @@ public class SalaryBillBO { .employeeId(simpleEmployee.getEmployeeId()) .taxAgentName(salaryBillSendParam.getTaxAgentName()) .departmentName(simpleEmployee.getDepartmentName()) + .companystartdate(simpleEmployee.getCompanystartdate()) .email(StringUtils.isEmpty(simpleEmployee.getEmail()) ? "" : simpleEmployee.getEmail()) .sex(simpleEmployee.getSex() == null ? "" : simpleEmployee.getSex()) .mobile(StringUtils.isEmpty(simpleEmployee.getMobile()) ? "" : simpleEmployee.getMobile()).jobtitleName(simpleEmployee.getJobtitleName()) diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index 44575341b..b341f162d 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.NumberUtil; import com.engine.salary.annotation.SalaryFormulaVar; import com.engine.salary.common.LocalDateRange; import com.engine.salary.constant.SalaryFormulaFieldConstant; +import com.engine.salary.constant.SalaryItemConstant; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -95,6 +96,11 @@ public class CalculateFormulaVarBO { */ private List salaryAcctResultPOS; + /** + * 羌莎罅f + */ + private List> variableArchiveList; + public CalculateFormulaVarBO(List simpleEmployees, List salaryArchiveData, List addUpSituationPOS, @@ -102,7 +108,8 @@ public class CalculateFormulaVarBO { List otherDeductionPOS, List> welfareData, List attendQuoteDataDTOS, - List salaryAcctResultPOS) { + List salaryAcctResultPOS, + List> variableArchiveList) { this.simpleEmployees = simpleEmployees; this.salaryArchiveData = salaryArchiveData; this.addUpSituationPOS = addUpSituationPOS; @@ -111,6 +118,7 @@ public class CalculateFormulaVarBO { this.welfareData = welfareData; this.attendQuoteDataDTOS = attendQuoteDataDTOS; this.salaryAcctResultPOS = salaryAcctResultPOS; + this.variableArchiveList = variableArchiveList; } /** @@ -125,6 +133,8 @@ public class CalculateFormulaVarBO { handleSalaryAcctResult(salaryAcctCalculateBO, resultMap); // 紊莎罅f handleSalaryArchiveData(salaryAcctCalculateBO, resultMap); + // 紊羌莎罅f + handleVariableArchiveData(salaryAcctCalculateBO, resultMap); // 紊緇膣莅≧ handleAddUpSituation(resultMap); // 紊膣莅>蕁拷i @@ -242,6 +252,27 @@ public class CalculateFormulaVarBO { } } + private void handleVariableArchiveData(SalaryAcctCalculateBO salaryAcctCalculateBO, Map> resultMap) { + Map> variableArchiveMap = SalaryEntityUtil.convert2Map(variableArchiveList, map -> map.getOrDefault("taxAgentIds", "").toString() + "-" + map.getOrDefault("employeeId", "").toString()); + // 紂域膸筝 + for (SalaryAcctEmployeePO salaryAcctEmployeePO : salaryAcctCalculateBO.getSalaryAcctEmployeePOS()) { + List formulaVarValues = resultMap.computeIfAbsent(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId(), + k -> Lists.newArrayList()); + + String key = salaryAcctEmployeePO.getTaxAgentId().toString() + "-" + salaryAcctEmployeePO.getEmployeeId().toString(); + Map map = variableArchiveMap.getOrDefault(key, Collections.emptyMap()); + formulaVarValues.addAll(salaryAcctCalculateBO.getVariableItems().stream().map(field -> { + String fieldId = SalaryFormulaReferenceEnum.VARIABLE_ITEM.getValue() + + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + + field.getCode(); + + String value = map.getOrDefault(field.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX, StringUtils.EMPTY) == null ? StringUtils.EMPTY + : map.getOrDefault(field.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX, StringUtils.EMPTY).toString(); + return new FormulaVarValue().setFieldId(fieldId).setFieldValue(value); + }).collect(Collectors.toList())); + } + } + /** * 号莪莅∴茹紊莎罅f莪鐚莉∽綣靶莨筝 * diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java index 22af2b674..e0a777bcd 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java @@ -1,9 +1,9 @@ package com.engine.salary.entity.salaryacct.bo; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; -import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; @@ -48,13 +48,6 @@ public class SalaryAcctCalculateBO { */ private SalarySobCycleDTO salarySobCycleDTO; - /** - * 悟絎 - */ - private Map salaryAcctLockResultPOS; - private List lockSalaryItemIds; - - /** * 後腮罨丈絮銀莎悟莅医鐚莎膠糸筝阪轡莎茣絅鐚 */ @@ -125,6 +118,11 @@ public class SalaryAcctCalculateBO { */ private TaxDeclarationFunctionEnum taxDeclarationFunction; + /** + * 羌莎絖罧 + */ + private List variableItems; + @Data @AllArgsConstructor public static class Result { diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java index 16e46d6ad..d5155f0ae 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java @@ -59,8 +59,8 @@ public class SalaryAcctConsolidatedTaxBO { || TaxDeclarationDataIndexConstant.ADD_UP_SPE_ADDI_DEDUCTION.equals(salaryItem.getCode())) { return salaryAcctResults.stream() .filter(e -> Objects.equals(e.getSalaryItemId(), salaryItem.getId())) - .map(SalaryAcctResultPO::getResultValue) .findFirst() + .map(SalaryAcctResultPO::getResultValue) .orElse(""); } // 綵膣莅≧九 = 膣莅≦ + 罨≧九 + 筝罨≧九 diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java index 60058a59c..c0c2dfa53 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java @@ -63,9 +63,9 @@ public class SalaryAcctEmployeeBO { .employeeName(simpleEmployee.getUsername()) .taxAgentId(e.getTaxAgentId()) .taxAgentName(taxAgentNameMap.getOrDefault(e.getTaxAgentId(), StringUtils.EMPTY)) - .departmentId(simpleEmployee.getDepartmentId()) - .departmentName(simpleEmployee.getDepartmentName()) - .status(UserStatusEnum.getDefaultLabelByValue(NumberUtils.toInt(simpleEmployee.getStatus()))) + .departmentId(e.getDepartmentId()) + .departmentName(e.getDepartmentName()) + .status(UserStatusEnum.getDefaultLabelByValue(NumberUtils.toInt(e.getStatus()))) .mobile(simpleEmployee.getMobile()) .jobNum(simpleEmployee.getWorkcode()) .hireDate(simpleEmployee.getCompanystartdate()) @@ -74,53 +74,6 @@ public class SalaryAcctEmployeeBO { }).collect(Collectors.toList()); } - /** - * 莉∽莎悟篋阪po - * - * @param employeeIds - * @param salaryAcctRecord - * @param salaryArchiveTaxAgentData - * @param employeeId - * @return - */ - public static List convert2EmployeePO(Collection employeeIds, - SalaryAcctRecordPO salaryAcctRecord, - List salaryArchiveTaxAgentData, - Long employeeId) { - if (CollectionUtils.isEmpty(employeeIds)) { - return Collections.emptyList(); - } - List resultList = Lists.newArrayList(); - Map>> empIdKeyTaxAgentMap = SalaryEntityUtil.group2Map(salaryArchiveTaxAgentData, SalaryArchiveDataDTO::getEmployeeId, SalaryArchiveDataDTO::getTaxAgents); - Date now = new Date(); - for (Long id : employeeIds) { - Set taxAgentIds = Sets.newHashSet(); - Set> taxAgentSet = empIdKeyTaxAgentMap.getOrDefault(id, Collections.emptySet()); - for (List taxAgents : taxAgentSet) { - taxAgentIds.addAll(SalaryEntityUtil.properties(taxAgents, SalaryArchiveTaxAgentDataDTO::getTaxAgentId)); - } - if (CollectionUtils.isEmpty(taxAgentIds)) { - taxAgentIds.add(0L); - } - for (Long taxAgentId : taxAgentIds) { - SalaryAcctEmployeePO salaryAcctEmployee = SalaryAcctEmployeePO.builder() - .salaryAcctRecordId(salaryAcctRecord.getId()) - .salarySobId(salaryAcctRecord.getSalarySobId()) - .salaryMonth(salaryAcctRecord.getSalaryMonth()) - .employeeId(id) - .taxAgentId(taxAgentId) - .creator(employeeId) - .createTime(now) - .updateTime(now) - .deleteType(0) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); - resultList.add(salaryAcctEmployee); - } - } - return resultList; - } - public static List convert2Employee(Collection employee, SalaryAcctRecordPO salaryAcctRecord, List salaryArchiveTaxAgentData, diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java index fecdd2999..32028e25a 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java @@ -1,6 +1,7 @@ package com.engine.salary.entity.salaryacct.bo; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryformula.dto.SalaryFormulaEmployeeDTO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO; @@ -71,7 +72,7 @@ public class SalaryAcctFormulaBO { * @param simpleEmployee * @return */ - public static Map convert2FormulaEmployee(DataCollectionEmployee simpleEmployee) { + public static Map convert2FormulaEmployee(DataCollectionEmployee simpleEmployee, SalaryAcctEmployeePO salaryAcctEmployeePO, boolean dynamicEmpInfo) { if (simpleEmployee == null) { return Collections.emptyMap(); } @@ -79,27 +80,55 @@ public class SalaryAcctFormulaBO { .map(sex -> StringUtils.equals(sex, "0") ? SalaryI18nUtil.getI18nLabel(102440, "") : SalaryI18nUtil.getI18nLabel(102442, "絅")) .orElse(StringUtils.EMPTY); - SalaryFormulaEmployeeDTO formulaEmployee = SalaryFormulaEmployeeDTO.builder() - .employeeId(simpleEmployee.getEmployeeId()) - .username(simpleEmployee.getUsername()) - .email(simpleEmployee.getEmail()) - .mobile(simpleEmployee.getMobile()) - .telephone(simpleEmployee.getTelephone()) - .sex(sexName) - .status(simpleEmployee.getStatus()) - .statusName(simpleEmployee.getStatusName()) - .departmentName(simpleEmployee.getDepartmentName()) - .departmentId(simpleEmployee.getDepartmentId()) - .subcompanyName(simpleEmployee.getSubcompanyName()) - .jobtitleName(simpleEmployee.getJobtitleName()) - .jobtitleId(simpleEmployee.getJobtitleId()) - .jobcall(simpleEmployee.getJobcall()) - .jobcallId(simpleEmployee.getJobcallId()) - .companystartdate(simpleEmployee.getCompanystartdate()) - .birthday(simpleEmployee.getBirthday()) - .workcode(simpleEmployee.getWorkcode()) - .idNo(simpleEmployee.getIdNo()) - .build(); + + SalaryFormulaEmployeeDTO formulaEmployee = null; + if (dynamicEmpInfo) { + formulaEmployee = SalaryFormulaEmployeeDTO.builder() + .employeeId(simpleEmployee.getEmployeeId()) + .username(simpleEmployee.getUsername()) + .email(simpleEmployee.getEmail()) + .mobile(simpleEmployee.getMobile()) + .telephone(simpleEmployee.getTelephone()) + .sex(sexName) + .status(simpleEmployee.getStatus()) + .statusName(simpleEmployee.getStatusName()) + .departmentName(simpleEmployee.getDepartmentName()) + .departmentId(simpleEmployee.getDepartmentId()) + .subcompanyName(simpleEmployee.getSubcompanyName()) + .subcompanyId(simpleEmployee.getSubcompanyid()) + .jobtitleName(simpleEmployee.getJobtitleName()) + .jobtitleId(simpleEmployee.getJobtitleId()) + .jobcall(simpleEmployee.getJobcall()) + .jobcallId(simpleEmployee.getJobcallId()) + .companystartdate(simpleEmployee.getCompanystartdate()) + .birthday(simpleEmployee.getBirthday()) + .workcode(simpleEmployee.getWorkcode()) + .idNo(simpleEmployee.getIdNo()) + .build(); + } else { + formulaEmployee = SalaryFormulaEmployeeDTO.builder() + .employeeId(simpleEmployee.getEmployeeId()) + .username(simpleEmployee.getUsername()) + .email(simpleEmployee.getEmail()) + .mobile(simpleEmployee.getMobile()) + .telephone(simpleEmployee.getTelephone()) + .sex(sexName) + .status(simpleEmployee.getStatus()) + .statusName(simpleEmployee.getStatusName()) + .departmentName(salaryAcctEmployeePO.getDepartmentName()) + .departmentId(salaryAcctEmployeePO.getDepartmentId()) + .subcompanyName(salaryAcctEmployeePO.getSubcompanyName()) + .subcompanyId(salaryAcctEmployeePO.getSubcompanyId()) + .jobtitleName(salaryAcctEmployeePO.getJobtitleName()) + .jobtitleId(salaryAcctEmployeePO.getJobtitleId()) + .jobcall(salaryAcctEmployeePO.getJobcall()) + .jobcallId(salaryAcctEmployeePO.getJobcallId()) + .companystartdate(simpleEmployee.getCompanystartdate()) + .birthday(simpleEmployee.getBirthday()) + .workcode(simpleEmployee.getWorkcode()) + .idNo(simpleEmployee.getIdNo()) + .build(); + } return JsonUtil.parseMap(JsonUtil.toJsonString(formulaEmployee), String.class); } } diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java index f252979e3..84497238f 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.salaryacct.bo; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import com.engine.salary.annotation.SalaryFormulaVar; import com.engine.salary.component.WeaTableColumnGroup; @@ -36,6 +37,7 @@ import org.springframework.beans.BeanUtils; import weaver.general.Util; import java.lang.reflect.Field; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -283,7 +285,7 @@ public class SalaryAcctResultBO { Map dataTypeMap = SalaryEntityUtil.convert2Map(salaryItems, salaryItemPO -> salaryItemPO.getId() + DATA_TYPE_SUFFIX, SalaryItemPO::getDataType); map.putAll(dataTypeMap); // 篋阪篆≧絖罧窮 - Map fieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(employeeMap.get(e.getEmployeeId())); + Map fieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(employeeMap.get(e.getEmployeeId()), e, true); for (SalarySobEmpFieldPO salarySobEmpField : salarySobEmpFields) { // 綏ヤ拭絖罧窮絖罧窮瓜 if (dynamicEmpInfo) { @@ -306,7 +308,7 @@ public class SalaryAcctResultBO { } else if ("status".equals(salarySobEmpField.getFieldCode())) { map.put("status", e.getStatus()); } else if ("statusName".equals(salarySobEmpField.getFieldCode())) { - map.put("statusName", UserStatusEnum.getDefaultLabelByValue(new Integer(Util.null2s(e.getStatus(),"1")))); + map.put("statusName", UserStatusEnum.getDefaultLabelByValue(new Integer(Util.null2s(e.getStatus(), "1")))); } else { map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); } @@ -315,8 +317,8 @@ public class SalaryAcctResultBO { } // 筝脂id map.put("id", e.getId()); - //絎倶 - map.put("lockStatus", LockStatusEnum.getByValue(e.getLockStatus()).getDefaultLabel()); + //絎井 + map.put("lockItems", e.getLockItems() != null ? e.getLockItems().stream().filter(Objects::nonNull).map(Object::toString).collect(Collectors.toList()) : new ArrayList<>()); //絎狗 map.put("lockTime", e.getLockTime() == null ? "" : SalaryDateUtil.getFormatLocalDateTime(e.getLockTime())); //篋阪id @@ -434,7 +436,7 @@ public class SalaryAcctResultBO { boolean different = false; Map map = Maps.newHashMap(); // 綏ヤ拭絖罧窮 - Map fieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(employeeMap.get(salaryAcctEmployee.getEmployeeId())); + Map fieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(employeeMap.get(salaryAcctEmployee.getEmployeeId()), salaryAcctEmployee, false); for (SalarySobEmpFieldPO salarySobEmpField : salarySobEmpFields) { // 綏ヤ拭絖罧窮絖罧窮瓜 if (dynamicEmpInfo) { @@ -483,13 +485,20 @@ public class SalaryAcctResultBO { // 莎蕁合絖罧窮絖罧窮瓜 map.put(salaryItem.getId() + DATA_TYPE_SUFFIX, salaryItem.getDataType()); SalaryDataTypeEnum dataTypeEnum = SalaryDataTypeEnum.parseByValue(salaryItem.getDataType()); - if (dataTypeEnum == SalaryDataTypeEnum.STRING) { - if (!StringUtils.equals(acctResultValue, excelResultValue)) { - different = true; - includeSalaryItemIds.add(salaryItem.getId()); + if (dataTypeEnum == SalaryDataTypeEnum.NUMBER) { + if (NumberUtil.isNumber(acctResultValue) && NumberUtil.isNumber(excelResultValue)) { + if (new BigDecimal(acctResultValue).compareTo(new BigDecimal(excelResultValue)) != 0) { + different = true; + includeSalaryItemIds.add(salaryItem.getId()); + } + } else { + if (SalaryEntityUtil.empty2Zero(acctResultValue).compareTo(SalaryEntityUtil.empty2Zero(excelResultValue)) != 0) { + different = true; + includeSalaryItemIds.add(salaryItem.getId()); + } } } else { - if (SalaryEntityUtil.empty2Zero(acctResultValue).compareTo(SalaryEntityUtil.empty2Zero(excelResultValue)) != 0) { + if (!StringUtils.equals(acctResultValue, excelResultValue)) { different = true; includeSalaryItemIds.add(salaryItem.getId()); } @@ -540,16 +549,52 @@ public class SalaryAcctResultBO { List lockItems) { // 綏ヤ拭絖罧 - Map employeeFieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(simpleEmployee); + Map employeeFieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(simpleEmployee, salaryAcctEmployee, false); // 筝腮g軸箙>査 employeeFieldValueMap.put("taxAgentName", Optional.ofNullable(taxAgentPO).map(TaxAgentPO::getName).orElse(StringUtils.EMPTY)); Map employeeFieldNameMap = buildEmployeeFieldName(); + List canEditKeys = Arrays.asList("subcompany", "department", "jobtitle", "jobcall"); List employeeInfos = salarySobEmpFields.stream() - .map(e -> SalaryAcctEmployeeInfoDTO.builder() - .fieldName(employeeFieldNameMap.getOrDefault(e.getFieldCode(), StringUtils.EMPTY)) - .fieldValue(employeeFieldValueMap.getOrDefault(e.getFieldCode(), StringUtils.EMPTY)) - .build()) + .map(e -> { + String fieldCode = e.getFieldCode(); + String fieldType = employeeFieldNameMap.getOrDefault(fieldCode + "_type", StringUtils.EMPTY); + SalaryAcctEmployeeInfoDTO dto = SalaryAcctEmployeeInfoDTO.builder() + .fieldCode(fieldCode) + .fieldName(employeeFieldNameMap.getOrDefault(fieldCode, StringUtils.EMPTY)) + .fieldValue(employeeFieldValueMap.getOrDefault(fieldCode, StringUtils.EMPTY)) + .fieldType(fieldType) + .canEdit(fieldType.contains("Browser") ? true : false) + .build(); + + String codeKey = fieldCode.replace("Id", "").replace("Name", ""); + if (canEditKeys.contains(codeKey)) { + // 腴篋羌頵罅 + Map fieldValueMap = new HashMap<>(); + fieldValueMap.put("id", employeeFieldValueMap.getOrDefault(codeKey + "Id", StringUtils.EMPTY)); + fieldValueMap.put("name", employeeFieldValueMap.getOrDefault(codeKey + "Name", StringUtils.EMPTY)); + if (codeKey.equals("jobcall")) { + fieldValueMap.put("name", employeeFieldValueMap.getOrDefault("jobcall", StringUtils.EMPTY)); + } + dto.setFieldValue(fieldValueMap); + } + return dto; + }) .collect(Collectors.toList()); + + List needRemoveFieldNames = new ArrayList(); + // 菴羯ゅ堺羌頵罅膠糸筝篋阪篆≧筝九腱医id絖罧 + employeeInfos.stream() + .filter(e -> e.getFieldType().contains("Browser")) + .map(e -> SalaryAcctEmployeeInfoDTO.builder().fieldName(e.getFieldName().replace("ID", "")).build()) + .collect(Collectors.groupingBy(SalaryAcctEmployeeInfoDTO::getFieldName)) + .forEach((k, v) -> { + if (v.size() > 1) { + needRemoveFieldNames.add(k + "ID"); + } + }); + + // 腱脂ゅ罧 + employeeInfos = employeeInfos.stream().filter(info -> !needRemoveFieldNames.contains(info.getFieldName())).collect(Collectors.toList()); // 莎蕁合 Map resultValueMap = SalaryEntityUtil.convert2Map(salaryAcctResults, SalaryAcctResultPO::getSalaryItemId, SalaryAcctResultPO::getResultValue); Map salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId); @@ -652,7 +697,7 @@ public class SalaryAcctResultBO { Map formulaContentMap, List lockItems) { - SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salarySobItemPO).map(SalarySobItemPO::getValueType).orElse(0)); + SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salarySobItemPO).map(SalarySobItemPO::getValueType).orElse(1)); String itemFormulaContent; if (Objects.equals(salaryValueTypeEnum.getValue(), SalaryValueTypeEnum.FORMULA.getValue())) { itemFormulaContent = Optional.ofNullable(formulaContentMap.get(salarySobItemPO.getSalaryItemId().toString())).map(SalaryAcctResultListColumnDTO::getFormulaContent).orElse(""); @@ -774,6 +819,7 @@ public class SalaryAcctResultBO { } SalaryFormulaVar annotation = declaredField.getAnnotation(SalaryFormulaVar.class); employeeFieldNameMap.put(declaredField.getName(), SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.defaultLabel())); + employeeFieldNameMap.put(declaredField.getName() + "_type", annotation.dataType()); } return employeeFieldNameMap; } diff --git a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctEmployeeInfoDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctEmployeeInfoDTO.java index 12e2e694d..6ee7bdcf6 100644 --- a/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctEmployeeInfoDTO.java +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryAcctEmployeeInfoDTO.java @@ -23,5 +23,14 @@ public class SalaryAcctEmployeeInfoDTO { private String fieldName; //絖罧球 - private String fieldValue; + private Object fieldValue; + + // code + private String fieldCode; + + // 篋膽莨九腴羝我絲劫莨ラ罅 + private String fieldType; + + // 膽莨 + private boolean canEdit; } diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java index b09c535ce..52c3b7f13 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctCalculateParam.java @@ -1,6 +1,5 @@ package com.engine.salary.entity.salaryacct.param; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.util.valid.DataCheck; import lombok.AllArgsConstructor; import lombok.Builder; @@ -8,7 +7,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Collection; -import java.util.Map; /** * 莎悟 @@ -29,9 +27,4 @@ public class SalaryAcctCalculateParam { @DataCheck(require = true,message = "育莚鐚莎悟莅医ID筝巡減腥") private Long salaryAcctRecordId; - - /** - * 篋阪篆≧鐚ヨ;篏睡 - */ - private Map emps; } diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java index 81266c2d3..977f1572e 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctEmployeeQueryParam.java @@ -7,7 +7,9 @@ import com.engine.salary.util.valid.DataCheck; import lombok.*; import java.util.Collection; +import java.util.Date; import java.util.List; +import java.util.Set; /** * 莎悟篋阪茵ヨ∽>散 @@ -48,7 +50,6 @@ public class SalaryAcctEmployeeQueryParam extends BaseQueryParam { * 倶 * @see SalaryEmployeeStatusEnum */ - private SalaryEmployeeStatusEnum status; //倶(紊) private List statuses; @@ -60,4 +61,7 @@ public class SalaryAcctEmployeeQueryParam extends BaseQueryParam { private List ids; private String workcode; + + private List taxAgentIds; + private Set salaryMonths; } diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultLockParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultLockParam.java new file mode 100644 index 000000000..555411825 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultLockParam.java @@ -0,0 +1,34 @@ +package com.engine.salary.entity.salaryacct.param; + +import com.engine.salary.enums.salaryaccounting.LockStatusEnum; +import com.engine.salary.util.valid.DataCheck; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 莎井守絎 + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class SalaryAcctResultLockParam { + //絎倶 + @DataCheck(require = true,message = "絎倶筝巡減腥") + private LockStatusEnum lockStatus; + + //莎悟篋阪Id + @DataCheck(require = true,message = "莎悟篋阪筝巡減腥") + private Long acctEmpId; + + //莎蕁合Id + @DataCheck(require = true,message = "莎蕁合筝巡減腥") + private Long salaryItemId; +} diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultSaveParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultSaveParam.java index 9692d6b12..61568093c 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultSaveParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultSaveParam.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.salaryacct.param; +import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeInfoDTO; import com.engine.salary.util.valid.DataCheck; import lombok.AllArgsConstructor; import lombok.Builder; @@ -30,6 +31,9 @@ public class SalaryAcctResultSaveParam { @DataCheck(require = true,message = "莎蕁合主筝巡減腥") private Collection items; + // 綏ュ榊篆≧ + private Collection employeeInfos; + @Data @Builder @NoArgsConstructor diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index ec797156a..b4a91b95f 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -12,6 +12,7 @@ import lombok.experimental.Accessors; import java.util.Collection; import java.util.Date; +import java.util.List; /** * 莎悟篋阪 @@ -110,6 +111,7 @@ public class SalaryAcctEmployeePO { private Date updateTime; + @Deprecated @ElogTransform(name = "絎倶") private Integer lockStatus; @@ -142,6 +144,9 @@ public class SalaryAcctEmployeePO { */ private String status; + //絎蕁合 + private List lockItems; + /** * 狗 */ diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java index d2f089f21..26cd0b3c4 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctRecordPO.java @@ -126,6 +126,7 @@ public class SalaryAcctRecordPO { /** * 絎莎蕁合 */ + @Deprecated private List lockSalaryItemIds; //ヨ∽>散------------------------------- diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java index a8d493a01..d5c4343f9 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctResultTemplatePO.java @@ -18,6 +18,7 @@ import java.util.Date; @NoArgsConstructor @Builder @Data +//hrsa_acct_result_template public class SalaryAcctResultTemplatePO { /** * 筝脂id @@ -29,6 +30,11 @@ public class SalaryAcctResultTemplatePO { */ private String templateName; + /** + * 罔≧睡瓜, 0鐚絲弱堺─ 1鐚怨弱堺─ 2鐚絲弱ユ─ + */ + private Integer type; + /** * 莎茣絅id */ @@ -51,4 +57,5 @@ public class SalaryAcctResultTemplatePO { //筝脂id private Collection ids; + private Collection types; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/salaryarchive/config/ArchiveFieldConfig.java b/src/com/engine/salary/entity/salaryarchive/config/ArchiveFieldConfig.java new file mode 100644 index 000000000..bd4a1568a --- /dev/null +++ b/src/com/engine/salary/entity/salaryarchive/config/ArchiveFieldConfig.java @@ -0,0 +1,24 @@ +package com.engine.salary.entity.salaryarchive.config; + +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("ArchiveFieldConfig") +public class ArchiveFieldConfig { + + @XStreamImplicit + List salaryItems; + +} diff --git a/src/com/engine/salary/entity/salaryformula/config/FormluaConfig.java b/src/com/engine/salary/entity/salaryformula/config/FormluaConfig.java new file mode 100644 index 000000000..b84cf4f51 --- /dev/null +++ b/src/com/engine/salary/entity/salaryformula/config/FormluaConfig.java @@ -0,0 +1,27 @@ +package com.engine.salary.entity.salaryformula.config; + +import com.engine.salary.entity.salaryformula.po.FormulaPO; +import com.engine.salary.entity.salaryformula.po.FormulaVar; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("FormluaConfig") +public class FormluaConfig { + + @XStreamImplicit + private List formulas; + + @XStreamImplicit + private List formulaVars; + +} diff --git a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java index 413d9de61..1e8fd59cc 100644 --- a/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java +++ b/src/com/engine/salary/entity/salaryformula/dto/SalaryFormulaEmployeeDTO.java @@ -31,22 +31,24 @@ public class SalaryFormulaEmployeeDTO { private String username; // - @SalaryFormulaVar(defaultLabel = "", labelId = 86185, dataType = "string") + @SalaryFormulaVar(defaultLabel = "", labelId = 86185, dataType = "departmentBrowser") private String departmentName; - @SalaryFormulaVar(defaultLabel = "ID", labelId = 86185, dataType = "string") + @SalaryFormulaVar(defaultLabel = "ID", labelId = 86185, dataType = "departmentBrowser") private Long departmentId; // - @SalaryFormulaVar(defaultLabel = "", labelId = 82465, dataType = "string") + @SalaryFormulaVar(defaultLabel = "", labelId = 82465, dataType = "subcompanyBrowser") private String subcompanyName; + private Long subcompanyId; + //絏篏 - @SalaryFormulaVar(defaultLabel = "絏篏", labelId = 90633, dataType = "string") + @SalaryFormulaVar(defaultLabel = "絏篏", labelId = 90633, dataType = "jobtitleBrowser") private String jobtitleName; - @SalaryFormulaVar(defaultLabel = "絏篏ID", labelId = 90633, dataType = "string") + @SalaryFormulaVar(defaultLabel = "絏篏ID", labelId = 90633, dataType = "jobtitleBrowser") private Long jobtitleId; @SalaryFormulaVar(defaultLabel = "ヨユ", labelId = 86319, dataType = "string") @@ -88,9 +90,9 @@ public class SalaryFormulaEmployeeDTO { //腱 - @SalaryFormulaVar(defaultLabel = "腱", labelId = 98623, dataType = "string") + @SalaryFormulaVar(defaultLabel = "腱", labelId = 98623, dataType = "jobcallBrowser") private String jobcall; - @SalaryFormulaVar(defaultLabel = "腱ID", labelId = 98623, dataType = "string") + @SalaryFormulaVar(defaultLabel = "腱ID", labelId = 98623, dataType = "jobcallBrowser") private Long jobcallId; diff --git a/src/com/engine/salary/entity/salaryformula/po/FormulaPO.java b/src/com/engine/salary/entity/salaryformula/po/FormulaPO.java index 36770bd56..8d688dd94 100644 --- a/src/com/engine/salary/entity/salaryformula/po/FormulaPO.java +++ b/src/com/engine/salary/entity/salaryformula/po/FormulaPO.java @@ -1,5 +1,8 @@ package com.engine.salary.entity.salaryformula.po; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamImplicit; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -7,75 +10,111 @@ import lombok.NoArgsConstructor; import java.util.Collection; import java.util.Date; +import java.util.List; @Data @Builder @NoArgsConstructor @AllArgsConstructor +@XStreamAlias("Formula") public class FormulaPO { /** * id */ + @XStreamAlias("id") + @XStreamAsAttribute private Long id; /** * 腱 */ + @XStreamAlias("name") + @XStreamAsAttribute private String name; /** * 紊羈 */ + @XStreamAlias("description") + @XStreamAsAttribute private String description; /** * 罔≦ */ + @XStreamAlias("module") + @XStreamAsAttribute private String module; /** * */ + @XStreamAlias("useFor") + @XStreamAsAttribute private String useFor; /** * 綣膠糸 */ + @XStreamAlias("referenceType") + @XStreamAsAttribute private String referenceType; /** * 菴膠糸 */ + @XStreamAlias("returnType") + @XStreamAsAttribute private String returnType; /** * ♂膠糸 */ + @XStreamAlias("validateType") + @XStreamAsAttribute private String validateType; /** * 絮 */ + @XStreamAlias("extendParam") + @XStreamAsAttribute private String extendParam; /** * 綣絎 */ + @XStreamAlias("formula") + @XStreamAsAttribute private String formula; /** * 綣鎘菴茵 */ + @XStreamAlias("formulaRunScript") + @XStreamAsAttribute private String formulaRunScript; /** * 綮坂査 */ + @XStreamAlias("creator") + @XStreamAsAttribute private Long creator; /** * 01 */ + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 綮堺狗 */ + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 篆号狗 */ + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; //筝脂id private Collection ids; + + + @XStreamImplicit + private List formulaVars; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/salaryformula/po/FormulaVar.java b/src/com/engine/salary/entity/salaryformula/po/FormulaVar.java index 6630f0c49..79f6bf88e 100644 --- a/src/com/engine/salary/entity/salaryformula/po/FormulaVar.java +++ b/src/com/engine/salary/entity/salaryformula/po/FormulaVar.java @@ -1,5 +1,8 @@ package com.engine.salary.entity.salaryformula.po; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamOmitField; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -12,58 +15,84 @@ import java.util.Date; @Builder @NoArgsConstructor @AllArgsConstructor +@XStreamAlias("FormulaVar") public class FormulaVar { /** * id */ + @XStreamAlias("id") + @XStreamAsAttribute private Long id; /** * 腱 */ + @XStreamAlias("name") + @XStreamAsAttribute private String name; /** * 綣id */ + @XStreamAlias("formulaId") + @XStreamAsAttribute private Long formulaId; /** * 絖罧id */ + @XStreamAlias("fieldId") + @XStreamAsAttribute private String fieldId; /** * 絖罧球腱 */ + @XStreamAlias("fieldName") + @XStreamAsAttribute private String fieldName; /** * 絖罧窮瓜鐚number,string */ + @XStreamAlias("fieldType") + @XStreamAsAttribute private String fieldType; /** * ユ */ + @XStreamAlias("source") + @XStreamAsAttribute private String source; /** * 綺 */ + @XStreamAlias("orderIndex") + @XStreamAsAttribute private Integer orderIndex; /** * 綮坂査 */ + @XStreamAlias("creator") + @XStreamAsAttribute private Long creator; /** * ,01 */ + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 綮堺狗 */ + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 篆号狗 */ + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; // + @XStreamOmitField private String content; diff --git a/src/com/engine/salary/entity/salaryitem/config/FormulaConfig.java b/src/com/engine/salary/entity/salaryitem/config/FormulaConfig.java new file mode 100644 index 000000000..4ba6d8581 --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/config/FormulaConfig.java @@ -0,0 +1,92 @@ +package com.engine.salary.entity.salaryitem.config; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamImplicit; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.List; + + +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("FormulaConfig") +public class FormulaConfig { + /** + * 筝脂id + */ + @XStreamAlias("id") + @XStreamAsAttribute + private Long id; + + /** + * 腱 + */ + @XStreamAlias("name") + @XStreamAsAttribute + private String name; + /** + * 紊羈 + */ + @XStreamAlias("description") + @XStreamAsAttribute + private String description; + /** + * 罔≦ + */ + @XStreamAlias("module") + @XStreamAsAttribute + private String module; + /** + * + */ + @XStreamAlias("useFor") + @XStreamAsAttribute + private String useFor; + /** + * 綣膠糸 + */ + @XStreamAlias("referenceType") + @XStreamAsAttribute + private String referenceType; + /** + * 菴膠糸 + */ + @XStreamAlias("returnType") + @XStreamAsAttribute + private String returnType; + /** + * ♂膠糸 + */ + @XStreamAlias("validateType") + @XStreamAsAttribute + private String validateType; + /** + * 絮 + */ + @XStreamAlias("extendParam") + @XStreamAsAttribute + private String extendParam; + /** + * 綣絎 + */ + @XStreamAlias("formula") + @XStreamAsAttribute + private String formula; + + /** + * 綣鎘菴茵 + */ + @XStreamAlias("formulaRunScript") + @XStreamAsAttribute + private String formulaRunScript; + + @XStreamImplicit + private List varConfigs; + +} diff --git a/src/com/engine/salary/entity/salaryitem/config/FormulaVarConfig.java b/src/com/engine/salary/entity/salaryitem/config/FormulaVarConfig.java new file mode 100644 index 000000000..dcd2fc438 --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/config/FormulaVarConfig.java @@ -0,0 +1,74 @@ +package com.engine.salary.entity.salaryitem.config; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + + +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("FormulaVarConfig") +public class FormulaVarConfig { + + /** + * 筝脂id + */ + @XStreamAlias("id") + @XStreamAsAttribute + private Long id; + + /** + * 腱 + */ + @XStreamAlias("name") + @XStreamAsAttribute + private String name; + + /** + * 綣id + */ + @XStreamAlias("formulaId") + @XStreamAsAttribute + private Long formulaId; + + /** + * 絖罧id + */ + @XStreamAlias("fieldId") + @XStreamAsAttribute + private String fieldId; + + /** + * 絖罧球腱 + */ + @XStreamAlias("fieldName") + @XStreamAsAttribute + private String fieldName; + + /** + * 絖罧窮瓜鐚number,string + */ + @XStreamAlias("fieldType") + @XStreamAsAttribute + private String fieldType; + + /** + * ユ + */ + @XStreamAlias("source") + @XStreamAsAttribute + private String source; + + /** + * 綺 + */ + @XStreamAlias("orderIndex") + @XStreamAsAttribute + private Integer orderIndex; + +} diff --git a/src/com/engine/salary/entity/salaryitem/config/SalaryItemAllConfig.java b/src/com/engine/salary/entity/salaryitem/config/SalaryItemAllConfig.java new file mode 100644 index 000000000..06e657bb5 --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/config/SalaryItemAllConfig.java @@ -0,0 +1,23 @@ +package com.engine.salary.entity.salaryitem.config; + +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("SalaryItemConfig") +public class SalaryItemAllConfig { + + @XStreamImplicit + List salaryItems; +} diff --git a/src/com/engine/salary/entity/salaryitem/config/SalaryItemConfig.java b/src/com/engine/salary/entity/salaryitem/config/SalaryItemConfig.java new file mode 100644 index 000000000..8c1214012 --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/config/SalaryItemConfig.java @@ -0,0 +1,179 @@ +package com.engine.salary.entity.salaryitem.config; + +import com.engine.salary.enums.SalaryRoundingModeEnum; +import com.engine.salary.enums.SalarySystemTypeEnum; +import com.engine.salary.enums.SalaryValueTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + + +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("SalaryItemConfig") +public class SalaryItemConfig { + /** + * 筝脂id + */ + @XStreamAlias("id") + @XStreamAsAttribute + private Long id; + + /** + * 腱 + */ + @XStreamAlias("name") + @XStreamAsAttribute + private String name; + + /** + * 膽 + */ + @XStreamAlias("code") + @XStreamAsAttribute + private String code; + + /** + * 膤紫蕁合 + * + * @see SalarySystemTypeEnum + */ + @XStreamAlias("systemType") + @XStreamAsAttribute + private Integer systemType; + + /** + * 膤紫莎蕁合id鐚篁筝膤紫莎蕁合紊区ョ鐚 + */ + @XStreamAlias("sysSalaryItemId") + @XStreamAsAttribute + private Long sysSalaryItemId; + + /** + * 藥莅や戎0鐚藥莅や1鐚藥莅や戎 + */ + @XStreamAlias("useDefault") + @XStreamAsAttribute + private Integer useDefault; + + /** + * 莎罅f綣0鐚莎罅f綣1鐚莎罅f綣 + */ + @XStreamAlias("useInEmployeeSalary") + @XStreamAsAttribute + private Integer useInEmployeeSalary; + + /** + * 悟狗 + */ + @XStreamAlias("hideDefault") + @XStreamAsAttribute + private Integer hideDefault; + + /** + * 菴篏茹 + * + * @see SalaryRoundingModeEnum + */ + @XStreamAlias("roundingMode") + @XStreamAsAttribute + private Integer roundingMode; + + /** + * 篆絨遺 + */ + @XStreamAlias("pattern") + @XStreamAsAttribute + private Integer pattern; + + /** + * 惹劫 + * + * @see SalaryValueTypeEnum + */ + @XStreamAlias("valueType") + @XStreamAsAttribute + private Integer valueType; + + /** + * 絖罧窮瓜 + * + * @see SalaryDataTypeEnum + */ + @XStreamAlias("dataType") + @XStreamAsAttribute + private String dataType; + + /** + * 綣 + */ + @XStreamAlias("formulaId") + @XStreamAsAttribute + private Long formulaId; + + /** + * 紊羈 + */ + @XStreamAlias("description") + @XStreamAsAttribute + private String description; + + /** + * 篁ョ莨0鐚筝膽莨1鐚膽莨 + */ + @XStreamAlias("canEdit") + @XStreamAsAttribute + private Integer canEdit; + + /** + * 茹 + */ + @XStreamAlias("sharedType") + @XStreamAsAttribute + private Integer sharedType; + + /** + * 茹 + */ + @XStreamAlias("taxAgentIds") + @XStreamAsAttribute + private String taxAgentIds; + + /** + * 0筝わ1 + */ + @XStreamAlias("canDelete") + @XStreamAsAttribute + private Integer canDelete; + + /** + * 綺 + */ + @XStreamAlias("sortedIndex") + @XStreamAsAttribute + private Integer sortedIndex; + + /** + * 絎遵墾 + */ + @XStreamAlias("width") + @XStreamAsAttribute + private Integer width; + + /** + * 藥莅ゅ + */ + @XStreamAlias("defaultValue") + @XStreamAsAttribute + private String defaultValue; + + @XStreamAlias("FormulaConfig") + private FormulaConfig formulaConfig; + +} diff --git a/src/com/engine/salary/entity/salaryitem/config/SalaryItemExcelConfig.java b/src/com/engine/salary/entity/salaryitem/config/SalaryItemExcelConfig.java new file mode 100644 index 000000000..ab04abfae --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/config/SalaryItemExcelConfig.java @@ -0,0 +1,114 @@ +package com.engine.salary.entity.salaryitem.config; + +import com.engine.salary.enums.SalaryRoundingModeEnum; +import com.engine.salary.enums.SalaryValueTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.engine.salary.util.excel.ExcelHead; +import com.engine.salary.util.excel.ExcelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + + +@Data +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +public class SalaryItemExcelConfig { + + /** + * 腱 + */ + @ExcelHead(title="腱",dataIndex = "name") + @ExcelProperty(index = 0) + private String name; + + /** + * 藥莅や戎0鐚藥莅や1鐚藥莅や戎 + */ + @ExcelHead(title="藥莅や戎",dataIndex = "useDefault") + @ExcelProperty(index = 1) + private String useDefault; + + /** + * 悟 + */ + @ExcelHead(title="悟",dataIndex = "hideDefault") + @ExcelProperty(index = 2) + private String hideDefault; + + /** + * 絖罧窮瓜 + * + * @see SalaryDataTypeEnum + */ + @ExcelHead(title="絖罧窮瓜",dataIndex = "dataType") + @ExcelProperty(index = 3) + private String dataType; + + /** + * 菴篏茹 + * + * @see SalaryRoundingModeEnum + */ + @ExcelHead(title="菴篏茹",dataIndex = "roundingMode") + @ExcelProperty(index = 4) + private String roundingMode; + + /** + * 篆絨遺 + */ + @ExcelHead(title="篆絨遺",dataIndex = "pattern") + @ExcelProperty(index = 5) + private String pattern; + + /** + * 惹劫 + * + * @see SalaryValueTypeEnum + */ + @ExcelHead(title="惹劫",dataIndex = "valueType") + @ExcelProperty(index = 6) + private String valueType; + + /** + * 綣 + */ + @ExcelHead(title="綣",dataIndex = "formula") + @ExcelProperty(index = 7) + private String formula; + + @ExcelHead(title="sql菴絖罧",dataIndex = "sqlReturnKey") + @ExcelProperty(index = 8) + private String extendParam; + + /** + * 綺 + */ + @ExcelHead(title="綺",dataIndex = "sortedIndex") + @ExcelProperty(index = 9) + private String sortedIndex; + + /** + * 絎遵墾 + */ + @ExcelHead(title="絎遵墾",dataIndex = "width") + @ExcelProperty(index = 10) + private String width; + + /** + * 藥莅ゅ + */ + @ExcelHead(title="藥莅ゅ",dataIndex = "defaultValue") + @ExcelProperty(index = 11) + private String defaultValue; + + /** + * 紊羈 + */ + @ExcelHead(title="紊羈",dataIndex = "description") + @ExcelProperty(index = 12) + private String description; + +} diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemDownloadTemplateParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemDownloadTemplateParam.java new file mode 100644 index 000000000..36edcd24b --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemDownloadTemplateParam.java @@ -0,0 +1,24 @@ +package com.engine.salary.entity.salaryitem.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 莎蕁合ヨ√ + *

Copyright: Copyright (c) 2022

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryItemDownloadTemplateParam { + + //筝莉醇─炊絽井 + private boolean hasData; +} diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemExportParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemExportParam.java new file mode 100644 index 000000000..455472227 --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemExportParam.java @@ -0,0 +1,27 @@ +package com.engine.salary.entity.salaryitem.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 絲弱阪 + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryItemExportParam { + + private List ids; + + +} diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemImportParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemImportParam.java new file mode 100644 index 000000000..15e2476af --- /dev/null +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemImportParam.java @@ -0,0 +1,26 @@ +package com.engine.salary.entity.salaryitem.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 絲弱ュ + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalaryItemImportParam { + + /** + * 筝篌篁id + */ + String imageId; +} diff --git a/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java b/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java index 1224b0c56..e39198b51 100644 --- a/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java +++ b/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java @@ -1,10 +1,13 @@ package com.engine.salary.entity.salaryitem.po; import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.entity.salaryformula.po.FormulaPO; import com.engine.salary.enums.SalaryRoundingModeEnum; import com.engine.salary.enums.SalarySystemTypeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -27,24 +30,31 @@ import java.util.Date; @AllArgsConstructor //hrsa_salary_item @ElogTransform(name = "莎蕁合") +@XStreamAlias("SalaryItem") public class SalaryItemPO { /** * 筝脂id */ @ElogTransform(name = "筝脂id") + @XStreamAlias("id") + @XStreamAsAttribute private Long id; /** * 腱 */ @ElogTransform(name = "腱") + @XStreamAlias("name") + @XStreamAsAttribute private String name; /** * 膽 */ @ElogTransform(name = "膽") + @XStreamAlias("code") + @XStreamAsAttribute private String code; /** @@ -53,30 +63,40 @@ public class SalaryItemPO { * @see SalarySystemTypeEnum */ @ElogTransform(name = "膤紫蕁合") + @XStreamAlias("systemType") + @XStreamAsAttribute private Integer systemType; /** * 膤紫莎蕁合id鐚篁筝膤紫莎蕁合紊区ョ鐚 */ @ElogTransform(name = "膤紫莎蕁合id") + @XStreamAlias("sysSalaryItemId") + @XStreamAsAttribute private Long sysSalaryItemId; /** * 藥莅や戎0鐚藥莅や1鐚藥莅や戎 */ @ElogTransform(name = "藥莅や戎") + @XStreamAlias("useDefault") + @XStreamAsAttribute private Integer useDefault; /** * 莎罅f綣0鐚莎罅f綣1鐚莎罅f綣 */ @ElogTransform(name = "莎罅f綣") + @XStreamAlias("useInEmployeeSalary") + @XStreamAsAttribute private Integer useInEmployeeSalary; /** * 悟狗 */ @ElogTransform(name = "悟狗") + @XStreamAlias("hideDefault") + @XStreamAsAttribute private Integer hideDefault; /** @@ -85,12 +105,16 @@ public class SalaryItemPO { * @see SalaryRoundingModeEnum */ @ElogTransform(name = "菴篏茹") + @XStreamAlias("roundingMode") + @XStreamAsAttribute private Integer roundingMode; /** * 篆絨遺 */ @ElogTransform(name = "篆絨遺") + @XStreamAlias("pattern") + @XStreamAsAttribute private Integer pattern; /** @@ -99,6 +123,8 @@ public class SalaryItemPO { * @see SalaryValueTypeEnum */ @ElogTransform(name = "惹劫") + @XStreamAlias("valueType") + @XStreamAsAttribute private Integer valueType; /** @@ -107,54 +133,72 @@ public class SalaryItemPO { * @see SalaryDataTypeEnum */ @ElogTransform(name = "絖罧窮瓜") + @XStreamAlias("dataType") + @XStreamAsAttribute private String dataType; /** * 綣 */ @ElogTransform(name = "綣") + @XStreamAlias("formulaId") + @XStreamAsAttribute private Long formulaId; /** * 紊羈 */ @ElogTransform(name = "紊羈") + @XStreamAlias("description") + @XStreamAsAttribute private String description; /** * 篁ョ莨0鐚筝膽莨1鐚膽莨 */ @ElogTransform(name = "篁ョ莨") + @XStreamAlias("canEdit") + @XStreamAsAttribute private Integer canEdit; /** * 腱key */ @ElogTransform(name = "腱key") + @XStreamAlias("tenantKey") + @XStreamAsAttribute private String tenantKey; /** * 綮坂査id */ @ElogTransform(name = "綮坂査id") + @XStreamAlias("creator") + @XStreamAsAttribute private Long creator; /** * */ @ElogTransform(name = "") + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 綮堺狗 */ @ElogTransform(name = "綮堺狗") + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 贋井狗 */ @ElogTransform(name = "贋井狗") + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; //ヨ∽>散 @@ -166,35 +210,50 @@ public class SalaryItemPO { * 茹 */ @ElogTransform(name = "茹") + @XStreamAlias("sharedType") + @XStreamAsAttribute private Integer sharedType; /** * 茹 */ @ElogTransform(name = "茹") + @XStreamAlias("taxAgentIds") + @XStreamAsAttribute private String taxAgentIds; /** * 0筝わ1 */ @ElogTransform(name = "綏牙") + @XStreamAlias("canDelete") + @XStreamAsAttribute private Integer canDelete; /** * 綺 */ @ElogTransform(name = "綺") + @XStreamAlias("sortedIndex") + @XStreamAsAttribute private Integer sortedIndex; /** * 絎遵墾 */ @ElogTransform(name = "絎遵墾") + @XStreamAlias("width") + @XStreamAsAttribute private Integer width; /** * 藥莅ゅ */ @ElogTransform(name = "藥莅ゅ") + @XStreamAlias("defaultValue") + @XStreamAsAttribute private String defaultValue; + + @XStreamAlias("Formula") + FormulaPO formula; } diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java index f4aaec466..6b3f41896 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java @@ -51,6 +51,7 @@ public class SalarySobRangeBO { SalarySobRangeEmpQueryParam queryParam = SalarySobRangeEmpQueryParam.builder() .targetType(Optional.ofNullable(targetTypeEnum).map(TargetTypeEnum::name).orElse(StringUtils.EMPTY)) .targetIds(Arrays.asList(item.getTargetId())) + .target(item.getTarget()) .employeeStatus(employeeStatus) .build(); resultParams.add(queryParam); @@ -58,8 +59,6 @@ public class SalarySobRangeBO { return resultParams; - - // Map> rangeMap = SalaryEntityUtil.group2Map(salarySobRanges, SalarySobRangePO::getTargetType); // List resultParams = Lists.newArrayListWithExpectedSize(rangeMap.size()); // rangeMap.forEach((targetType, salarySobRangePOS) -> { @@ -123,7 +122,8 @@ public class SalarySobRangeBO { .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) .orElse(StringUtils.EMPTY)) .targetId(salarySobRangePO.getTargetId()) - .targetName(buildTargetName(salarySobRangePO, employeeComInfoMap, departmentComInfoMap, subCompanyComInfoMap,positionComInfoMap)) + .target(salarySobRangePO.getTarget()) + .targetName(buildTargetName(salarySobRangePO, employeeComInfoMap, departmentComInfoMap, subCompanyComInfoMap, positionComInfoMap)) .employeeStatus(employeeStatusesStr) .build(); }) @@ -132,17 +132,18 @@ public class SalarySobRangeBO { /** * 莉employeeStatuses + * * @param employeeStatuses * @return */ private static String parseByEmployeeStatuses(String employeeStatuses) { String[] split = employeeStatuses.split(","); - List enumsList = Arrays.asList(split).stream().map(item-> Integer.valueOf(item)).collect(Collectors.toList()); + 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 salarySobRangeMap = SalaryEntityUtil.convert2Map(salarySobRanges, e -> e.getIncludeType() + "-" + e.getTargetType() + "-" + e.getTargetId()); for (SalarySobRangeSaveParam.SalarySobRangeTargetParam targetParam : saveParam.getTargetParams()) { - String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId(); - if (salarySobRangeMap.containsKey(key)) { - SalarySobRangePO salarySobRangePO = salarySobRangeMap.get(key); - if(isImport){ - salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); - }else { - salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); - } - salarySobRangePO.setUpdateTime(now); - handleResult.getNeedUpdateSalarySobRanges().add(salarySobRangePO); - continue; - } - SalarySobRangePO salarySobRangePO = SalarySobRangePO.builder() - .salarySobId(saveParam.getSalarySobId()) - .targetType(targetParam.getTargetType().getValue()) - .targetId(targetParam.getTargetId()) + if (targetParam.getTargetType() == TargetTypeEnum.SQL) { + SalarySobRangePO salarySobRangePO = SalarySobRangePO.builder() + .salarySobId(saveParam.getSalarySobId()) + .targetType(targetParam.getTargetType().getValue()) + .targetId(0L) + .target(targetParam.getTarget()) // .employeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())) // .employeeStatus(saveParam.getEmployeeStatus().getValue()) - .includeType(saveParam.getIncludeType()) - .creator(employeeId) - .createTime(now) - .updateTime(now) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .deleteType(0) - .build(); + .includeType(saveParam.getIncludeType()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); - if(isImport){ - salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); - }else{ - salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); + if (isImport) { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); + } else { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); + } + + handleResult.getNeedInsertSalarySobRanges().add(salarySobRangePO); + }else { + String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId(); + if (salarySobRangeMap.containsKey(key)) { + SalarySobRangePO salarySobRangePO = salarySobRangeMap.get(key); + if (isImport) { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); + } else { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); + } + salarySobRangePO.setUpdateTime(now); + handleResult.getNeedUpdateSalarySobRanges().add(salarySobRangePO); + continue; + } + SalarySobRangePO salarySobRangePO = SalarySobRangePO.builder() + .salarySobId(saveParam.getSalarySobId()) + .targetType(targetParam.getTargetType().getValue()) + .targetId(targetParam.getTargetId()) + .target(targetParam.getTarget()) +// .employeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())) +// .employeeStatus(saveParam.getEmployeeStatus().getValue()) + .includeType(saveParam.getIncludeType()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); + + if (isImport) { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); + } else { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); + } + + handleResult.getNeedInsertSalarySobRanges().add(salarySobRangePO); } - - handleResult.getNeedInsertSalarySobRanges().add(salarySobRangePO); } return handleResult; } @@ -100,11 +127,11 @@ public class SalarySobRangeSaveBO { private Collection needInsertSalarySobRanges; } - public static String parseEnumListToStr(SalaryEmployeeStatusEnum[] salaryEmployeeStatusEnums){ + public static String parseEnumListToStr(SalaryEmployeeStatusEnum[] salaryEmployeeStatusEnums) { StringBuilder sb = new StringBuilder(); - for(int i=0;i salarySobEmpFields; + + @XStreamImplicit + private List salarySobItemGroups; + + @XStreamImplicit + private List salarySobItems; + + @XStreamImplicit + private List salarySobBackItems; + + @XStreamImplicit + private List salarySobAdjustRules; + +} diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java index 989ef4cf8..b5060f113 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobRangeListDTO.java @@ -49,6 +49,7 @@ public class SalarySobRangeListDTO { //絲壕院 private Long targetId; + private String target; @SalaryTableColumn(text = "綏ョ倶", width = "10%", column = "employeeStatus") @TableTitle(title = "綏ョ倶", dataIndex = "employeeStatus", key = "employeeStatus") diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobRangeEmpQueryParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeEmpQueryParam.java index cddc8f603..fc202ee92 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobRangeEmpQueryParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeEmpQueryParam.java @@ -22,6 +22,7 @@ public class SalarySobRangeEmpQueryParam { //絲壕院膠糸") private String targetType; + private String target; //絲壕院id") private Collection targetIds; diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java index ff2cdd876..a1a33e2f4 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java @@ -52,9 +52,11 @@ public class SalarySobRangeSaveParam { private TargetTypeEnum targetType; //絲壕院id - //@DataCheck(require = true, message = "絲壕院筝巡減腥") @ElogTransform( name="絲壕院id" ) private Long targetId; + @ElogTransform( name="SQL" ) + + private String target; //綏ョ倶 -- 絲弱ヤ戎 // @DataCheck(require = true, message = "綏ョ倶筝莅娯減腥") diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobAdjustRulePO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobAdjustRulePO.java index bf646ede5..ad793ed46 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobAdjustRulePO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobAdjustRulePO.java @@ -1,6 +1,8 @@ package com.engine.salary.entity.salarysob.po; import com.engine.salary.enums.salarysob.SalarySobAdjustRuleTypeEnum; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -24,26 +26,35 @@ import java.util.Date; @AllArgsConstructor @Builder //hrsa_salary_sob_adjust_rule +@XStreamAlias("SalarySobAdjustRule") public class SalarySobAdjustRulePO { /** * 筝脂id */ + @XStreamAlias("id") + @XStreamAsAttribute private Long id; /** * 莎茣絅id */ + @XStreamAlias("salarySobId") + @XStreamAsAttribute private Long salarySobId; /** * 莎蕁合id */ + @XStreamAlias("salaryItemId") + @XStreamAsAttribute private Long salaryItemId; /** * ユ */ + @XStreamAlias("dayOfMonth") + @XStreamAsAttribute private Integer dayOfMonth; /** @@ -51,6 +62,8 @@ public class SalarySobAdjustRulePO { * * @see SalarySobAdjustRuleTypeEnum */ + @XStreamAlias("beforeAdjustmentType") + @XStreamAsAttribute private Integer beforeAdjustmentType; /** @@ -58,31 +71,43 @@ public class SalarySobAdjustRulePO { * * @see SalarySobAdjustRuleTypeEnum */ + @XStreamAlias("afterAdjustmentType") + @XStreamAsAttribute private Integer afterAdjustmentType; /** * 腱key */ + @XStreamAlias("tenantKey") + @XStreamAsAttribute private String tenantKey; /** * 綮坂査id */ + @XStreamAlias("creator") + @XStreamAsAttribute private Long creator; /** * */ + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 綮堺狗 */ + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 贋井狗 */ + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; Collection ids; diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java index 793d64bfe..d5c91dddf 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java @@ -1,9 +1,13 @@ package com.engine.salary.entity.salarysob.po; +import com.engine.salary.entity.salaryformula.po.FormulaPO; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.SalaryRoundingModeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -26,26 +30,35 @@ import java.util.stream.Collectors; @Builder @NoArgsConstructor @AllArgsConstructor +@XStreamAlias("SalarySobBackItem") public class SalarySobBackItemPO{ /** * 筝脂id */ + @XStreamAlias("id") + @XStreamAsAttribute private Long id; /** * 莎茣絅id */ + @XStreamAlias("salarySobId") + @XStreamAsAttribute private Long salarySobId; /** * 莎蕁合id */ + @XStreamAlias("salaryItemId") + @XStreamAsAttribute private Long salaryItemId; /** * 莎蕁合code */ + @XStreamAlias("salaryItemCode") + @XStreamAsAttribute private String salaryItemCode; /** @@ -53,6 +66,8 @@ public class SalarySobBackItemPO{ * * @see SalaryDataTypeEnum */ + @XStreamAlias("dataType") + @XStreamAsAttribute private String dataType; /** @@ -60,11 +75,15 @@ public class SalarySobBackItemPO{ * * @see SalaryRoundingModeEnum */ + @XStreamAlias("roundingMode") + @XStreamAsAttribute private Integer roundingMode; /** * 篆絨遺 */ + @XStreamAlias("pattern") + @XStreamAsAttribute private Integer pattern; /** @@ -72,54 +91,79 @@ public class SalarySobBackItemPO{ * * @see SalaryValueTypeEnum */ + @XStreamAlias("valueType") + @XStreamAsAttribute private Integer valueType; /** * 綣id */ + @XStreamAlias("formulaId") + @XStreamAsAttribute private Long formulaId; /** * 0:綏峨蕁合1:茵ュ莎蕁合 */ + @XStreamAlias("backCalcType") + @XStreamAsAttribute private Integer backCalcType; + /** + * 藥莅ゅ + */ + @XStreamAlias("defaultValue") + @XStreamAsAttribute + private String defaultValue; + /** * 腱key */ + @XStreamAlias("tenantKey") + @XStreamAsAttribute @JsonIgnore private String tenantKey; /** * 綮坂査id */ + @XStreamAlias("creator") + @XStreamAsAttribute @JsonIgnore private Long creator; /** * */ + @XStreamAlias("deleteType") + @XStreamAsAttribute @JsonIgnore private Integer deleteType; /** * 綮堺狗 */ + @XStreamAlias("createTime") + @XStreamAsAttribute @JsonIgnore private Date createTime; /** * 贋井狗 */ + @XStreamAlias("updateTime") + @XStreamAsAttribute @JsonIgnore private Date updateTime; - /** - * 藥莅ゅ - */ - private String defaultValue; + @XStreamAlias("SalaryItem") + private SalaryItemPO salaryItem; + + @XStreamAlias("Formula") + FormulaPO formula; + /** * 莎蕁合id diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobEmpFieldPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobEmpFieldPO.java index ddac5dcf9..e92f33bf1 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobEmpFieldPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobEmpFieldPO.java @@ -1,5 +1,7 @@ package com.engine.salary.entity.salarysob.po; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -27,56 +29,77 @@ import java.util.stream.Collectors; @NoArgsConstructor @AllArgsConstructor //hrsa_salary_sob_emp_field +@XStreamAlias("SalarySobEmpField") public class SalarySobEmpFieldPO { /** * 筝脂id */ + @XStreamAlias("id") + @XStreamAsAttribute private Long id; /** * 莎茣絅id */ + @XStreamAlias("salarySobId") + @XStreamAsAttribute private Long salarySobId; /** * 絖罧code */ + @XStreamAlias("fieldCode") + @XStreamAsAttribute private String fieldCode; /** * 綺鎕罧 */ + @XStreamAlias("sortedIndex") + @XStreamAsAttribute private Integer sortedIndex; /** * 篁ュ */ + @XStreamAlias("canDelete") + @XStreamAsAttribute private Integer canDelete; /** * 腱key */ + @XStreamAlias("tenantKey") + @XStreamAsAttribute private String tenantKey; /** * 綮坂査id */ + @XStreamAlias("creator") + @XStreamAsAttribute private Long creator; /** * */ + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 綮堺狗 */ + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 贋井狗 */ + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; Collection ids; diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobItemGroupPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobItemGroupPO.java index 97469a997..258f0f67f 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobItemGroupPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobItemGroupPO.java @@ -1,5 +1,8 @@ package com.engine.salary.entity.salarysob.po; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamImplicit; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -25,60 +28,88 @@ import java.util.stream.Collectors; @NoArgsConstructor @AllArgsConstructor //hrsa_salary_sob_item_group +@XStreamAlias("SalarySobItemGroup") public class SalarySobItemGroupPO { /** * 筝脂id */ + @XStreamAlias("id") + @XStreamAsAttribute private Long id; /** * 莎茣絅id */ + @XStreamAlias("salarySobId") + @XStreamAsAttribute private Long salarySobId; /** * 莎茣絅筝莎蕁合膸腱 */ + @XStreamAlias("name") + @XStreamAsAttribute private String name; /** * 綺鎕罧 */ + @XStreamAlias("sortedIndex") + @XStreamAsAttribute private Integer sortedIndex; /** * 紊羈 */ + @XStreamAlias("description") + @XStreamAsAttribute private String description; + + //莚ュ膠紙鐚0筝鐚1鐚 + @XStreamAlias("itemHide") + @XStreamAsAttribute + private Long itemHide; + /** * 腱key */ + @XStreamAlias("tenantKey") + @XStreamAsAttribute private String tenantKey; /** * 綮坂査id */ + @XStreamAlias("creator") + @XStreamAsAttribute private Long creator; /** * */ + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 綮堺狗 */ + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 贋井狗 */ + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; - //莚ュ膠紙鐚0筝鐚1鐚 - private Long itemHide; + @XStreamImplicit + private List salarySobItems; + Collection ids; diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java index 19a6db873..011f992c4 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java @@ -1,8 +1,12 @@ package com.engine.salary.entity.salarysob.po; import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.entity.salaryformula.po.FormulaPO; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.SalaryRoundingModeEnum; import com.engine.salary.enums.SalaryValueTypeEnum; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -29,83 +33,73 @@ import java.util.stream.Collectors; @AllArgsConstructor //hrsa_salary_sob_item @ElogTransform( name="莎茣絅莎蕁合" ) +@XStreamAlias("SalarySobItem") public class SalarySobItemPO { /** * 筝脂id */ + @XStreamAlias("id") + @XStreamAsAttribute private Long id; /** * 莎茣絅id */ + @XStreamAlias("salarySobId") + @XStreamAsAttribute private Long salarySobId; /** * 莎蕁合id */ + @XStreamAlias("salaryItemId") + @XStreamAsAttribute private Long salaryItemId; /** * 莎茣絅莎蕁合膸id */ + @XStreamAlias("salarySobItemGroupId") + @XStreamAsAttribute private Long salarySobItemGroupId; /** * 綣 */ + @XStreamAlias("formulaId") + @XStreamAsAttribute private Long formulaId; /** * 綺鎕罧 */ + @XStreamAlias("sortedIndex") + @XStreamAsAttribute private Integer sortedIndex; /** * 紊羈 */ + @XStreamAlias("description") + @XStreamAsAttribute private String description; - /** - * 篁ュゃ0鐚筝ゃ1鐚篁ュ - */ - private Integer canDelete; - - /** - * 腱key - */ - private String tenantKey; - - /** - * 綮坂査id - */ - private Long creator; - - /** - * - */ - private Integer deleteType; - - /** - * 綮堺狗 - */ - private Date createTime; - - /** - * 贋井狗 - */ - private Date updateTime; /** * 菴篏茹 * * @see SalaryRoundingModeEnum */ + @XStreamAlias("roundingMode") + @XStreamAsAttribute private Integer roundingMode; /** * 篆絨遺 */ + @XStreamAlias("pattern") + @XStreamAsAttribute private Integer pattern; /** @@ -113,17 +107,71 @@ public class SalarySobItemPO { * * @see SalaryValueTypeEnum */ + @XStreamAlias("valueType") + @XStreamAsAttribute private Integer valueType; //莚ュ膠紙鐚0筝鐚1鐚 + @XStreamAlias("itemHide") + @XStreamAsAttribute private Long itemHide; /** * 藥莅ゅ */ + @XStreamAlias("defaultValue") + @XStreamAsAttribute private String defaultValue; + /** + * 篁ュゃ0鐚筝ゃ1鐚篁ュ + */ + @XStreamAlias("canDelete") + @XStreamAsAttribute + private Integer canDelete; + + /** + * 腱key + */ + @XStreamAlias("tenantKey") + @XStreamAsAttribute + private String tenantKey; + + /** + * 綮坂査id + */ + @XStreamAlias("creator") + @XStreamAsAttribute + private Long creator; + + /** + * + */ + @XStreamAlias("deleteType") + @XStreamAsAttribute + private Integer deleteType; + + /** + * 綮堺狗 + */ + @XStreamAlias("createTime") + @XStreamAsAttribute + private Date createTime; + + /** + * 贋井狗 + */ + @XStreamAlias("updateTime") + @XStreamAsAttribute + private Date updateTime; + + @XStreamAlias("SalaryItem") + private SalaryItemPO salaryItem; + + @XStreamAlias("Formula") + private FormulaPO formula; + //in Collection ids; Collection salarySobIds; diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java index 942731380..231d6f866 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobPO.java @@ -2,6 +2,9 @@ package com.engine.salary.entity.salarysob.po; import com.engine.hrmelog.annotation.ElogTransform; import com.engine.salary.util.valid.Compare; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamOmitField; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,6 +24,7 @@ import java.util.Date; @AllArgsConstructor @ElogTransform( name="莎茣絅" ) //hrsa_salary_sob +@XStreamAlias("SalarySob") public class SalarySobPO { /** @@ -28,6 +32,7 @@ public class SalarySobPO { */ @ElogTransform( name="筝脂" ) @Compare + @XStreamOmitField private Long id; /** @@ -35,12 +40,16 @@ public class SalarySobPO { */ @ElogTransform( name="腱" ) @Compare + @XStreamAlias("name") + @XStreamAsAttribute private String name; /** * 筝腮g軸箙>査筝脂id */ @ElogTransform( name="筝腮g軸箙>査id" ) + @XStreamAlias("taxAgentId") + @XStreamAsAttribute private Long taxAgentId; /** @@ -48,6 +57,8 @@ public class SalarySobPO { */ @ElogTransform( name="莎膠糸" ) @Compare + @XStreamAlias("incomeCategory") + @XStreamAsAttribute private Integer incomeCategory; /** @@ -55,6 +66,8 @@ public class SalarySobPO { */ @ElogTransform( name="莎" ) @Compare + @XStreamAlias("salaryCycleType") + @XStreamAsAttribute private Integer salaryCycleType; /** @@ -62,6 +75,8 @@ public class SalarySobPO { */ @ElogTransform( name="莎莎桁ユ" ) @Compare + @XStreamAlias("salaryCycleFromDay") + @XStreamAsAttribute private Integer salaryCycleFromDay; /** @@ -69,6 +84,8 @@ public class SalarySobPO { */ @ElogTransform( name="腮罨丈絮" ) @Compare + @XStreamAlias("taxCycleType") + @XStreamAsAttribute private Integer taxCycleType; /** @@ -76,6 +93,8 @@ public class SalarySobPO { */ @ElogTransform( name="ゅ" ) @Compare + @XStreamAlias("attendCycleType") + @XStreamAsAttribute private Integer attendCycleType; /** @@ -83,6 +102,8 @@ public class SalarySobPO { */ @ElogTransform( name="ゅ莎桁ユ" ) @Compare + @XStreamAlias("attendCycleFromDay") + @XStreamAsAttribute private Integer attendCycleFromDay; /** @@ -90,48 +111,64 @@ public class SalarySobPO { */ @ElogTransform( name="腓鞘胼絮" ) @Compare + @XStreamAlias("socialSecurityCycleType") + @XStreamAsAttribute private Integer socialSecurityCycleType; /** * 胼0鐚罩e幻篏睡1鐚胼 */ @ElogTransform( name="胼" ) + @XStreamAlias("disable") + @XStreamAsAttribute private Integer disable; /** * 颷 */ @ElogTransform( name="颷" ) + @XStreamAlias("description") + @XStreamAsAttribute private String description; /** * 綮坂査 */ @ElogTransform( name="綮坂査" ) + @XStreamAlias("creator") + @XStreamAsAttribute private Long creator; /** * 綮堺狗 */ @ElogTransform( name="綮堺狗" ) + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 贋井狗 */ @ElogTransform( name="贋井狗" ) + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; /** * 綏峨ゃ0鐚ゃ1鐚綏峨 */ @ElogTransform( name="綏峨" ) + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 腱ID */ @ElogTransform( name="腱" ) + @XStreamAlias("tenantKey") + @XStreamAsAttribute private String tenantKey; Collection ids; diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobRangePO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobRangePO.java index 08a1df20f..4ace5f3bd 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobRangePO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobRangePO.java @@ -52,6 +52,11 @@ public class SalarySobRangePO { @ElogTransform(name="絲壕院id") private Long targetId; + /** + * 絲壕院id + */ + @ElogTransform(name="SQL") + private String target; /** * 篋阪倶 * @see SalaryEmployeeStatusEnum diff --git a/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java b/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java new file mode 100644 index 000000000..afe2de81c --- /dev/null +++ b/src/com/engine/salary/entity/setting/dto/PageListSettingDTO.java @@ -0,0 +1,20 @@ +package com.engine.salary.entity.setting.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 莎絽絅茵 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListSettingDTO { + + private String name; + + private String value; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java new file mode 100644 index 000000000..0de49c816 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListSettingQueryParam.java @@ -0,0 +1,22 @@ +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 PageListSettingQueryParam { + + @DataCheck(require = true,message = "莚潔蕁級") + private String page; + + private String name; +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java b/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.java new file mode 100644 index 000000000..bd97950e7 --- /dev/null +++ b/src/com/engine/salary/entity/setting/param/PageListSettingSaveParam.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; + +import java.util.List; + +/** + * 莎絽絅茵 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageListSettingSaveParam { + + /** + * 蕁級鐚0鐚莎膸 + */ + @DataCheck(require = true,message = "莚潔蕁級") + private String page; + + /** + * 莅丞舟 + */ + @DataCheck(require = true,message = "莚潔莅丞舟") + private List setting; +} \ 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 new file mode 100644 index 000000000..59b7f2ea1 --- /dev/null +++ b/src/com/engine/salary/entity/setting/po/PageListSettingPO.java @@ -0,0 +1,72 @@ +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 PageListSettingPO { + + + @ElogTransform(name = "") + private Long id; + + /** + * 蕁級鐚0鐚莎膸 + */ + @ElogTransform(name = "蕁級鐚0鐚莎膸") + private String page; + + /** + * 莅丞舟 + */ + @ElogTransform(name = "莅丞舟") + private String setting; + + + /** + * 贋井狗 + */ + @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 + */ + @ElogTransform(name = "腱ID") + private String tenantKey; + + + //筝脂id + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java index 0a5dd7b01..7de87c044 100644 --- a/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java +++ b/src/com/engine/salary/entity/siarchives/po/InsuranceArchivesBaseInfoPO.java @@ -2,6 +2,7 @@ package com.engine.salary.entity.siarchives.po; import com.engine.hrmelog.annotation.ElogTransform; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; +import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -90,6 +91,7 @@ public class InsuranceArchivesBaseInfoPO { /** * 胼ц倶 + * @see EmployeeStatusEnum */ @ElogTransform(name = "胼ц倶") private String runStatus; diff --git a/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeReqParam.java b/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeReqParam.java index ff8e9398c..c9ed91a55 100644 --- a/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeReqParam.java +++ b/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeReqParam.java @@ -41,4 +41,14 @@ public class InsuranceSchemeReqParam { private WelfareTypeEnum welfareTypeEnum; private List ids; + + /** + * 篆号。罅井筝坂筝 + */ + private Boolean changeData; + + /** + * ♂罅f筝羯∴恭筝筝 + */ + private Boolean validate; } \ No newline at end of file diff --git a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java index 53c389645..6f7e6a55d 100644 --- a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java +++ b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java @@ -303,6 +303,7 @@ public class TaxAgentBO { .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) .orElse(StringUtils.EMPTY)) .targetId(taxAgentManageRange.getTargetId()) + .target(taxAgentManageRange.getTarget()) .targetName(buildTargetName(taxAgentManageRange, employeeComInfoMap, departmentComInfoMap, subDepartmentComInfoMap, positionComInfoMap)) .employeeStatus(buildEmployeeStatus(hrmStatusNameMap, taxAgentManageRange.getEmployeeStatus())) .build(); @@ -345,6 +346,8 @@ public class TaxAgentBO { return subDepartmentComInfoMap.getOrDefault(taxAgentManageRange.getTargetId(), StringUtils.EMPTY); case POSITION: return positionComInfoMap.getOrDefault(taxAgentManageRange.getTargetId(), StringUtils.EMPTY); + case SQL: + return taxAgentManageRange.getTarget(); default: return StringUtils.EMPTY; } @@ -354,11 +357,6 @@ public class TaxAgentBO { return handleManageRange(taxAgentManageRanges, saveParam, TaxAgentRangeTypeEnum.TAXAGENT, taxAgentId, 0L, employeeId, isImport); } - public static Result handleSubAdminRange(List taxAgentManageRanges, TaxAgentManageRangeSaveParam saveParam, Long taxAgentId, Long subAdminId, - Long employeeId, boolean isImport) { - return handleManageRange(taxAgentManageRanges, saveParam, TaxAgentRangeTypeEnum.SUBADMIN, taxAgentId, subAdminId, employeeId, isImport); - } - /** * 紊腴篌篆絖逸莉∽絲劫po鐚絋篆絖遺賢篋阪絏篏膈箙絨怨群膸闋糸菴篋鐚絨延荀罨>絖篋鐚 * @@ -382,39 +380,64 @@ public class TaxAgentBO { Map taxAgentManageRangeMap = SalaryEntityUtil.convert2Map(taxAgentManageRanges, e -> e.getIncludeType() + "-" + e.getTargetType() + "-" + e.getTargetId() + "-" + e.getRangeType()); for (TaxAgentSubAdminRangeSaveParam.TaxAgentSubAdminRangeTargetParam targetParam : saveParam.getTargetParams()) { - String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId() + "-" + rangeTypeEnum.getValue(); - if (taxAgentManageRangeMap.containsKey(key)) { - TaxAgentManageRangePO taxAgentManageRange = taxAgentManageRangeMap.get(key); - if(isImport){ + if (targetParam.getTargetType() == TargetTypeEnum.SQL) { + TaxAgentManageRangePO taxAgentManageRange = TaxAgentManageRangePO.builder() + .id(IdGenerator.generate()) + .taxAgentId(taxAgentId) + .taxAgentSubAdminId(subAdminId) + .rangeType(rangeTypeEnum.getValue()) + .targetType(targetParam.getTargetType().getValue()) + .targetId(0L) + .target(targetParam.getTarget()) + .includeType(saveParam.getIncludeType()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); + if (isImport) { taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(targetParam.getEmployeeStatus())); - }else { + } else { taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())); } - taxAgentManageRange.setUpdateTime(now); - handleResult.getNeedUpdateTaxAgentManageRanges().add(taxAgentManageRange); - continue; + handleResult.getNeedInsertTaxAgentManageRanges().add(taxAgentManageRange); + } else { + String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId() + "-" + rangeTypeEnum.getValue(); + if (taxAgentManageRangeMap.containsKey(key)) { + TaxAgentManageRangePO taxAgentManageRange = taxAgentManageRangeMap.get(key); + if (isImport) { + taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(targetParam.getEmployeeStatus())); + } else { + taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())); + } + taxAgentManageRange.setUpdateTime(now); + handleResult.getNeedUpdateTaxAgentManageRanges().add(taxAgentManageRange); + continue; + } + TaxAgentManageRangePO taxAgentManageRange = TaxAgentManageRangePO.builder() + .id(IdGenerator.generate()) + .taxAgentId(taxAgentId) + .taxAgentSubAdminId(subAdminId) + .rangeType(rangeTypeEnum.getValue()) + .targetType(targetParam.getTargetType().getValue()) + .targetId(targetParam.getTargetId()) + .includeType(saveParam.getIncludeType()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); + if (isImport) { + taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(targetParam.getEmployeeStatus())); + } else { + taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())); + } + handleResult.getNeedInsertTaxAgentManageRanges().add(taxAgentManageRange); } - TaxAgentManageRangePO taxAgentManageRange = TaxAgentManageRangePO.builder() - .id(IdGenerator.generate()) - .taxAgentId(taxAgentId) - .taxAgentSubAdminId(subAdminId) - .rangeType(rangeTypeEnum.getValue()) - .targetType(targetParam.getTargetType().getValue()) - .targetId(targetParam.getTargetId()) - .includeType(saveParam.getIncludeType()) - .creator(employeeId) - .createTime(now) - .updateTime(now) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .deleteType(0) - .build(); - if(isImport){ - taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(targetParam.getEmployeeStatus())); - }else { - taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())); - } - handleResult.getNeedInsertTaxAgentManageRanges().add(taxAgentManageRange); } + return handleResult; } diff --git a/src/com/engine/salary/entity/taxagent/config/TaxAgentConfig.java b/src/com/engine/salary/entity/taxagent/config/TaxAgentConfig.java new file mode 100644 index 000000000..be17791cd --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/config/TaxAgentConfig.java @@ -0,0 +1,28 @@ +package com.engine.salary.entity.taxagent.config; + +import com.engine.salary.entity.salarysob.config.SalarySobConfig; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("TaxAgentConfig") +public class TaxAgentConfig { + + @XStreamAlias("TaxAgent") + private TaxAgentPO taxAgent; + + //莎茣絅 + @XStreamImplicit + private List salarySobConfigs; + +} diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java index eb858a077..d87bf0a3b 100644 --- a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java @@ -49,6 +49,7 @@ public class TaxAgentManageRangeListDTO { //絲壕院id") private Long targetId; + private String target; @SalaryTableColumn( text = "綏ョ倶", diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java index cd47a3284..2a8ff4587 100644 --- a/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java @@ -2,6 +2,8 @@ package com.engine.salary.entity.taxagent.param; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.util.valid.DataCheck; +import com.engine.salary.util.valid.Modify; +import com.engine.salary.util.valid.ModifyTypeEnum; import lombok.Data; import java.util.Collection; @@ -51,9 +53,14 @@ public class TaxAgentManageRangeSaveParam { /** * 絲壕院筝巡減腥 */ - @DataCheck(require = true,message = "絲壕院筝巡減腥") private Long targetId; + /** + * sql + */ + @Modify(modifyType = ModifyTypeEnum.RESTORE_SQL) + private String target; + /** * 絲弱ヤ戎鐚綏ョ倶 */ diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentBasePO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentBasePO.java index 6930031f9..58e02c10e 100644 --- a/src/com/engine/salary/entity/taxagent/po/TaxAgentBasePO.java +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentBasePO.java @@ -1,5 +1,7 @@ package com.engine.salary.entity.taxagent.po; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -21,41 +23,57 @@ import java.util.Date; @NoArgsConstructor @AllArgsConstructor //hrsa_tax_agent_base") +@XStreamAlias("TaxAgentBase") public class TaxAgentBasePO { /** * 筝脂id */ + @XStreamAlias("id") + @XStreamAsAttribute private Long id; /** * 綣 */ + @XStreamAlias("devolutionStatus") + @XStreamAsAttribute private Integer devolutionStatus; /** * 腱key */ + @XStreamAlias("tenantKey") + @XStreamAsAttribute private String tenantKey; /** * 綮坂査id */ + @XStreamAlias("creator") + @XStreamAsAttribute private Long creator; /** * */ + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 綮堺狗 */ + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 贋井狗 */ + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; + private Collection ids; } diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java index ae4c8b9b7..7b088913c 100644 --- a/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java @@ -64,6 +64,9 @@ public class TaxAgentManageRangePO { @ElogTransform( name ="絲壕院id") private Long targetId; + @ElogTransform( name ="SQL") + private String target; + /** * 篋阪倶 */ diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentPO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentPO.java index 819bf3aaf..65b688baa 100644 --- a/src/com/engine/salary/entity/taxagent/po/TaxAgentPO.java +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentPO.java @@ -1,6 +1,9 @@ package com.engine.salary.entity.taxagent.po; import com.engine.hrmelog.annotation.ElogTransform; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamOmitField; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -24,64 +27,86 @@ import java.util.Date; //hrsa_tax_agent") //筝腮g軸箙>査茵") @ElogTransform(name = "筝腮g軸箙>査") +@XStreamAlias("TaxAgent") public class TaxAgentPO { /** * 筝脂id */ @ElogTransform(name = "筝脂id") + @XStreamOmitField private Long id; /** * 腱 */ @ElogTransform(name = "腱") + @XStreamAlias("name") + @XStreamAsAttribute private String name; /** * 篁g軸堺 */ // @ElogTransform(name = "篁g軸堺") + @XStreamAlias("paymentAgency") + @XStreamAsAttribute private String paymentAgency; + + /** + * 綺 + */ + @XStreamAlias("sortedIndex") + @XStreamAsAttribute + private Integer sortedIndex; + /** * 紊羈 */ @ElogTransform(name = "紊羈") + @XStreamAlias("description") + @XStreamAsAttribute private String description; /** * 腱key */ + @XStreamAlias("tenantKey") + @XStreamAsAttribute private String tenantKey; /** * 綮坂査id */ @ElogTransform(name = "綮坂査id") + @XStreamAlias("creator") + @XStreamAsAttribute private Long creator; /** * */ + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 綮堺狗 */ @ElogTransform(name = "綮堺狗") + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 贋井狗 */ - @ElogTransform(name = "贋井狗") + @ElogTransform(name = "updateTime") + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; - /** - * 綺 - */ - private Integer sortedIndex; private Collection ids; } diff --git a/src/com/engine/salary/enums/SalaryOnOffEnum.java b/src/com/engine/salary/enums/SalaryOnOffEnum.java index 7afb5aab0..99b31eb4d 100644 --- a/src/com/engine/salary/enums/SalaryOnOffEnum.java +++ b/src/com/engine/salary/enums/SalaryOnOffEnum.java @@ -3,12 +3,13 @@ package com.engine.salary.enums; /** - * @description: - * @author: xiajun - * @modified By: xiajun - * @date: Created in 10/28/21 5:50 PM - * @version:v1.0 - */ + * 綣恰筝 + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ public enum SalaryOnOffEnum implements BaseEnum { ON(1, "", 84967), @@ -40,4 +41,22 @@ public enum SalaryOnOffEnum implements BaseEnum { public Integer getLabelId() { return labelId; } + + public static SalaryOnOffEnum parseByValue(int value) { + for (SalaryOnOffEnum item : values()) { + if (item.getValue().equals(value)) { + return item; + } + } + return OFF; + } + + public static SalaryOnOffEnum parseByDefaultLabel(String defaultLabel) { + for (SalaryOnOffEnum item : values()) { + if (item.getDefaultLabel().equals(defaultLabel)) { + return item; + } + } + return OFF; + } } diff --git a/src/com/engine/salary/enums/SalaryRoundingModeEnum.java b/src/com/engine/salary/enums/SalaryRoundingModeEnum.java index 288aa7b07..a47733891 100644 --- a/src/com/engine/salary/enums/SalaryRoundingModeEnum.java +++ b/src/com/engine/salary/enums/SalaryRoundingModeEnum.java @@ -67,6 +67,15 @@ public enum SalaryRoundingModeEnum implements BaseEnum { return modeEnum; } } - return null; + return ROUNDING; + } + + public static SalaryRoundingModeEnum parseByDefaultLabel(String defaultLabel) { + for (SalaryRoundingModeEnum modeEnum : SalaryRoundingModeEnum.values()) { + if (Objects.equals(modeEnum.getDefaultLabel(), defaultLabel)) { + return modeEnum; + } + } + return ROUNDING; } } diff --git a/src/com/engine/salary/enums/SalaryValueTypeEnum.java b/src/com/engine/salary/enums/SalaryValueTypeEnum.java index 7d82d47d1..3f50e75fc 100644 --- a/src/com/engine/salary/enums/SalaryValueTypeEnum.java +++ b/src/com/engine/salary/enums/SalaryValueTypeEnum.java @@ -51,7 +51,16 @@ public enum SalaryValueTypeEnum implements BaseEnum { return salaryValueTypeEnum; } } - return null; + return INPUT; + } + + public static SalaryValueTypeEnum parseByDefaultLabel(String defaultLabel) { + for (SalaryValueTypeEnum salaryValueTypeEnum : SalaryValueTypeEnum.values()) { + if (Objects.equals(salaryValueTypeEnum.getDefaultLabel(), defaultLabel)) { + return salaryValueTypeEnum; + } + } + return INPUT; } @@ -65,6 +74,6 @@ public enum SalaryValueTypeEnum implements BaseEnum { return enumAry[i].getDefaultLabel(); } } - return ""; + return INPUT.getDefaultLabel(); } } diff --git a/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java b/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java index 8cf79c880..da3b76213 100644 --- a/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java +++ b/src/com/engine/salary/enums/salaryformula/SalaryFormulaReferenceEnum.java @@ -26,6 +26,7 @@ public enum SalaryFormulaReferenceEnum implements BaseEnum { OTHER_DEDUCTION("otherDeduction", "銀腮i", 93849), SALARY_ACCT_EMPLOYEE("salaryAcctEmployee", "悟堺篆≧", 85368), SALARY_CYCLE("SalaryCycle", "悟ユ", 85368), + VARIABLE_ITEM("variableItem", "羌莎蕁合", 0), ISSUED("ISSUED", "綏峨", 0); private String value; diff --git a/src/com/engine/salary/enums/salaryitem/SalaryDataTypeEnum.java b/src/com/engine/salary/enums/salaryitem/SalaryDataTypeEnum.java index 07bffd40c..fa5c76f40 100644 --- a/src/com/engine/salary/enums/salaryitem/SalaryDataTypeEnum.java +++ b/src/com/engine/salary/enums/salaryitem/SalaryDataTypeEnum.java @@ -1,6 +1,7 @@ package com.engine.salary.enums.salaryitem; import com.engine.salary.enums.BaseEnum; +import com.engine.salary.enums.SalaryValueTypeEnum; import java.util.Arrays; import java.util.Objects; @@ -51,7 +52,7 @@ public enum SalaryDataTypeEnum implements BaseEnum { return salaryDataTypeEnum; } } - return null; + return STRING; } public static String getDefaultLabelByValue(String value) { @@ -66,4 +67,13 @@ public enum SalaryDataTypeEnum implements BaseEnum { } return ""; } + + public static SalaryDataTypeEnum parseByDefaultLabel(String defaultLabel) { + for (SalaryDataTypeEnum typeEnum : SalaryDataTypeEnum.values()) { + if (Objects.equals(typeEnum.getDefaultLabel(), defaultLabel)) { + return typeEnum; + } + } + return STRING; + } } diff --git a/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java b/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java index 04c6497f3..051a336ff 100644 --- a/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java +++ b/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java @@ -20,10 +20,8 @@ public enum TargetTypeEnum implements BaseEnum { DEPT(2, "", 86185), SUBCOMPANY(3, "", 107369), POSITION(4, "絏篏", 90633), - ALL(5, "篋", 107729); - -// SECLEVE(6, "絎膾у", 90382),; - // EXT_EMPLOYEE(100, "紊篋阪", 0); + ALL(5, "篋", 107729), + SQL(6, "SQL", 107729); private int value; private String defaultLabel; diff --git a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java index 78392dfd4..289b898bd 100644 --- a/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java +++ b/src/com/engine/salary/maintainer/salaryacct/SalaryAcctManager.java @@ -261,8 +261,11 @@ public class SalaryAcctManager extends Service { // 7ヨ∵ゅ絖罧 List attendQuoteFieldListDTOS = getAttendQuoteFieldService(user).listAll(); -// //悟絎 -// List lockSalaryItemIds = salaryAcctRecordPO.getLockSalaryItemIds(); + //fixme 絎 + +// //絨ら井悟蕁合紊守初絎 +// List salaryItemIds = calculateParam.getSalaryItemIds(); +// List lockSalaryItemIds = salaryItemPOS.stream().map(SalaryItemPO::getId).filter(id -> !salaryItemIds.contains(id)).collect(Collectors.toList()); // Map acctResults = new HashMap<>(); // if (CollectionUtils.isNotEmpty(lockSalaryItemIds)) { // List acctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); @@ -273,19 +276,6 @@ public class SalaryAcctManager extends Service { // .collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); // } - //絨ら井悟蕁合紊守初絎 - List salaryItemIds = calculateParam.getSalaryItemIds(); - List lockSalaryItemIds = salaryItemPOS.stream().map(SalaryItemPO::getId).filter(id -> !salaryItemIds.contains(id)).collect(Collectors.toList()); - Map acctResults = new HashMap<>(); - if (CollectionUtils.isNotEmpty(lockSalaryItemIds)) { - List acctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); - acctResults = Optional.ofNullable(acctResultPOS) - .orElse(new ArrayList<>()) - .stream() - .filter(po -> lockSalaryItemIds.contains(po.getSalaryItemId())) - .collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); - } - // 8ヨ√綣顓 Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); @@ -323,8 +313,6 @@ public class SalaryAcctManager extends Service { .setSalarySobPO(salarySobPO) .setSalarySobCycleDTO(salarySobCycleDTO) .setOtherSalaryAcctRecordPOS(otherSalaryAcctRecordPOS) - .setSalaryAcctLockResultPOS(MapUtils.emptyIfNull(acctResults)) - .setLockSalaryItemIds(lockSalaryItemIds) .setSalarySobItemPOS(salarySobItemPOS) .setSalaryItemIdWithPriorityList(salarySobItemsWithPriority) .setExpressFormulas(expressFormulas) diff --git a/src/com/engine/salary/mapper/InsuranceExportMapper.java b/src/com/engine/salary/mapper/InsuranceExportMapper.java index 2464c49de..b4ef25f66 100644 --- a/src/com/engine/salary/mapper/InsuranceExportMapper.java +++ b/src/com/engine/salary/mapper/InsuranceExportMapper.java @@ -8,12 +8,6 @@ import org.apache.ibatis.annotations.Param; import java.util.List; -/** - * @Author weaver_cl - * - * @Date 2022/4/18 - * @Version V1.0 - **/ public interface InsuranceExportMapper { List exportExcelAccount(@Param("param") InsuranceComparisonResultQueryParam param); diff --git a/src/com/engine/salary/mapper/SQLMapper.java b/src/com/engine/salary/mapper/SQLMapper.java new file mode 100644 index 000000000..4d998fa88 --- /dev/null +++ b/src/com/engine/salary/mapper/SQLMapper.java @@ -0,0 +1,18 @@ +package com.engine.salary.mapper; + +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * SQLMapper + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ +public interface SQLMapper { + List runSQL(@Param("sql") String sql); +} diff --git a/src/com/engine/salary/mapper/SQLMapper.xml b/src/com/engine/salary/mapper/SQLMapper.xml new file mode 100644 index 000000000..bba76972c --- /dev/null +++ b/src/com/engine/salary/mapper/SQLMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java index 9f4ef0cd6..78e83be7b 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.java @@ -4,7 +4,6 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemQueryParam; import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; -import com.engine.salary.entity.siarchives.po.InsuranceArchivesOtherSchemePO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -97,4 +96,5 @@ public interface SalaryArchiveItemMapper { void batchDeleteHistoryData(SalaryArchiveItemPO build); int batchUpdate(@Param("collection") List pos); + } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml index 57a607f2c..ff6f3ee20 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml @@ -1137,4 +1137,61 @@ #{item.id} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + item.id as item_id + ,item.name as item_name + , item.code as item_code + , item.system_type as item_system_type + , item.sys_salary_item_id as item_sys_salary_item_id + , item.use_default as item_use_default + , item.use_in_employee_salary as item_use_in_employee_salary + , item.rounding_mode as item_rounding_mode + , item.pattern as item_pattern + , item.value_type as item_value_type + , item.formula_id as item_formula_id + , item.description as item_description + , item.can_edit as item_can_edit + , item.can_delete as item_can_delete + , item.data_type as item_data_type + , item.shared_type as item_shared_type + , item.tax_agent_ids as item_tax_agent_ids + , item.sorted_index as item_sorted_index + , item.hide_default as item_hide_default + , item.width as item_width + , item.default_value as item_default_value + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.java b/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.java index 9392a59f0..01a4f6be6 100644 --- a/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.java +++ b/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.java @@ -104,4 +104,10 @@ public interface AttendQuoteFieldMapper { * @return */ List listSome(@Param("param") AttendQuoteFieldPO param); + + /** + * キ阪ょ罨 + * @return + */ + List getAttendanceSerials(); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.xml b/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.xml index 4c1ae10ee..38ad1cf90 100644 --- a/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/AttendQuoteFieldMapper.xml @@ -486,4 +486,8 @@ + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.java b/src/com/engine/salary/mapper/datacollection/EmployMapper.java index 3b8725c31..a65e0abaf 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.java +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.java @@ -2,6 +2,7 @@ package com.engine.salary.mapper.datacollection; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; +import com.engine.salary.entity.hrm.JobCallInfo; import com.engine.salary.entity.hrm.PositionInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; import com.engine.salary.entity.hrm.dto.HrmInfoDTO; @@ -81,6 +82,13 @@ public interface EmployMapper { */ List listPositionInfo(@Param("collection") List ids); + /** + * 篁ュ篏id キ絏篏篆≧ + * @param id + * @return + */ + PositionInfo getPositionInfoById(@Param("positionId") Long id); + /** * 篁ラ * @param departmentIds @@ -104,6 +112,13 @@ public interface EmployMapper { */ List getSubCompanyInfoList(@Param("subDepartmentIds") List subDepartmentIds); + /** + * 号idキ篆≧ + * @param subDepartmentId + * @return + */ + SubCompanyInfo getSubCompanyInfoById(@Param("subDepartmentId")Long subDepartmentId); + /** * * @param virtualSubCompanyIds @@ -161,4 +176,5 @@ public interface EmployMapper { */ List listBySubCompanyOrDepartment(@Param("subCompanyIds") List subCompanyIds, @Param("departmentIds") List departmentIds); + JobCallInfo getJobCallInfoById(@Param("jobCallId") Long jobCallId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index 235a85862..2ddb326d3 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -108,6 +108,13 @@ + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.java b/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.java new file mode 100644 index 000000000..28a30febe --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.java @@ -0,0 +1,89 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableArchiveItemMapper + * @date 2024/08/07 9:22 + * @description 羌罅f膸 + */ +public interface VariableArchiveItemMapper { + /** + * ヨ∽莅医 + * + * @return 菴鐚羃≧菴腥List + */ + List listAll(); + + /** + * >散ヨ + * + * @return 菴鐚羃≧菴腥List + */ + List listSome(@Param("param") VariableArchiveItemPO variableArchiveItem); + + + /** + * 号筝脂ヨ + * + * @param id 筝脂 + * @return 菴莅医鐚羃≧菴null + */ + VariableArchiveItemPO getById(Long id); + + /** + * 医鐚綽順null絖罧 + * + * @param variableArchiveItem 医莅医 + * @return 菴綵怨茵 + */ + int insertIgnoreNull(VariableArchiveItemPO variableArchiveItem); + + /** + * 篆刻篆号絖罧 + * + * @param variableArchiveItem 篆合莅医 + * @return 菴綵怨茵 + */ + int update(VariableArchiveItemPO variableArchiveItem); + + /** + * 篆刻綽順null絖罧 + * + * @param variableArchiveItem 篆合莅医 + * @return 菴綵怨茵 + */ + int updateIgnoreNull(VariableArchiveItemPO variableArchiveItem); + + /** + * よ医 + * + * @param variableArchiveItem 緇ょ莅医 + * @return 菴綵怨茵 + */ + int delete(VariableArchiveItemPO variableArchiveItem); + + /** + * ヨ∽貴罅f筝綏俄戎羌莎蕁合 + * + * @return + */ + List listUsingItems(); + + /** + * + * @param insertList + * @return + */ + int batchInsert(@Param("collection") List insertList); + + void deleteByIds(@Param("collection")List part); + + void deleteByArchiveIds(@Param("collection")List part); + + void updateBatchSelective(@Param("list")List variableArchiveItemPOS); +} diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.xml b/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.xml new file mode 100644 index 000000000..365c21579 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveItemMapper.xml @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + + + + + + t.id + , t.employee_id + , t.variable_archive_id + , t.variable_item_id + , t.item_value + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + + + + INSERT INTO hrsa_variable_archive_item + + + + id, + + + employee_id, + + + variable_archive_id, + + + variable_item_id, + + + item_value, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{employeeId}, + + + #{variableArchiveId}, + + + #{variableItemId}, + + + #{itemValue}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + INSERT INTO hrsa_variable_archive_item ( + id + , employee_id + , variable_archive_id + , variable_item_id + , item_value + , create_time + , update_time + , creator + , delete_type + , tenant_key + ) + VALUES + + ( + #{item.id}, + #{item.employeeId}, + #{item.variableArchiveId}, + #{item.variableItemId}, + #{item.itemValue}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.deleteType}, + #{item.tenantKey} + ) + + + + INSERT INTO hrsa_variable_archive_item ( + id + , employee_id + , variable_archive_id + , variable_item_id + , item_value + , create_time + , update_time + , creator + , delete_type + , tenant_key + ) + + + select + #{item.id,jdbcType=DOUBLE}, + #{item.employeeId,jdbcType=DOUBLE}, + #{item.variableArchiveId,jdbcType=DOUBLE}, + #{item.variableItemId,jdbcType=DOUBLE}, + #{item.itemValue,jdbcType=VARCHAR}, + #{item.createTime,jdbcType=DATE}, + #{item.updateTime,jdbcType=DATE}, + #{item.creator,jdbcType=DOUBLE}, + #{item.deleteType,jdbcType=INTEGER}, + #{item.tenantKey,jdbcType=VARCHAR} + from dual + + + + + INSERT INTO hrsa_variable_archive_item ( + id + , employee_id + , variable_archive_id + , variable_item_id + , item_value + , create_time + , update_time + , creator + , delete_type + , tenant_key + ) + VALUES + ( + #{item.id}, + #{item.employeeId}, + #{item.variableArchiveId}, + #{item.variableItemId}, + #{item.itemValue}, + #{item.createTime}, + #{item.updateTime}, + #{item.creator}, + #{item.deleteType}, + #{item.tenantKey} + ) + + + + + + UPDATE hrsa_variable_archive_item + + employee_id=#{employeeId}, + variable_archive_id=#{variableArchiveId}, + variable_item_id=#{variableItemId}, + item_value=#{itemValue}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_archive_item + + + employee_id=#{employeeId}, + + + variable_archive_id=#{variableArchiveId}, + + + variable_item_id=#{variableItemId}, + + + item_value=#{itemValue}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + update hrsa_variable_archive_item + + + + + when id = #{item.id} then #{item.itemValue} + + + + + where id in + + #{item.id} + + + + + + + UPDATE hrsa_variable_archive_item + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_variable_archive_item + SET delete_type=1 + WHERE delete_type = 0 + + AND id IN + + #{id} + + + + + + UPDATE hrsa_variable_archive_item + SET delete_type=1 + WHERE delete_type = 0 + + AND variable_archive_id IN + + #{id} + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.java b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.java new file mode 100644 index 000000000..635c22d98 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.java @@ -0,0 +1,81 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.dto.VariableArchiveListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.po.VariableArchivePO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableArchiveMapper + * @date 2024/08/07 9:18 + * @description 羌罅f + */ +public interface VariableArchiveMapper { + /** + * ヨ∽莅医 + * + * @return 菴鐚羃≧菴腥List + */ + List listAll(); + + /** + * >散ヨ + * + * @return 菴鐚羃≧菴腥List + */ + List listSome(VariableArchivePO variableArchive); + + + /** + * 号筝脂ヨ + * + * @param id 筝脂 + * @return 菴莅医鐚羃≧菴null + */ + VariableArchivePO getById(Long id); + + /** + * 医鐚綽順null絖罧 + * + * @param variableArchive 医莅医 + * @return 菴綵怨茵 + */ + int insertIgnoreNull(VariableArchivePO variableArchive); + + /** + * 篆刻篆号絖罧 + * + * @param variableArchive 篆合莅医 + * @return 菴綵怨茵 + */ + int update(VariableArchivePO variableArchive); + + /** + * 篆刻綽順null絖罧 + * + * @param variableArchive 篆合莅医 + * @return 菴綵怨茵 + */ + int updateIgnoreNull(VariableArchivePO variableArchive); + + /** + * よ医 + * + * @param variableArchive 緇ょ莅医 + * @return 菴綵怨茵 + */ + int delete(VariableArchivePO variableArchive); + + /** + * よ医 + * + * @param variableArchiveIds 緇ょ莅医id + * @return 菴綵怨茵 + */ + int deleteByIds(@Param("ids")List variableArchiveIds); + + List list(@Param("param")VariableArchiveQueryParam queryParam); +} diff --git a/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml new file mode 100644 index 000000000..0070d0bdf --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableArchiveMapper.xml @@ -0,0 +1,412 @@ + + + + + + + + + + + + + + + + + t.id + , t.employee_id + , t.tax_agent_id + , t.salary_month + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + t.id + , t.employee_id + , t.tax_agent_id + , t.salary_month + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , e.mobile + , e.workcode + , e.certificatenum as idNo + , e.lastname as username + , e.certificatenum as idNo + , e.companystartdate as companystartdate + , e.enddate as dismissdate + , d.departmentname AS departmentName + , c.subcompanyname AS subcompanyName + , a.name AS taxAgentName + , a.id AS taxAgentId + + + + + + + + + + INSERT INTO hrsa_variable_archive + + + + id, + + + tax_agent_id, + + + employee_id, + + + salary_month, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{taxAgentId}, + + + #{employeeId}, + + + #{salaryMonth}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + + + + UPDATE hrsa_variable_archive + + employee_id=#{employeeId}, + salary_month=#{salaryMonth}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_archive + + + employee_id=#{employeeId}, + + + salary_month=#{salaryMonth}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_archive + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + UPDATE hrsa_variable_archive + 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/datacollection/VariableItemMapper.java b/src/com/engine/salary/mapper/datacollection/VariableItemMapper.java new file mode 100644 index 000000000..a886e64c3 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableItemMapper.java @@ -0,0 +1,68 @@ +package com.engine.salary.mapper.datacollection; + +import com.engine.salary.entity.datacollection.po.VariableItemPO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableItemMapper + * @date 2024/08/07 9:26 + * @description 羌蕁合 + */ +public interface VariableItemMapper { + /** + * ヨ∽莅医 + * + * @return 菴鐚羃≧菴腥List + */ + List listAll(); + + /** + * >散ヨ + * + * @return 菴鐚羃≧菴腥List + */ + List listSome(VariableItemPO variableItem); + + + /** + * 号筝脂ヨ + * + * @param id 筝脂 + * @return 菴莅医鐚羃≧菴null + */ + VariableItemPO getById(Long id); + + /** + * 医鐚綽順null絖罧 + * + * @param variableItem 医莅医 + * @return 菴綵怨茵 + */ + int insertIgnoreNull(VariableItemPO variableItem); + + /** + * 篆刻篆号絖罧 + * + * @param variableItem 篆合莅医 + * @return 菴綵怨茵 + */ + int update(VariableItemPO variableItem); + + /** + * 篆刻綽順null絖罧 + * + * @param variableItem 篆合莅医 + * @return 菴綵怨茵 + */ + int updateIgnoreNull(VariableItemPO variableItem); + + /** + * よ医 + * + * @param variableItem 緇ょ莅医 + * @return 菴綵怨茵 + */ + int delete(VariableItemPO variableItem); +} diff --git a/src/com/engine/salary/mapper/datacollection/VariableItemMapper.xml b/src/com/engine/salary/mapper/datacollection/VariableItemMapper.xml new file mode 100644 index 000000000..f7b634091 --- /dev/null +++ b/src/com/engine/salary/mapper/datacollection/VariableItemMapper.xml @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + t.id + , t.name + , t.code + , t.data_type + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + + + + + + + + + + + + + + + INSERT INTO hrsa_variable_item + + + + id, + + + name, + + + code, + + + data_type, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + + + #{id}, + + + #{name}, + + + #{code}, + + + #{dataType}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + + + + + UPDATE hrsa_variable_item + + name=#{name}, + code=#{code}, + data_type=#{dataType}, + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_item + + + name=#{name}, + + + code=#{code}, + + + data_type=#{dataType}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_variable_item + SET delete_type=1 + WHERE id = #{id} AND delete_type = 0 + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/formula/FormulaMapper.java b/src/com/engine/salary/mapper/formula/FormulaMapper.java index a723e133e..874e026ba 100644 --- a/src/com/engine/salary/mapper/formula/FormulaMapper.java +++ b/src/com/engine/salary/mapper/formula/FormulaMapper.java @@ -15,7 +15,9 @@ public interface FormulaMapper { * @return 菴鐚羃≧菴腥List */ List listAll(); - + + List list2All(); + /** * >散ヨ * diff --git a/src/com/engine/salary/mapper/formula/FormulaMapper.xml b/src/com/engine/salary/mapper/formula/FormulaMapper.xml index f60e4e484..6fa8c2ba8 100644 --- a/src/com/engine/salary/mapper/formula/FormulaMapper.xml +++ b/src/com/engine/salary/mapper/formula/FormulaMapper.xml @@ -48,6 +48,12 @@ WHERE delete_type = 0 + + + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -575,13 +577,46 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + + -- + + AND t.subcompany_id IN + + #{subcompanyId} + + + -- + + AND t.department_id IN + + #{departmentId} + + + + AND t.jobtitle_id IN + + #{positionId} + + + + AND t.status IN + + #{userStatus} + + + or (param.workcode != null and param.workcode != '')"> AND t.employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) @@ -592,68 +627,6 @@ AND em.workcode like CONCAT('%',#{param.workcode},'%') - -- - - AND em.subcompanyid1 IN - - #{subcompanyId} - - - -- - - AND em.departmentid IN - - #{departmentId} - - - - AND em.jobtitle IN - - #{positionId} - - - - AND em.status IN - - #{userStatus} - - - -- - - AND em.status in (0,1,2,3) - - -- 胼肢(茹i鐚胼肢鐚篌) - - AND em.status in (4,5,6) - - -- 莚 - - AND em.status in (0) - - -- 罩e - - AND em.status in (1) - - -- 筝贋 - - AND em.status in (2) - - -- 莚綮倶 - - AND em.status in (3) - - -- 茹i - - AND em.status in (4) - - -- 胼肢 - - AND em.status in (5) - - -- 篌 - - AND em.status in (6) - union all @@ -664,72 +637,13 @@ AND extem.workcode like CONCAT('%',#{param.workcode},'%') - -- - - AND extem.subcompany_id IN - - #{subcompanyId} - - - -- - - AND extem.department_id IN - - #{departmentId} - - - - AND extem.jobtitle_id IN - - #{positionId} - - - - AND extem.status IN - - #{userStatus} - - - -- - - AND extem.status in (0,1,2,3) - - -- 胼肢(茹i鐚胼肢鐚篌) - - AND extem.status in (4,5,6) - - -- 莚 - - AND extem.status in (0) - - -- 罩e - - AND extem.status in (1) - - -- 筝贋 - - AND extem.status in (2) - - -- 莚綮倶 - - AND extem.status in (3) - - -- 茹i - - AND extem.status in (4) - - -- 胼肢 - - AND extem.status in (5) - - -- 篌 - - AND extem.status in (6) - ) + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -739,13 +653,46 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + + -- + + AND t.subcompany_id IN + + #{subcompanyId} + + + -- + + AND t.department_id IN + + #{departmentId} + + + + AND t.jobtitle_id IN + + #{positionId} + + + + AND t.status IN + + #{userStatus} + + + or (param.workcode != null and param.workcode != '')"> AND t.employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) @@ -756,69 +703,7 @@ AND em.workcode like '%'||#{param.workcode}||'%' - - AND em.subcompanyid1 IN - - #{subcompanyId} - - - - AND em.departmentid IN - - #{departmentId} - - - - AND em.jobtitle IN - - #{positionId} - - - - AND em.status IN - - #{userStatus} - - - -- - - AND em.status in (0,1,2,3) - - -- 胼肢(茹i鐚胼肢鐚篌) - - AND em.status in (4,5,6) - - -- 莚 - - AND em.status in (0) - - -- 罩e - - AND em.status in (1) - - -- 筝贋 - - AND em.status in (2) - - -- 莚綮倶 - - AND em.status in (3) - - -- 茹i - - AND em.status in (4) - - -- 胼肢 - - AND em.status in (5) - - -- 篌 - - AND em.status in (6) - - union all - SELECT id FROM hrsa_external_employee extem WHERE extem.status not in (7) AND extem.username LIKE '%'||#{param.employeeName}||'%' @@ -826,70 +711,13 @@ AND extem.workcode like '%'||#{param.workcode}||'%' - - AND extem.subcompany_id IN - - #{subcompanyId} - - - - AND extem.department_id IN - - #{departmentId} - - - - AND extem.jobtitle_id IN - - #{positionId} - - - - AND extem.status IN - - #{userStatus} - - - -- - - AND extem.status in (0,1,2,3) - - -- 胼肢(茹i鐚胼肢鐚篌) - - AND extem.status in (4,5,6) - - -- 莚 - - AND extem.status in (0) - - -- 罩e - - AND extem.status in (1) - - -- 筝贋 - - AND extem.status in (2) - - -- 莚綮倶 - - AND extem.status in (3) - - -- 茹i - - AND extem.status in (4) - - -- 胼肢 - - AND extem.status in (5) - - -- 篌 - - AND extem.status in (6) - ) + + AND t.salary_acct_record_id = #{param.salaryAcctRecordId} + AND t.id IN @@ -899,13 +727,46 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + + + AND t.salary_month IN + + #{salaryMonth} + + + -- + + AND t.subcompany_id IN + + #{subcompanyId} + + + -- + + AND t.department_id IN + + #{departmentId} + + + + AND t.jobtitle_id IN + + #{positionId} + + + + AND t.status IN + + #{userStatus} + + + or (param.workcode != null and param.workcode != '')"> AND t.employee_id IN ( SELECT id FROM hrmresource em WHERE em.status not in (7) @@ -916,68 +777,6 @@ AND em.workcode like '%'+#{param.workcode}+'%' - - AND em.subcompanyid1 IN - - #{subcompanyId} - - - - AND em.departmentid IN - - #{departmentId} - - - - AND em.jobtitle IN - - #{positionId} - - - - AND em.status IN - - #{userStatus} - - - -- - - AND em.status in (0,1,2,3) - - - -- 胼肢(茹i鐚胼肢鐚篌) - - AND em.status in (4,5,6) - - -- 莚 - - AND em.status in (0) - - -- 罩e - - AND em.status in (1) - - -- 筝贋 - - AND em.status in (2) - - -- 莚綮倶 - - AND em.status in (3) - - -- 茹i - - AND em.status in (4) - - -- 胼肢 - - AND em.status in (5) - - -- 篌 - - AND em.status in (6) - - union all SELECT id FROM hrsa_external_employee extem WHERE extem.status not in (7) @@ -987,67 +786,6 @@ AND extem.workcode like '%'+#{param.workcode}+'%' - - AND extem.subcompany_id IN - - #{subcompanyId} - - - - AND extem.department_id IN - - #{departmentId} - - - - AND extem.jobtitle_id IN - - #{positionId} - - - - AND extem.status IN - - #{userStatus} - - - -- - - AND extem.status in (0,1,2,3) - - - -- 胼肢(茹i鐚胼肢鐚篌) - - AND extem.status in (4,5,6) - - -- 莚 - - AND extem.status in (0) - - -- 罩e - - AND extem.status in (1) - - -- 筝贋 - - AND extem.status in (2) - - -- 莚綮倶 - - AND extem.status in (3) - - -- 茹i - - AND extem.status in (4) - - -- 胼肢 - - AND extem.status in (5) - - -- 篌 - - AND extem.status in (6) - ) @@ -1232,6 +970,7 @@ + @@ -1260,6 +999,7 @@ , t.jobcall , t.jobcall_id , t.status + , t.lock_items @@ -1368,4 +1108,77 @@ AND salary_acct_record_id = #{recordId} + + UPDATE hrsa_salary_acct_emp + + + salary_acct_record_id=#{salaryAcctEmployeePO.salaryAcctRecordId}, + + + salary_sob_id=#{salaryAcctEmployeePO.salarySobId}, + + + employee_id=#{salaryAcctEmployeePO.employeeId}, + + + tax_agent_id=#{salaryAcctEmployeePO.taxAgentId}, + + + salary_month=#{salaryAcctEmployeePO.salaryMonth}, + + + create_time=#{salaryAcctEmployeePO.createTime}, + + + update_time=#{salaryAcctEmployeePO.updateTime}, + + + tenant_key=#{salaryAcctEmployeePO.tenantKey}, + + + employee_type=#{salaryAcctEmployeePO.employeeType}, + + + lock_status=#{salaryAcctEmployeePO.lockStatus}, + + + subcompany_name=#{salaryAcctEmployeePO.subcompanyName}, + + + subcompany_id=#{salaryAcctEmployeePO.subcompanyId}, + + + department_name=#{salaryAcctEmployeePO.departmentName}, + + + department_id=#{salaryAcctEmployeePO.departmentId}, + + + jobtitle_name=#{salaryAcctEmployeePO.jobtitleName}, + + + jobtitle_id=#{salaryAcctEmployeePO.jobtitleId}, + + + jobcall=#{salaryAcctEmployeePO.jobcall}, + + + jobcall_id=#{salaryAcctEmployeePO.jobcallId}, + + + status=#{salaryAcctEmployeePO.status}, + + + WHERE id = #{salaryAcctEmployeePO.id} AND delete_type = 0 + + + + UPDATE hrsa_salary_acct_emp + + lock_items = + #{lockItems, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler}, + + WHERE id = #{id} AND delete_type = 0 + + diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml index 55c41dc1c..bd1ba58d5 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultTemplateMapper.xml @@ -11,6 +11,7 @@ + @@ -24,6 +25,7 @@ , t.template_name , t.tenant_key , t.update_time + , t.type @@ -75,12 +77,21 @@ AND update_time = #{updateTime} + + AND type = #{type} + AND id IN #{id} + + AND type IN + + #{type} + + ORDER BY id DESC @@ -117,6 +128,9 @@ update_time, + + type, + @@ -146,6 +160,9 @@ #{updateTime}, + + #{type}, + @@ -161,6 +178,7 @@ template_name=#{templateName}, tenant_key=#{tenantKey}, update_time=#{updateTime}, + type=#{type}, WHERE id = #{id} AND delete_type = 0 @@ -194,6 +212,9 @@ update_time=#{updateTime}, + + type=#{type}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.java b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.java index 52ee57b51..bc07a947d 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.java +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.java @@ -1,5 +1,6 @@ package com.engine.salary.mapper.salaryitem; +import com.engine.salary.entity.salaryitem.config.SalaryItemExcelConfig; import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import org.apache.ibatis.annotations.Param; @@ -67,5 +68,11 @@ public interface SalaryItemMapper { void batchUpdateSortedIndex(@Param("collection")List salaryItemPOS); + SalaryItemPO getByName(String name); + SalaryItemPO getByCode(String code); + + List getConfig(@Param("ids") Collection ids); + + } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml index 7b8f39b3b..693e9f222 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml @@ -31,7 +31,10 @@ - t.id, + t + . + id + , t.name, t.code, t.system_type, @@ -582,5 +585,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + item.name as name + , item.use_default as use_default + , item.hide_default as hide_default + , item.data_type as data_type + , item.rounding_mode as rounding_mode + , item.pattern as pattern + , item.value_type as value_type + , f.formula as formula + , f.extend_param as extend_param + , item.sorted_index as sorted_index + , item.width as width + , item.default_value as default_value + , item.description as description + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.java index 500e28865..999c805d1 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.java +++ b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.java @@ -53,4 +53,5 @@ public interface SalarySobMapper { List listByParam(@Param("param") SalarySobPO SalarySobPO); List listByName(SalarySobPO build); + } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml index 087eb9a34..59f40120d 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml @@ -248,7 +248,7 @@ - + select hrsa_salary_sob_id.currval from dual @@ -446,7 +446,7 @@ UPDATE hrsa_salary_sob SET delete_type = 1 - WHERE delete_type = 0 + WHERE delete_type = 0 AND id IN #{id} @@ -454,7 +454,6 @@ - + SELECT + + FROM hrsa_page_list_setting t + WHERE delete_type = 0 + + + + + + + + + + + + INSERT INTO hrsa_page_list_setting + + + + create_time, + + + creator, + + + delete_type, + + + id, + + + page, + + + setting, + + + tenant_key, + + + update_time, + + + + + #{createTime}, + + + #{creator}, + + + #{deleteType}, + + + #{id}, + + + #{page}, + + + #{setting}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_page_list_setting + + create_time=#{createTime}, + creator=#{creator}, + delete_type=#{deleteType}, + page=#{page}, + setting=#{setting}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_setting + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + page=#{page}, + + + setting=#{setting}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_page_list_setting + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_page_list_setting + 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/siarchives/FundSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java index d6368f8b4..c7dfa1233 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java @@ -106,4 +106,6 @@ public interface FundSchemeMapper { * @param endTime */ void updateEndTime(@Param("id")Long id, @Param("endTime")String endTime); + + List listBySchemeId(@Param("fundSchemeId")Long id, @Param("runStatuses")List runStatus); } diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index 750d36814..644a21d18 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -265,7 +265,7 @@ AND payment_organization = #{paymentOrganization} AND fund_scheme_id is not null AND fund_start_time is not null AND fund_start_time #{billMonth} - AND (fund_end_time is null OR fund_end_time = ]]> #{billMonth}) + AND (fund_end_time is null OR fund_end_time = ]]> #{billMonth} OR fund_end_time ='') + + update hrsa_fund_archives diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java index 6ad9fbe78..fff3bbd3b 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java @@ -105,4 +105,6 @@ public interface OtherSchemeMapper { * @param endTime */ void updateEndTime(@Param("id")Long id, @Param("endTime")String endTime); + + List listBySchemeId(@Param("schemeId") Long schemeId, @Param("runStatuses") List runStatuses); } diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml index 7885d7358..ffdeb8194 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml @@ -248,7 +248,7 @@ AND payment_organization = #{paymentOrganization} AND other_scheme_id is not null AND other_start_time is not null AND other_start_time #{billMonth} - AND (other_end_time is null OR other_end_time = ]]> #{billMonth}) + AND (other_end_time is null OR other_end_time = ]]> #{billMonth} OR other_end_time ='') + + update hrsa_other_archives diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java index 6e3e97982..246cb5c78 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java @@ -136,4 +136,6 @@ public interface SocialSchemeMapper { * @param endTime */ void updateEndTime(@Param("id")Long id, @Param("endTime")String endTime); + + List listBySchemeId(@Param("schemeId")Long schemeId, @Param("runStatuses")List runStatus); } diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index 1dba6c07f..e8565471a 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -909,7 +909,7 @@ AND payment_organization = #{paymentOrganization} AND social_scheme_id is not null AND social_start_time is not null AND social_start_time #{billMonth} - AND (social_end_time is null OR social_end_time = ]]> #{billMonth}) + AND (social_end_time is null OR social_end_time = ]]> #{billMonth} OR social_end_time ='') + + update hrsa_social_archives diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml index c5eb21ebf..3538c3ab4 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml @@ -11,6 +11,7 @@ + @@ -29,6 +30,7 @@ , t.include_type , t.range_type , t.target_id + , t.target , t.target_type , t.tax_agent_id , t.tax_agent_sub_admin_id @@ -85,6 +87,9 @@ AND target_id = #{targetId} + + AND target = #{target} + AND target_type = #{targetType} @@ -154,6 +159,9 @@ target_id, + + target, + target_type, @@ -198,6 +206,9 @@ #{targetId}, + + #{target}, + #{targetType}, @@ -228,6 +239,7 @@ include_type=#{includeType}, range_type=#{rangeType}, target_id=#{targetId}, + target=#{target}, target_type=#{targetType}, tax_agent_id=#{taxAgentId}, tax_agent_sub_admin_id=#{taxAgentSubAdminId}, @@ -266,6 +278,9 @@ target_id=#{targetId}, + + target=#{target}, + target_type=#{targetType}, diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.java b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.java index bc868a210..c5245aa83 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.java +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.java @@ -1,5 +1,6 @@ package com.engine.salary.mapper.taxagent; +import com.engine.salary.entity.taxagent.config.TaxAgentConfig; import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; import com.engine.salary.entity.taxagent.po.TaxAgentEmployeePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; @@ -74,4 +75,6 @@ public interface TaxAgentMapper { * */ List listTaxAgentWithoutSocialAdmin(); + List getAllConfig(); + } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml index 58f8ec51f..09b1a49a9 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml @@ -271,5 +271,19 @@ and id not in (select distinct tax_agent_id from hrsa_tax_agent_admin where delete_type=0 and admin_type=1) + + + + + + + + + \ No newline at end of file diff --git a/src/com/engine/salary/remote/attend/entity/Attend4Salary.java b/src/com/engine/salary/remote/attend/entity/Attend4Salary.java index 701d82f69..39703a559 100644 --- a/src/com/engine/salary/remote/attend/entity/Attend4Salary.java +++ b/src/com/engine/salary/remote/attend/entity/Attend4Salary.java @@ -26,4 +26,9 @@ public class Attend4Salary { private List onlyEmpIds; private Map extendParam; + + /** + * 阪ょ罨 + */ + private String attendanceSerial; } diff --git a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java index 99553f193..eeddfd41d 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -4,12 +4,15 @@ import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; import com.engine.core.impl.Service; import com.engine.kq.cmd.report.GetKQReportCmd; +import com.engine.salary.mapper.datacollection.AttendQuoteFieldMapper; import com.engine.salary.remote.attend.cmd.GetSearchListCmd; import com.engine.salary.remote.attend.entity.Attend4Salary; import com.engine.salary.remote.attend.service.RemoteAttend4SalaryService; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.valid.ValidUtil; +import com.google.common.base.Joiner; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -26,15 +29,22 @@ import java.util.stream.Collectors; public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAttend4SalaryService { private final Boolean isLog = "true".equals(new BaseBean().getPropValue("hrmSalary", "log")); + private AttendQuoteFieldMapper getAttendQuoteFieldMapper() { + return MapperProxyFactory.getProxy(AttendQuoteFieldMapper.class); + } + @Override public List> getColumns() { + + //弱壕キ罨>拭絖罧 + List attendanceSerials = getAttendQuoteFieldMapper().getAttendanceSerials(); + String attendanceSerial = Joiner.on(",").join((Iterable) attendanceSerials); + Map paramsMap = new HashMap(); -// paramsMap.put("pageIndex", 1); -// paramsMap.put("pageSize", 10); paramsMap.put("typeselect", "3"); paramsMap.put("viewScope", "0"); paramsMap.put("isNoAccount", "1"); - paramsMap.put("attendanceSerial", ""); + paramsMap.put("attendanceSerial", attendanceSerial); paramsMap.put("isFromMyAttendance", "1"); Map temp = new HashMap(); temp.put("data", JSONObject.toJSONString(paramsMap)); @@ -60,6 +70,21 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt }); } } + //阪ょ罨 + else if (dataIndex.equals("attendanceSerial") && column.get("children") != null) { + List list = (List) column.get("children"); + if (CollectionUtils.isNotEmpty(list)) { + list.stream() + .filter(leave -> leave.get("dataIndex") != null && StringUtils.isNotBlank(leave.get("dataIndex").toString())) + .forEach(leave -> { + Map map = Maps.newHashMapWithExpectedSize(2); + map.put("code", "attendanceSerial_" + leave.get("dataIndex").toString()); + String unit = "".equals(leave.get("unit").toString()) ? "" : "(" + leave.get("unit").toString() + ")"; + map.put("name", Util.null2String(column.get("title")) + "-" + leave.get("title") + unit); + columns.add(map); + }); + } + } // else if (dataIndex.equals("overtime") && column.get("children") != null) { List list = (List) column.get("children"); @@ -106,11 +131,10 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt @Override public List> getDatas(Attend4Salary attend4Salary) { - ValidUtil.doValidator(attend4Salary); - log.info("salaryAttend綣紮キゆ井鐚{}", attend4Salary); List> list = new ArrayList<>(); try { + ValidUtil.doValidator(attend4Salary); Map paramsMap = new HashMap(); paramsMap.put("pageIndex", 1); paramsMap.put("pageSize", 500); @@ -121,11 +145,14 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt List resourceIds = attend4Salary.getOnlyEmpIds().stream().map(String::valueOf).collect(Collectors.toList()); paramsMap.put("resourceId", String.join(",", resourceIds)); paramsMap.put("isNoAccount", "1"); - paramsMap.put("attendanceSerial", ""); + //罨 + paramsMap.put("attendanceSerial", attend4Salary.getAttendanceSerial()); paramsMap.put("isFromMyAttendance", "1"); Map temp = new HashMap(); temp.put("data", JSONObject.toJSONString(paramsMap)); temp.put("reportType", "month"); + + log.info("salaryAttend綣紮キゆ井鐚{}", temp); list = (List>) commandExecutor.execute(new GetKQReportCmd(temp, user)).get("datas"); if (isLog) { log.info("salaryAttendキゆ井鐚{}", JSONUtils.toJSONString(list)); diff --git a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java index 59abb699b..9ad7fb2fc 100644 --- a/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java +++ b/src/com/engine/salary/report/entity/bo/SalaryStatisticsReportBO.java @@ -129,7 +129,9 @@ public class SalaryStatisticsReportBO { param.setDepart(((List) JSON.parseArray(po.getDepartSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); } // param.setGrade(((List) JSON.parseArray(po.getGradeSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); -// param.setPosition(((List) JSON.parseArray(po.getPositionSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); + if (po.getPositionSetting() != null) { + param.setPosition(((List) JSON.parseArray(po.getPositionSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); + } if (po.getStatusSetting() != null) { param.setStatus(((List) JSON.parseArray(po.getStatusSetting(), Map.class)).stream().map(m -> m.get(key).toString()).collect(Collectors.toList())); } diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index ecde4e139..c030d038e 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -4,11 +4,13 @@ import cn.hutool.core.util.NumberUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; @@ -24,16 +26,12 @@ import com.engine.salary.report.entity.param.SalaryStatisticsEmployeeSalaryQuery import com.engine.salary.report.service.SalaryStatisticsEmployeeService; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; -import com.engine.salary.util.SalaryAssert; -import com.engine.salary.util.SalaryDateUtil; -import com.engine.salary.util.SalaryEntityUtil; -import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.*; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.common.collect.Sets; import com.wbi.util.Util; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -89,6 +87,10 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + private SettingService getSettingService(User user) { + return ServiceUtil.getService(SettingServiceImpl.class, user); + } + @Override public PageInfo listPage(SalaryStatisticsEmployeeQueryParam queryParam) { List list = Collections.emptyList(); @@ -108,7 +110,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala .collect(Collectors.toSet()); // ヨ∵莎悟篋阪 - List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByTaxAgentAndSalaryMonth(taxAgentIds, salaryMonths); + SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder().salaryMonths(salaryMonths).taxAgentIds(taxAgentIds).build(); + List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam); if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { return page; } @@ -119,15 +122,8 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala // // 紊篋阪id // Set extEmployeeIds = Sets.newHashSet(); // 篋阪id - Set innerEmployeeIds = Sets.newHashSet(); - for (SalaryAcctEmployeePO sae : salaryAcctEmployeeList) { -// if (EmployeeTypeEnum.EXT_EMPLOYEE.getValue().equals(sae.getEmployeeType())) { -// extEmployeeIds.add(sae.getEmployeeId()); -// } else if (EmployeeTypeEnum.ORGANIZATION.getValue().equals(sae.getEmployeeType())) { -// innerEmployeeIds.add(sae.getEmployeeId()); -// } - innerEmployeeIds.add(sae.getEmployeeId()); - } + Set innerEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toCollection(LinkedHashSet::new)); + // 3.渇絖膣√ if (StringUtils.isNotEmpty(queryParam.getKeyword())) { // if (CollectionUtils.isNotEmpty(extEmployeeIds)) { @@ -158,10 +154,9 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala } } - List innerEmployeeIdList = innerEmployeeIds.stream().sorted(Comparator.comparing(e -> e)).collect(Collectors.toList()); // List extEmployeeIdList = extEmployeeIds.stream().sorted(Comparator.comparing(e -> e)).collect(Collectors.toList()); // 綺鐚綏ヤ - list = innerEmployeeIdList.stream().map(e -> SalaryStatisticsEmployeeListDTO.builder() + list = innerEmployeeIds.stream().map(e -> SalaryStatisticsEmployeeListDTO.builder() .id(e) // .employeeType(EmployeeTypeEnum.ORGANIZATION.getValue()) .build()).collect(Collectors.toList()); @@ -277,7 +272,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala map.put("id", se.getId().toString()); map.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(se.getSalaryMonth())); map.put("taxAgent", taxAgentMap.get(se.getTaxAgentId())); - map.put("salarySob",SalarySobMap.get(se.getSalarySobId())); + map.put("salarySob", SalarySobMap.get(se.getSalarySobId())); map.put("acctTimes", salaryAcctRecordMap.get(se.getSalaryAcctRecordId())); map.put("userName", Util.null2String(emp.getUsername())); map.put("subCompany", Util.null2String(emp.getSubcompanyName())); @@ -285,6 +280,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala map.put("jobTitle", Util.null2String(emp.getJobtitleName())); map.put("status", Util.null2String(NumberUtil.isNumber(emp.getStatus()) ? SalaryEmployeeStatusEnum.parseByValue(Integer.valueOf(emp.getStatus())).getDefaultLabel() : null)); map.put("workCode", Util.null2String(emp.getWorkcode())); + map.put("companystartdate", Util.null2String(emp.getCompanystartdate())); // IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(Integer.parseInt(se.getIncomeCategory())); // map.put("incomeCategory", Objects.isNull(incomeCategoryEnum) ? "" : SalaryI18nUtil.getI18nLabel(incomeCategoryEnum.getLabelId(), incomeCategoryEnum.getDefaultLabel())); @@ -295,9 +291,6 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala @Override public PageInfo listSalaryAcctEmp(SalaryStatisticsEmployeeSalaryQueryParam queryParam) { - List list = Collections.emptyList(); - PageInfo page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, SalaryStatisticsEmployeeListDTO.class); - // 1.紊, 薤キ筝腮g軸箙>査 Collection taxAgentViews = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); List taxAgentIds = Objects.isNull(taxAgentViews) ? Lists.newArrayList() : taxAgentViews.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); @@ -311,10 +304,10 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala // 2.綛贋医鐚羈鐚莎絮絮倶絖膃筝峨鐚羈菴sql between紊 List dataParam = new ArrayList<>(); if (StringUtils.isNotBlank(queryParam.getStartDateStr())) { - dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getStartDateStr()+ "-01 00:00:00")); + dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getStartDateStr() + "-01 00:00:00")); } if (StringUtils.isNotBlank(queryParam.getEndDateStr())) { - dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getEndDateStr()+ "-01 00:00:00")); + dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getEndDateStr() + "-01 00:00:00")); } Set salaryMonths = SalaryStatisticsEmployeeBO.getSalaryMonths(null, dataParam) .stream() @@ -322,18 +315,19 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala .collect(Collectors.toSet()); // ヨ∵莎悟篋阪 - List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByTaxAgentAndSalaryMonth(taxAgentIds, salaryMonths); + SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder().salaryMonths(salaryMonths).taxAgentIds(taxAgentIds).build(); + List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam); if (CollectionUtils.isNotEmpty(queryParam.getSubCompanyIds()) || CollectionUtils.isNotEmpty(queryParam.getDepartmentIds()) || StringUtils.isNotBlank(queryParam.getKeyword())) { // 号膈 List employeeList = getSalaryEmployeeService(user).listBySubCompanyOrDepartment(queryParam.getSubCompanyIds(), queryParam.getDepartmentIds()); // 号渇莚菴羯 - if(StringUtils.isNotBlank(queryParam.getKeyword())) { + if (StringUtils.isNotBlank(queryParam.getKeyword())) { employeeList = employeeList.stream() .filter(e -> (e.getUsername().contains(queryParam.getKeyword()) || (StringUtils.isNotEmpty(e.getWorkcode()) && e.getWorkcode().contains(queryParam.getKeyword())))) .collect(Collectors.toList()); } List employeeIds = employeeList.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); - salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter( acctEmp -> employeeIds.contains(acctEmp.getEmployeeId())).collect(Collectors.toList()); + salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(acctEmp -> employeeIds.contains(acctEmp.getEmployeeId())).collect(Collectors.toList()); } if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) { return new PageInfo<>(); @@ -343,8 +337,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala if (CollectionUtils.isNotEmpty(queryParam.getIds())) { salaryAcctEmployeeList = salaryAcctEmployeeList.stream().filter(emp -> queryParam.getIds().contains(emp.getId())).collect(Collectors.toList()); } - salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth)).collect(Collectors.toList()); - Collections.reverse(salaryAcctEmployeeList); + salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getSalaryMonth).reversed()).collect(Collectors.toList()); PageInfo SalaryAcctEmployeePageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryAcctEmployeeList); if (queryParam.isExport()) { SalaryAcctEmployeePageInfo.setList(salaryAcctEmployeeList); @@ -354,11 +347,33 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala @Override public SalaryStatisticsEmployeeDetailResultDTO getDetailSalaryAcctResultByAcctEmp(List salaryAcctEmployeeList) { + // 3.キ莎蕁合 + PageListSettingQueryParam param = PageListSettingQueryParam.builder().page("salary_details_report").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()) .salaryAcctResultValueList(Collections.emptyList()) - .salaryItemList(Collections.emptyList()) + .salaryItemList(salaryItemList) .build(); } @@ -366,9 +381,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); - // 3.キ莎蕁合 - List salaryItemIds = salaryAcctResultValues.stream().map(SalaryAcctResultPO::getSalaryItemId).distinct().collect(Collectors.toList()); - List salaryItemList = CollectionUtils.isEmpty(salaryItemIds) ? Lists.newArrayList() : getSalaryItemService(user).listByIds(salaryItemIds); + return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(salaryAcctEmployeeList) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index b75c5c413..8886cfa6f 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -33,6 +33,8 @@ import com.engine.salary.report.service.SalaryStatisticsReportService; import com.engine.salary.report.util.ReportTimeUtil; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; +import com.engine.salary.sys.service.SalarySysConfService; +import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.*; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; @@ -54,6 +56,8 @@ import weaver.wechat.util.Utils; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.REPORT_ORGANIZATIN_TYPE; + /** * 膸莅≧ヨ; *

Copyright: Copyright (c) 2022

@@ -71,6 +75,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary public static final String LAST_INFO = "lastInfoList"; public static final String SAME_INFO = "sameInfoList"; + private final boolean isRealOrg = "1".equals(getSalarySysConfService(user).getValueByCode(REPORT_ORGANIZATIN_TYPE)); private SalaryStatisticsReportMapper getSalaryStatisticsReportMapper() { return MapperProxyFactory.getProxy(SalaryStatisticsReportMapper.class); @@ -112,6 +117,9 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); } + private SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } // private ExtEmployeeService extEmployeeService; // // private HrmCommonEmployeeService hrmCommonEmployeeService; @@ -197,16 +205,16 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary this.getSalaryStatisticsReportMapper().updateIgnoreNull(poNew); // 莅医ュ - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(poNew.getId())); - loggerContext.setTargetName(poNew.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "贋井ヨ;")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "贋井ヨ;")); - loggerContext.setOldValues(po); - loggerContext.setNewValues(poNew); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(poNew.getId())); + loggerContext.setTargetName(poNew.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "贋井ヨ;")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "贋井ヨ;")); + loggerContext.setOldValues(po); + loggerContext.setNewValues(poNew); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } else { List list = listByName(saveParam.getReportName()); if (CollectionUtils.isNotEmpty(list)) { @@ -217,15 +225,15 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsReportMapper().insertIgnoreNull(poNew); // 莅医ュ - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(poNew.getId())); - loggerContext.setTargetName(poNew.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "医ヨ;")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "医ヨ;")); - loggerContext.setNewValues(poNew); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(poNew.getId())); + loggerContext.setTargetName(poNew.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "医ヨ;")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "医ヨ;")); + loggerContext.setNewValues(poNew); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } return StringUtils.EMPTY; } @@ -305,16 +313,16 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsItemService(user).saveOrUpdateBatch(salaryStatisticsItemList); //莅医ュ - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(po.getId())); - loggerContext.setTargetName(po.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "贋井ヨ;")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "贋井ヨ;")); - loggerContext.setOldValues(oldPO); - loggerContext.setNewValues(po); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(po.getId())); + loggerContext.setTargetName(po.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "贋井ヨ;")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "贋井ヨ;")); + loggerContext.setOldValues(oldPO); + loggerContext.setNewValues(po); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); return StringUtils.EMPTY; } @@ -333,17 +341,17 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary getSalaryStatisticsReportMapper().deleteByIds(deleteIds); //よ莎蕁 getSalaryStatisticsItemService(user).deleteByReportIds(deleteIds); - list.forEach(e -> { - // 莅医ュ - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(e.getId())); - loggerContext.setTargetName(e.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "ゆヨ;")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "ゆヨ;") + e.getReportName()); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); - }); + list.forEach(e -> { + // 莅医ュ + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(e.getId())); + loggerContext.setTargetName(e.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "ゆヨ;")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "ゆヨ;") + e.getReportName()); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + }); } Map resultMap = new HashMap<>(2); @@ -396,8 +404,8 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary loggerContext.setTargetId(String.valueOf(po.getId())); loggerContext.setTargetName(po.getReportName()); loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "医ヨ;")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "医ヨ;")); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "医ヨ;")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "医ヨ;")); loggerContext.setNewValues(po); SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); } @@ -445,8 +453,18 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary // キヨ;膸莅∴莎蕁合 List salaryItemIds = salaryStatisticsItemPOS.stream().filter(item -> StringUtils.isNotBlank(item.getItemValue())).map(p -> p.getItemValue().split(",")).flatMap(Arrays::stream).map(Long::valueOf).collect(Collectors.toList()); // 域習 - param.setSalaryStartMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryStartMonth())); - param.setSalaryEndMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryEndMonth())); + String salaryStartMonth = param.getSalaryStartMonth(); + if (salaryStartMonth == null) { + param.setSalaryStartMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryStartMonth())); + } else { + param.setSalaryStartMonth(SalaryDateUtil.getFormatYearMonth(SalaryDateUtil.dateStrToLocalDate(salaryStartMonth))); + } + String salaryEndMonth = param.getSalaryEndMonth(); + if (salaryEndMonth == null) { + param.setSalaryEndMonth(SalaryDateUtil.getFormatYearMonth(reportPO.getSalaryEndMonth())); + } else { + param.setSalaryEndMonth(SalaryDateUtil.getFormatYearMonth(SalaryDateUtil.dateStrToLocalDate(salaryEndMonth))); + } String key = "id"; if (reportPO.getTaxAgentSetting() != null) { param.setTaxAgent(((List) JSON.parseArray(reportPO.getTaxAgentSetting(), Map.class)).stream().map(m -> Long.valueOf(m.get(key).toString())).collect(Collectors.toList())); @@ -469,7 +487,15 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary List salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryStatisticsReportParam(queryParam); // 莅丞舟dimensionValue筝榊惨綺 - SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder().list(salaryAcctEmployeeList).lastList(Collections.emptyList()).sameList(Collections.emptyList()).salaryStatisticsItemList(salaryStatisticsItemPOS).employeeId((long) user.getUID()).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).dimensionValue(param.getDimensionValue()).build(); + SalaryStatisticsReportDataDTO salaryStatisticsReportData = SalaryStatisticsReportDataDTO.builder() + .list(salaryAcctEmployeeList) + .lastList(Collections.emptyList()) + .sameList(Collections.emptyList()) + .salaryStatisticsItemList(salaryStatisticsItemPOS) + .employeeId((long) user.getUID()) + .dimensionValue(param.getDimensionValue()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); Map> resultMap = new HashMap<>(); List salaryAcctEmployeeIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); @@ -606,7 +632,7 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary DataCollectionEmployee emp = employeeMap.get(se.getEmployeeId()); resultMap.put("id", se.getId().toString()); resultMap.put("userName", emp == null ? "" : emp.getUsername()); - resultMap.put("departmentName", emp == null ? "" : emp.getDepartmentName()); + resultMap.put("departmentName", se.getDepartmentName()); resultMap.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(se.getSalaryMonth())); resultMap.put("taxAgent", taxAgentMap.get(se.getTaxAgentId())); resultMap.put("salarySob", SalarySobMap.get(se.getSalarySobId())); @@ -775,38 +801,74 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map subComIdNameMap = new HashMap<>(); Map lastEmpIdSubComMap = new HashMap<>(); Map sameEmpIdSubComMap = new HashMap<>(); - comInfoMap.forEach((k, v) -> { - subComIdNameMap.put(v.getSubcompanyid(), v.getSubcompanyName()); - empIdSubComMap.put(k, v.getSubcompanyid()); - subComIds.add(v.getSubcompanyid()); - }); - lastComInfoMap.forEach((k, v) -> { - lastEmpIdSubComMap.put(k, v.getSubcompanyid()); - }); - sameComInfoMap.forEach((k, v) -> { - sameEmpIdSubComMap.put(k, v.getSubcompanyid()); - }); + + if (isRealOrg) { + comInfoMap.forEach((k, v) -> { + subComIdNameMap.put(v.getSubcompanyid(), v.getSubcompanyName()); + empIdSubComMap.put(k, v.getSubcompanyid()); + subComIds.add(v.getSubcompanyid()); + }); + lastComInfoMap.forEach((k, v) -> { + lastEmpIdSubComMap.put(k, v.getSubcompanyid()); + }); + sameComInfoMap.forEach((k, v) -> { + sameEmpIdSubComMap.put(k, v.getSubcompanyid()); + }); + } else { + data.getList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + subComIdNameMap.put(employee.getSubcompanyId(), employee.getSubcompanyName()); + subComIds.add(employee.getDepartmentId()); + empIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + data.getLastList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + lastEmpIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + data.getSameList().forEach(employee -> { + if (employee.getSubcompanyId() != null && employee.getSubcompanyId() != null) { + sameEmpIdSubComMap.put(employee.getEmployeeId(), employee.getSubcompanyId()); + } + }); + } + String dimensionValue = data.getDimensionValue(); subComIds.forEach(subComId -> { if (dimensionValue == null) { - List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); - List lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); - List sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + List lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + List sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + if (isRealOrg) { + subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + lastSubComEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + sameSubComEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + } Map temp = new HashMap<>(); temp.put(DM, subComIdNameMap.get(subComId)); temp.putAll(SalaryStatisticsReportBO.calculateItem(subComEmployeePOS, lastSubComEmployeePOS, sameSubComEmployeePOS, salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); records.add(temp); } else if (StringUtils.equals(dimensionValue, subComIdNameMap.get(subComId))) { - List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + List subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getSubcompanyId(), subComId)).collect(Collectors.toList()); + if (isRealOrg) { + subComEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdSubComMap.get(po.getEmployeeId()), subComId)).collect(Collectors.toList()); + } data.setListByDimensionValue(subComEmployeePOS); } }); if (dimensionValue == null) { - List noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + List lastNoGroupingList = data.getLastList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + List sameNoGroupingList = data.getSameList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + sameNoGroupingList = data.getSameList().stream().filter(po -> sameEmpIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(noGroupingList)) { Map noGrouping = new HashMap<>(); noGrouping.put(DM, SalaryI18nUtil.getI18nLabel(153462, "膸")); @@ -815,6 +877,9 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary } } else if (StringUtils.equals(dimensionValue, "膸")) { List noGroupingList = data.getList().stream().filter(po -> empIdSubComMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> po.getSubcompanyId() == null).collect(Collectors.toList()); + } data.setListByDimensionValue(noGroupingList); } @@ -838,44 +903,78 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary Map lastEmpIdDepartIdMap = new HashMap<>(); Map sameEmpIdDepartIdMap = new HashMap<>(); Map departIdNameMap = new HashMap<>(); - simpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); - departIds.add(employee.getDepartmentId()); - empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); - lastSimpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); - sameSimpleEmployeeList.forEach(employee -> { - if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { - sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); - } - }); + if (isRealOrg) { + simpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); + departIds.add(employee.getDepartmentId()); + empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + lastSimpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + sameSimpleEmployeeList.forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + } else { + data.getList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + departIdNameMap.put(employee.getDepartmentId(), employee.getDepartmentName()); + departIds.add(employee.getDepartmentId()); + empIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + data.getLastList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + lastEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + data.getSameList().forEach(employee -> { + if (employee.getDepartmentName() != null && employee.getDepartmentId() != null) { + sameEmpIdDepartIdMap.put(employee.getEmployeeId(), employee.getDepartmentId()); + } + }); + } String dimensionValue = data.getDimensionValue(); departIds.forEach(departId -> { if (dimensionValue == null) { - List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); - List lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); - List sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + List lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + List sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + if (isRealOrg) { + departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + lastDepartEmployeePOS = data.getLastList().stream().filter(po -> Objects.equals(lastEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + sameDepartEmployeePOS = data.getSameList().stream().filter(po -> Objects.equals(sameEmpIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + } Map temp = new HashMap<>(); temp.put(DM, departIdNameMap.get(departId)); temp.putAll(SalaryStatisticsReportBO.calculateItem(departEmployeePOS, lastDepartEmployeePOS, sameDepartEmployeePOS, salaryAcctResultValueMap, data.getSalaryStatisticsItemList())); records.add(temp); } else if (StringUtils.equals(dimensionValue, departIdNameMap.get(departId))) { - List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + List departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(po.getDepartmentId(), departId)).collect(Collectors.toList()); + if (isRealOrg) { + departEmployeePOS = data.getList().stream().filter(po -> Objects.equals(empIdDepartIdMap.get(po.getEmployeeId()), departId)).collect(Collectors.toList()); + } data.setListByDimensionValue(departEmployeePOS); } }); if (dimensionValue == null) { - List noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); - List sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + List lastNoGroupingList = data.getLastList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + List sameNoGroupingList = data.getSameList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + lastNoGroupingList = data.getLastList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + sameNoGroupingList = data.getSameList().stream().filter(po -> lastEmpIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + + } if (CollectionUtils.isNotEmpty(noGroupingList)) { Map noGrouping = new HashMap<>(); noGrouping.put(DM, SalaryI18nUtil.getI18nLabel(153462, "膸")); @@ -883,7 +982,10 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary records.add(noGrouping); } } else if (StringUtils.equals(dimensionValue, "膸")) { - List noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + List noGroupingList = data.getList().stream().filter(po -> po.getDepartmentId() == null).collect(Collectors.toList()); + if (isRealOrg) { + noGroupingList = data.getList().stream().filter(po -> empIdDepartIdMap.get(po.getEmployeeId()) == null).collect(Collectors.toList()); + } data.setListByDimensionValue(noGroupingList); } diff --git a/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java b/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java index a98c909ea..4fa4ae64a 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsEmployeeController.java @@ -73,7 +73,7 @@ public class SalaryStatisticsEmployeeController { } /** - * 綏ヨ莎茵 + * 莎膸 * * @param queryParam * @return @@ -134,17 +134,4 @@ public class SalaryStatisticsEmployeeController { throw e; } } - -// /** -// * 絲弱阪綏ヨ茵 -// * -// * @param queryParam -// * @return -// */ -// @PostMapping("/exportDetailList") -// @ApiOperation("絲弱阪綏ヨ茵") -// @WeaPermission(publicPermission = true) -// public WeaResult> exportDetailList(@RequestBody SalaryStatisticsEmployeeDetailQueryParam queryParam) { -// return WeaResult.success(getSalaryStatisticsEmployeeWrapper(user).exportDetailList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); -// } } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index 262104e75..63e0863cf 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -7,6 +7,7 @@ import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.component.SalaryWeaTable; +import com.engine.salary.component.WeaTableColumnGroup; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; @@ -21,6 +22,8 @@ import com.engine.salary.report.entity.param.SalaryStatisticsEmployeeSalaryQuery 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.impl.SalaryItemServiceImpl; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.excel.ExcelUtilPlus; @@ -57,6 +60,10 @@ public class SalaryStatisticsEmployeeWrapper extends Service { return ServiceUtil.getService(SalaryStatisticsEmployeeServiceImpl.class, user); } + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + /** * 綏ュ茵 * @@ -129,6 +136,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { 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)); // columns.add(new WeaTableColumn("100px",SalaryI18nUtil.getI18nLabel( 121908, "九ユ緇蕁合"), "incomeCategory")); @@ -164,13 +172,13 @@ public class SalaryStatisticsEmployeeWrapper extends Service { if (record.containsKey(itemKey)) { if (Objects.nonNull(record.get(itemKey)) && StringUtils.isNotEmpty(record.get(itemKey).toString()) && NumberUtils.isCreatable(record.get(itemKey).toString())) { sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); - record.put(itemKey, ReportDataUtil.thousandthConvert(record.get(itemKey).toString())); + record.put(itemKey, record.get(itemKey).toString()); } } } // 莎蕁合莅 if (queryParam.isExport()) { - countResultMap.put(itemKey, ReportDataUtil.thousandthConvert(sumBigDecimal.toString())); + countResultMap.put(itemKey, sumBigDecimal.toString()); } } } @@ -221,6 +229,9 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // キ篋阪 PageInfo salaryAcctEmployeePageInfo = getSalaryStatisticsEmployeeService(user).listSalaryAcctEmp(queryParam); List employeePOS = salaryAcctEmployeePageInfo.getList(); + if (CollectionUtils.isEmpty(employeePOS)){ + return resultMap; + } Map sumResultMap = Maps.newHashMap(); @@ -264,39 +275,61 @@ public class SalaryStatisticsEmployeeWrapper extends Service { queryParam.setExport(true); Map resultMap = salaryList(queryParam); List columns = (List)resultMap.get("columns"); - List salaryItemList = ((List)resultMap.get("salaryItems")); List> resultList = ((PageInfo>) resultMap.get("pageInfo")).getList(); Map countResult = (Map)resultMap.get("countResult"); Map columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); - List finalColumns = new ArrayList<>(); + // キ莎蕁合篆絨遺 + List salaryItemPOList = getSalaryItemService(user).listAll(); + Map salaryItemMap = SalaryEntityUtil.convert2Map(salaryItemPOList, item -> item.getId() + "_salaryItem"); + List finalColumns = new ArrayList<>(); queryParam.getColumns().forEach(col -> { WeaTableColumn column = columnMap.get(col); if (column != null) { - finalColumns.add(column); + 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)); } }); - columns = finalColumns; List> rowList = new ArrayList<>(); // 茵紊 - rowList.add(columns.stream().map(WeaTableColumn::getText).collect(Collectors.toList())); + rowList.add(finalColumns); // 井 for (Map valueMap : resultList) { List list = new ArrayList<>(); - for (WeaTableColumn column : columns) { - list.add(Util.null2String(valueMap.get(column.getColumn()))); + for (Object column : finalColumns) { + WeaTableColumnGroup col = (WeaTableColumnGroup)column; + if (col.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())) { + try { + list.add(new BigDecimal(Util.null2String(valueMap.get(col.getColumn())))); + } catch (Exception e) { + list.add(Util.null2String(valueMap.get(col.getColumn()))); + } + } else { + list.add(Util.null2String(valueMap.get(col.getColumn()))); + } } rowList.add(list); } // 莅 List sumRow = new ArrayList<>(); sumRow.add("肢"); - for (int i = 1; i < columns.size(); i++) { - sumRow.add(Util.null2String(countResult.get(columns.get(i).getColumn()))); + for (int i = 1; i < finalColumns.size(); 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())))); + } catch (Exception e) { + sumRow.add(Util.null2String(countResult.get(weaTableColumnGroup.getColumn()))); + } + } else { + sumRow.add(Util.null2String(countResult.get(weaTableColumnGroup.getColumn()))); + } } rowList.add(sumRow); - return ExcelUtilPlus.genWorkbookV2(rowList, "莎膸", true); + return ExcelUtilPlus.genWorkbookV2WithPattern(rowList, "莎膸", true); } // public Map exportDetailList(SalaryStatisticsEmployeeDetailQueryParam queryParam) { diff --git a/src/com/engine/salary/service/AttendQuoteService.java b/src/com/engine/salary/service/AttendQuoteService.java index d871b026c..0e57a4513 100644 --- a/src/com/engine/salary/service/AttendQuoteService.java +++ b/src/com/engine/salary/service/AttendQuoteService.java @@ -7,6 +7,7 @@ import com.engine.salary.util.page.PageInfo; import java.time.YearMonth; import java.util.Collection; +import java.util.List; public interface AttendQuoteService { @@ -31,10 +32,10 @@ public interface AttendQuoteService { * 罍ユ篁ユ篏 * * @param salaryYearMonth - * @param salarySobId + * @param salarySobIds * @return */ - Boolean checkOperation(YearMonth salaryYearMonth, Long salarySobId); + Boolean checkOperation(YearMonth salaryYearMonth, List salarySobIds); AttendQuotePO getById(Long id); diff --git a/src/com/engine/salary/service/SISchemeService.java b/src/com/engine/salary/service/SISchemeService.java index e465d2740..86eb024ee 100644 --- a/src/com/engine/salary/service/SISchemeService.java +++ b/src/com/engine/salary/service/SISchemeService.java @@ -27,7 +27,7 @@ public interface SISchemeService { Map insertScheme(Map params); - Map update(Map params); + String update(Map params); Map delete(Map params); diff --git a/src/com/engine/salary/service/SalaryAcctEmployeeService.java b/src/com/engine/salary/service/SalaryAcctEmployeeService.java index dce2bfea8..ee9bd2ced 100644 --- a/src/com/engine/salary/service/SalaryAcctEmployeeService.java +++ b/src/com/engine/salary/service/SalaryAcctEmployeeService.java @@ -273,4 +273,11 @@ public interface SalaryAcctEmployeeService { * @param salaryAcctRecordId */ void handleNbjhSalaryAcctEmp(Long salaryAcctRecordId); + /** + * 贋 + * @param salaryAcctEmployeePO + */ + void updateIgnoreNull(SalaryAcctEmployeePO salaryAcctEmployeePO); + + void lock(SalaryAcctEmployeePO salaryAcctEmployeePO); } diff --git a/src/com/engine/salary/service/SalaryAcctExcelService.java b/src/com/engine/salary/service/SalaryAcctExcelService.java index b86ef0da0..e23815ba3 100644 --- a/src/com/engine/salary/service/SalaryAcctExcelService.java +++ b/src/com/engine/salary/service/SalaryAcctExcelService.java @@ -4,6 +4,7 @@ import com.engine.salary.component.WeaTableColumnGroup; import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.util.excel.ExcelPreviewDTO; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.List; @@ -113,10 +114,10 @@ public interface SalaryAcctExcelService { Map preview(SalaryAcctImportParam param); - Map previewImportSalaryAcctResult(SalaryAcctImportParam param); + ExcelPreviewDTO previewImportSalaryAcctResult(SalaryAcctImportParam param); - void cacheImportField(List salaryItems); + void cacheImportField(SalaryAcctResultTemplateSaveParam param); void cacheExportField(List salaryItems); diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 897695291..0cc40fbfa 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -158,6 +158,13 @@ public interface SalaryAcctResultService { */ List listBySalaryAcctRecordIdsAndTaxAgentIds(Collection salaryAcctRecordIds, Collection taxAgentIds); + /** + * 絎 + * @param param + */ + void lock(SalaryAcctResultLockParam param); + + /** * 絎蕁合 * diff --git a/src/com/engine/salary/service/SalaryAcctResultTemplateService.java b/src/com/engine/salary/service/SalaryAcctResultTemplateService.java index 7696cb4bf..a2b4c9c4a 100644 --- a/src/com/engine/salary/service/SalaryAcctResultTemplateService.java +++ b/src/com/engine/salary/service/SalaryAcctResultTemplateService.java @@ -75,5 +75,5 @@ public interface SalaryAcctResultTemplateService { * @param salarySobId * @return */ - List listBySalarySobId(Long salarySobId); + List listBySalarySobId(Long salarySobId,List types); } diff --git a/src/com/engine/salary/service/SalaryArchiveItemService.java b/src/com/engine/salary/service/SalaryArchiveItemService.java index 7ba221024..66c72c5f2 100644 --- a/src/com/engine/salary/service/SalaryArchiveItemService.java +++ b/src/com/engine/salary/service/SalaryArchiveItemService.java @@ -1,11 +1,13 @@ package com.engine.salary.service; +import com.engine.salary.entity.salaryarchive.config.ArchiveFieldConfig; import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemSaveParam; import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustBeforeParam; import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -158,4 +160,9 @@ public interface SalaryArchiveItemService { * @date 2022/11/14 13:38 */ String editSingleSalaryItem(SalaryArchiveItemSaveParam salaryArchiveItemSaveParam); + + + ArchiveFieldConfig getConfig(); + + UploadConfigResponse.Result parseConfig(ArchiveFieldConfig config); } diff --git a/src/com/engine/salary/service/SalaryEmployeeService.java b/src/com/engine/salary/service/SalaryEmployeeService.java index b09b970dc..b408ceee6 100644 --- a/src/com/engine/salary/service/SalaryEmployeeService.java +++ b/src/com/engine/salary/service/SalaryEmployeeService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; +import com.engine.salary.entity.hrm.JobCallInfo; import com.engine.salary.entity.hrm.PositionInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; @@ -102,14 +103,20 @@ public interface SalaryEmployeeService { List getDeptInfoList(List departmentIds); + DeptInfo getDeptInfoById(Long departmentId); + List getVirtualDeptInfoList(List virtualDepartmentIds); List getSubCompanyInfoList(List subDepartmentIds); + SubCompanyInfo getSubCompanyInfoById(Long subDepartmentId); + List getVirtualSubCompanyInfoList(List virtualSubDepartmentIds); List listPositionInfo(List positionIds); + PositionInfo getPositionInfoById(Long positionId); + List listEmployee(); List listByParams(List includeQueryParams); @@ -173,4 +180,11 @@ public interface SalaryEmployeeService { * */ List listAllDeptInfo(); + + /** + * 号腱idキ腱遺拭 + * @param jobCallId + * @return + */ + JobCallInfo getJobCallInfoById(Long jobCallId); } diff --git a/src/com/engine/salary/service/SalaryFormulaService.java b/src/com/engine/salary/service/SalaryFormulaService.java index 618011426..60142fd05 100644 --- a/src/com/engine/salary/service/SalaryFormulaService.java +++ b/src/com/engine/salary/service/SalaryFormulaService.java @@ -1,6 +1,7 @@ package com.engine.salary.service; import com.engine.salary.entity.salaryformula.ExpressFormula; +import com.engine.salary.entity.salaryformula.config.FormluaConfig; import com.engine.salary.entity.salaryformula.param.SalaryFormulaMockParam; import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam; import com.engine.salary.entity.salaryformula.po.FormulaPO; @@ -55,5 +56,13 @@ public interface SalaryFormulaService { List listByIds(List formulaIds); + List listAll(); + + List listAllVar(); + void update(FormulaPO formulaPO); + + FormluaConfig getConfig(); + + Long add(FormulaPO formula); } diff --git a/src/com/engine/salary/service/SalaryItemService.java b/src/com/engine/salary/service/SalaryItemService.java index ba661cc27..3fa1409d6 100644 --- a/src/com/engine/salary/service/SalaryItemService.java +++ b/src/com/engine/salary/service/SalaryItemService.java @@ -1,12 +1,15 @@ package com.engine.salary.service; -import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; -import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; -import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; +import com.engine.salary.entity.salaryitem.config.SalaryItemAllConfig; +import com.engine.salary.entity.salaryitem.config.SalaryItemExcelConfig; +import com.engine.salary.entity.salaryitem.param.*; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.SalarySystemTypeEnum; import com.engine.salary.service.impl.SalaryItemServiceImpl; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; +import com.engine.salary.util.excel.ImportExcelResponse; import com.engine.salary.util.page.PageInfo; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.util.Collection; import java.util.List; @@ -61,6 +64,8 @@ public interface SalaryItemService { * @return */ List listByName(String name); + SalaryItemPO getByName(String name); + /** * 号鐚絎箙莎蕁合/膤紫莎蕁合鐚ヨ∵莎蕁合 @@ -147,4 +152,22 @@ public interface SalaryItemService { * @param syncSalaryItemParam */ void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam); + + SalaryItemAllConfig getConfig(); + + UploadConfigResponse.Result parseConfig(SalaryItemAllConfig salaryItemConfig); + + SalaryItemPO getItem(SalaryItemPO salaryItemPO); + + List getConfig(SalaryItemExportParam param); + + + Map preview(SalaryItemImportParam param); + + ImportExcelResponse importSalaryItem(SalaryItemImportParam param); + + XSSFWorkbook export(SalaryItemExportParam param); + + XSSFWorkbook downloadTemplate(SalaryItemDownloadTemplateParam param); + } diff --git a/src/com/engine/salary/service/SalarySobBackItemService.java b/src/com/engine/salary/service/SalarySobBackItemService.java index ae508b9d4..b596f7684 100644 --- a/src/com/engine/salary/service/SalarySobBackItemService.java +++ b/src/com/engine/salary/service/SalarySobBackItemService.java @@ -66,4 +66,7 @@ public interface SalarySobBackItemService { int deleteBySalarySobIds(Collection salarySobIds); List listBySalaryItemIds(Collection salaryItemIds); + + List getConfig(Long salarySobId); + } diff --git a/src/com/engine/salary/service/SalarySobItemGroupService.java b/src/com/engine/salary/service/SalarySobItemGroupService.java index d42e63f8b..ca689d9ef 100644 --- a/src/com/engine/salary/service/SalarySobItemGroupService.java +++ b/src/com/engine/salary/service/SalarySobItemGroupService.java @@ -44,4 +44,6 @@ public interface SalarySobItemGroupService { * @param salarySobIds 莎茣絅id */ void deleteBySalarySobIds(Collection salarySobIds); + + List getConfig(Long salarySobId); } diff --git a/src/com/engine/salary/service/SalarySobItemService.java b/src/com/engine/salary/service/SalarySobItemService.java index c640291e3..af509a042 100644 --- a/src/com/engine/salary/service/SalarySobItemService.java +++ b/src/com/engine/salary/service/SalarySobItemService.java @@ -126,4 +126,6 @@ public interface SalarySobItemService { SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param); void update(SalarySobItemPO po); + + List getConfig(Long salarySobId); } diff --git a/src/com/engine/salary/service/SalarySobService.java b/src/com/engine/salary/service/SalarySobService.java index bef31a87e..1056846fc 100644 --- a/src/com/engine/salary/service/SalarySobService.java +++ b/src/com/engine/salary/service/SalarySobService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.salarysob.config.SalarySobConfig; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.param.SalarySobBasicSaveParam; import com.engine.salary.entity.salarysob.param.SalarySobDisableParam; @@ -7,6 +8,7 @@ import com.engine.salary.entity.salarysob.param.SalarySobDuplicateParam; import com.engine.salary.entity.salarysob.param.SalarySobListQueryParam; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.util.page.PageInfo; import java.time.YearMonth; @@ -65,6 +67,8 @@ public interface SalarySobService { List listAll(); + List listAllByAuth(); + /** * キユ膊∞茣絅 * @return @@ -154,4 +158,8 @@ public interface SalarySobService { * @return */ List listByTaxAgentIds(Collection taxAgentIds); + + List getConfig(Long taxAgentId); + + List parseConfig(Long taxAgentId, List salarySobConfigs); } diff --git a/src/com/engine/salary/service/SettingService.java b/src/com/engine/salary/service/SettingService.java new file mode 100644 index 000000000..27b7e679e --- /dev/null +++ b/src/com/engine/salary/service/SettingService.java @@ -0,0 +1,12 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.setting.param.PageListSettingQueryParam; +import com.engine.salary.entity.setting.param.PageListSettingSaveParam; + +import java.util.Map; + +public interface SettingService { + void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam); + + Map getPageListSetting(PageListSettingQueryParam param); +} diff --git a/src/com/engine/salary/service/SpecialAddDeductionService.java b/src/com/engine/salary/service/SpecialAddDeductionService.java index d2f893323..9879a6ab6 100644 --- a/src/com/engine/salary/service/SpecialAddDeductionService.java +++ b/src/com/engine/salary/service/SpecialAddDeductionService.java @@ -2,13 +2,16 @@ package com.engine.salary.service; import com.engine.salary.entity.datacollection.dto.SpecialAddDeductionListDTO; import com.engine.salary.entity.datacollection.dto.SpecialAddDeductionRecordDTO; -import com.engine.salary.entity.datacollection.param.*; +import com.engine.salary.entity.datacollection.param.SpecialAddDeductionImportParam; +import com.engine.salary.entity.datacollection.param.SpecialAddDeductionParam; +import com.engine.salary.entity.datacollection.param.SpecialAddDeductionQueryParam; +import com.engine.salary.entity.datacollection.param.SpecialAddDeductionRecordDeleteParam; import com.engine.salary.entity.datacollection.po.SpecialAddDeductionPO; +import com.engine.salary.util.excel.ExcelPreviewDTO; import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.time.YearMonth; -import java.util.Date; import java.util.List; import java.util.Map; @@ -61,7 +64,7 @@ public interface SpecialAddDeductionService { /** * 蘂茹 */ - Map preview(SpecialAddDeductionImportParam importParam); + ExcelPreviewDTO preview(SpecialAddDeductionImportParam importParam); /** * 絲弱ユ井 diff --git a/src/com/engine/salary/service/TaxAgentBaseService.java b/src/com/engine/salary/service/TaxAgentBaseService.java index ab795d52c..de468d8df 100644 --- a/src/com/engine/salary/service/TaxAgentBaseService.java +++ b/src/com/engine/salary/service/TaxAgentBaseService.java @@ -2,6 +2,7 @@ package com.engine.salary.service; import com.engine.salary.entity.taxagent.param.TaxAgentSaveBaseParam; import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; /** * 筝腮g軸箙>査榊篆≧ @@ -34,4 +35,8 @@ public interface TaxAgentBaseService { * @return */ String save(TaxAgentSaveBaseParam saveBaseParam); + + TaxAgentBasePO getConfig(); + + UploadConfigResponse.Result parseConfig(TaxAgentBasePO config); } diff --git a/src/com/engine/salary/service/TaxAgentService.java b/src/com/engine/salary/service/TaxAgentService.java index 4d4474102..63fb85018 100644 --- a/src/com/engine/salary/service/TaxAgentService.java +++ b/src/com/engine/salary/service/TaxAgentService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.taxagent.config.TaxAgentConfig; import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeTaxAgentDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentListDTO; @@ -11,6 +12,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentEmployeePO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.enums.taxagent.TaxAgentRoleTypeEnum; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.util.page.PageInfo; import java.util.Collection; @@ -297,4 +299,8 @@ public interface TaxAgentService { * @return */ List listTaxAgentWithoutSocialAdmin(); + + List getConfig(); + + List parseConfig(List configs); } diff --git a/src/com/engine/salary/service/VariableArchiveItemService.java b/src/com/engine/salary/service/VariableArchiveItemService.java new file mode 100644 index 000000000..e5dd8644a --- /dev/null +++ b/src/com/engine/salary/service/VariableArchiveItemService.java @@ -0,0 +1,36 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableArchiveItemService + * @date 2024/08/07 9:29 + * @description 羌莎罅f膸 + */ +public interface VariableArchiveItemService { + + List listAll(); + /** + * 号羌莎罅fidキ + * + * @param variableArchiveIds + * @return + */ + List listByVariableArchiveIds(List variableArchiveIds); + + /** + * ヨ∽貴罅f筝綏俄戎羌莎蕁合 + * + * @return + */ + List listUsingItems(); + + int batchInsert(List variableArchiveItemList); + + void deleteByIds(List variableArchiveItemIds); + + void deleteByArchiveIds(List variableArchiveIds); +} diff --git a/src/com/engine/salary/service/VariableArchiveService.java b/src/com/engine/salary/service/VariableArchiveService.java new file mode 100644 index 000000000..280a4064d --- /dev/null +++ b/src/com/engine/salary/service/VariableArchiveService.java @@ -0,0 +1,75 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.datacollection.dto.VariableArchiveListDTO; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveSaveParam; +import com.engine.salary.util.excel.ExcelPreviewDTO; +import com.engine.salary.util.page.PageInfo; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +import java.time.YearMonth; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 井-羌 + *

Copyright: Copyright (c) 2022

+ *

Company: 羈緇莉篁

+ * + * @author xzy + * @version 1.0 + **/ +public interface VariableArchiveService { + + /** + * ヨ∽貴罅f鐚蕁居 + * + * @param queryParam + * @return + */ + PageInfo listPage(VariableArchiveQueryParam queryParam); + + List list(VariableArchiveQueryParam queryParam); + + /** + * 綮堺貴莎罅f井 + * + * @param variableArchives + * @return + */ + List> buildVariableArchiveData(List variableArchives); + + /** + * 綮堺貴罅f + * + * @param saveParam + */ + void createData(VariableArchiveSaveParam saveParam); + + /** + * 羌莎罅f膸 + * + * @param queryParam + * @return + */ + Map getDetail(VariableArchiveQueryParam queryParam); + + List getCreateForm(); + + XSSFWorkbook downloadTemplate(VariableArchiveQueryParam param); + + ExcelPreviewDTO preview(VariableArchiveImportHandleParam importParam); + + Map importData(VariableArchiveImportHandleParam importParam); + + XSSFWorkbook export(VariableArchiveQueryParam param); + + void deleteSelectVariableArchive(Collection deleteIds); + + List> listBySalaryMonthAndEmployeeIds(YearMonth salaryMonth, List employeeIds, Long taxAgentId); + + void updateData(VariableArchiveSaveParam updateParam); +} diff --git a/src/com/engine/salary/service/VariableItemService.java b/src/com/engine/salary/service/VariableItemService.java new file mode 100644 index 000000000..ef2dade37 --- /dev/null +++ b/src/com/engine/salary/service/VariableItemService.java @@ -0,0 +1,66 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableItemQueryParam; +import com.engine.salary.entity.datacollection.param.VariableItemSaveParam; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.util.page.PageInfo; + +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableItemService + * @date 2024/08/07 9:30 + * @description 羌蕁合 + */ +public interface VariableItemService { + + VariableItemPO getById(Long id); + + List listByIds(List ids); + + /** + * キ羌蕁合 + * + * @return + */ + List listAll(); + + /** + * キ羌莎蕁合茵鐚蕁居 + * + * @param queryParam + * @return + */ + PageInfo listPage(VariableItemQueryParam queryParam); + + /** + * 医産羌蕁合 + * + * @param saveParam + */ + Integer save(VariableItemSaveParam saveParam); + + /** + * 贋井貴蕁合 + * + * @param saveParam + */ + VariableItemPO update(VariableItemSaveParam saveParam); + + /** + * ゆ貴莎蕁合 + * + * @param itemIds + */ + void deleteItems(List itemIds); + + /** + * 羌蕁合莚膸篆≧ + * + * @param id + * @return + */ + VariableItemListDTO getDetail(Long id); +} diff --git a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java index be0924a5d..e2976bbaf 100644 --- a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java @@ -253,9 +253,10 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation AddUpSituationBiz biz = new AddUpSituationBiz(); List addUpSituations = biz.listSome(AddUpSituation.builder().taxAgentId(taxAgentId).taxYearMonth(taxCycle).build()); - Set addUpSituationIds = SalaryEntityUtil.properties(addUpSituations, AddUpSituation::getId); + List addUpSituationIds = SalaryEntityUtil.properties(addUpSituations, AddUpSituation::getId, Collectors.toList()); if (CollectionUtils.isNotEmpty(addUpSituationIds)) { - getAddUpSituationMapper().deleteByIds(addUpSituationIds); + List> partition = Lists.partition(addUpSituationIds, 100); + partition.forEach(getAddUpSituationMapper()::deleteByIds); } return Boolean.TRUE; @@ -611,7 +612,7 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation String idNo = dto.getIdNo(); //膈絲弱ヤ査篆≧篁ュ篋阪莎羣羆筝拷亥篋阪篆≧ - List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo,null); + List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); //綵篋阪篆≧絲弱ョ絮臀筝"0"駈紮綽紂蕁 if (StringUtils.isBlank(userName) && "0".equals(confValue)) { diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index 0b95a4a1d..48648cc57 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -70,6 +70,7 @@ import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.file.ImageFileManager; import weaver.general.BaseBean; +import weaver.general.Util; import weaver.hrm.User; import weaver.wechat.util.Utils; @@ -131,7 +132,6 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa } - private RemoteAttend4SalaryService getRemoteAttend4SalaryService(User user) { return ServiceUtil.getService(RemoteAttend4SalaryServiceImpl.class, user); } @@ -250,6 +250,16 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa // キ膸膸 List> listMaps = getListMaps(attendQuoteDataBases); + + //綵綣 + List effectiveColumns = listMaps.stream() + .map(Map::keySet) + .max(Comparator.comparingInt(Set::size)) + .orElse(new HashSet<>()) + .stream() + .map(key -> key.split("_")[0]) + .collect(Collectors.toList()); + // 1.綏ヤ膂水腱 String sheetName = SalaryI18nUtil.getI18nLabel(93931, "ゆ井"); List header = new ArrayList<>(); @@ -258,10 +268,16 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa header.add(SalaryI18nUtil.getI18nLabel(86186, "阪")); header.add(SalaryI18nUtil.getI18nLabel(86317, "綏ュ")); // + List effectiveFields = new ArrayList<>(); if (CollectionUtils.isNotEmpty(listMaps)) { - for (AttendQuoteFieldPO attendQuoteField : attendQuoteFields) { - header.add(attendQuoteField.getFieldName()); - } + effectiveFields = attendQuoteFields.stream() + .filter(attendQuoteField -> effectiveColumns.contains(Util.null2String(attendQuoteField.getId()))) + .collect(Collectors.toList()); + + effectiveFields.forEach(attendQuoteField -> { + header.add(attendQuoteField.getFieldName()); + } + ); } List> rows = new ArrayList<>(); @@ -276,7 +292,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa row.add(dto.get("jobNum")); // - for (AttendQuoteFieldPO attendQuoteField : attendQuoteFields) { + for (AttendQuoteFieldPO attendQuoteField : effectiveFields) { Object o = dto.get(attendQuoteField.getId().toString() + "_attendQuoteData"); try { if (o != null && NumberUtil.isNumber(o.toString())) { @@ -334,7 +350,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa @Override public String syncAttendQuoteData(AttendQuoteDataSyncParam syncParam) { AttendQuoteDataSyncParam.checkParam(syncParam); - Long salarySobId = syncParam.getSalarySobId(); + List salarySobIds = syncParam.getSalarySobIds(); String salaryYearMonth = syncParam.getSalaryYearMonth(); int year = Integer.parseInt(salaryYearMonth.split("-")[0]); int month = Integer.parseInt(salaryYearMonth.split("-")[1]); @@ -348,77 +364,85 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100366, "莚桁莅丞舟罩ュ罧")); } - // キ莎茣絅 - SalarySobCycleDTO salarySobCycleDTO = getSalarySobService(user).getSalarySobCycle(syncParam.getSalarySobId(), YearMonth.of(year, month)); + String errorMsg = ""; + for (Long salarySobId : salarySobIds) { + // キ莎茣絅 + SalarySobCycleDTO salarySobCycleDTO = getSalarySobService(user).getSalarySobCycle(salarySobId, YearMonth.of(year, month)); + SalarySobPO salarySobPO = getSalarySobService(user).getById(salarySobId); - // 号莎茣絅ヨ≫査 - List salaryEmployees = getSalaryEmployeeService(user).listBySalarySobId(salarySobId); - if (CollectionUtils.isEmpty(salaryEmployees)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100367, "莎茣絅羃≧篋阪")); - } - // 号莎茣絅ヨ∵莎 - SalarySobPO salarySobPO = getSalarySobService(user).getById(salarySobId); - Long taxAgentId = salarySobPO.getTaxAgentId(); + // 号莎茣絅ヨ≫査 + List salaryEmployees = getSalaryEmployeeService(user).listBySalarySobId(salarySobId); + if (CollectionUtils.isEmpty(salaryEmployees)) { + errorMsg = errorMsg + "" + salarySobPO.getName() + "莎茣絅羃≧篋阪; "; + } else { + // 号莎茣絅ヨ∵莎 + Long taxAgentId = salarySobPO.getTaxAgentId(); - // ヨ∵莎罅f鐚キ篋阪筝腮g軸箙>査 - List employeeIds = SalaryEntityUtil.properties(salaryEmployees, DataCollectionEmployee::getEmployeeId, Collectors.toList()); - List salaryArchiveDataDTOS = getSalaryArchiveService(user).getSalaryArchiveTaxAgentData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId); - // 莉∽莎悟篋阪po - Date salaryDate = SalaryDateUtil.dateStrToLocalTime(salaryYearMonth + "-01"); - List salaryAcctEmployeePOS = SalaryAcctEmployeeBO.convert2Employee(salaryEmployees, SalaryAcctRecordPO.builder().salarySobId(salarySobId).salaryMonth(salaryDate).build(), salaryArchiveDataDTOS, (long) user.getUID()); + // ヨ∵莎罅f鐚キ篋阪筝腮g軸箙>査 + List employeeIds = SalaryEntityUtil.properties(salaryEmployees, DataCollectionEmployee::getEmployeeId, Collectors.toList()); + List salaryArchiveDataDTOS = getSalaryArchiveService(user).getSalaryArchiveTaxAgentData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId); + // 莉∽莎悟篋阪po + Date salaryDate = SalaryDateUtil.dateStrToLocalDate(salaryYearMonth + "-01"); + List salaryAcctEmployeePOS = SalaryAcctEmployeeBO.convert2Employee(salaryEmployees, SalaryAcctRecordPO.builder().salarySobId(salarySobId).salaryMonth(salaryDate).build(), salaryArchiveDataDTOS, (long) user.getUID()); - //菴羯ゆ筝絮篋綵茣絅g軸箙>査篋阪 - employeeIds = salaryAcctEmployeePOS.stream().filter(po -> Objects.equals(taxAgentId, po.getTaxAgentId())).map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList()); + //菴羯ゆ筝絮篋綵茣絅g軸箙>査篋阪 + employeeIds = salaryAcctEmployeePOS.stream().filter(po -> Objects.equals(taxAgentId, po.getTaxAgentId())).map(SalaryAcctEmployeePO::getEmployeeId).collect(Collectors.toList()); - // 4.キゆ─井 - List> attendQuoteSyncData = getAttendQuoteDataFromRemoteAttend(salarySobCycleDTO.getAttendCycle(), employeeIds, attendQuoteFields); - List pos = new ArrayList<>(); - List values = new ArrayList<>(); - // 5.ゅ井紊 - Date now = new Date(); - if (CollectionUtils.isNotEmpty(attendQuoteSyncData)) { + // 4.キゆ─井 + List> attendQuoteSyncData = getAttendQuoteDataFromRemoteAttend(salarySobCycleDTO.getAttendCycle(), employeeIds, attendQuoteFields); + List pos = new ArrayList<>(); + List values = new ArrayList<>(); + // 5.ゅ井紊 + Date now = new Date(); + if (CollectionUtils.isNotEmpty(attendQuoteSyncData)) { - // 3.ゅ - AttendQuotePO attendQuote = getAttendQuote(AttendQuoteSourceTypeEnum.QUOTE, salarySobId, year, month, syncParam.getDescription()); + // 3.ゅ + AttendQuotePO attendQuote = getAttendQuote(AttendQuoteSourceTypeEnum.QUOTE, salarySobId, year, month, syncParam.getDescription()); - for (Long employeeId : employeeIds) { - AttendQuoteDataPO po = new AttendQuoteDataPO(); - po.setId(IdGenerator.generate()); - po.setCreateTime(now); - po.setUpdateTime(now); - po.setCreator((long) user.getUID()); - po.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); - // ゅ茵筝脂id - po.setAttendQuoteId(attendQuote.getId()); - po.setEmployeeId(employeeId); - pos.add(po); - for (Map attendQuoteData : attendQuoteSyncData) { - if (!Objects.isNull(attendQuoteData.get("employeeId")) && - !Objects.isNull(employeeId) && - !Objects.isNull(attendQuoteData.get("attendQuoteFieldId")) && - attendQuoteData.get("employeeId").toString().equals(employeeId.toString())) { - values.add(AttendQuoteDataValuePO.builder() - .createTime(now) - .updateTime(now) - .creator((long) user.getUID()) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .employeeId(employeeId) - .attendQuoteId(attendQuote.getId()) - .attendQuoteDataId(po.getId()) - .attendQuoteFieldId(Long.valueOf(attendQuoteData.get("attendQuoteFieldId").toString())) - .dataValue(Utils.null2String(attendQuoteData.get("dataValue"))) - .build()); + for (Long employeeId : employeeIds) { + AttendQuoteDataPO po = new AttendQuoteDataPO(); + po.setId(IdGenerator.generate()); + po.setCreateTime(now); + po.setUpdateTime(now); + po.setCreator((long) user.getUID()); + po.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + // ゅ茵筝脂id + po.setAttendQuoteId(attendQuote.getId()); + po.setEmployeeId(employeeId); + pos.add(po); + for (Map attendQuoteData : attendQuoteSyncData) { + if (!Objects.isNull(attendQuoteData.get("employeeId")) && + !Objects.isNull(employeeId) && + !Objects.isNull(attendQuoteData.get("attendQuoteFieldId")) && + attendQuoteData.get("employeeId").toString().equals(employeeId.toString())) { + values.add(AttendQuoteDataValuePO.builder() + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .employeeId(employeeId) + .attendQuoteId(attendQuote.getId()) + .attendQuoteDataId(po.getId()) + .attendQuoteFieldId(Long.valueOf(attendQuoteData.get("attendQuoteFieldId").toString())) + .dataValue(Utils.null2String(attendQuoteData.get("dataValue"))) + .build()); + } + } } + + // 6.井遵紊 + handleDataToDB(attendQuote.getId(), pos, values); + // 莅医ュ + recordLog(attendQuote); + } else { + errorMsg = errorMsg + "" + salarySobPO.getName() + "" + "ゆ井篁ュ罩; "; } } + } - // 6.井遵紊 - handleDataToDB(attendQuote.getId(), pos, values); - // 莅医ュ - recordLog(attendQuote); - } else { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100368, "ゆ井篁ュ罩")); + if (StringUtils.isNotBlank(errorMsg)) { + throw new SalaryRunTimeException(errorMsg); } return null; } @@ -501,13 +525,17 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa attend4Salary.setBeginDate(attendCycleRange.getFromDate()); attend4Salary.setEndDate(attendCycleRange.getEndDate()); attend4Salary.setOnlyEmpIds(part); + //罨>拭 + String attendanceSerial = attendQuoteFields.stream() + .filter(f -> f.getCode() != null && f.getCode().startsWith("attendanceSerial_")) + .map(f -> f.getCode().replace("attendanceSerial_", "")) + .collect(Collectors.joining(",")); + attend4Salary.setAttendanceSerial(attendanceSerial); + List> attendResult = getRemoteAttend4SalaryService(user).getDatas(attend4Salary); AttendQuoteDataBO.buildAttendDataFromRemote(attendResult, attendQuoteFields, attendQuoteSyncData); -// attend4Salary.setUnit("day"); -// attendResult = remoteAttend4SalaryService.getWorkTimeSummary(attend4Salary); -// log.info("ゆ井[紊]:{}", JSONUtils.toJSONString(attendResult.getData())); -// AttendQuoteDataBO.buildAttendDataFromRemote("day", attendResult.getData(), attendQuoteFields, attendQuoteSyncData); + } } catch (Exception e) { log.error("salaryAttendキゆ井莚紊沿乾:{}", String.format(":%s,莚篆≧:%s", JSONObject.toJSONString(attend4Salary), e.getMessage()), e); @@ -655,7 +683,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa String confValue = (salarySysConfPO != null && salarySysConfPO.getConfValue() != null && !"".equals(salarySysConfPO.getConfValue())) ? salarySysConfPO.getConfValue() : "0"; // キ腱隙篋阪 - List employees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); + List employees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); // キ綏画丞舟罩ョゅ罧 List attendQuoteFields = getAttendQuoteSetFields(AttendQuoteSourceTypeEnum.IMPORT); // キゅ diff --git a/src/com/engine/salary/service/impl/AttendQuoteServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteServiceImpl.java index f6e5f62e0..b61987dde 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteServiceImpl.java @@ -151,9 +151,9 @@ public class AttendQuoteServiceImpl extends Service implements AttendQuoteServic @Override - public Boolean checkOperation(YearMonth salaryYearMonth, Long salarySobId) { + public Boolean checkOperation(YearMonth salaryYearMonth, List salarySobIds) { // 綏牙悟菴筝篏 - List salaryAcctRecords = getSalaryAcctRecordService(user).listBySalarySobIds(Collections.singletonList(salarySobId)); + List salaryAcctRecords = getSalaryAcctRecordService(user).listBySalarySobIds(salarySobIds); AtomicReference isEnableOperation = new AtomicReference<>(Boolean.TRUE); salaryAcctRecords.forEach(e -> { boolean isAccounted = e.getSalaryMonth().equals(SalaryDateUtil.localDateToDate(LocalDate.of(salaryYearMonth.getYear(), salaryYearMonth.getMonth(), 1))) diff --git a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java index 2b76af128..07c5ae633 100644 --- a/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java +++ b/src/com/engine/salary/service/impl/FormulaRunServiceImpl.java @@ -9,9 +9,11 @@ import com.engine.salary.enums.salaryformula.ReferenceTypeEnum; import com.engine.salary.formlua.core.QlExpress; import com.engine.salary.formlua.entity.parameter.DataType; import com.engine.salary.formlua.entity.standard.ExcelResult; +import com.engine.salary.mapper.SQLMapper; import com.engine.salary.service.FormulaRunService; import com.engine.salary.sys.enums.OpenEnum; import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.db.MapperProxyFactory; import com.ql.util.express.DefaultContext; import com.ql.util.express.ExpressRunner; import lombok.extern.slf4j.Slf4j; @@ -41,6 +43,9 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService QlExpress express = new QlExpress(); + private SQLMapper getSQLMapper(){ + return MapperProxyFactory.getProxy(SQLMapper.class); + } @Override public ExcelResult run(ExpressFormula expressFormula, List formulaVars, DataCollectionEmployee simpleEmployee) { @@ -123,6 +128,12 @@ public class FormulaRunServiceImpl extends Service implements FormulaRunService } } } else { + +// List list = getSQLMapper().runSQL(sql); +// if(CollectionUtil.isNotEmpty(list)){ +// result = Util.null2String(list.get(0).get(sqlReturnKey)); +// } + RecordSet rs = new RecordSet(); if (rs.execute(sql)) { if (rs.next()) { diff --git a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java index 57a098cca..b0424ad47 100644 --- a/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/RemoteExcelServiceImpl.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; import com.engine.salary.entity.datacollection.param.AttendQuoteFieldQueryParam; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryformula.dto.SalaryFormulaTaxRateDTO; import com.engine.salary.entity.salaryformula.po.FormulaVar; @@ -77,6 +78,10 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic return (SalarySobItemService) ServiceUtil.getService(SalarySobItemServiceImpl.class, user); } + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + // @Override // public ExcelResult aggregation(AggFunc func, String sourceId, String fieldId, List filterFormDataList, Map extendParam, // DataCollectionEmployee employee) { @@ -166,6 +171,9 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic case SALARY_CYCLE: vars = convert2FormulaVar(SalarySobCycleDTO.class, referenceEnum.getValue() + ""); break; + case VARIABLE_ITEM: + vars = variableArchives2FormulaVar(referenceEnum, extendParam); + break; default: break; } @@ -251,6 +259,8 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic convert2FormulaVar(SalaryAcctEmployeePO.class, SalarySQLReferenceEnum.SALARY_ACCT_EMPLOYEE.getValue() + "")); result.put(SalarySQLReferenceEnum.SALARY_CYCLE.getDefaultLabel(), convert2FormulaVar(SalarySobCycleDTO.class, SalarySQLReferenceEnum.SALARY_CYCLE.getValue() + "")); + result.put(SalaryFormulaReferenceEnum.VARIABLE_ITEM.getDefaultLabel(), + variableArchives2FormulaVar(SalaryFormulaReferenceEnum.VARIABLE_ITEM, null)); return result; } return result; @@ -402,6 +412,20 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic }).collect(Collectors.toList()); } + private List variableArchives2FormulaVar(SalaryFormulaReferenceEnum referenceEnum, Map extendParam) { + List variableItems; + variableItems = getVariableItemService(user).listAll(); + return variableItems.stream() + .map(e -> { + FormulaVar formulaVar = new FormulaVar(); + formulaVar.setFieldId(referenceEnum.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + e.getCode()); + formulaVar.setName(e.getName()); + formulaVar.setSource("" + referenceEnum.getValue()); + formulaVar.setFieldType(e.getDataType()); + return formulaVar; + }).collect(Collectors.toList()); + } + private List convert2FormulaVar(Class clazz, String formId) { Field[] declaredFields = clazz.getDeclaredFields(); List formulaVars = Lists.newArrayListWithExpectedSize(declaredFields.length); diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index d6ab55a58..1fee1ab58 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -1917,7 +1917,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { } // if (CollectionUtils.isNotEmpty(insertInsuranceAccountDetailList)) { - getInsuranceAccountDetailMapper().batchSaveAccountDetails(insertInsuranceAccountDetailList); + batchSaveAccountDetails(insertInsuranceAccountDetailList); } //傑hrsa_bill_batch筝井膸莅>拭 @@ -1953,6 +1953,12 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { return apidatas; } + + public void batchSaveAccountDetails(List insertInsuranceAccountDetailList) { + List> partition = Lists.partition(insertInsuranceAccountDetailList, 20); + partition.forEach(part -> getInsuranceAccountDetailMapper().batchSaveAccountDetails(part)); + } + /** * 蘂茹胼悟絲弱モ罔≧水弱ョ井 */ diff --git a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java index b9ec0de27..4b7750224 100644 --- a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java @@ -167,13 +167,20 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { List> resultList = new ArrayList<>(); - 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.keySet()); + if (socialComMap != null) { + socialIds.addAll(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)) == 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())) { @@ -203,13 +210,20 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { }); } - 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.keySet()); + if (fundComMap != null) { + fundIds.addAll(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)) == 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())) { @@ -239,14 +253,21 @@ public class SIBalanceServiceImpl extends Service implements SIBalanceService { }); } - 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.keySet()); + if (otherComMap != null) { + otherIds.addAll(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())) { diff --git a/src/com/engine/salary/service/impl/SIImportServiceImpl.java b/src/com/engine/salary/service/impl/SIImportServiceImpl.java index 03a4b00ea..553a6fba1 100644 --- a/src/com/engine/salary/service/impl/SIImportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIImportServiceImpl.java @@ -142,6 +142,18 @@ public class SIImportServiceImpl extends Service implements SIImportService { int total = (int)pageInfo.getTotal(); param.setPageSize(total); param.setCurrent(1); + if (CollectionUtils.isNotEmpty(param.getDepartmentIds())) { + param.setDepartmentIdsStr(StringUtils.join(param.getDepartmentIds(), ",")); + } + if (CollectionUtils.isNotEmpty(param.getSubcompanyIds())) { + param.setSubcompanyIdsStr(StringUtils.join(param.getSubcompanyIds(), ",")); + } + if (CollectionUtils.isNotEmpty(param.getPositions())) { + param.setPositionsStr(StringUtils.join(param.getPositions(), ",")); + } + if (CollectionUtils.isNotEmpty(param.getStatuses())) { + param.setStatusesStr(StringUtils.join(param.getStatuses(), ",")); + } Map dataMap = getSIArchivesService(user).listPage(param); List> records = (List>)dataMap.get("datas"); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index fe58808f8..ff614a63f 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -7,10 +7,10 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.component.SalaryWeaTable; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; -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.siarchives.param.InsuranceArchivesListParam; @@ -84,6 +84,7 @@ import java.io.InputStream; import java.math.BigDecimal; import java.util.*; import java.util.function.Function; +import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -211,13 +212,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } @Override - public Map update(Map params) { + public String update(Map params) { // return commandExecutor.execute(new SISchemeUpdateCmd(params, user)); Map apidatas = new HashMap(16); InsuranceSchemeReqParam insuranceSchemeReqParam = (InsuranceSchemeReqParam) params.get("insuranceSchemeReqParam"); // siSchemeBiz.update(insuranceSchemeReqParam, (long) user.getUID()); - update(insuranceSchemeReqParam, (long) user.getUID()); - return apidatas; + return update(insuranceSchemeReqParam, (long) user.getUID()); } @Override @@ -2490,7 +2490,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { * @param updateParam * @param employeeId */ - public void update(InsuranceSchemeReqParam updateParam, long employeeId) { + public String update(InsuranceSchemeReqParam updateParam, long employeeId) { //ヨ∽絖胼号 InsuranceSchemePO insuranceSchemePO = getById(updateParam.getInsuranceScheme().getId()); if (Objects.isNull(insuranceSchemePO)) { @@ -2527,12 +2527,29 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //莅医筝肢;篏ュ loggerContext.setNewValues(insuranceSchemePO1); SalaryElogConfig.siSchemeLoggerTemplate.write(loggerContext); + // ヨ√胼膸篆≧ + List oldInsuranceSchemeDetails = getInsuranceSchemeDetailMapper().queryInsuranceSchemeDetailList(updateParam.getInsuranceScheme().getId(), IsPaymentEnum.YES.getValue()); + // 罨∞膸 + List insuranceSchemeDetailPOS = InsuranceSchemeBO.convertToInsuranceSchemeDetailPoList(updateParam.getInsuranceSchemeDetailList(), employeeId, insuranceSchemePO.getId()); + + StringBuilder baseLimitStrBuilder = new StringBuilder(); + if (updateParam.getValidate() || updateParam.getChangeData()) { + // ヨ∽罨>信剛篋膠糸筝筝 + List schemeDetailChangeLimitList = getChanceLimitSchemeDetailList(oldInsuranceSchemeDetails, insuranceSchemeDetailPOS); + // 絲剛筝羯∴恭筝筝堺域茵莪 + autoAdjustBaseByLimit(updateParam, schemeDetailChangeLimitList, insuranceSchemePO, baseLimitStrBuilder); + if (updateParam.getValidate() && StringUtils.isNotBlank(baseLimitStrBuilder.toString())) { + // ♂筝絖♂筝菴罅f鐚菴腴隋莅 + return baseLimitStrBuilder.toString(); + } + } + //贋亥号膸茵 getInsuranceSchemeDetailMapper().batchDeleteByPrimaryIds(Collections.singleton(updateParam.getInsuranceScheme().getId())); //贋井膸茵 - List insuranceSchemeDetailPOS = InsuranceSchemeBO.convertToInsuranceSchemeDetailPoList(updateParam.getInsuranceSchemeDetailList(), employeeId, insuranceSchemePO.getId()); encryptUtil.encryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); insuranceSchemeDetailPOS.forEach(getInsuranceSchemeDetailMapper()::insert); + //莅医膸茵篏ュ encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); LoggerContext insuranceSchemeDetailContext = new LoggerContext<>(); @@ -2544,7 +2561,224 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceSchemeDetailContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "胼号膸")); insuranceSchemeDetailPOS.forEach(insuranceSchemeDetailContext::setNewValues); SalaryElogConfig.siSchemeLoggerTemplate.write(insuranceSchemeDetailContext); + return "success"; + } + /** + * 絲剛筝羯∴恭筝筝堺域茵莪 + * @param schemeDetailChangeLimitList + * @param insuranceSchemePO + */ + private void autoAdjustBaseByLimit(InsuranceSchemeReqParam updateParam, List schemeDetailChangeLimitList, InsuranceSchemePO insuranceSchemePO, StringBuilder baseLimitStrBuilder) { + Map> insuranceSchemeDetailMap = SalaryEntityUtil.group2Map(schemeDetailChangeLimitList, InsuranceSchemeDetailPO::getPaymentScope); + List personChangeDeatilList = insuranceSchemeDetailMap.getOrDefault(PaymentScopeEnum.SCOPE_PERSON.getValue(), Collections.emptyList()); + List companyChangeDetailList = insuranceSchemeDetailMap.getOrDefault(PaymentScopeEnum.SCOPE_COMPANY.getValue(), Collections.emptyList()); + List runStatus = Arrays.asList(EmployeeStatusEnum.STAY_DEL.getValue(), EmployeeStatusEnum.PAYING.getValue(), EmployeeStatusEnum.STAY_DEL.getValue()); + // キ莚ユ号筝腓鞘胼罅f + Integer welfareType = insuranceSchemePO.getWelfareType(); + if (welfareType.equals(WelfareTypeEnum.SOCIAL_SECURITY.getValue())) { + List needUpdateSocialArchiveList = new ArrayList<>(); + List insuranceArchivesSocialSchemePOS = getSocialSchemeMapper().listBySchemeId(insuranceSchemePO.getId(), runStatus); + encryptUtil.decryptList(insuranceArchivesSocialSchemePOS, InsuranceArchivesSocialSchemePO.class); + // キ篋阪篆≧ + List empIds = insuranceArchivesSocialSchemePOS.stream().map(InsuranceArchivesSocialSchemePO::getEmployeeId).collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + // 腓鞘 + insuranceArchivesSocialSchemePOS.forEach(archive -> { + Boolean[] changeFlag = {false}; + // 筝篋肴 + String socialPaymentBaseString = archive.getSocialPaymentBaseString(); + if (CollectionUtils.isNotEmpty(personChangeDeatilList)) { + socialPaymentBaseString = adaptWelBaseLimit(socialPaymentBaseString, personChangeDeatilList, changeFlag); + } + // 夡 + String socialPaymentComBaseString = archive.getSocialPaymentComBaseString(); + if (CollectionUtils.isNotEmpty(companyChangeDetailList)) { + socialPaymentComBaseString = adaptWelBaseLimit(socialPaymentComBaseString, companyChangeDetailList, changeFlag); + } + if (changeFlag[0]) { + DataCollectionEmployee employee = employeeMap.get(archive.getEmployeeId()); + baseLimitStrBuilder.append(employee == null ? archive.getEmployeeId() : employee.getUsername() + "\n"); + archive.setSocialPaymentBaseString(socialPaymentBaseString); + archive.setSocialPaymentComBaseString(socialPaymentComBaseString); + needUpdateSocialArchiveList.add(archive); + if (updateParam.getChangeData() && CollectionUtils.isNotEmpty(needUpdateSocialArchiveList)) { + // 贋 + encryptUtil.encrypt(archive, InsuranceArchivesSocialSchemePO.class); + getSocialSchemeMapper().updateById(archive); + } + } + }); + } else if (welfareType.equals(WelfareTypeEnum.ACCUMULATION_FUND.getValue())) { + List needUpdateFundArchiveList = new ArrayList<>(); + List insuranceArchivesFundSchemePOS = getFundSchemeMapper().listBySchemeId(insuranceSchemePO.getId(), runStatus); + encryptUtil.decryptList(insuranceArchivesFundSchemePOS, InsuranceArchivesFundSchemePO.class); + // キ篋阪篆≧ + List empIds = insuranceArchivesFundSchemePOS.stream().map(InsuranceArchivesFundSchemePO::getEmployeeId).collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + // 腱 + insuranceArchivesFundSchemePOS.forEach(archive -> { + Boolean[] changeFlag = {false}; + // 筝篋肴 + String fundPaymentBaseString = archive.getFundPaymentBaseString(); + if (CollectionUtils.isNotEmpty(personChangeDeatilList)) { + fundPaymentBaseString = adaptWelBaseLimit(fundPaymentBaseString, personChangeDeatilList, changeFlag); + } + // 夡 + String fundPaymentComBaseString = archive.getFundPaymentComBaseString(); + if (CollectionUtils.isNotEmpty(companyChangeDetailList)) { + fundPaymentComBaseString = adaptWelBaseLimit(fundPaymentComBaseString, companyChangeDetailList, changeFlag); + } + if (changeFlag[0]) { + DataCollectionEmployee employee = employeeMap.get(archive.getEmployeeId()); + baseLimitStrBuilder.append(employee == null ? archive.getEmployeeId() : employee.getUsername() + "\n"); + archive.setFundPaymentBaseString(fundPaymentBaseString); + archive.setFundPaymentComBaseString(fundPaymentComBaseString); + needUpdateFundArchiveList.add(archive); + if (updateParam.getChangeData() && CollectionUtils.isNotEmpty(needUpdateFundArchiveList)) { + // 贋 + encryptUtil.encrypt(archive, InsuranceArchivesFundSchemePO.class); + getFundSchemeMapper().updateById(archive); + } + } + }); + } else if (welfareType.equals(WelfareTypeEnum.OTHER.getValue())) { + List insuranceArchivesOtherSchemePOS = getOtherSchemeMapper().listBySchemeId(insuranceSchemePO.getId(), runStatus); + encryptUtil.decryptList(insuranceArchivesOtherSchemePOS, InsuranceArchivesOtherSchemePO.class); + List needUpdateOtherArchiveList = new ArrayList<>(); + // キ篋阪篆≧ + List empIds = insuranceArchivesOtherSchemePOS.stream().map(InsuranceArchivesOtherSchemePO::getEmployeeId).collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + // 篌筝綛顔銀胼 + insuranceArchivesOtherSchemePOS.forEach(archive -> { + Boolean[] changeFlag = {false}; + // 筝篋肴 + String otherPaymentBaseString = archive.getOtherPaymentBaseString(); + if (CollectionUtils.isNotEmpty(personChangeDeatilList)) { + otherPaymentBaseString = adaptWelBaseLimit(otherPaymentBaseString, personChangeDeatilList, changeFlag); + } + // 夡雁 + String otherPaymentComBaseString = archive.getOtherPaymentComBaseString(); + if (CollectionUtils.isNotEmpty(companyChangeDetailList)) { + otherPaymentComBaseString = adaptWelBaseLimit(otherPaymentComBaseString, companyChangeDetailList, changeFlag); + } + if (changeFlag[0]) { + DataCollectionEmployee employee = employeeMap.get(archive.getEmployeeId()); + baseLimitStrBuilder.append(employee == null ? archive.getEmployeeId() : employee.getUsername() + "\n"); + archive.setOtherPaymentBaseString(otherPaymentBaseString); + archive.setOtherPaymentComBaseString(otherPaymentComBaseString); + needUpdateOtherArchiveList.add(archive); + if (updateParam.getChangeData() && CollectionUtils.isNotEmpty(needUpdateOtherArchiveList)) { + // 贋 + encryptUtil.encrypt(archive, InsuranceArchivesOtherSchemePO.class); + getOtherSchemeMapper().updateById(archive); + } + } + }); + } + } + + public String adaptWelBaseLimit(String paymentBaseString, List insuranceSchemeDetailPOList, Boolean[] changeFlag) { + + if (paymentBaseString == null) { + return null; + } + Map paymentBaseJson = JSON.parseObject(paymentBaseString, new HashMap().getClass()); + if (paymentBaseJson == null) { + return null; + } + Map insuranceSchemeDetailPOMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOList, InsuranceSchemeDetailPO::getInsuranceId); + List insuranceIdList = insuranceSchemeDetailPOList.stream().map(po -> po.getInsuranceId().toString()).collect(Collectors.toList()); + + Set paymentInsuranceIdList = paymentBaseJson.keySet(); + List needAddInsuranceIds = insuranceIdList.stream().filter(insuranceId -> !paymentInsuranceIdList.contains(insuranceId)).collect(Collectors.toList()); + needAddInsuranceIds.stream().forEach(insuranceId -> { + paymentBaseJson.put(insuranceId, "0.00"); + }); + + for (Map.Entry entry : paymentBaseJson.entrySet()) { + + //ゆ胼惹筝榊/医 + if (entry.getValue() == null || entry.getValue().length() == 0) { + continue; + } else if (!isNumeric(entry.getValue())) { + log.info("胼守医鐚"); + continue; + // throw new SalaryRunTimeException("胼守医"); + } + + if (!insuranceIdList.contains(entry.getKey())) { + // 羃≧篆剛筝 + continue; + } + InsuranceSchemeDetailPO insuranceSchemeDetailPO = insuranceSchemeDetailPOMap.get(Long.valueOf(entry.getKey())); + if (insuranceSchemeDetailPO != null) { + + encryptUtil.decrypt(insuranceSchemeDetailPO, InsuranceSchemeDetailPO.class); + String lowerLimit = "0.000".equals(insuranceSchemeDetailPO.getLowerLimit()) ? null : insuranceSchemeDetailPO.getLowerLimit(); + String upperLimit = "0.000".equals(insuranceSchemeDetailPO.getUpperLimit()) ? null : insuranceSchemeDetailPO.getUpperLimit(); + if (lowerLimit != null && lowerLimit.length() > 0 && Double.parseDouble(entry.getValue()) < Double.parseDouble(lowerLimit)) { + //医寂篋絲劫胼膸筝 + entry.setValue(lowerLimit); + changeFlag[0] = true; + } + if (upperLimit != null && upperLimit.length() > 0 && Double.parseDouble(entry.getValue()) > Double.parseDouble(upperLimit)) { + //医守篋絲劫胼膸筝 + entry.setValue(upperLimit); + changeFlag[0] = true; + } + } + } + return JSON.toJSONString(paymentBaseJson); + } + + /** + * ゆ絖膃筝我筝堺贋井絨井茣 + */ + public static boolean isNumeric(String str){ + + Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$"); + Matcher isNum = pattern.matcher(str); + if (!isNum.matches()) { + return false; + } + return true; + + } + + /** + * キ篆剛篋膸蕁合筝筝 + * @param oldInsuranceSchemeDetails + * @param newInsuranceSchemeDetails + * @return + */ + private List getChanceLimitSchemeDetailList(List oldInsuranceSchemeDetails, List newInsuranceSchemeDetails) { + List schemeDetailChangeLimitList = new ArrayList<>(); + // key: 胼蕁id-膽雁些 + Map oldInsuranceSchemeDetailMap = SalaryEntityUtil.convert2Map(oldInsuranceSchemeDetails, d -> d.getInsuranceId() + "-" + d.getPaymentScope()); + newInsuranceSchemeDetails.stream() + .filter(detail -> detail.getIsPayment().equals(NumberUtils.INTEGER_ONE)) + .forEach(detail -> { + boolean changeFlag = false; + InsuranceSchemeDetailPO oldInsuranceSchemeDetailPO = oldInsuranceSchemeDetailMap.get(detail.getInsuranceId() + "-" + detail.getPaymentScope()); + if (oldInsuranceSchemeDetailPO == null) { + changeFlag = true; + } else { + if (!oldInsuranceSchemeDetailPO.getUpperLimit().equals(detail.getUpperLimit())) { + changeFlag = true; + } + if (!oldInsuranceSchemeDetailPO.getLowerLimit().equals(detail.getLowerLimit())) { + changeFlag = true; + } + } + if (changeFlag) { + schemeDetailChangeLimitList.add(detail); + } + }); + return schemeDetailChangeLimitList; } public int checkBeforeDeleteSocialscheme(Map params) { diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 09927a388..ee7588545 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -31,7 +31,6 @@ import com.engine.salary.util.SalaryEntityUtil; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.util.StopWatch; @@ -110,8 +109,13 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); } + private VariableArchiveService getVariableArchiveService(User user) { + return ServiceUtil.getService(VariableArchiveServiceImpl.class, user); + } + @Override public void calculate(SalaryAcctCalculateBO salaryAcctCalculateBO, DataCollectionEmployee simpleEmployee, List salarySobBackItems) { + log.info("綣紮悟V3 {}", salaryAcctCalculateBO); StopWatch sw = new StopWatch("悟倶膸鐚id鐚" + salaryAcctCalculateBO.getSalaryAcctRecordPO().getId() + ""); Date now = new Date(); try { @@ -157,6 +161,11 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc sw.start("ヨ∵莎悟篋阪莎悟膸"); List salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList()); List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds); + Map empItemValueMap = SalaryEntityUtil.convert2Map(salaryAcctResultPOS, p -> p.getSalaryAcctEmpId() + "_" + p.getSalaryItemId(), SalaryAcctResultPO::getResultValue); + sw.stop(); + // ヨ∽貴莎 + sw.start("ヨ∽貴莎"); + List> variableArchiveList = getVariableArchiveService(user).listBySalaryMonthAndEmployeeIds(salarySobCycleDTO.getSalaryMonth(), employeeIds, taxAgentId); sw.stop(); // 莎膊九膊悟膸 (羃≧膊蕁) sw.start("ヨ∵莎膊九膊悟膸"); @@ -165,8 +174,6 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc for (Map.Entry> et : collect.entrySet()) { salaryAcctResultPOMap.put(et.getKey(), et.getValue().get(0).getOriginResultValue()); } - //悟絎 - Map salaryAcctLockResultPOS = MapUtils.emptyIfNull(salaryAcctCalculateBO.getSalaryAcctLockResultPOS()); sw.stop(); // 9ヨ∝後腮罨丈絮羔綛区∞銀莎悟膸 sw.start("ヨ∝後腮罨丈絮羔綛区∞銀莎悟膸"); @@ -181,7 +188,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc sw.stop(); // 10莉∽綣靶莨筝 sw.start("莉∽綣靶莨筝"); - CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS); + CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList); Map> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO); sw.stop(); sw.start("井膸紊"); @@ -201,6 +208,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc StringBuffer noticeMsg = new StringBuffer(); for (SalaryAcctEmployeePO salaryAcctEmployeePO : salaryAcctCalculateBO.getSalaryAcctEmployeePOS()) { Long salaryAcctEmployeePOId = salaryAcctEmployeePO.getId(); + List lockItems = salaryAcctEmployeePO.getLockItems(); //1 キ綵莎悟篋阪綣鋇 List formulaVarValues = formulaVarMap.get(salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId()); //2 篋阪篆≧ @@ -263,9 +271,10 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc // 紊絨亥 resultValue = SalaryAcctFormulaBO.roundResultValue(resultValue, salaryItemPO, salarySobBackItems, salarySobBackItemMap, salaryItemIdKeySalarySobItemPOMap); + //絎 - if (salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId) != null) { - resultValue = salaryAcctLockResultPOS.get(salaryItemId + "_" + salaryAcctEmployeePOId).getResultValue(); + if (lockItems != null && lockItems.contains(salaryItemId)) { + resultValue = empItemValueMap.get(salaryAcctEmployeePOId + "_" + salaryItemId); } // 絨綏牙顒∞菴莎蕁合取習∽綣惹兄育筝 String key = SalaryFormulaReferenceEnum.SALARY_ITEM.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + salaryItemPO.getCode(); diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index dbb34a140..0e5d37746 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -8,9 +8,11 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.common.LocalDateRange; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; import com.engine.salary.entity.salaryacct.param.*; @@ -21,7 +23,9 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.salarysob.bo.SalarySobCycleBO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; +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.OperateTypeEnum; import com.engine.salary.enums.salaryaccounting.LockStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; @@ -54,6 +58,8 @@ import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.sys.constant.SalarySysConstant.REPORT_ORGANIZATIN_TYPE; + /** * 莎悟篋阪 *

Copyright: Copyright (c) 2022

@@ -109,6 +115,16 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryCacheService getSalaryCacheService(User user) { + return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); + } + + private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) { + return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user); + } + + + private boolean isRealOrg = "1".equals(getSalaryCacheService(user).get(REPORT_ORGANIZATIN_TYPE)); @Override public List countBySalaryAcctRecordId(Collection salaryAcctRecordIds) { @@ -416,10 +432,12 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } Long taxAgentId = salarySobPO.getTaxAgentId(); + List employees = getSalaryEmployeeService(user).getEmployeeByIdsAll((List) saveParam.getEmployeeIds()); + // ヨ∵莎罅f List salaryArchiveDataDTOS = getSalaryArchiveService(user).getSalaryArchiveTaxAgentData(salarySobCycleDTO.getSalaryCycle(), saveParam.getEmployeeIds(), taxAgentId); // 莉∽莎悟篋阪po - List salaryAcctEmployeePOS = SalaryAcctEmployeeBO.convert2EmployeePO(saveParam.getEmployeeIds(), salaryAcctRecordPO, salaryArchiveDataDTOS, (long) user.getUID()); + List salaryAcctEmployeePOS = SalaryAcctEmployeeBO.convert2Employee(employees, salaryAcctRecordPO, salaryArchiveDataDTOS, (long) user.getUID()); //菴羯やg軸箙>査筝篋阪 @@ -455,6 +473,11 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public void deleteByIds(Collection ids) { + + if (CollectionUtils.isEmpty(ids)) { + return; + } + // よ莎悟篋阪 getSalaryAcctEmployeeMapper().deleteByIds(ids); // よ莎悟篋阪絲劫莎悟膸 @@ -558,35 +581,47 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public void refresh(Long salaryAcctRecordId) { - // ヨ∵莎悟篋阪 - List salaryAcctEmployeePOS = listBySalaryAcctRecordId(salaryAcctRecordId); - if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { - return; - } - List employeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getEmployeeId, Collectors.toList()); // ヨ∵莎悟莅医 SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); if (Objects.isNull(salaryAcctRecordPO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "莎悟莅医筝絖綏画←")); } + + // 号莎茣絅ヨ≫査 + List salaryEmployees = getSalaryEmployeeService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + if (CollectionUtils.isEmpty(salaryEmployees)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "ヨ√域侃絅筝活篋阪")); + } + + // 号莎茣絅ヨ∵莎 + SalarySobCycleDTO salarySobCycleDTO = getSalarySobService(user).getSalarySobCycle(salaryAcctRecordPO.getSalarySobId(), SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth())); + //ヨ∵侃絅絲劫g軸箙>査 SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId()); - //菴羯ゆ筝絮篋綵茣絅g軸箙>査篋阪 Long taxAgentId = salarySobPO.getTaxAgentId(); - // ヨ∵莎悟莅医絽絅莎 - SalarySobCycleDTO salarySobCycleDTO = getSalarySobService(user).getSalarySobCycle(salaryAcctRecordPO.getSalarySobId(), SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth())); // ヨ∵莎罅f鐚キ篋阪筝腮g軸箙>査 + List employeeIds = SalaryEntityUtil.properties(salaryEmployees, DataCollectionEmployee::getEmployeeId, Collectors.toList()); List salaryArchiveDataDTOS = getSalaryArchiveService(user).getSalaryArchiveTaxAgentData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId); // 莉∽莎悟篋阪po - List newSalaryAcctEmployeePOS = SalaryAcctEmployeeBO.convert2EmployeePO(employeeIds, salaryAcctRecordPO, salaryArchiveDataDTOS, (long) user.getUID()); - newSalaryAcctEmployeePOS = newSalaryAcctEmployeePOS.stream().filter(po -> Objects.equals(taxAgentId, po.getTaxAgentId())).collect(Collectors.toList()); - // や札莎悟篋阪 - getSalaryAcctEmployeeMapper().deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); - // ユ亥莎悟篋阪 - if (CollectionUtils.isNotEmpty(newSalaryAcctEmployeePOS)) { - batchSave(newSalaryAcctEmployeePOS); - } + List newEmps = SalaryAcctEmployeeBO.convert2Employee(salaryEmployees, salaryAcctRecordPO, salaryArchiveDataDTOS, (long) user.getUID()); + //菴羯ゆ筝絮篋綵茣絅g軸箙>査篋阪 + newEmps = newEmps.stream().filter(po -> Objects.equals(taxAgentId, po.getTaxAgentId())).collect(Collectors.toList()); + Map newEmpMap = SalaryEntityUtil.convert2Map(newEmps, e -> e.getTaxAgentId() + "_" + e.getEmployeeId()); + + + // ヨ∵莎悟篋阪 + List oldEmps = listBySalaryAcctRecordId(salaryAcctRecordId); + Map oldEmpMap = SalaryEntityUtil.convert2Map(oldEmps, e -> e.getTaxAgentId() + "_" + e.getEmployeeId()); + + //医 + List addEmps = newEmps.stream().filter(po -> !oldEmpMap.containsKey(po.getTaxAgentId() + "_" + po.getEmployeeId())).collect(Collectors.toList()); + + // + List delIds = oldEmps.stream().filter(po -> !newEmpMap.containsKey(po.getTaxAgentId() + "_" + po.getEmployeeId())).map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); + + deleteByIds(delIds); + batchSave(addEmps); } @@ -609,12 +644,33 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // } else { // lambdaQueryChainWrapper.setTaxAgentIds(Collections.singletonList(0L)); // } + + // 紫∞ + boolean isChief = getTaxAgentService(user).isChief((long) user.getUID()); + // キ遵膊∞g軸箙>査 + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())); + List canManageTaxAgentIds = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(param.getTaxAgent())) { lambdaQueryChainWrapper.setTaxAgentIds(param.getTaxAgent()); + } else if (!isChief) { + // 筝紫∞鐚 + if (CollectionUtils.isEmpty(canManageTaxAgentIds)) { + // + return Collections.emptyList(); + } + lambdaQueryChainWrapper.setTaxAgentIds(canManageTaxAgentIds); } if (CollectionUtils.isNotEmpty(param.getSalarySob())) { lambdaQueryChainWrapper.setSalarySobIds(param.getSalarySob()); + } else if (!isChief) { + // 筝紫∞鐚 + List salarySobPOS = getSalarySobService(user).listByTaxAgentIds(canManageTaxAgentIds); + if (CollectionUtils.isEmpty(salarySobPOS)) { + // + return Collections.emptyList(); + } + lambdaQueryChainWrapper.setSalarySobIds(salarySobPOS.stream().map(SalarySobPO::getId).collect(Collectors.toList())); } // 莎絮 @@ -629,11 +685,6 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct lambdaQueryChainWrapper.setSalaryMonths(yearMonths); } - // 九ユ緇蕁合 -// if (CollectionUtils.isNotEmpty(param.getIncomeCategory())) { -// lambdaQueryChainWrapper.in(SalaryAcctEmployeePO::getIncomeCategory, param.getIncomeCategory().stream().map(Object::toString).collect(Collectors.toList())); -// } - //ゆ綵罅f井 List salaryAcctRecordPOS = getSalaryAcctRecordService(user).listAll(); List salaryAcctRecordIds = salaryAcctRecordPOS.stream() @@ -663,69 +714,47 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct // キ篆≧ List subCompanyIds = param.getSubCompany(); if (CollectionUtils.isNotEmpty(subCompanyIds)) { -// SubCompanyComInfo subCompanyComInfo = new SubCompanyComInfo(); -// List allSubcompanyIds = new ArrayList<>(); -// for (Long subCompanyId : subCompanyIds) { -// String organizationIds = Util.null2String(subCompanyId); -// String allChildSubcompanyId = subCompanyComInfo.getAllChildSubcompanyId(subCompanyId.toString(), organizationIds); -// allSubcompanyIds.addAll(Arrays.asList(allChildSubcompanyId.split(","))); -// } - employeeList = employeeList.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyid())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyid())).collect(Collectors.toList()); + } else { + list = list.stream().filter(emp -> subCompanyIds.contains(emp.getSubcompanyId())).collect(Collectors.toList()); + } } // 菴羯 List depart = param.getDepart(); if (CollectionUtils.isNotEmpty(depart)) { -// List allDepartIds = new ArrayList<>(); -// for (Long subDepartId : depart) { -// String ids = Util.null2String(subDepartId); -// try { -// String allDepartId = DepartmentComInfo.getAllChildDepartId(subDepartId.toString(), ids); -// allDepartIds.addAll(Arrays.asList(allDepartId.toString().split(","))); -// } catch (Exception e) { -// log.error("キ絖紊沿乾", e); -// } -// } - employeeList = employeeList.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(emp -> depart.contains(emp.getDepartmentId())).collect(Collectors.toList()); + } + } + // 絏篏菴羯 + List position = param.getPosition(); + if (CollectionUtils.isNotEmpty(position)) { + if (isRealOrg) { + employeeList = employeeList.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(emp -> position.contains(emp.getJobtitleId())).collect(Collectors.toList()); + } } - // 膾ц羯 -// if (CollectionUtils.isNotEmpty(param.getGrade())) { -// Set employeeIdsByGradeFilter = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// if (simpleEmployee.getGrade() != null && param.getGrade().contains(simpleEmployee.getGrade().getId())) { -// employeeIdsByGradeFilter.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByGradeFilter)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByGradeFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } -// // 絏篏菴羯 -// if (CollectionUtils.isNotEmpty(param.getPosition())) { -// Set employeeIdsByPostionFilter = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// if (simpleEmployee.getPosition() != null && param.getPosition().contains(simpleEmployee.getPosition().getId())) { -// employeeIdsByPostionFilter.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByPostionFilter)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByPostionFilter.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } // 篋坂倶菴羯 if (CollectionUtils.isNotEmpty(param.getStatus())) { - Set employeeIdsByStatus = new HashSet<>(); - employeeList.forEach(simpleEmployee -> { - if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { - employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); + if (isRealOrg) { + Set employeeIdsByStatus = new HashSet<>(); + employeeList.forEach(simpleEmployee -> { + if (simpleEmployee.getStatus() != null && param.getStatus().contains(simpleEmployee.getStatus())) { + employeeIdsByStatus.add(simpleEmployee.getEmployeeId()); + } + }); + if (CollectionUtils.isEmpty(employeeIdsByStatus)) { + return Lists.newArrayList(); } - }); - if (CollectionUtils.isEmpty(employeeIdsByStatus)) { - return Lists.newArrayList(); + list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); + } else { + list = list.stream().filter(po -> po.getStatus() != null && param.getStatus().contains(po.getStatus())).collect(Collectors.toList()); } - list = list.stream().filter(po -> employeeIdsByStatus.contains(po.getEmployeeId())).collect(Collectors.toList()); } // ヨユ if (CollectionUtils.isNotEmpty(param.getHiredate())) { @@ -741,27 +770,15 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } list = list.stream().filter(po -> employeeIdsByHiredate.contains(po.getEmployeeId())).collect(Collectors.toList()); } -// // 胼肢ユ todo -// if (CollectionUtils.isNotEmpty(param.getLeavedate())) { -// Set employeeIdsByLeavedate = new HashSet<>(); -// simpleEmployeeList.forEach(simpleEmployee -> { -// -// if (simpleEmployee.get() != null && ) { -// employeeIdsByLeavedate.add(simpleEmployee.getEmployeeId()); -// } -// }); -// if (CollectionUtils.isEmpty(employeeIdsByLeavedate)) { -// return Lists.newArrayList(); -// } -// list = list.stream().filter(po -> employeeIdsByLeavedate.contains(po.getEmployeeId())).collect(Collectors.toList()); -// } // 篋阪 if (CollectionUtils.isNotEmpty(param.getEmployee())) { list = list.stream().filter(po -> param.getEmployee().contains(po.getEmployeeId())).collect(Collectors.toList()); } - Set empIds = SalaryEntityUtil.properties(employeeList, DataCollectionEmployee::getEmployeeId); - list = list.stream().filter(po -> empIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + if(isRealOrg){ + Set empIds = SalaryEntityUtil.properties(employeeList, DataCollectionEmployee::getEmployeeId); + list = list.stream().filter(po -> empIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + } return list; } @@ -774,12 +791,8 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public void lockEmp(SalaryAcctResultUpdateLockStatusParam updateParam) { - // ヨ∵莎悟莅医 SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(updateParam.getSalaryAcctRecordId()); - if (CollectionUtils.isEmpty(salaryAcctRecord.getLockSalaryItemIds())) { - salaryAcctRecord.setLockSalaryItemIds(new ArrayList<>()); - } - List salaryAcctEmployees = listBySalaryAcctRecordId(updateParam.getSalaryAcctRecordId()); + List salaryAcctEmployees = listByIds(updateParam.getAcctEmpIds()); if (CollectionUtils.isEmpty(salaryAcctEmployees)) { return; } @@ -791,15 +804,23 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct Set acctEmpIds = updateParam.getAcctEmpIds(); Date now = new Date(); - if (CollUtil.isNotEmpty(acctEmpIds)) { - //絎絎篋阪 - getSalaryAcctEmployeeMapper().lockByAcctEmpIds(lockStatus.getValue(), acctEmpIds, now); + if (updateParam.getLockStatus() == LockStatusEnum.LOCK){ + SalaryAcctConfig salaryAcctSobConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(updateParam.getSalaryAcctRecordId()); + List salarySobItems = salaryAcctSobConfig.getSalarySobItems(); + List itemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId,Collectors.toList()); + + salaryAcctEmployees.forEach(salaryAcctEmployeePO -> { + salaryAcctEmployeePO.setLockItems(itemIds); + lock(salaryAcctEmployeePO); + }); // 絎羈∝仮鐚荀贋井篁劫 List salaryAcctEmployeePOList = listByIds(acctEmpIds); nbjhUpdateZffs(salaryAcctRecord, salaryAcctEmployeePOList, now, lockStatus.getValue()); - } else { - //絎 - getSalaryAcctEmployeeMapper().lockByRecordId(lockStatus.getValue(), updateParam.getSalaryAcctRecordId(), now); + }else { + salaryAcctEmployees.forEach(salaryAcctEmployeePO -> { + salaryAcctEmployeePO.setLockItems(new ArrayList<>()); + lock(salaryAcctEmployeePO); + }); // 絎羈∝仮鐚荀贋井篁劫 nbjhUpdateZffs(salaryAcctRecord, salaryAcctEmployees, now, lockStatus.getValue()); } @@ -1069,4 +1090,13 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } } + @Override + public void updateIgnoreNull(SalaryAcctEmployeePO salaryAcctEmployeePO) { + getSalaryAcctEmployeeMapper().updateIgnoreNull(salaryAcctEmployeePO); + } + + @Override + public void lock(SalaryAcctEmployeePO salaryAcctEmployeePO) { + getSalaryAcctEmployeeMapper().lock(salaryAcctEmployeePO); + } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 7f2e440e1..4acdc3e02 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.impl; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; @@ -47,6 +48,7 @@ import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; import com.engine.salary.util.*; import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.excel.ExcelParseHelper; +import com.engine.salary.util.excel.ExcelPreviewDTO; import com.engine.salary.util.excel.ExcelSupport; import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.PageInfo; @@ -56,17 +58,17 @@ import com.engine.salary.wrapper.SalarySobItemWrapper; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.wbi.util.Util; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; - import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; +import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.beans.BeanUtils; +import org.springframework.util.StopWatch; import weaver.file.ImageFileManager; import weaver.hrm.User; @@ -456,7 +458,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc SalaryAcctRecordPO byId = getSalaryAcctRecordService(user).getById(salaryAcctRecordPO.getId()); boolean isBackCalc = Objects.equals(byId.getBackCalcStatus(), 1); // ヨ∵莎茣絅筝莎蕁合+綏ヤ拭絖罧 - SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getId(),salaryAcctRecordPO.getSalarySobId(), isBackCalc); + SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getId(), salaryAcctRecordPO.getSalarySobId(), isBackCalc); // 綮肴莎悟膸茵茵紊 List columnList = SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO, ListUtils.emptyIfNull(salaryAcctRecordPO.getLockSalaryItemIds())); // キ阪紊贋 @@ -588,11 +590,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // .build()) // .collect(Collectors.toList()); // 膽絖冗 - String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; - String cacheValue = (String) Util_DataCache.getObjVal(cacheKey); - List checkItems = JsonUtil.parseList(cacheValue, Long.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, Long.class); - // 莉∽dto -// return SalaryAcctImportFieldDTO.builder().formulaItems(formulaItems).sqlItems(sqlItems).inputItems(inputItems).checkItems(checkItems).build(); + List checkItems = new ArrayList<>(); + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); + if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { + String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); + checkItems = StrUtil.isNotEmpty(items) ? Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()) : new ArrayList<>(); + } return SalaryAcctImportFieldDTO.builder().itemsByGroup(itemsByGroup).checkItems(checkItems).build(); } @@ -664,18 +667,22 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc @Override public XSSFWorkbook exportImportTemplate(SalaryAcctImportTemplateParam param) { -// ValidUtil.doValidator(param); - // 篁膽絖筝キ莎蕁合 - String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; - String cacheValue = (String) Util_DataCache.getObjVal(cacheKey); - List checkItems = JsonUtil.parseList(cacheValue, Long.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, Long.class); + + // ヨ∵莎悟莅医 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "莎悟莅医筝絖綏画←")); + } + + List checkItems = new ArrayList<>(); + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(2)); + if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { + String items = salaryAcctResultTemplatePOS.get(0).getSalaryItemIds(); + checkItems = StrUtil.isNotEmpty(items) ? Arrays.stream(items.split(",")).map(Long::valueOf).collect(Collectors.toList()) : new ArrayList<>(); + } + // 綽蕁脂絲弱ユ─炊莎蕁合 if (CollectionUtils.isEmpty(checkItems)) { - // キ篁ラ莎蕁合 - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); - if (Objects.isNull(salaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "莎悟莅医筝絖綏画←")); - } // ヨ∵莎悟莅医莎茣絅莎蕁合 List salarySobItems = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); List salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList()); @@ -685,11 +692,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc checkItems = salaryItemIds; } param.setSalaryItemIds(checkItems); - // ヨ∵莎悟莅医 - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); - if (Objects.isNull(salaryAcctRecordPO)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "莎悟莅医筝絖綏画←")); - } + // // 罔≧粋;紊(藥莅ゅ絽"筝腮g軸箙>査""紮") // List headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "紮"), // "", @@ -887,7 +890,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // headerList.add("阪"); // headerList.add("綏ュ"); // ヨ∵莎茣絅筝莎蕁合 - SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(exportParam.getSalaryAcctRecordId(),true); + SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(exportParam.getSalaryAcctRecordId(), true); // // 綏ヤ拭 // for (SalarySobEmpFieldDTO item : salarySobItemAggregateDTO.getEmpFields()) { @@ -973,9 +976,32 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } @Override - public void cacheImportField(List salaryItems) { - String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; - Util_DataCache.setObjVal(cacheKey, JsonUtil.toJsonString(salaryItems)); + public void cacheImportField(SalaryAcctResultTemplateSaveParam saveParam) { + Long salaryAcctRecordId = saveParam.getSalaryAcctRecordId(); + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException("莎悟莅医筝絖"); + } + + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Collections.singletonList(2)); + if (CollectionUtils.isNotEmpty(salaryAcctResultTemplatePOS)) { + salaryAcctResultTemplatePOS.forEach(templatePO -> getSalaryAcctResultTemplateService(user).deleteById(templatePO.getId())); + } + + Date now = new Date(); + SalaryAcctResultTemplatePO templatePO = SalaryAcctResultTemplatePO.builder() + .id(IdGenerator.generate()) + .type(2) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")) + .templateName("") + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .build(); + getSalaryAcctResultTemplateService(user).insertIgnoreNull(templatePO); + } @Override @@ -985,7 +1011,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } @Override - public Map previewImportSalaryAcctResult(SalaryAcctImportParam param) { + public ExcelPreviewDTO previewImportSalaryAcctResult(SalaryAcctImportParam param) { //1井♂ ValidUtil.doValidator(param); @@ -995,17 +1021,21 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc InputStream fileInputStream = null; try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); - Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); - map.put("headers", ExcelSupport.getSheetHeader(sheet, 1)); - map.put("list", ExcelParseHelper.parse2List(sheet, 2, 1)); - return map; - + Workbook workbook = ExcelSupport.parseFile(fileInputStream, EXCEL_TYPE_XLSX); + // 綮坂筝綣閺弱絲壕院 + FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); + Sheet sheet = workbook.getSheetAt(0); + return ExcelPreviewDTO.builder() + .headers(ExcelSupport.getSheetHeader(sheet, 1)) + .list(ExcelParseHelper.parse2List(sheet, evaluator, 2, 1)).build(); } finally { IOUtils.closeQuietly(fileInputStream); } } private Map batchImport(SalaryAcctImportParam param, String importType) { + StopWatch stopWatch = new StopWatch("絲弱ユ悟井"); + stopWatch.start("井紊"); Map apidatas = new HashMap(); ValidUtil.doValidator(param); Date now = new Date(); @@ -1023,27 +1053,38 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (salaryAcctRecordPO == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "莎悟莅医筝絖綏画←")); } + stopWatch.stop(); // 莎茣絅筝莎蕁合 + stopWatch.start("莎茣絅筝莎蕁合"); List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); // 莎蕁合 Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); Map salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getName, SalaryItemPO::getId); + stopWatch.stop(); // 莎悟隋莅ょ篋阪 + stopWatch.start("莎悟隋莅ょ篋阪"); List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordId); Map salaryAcctEmployeeMap = SalaryEntityUtil.convert2Map(salaryAcctEmployees, e -> e.getEmployeeId() + "-" + e.getTaxAgentId()); + stopWatch.stop(); // 腱隙篋阪 + stopWatch.start("莎悟隋莅ょ篋阪"); List salaryEmployees = getSalaryEmployeeService(user).listAllForReport(); Map salaryEmployeeMap = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getUsername, DataCollectionEmployee::getEmployeeId); Map emps = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getEmployeeId); + stopWatch.stop(); // 腱隙筝腮g軸箙>査 + stopWatch.start("腱隙筝腮g軸箙>査"); List taxAgents = getTaxAgentService(user).listAll(); Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getName, TaxAgentPO::getId); + stopWatch.stop(); // 莎悟篋阪篆≧絖罧 + stopWatch.start("莎悟篋阪篆≧絖罧"); List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); List salarySobEmpFields = SalaryEntityUtil.properties(new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS), SalarySobEmpFieldDTO::getFieldName, Collectors.toList()); List excludeFields = Arrays.asList("筝腮g軸箙>査", "", "紮"); salarySobEmpFields = salarySobEmpFields.stream().filter(field -> !excludeFields.contains(field)).collect(Collectors.toList()); + stopWatch.stop(); // 膣√(篋莅∞菴綺) int index = 0; // 紊沿乾育 @@ -1073,9 +1114,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); - - Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); - + stopWatch.start("茹f篁"); + Workbook workbook = ExcelSupport.parseFile(fileInputStream, EXCEL_TYPE_XLSX); + Sheet sheet = workbook.getSheetAt(0); + stopWatch.stop(); // 莚腓坂拭 List excelComments = Lists.newArrayList(); @@ -1105,6 +1147,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (CollectionUtils.isEmpty(data)) { throw new RuntimeException("井"); } + stopWatch.start("茹f井"); for (int i = 0; i < data.size(); i++) { String row = "膃" + (i + 3) + "茵"; @@ -1139,7 +1182,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc //salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102838, "紮筝巡減腥"), i, i, j, j); } else { //膈絲弱ヤ査篆≧篁ュ篋阪莎羣羆筝拷亥篋阪篆≧ - List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, salaryEmployees, dataValue, deparmentName, mobile, workcode,idNo, null); + List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(confValue, salaryEmployees, dataValue, deparmentName, mobile, workcode, idNo, null); if (CollectionUtils.isEmpty(employeeSameIds)) { isError = true; @@ -1226,19 +1269,19 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc salaryAcctResultsOfOneEmp.add(salaryAcctResult); - SalaryAcctResultReportPO reportPO = SalaryAcctResultReportPO.builder() - .id(IdGenerator.generate()) - .salaryAcctRecordId(salaryAcctRecordPO.getId()) - .salarySobId(salaryAcctRecordPO.getSalarySobId()) - .salaryItemId(salaryItemId) - .resultValue(dataValue) - .creator(currentEmployeeId) - .createTime(now) - .updateTime(now) - .deleteType(0) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); - salaryAcctResultReportOfOneEmp.add(reportPO); +// SalaryAcctResultReportPO reportPO = SalaryAcctResultReportPO.builder() +// .id(IdGenerator.generate()) +// .salaryAcctRecordId(salaryAcctRecordPO.getId()) +// .salarySobId(salaryAcctRecordPO.getSalarySobId()) +// .salaryItemId(salaryItemId) +// .resultValue(dataValue) +// .creator(currentEmployeeId) +// .createTime(now) +// .updateTime(now) +// .deleteType(0) +// .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) +// .build(); +// salaryAcctResultReportOfOneEmp.add(reportPO); } } } @@ -1315,29 +1358,31 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc salaryAcctResultPO.setSalaryAcctEmpId(salaryAcctEmpId); } - for (SalaryAcctResultReportPO po : salaryAcctResultReportOfOneEmp) { - po.setEmployeeId(Util.null2String(employeeId)); - po.setTaxAgentId(taxAgentId); - po.setSalaryAcctEmpId(Util.null2String(salaryAcctEmpId)); - - DataCollectionEmployee emp = emps.get(employeeId); - po.setSubcompanyId(emp.getSubcompanyid()); - po.setDepartmentId(emp.getDepartmentId()); - po.setCostcenterId(emp.getCostcenterId()); - po.setJobtitleId(emp.getJobtitleId()); - po.setLocationId(emp.getLocationId()); - - } +// for (SalaryAcctResultReportPO po : salaryAcctResultReportOfOneEmp) { +// po.setEmployeeId(Util.null2String(employeeId)); +// po.setTaxAgentId(taxAgentId); +// po.setSalaryAcctEmpId(Util.null2String(salaryAcctEmpId)); +// +// DataCollectionEmployee emp = emps.get(employeeId); +// po.setSubcompanyId(emp.getSubcompanyid()); +// po.setDepartmentId(emp.getDepartmentId()); +// po.setCostcenterId(emp.getCostcenterId()); +// po.setJobtitleId(emp.getJobtitleId()); +// po.setLocationId(emp.getLocationId()); +// +// } salaryAcctEmpIds.add(salaryAcctEmpId); salaryAcctResults.addAll(salaryAcctResultsOfOneEmp); - salaryAcctReports.addAll(salaryAcctResultReportOfOneEmp); +// salaryAcctReports.addAll(salaryAcctResultReportOfOneEmp); } successCount++; } + stopWatch.stop(); // 絋sheet莚井 // if (CollectionUtils.isNotEmpty(errorDatas)) { // salaryBatchService.createErrorExcelSheet(headers, errorDatas, excelSheet.getName(), excelComments, errorExcelSheets); // } + stopWatch.start("ユ井"); if (StringUtils.equals("importExcelAcctResult", importType)) { getSalaryComparisonResultService(user).deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); if (CollectionUtils.isNotEmpty(excelAcctResults)) { @@ -1361,16 +1406,9 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (CollectionUtils.isNotEmpty(salaryAcctResults)) { // 紊絲弱ヨ莎蕁合膊 handleOriginResultValue(deleteResults, salaryAcctResults); - // 紊篁巡篁遵絲 - List list4log = new ArrayList<>(); - salaryAcctResults.stream().forEach(source -> { - SalaryAcctResultPO target = new SalaryAcctResultPO(); - BeanUtils.copyProperties(source, target); - list4log.add(target); - }); getSalaryAcctResultService(user).batchSave(salaryAcctResults); - // 莅医篏ュ TODO 菴井羃≧id鐚id紜井ユ井紊紊紊篏 + // 莅医篏ュ SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId()); String targetName = salarySobPO.getName() + ":" + SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth()); LoggerContext loggerContext = new LoggerContext<>(); @@ -1380,16 +1418,17 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc loggerContext.setOperateType(OperateTypeEnum.EXCEL_IMPORT.getValue()); loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "絲弱ヨ莎悟井")); loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "絲弱ヨ莎悟井 ") + targetName); - loggerContext.setOldValueList(list4log); SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext); - //ヨ; - getSalaryAcctReportService(user).batchSave(salaryAcctReports); +// //ヨ; +// getSalaryAcctReportService(user).batchSave(salaryAcctReports); } if (CollectionUtils.isNotEmpty(newSalaryAcctEmployees)) { getSalaryAcctEmployeeService(user).batchSave(newSalaryAcctEmployees); } } + stopWatch.stop(); + stopWatch.start("絎井"); SalarySysConfPO autoLock = getSalarySysConfService(user).getOneByCode(SalarySysConstant.EDIT_IMPORT_AUTO_LOCK); if (autoLock != null && StringUtils.equals(autoLock.getConfValue(), "1")) { // 絲弱ョ処絎 @@ -1399,6 +1438,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc .lockStatus(LockStatusEnum.LOCK).build(); getSalaryAcctResultService(user).updateLockStatusByParam(updateLockStatusParam); } + stopWatch.stop(); + log.info(stopWatch.prettyPrint()); apidatas.put("successCount", successCount); apidatas.put("errorCount", failCount); @@ -1461,7 +1502,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc throw new SalaryRunTimeException("莎悟莅医筝絖"); } saveParam.setSalarySobId(salaryAcctRecordPO.getSalarySobId()); - List templateBySobId = getSalaryAcctResultTemplateService(user).listBySalarySobId(saveParam.getSalarySobId()); + List templateBySobId = getSalaryAcctResultTemplateService(user).listBySalarySobId(saveParam.getSalarySobId(), Arrays.asList(0, 1)); if (saveParam.getId() != null) { Optional saveNameOptional = templateBySobId.stream().filter(po -> po.getTemplateName().equals(saveParam.getTemplateName()) && !po.getId().equals(saveParam.getId())).findFirst(); if (saveNameOptional.isPresent()) { @@ -1474,6 +1515,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } salaryAcctResultTemplatePO.setSalaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")); salaryAcctResultTemplatePO.setTemplateName(saveParam.getTemplateName()); + salaryAcctResultTemplatePO.setType(0); salaryAcctResultTemplatePO.setUpdateTime(new Date()); getSalaryAcctResultTemplateService(user).update(salaryAcctResultTemplatePO); } else { @@ -1483,16 +1525,18 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc } // 医産 Date now = new Date(); - getSalaryAcctResultTemplateService(user).insertIgnoreNull(SalaryAcctResultTemplatePO.builder() + SalaryAcctResultTemplatePO templatePO = SalaryAcctResultTemplatePO.builder() .id(IdGenerator.generate()) + .type(0) .salarySobId(saveParam.getSalarySobId()) .salaryItemIds(StringUtils.join(saveParam.getSalaryItemIds(), ",")) .templateName(saveParam.getTemplateName()) - .creator(Long.valueOf(user.getUID())) + .creator((long) user.getUID()) .createTime(now) .updateTime(now) .deleteType(0) - .build()); + .build(); + getSalaryAcctResultTemplateService(user).insertIgnoreNull(templatePO); } } @@ -1519,7 +1563,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc if (salaryAcctRecordPO == null) { throw new SalaryRunTimeException("莎悟莅医筝榊"); } - List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), Arrays.asList(0, 1)); if (StringUtils.isNotBlank(param.getTemplateName())) { salaryAcctResultTemplatePOS = salaryAcctResultTemplatePOS.stream().filter(po -> po.getTemplateName().contains(param.getTemplateName())).collect(Collectors.toList()); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 0614546f8..ce5518991 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -14,8 +14,12 @@ import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; import com.engine.salary.entity.hrm.DeptInfo; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.entity.hrm.DeptInfo; +import com.engine.salary.entity.hrm.JobCallInfo; +import com.engine.salary.entity.hrm.PositionInfo; +import com.engine.salary.entity.hrm.SubCompanyInfo; import com.engine.salary.entity.progress.ProgressDTO; -import com.engine.salary.entity.report.bo.SalaryAcctResultReportBO; import com.engine.salary.entity.report.po.SalaryAcctResultReportPO; import com.engine.salary.entity.salaryacct.bo.*; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; @@ -50,7 +54,6 @@ 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.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.PageInfo; @@ -195,6 +198,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(TaxAgentAdminServiceImpl.class, user); } + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + private SalaryCheckResultService salaryCheckResultService; private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) { @@ -599,6 +606,46 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe if (Objects.isNull(salaryAcctEmployeePO)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98831, "莎悟篋阪筝絖綏画←")); } + // 贋医綏ュ堺篆≧ + saveParam.getEmployeeInfos().stream().forEach(info -> { + if (info.getFieldValue() != null && StringUtils.isNotBlank(info.getFieldValue().toString())) { + if (info.getFieldCode().equals("departmentName") || info.getFieldCode().equals("departmentId")) { + // 篆拷篆≧ + DeptInfo deptInfo = getSalaryEmployeeService(user).getDeptInfoById(NumberUtils.isCreatable(info.getFieldValue().toString()) + ? Long.valueOf(info.getFieldValue().toString()) : 0L); + if (Objects.nonNull(deptInfo)) { + salaryAcctEmployeePO.setDepartmentName(deptInfo.getName()); + salaryAcctEmployeePO.setDepartmentId(deptInfo.getId()); + } + } else if (info.getFieldCode().equals("subcompanyName") || info.getFieldCode().equals("subcompanyId")) { + // 篆劫篆≧ + SubCompanyInfo subCompanyInfo = getSalaryEmployeeService(user).getSubCompanyInfoById(NumberUtils.isCreatable(info.getFieldValue().toString()) + ? Long.valueOf(info.getFieldValue().toString()) : 0L); + if (Objects.nonNull(subCompanyInfo)) { + salaryAcctEmployeePO.setSubcompanyName(subCompanyInfo.getName()); + salaryAcctEmployeePO.setSubcompanyId(subCompanyInfo.getId()); + } + } else if (info.getFieldCode().equals("jobtitleName") || info.getFieldCode().equals("jobtitleId")) { + // 篆劫篏篆≧ + PositionInfo positionInfo = getSalaryEmployeeService(user).getPositionInfoById(NumberUtils.isCreatable(info.getFieldValue().toString()) + ? Long.valueOf(info.getFieldValue().toString()) : 0L); + if (Objects.nonNull(positionInfo)) { + salaryAcctEmployeePO.setJobtitleName(positionInfo.getName()); + salaryAcctEmployeePO.setJobtitleId(positionInfo.getId()); + } + } else if (info.getFieldCode().equals("jobcall") || info.getFieldCode().equals("jobcallId")) { + // 篆壕腱遺拭 + JobCallInfo jobCallInfo = getSalaryEmployeeService(user).getJobCallInfoById(NumberUtils.isCreatable(info.getFieldValue().toString()) + ? Long.valueOf(info.getFieldValue().toString()) : 0L); + if (Objects.nonNull(jobCallInfo)) { + salaryAcctEmployeePO.setJobcall(jobCallInfo.getName()); + salaryAcctEmployeePO.setJobcallId(jobCallInfo.getId()); + } + } + } + }); + getSalaryAcctEmployeeService(user).updateIgnoreNull(salaryAcctEmployeePO); + // ヨ√ョ莎悟膸 List salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpId(saveParam.getSalaryAcctEmpId()).build()); // 茹e @@ -640,12 +687,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List> partition = Lists.partition(salaryAcctResultPOS, 100); partition.forEach(getSalaryAcctResultMapper()::batchInsert); } - //ヨ; todo - getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); - List salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2PO(saveParam, salaryAcctEmployeePO, (long) user.getUID(), emps); - if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { - getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); - } + //ヨ; +// getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(Collections.singletonList(saveParam.getSalaryAcctEmpId()), saveItemIds); +// List salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2PO(saveParam, salaryAcctEmployeePO, (long) user.getUID(), emps); +// if (CollectionUtils.isNotEmpty(salaryAcctResultReportPOS)) { +// getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); +// } // 絖莎悟膸井ユュ @@ -726,8 +773,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe @Override public void calculate(SalaryAcctCalculateParam calculateParam, DataCollectionEmployee simpleEmployee) { - StopWatch stopWatch = new StopWatch("紙悟駈id鐚" + calculateParam.getSalaryAcctRecordId()); try { + log.info("綣紮悟V2 {}", calculateParam); + StopWatch stopWatch = new StopWatch("紙悟駈id鐚" + calculateParam.getSalaryAcctRecordId()); stopWatch.start("井紊"); // 1ヨ∵莎悟莅医 SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(calculateParam.getSalaryAcctRecordId()); @@ -767,6 +815,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe Map welfareColumns = getSIAccountService(user).welfareColumns(); // 7ヨ∵ゅ絖罧 List attendQuoteFieldListDTOS = getAttendQuoteFieldService(user).listAll(); + List variableItemPOS = getVariableItemService(user).listAll(); // 8ヨ√綣顓 Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); @@ -789,21 +838,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(103378, "莎悟篋阪筝巡減腥")); } - - //悟絎 - List lockSalaryItemIds = salaryAcctRecordPO.getLockSalaryItemIds(); - Map acctResults = new HashMap<>(); - if (CollUtil.isNotEmpty(lockSalaryItemIds)) { - List acctResultPOS = listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singleton(calculateParam.getSalaryAcctRecordId()), lockSalaryItemIds); - acctResults = Optional.ofNullable(acctResultPOS).orElse(new ArrayList<>()).stream().filter(po -> lockSalaryItemIds.contains(po.getSalaryItemId())).collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); - } - List lockEmpIds = salaryAcctEmployeePOS.stream().filter(po -> LockStatusEnum.LOCK.getValue().equals(po.getLockStatus())).map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(lockEmpIds)) { - List acctResultPOS = listBySalaryAcctEmployeeIds(lockEmpIds); - Map acctResultMaps = Optional.ofNullable(acctResultPOS).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(po -> po.getSalaryItemId() + "_" + po.getSalaryAcctEmpId(), a -> a, (a, b) -> a)); - acctResults.putAll(acctResultMaps); - } - stopWatch.stop(); stopWatch.start("悟"); @@ -811,7 +845,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe ProgressDTO initProgress = new ProgressDTO().setTitle(SalaryI18nUtil.getI18nLabel(97515, "悟筝")).setTitleLabelId(97515L).setTotalQuantity(salaryAcctEmployeePOS.size() * 2 + 1).setCalculatedQuantity(0).setProgress(BigDecimal.ZERO).setStatus(true).setMessage(StringUtils.EMPTY); getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), initProgress); // 12絲壕莎悟篋阪菴茵 - List> partition = Lists.partition(salaryAcctEmployeePOS, 100); + String personNumberInOneThread = new BaseBean().getPropValue("hrmSalaryCustom", "personNumberInOneThread"); + int size = 100; + if (StringUtils.isNotBlank(personNumberInOneThread)) { + size = Integer.parseInt(personNumberInOneThread); + } + List> partition = Lists.partition(salaryAcctEmployeePOS, size); // 12.1ァ絖膾睡篁糸≧ц CountDownLatch childMonitor = new CountDownLatch(partition.size()); // 12.2莅医絖膾睡ц膸 @@ -827,8 +866,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .setSalarySobPO(salarySobPO) .setSalarySobCycleDTO(salarySobCycleDTO) .setOtherSalaryAcctRecordPOS(otherSalaryAcctRecordPOS) - .setSalaryAcctLockResultPOS(MapUtils.emptyIfNull(acctResults)) - .setLockSalaryItemIds(lockSalaryItemIds) .setSalarySobItemPOS(salarySobItemPOS) .setSalaryItemIdWithPriorityList(salarySobItemsWithPriority) .setExpressFormulas(expressFormulas) @@ -841,6 +878,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .setChildMonitor(childMonitor) .setResults(calculateResults) .setCalculateKey(calculateKey) + .setVariableItems(variableItemPOS) .setTaxDeclarationFunction(taxDeclarationFunction); List finalSalarySobBackItems = salarySobBackItems; LocalRunnable localRunnable = new LocalRunnable() { @@ -926,13 +964,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List salaryAcctResultPOS = SalaryAcctResultBO.convert2ResultPO(salaryAcctResultTempPOS); batchSave(salaryAcctResultPOS); sw.stop(); - new Thread() { - public void run() { - //篆絖悟ヨ;井 - List salaryAcctResultReportPOS = SalaryAcctResultReportBO.convert2ReportPO(salaryAcctResultTempPOS, calculateParam.getEmps()); - getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); - } - }.start(); // よ莎悟筝贋九茵筝井 sw.start("紊悟井鐚よ莎悟筝贋九茵筝井"); getSalaryAcctResultTempService(user).deleteByCalculateKey(calculateKey); @@ -977,13 +1008,32 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // return salaryAcctEmployeeService.filterByAuthority(salaryAcctEmployees, employeeId); // } + + @Override + public void lock(SalaryAcctResultLockParam param) { + ValidUtil.doValidator(param); + + SalaryAcctEmployeePO salaryAcctEmployeePO = getSalaryAcctEmployeeService(user).getById(param.getAcctEmpId()); + if (salaryAcctEmployeePO == null) { + return; + } + + List lockItemIds = salaryAcctEmployeePO.getLockItems() == null ? new ArrayList<>() : salaryAcctEmployeePO.getLockItems(); + Long salaryItemId = param.getSalaryItemId(); + + if (param.getLockStatus() == LockStatusEnum.LOCK) { + lockItemIds.add(salaryItemId); + } else { + lockItemIds.removeIf(salaryItemId::equals); + } + + salaryAcctEmployeePO.setLockItems(Lists.newArrayList(new HashSet(lockItemIds))); + + getSalaryAcctEmployeeService(user).lock(salaryAcctEmployeePO); + } + @Override public void updateLockStatusByParam(SalaryAcctResultUpdateLockStatusParam updateParam) { - // ヨ∵莎悟莅医 - SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(updateParam.getSalaryAcctRecordId()); - if (CollectionUtils.isEmpty(salaryAcctRecord.getLockSalaryItemIds())) { - salaryAcctRecord.setLockSalaryItemIds(new ArrayList<>()); - } List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(updateParam.getSalaryAcctRecordId()); if (CollectionUtils.isEmpty(salaryAcctEmployees)) { return; @@ -995,15 +1045,18 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } else { salaryItemIds = Collections.singleton(updateParam.getSalaryItemId()); } - if (updateParam.getLockStatus() == LockStatusEnum.LOCK) { - Set lockSalaryItemIds = new HashSet<>(); - lockSalaryItemIds.addAll(salaryAcctRecord.getLockSalaryItemIds()); - lockSalaryItemIds.addAll(salaryItemIds); - salaryAcctRecord.setLockSalaryItemIds(new ArrayList(lockSalaryItemIds)); - } else { - salaryAcctRecord.getLockSalaryItemIds().removeAll(salaryItemIds); - } - getSalaryAcctRecordService(user).updateLockSalaryItemIds(salaryAcctRecord); + + salaryAcctEmployees.forEach(salaryAcctEmployeePO -> { + List lockItemIds = salaryAcctEmployeePO.getLockItems() == null ? new ArrayList<>() : salaryAcctEmployeePO.getLockItems(); + + if (updateParam.getLockStatus() == LockStatusEnum.LOCK) { + lockItemIds.addAll(salaryItemIds); + } else { + lockItemIds.removeAll(salaryItemIds); + } + salaryAcctEmployeePO.setLockItems(Lists.newArrayList(new HashSet(lockItemIds))); + getSalaryAcctEmployeeService(user).lock(salaryAcctEmployeePO); + }); } @@ -1146,30 +1199,30 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } // ヨ; - SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() - .id(IdGenerator.generate()) - .salarySobId(salaryAcctRecordPO.getSalarySobId()) - .salaryItemId(param.getSalaryItemId()) - .salaryAcctRecordId(param.getSalaryAcctRecordId()) - .salaryAcctEmpId(salaryAcctEmployeePO.getId().toString()) - .employeeId(salaryAcctEmployeePO.getEmployeeId().toString()) - .taxAgentId(salaryAcctEmployeePO.getTaxAgentId()) - .resultValue(param.getValue()) - .creator(Long.valueOf(user.getUID())) - .createTime(now) - .updateTime(now) - .deleteType(NumberUtils.INTEGER_ZERO) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); - DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployeePO.getEmployeeId()); - if (dataCollectionEmployee != null) { - po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); - po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); - po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); - po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); - po.setLocationId(dataCollectionEmployee.getLocationId()); - } - salaryAcctResultReportPOS.add(po); +// SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder() +// .id(IdGenerator.generate()) +// .salarySobId(salaryAcctRecordPO.getSalarySobId()) +// .salaryItemId(param.getSalaryItemId()) +// .salaryAcctRecordId(param.getSalaryAcctRecordId()) +// .salaryAcctEmpId(salaryAcctEmployeePO.getId().toString()) +// .employeeId(salaryAcctEmployeePO.getEmployeeId().toString()) +// .taxAgentId(salaryAcctEmployeePO.getTaxAgentId()) +// .resultValue(param.getValue()) +// .creator(Long.valueOf(user.getUID())) +// .createTime(now) +// .updateTime(now) +// .deleteType(NumberUtils.INTEGER_ZERO) +// .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) +// .build(); +// DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployeePO.getEmployeeId()); +// if (dataCollectionEmployee != null) { +// po.setDepartmentId(dataCollectionEmployee.getDepartmentId()); +// po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid()); +// po.setCostcenterId(dataCollectionEmployee.getCostcenterId()); +// po.setJobtitleId(dataCollectionEmployee.getJobtitleId()); +// po.setLocationId(dataCollectionEmployee.getLocationId()); +// } +// salaryAcctResultReportPOS.add(po); }); // ュ @@ -1182,8 +1235,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe batchSave(needInsertList); // ヨ;ュ - getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(param.getIdList(), Collections.singletonList(param.getSalaryItemId())); - getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); +// getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(param.getIdList(), Collections.singletonList(param.getSalaryItemId())); +// getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS); } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java index c79f314f8..219d971f6 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultTemplateServiceImpl.java @@ -63,10 +63,10 @@ public class SalaryAcctResultTemplateServiceImpl extends Service implements Sala } @Override - public List listBySalarySobId(Long salarySobId) { + public List listBySalarySobId(Long salarySobId,List types) { if (salarySobId == null) { return Collections.emptyList(); } - return getSalaryAcctResultTemplateMapper().listSome(SalaryAcctResultTemplatePO.builder().salarySobId(salarySobId).build()); + return getSalaryAcctResultTemplateMapper().listSome(SalaryAcctResultTemplatePO.builder().salarySobId(salarySobId).types(types).build()); } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java index 085abe60e..61d79ab9e 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctSobConfigServiceImpl.java @@ -18,6 +18,7 @@ import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; +import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; import java.util.*; @@ -171,14 +172,23 @@ public class SalaryAcctSobConfigServiceImpl extends Service implements SalaryAcc } @Override - public void updateBySalaryAcctRecordId(Long salaryAcctRecordId) { + public void updateBySalaryAcctRecordId(Long salaryAcctRecordId) { SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); if (salaryAcctRecord == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156474, "育莚鐚莎悟莅医筝絖綏画←")); } SalaryAcctSobConfigPO salaryAcctSobConfig = initBySalaryAcctRecord(salaryAcctRecord); + + String acctSobConfigFlag = getSalaryCacheService(user).get(SalaryCacheKey.ACCT_SOB_CONFIG + salaryAcctRecordId); + if (acctSobConfigFlag != null && StringUtils.equals(acctSobConfigFlag, "TRUE")) { + return; + } + getSalaryCacheService(user).set(SalaryCacheKey.ACCT_SOB_CONFIG + salaryAcctRecordId, "TRUE"); + deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); getSalaryAcctSobConfigMapper().insertIgnoreNull(salaryAcctSobConfig); + + getSalaryCacheService(user).set(SalaryCacheKey.ACCT_SOB_CONFIG + salaryAcctRecordId, "FALSE"); } @Override diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index 2c500a688..6d27d2cad 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -1,5 +1,7 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.StrUtil; +import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.SalaryArchiveBiz; @@ -8,10 +10,12 @@ import com.engine.salary.biz.SalaryItemBiz; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; +import com.engine.salary.entity.salaryarchive.config.ArchiveFieldConfig; import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.*; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; @@ -20,17 +24,20 @@ import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.service.SalaryArchiveItemService; -import com.engine.salary.service.SalaryArchiveService; -import com.engine.salary.service.SalaryEmployeeService; -import com.engine.salary.service.TaxAgentService; +import com.engine.salary.mapper.archive.SalaryArchiveItemMapper; +import com.engine.salary.mapper.salaryitem.SalaryItemMapper; +import com.engine.salary.service.*; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.SalaryLoggerUtil; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -49,12 +56,22 @@ import java.util.stream.Collectors; * @author qiantao * @version 1.0 **/ +@Slf4j public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchiveItemService { private SalaryArchiveBiz salaryArchiveMapper = new SalaryArchiveBiz(); private SalaryItemBiz salaryItemMapper = new SalaryItemBiz(); private SalaryArchiveItemBiz salaryArchiveItemMapper = new SalaryArchiveItemBiz(); + private SalaryArchiveItemMapper getSalaryArchiveItemMapper() { + return MapperProxyFactory.getProxy(SalaryArchiveItemMapper.class); + } + + private SalaryItemMapper getSalaryItemMapper() { + return SqlProxyHandle.getProxy(SalaryItemMapper.class); + } + + @Override public SalaryArchiveItemPO getById(Long salaryArchiveItemId) { return salaryArchiveItemMapper.getById(salaryArchiveItemId); @@ -68,6 +85,10 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + private SalaryArchiveService getSalaryArchiveService(User user) { return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); } @@ -75,6 +96,7 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi private SalaryEmployeeService getSalaryEmployeeService(User user) { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + /** * キ lt * @@ -262,11 +284,12 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi salaryArchiveItem, saiNew, user - ); + ); } return StringUtils.EMPTY; } + /** * @return null * @description 綮肴莎罅f筝莪贋PO @@ -738,4 +761,62 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi } + @Override + public ArchiveFieldConfig getConfig() { + List salaryItemPOList = getSalaryItemService(user).listByParam(SalaryItemSearchParam.builder().useInEmployeeSalary(1).build()); + return ArchiveFieldConfig.builder().salaryItems(salaryItemPOList).build(); + } + + @Override + public UploadConfigResponse.Result parseConfig(ArchiveFieldConfig config) { + UploadConfigResponse.Result result = UploadConfigResponse.Result.builder() + .message("罅f絖罧球莉遵罸") + .success(new ArrayList<>()) + .warning(new ArrayList<>()) + .error(new ArrayList<>()) + .build(); + long uid = user.getUID(); + List salaryItemPOList = getSalaryItemService(user).listAll(); + Map nameMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getName); + Map codeMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getCode); + Optional.ofNullable(config.getSalaryItems()) + .orElse(new ArrayList<>()) + .forEach(itemPO -> { + try { + + + if (nameMap.containsKey(itemPO.getName())) { + SalaryItemPO salaryItemPO = nameMap.get(itemPO.getName()); + if (!StrUtil.equals(salaryItemPO.getCode(), itemPO.getCode())) { + result.getWarning().add(String.format("茘鐚罅f絖罧[%s]腱医群絖,篏蕁合code筝筝,菴code:%s,綵膤紫code鐚%s", itemPO.getName(), itemPO.getCode(), salaryItemPO.getCode())); + } + itemPO.setId(salaryItemPO.getId()); + //筝莅娯信code + itemPO.setCode(null); + itemPO.setCreator(uid); + getSalaryItemMapper().updateIgnoreNull(itemPO); + } else if (codeMap.containsKey(itemPO.getCode())) { + SalaryItemPO salaryItemPO = codeMap.get(itemPO.getCode()); + if (!StrUtil.equals(salaryItemPO.getName(), itemPO.getName())) { + result.getWarning().add(String.format("茘鐚罅f絖罧[%s]code綏峨,篏蕁合code筝筝,菴ュ腱:%s,綵膤紫腱逸%s", itemPO.getName(), itemPO.getName(), salaryItemPO.getName())); + } + itemPO.setId(salaryItemPO.getId()); + //筝莅娯信劫絖 + itemPO.setName(null); + itemPO.setCreator(uid); + getSalaryItemMapper().updateIgnoreNull(itemPO); + } else { + itemPO.setId(IdGenerator.generate()); + getSalaryItemMapper().insertIgnoreNull(itemPO); + } + result.getSuccess().add(String.format("鐚莎蕁合[%s]莉醇", itemPO.getName())); + } catch (Exception e) { + log.error("{}絖罧球莉遵絽醐", itemPO.getName(), e); + result.getError().add(String.format("莚鐚罅f絖罧[%s]莉遵絽醐%s", itemPO.getName(), e.getMessage())); + } + }); + + return result; + } + } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 50241e5d5..0b5891202 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -665,7 +665,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "莎罅f") + "-" + name); loggerContext.setUser(user); SalaryElogConfig.salaryArchiveLoggerTemplate.write(loggerContext); - return ExcelUtilPlus.genWorkbookV2WithPattern(rows, sheetName); + return ExcelUtilPlus.genWorkbookV2WithPattern(rows, sheetName, false); } diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index 060f15cb2..4df8aa8f2 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -54,6 +54,7 @@ import weaver.hrm.User; import java.io.File; import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -377,9 +378,7 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService String remarkI18n = SalaryI18nUtil.getI18nLabel(140036, "乗贋"); if (StringUtils.isNotEmpty(salaryTemplate.getTextContent())) { - String yearI18n = SalaryI18nUtil.getI18nLabel(100325, "綛"); - String monthI18n = SalaryI18nUtil.getI18nLabel(100326, ""); - salaryTemplate.setTextContent(salaryTemplate.getTextContent().replace("${salaryMonth}", salaryMonth.getYear() + yearI18n + salaryMonth.getMonth() + monthI18n)); + salaryTemplate.setTextContent(salaryTemplate.getTextContent().replace("${salaryMonth}", new SimpleDateFormat("yyyy綛MM").format(salaryMonth))); } // 綏ヨ羂翫域丞舟 diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index bc3bcd2d6..d9ab6924c 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -9,6 +9,7 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.SalarySobExtRangePO; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.hrm.DeptInfo; +import com.engine.salary.entity.hrm.JobCallInfo; import com.engine.salary.entity.hrm.PositionInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; import com.engine.salary.entity.hrm.dto.EmployeeInfoExpandDTO; @@ -63,6 +64,10 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee return ServiceUtil.getService(SalarySobRangeServiceImpl.class, user); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + private SalarySysConfMapper getSalarySysConfMapper() { return SqlProxyHandle.getProxy(SalarySysConfMapper.class); } @@ -288,6 +293,14 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee return SalaryI18nUtil.i18nList(employBiz.getDeptInfoList(departmentIds)); } + @Override + public DeptInfo getDeptInfoById(Long departmentId) { + if (departmentId == null) { + return null; + } + return SalaryI18nUtil.i18n(employBiz.getDeptInfoById(departmentId)); + } + @Override public List getVirtualDeptInfoList(List virtualDepartmentIds) { if (CollectionUtils.isEmpty(virtualDepartmentIds)) { @@ -302,6 +315,11 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee return SalaryI18nUtil.i18nList(employBiz.getSubCompanyInfoList(subDepartmentIds)); } + @Override + public SubCompanyInfo getSubCompanyInfoById(Long subDepartmentId) { + return SalaryI18nUtil.i18n(employBiz.getSubCompanyInfoById(subDepartmentId)); + } + @Override public List getVirtualSubCompanyInfoList(List virtualSubDepartmentIds) { if (CollectionUtils.isEmpty(virtualSubDepartmentIds)) { @@ -316,6 +334,11 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee return SalaryI18nUtil.i18nList(employBiz.listPositionInfo(positionIds)); } + @Override + public PositionInfo getPositionInfoById(Long positionId) { + return SalaryI18nUtil.i18n(employBiz.getPositionInfoById(positionId)); + } + @Override public List listEmployee() { List result = employBiz.listEmployee(); @@ -330,23 +353,36 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee if (CollectionUtils.isEmpty(includeQueryParams)) { return Collections.emptyList(); } - - List result = employBiz.listByParams(includeQueryParams); + List queryParams = includeQueryParams.stream().filter(param -> !param.getTargetType().equals(TargetTypeEnum.SQL.name())).collect(Collectors.toList()); + List result = employBiz.listByParams(queryParams); if (openExtEmp) { - result.addAll(getExtEmpService(user).listByParams(includeQueryParams)); + result.addAll(getExtEmpService(user).listByParams(queryParams)); } // ヨ∵篋阪篆≧ - List virtualParams = includeQueryParams.stream().filter(param -> + List virtualParams = queryParams.stream().filter(param -> (param.getTargetType().equals(TargetTypeEnum.SUBCOMPANY.name()) || param.getTargetType().equals(TargetTypeEnum.DEPT.name())) && ((List) param.getTargetIds()).get(0).compareTo(0L) < 0 ).collect(Collectors.toList()); result.addAll(employBiz.listByVirtualParams(virtualParams)); + List empIds = new ArrayList<>(); + includeQueryParams.stream() + .filter(param -> param.getTargetType().equals(TargetTypeEnum.SQL.name())) + .forEach(param -> { + String sql = param.getTarget(); + RecordSet rs = new RecordSet(); + if (rs.execute(sql)) { + while (rs.next()) { + empIds.add((long) rs.getInt("id")); + } + } + }); + List employees = getSalaryEmployeeService(user).getEmployeeByIdsAll(empIds); + result.addAll(employees); + // 篁hrmresourcehrmresourcevirtual処キ育紊篋阪井鐚荀号篋阪idサ result = result.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparingLong(DataCollectionEmployee::getEmployeeId))), ArrayList::new)); - //膈篆≧紊篁遵井悟篋阪茵筝鐚筝菴茵紊莚荐紊 - // return SalaryI18nUtil.i18nList(result); return result; } @@ -521,4 +557,12 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee SalaryI18nUtil.i18nList(deptInfos); return deptInfos; } + + @Override + public JobCallInfo getJobCallInfoById(Long jobCallId) { + if (jobCallId == null) { + return null; + } + return SalaryI18nUtil.i18n(getEmployMapper().getJobCallInfoById(jobCallId)); + } } diff --git a/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java b/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java index 9d1a125df..f6b895a9b 100644 --- a/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryFormulaServiceImpl.java @@ -1,9 +1,11 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryformula.ExpressFormula; +import com.engine.salary.entity.salaryformula.config.FormluaConfig; import com.engine.salary.entity.salaryformula.param.SalaryFormulaMockParam; import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam; import com.engine.salary.entity.salaryformula.po.FormulaPO; @@ -19,10 +21,10 @@ import com.engine.salary.service.FormulaRunService; import com.engine.salary.service.RemoteExcelService; import com.engine.salary.service.SalaryFormulaService; 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 com.google.common.collect.Lists; -import com.engine.salary.util.db.IdGenerator; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -396,9 +398,53 @@ public class SalaryFormulaServiceImpl extends Service implements SalaryFormulaSe return getFormulaMapper().listByIds(formulaIds); } + @Override + public List listAll() { + return getFormulaMapper().listAll(); + } + + @Override + public List listAllVar() { + return getFormulaVarMapper().listAll(); + } + @Override public void update(FormulaPO formulaPO) { getFormulaMapper().updateIgnoreNull(formulaPO); } + @Override + public FormluaConfig getConfig() { + List formulaPOS = getFormulaMapper().listAll(); + List formulaVars = getFormulaVarMapper().listAll(); + return FormluaConfig.builder().formulas(formulaPOS).formulaVars(formulaVars).build(); + } + + @Override + public Long add(FormulaPO formula) { + if (formula == null) { + return 0L; + } + + long uid = user.getUID(); + Date now = new Date(); + long formulaId = IdGenerator.generate(); + formula.setId(formulaId); + formula.setCreator(uid); + formula.setCreateTime(now); + + getFormulaMapper().insertIgnoreNull(formula); + + List formulaVars = formula.getFormulaVars(); + if (CollectionUtil.isNotEmpty(formulaVars)) { + formulaVars.forEach(v -> { + v.setId(IdGenerator.generate()); + v.setFormulaId(formulaId); + v.setCreator(uid); + v.setCreateTime(now); + getFormulaVarMapper().insertIgnoreNull(v); + }); + } + return formulaId; + } } diff --git a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index a63bec4e6..00b8d6098 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -1,47 +1,70 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; +import com.api.formmode.mybatis.util.SqlProxyHandle; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.SalaryItemBiz; import com.engine.salary.biz.SysSalaryItemBiz; import com.engine.salary.config.SalaryElogConfig; -import com.engine.hrmelog.entity.dto.LoggerContext; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.salaryformula.param.SalaryFormulaSaveParam; import com.engine.salary.entity.salaryformula.po.FormulaPO; import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.bo.SalaryItemBO; -import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; -import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; -import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; +import com.engine.salary.entity.salaryitem.config.SalaryItemAllConfig; +import com.engine.salary.entity.salaryitem.config.SalaryItemExcelConfig; +import com.engine.salary.entity.salaryitem.param.*; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; 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.OperateTypeEnum; -import com.engine.salary.enums.SalarySystemTypeEnum; -import com.engine.salary.enums.SalaryValueTypeEnum; +import com.engine.salary.enums.*; +import com.engine.salary.enums.salaryformula.ReferenceTypeEnum; +import com.engine.salary.enums.salaryformula.ReturnTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.enums.sicategory.SharedTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.salaryitem.SalaryItemMapper; import com.engine.salary.service.*; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; +import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.excel.ExcelParseHelper; +import com.engine.salary.util.excel.ExcelSupport; +import com.engine.salary.util.excel.ExcelUtil; +import com.engine.salary.util.excel.ImportExcelResponse; 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 com.weaver.general.Util; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.util.IOUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; +import weaver.file.ImageFileManager; import weaver.hrm.User; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX; + /** * 莎蕁合 *

Copyright: Copyright (c) 2022

@@ -50,6 +73,7 @@ import java.util.stream.Collectors; * @author qiantao * @version 1.0 **/ +@Slf4j public class SalaryItemServiceImpl extends Service implements SalaryItemService { private SalaryItemBiz salaryItemBiz = new SalaryItemBiz(); @@ -80,8 +104,10 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService } private SysSalaryItemBiz sysSalaryItemBiz = new SysSalaryItemBiz(); -// @Autowired -// private LoggerTemplate salaryItemLoggerTemplate; + + private SalaryItemMapper getSalaryItemMapper() { + return SqlProxyHandle.getProxy(SalaryItemMapper.class); + } @Override public SalaryItemPO getById(Long id) { @@ -114,6 +140,12 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService return salaryItemBiz.listSome(SalaryItemPO.builder().name(name).build()); } + @Override + public SalaryItemPO getByName(String name) { + return getSalaryItemMapper().getByName(name); + } + + @Override public List listBySystemType(SalarySystemTypeEnum systemType) { return salaryItemBiz.listSome(SalaryItemPO.builder().systemType(systemType.getValue()).build()); @@ -407,6 +439,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService List formulaVars = getSalaryFormulaService(user).listVarByFormulaIds(usingFormulaIds); List itemCode = formulaVars.stream() .map(FormulaVar::getFieldId) + .map(v -> v.replaceAll("variableItem_", "")) .map(v -> v.replaceAll("salaryItem_", "")) .map(v -> v.replaceAll("salaryArchives_", "")) .map(v -> v.replaceAll("ISSUED_", "")) @@ -465,6 +498,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService } } + @Data @Builder @NoArgsConstructor @@ -505,4 +539,335 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService return UsingItem.builder().build(); } + + @Override + public List getConfig(SalaryItemExportParam param) { + return getSalaryItemMapper().getConfig(param.getIds()); + } + + + @Override + public Map preview(SalaryItemImportParam param) { + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); + Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); + Map apidatas = new HashMap(); + apidatas.put("headers", ExcelSupport.getSheetHeader(sheet, 0)); + apidatas.put("list", ExcelParseHelper.parse2List(sheet, 1)); + return apidatas; + } finally { + IOUtils.closeQuietly(fileInputStream); + } + } + + @Override + public ImportExcelResponse importSalaryItem(SalaryItemImportParam param) { + + Date now = new Date(); + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); + List configs = ExcelParseHelper.parse2Map(fileInputStream, SalaryItemExcelConfig.class, 0, 1, 13, EXCEL_TYPE_XLSX); + + // 莚excel絎 + ImportExcelResponse response = ImportExcelResponse.builder().totalCount(configs.size()).successCount(configs.size()).errorCount(0).errorData(new ArrayList<>()).build(); + + List sysSalaryItemPOS = sysSalaryItemBiz.listAll(); + Set sysItems = SalaryEntityUtil.properties(sysSalaryItemPOS, SysSalaryItemPO::getName); + + List adds = new ArrayList<>(); + List updates = new ArrayList<>(); + Map> formulaItems = new HashMap<>(); + for (int i = 0; i < configs.size(); i++) { + String rowIndex = String.format("膃%s茵", i + 2); + SalaryItemExcelConfig config = configs.get(i); + String name = config.getName(); + SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByDefaultLabel(config.getValueType()); + SalaryDataTypeEnum salaryDataTypeEnum = SalaryDataTypeEnum.parseByDefaultLabel(config.getDataType()); + SalaryItemPO itemPO = getByName(name); + if (itemPO == null) { + + if (sysItems.contains(name)) { + ImportExcelResponse.Error error = ImportExcelResponse.Error.builder().message(String.format("%s%s腱遺膤紫腱医牙", rowIndex, name)).build(); + response.setSuccessCount(response.getSuccessCount() - 1); + response.setErrorCount(response.getErrorCount() + 1); + response.getErrorData().add(error); + continue; + } + + itemPO = SalaryItemPO.builder() + .id(IdGenerator.generate()) + .code(IdGenerator.getUUID()) + .name(name) + .systemType(SalarySystemTypeEnum.CUSTOM.getValue()) + .sysSalaryItemId(org.apache.commons.lang3.math.NumberUtils.LONG_ZERO) + .useDefault(SalaryOnOffEnum.parseByDefaultLabel(config.getUseDefault()).getValue()) + .useInEmployeeSalary(SalaryOnOffEnum.OFF.getValue()) + .hideDefault(SalaryOnOffEnum.parseByDefaultLabel(config.getHideDefault()).getValue()) + .roundingMode(SalaryRoundingModeEnum.parseByDefaultLabel(config.getRoundingMode()).getValue()) + .pattern(NumberUtil.isNumber(config.getPattern()) ? Integer.parseInt(config.getPattern()) : 2) + .valueType(salaryValueTypeEnum.getValue()) + .dataType(salaryDataTypeEnum.getValue()) + //茵 + .formulaId(0L) + .description(config.getDescription()) + .canEdit(org.apache.commons.lang3.math.NumberUtils.INTEGER_ONE) + .creator((long) user.getUID()) + .deleteType(0) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .sharedType(0) + .taxAgentIds("") + .sortedIndex(NumberUtil.isNumber(config.getSortedIndex()) ? Integer.parseInt(config.getSortedIndex()) : null) + .width(NumberUtil.isNumber(config.getWidth()) ? Integer.parseInt(config.getWidth()) : null) + .defaultValue(config.getDefaultValue()) + .build(); + adds.add(itemPO); + } else { + + if (SalarySystemTypeEnum.parseByValue(itemPO.getSystemType()) == SalarySystemTypeEnum.SYSTEM) { + ImportExcelResponse.Error error = ImportExcelResponse.Error.builder().message(String.format("%s%s膤紫莎蕁合筝篆", rowIndex, name)).build(); + response.setSuccessCount(response.getSuccessCount() - 1); + response.setErrorCount(response.getErrorCount() + 1); + response.getErrorData().add(error); + continue; + } + + itemPO.setUseDefault(SalaryOnOffEnum.parseByDefaultLabel(config.getUseDefault()).getValue()); + itemPO.setHideDefault(SalaryOnOffEnum.parseByDefaultLabel(config.getHideDefault()).getValue()); + itemPO.setRoundingMode(SalaryRoundingModeEnum.parseByDefaultLabel(config.getRoundingMode()).getValue()); + itemPO.setPattern(NumberUtil.isNumber(config.getPattern()) ? Integer.parseInt(config.getPattern()) : 2); + itemPO.setValueType(salaryValueTypeEnum.getValue()); + itemPO.setDataType(salaryDataTypeEnum.getValue()); + //茵 + itemPO.setFormulaId(0L); + itemPO.setDescription(config.getDescription()); + itemPO.setUpdateTime(now); + itemPO.setSortedIndex(NumberUtil.isNumber(config.getSortedIndex()) ? Integer.parseInt(config.getSortedIndex()) : null); + itemPO.setWidth(NumberUtil.isNumber(config.getWidth()) ? Integer.parseInt(config.getWidth()) : null); + itemPO.setDefaultValue(config.getDefaultValue()); + updates.add(itemPO); + } + + //茹f綣 + if (salaryValueTypeEnum == SalaryValueTypeEnum.FORMULA || salaryValueTypeEnum == SalaryValueTypeEnum.SQL) { + Long id = itemPO.getId(); + String formula = config.getFormula(); + String sqlReturnKey = config.getExtendParam(); + Map map = new HashMap<>(); + map.put("rowIndex", rowIndex); + map.put("formula", formula); + map.put("sqlReturnKey", sqlReturnKey); + formulaItems.put(id, map); + } + } + + adds.forEach(getSalaryItemMapper()::insertIgnoreNull); + updates.forEach(getSalaryItemMapper()::updateIgnoreNull); + + for (Long id : formulaItems.keySet()) { + SalaryItemPO itemPO = getById(id); + Map map = formulaItems.get(id); + String rowIndex = map.get("rowIndex"); + String formula = map.get("formula"); + String sqlReturnKey = map.get("sqlReturnKey"); + SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(itemPO.getValueType()); + SalaryDataTypeEnum salaryDataTypeEnum = SalaryDataTypeEnum.parseByValue(itemPO.getDataType()); + SalaryFormulaSaveParam saveParam = SalaryFormulaSaveParam.builder() + .name(itemPO.getName()) + .module("salary") + .useFor("salaryitem") + .referenceType(salaryValueTypeEnum == SalaryValueTypeEnum.FORMULA ? ReferenceTypeEnum.FORMULA.getValue() : ReferenceTypeEnum.SQL.getValue()) + .returnType(salaryDataTypeEnum == SalaryDataTypeEnum.STRING ? ReturnTypeEnum.STRING.getValue() : ReturnTypeEnum.NUMBER.getValue()) + .validateType(salaryDataTypeEnum == SalaryDataTypeEnum.STRING ? ReturnTypeEnum.STRING.getValue() : ReturnTypeEnum.NUMBER.getValue()) + .extendParam("{\"isCustomFunction\":\"0\",\"sqlReturnKey\":\"" + sqlReturnKey + "\",\"openDecrypt\":\"0\",\"datasource\":{\"datasourceId\":\"\"}}") + .formula(formula) + .build(); + + try { + FormulaPO formulaPO = getSalaryFormulaService(user).save(saveParam); + itemPO.setFormulaId(formulaPO.getId()); + getSalaryItemMapper().updateIgnoreNull(itemPO); + } catch (Exception e) { + ImportExcelResponse.Error error = ImportExcelResponse.Error.builder().message(String.format("%s%s綣顒丞舟莚鐚%s", rowIndex, itemPO.getName(), e.getMessage())).build(); + response.setSuccessCount(response.getSuccessCount() - 1); + response.setErrorCount(response.getErrorCount() + 1); + response.getErrorData().add(error); + } + } + return response; + } finally { + IOUtils.closeQuietly(fileInputStream); + } + } + + @Override + public XSSFWorkbook export(SalaryItemExportParam param) { + + List titles = Lists.newArrayList(); + List dataIndexList = Lists.newArrayList(); + ExcelUtil.parseHeader(SalaryItemExcelConfig.class, titles, dataIndexList); + + List configs = getConfig(param); + + List> rows = new ArrayList<>(); + rows.add(titles); + configs.forEach(e -> { + List row = new ArrayList<>(); + row.add(e.getName()); + row.add(e.getUseDefault() == null ? "" : SalaryOnOffEnum.parseByValue(Integer.parseInt(e.getUseDefault())).getDefaultLabel()); + row.add(e.getHideDefault() == null ? "" : SalaryOnOffEnum.parseByValue(Integer.parseInt(e.getHideDefault())).getDefaultLabel()); + row.add(SalaryDataTypeEnum.parseByValue(Util.null2String(e.getDataType())).getDefaultLabel()); + row.add(e.getRoundingMode() == null ? "篋" : SalaryRoundingModeEnum.parseByValue(Integer.parseInt(e.getRoundingMode())).getDefaultLabel()); + row.add(e.getPattern() == null ? "2" : e.getPattern()); + row.add(e.getValueType() == null ? "莨" : SalaryValueTypeEnum.parseByValue(Integer.parseInt(e.getValueType())).getDefaultLabel()); + row.add(e.getFormula() == null ? "" : e.getFormula()); + String sqlReturnKey = ""; + if (e.getExtendParam() != null) { + sqlReturnKey = JsonUtil.parseMap(Util.null2String(e.getExtendParam()), String.class).getOrDefault("sqlReturnKey", ""); + if ("null".equals(sqlReturnKey)) { + sqlReturnKey = ""; + } + } + row.add(sqlReturnKey); + row.add(e.getSortedIndex() == null ? "" : e.getSortedIndex()); + row.add(e.getWidth() == null ? "" : e.getWidth()); + row.add(e.getDefaultValue() == null ? "" : e.getDefaultValue()); + row.add(e.getDescription() == null ? "" : e.getDescription()); + rows.add(row); + }); + + return ExcelUtil.genWorkbookV2(rows, "莎蕁合"); + } + + @Override + public XSSFWorkbook downloadTemplate(SalaryItemDownloadTemplateParam param) { + List titles = Lists.newArrayList(); + List dataIndexList = Lists.newArrayList(); + ExcelUtil.parseHeader(SalaryItemExcelConfig.class, titles, dataIndexList); + + + List> rows = new ArrayList<>(); + rows.add(titles); + if (param.isHasData()) { + List configs = getConfig(SalaryItemExportParam.builder().build()); + configs.forEach(e -> { + List row = new ArrayList<>(); + row.add(e.getName()); + row.add(e.getUseDefault() == null ? "" : SalaryOnOffEnum.parseByValue(Integer.parseInt(e.getUseDefault())).getDefaultLabel()); + row.add(e.getHideDefault() == null ? "" : SalaryOnOffEnum.parseByValue(Integer.parseInt(e.getHideDefault())).getDefaultLabel()); + row.add(SalaryDataTypeEnum.parseByValue(Util.null2String(e.getDataType())).getDefaultLabel()); + row.add(e.getRoundingMode() == null ? "篋" : SalaryRoundingModeEnum.parseByValue(Integer.parseInt(e.getRoundingMode())).getDefaultLabel()); + row.add(e.getPattern() == null ? "2" : e.getPattern()); + row.add(e.getValueType() == null ? "莨" : SalaryValueTypeEnum.parseByValue(Integer.parseInt(e.getValueType())).getDefaultLabel()); + row.add(e.getFormula() == null ? "" : e.getFormula()); + String sqlReturnKey = ""; + if (e.getExtendParam() != null) { + sqlReturnKey = JsonUtil.parseMap(Util.null2String(e.getExtendParam()), String.class).getOrDefault("sqlReturnKey", ""); + if ("null".equals(sqlReturnKey)) { + sqlReturnKey = ""; + } + } + row.add(sqlReturnKey); + row.add(e.getSortedIndex() == null ? "" : e.getSortedIndex()); + row.add(e.getWidth() == null ? "" : e.getWidth()); + row.add(e.getDefaultValue() == null ? "" : e.getDefaultValue()); + row.add(e.getDescription() == null ? "" : e.getDescription()); + rows.add(row); + }); + } + return ExcelUtil.genWorkbookV2(rows, "莎蕁合"); + } + + @Override + public SalaryItemAllConfig getConfig() { + List salaryItemPOList = listByParam(SalaryItemSearchParam.builder().useInEmployeeSalary(0).build()); + List formulaPOS = getSalaryFormulaService(user).listAll(); + Map formulaMap = SalaryEntityUtil.convert2Map(formulaPOS, FormulaPO::getId); + List formulaVars = getSalaryFormulaService(user).listAllVar(); + Map> varListMap = SalaryEntityUtil.group2Map(formulaVars, FormulaVar::getFormulaId); + + salaryItemPOList.forEach(itemPO -> { + if (itemPO.getFormulaId() != null) { + FormulaPO formulaPO = formulaMap.get(itemPO.getFormulaId()); + if (formulaPO != null) { + formulaPO.setFormulaVars(varListMap.get(itemPO.getFormulaId())); + itemPO.setFormula(formulaPO); + } + } + }); + + return SalaryItemAllConfig.builder().salaryItems(salaryItemPOList).build(); + } + + @Override + public UploadConfigResponse.Result parseConfig(SalaryItemAllConfig salaryItemConfig) { + UploadConfigResponse.Result result = UploadConfigResponse.Result.builder() + .message("莎蕁合莉遵罸") + .success(new ArrayList<>()) + .warning(new ArrayList<>()) + .error(new ArrayList<>()) + .build(); + List salaryItemPOList = listAll(); + Map nameMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getName); + Map codeMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getCode); + + Optional.ofNullable(salaryItemConfig.getSalaryItems()) + .orElse(new ArrayList<>()) + .forEach(itemPO -> { + try { + add(itemPO, nameMap, codeMap, result); + } catch (Exception e) { + log.error("{}蕁合莉遵絽醐", itemPO.getName(), e); + result.getError().add(String.format("莚鐚莎蕁合[%s]莉遵絽醐%s", itemPO.getName(), e.getMessage())); + } + }); + return result; + } + + @Override + public SalaryItemPO getItem(SalaryItemPO salaryItemPO) { + SalaryItemPO po = getByName(salaryItemPO.getName()); + if (po == null) { + po = getSalaryItemMapper().getByCode(salaryItemPO.getCode()); + } + return po; + } + + + private Long add(SalaryItemPO itemPO, Map nameMap, Map codeMap, UploadConfigResponse.Result result) { + long uid = user.getUID(); + Long formulaId = getSalaryFormulaService(user).add(itemPO.getFormula()); + itemPO.setFormulaId(formulaId); + + if (nameMap.containsKey(itemPO.getName())) { + SalaryItemPO salaryItemPO = nameMap.get(itemPO.getName()); + if (!StrUtil.equals(salaryItemPO.getCode(), itemPO.getCode())) { + result.getWarning().add(String.format("茘鐚莎蕁合[%s]腱医群絖,篏蕁合code筝筝,菴code:%s,綵膤紫code鐚%s", itemPO.getName(), itemPO.getCode(), salaryItemPO.getCode())); + } + itemPO.setId(salaryItemPO.getId()); + //筝莅娯信code + itemPO.setCode(null); + itemPO.setCreator(uid); + getSalaryItemMapper().updateIgnoreNull(itemPO); + } else if (codeMap.containsKey(itemPO.getCode())) { + SalaryItemPO salaryItemPO = codeMap.get(itemPO.getCode()); + if (!StrUtil.equals(salaryItemPO.getName(), itemPO.getName())) { + result.getWarning().add(String.format("茘鐚莎蕁合[%s]code綏峨,篏蕁合code筝筝,菴ュ腱:%s,綵膤紫腱逸%s", itemPO.getName(), itemPO.getName(), salaryItemPO.getName())); + } + itemPO.setId(salaryItemPO.getId()); + //筝莅娯信劫絖 + itemPO.setName(null); + itemPO.setCreator(uid); + getSalaryItemMapper().updateIgnoreNull(itemPO); + } else { + itemPO.setId(IdGenerator.generate()); + getSalaryItemMapper().insertIgnoreNull(itemPO); + } + result.getSuccess().add(String.format("鐚莎蕁合[%s]莉醇", itemPO.getName())); + + return itemPO.getId(); + } } diff --git a/src/com/engine/salary/service/impl/SalarySobBackItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobBackItemServiceImpl.java index 928c3566e..6c59271e9 100644 --- a/src/com/engine/salary/service/impl/SalarySobBackItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobBackItemServiceImpl.java @@ -1,8 +1,12 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryformula.ExpressFormula; +import com.engine.salary.entity.salaryformula.config.FormluaConfig; +import com.engine.salary.entity.salaryformula.po.FormulaPO; +import com.engine.salary.entity.salaryformula.po.FormulaVar; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.bo.SalarySobBackItemBO; import com.engine.salary.entity.salarysob.dto.SalarySobBackItemDTO; @@ -17,6 +21,7 @@ import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.SalarySobBackItemService; import com.engine.salary.service.SalarySobService; 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 com.google.common.collect.Lists; @@ -24,10 +29,7 @@ import org.apache.commons.lang3.math.NumberUtils; import weaver.hrm.User; import java.time.LocalDateTime; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Objects; +import java.util.*; /** * @author Harryxzy @@ -117,4 +119,36 @@ public class SalarySobBackItemServiceImpl extends Service implements SalarySobBa return getSalarySobBackItemMapper().listSome(SalarySobBackItemPO.builder().salaryItemIds(salaryItemIds).build()); } + @Override + public List getConfig(Long salarySobId) { + List salarySobBackItemPOS = listBySalarySobId(salarySobId); + if (CollectionUtil.isNotEmpty(salarySobBackItemPOS)) { + FormluaConfig config = getSalaryFormulaService(user).getConfig(); + List formulaPOS = config.getFormulas(); + Map formulaMap = SalaryEntityUtil.convert2Map(formulaPOS, FormulaPO::getId); + List formulaVars = config.getFormulaVars(); + Map> varListMap = SalaryEntityUtil.group2Map(formulaVars, FormulaVar::getFormulaId); + + List salaryItems = getSalaryItemService(user).listAll(); + Map itemIdMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId); + + salarySobBackItemPOS.forEach(po -> { + if (SalaryEntityUtil.isNotNullOrEmpty(po.getFormulaId())) { + FormulaPO formulaPO = formulaMap.get(po.getFormulaId()); + if (SalaryEntityUtil.isNotNullOrEmpty(formulaPO)) { + List formulaVarList = varListMap.getOrDefault(formulaPO.getId(), new ArrayList<>()); + formulaPO.setFormulaVars(formulaVarList); + } + po.setFormula(formulaPO); + } + if(SalaryEntityUtil.isNotNullOrEmpty(po.getSalaryItemId())){ + SalaryItemPO salaryItemPO = itemIdMap.get(po.getSalaryItemId()); + po.setSalaryItem(salaryItemPO); + } + + }); + } + return salarySobBackItemPOS; + } + } diff --git a/src/com/engine/salary/service/impl/SalarySobItemGroupServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemGroupServiceImpl.java index a46462b91..f5c81e08a 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemGroupServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemGroupServiceImpl.java @@ -1,12 +1,26 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.SalarySobItemGroupBiz; +import com.engine.salary.entity.salaryformula.config.FormluaConfig; +import com.engine.salary.entity.salaryformula.po.FormulaPO; +import com.engine.salary.entity.salaryformula.po.FormulaVar; +import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO; +import com.engine.salary.entity.salarysob.po.SalarySobItemPO; +import com.engine.salary.service.SalaryFormulaService; +import com.engine.salary.service.SalaryItemService; import com.engine.salary.service.SalarySobItemGroupService; +import com.engine.salary.service.SalarySobItemService; +import com.engine.salary.util.SalaryEntityUtil; +import weaver.hrm.User; +import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 莎茣絅筝莎蕁合膠 @@ -20,6 +34,19 @@ public class SalarySobItemGroupServiceImpl extends Service implements SalarySobI private SalarySobItemGroupBiz salarySobItemGroupMapper = new SalarySobItemGroupBiz(); + private SalarySobItemService getSalarySobItemService(User user) { + return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + } + + private SalaryFormulaService getSalaryFormulaService(User user) { + return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + @Override public SalarySobItemGroupPO getById(Long id) { return salarySobItemGroupMapper.getById(id); @@ -39,4 +66,44 @@ public class SalarySobItemGroupServiceImpl extends Service implements SalarySobI public void deleteBySalarySobIds(Collection salarySobIds) { salarySobItemGroupMapper.deleteBySalarySobIds(salarySobIds); } + + @Override + public List getConfig(Long salarySobId) { + List salarySobItemGroupPOS = salarySobItemGroupMapper.listSome(SalarySobItemGroupPO.builder().salarySobId(salarySobId).build()); + if (CollectionUtil.isNotEmpty(salarySobItemGroupPOS)) { + List sobItemPOS = getSalarySobItemService(user).listBySalarySobId(salarySobId); + Map> itemListMap = SalaryEntityUtil.group2Map(sobItemPOS, SalarySobItemPO::getSalarySobItemGroupId); + + FormluaConfig config = getSalaryFormulaService(user).getConfig(); + List formulaPOS = config.getFormulas(); + Map formulaMap = SalaryEntityUtil.convert2Map(formulaPOS, FormulaPO::getId); + List formulaVars = config.getFormulaVars(); + Map> varListMap = SalaryEntityUtil.group2Map(formulaVars, FormulaVar::getFormulaId); + + List salaryItems = getSalaryItemService(user).listAll(); + Map itemIdMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId); + + + salarySobItemGroupPOS.forEach(salarySobItemGroupPO -> { + List salarySobItemPOS = itemListMap.getOrDefault(salarySobItemGroupPO.getId(), new ArrayList<>()); + salarySobItemPOS.forEach(po -> { + if (SalaryEntityUtil.isNotNullOrEmpty(po.getFormulaId())) { + FormulaPO formulaPO = formulaMap.get(po.getFormulaId()); + if (SalaryEntityUtil.isNotNullOrEmpty(formulaPO)) { + List formulaVarList = varListMap.getOrDefault(formulaPO.getId(), new ArrayList<>()); + formulaPO.setFormulaVars(formulaVarList); + } + po.setFormula(formulaPO); + } + if(SalaryEntityUtil.isNotNullOrEmpty(po.getSalaryItemId())){ + SalaryItemPO salaryItemPO = itemIdMap.get(po.getSalaryItemId()); + po.setSalaryItem(salaryItemPO); + } + }); + salarySobItemGroupPO.setSalarySobItems(salarySobItemPOS); + }); + } + + return salarySobItemGroupPOS; + } } diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index c85257886..99177af16 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -10,7 +10,13 @@ import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig; +import com.engine.salary.entity.salaryarchive.config.ArchiveFieldConfig; import com.engine.salary.entity.salaryformula.ExpressFormula; +import com.engine.salary.entity.salaryformula.config.FormluaConfig; +import com.engine.salary.entity.salaryformula.po.FormulaPO; +import com.engine.salary.entity.salaryformula.po.FormulaVar; +import com.engine.salary.entity.salaryitem.config.SalaryItemAllConfig; +import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; @@ -530,6 +536,37 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe salarySobItemMapper.update(po); } + @Override + public List getConfig(Long salarySobId) { + List salarySobItemPOS = salarySobItemMapper.listSome(SalarySobItemPO.builder().salarySobId(salarySobId).salarySobItemGroupId(0L).build()); + if (CollectionUtils.isNotEmpty(salarySobItemPOS)) { + FormluaConfig config = getSalaryFormulaService(user).getConfig(); + List formulaPOS = config.getFormulas(); + Map formulaMap = SalaryEntityUtil.convert2Map(formulaPOS, FormulaPO::getId); + List formulaVars = config.getFormulaVars(); + Map> varListMap = SalaryEntityUtil.group2Map(formulaVars, FormulaVar::getFormulaId); + + List salaryItems = getSalaryItemService(user).listAll(); + Map itemIdMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId); + + salarySobItemPOS.forEach(salarySobItemPO -> { + if (SalaryEntityUtil.isNotNullOrEmpty(salarySobItemPO.getFormulaId())) { + FormulaPO formulaPO = formulaMap.get(salarySobItemPO.getFormulaId()); + if (SalaryEntityUtil.isNotNullOrEmpty(formulaPO)) { + List formulaVarList = varListMap.getOrDefault(formulaPO.getId(), new ArrayList<>()); + formulaPO.setFormulaVars(formulaVarList); + } + salarySobItemPO.setFormula(formulaPO); + } + if(SalaryEntityUtil.isNotNullOrEmpty(salarySobItemPO.getSalaryItemId())){ + SalaryItemPO salaryItemPO = itemIdMap.get(salarySobItemPO.getSalaryItemId()); + salarySobItemPO.setSalaryItem(salaryItemPO); + } + }); + } + return salarySobItemPOS; + } + @Override public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) { SalarySobItemFormDTO salarySobItemFormDTO = new SalarySobItemFormDTO(); @@ -584,5 +621,4 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe } return salarySobItemFormDTO; } - } diff --git a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java index 28dcef63a..f1ff59e93 100644 --- a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; @@ -12,6 +13,7 @@ import com.engine.salary.entity.salaryitem.bo.SysSalaryItemBO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; import com.engine.salary.entity.salarysob.bo.*; +import com.engine.salary.entity.salarysob.config.SalarySobConfig; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.param.*; import com.engine.salary.entity.salarysob.po.*; @@ -28,17 +30,20 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.salarysob.SalarySobMapper; import com.engine.salary.mapper.taxagent.TaxAgentExtRangeMapper; import com.engine.salary.service.*; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; 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; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.RuntimeTypeEnum; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; @@ -59,6 +64,7 @@ import java.util.stream.Collectors; * @author qiantao * @version 1.0 **/ +@Slf4j public class SalarySobServiceImpl extends Service implements SalarySobService { @@ -79,6 +85,27 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { // return MapperProxyFactory.getProxy(SalarySobBackItemMapper.class); // } + private SalarySobItemService getSalarySobItemService(User user) { + return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + } + + private SalarySobItemGroupService getSalarySobItemGroupService(User user) { + return ServiceUtil.getService(SalarySobItemGroupServiceImpl.class, user); + } + + private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) { + return ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user); + } + + private SalarySobAdjustRuleService getSalarySobAdjustRuleService(User user) { + return ServiceUtil.getService(SalarySobAdjustRuleServiceImpl.class, user); + } + + private SalaryFormulaService getSalaryFormulaService(User user) { + return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); + } + + private SalarySobMapper getSalarySobMapper() { return MapperProxyFactory.getProxy(SalarySobMapper.class); } @@ -175,6 +202,20 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { return salarySobMapper.listSome(SalarySobPO.builder().build()); } + @Override + public List listAllByAuth() { + long uid = user.getUID(); + boolean isChief = getTaxAgentService(user).isChief(uid); + if (isChief) { + // 紫∞順井井 + return listAll(); + } + Collection canManageTaxAgentList = getTaxAgentService(user).listAllTaxAgentsAsAdmin(uid); + List taxAgentIds = canManageTaxAgentList.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + List salarySobPOS = listByTaxAgentIds(taxAgentIds); + return salarySobPOS; + } + @Override public List listByAdmin() { List salarySobPOS = salarySobMapper.listSome(SalarySobPO.builder().build()); @@ -225,8 +266,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { return page; } else { List salarySobPOS = salarySobMapper.listSome(build); - return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), - salarySobPOS, SalarySobPO.class); + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salarySobPOS, SalarySobPO.class); } } @@ -283,15 +323,15 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { // 篆絖莎茣絅 salarySobMapper.insert(salarySobPO); // 莅医ュ - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId(String.valueOf(salarySobPO.getId())); - loggerContext.setTargetName(salarySobPO.getName()); - loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "医産莎茣絅")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "医産莎茣絅") + ": " + salarySobPO.getName()); - loggerContext.setNewValues(salarySobPO); - SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(salarySobPO.getId())); + loggerContext.setTargetName(salarySobPO.getName()); + loggerContext.setOperateType(OperateTypeEnum.ADD.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "医産莎茣絅")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "医産莎茣絅") + ": " + salarySobPO.getName()); + loggerContext.setNewValues(salarySobPO); + SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); // 医産莎茣絅駈篆絖藥莅ょ綏ヤ拭絖罧 saveDefaultEmpField(salarySobPO); // 医産莎茣絅駈篆絖藥莅ょ莎蕁合 @@ -373,9 +413,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { SalarySobItemBO.Result result = SalarySobItemBO.initSalarySobItem(salarySobPO.getId(), salarySobDefaultItemGroupPOS, salarySobDefaultItemPOS, defaultSalaryItemPOS, (long) user.getUID(), SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); if (CollectionUtils.isNotEmpty(result.getNeedInsertSalarySobItems())) { - List list = new ArrayList<>(result.getNeedInsertSalarySobItems().stream() - .collect(Collectors.toMap(SalarySobItemPO::getSalaryItemId, Function.identity(), (oldValue, newValue) -> oldValue)) - .values()); + List list = new ArrayList<>(result.getNeedInsertSalarySobItems().stream().collect(Collectors.toMap(SalarySobItemPO::getSalaryItemId, Function.identity(), (oldValue, newValue) -> oldValue)).values()); salarySobItemService.batchInsert(list); } @@ -440,6 +478,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { .salarySobId(salarySobID) .targetType(item.getTargetType().getValue()) .targetId(item.getTargetId()) + .target(item.getTarget()) .employeeStatuses(item.getEmployeeStatus()) .includeType(1) .creator(Long.valueOf(user.getUID())) @@ -456,6 +495,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { .salarySobId(salarySobID) .targetType(item.getTargetType().getValue()) .targetId(item.getTargetId()) + .target(item.getTarget()) .employeeStatuses(item.getEmployeeStatus()) .includeType(0) .creator(Long.valueOf(user.getUID())) @@ -555,18 +595,18 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { salarySobPO.setUpdateTime(new Date()); salarySobMapper.updateById(salarySobPO); // 莅医ュ - String operateTypeName = Objects.equals(disableParam.getDisable(), NumberUtils.INTEGER_ONE) ? - SalaryI18nUtil.getI18nLabel(0, "胼莎茣絅") : SalaryI18nUtil.getI18nLabel(0, "莎茣絅"); - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId("" + salarySobPO.getId()); - loggerContext.setTargetName(salarySobPO.getName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(operateTypeName); - loggerContext.setOperatedesc(operateTypeName + ": " + salarySobPO.getName()); - loggerContext.setOldValues(oldSalarySobPO); - loggerContext.setNewValues(salarySobPO); - SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); + String operateTypeName = Objects.equals(disableParam.getDisable(), NumberUtils.INTEGER_ONE) ? + SalaryI18nUtil.getI18nLabel(0, "胼莎茣絅") : SalaryI18nUtil.getI18nLabel(0, "莎茣絅"); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId("" + salarySobPO.getId()); + loggerContext.setTargetName(salarySobPO.getName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(operateTypeName); + loggerContext.setOperatedesc(operateTypeName + ": " + salarySobPO.getName()); + loggerContext.setOldValues(oldSalarySobPO); + loggerContext.setNewValues(salarySobPO); + SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); } @Override @@ -621,18 +661,18 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { getSalarySobBackItemService(user).deleteBySalarySobIds(ids); // よ莎茣絅♂茹 getSalarySobCheckRuleService(user).deleteBySalarySobIds(ids); - // 莅医ュ - salarySobPOS.forEach(salarySobPO -> { - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId("" + salarySobPO.getId()); - loggerContext.setTargetName(salarySobPO.getName()); - loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "よ莎茣絅")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "よ莎茣絅")); - loggerContext.setOldValues(salarySobPO); - SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); - }); + // 莅医ュ + salarySobPOS.forEach(salarySobPO -> { + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId("" + salarySobPO.getId()); + loggerContext.setTargetName(salarySobPO.getName()); + loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "よ莎茣絅")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "よ莎茣絅")); + loggerContext.setOldValues(salarySobPO); + SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); + }); } @Override @@ -727,15 +767,15 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { if (CollectionUtils.isNotEmpty(result.getSalarySobCheckRules())) { getSalarySobCheckRuleService(user).batchSave(result.getSalarySobCheckRules()); } - // 莅医ュ - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setUser(user); - loggerContext.setTargetId("" + result.getSalarySob().getId()); - loggerContext.setTargetName(result.getSalarySob().getName()); - loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(98570, "紊区莎茣絅")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(98570, "紊区莎茣絅") + ": " + salarySobPO.getName()); - SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); + // 莅医ュ + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId("" + result.getSalarySob().getId()); + loggerContext.setTargetName(result.getSalarySob().getName()); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(98570, "紊区莎茣絅")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(98570, "紊区莎茣絅") + ": " + salarySobPO.getName()); + SalaryElogConfig.salarySobLoggerTemplate.write(loggerContext); } @Override @@ -784,6 +824,188 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { return getSalarySobMapper().listSome(SalarySobPO.builder().taxAgentIds(taxAgentIds).build()); } + @Override + public List getConfig(Long taxAgentId) { + List salarySobPOS = getSalarySobMapper().listSome(SalarySobPO.builder().taxAgentId(taxAgentId).build()); + return salarySobPOS.stream().map(salarySobPO -> { + Long salarySobId = salarySobPO.getId(); + List salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salarySobId); + List salarySobItemGroupPOS = getSalarySobItemGroupService(user).getConfig(salarySobId); + List salarySobItemPOS = getSalarySobItemService(user).getConfig(salarySobId); + List salarySobBackItemPOS = getSalarySobBackItemService(user).getConfig(salarySobId); + List salarySobAdjustRulePOS = getSalarySobAdjustRuleService(user).listBySalarySobId(salarySobId); + return SalarySobConfig.builder().salarySob(salarySobPO).salarySobEmpFields(salarySobEmpFieldPOS).salarySobItemGroups(salarySobItemGroupPOS).salarySobItems(salarySobItemPOS).salarySobBackItems(salarySobBackItemPOS).salarySobAdjustRules(salarySobAdjustRulePOS).build(); + }).collect(Collectors.toList()); + } + + @Override + public List parseConfig(Long taxAgentId, List salarySobConfigs) { + List results = new ArrayList<>(); + long uid = user.getUID(); + List salarySobPOS = listByTaxAgentId(taxAgentId); + Map sobPOMap = SalaryEntityUtil.convert2Map(salarySobPOS, SalarySobPO::getName); + + List salaryItemPOList = getSalaryItemService(user).listAll(); + Map salaryItemNameMap = SalaryEntityUtil.convert2Map(salaryItemPOList, SalaryItemPO::getName); + + Optional.ofNullable(salarySobConfigs).orElse(new ArrayList<>()).forEach(salarySobConfig -> { + SalarySobPO salarySobPO = salarySobConfig.getSalarySob(); + String sobPOName = salarySobPO.getName(); + + UploadConfigResponse.Result result = UploadConfigResponse.Result.builder() + .message(String.format("茣絅:%s榊篆≧莉遵罸", sobPOName)) + .success(new ArrayList<>()) + .warning(new ArrayList<>()) + .error(new ArrayList<>()) + .build(); + + if (sobPOMap.containsKey(sobPOName)) { + SalarySobPO oldSob = sobPOMap.get(sobPOName); + salarySobPO.setId(oldSob.getId()); + salarySobPO.setCreator(uid); + salarySobPO.setTaxAgentId(oldSob.getTaxAgentId()); + getSalarySobMapper().updateIgnoreNull(salarySobPO); + } else { + salarySobPO.setCreator(uid); + salarySobPO.setTaxAgentId(taxAgentId); + getSalarySobMapper().insertIgnoreNull(salarySobPO); + } + + result.getSuccess().add(String.format("茣絅:%s榊篆≧莉醇", sobPOName)); + + Long sobId = salarySobPO.getId(); + getSalarySobEmpFieldService(user).deleteBySalarySobIds(Collections.singletonList(sobId)); + List salarySobEmpFields = salarySobConfig.getSalarySobEmpFields(); + if (CollectionUtil.isNotEmpty(salarySobEmpFields)) { + for (SalarySobEmpFieldPO salarySobEmpField : salarySobEmpFields) { + salarySobEmpField.setSalarySobId(sobId); + salarySobEmpField.setCreator(uid); + } + getSalarySobEmpFieldService(user).batchSave(salarySobEmpFields); + } + result.getSuccess().add(String.format("茣絅:%s篋阪絖罧球莉醇", sobPOName)); + + getSalarySobItemService(user).deleteBySalarySobIds(Collections.singletonList(sobId)); + List salarySobItems = salarySobConfig.getSalarySobItems(); + if (CollectionUtil.isNotEmpty(salarySobItems)) { + salarySobItems.forEach(sobItem -> { + sobItem.setId(IdGenerator.generate()); + sobItem.setSalarySobId(sobId); + sobItem.setCreator(uid); + Long formulaId = getSalaryFormulaService(user).add(sobItem.getFormula()); + sobItem.setFormulaId(formulaId); + + SalaryItemPO salaryItem = sobItem.getSalaryItem(); + if (salaryItem != null) { + SalaryItemPO salaryItemPO = salaryItemNameMap.get(salaryItem.getName()); + if (salaryItemPO != null) { + sobItem.setSalaryItemId(salaryItemPO.getId()); + } else { + SalaryItemPO itemPO = getSalaryItemService(user).getItem(salaryItem); + if (itemPO != null) { + sobItem.setSalaryItemId(itemPO.getId()); + } else { + result.getError().add(String.format("莚鐚茣絅:%s,莎蕁合:%s,上医劫莎蕁合id", sobPOName, salaryItem.getName())); + log.error("item not found:{}", salaryItem); + } + } + } + + }); + getSalarySobItemService(user).batchSave(salarySobItems); + } + + getSalarySobItemGroupService(user).deleteBySalarySobIds(Collections.singletonList(sobId)); + List salarySobItemGroups = salarySobConfig.getSalarySobItemGroups(); + if (CollectionUtil.isNotEmpty(salarySobItemGroups)) { + for (SalarySobItemGroupPO salarySobItemGroup : salarySobItemGroups) { + long groupId = IdGenerator.generate(); + salarySobItemGroup.setId(groupId); + salarySobItemGroup.setSalarySobId(sobId); + salarySobItemGroup.setCreator(uid); + + List sobItems = salarySobItemGroup.getSalarySobItems(); + if (CollectionUtil.isNotEmpty(sobItems)) { + sobItems.forEach(sobItem -> { + sobItem.setId(IdGenerator.generate()); + sobItem.setSalarySobId(sobId); + sobItem.setSalarySobItemGroupId(groupId); + sobItem.setCreator(uid); + Long formulaId = getSalaryFormulaService(user).add(sobItem.getFormula()); + sobItem.setFormulaId(formulaId); + + SalaryItemPO salaryItem = sobItem.getSalaryItem(); + if (salaryItem != null) { + SalaryItemPO salaryItemPO = salaryItemNameMap.get(salaryItem.getName()); + if (salaryItemPO != null) { + sobItem.setSalaryItemId(salaryItemPO.getId()); + } else { + SalaryItemPO itemPO = getSalaryItemService(user).getItem(salaryItem); + if (itemPO != null) { + sobItem.setSalaryItemId(itemPO.getId()); + } else { + result.getError().add(String.format("莚鐚茣絅:%s,莎蕁合:%s,上医劫莎蕁合id", sobPOName, salaryItem.getName())); + log.error("item not found:{}", salaryItem); + } + } + } + }); + getSalarySobItemService(user).batchSave(sobItems); + } + } + getSalarySobItemGroupService(user).batchSave(salarySobItemGroups); + } + result.getSuccess().add(String.format("茣絅:%s莎蕁合莉醇", sobPOName)); + + getSalarySobBackItemService(user).deleteBySalarySobIds(Collections.singletonList(sobId)); + List salarySobBackItems = salarySobConfig.getSalarySobBackItems(); + if (CollectionUtil.isNotEmpty(salarySobBackItems)) { + for (SalarySobBackItemPO salarySobBackItem : salarySobBackItems) { + salarySobBackItem.setId(IdGenerator.generate()); + salarySobBackItem.setSalarySobId(sobId); + salarySobBackItem.setCreator(uid); + + Long formulaId = getSalaryFormulaService(user).add(salarySobBackItem.getFormula()); + salarySobBackItem.setFormulaId(formulaId); + + SalaryItemPO salaryItem = salarySobBackItem.getSalaryItem(); + if (salaryItem != null) { + SalaryItemPO salaryItemPO = salaryItemNameMap.get(salaryItem.getName()); + if (salaryItemPO != null) { + salarySobBackItem.setSalaryItemId(salaryItemPO.getId()); + } else { + SalaryItemPO itemPO = getSalaryItemService(user).getItem(salaryItem); + if (itemPO != null) { + salarySobBackItem.setSalaryItemId(itemPO.getId()); + } else { + result.getError().add(String.format("莚鐚茣絅:%s,莎蕁合:%s,上医劫莎蕁合id", sobPOName, salaryItem.getName())); + log.error("item not found:{}", salaryItem); + } + } + } + } + getSalarySobBackItemService(user).batchInsert(salarySobBackItems); + } + result.getSuccess().add(String.format("茣絅:%s膊莉醇", sobPOName)); + + getSalarySobAdjustRuleService(user).deleteBySalarySobIds(Collections.singletonList(sobId)); + List salarySobAdjustRules = salarySobConfig.getSalarySobAdjustRules(); + if (CollectionUtil.isNotEmpty(salarySobAdjustRules)) { + for (SalarySobAdjustRulePO salarySobAdjustRule : salarySobAdjustRules) { + salarySobAdjustRule.setId(IdGenerator.generate()); + salarySobAdjustRule.setSalarySobId(sobId); + salarySobAdjustRule.setCreator(uid); + } + getSalarySobAdjustRuleService(user).batchSave(salarySobAdjustRules); + } + result.getSuccess().add(String.format("茣絅:%s莪莅∴茹莉醇", sobPOName)); + + results.add(result); + }); + + return results; + } + public List filterByAdmin(List salarySobPOS) { long employeeId = user.getUID(); diff --git a/src/com/engine/salary/service/impl/SettingServiceImpl.java b/src/com/engine/salary/service/impl/SettingServiceImpl.java new file mode 100644 index 000000000..9f52b7ea8 --- /dev/null +++ b/src/com/engine/salary/service/impl/SettingServiceImpl.java @@ -0,0 +1,107 @@ +package com.engine.salary.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.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.po.PageListSettingPO; +import com.engine.salary.mapper.setting.PageListSettingMapper; +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.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import weaver.hrm.User; + +import java.util.*; +import java.util.stream.Collectors; + +import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY; + +/** + * 莎悟 + *

Copyright: Copyright (c) 2022

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ +public class SettingServiceImpl extends Service implements SettingService { + + private PageListSettingMapper getPageListSettingMapper() { + return MapperProxyFactory.getProxy(PageListSettingMapper.class); + } + + private SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + @Override + public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { + Date now = new Date(); + + PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage()); + if (pageListSettingPO != null) { + pageListSettingPO.setSetting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())); + pageListSettingPO.setUpdateTime(now); + getPageListSettingMapper().updateIgnoreNull(pageListSettingPO); + } else { + pageListSettingPO = PageListSettingPO.builder() + .id(IdGenerator.generate()) + .page(pageListSettingSaveParam.getPage()) + .setting(JsonUtil.toJsonString(pageListSettingSaveParam.getSetting())) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(DEFAULT_TENANT_KEY) + .build(); + getPageListSettingMapper().insertIgnoreNull(pageListSettingPO); + } + } + + @Override + public Map getPageListSetting(PageListSettingQueryParam param) { + String page = param.getPage(); + Map result = new HashMap(); + PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page); + if ("salary_details_report".equals(page)) { + List salaryItemList = getSalaryItemService(user).listAll(); + salaryItemList = 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); + } + }) + .collect(Collectors.toList()); + result.put("setting", salaryItemList); + if (pageListSettingPO != null && StrUtil.isNotEmpty(pageListSettingPO.getSetting())) { + result.put("checked", JsonUtil.parseList(pageListSettingPO.getSetting(), Long.class)); + } else { + List collect = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); + result.put("checked", collect); + } + } + return result; + } +} diff --git a/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java b/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java index 7c8c14e64..a8e066705 100644 --- a/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java @@ -38,7 +38,7 @@ import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelParseHelper; -import com.engine.salary.util.excel.ExcelSupport; +import com.engine.salary.util.excel.ExcelPreviewDTO; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; @@ -46,7 +46,6 @@ import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; -import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.file.ImageFileManager; @@ -157,8 +156,7 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd @Override - public Map preview(SpecialAddDeductionImportParam importParam) { - Map apidatas = new HashMap(); + public ExcelPreviewDTO preview(SpecialAddDeductionImportParam importParam) { //excel篁id String imageId = Util.null2String(importParam.getImageId()); @@ -167,10 +165,7 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd InputStream fileInputStream = null; try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); - Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); - apidatas.put("headers", ExcelSupport.getSheetHeader(sheet, 0)); - apidatas.put("list", ExcelParseHelper.parse2List(sheet, 1, 0)); - return apidatas; + return ExcelParseHelper.preview(fileInputStream, 0, EXCEL_TYPE_XLSX); } finally { IOUtils.closeQuietly(fileInputStream); } @@ -249,7 +244,7 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd //膈絲弱ヤ査篆≧篁ュ篋阪莎羣羆筝拷亥篋阪篆≧ List emps = getSalaryEmployeeService(user) - .matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo,null); + .matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); //胼肢鐚井 if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { employeeSameIds = emps.stream() diff --git a/src/com/engine/salary/service/impl/TaxAgentBaseServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentBaseServiceImpl.java index d31a2a6de..9294c5b9d 100644 --- a/src/com/engine/salary/service/impl/TaxAgentBaseServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentBaseServiceImpl.java @@ -13,6 +13,7 @@ import com.engine.salary.mapper.taxagent.TaxAgentBaseMapper; import com.engine.salary.service.SIAccountService; import com.engine.salary.service.SalaryAcctRecordService; import com.engine.salary.service.TaxAgentBaseService; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.db.IdGenerator; @@ -20,6 +21,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import weaver.hrm.User; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -95,6 +97,42 @@ public class TaxAgentBaseServiceImpl extends Service implements TaxAgentBaseServ return StringUtils.EMPTY; } + @Override + public TaxAgentBasePO getConfig() { + Date now = new Date(); + TaxAgentBasePO baseInfo = getBaseInfo(); + if (baseInfo == null) { + baseInfo = TaxAgentBasePO.builder() + .id(IdGenerator.generate()) + .devolutionStatus(0) + .createTime(now) + .updateTime(now) + .creator((long) user.getUID()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + } + return baseInfo; + } + + @Override + public UploadConfigResponse.Result parseConfig(TaxAgentBasePO config) { + UploadConfigResponse.Result result = UploadConfigResponse.Result.builder().message("臀莉遵罸") + .success(new ArrayList<>()) + .warning(new ArrayList<>()) + .error(new ArrayList<>()) + .build(); + TaxAgentBasePO baseInfo = getBaseInfo(); + if (baseInfo == null) { + config.setCreator((long) user.getUID()); + getTaxAgentBaseMapper().insertIgnoreNull(config); + } else { + baseInfo.setDevolutionStatus(config.getDevolutionStatus()); + getTaxAgentBaseMapper().updateIgnoreNull(baseInfo); + } + result.getSuccess().add("莉遵罸鐚" + (config.getDevolutionStatus() == 1 ? "綣" : "渇 ")); + return result; + } + /** * 罍ユ綵罅f井 * diff --git a/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java index c595c9139..4c7796174 100644 --- a/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java @@ -154,7 +154,7 @@ public class TaxAgentEmpServiceImpl extends Service implements TaxAgentEmpServic // 活茵==================================================== // 医 if (CollectionUtils.isNotEmpty(taxAgentEmployeeAddList)) { - List> partition = Lists.partition(taxAgentEmployeeAddList, 100); + List> partition = Lists.partition(taxAgentEmployeeAddList, 50); partition.forEach(getTaxAgentEmpMapper()::batchInsert); } // @@ -250,7 +250,7 @@ public class TaxAgentEmpServiceImpl extends Service implements TaxAgentEmpServic // 活茵==================================================== // 医 if (CollectionUtils.isNotEmpty(taxAgentEmployeeAddList)) { - List> partition = Lists.partition(taxAgentEmployeeAddList, 100); + List> partition = Lists.partition(taxAgentEmployeeAddList, 50); partition.forEach(getTaxAgentEmpMapper()::batchInsert); } // diff --git a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java index 5d17168b5..b21ece557 100644 --- a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java @@ -48,6 +48,7 @@ import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.util.IOUtils; import org.springframework.beans.BeanUtils; +import weaver.conn.RecordSet; import weaver.file.ImageFileManager; import weaver.general.Util; import weaver.hrm.User; @@ -177,57 +178,77 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM return Collections.emptyList(); } // キ筝篋阪篆≧ - List virtualDepartmentIds = taxAgentManageRanges.stream().filter(manageRange -> manageRange.getTargetType().equals(TargetTypeEnum.DEPT.getValue()) && manageRange.getTargetId().compareTo(0L) < 0) - .map(TaxAgentManageRangePO::getTargetId).collect(Collectors.toList()); + List virtualDepartmentIds = taxAgentManageRanges.stream().filter(manageRange -> manageRange.getTargetType().equals(TargetTypeEnum.DEPT.getValue()) && manageRange.getTargetId().compareTo(0L) < 0).map(TaxAgentManageRangePO::getTargetId).collect(Collectors.toList()); List virtualEmpListByDep = getSalaryEmployeeService(user).getVirtualEmpByVirtualDepIds(virtualDepartmentIds); Map> virtualDepMap = SalaryEntityUtil.group2Map(virtualEmpListByDep, DataCollectionEmployee::getDepartmentId, DataCollectionEmployee::getEmployeeId); // キ筝篋阪篆≧ - List virtualSubCompanyIds = taxAgentManageRanges.stream().filter(manageRange -> manageRange.getTargetType().equals(TargetTypeEnum.SUBCOMPANY.getValue()) && manageRange.getTargetId().compareTo(0L) < 0) - .map(TaxAgentManageRangePO::getTargetId).collect(Collectors.toList()); + List virtualSubCompanyIds = taxAgentManageRanges.stream().filter(manageRange -> manageRange.getTargetType().equals(TargetTypeEnum.SUBCOMPANY.getValue()) && manageRange.getTargetId().compareTo(0L) < 0).map(TaxAgentManageRangePO::getTargetId).collect(Collectors.toList()); List virtualEmpListBySubCom = getSalaryEmployeeService(user).getVirtualEmpByVirtualSubCompanyIds(virtualSubCompanyIds); Map> virtualSubCompanyMap = SalaryEntityUtil.group2Map(virtualEmpListBySubCom, DataCollectionEmployee::getSubcompanyid, DataCollectionEmployee::getEmployeeId); List salaryEmployeeList = Lists.newArrayList(); for (TaxAgentManageRangePO manageRange : taxAgentManageRanges) { - boolean isVirtual = manageRange.getTargetId().compareTo(0L) < 0 ? true : false; - salaryEmployeeList.addAll(salaryEmployees.stream().filter(salaryEmployee -> { - if (StringUtils.isEmpty(manageRange.getEmployeeStatus()) || !manageRange.getEmployeeStatus().contains("\"" + salaryEmployee.getStatus() + "\"")) { + if (!TargetTypeEnum.SQL.getValue().equals(manageRange.getTargetType())) { + boolean isVirtual = manageRange.getTargetId().compareTo(0L) < 0 ? true : false; + List employees = salaryEmployees.stream().filter(salaryEmployee -> { + if (StringUtils.isEmpty(manageRange.getEmployeeStatus()) || !manageRange.getEmployeeStatus().contains("\"" + salaryEmployee.getStatus() + "\"")) { + return false; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.ALL.getValue())) { + return true; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.EMPLOYEE.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getEmployeeId())) { + return true; + } + if (isVirtual) { + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.DEPT.getValue())) { + Set empIds = virtualDepMap.get(manageRange.getTargetId()); + if (CollectionUtils.isNotEmpty(empIds) && empIds.contains(salaryEmployee.getEmployeeId())) { + return true; + } + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue())) { + Set empIds = virtualSubCompanyMap.get(manageRange.getTargetId()); + if (CollectionUtils.isNotEmpty(empIds) && empIds.contains(salaryEmployee.getEmployeeId())) { + return true; + } + } + } else { + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.DEPT.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getDepartmentId())) { + return true; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getSubcompanyid())) { + return true; + } + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.POSITION.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getJobtitleId())) { + return true; + } return false; - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.ALL.getValue())) { - return true; - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.EMPLOYEE.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getEmployeeId())) { - return true; - } - if (isVirtual) { - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.DEPT.getValue())) { - Set empIds = virtualDepMap.get(manageRange.getTargetId()); - if (CollectionUtils.isNotEmpty(empIds) && empIds.contains(salaryEmployee.getEmployeeId())) { - return true; - } - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue())) { - Set empIds = virtualSubCompanyMap.get(manageRange.getTargetId()); - if (CollectionUtils.isNotEmpty(empIds) && empIds.contains(salaryEmployee.getEmployeeId())) { - return true; - } - } - } else { - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.DEPT.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getDepartmentId())) { - return true; - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getSubcompanyid())) { - return true; - } - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.POSITION.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getJobtitleId())) { - return true; - } - return false; - }).collect(Collectors.toList())); + }).collect(Collectors.toList()); + salaryEmployeeList.addAll(employees); + } } + + for (TaxAgentManageRangePO manageRange : taxAgentManageRanges) { + if (TargetTypeEnum.SQL.getValue().equals(manageRange.getTargetType())) { + String sql = manageRange.getTarget(); + List empIds = new ArrayList<>(); + RecordSet rs = new RecordSet(); + if (rs.execute(sql)) { + while (rs.next()) { + empIds.add((long) rs.getInt("id")); + } + } + List employees = getSalaryEmployeeService(user).getEmployeeByIds(empIds); + if (StringUtils.isNotBlank(manageRange.getEmployeeStatus())) { + employees = employees.stream().filter(salaryEmployee -> manageRange.getEmployeeStatus().contains("\"" + salaryEmployee.getStatus() + "\"")).collect(Collectors.toList()); + } + salaryEmployeeList.addAll(employees); + } + } + // サ salaryEmployeeList = salaryEmployeeList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DataCollectionEmployee::getEmployeeId))), ArrayList::new)); return salaryEmployeeList; @@ -338,13 +359,19 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM if (target.getTargetType() == null) { throw new SalaryRunTimeException("絲壕院膠糸筝巡減腥"); } - if (target.getTargetId() == null) { - throw new SalaryRunTimeException("絲壕院筝巡減腥"); + if (target.getTargetType() == TargetTypeEnum.SQL) { + if (target.getTarget() == null) { + throw new SalaryRunTimeException("sql筝巡減腥"); + } + target.setTargetId(0L); + } else { + if (target.getTargetId() == null) { + throw new SalaryRunTimeException("絲壕院筝巡減腥"); + } } }); } - // ヨ≫肩腮g軸箙>査 TaxAgentPO taxAgent = getTaxAgentService(user).getById(saveParam.getTaxAgentId()); if (Objects.isNull(taxAgent)) { @@ -379,13 +406,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM getTaxAgentManageRangeMapper().insertIgnoreNull(range); // 莅医篏ュ String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "医篋阪"), - SalaryI18nUtil.getI18nLabel(0, "医篋阪") + name, - range, - user); + SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "医篋阪"), SalaryI18nUtil.getI18nLabel(0, "医篋阪") + name, range, user); }); } @@ -396,14 +417,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // 莅医篏ュ TaxAgentManageRangePO oldPO = oldMap.getOrDefault(range.getId(), TaxAgentManageRangePO.builder().build()); String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordUpdateSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "贋遺査"), - SalaryI18nUtil.getI18nLabel(0, "贋遺査") + name, - oldPO, - range, - user); + SalaryLoggerUtil.recordUpdateSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "贋遺査"), SalaryI18nUtil.getI18nLabel(0, "贋遺査") + name, oldPO, range, user); }); } @@ -439,7 +453,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM //綣紮罩ヤ賢.... Util_DataCache.setObjVal("salaryArchiveChangeSign", "1"); getSalaryArchiveService(user).handleChangeData(1L); - }finally { + } finally { //罩ョ.... Util_DataCache.setObjVal("salaryArchiveChangeSign", "0"); } @@ -486,28 +500,12 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM List oldPO = listAllExtBytaxAgentId(taxAgentId); List oldIds = SalaryEntityUtil.properties(oldPO, TaxAgentExtRangePO::getTargetId, Collectors.toList()); targetIds.stream().filter(targetId -> !oldIds.contains(targetId)).forEach(targetId -> { - TaxAgentExtRangePO po = TaxAgentExtRangePO.builder() - .id(IdGenerator.generate()) - .taxAgentId(taxAgentId) - .targetId(targetId) - .creator((long) user.getUID()) - .createTime(now) - .updateTime(now) - .deleteType(0) - .targetType(1) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); + TaxAgentExtRangePO po = TaxAgentExtRangePO.builder().id(IdGenerator.generate()).taxAgentId(taxAgentId).targetId(targetId).creator((long) user.getUID()).createTime(now).updateTime(now).deleteType(0).targetType(1).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build(); getTaxAgentExtRangeMapper().insertIgnoreNull(po); // 莅医ュ String name = taxAgent.getName() + "_" + saveParam.getTaxAgentId(); - SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - taxAgent.getId(), - name, - SalaryI18nUtil.getI18nLabel(0, "医膤紫篋阪"), - SalaryI18nUtil.getI18nLabel(0, "医膤紫篋阪") + name, - po, - user); + SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, taxAgent.getId(), name, SalaryI18nUtil.getI18nLabel(0, "医膤紫篋阪"), SalaryI18nUtil.getI18nLabel(0, "医膤紫篋阪") + name, po, user); }); List oldEmpList = getExtEmpService(user).getEmployeeByIds(oldIds); employees.addAll(oldEmpList); @@ -556,13 +554,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // ょ∞ getTaxAgentExtRangeMapper().deleteByIds(ids); // 莅医ュ - SalaryLoggerUtil.recordDeleteSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - taxAgentManageRanges.get(0).getTaxAgentId(), - ids.toString(), - SalaryI18nUtil.getI18nLabel(0, "ら膤紫篋阪"), - SalaryI18nUtil.getI18nLabel(0, "ら膤紫篋阪") + ids.toString(), - null, - user); + SalaryLoggerUtil.recordDeleteSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, taxAgentManageRanges.get(0).getTaxAgentId(), ids.toString(), SalaryI18nUtil.getI18nLabel(0, "ら膤紫篋阪"), SalaryI18nUtil.getI18nLabel(0, "ら膤紫篋阪") + ids.toString(), null, user); } private void syncLocalExtEmp(Long taxAgentId, List allSalaryEmployees) { @@ -648,13 +640,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // 莅医篏ュ taxAgentManageRangeList.stream().forEach(range -> { String name = taxAgentPO.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordDeleteSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "や査"), - SalaryI18nUtil.getI18nLabel(0, "や査") + name, - range, - user); + SalaryLoggerUtil.recordDeleteSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "や査"), SalaryI18nUtil.getI18nLabel(0, "や査") + name, range, user); }); @@ -669,7 +655,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM } List taxAgentExtRangePOS = getTaxAgentExtRangeMapper().list(TaxAgentExtRangePO.builder().taxAgentId(param.getTaxAgentId()).build()); - if(StringUtils.isNotBlank(param.getTargetName())) { + if (StringUtils.isNotBlank(param.getTargetName())) { taxAgentExtRangePOS = taxAgentExtRangePOS.stream().filter(po -> po.getTargetName().contains(param.getTargetName())).collect(Collectors.toList()); } return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), taxAgentExtRangePOS, TaxAgentExtRangePO.class); @@ -873,25 +859,17 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM List employeeSameIds = new ArrayList<>(); //膈絲弱ヤ査篆≧篁ュ篋阪莎羣羆筝拷亥篋阪篆≧ - List emps = getSalaryEmployeeService() - .matchImportEmployee(confValue,employees, userName, deparmentName, mobile, workcode,idNo, null); + List emps = getSalaryEmployeeService().matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); if (CollectionUtils.isNotEmpty(emps)) { - employeeSameIds = emps.stream() - .map(DataCollectionEmployee::getEmployeeId) - .collect(Collectors.toList()); + employeeSameIds = emps.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); } //胼肢鐚井 if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { - employeeSameIds = emps.stream() - .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) - .map(DataCollectionEmployee::getEmployeeId) - .collect(Collectors.toList()); + employeeSameIds = emps.stream().filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())).map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); } if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { - employeeSameIds = emps.stream() - .map(DataCollectionEmployee::getEmployeeId) - .collect(Collectors.toList()); + employeeSameIds = emps.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); } //綵篋阪篆≧絲弱ョ絮臀筝"0"駈紮綽紂蕁 @@ -980,7 +958,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // サ allRanges = allRanges.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getTaxAgentId() + "." + f.getRangeType() + "." + f.getTargetType() + "." + f.getTargetId() + "." + f.getEmployeeStatus() + "." + f.getIncludeType()))), ArrayList::new)); - List salaryEmployees = getSalaryEmployeeService().listAll(UseEmployeeTypeEnum.ALL); + List salaryEmployees = getSalaryEmployeeService().listAll(UseEmployeeTypeEnum.ALL); List allSalaryEmployees = this.getManageRangeSalaryEmployees(taxAgentId, allRanges, salaryEmployees); /* 罍ュ筝腮g軸箙>査篋阪岩膊∞膊∞===========================end */ @@ -989,13 +967,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM getTaxAgentManageRangeMapper().insertIgnoreNull(range); // 莅医篏ュ String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "医篋阪"), - SalaryI18nUtil.getI18nLabel(0, "医篋阪") + name, - range, - user); + SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "医篋阪"), SalaryI18nUtil.getI18nLabel(0, "医篋阪") + name, range, user); }); } if (CollectionUtils.isNotEmpty(result.getNeedUpdateTaxAgentManageRanges())) { @@ -1005,14 +977,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // 莅医篏ュ TaxAgentManageRangePO oldPO = oldMap.getOrDefault(range.getId(), TaxAgentManageRangePO.builder().build()); String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordUpdateSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "贋遺査"), - SalaryI18nUtil.getI18nLabel(0, "贋遺査") + name, - oldPO, - range, - user); + SalaryLoggerUtil.recordUpdateSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "贋遺査"), SalaryI18nUtil.getI18nLabel(0, "贋遺査") + name, oldPO, range, user); }); } diff --git a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java index d11776cf6..dda204378 100644 --- a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java @@ -4,20 +4,22 @@ import com.engine.common.service.HrmCommonService; import com.engine.common.service.impl.HrmCommonServiceImpl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryAuthConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import com.engine.salary.entity.salarysob.config.SalarySobConfig; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.siaccount.param.InsuranceAccountBatchParam; import com.engine.salary.entity.siaccount.po.InsuranceAccountBatchPO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesBaseInfoPO; import com.engine.salary.entity.taxagent.bo.TaxAgentBO; +import com.engine.salary.entity.taxagent.config.TaxAgentConfig; import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeTaxAgentDTO; import com.engine.salary.entity.taxagent.dto.TaxAgentListDTO; @@ -41,6 +43,7 @@ import com.engine.salary.mapper.siaccount.InsuranceAccountBatchMapper; import com.engine.salary.mapper.siarchives.InsuranceBaseInfoMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.*; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; @@ -90,6 +93,11 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { } + private SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); } @@ -497,7 +505,7 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { getTaxAgentMapper().deleteByIds(ids); // 莅医ュ - taxAgents.forEach(e ->{ + taxAgents.forEach(e -> { LoggerContext loggerContext = new LoggerContext<>(); loggerContext.setUser(user); loggerContext.setTargetId(e.getId().toString()); @@ -526,12 +534,12 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { } // 茴腓鞘胼罅f綣 List socialByPaymentOrganization = getInsuranceBaseInfoMapper().getSocialByPaymentOrganization(id); - if(CollectionUtils.isNotEmpty(socialByPaymentOrganization)){ + if (CollectionUtils.isNotEmpty(socialByPaymentOrganization)) { throw new SalaryRunTimeException("絖腓鞘胼罅f綣"); } // 茴腓鞘胼佈侃綣 List insuranceArchiveList = getInsuranceAccountBatchMapper().list(InsuranceAccountBatchParam.builder().taxAgents(Collections.singletonList(id)).build()); - if(CollectionUtils.isNotEmpty(insuranceArchiveList)){ + if (CollectionUtils.isNotEmpty(insuranceArchiveList)) { throw new SalaryRunTimeException("絖腓鞘胼佈侃綣"); } //茴腓鞘胼罅f綣 @@ -866,14 +874,63 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { } - @Override public Collection listEmployeeIdsInTaxAgent(Long taxAgentId) { - List taxAgentEmpPOS = getTaxAgentEmpService(user).listByTaxAgentIds(Collections.singletonList(taxAgentId),UseEmployeeTypeEnum.ALL); + List taxAgentEmpPOS = getTaxAgentEmpService(user).listByTaxAgentIds(Collections.singletonList(taxAgentId), UseEmployeeTypeEnum.ALL); return SalaryEntityUtil.properties(taxAgentEmpPOS, TaxAgentEmpPO::getEmployeeId); } + @Override + public List getConfig() { + List taxAgentPOS = getTaxAgentMapper().listAll(); + return taxAgentPOS.stream() + .map(taxAgentPO -> { + List sobConfigs = getSalarySobService(user).getConfig(taxAgentPO.getId()); + return TaxAgentConfig.builder().taxAgent(taxAgentPO).salarySobConfigs(sobConfigs).build(); + }) + .collect(Collectors.toList()); + } + + @Override + public List parseConfig(List configs) { + List results = new ArrayList<>(); + + List taxAgentPOS = listAll(); + Map agentPOMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getName); + + Optional.ofNullable(configs) + .orElse(new ArrayList<>()) + .forEach(config -> { + TaxAgentPO taxAgent = config.getTaxAgent(); + String name = taxAgent.getName(); + + UploadConfigResponse.Result taxResult = UploadConfigResponse.Result.builder() + .message(String.format("g軸箙>査%s莉遵罸", name)) + .success(new ArrayList<>()) + .warning(new ArrayList<>()) + .error(new ArrayList<>()) + .build(); + + if (agentPOMap.containsKey(name)) { + //絖g軸箙>査 + taxAgent = agentPOMap.get(name); + } else { + //医g軸箙>査 + taxAgent.setCreator((long) user.getUID()); + getTaxAgentMapper().insertIgnoreNull(taxAgent); + } + taxResult.getSuccess().add(String.format("%s莉醇", name)); + results.add(taxResult); + + List sobResults = getSalarySobService(user).parseConfig(taxAgent.getId(), config.getSalarySobConfigs()); + results.addAll(sobResults); + + }); + return results; + } + + @Override public List listTaxAgentWithoutSocialAdmin() { return getTaxAgentMapper().listTaxAgentWithoutSocialAdmin(); diff --git a/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java new file mode 100644 index 000000000..b7aff7cae --- /dev/null +++ b/src/com/engine/salary/service/impl/VariableArchiveItemServiceImpl.java @@ -0,0 +1,87 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.encrypt.EncryptUtil; +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import com.engine.salary.mapper.datacollection.VariableArchiveItemMapper; +import com.engine.salary.service.VariableArchiveItemService; +import com.engine.salary.util.db.MapperProxyFactory; +import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Collections; +import java.util.List; + +/** + * @author Harryxzy + * @ClassName VariableArchiveItemServiceImpl + * @date 2024/08/07 9:29 + * @description 羌罅f膸 + */ +public class VariableArchiveItemServiceImpl extends Service implements VariableArchiveItemService { + private EncryptUtil encryptUtil = new EncryptUtil(); + + private VariableArchiveItemMapper getVariableArchiveItemMapper(){ + return MapperProxyFactory.getProxy(VariableArchiveItemMapper.class); + } + + @Override + public List listAll() { + return getVariableArchiveItemMapper().listAll(); + } + + /** + * 号羌莎罅fidキ + * + * @param variableArchiveIds + * @return + */ + @Override + public List listByVariableArchiveIds(List variableArchiveIds) { + if (CollectionUtils.isEmpty(variableArchiveIds)) { + return Collections.emptyList(); + } + List variableArchiveItemPOS = getVariableArchiveItemMapper().listSome(VariableArchiveItemPO.builder().variableArchiveIds(variableArchiveIds).build()); + return encryptUtil.decryptList(variableArchiveItemPOS, VariableArchiveItemPO.class); + } + + /** + * ヨ∽貴罅f筝綏俄戎羌莎蕁合 + * + * @return + */ + @Override + public List listUsingItems() { + return getVariableArchiveItemMapper().listUsingItems(); + } + + @Override + public int batchInsert(List insertList) { + if (CollectionUtils.isEmpty(insertList)) { + return 0; + } + encryptUtil.encryptList(insertList, VariableArchiveItemPO.class); + List> partition = Lists.partition(insertList, 50); + partition.forEach(part -> getVariableArchiveItemMapper().batchInsert(part)); + return 0; + } + + @Override + public void deleteByArchiveIds(List variableArchiveIds) { + if (CollectionUtils.isEmpty(variableArchiveIds)) { + return; + } + List> partition = Lists.partition(variableArchiveIds, 500); + partition.forEach(part -> getVariableArchiveItemMapper().deleteByArchiveIds(part)); + } + + @Override + public void deleteByIds(List variableArchiveItemIds) { + if (CollectionUtils.isEmpty(variableArchiveItemIds)) { + return; + } + List> partition = Lists.partition(variableArchiveItemIds, 500); + partition.forEach(part -> getVariableArchiveItemMapper().deleteByIds(part)); + + } +} diff --git a/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java new file mode 100644 index 000000000..82b727009 --- /dev/null +++ b/src/com/engine/salary/service/impl/VariableArchiveServiceImpl.java @@ -0,0 +1,637 @@ +package com.engine.salary.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.constant.SalaryItemConstant; +import com.engine.salary.entity.datacollection.bo.VariableArchiveBO; +import com.engine.salary.entity.datacollection.bo.VariableArchiveExcelBO; +import com.engine.salary.entity.datacollection.dto.VariableArchiveListDTO; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveSaveParam; +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; +import com.engine.salary.entity.datacollection.po.VariableArchivePO; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +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.exception.SalaryRunTimeException; +import com.engine.salary.mapper.datacollection.VariableArchiveMapper; +import com.engine.salary.service.*; +import com.engine.salary.sys.entity.vo.OrderRuleVO; +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.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.excel.*; +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 com.google.common.collect.Maps; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.util.IOUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.file.ImageFileManager; +import weaver.general.Util; +import weaver.hrm.User; + +import java.io.InputStream; +import java.time.YearMonth; +import java.util.*; +import java.util.stream.Collectors; + +import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX; + +/** + * @author Harryxzy + * @ClassName VariableArchiveServiceImpl + * @date 2024/08/06 17:40 + * @description 羌罅f + */ +public class VariableArchiveServiceImpl extends Service implements VariableArchiveService { + + private VariableArchiveMapper getVariableArchiveMapper() { + return MapperProxyFactory.getProxy(VariableArchiveMapper.class); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + public SalarySysConfService getSalarySysConfService(User user) { + return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); + } + + private VariableArchiveItemService getVariableArchiveItemService(User user) { + return ServiceUtil.getService(VariableArchiveItemServiceImpl.class, user); + } + + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return (SalaryEmployeeService) ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + + private int deleteByIds(List deleteIds) { + if (CollectionUtils.isEmpty(deleteIds)) { + return 0; + } + return getVariableArchiveMapper().deleteByIds(deleteIds); + } + + /** + * 羌罅f茵 + * + * @param queryParam + * @return + */ + @Override + public PageInfo listPage(VariableArchiveQueryParam queryParam) { + List variableArchiveList = list(queryParam); + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), variableArchiveList, VariableArchiveListDTO.class); + } + + @Override + public List list(VariableArchiveQueryParam queryParam) { + ValidUtil.doValidator(queryParam); + Long employeeId = Long.valueOf(user.getUID()); + // ゆ紫∞ + Boolean isChief = getTaxAgentService(user).isChief(employeeId); + // 綣 + Boolean openDevolution = getTaxAgentService(user).isOpenDevolution(); + if (BooleanUtils.isTrue(openDevolution) && !isChief) { + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(employeeId); + List taxAgentIds = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(taxAgentIds)) { + // + return Collections.emptyList(); + } + if (CollectionUtils.isNotEmpty(queryParam.getTaxAgentIds())) { + taxAgentIds = taxAgentIds.stream().filter(queryParam.getTaxAgentIds()::contains).collect(Collectors.toList()); + } + queryParam.setTaxAgentIds(taxAgentIds); + } + + // 羌罅f茵 + if (Objects.nonNull(queryParam.getSalaryMonth())) { + queryParam.setSalaryMonthDate(SalaryDateUtil.dateStrToLocalYearMonth(queryParam.getSalaryMonth())); + } + //綺臀 + OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); + queryParam.setOrderRule(orderRule); + return listDTO(queryParam); + } + + public List listDTO(VariableArchiveQueryParam queryParam) { + List list = getVariableArchiveMapper().list(queryParam); + SalaryI18nUtil.i18nList(list); + return list; + } + + /** + * 綮堺貴莎罅f井 + * + * @param variableArchives + * @return + */ + @Override + public List> buildVariableArchiveData(List variableArchives) { + List variableArchiveIds = variableArchives.stream().map(VariableArchiveListDTO::getId).collect(Collectors.toList()); + // キ羌莎罅f絲劫羌莎蕁合井 + List variableArchiveItemList = getVariableArchiveItemService(user).listByVariableArchiveIds(variableArchiveIds); + Map> variableArchiveItemMap = SalaryEntityUtil.group2Map(variableArchiveItemList, VariableArchiveItemPO::getVariableArchiveId); + List> variableArchiveItemData = variableArchives.stream().map(m -> { + Map map = Maps.newHashMap(); + map.put("variableArchiveId", m.getId()); + List variableArchiveItemValuelList = variableArchiveItemMap.getOrDefault(m.getId(), Collections.emptyList()); + variableArchiveItemValuelList.forEach(i -> { + map.put(i.getVariableItemId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX, i.getItemValue()); + }); + return map; + }).collect(Collectors.toList()); + + + // 膸茖井 + List> listMaps = new ArrayList<>(); + variableArchives.forEach(e -> { + Map map = new LinkedHashMap<>(); + map.put("id", e.getId()); + map.put("taxAgentName", e.getTaxAgentName()); + map.put("taxAgentIds", e.getTaxAgentId()); + map.put("username", e.getUsername()); + map.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(e.getSalaryMonth())); + map.put("employeeId", e.getEmployeeId()); + map.put("subcompanyName", e.getSubcompanyName()); + map.put("departmentName", e.getDepartmentName()); + map.put("mobile", e.getMobile()); + map.put("workcode", e.getWorkcode()); + map.put("idNo", e.getIdNo()); + map.put("companystartdate", e.getCompanystartdate()); + map.put("dismissdate", e.getDismissdate()); + + // 羌莎蕁合 + Optional> optionalItem = variableArchiveItemData.stream().filter(f -> f.get("variableArchiveId").toString().equals(e.getId().toString())).findFirst(); + optionalItem.ifPresent(map::putAll); + + listMaps.add(map); + }); + return listMaps; + } + + /** + * 綮堺貴罅f + * + * @param saveParam + */ + @Override + public void createData(VariableArchiveSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + saveParam.setSalaryMonthDate(SalaryDateUtil.dateStrToLocalYearMonth(saveParam.getSalaryMonth())); + + List variableArchivePOList = getVariableArchiveMapper().listSome(VariableArchivePO.builder().salaryMonth(saveParam.getSalaryMonthDate()).taxAgentId(saveParam.getTaxAgentIds()).employeeId(saveParam.getEmployeeId()).build()); + if (CollectionUtils.isNotEmpty(variableArchivePOList)) { + throw new SalaryRunTimeException("綏峨羌井"); + } + + // 篆絖羌莎罅f篆≧ + Date now = new Date(); + VariableArchivePO variableArchivePO = VariableArchivePO.builder() + .id(IdGenerator.generate()) + .employeeId(saveParam.getEmployeeId()) + .taxAgentId(saveParam.getTaxAgentIds()) + .salaryMonth(saveParam.getSalaryMonthDate()) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + getVariableArchiveMapper().insertIgnoreNull(variableArchivePO); + + // 篆絖羌莎罅f莚膸篆≧ + List variableArchiveItemList = new ArrayList<>(); + if(CollectionUtil.isNotEmpty(saveParam.getItemValueList())){ + saveParam.getItemValueList().forEach(e -> { + variableArchiveItemList.add(VariableArchiveItemPO.builder() + .id(IdGenerator.generate()) + .employeeId(saveParam.getEmployeeId()) + .variableArchiveId(variableArchivePO.getId()) + .variableItemId(e.getVariableItemId()) + .itemValue(e.getItemValue()) + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + }); + } + + if (CollectionUtils.isNotEmpty(variableArchiveItemList)) { + getVariableArchiveItemService(user).batchInsert(variableArchiveItemList); + } + } + + /** + * 羌莎罅f膸 + * + * @param queryParam + * @return + */ + @Override + public Map getDetail(VariableArchiveQueryParam queryParam) { + if (queryParam.getId() == null) { + return Collections.emptyMap(); + } + + List variableArchiveList = listDTO(queryParam); + + // キ羌蕁合 + List variableItems = getVariableItemService(user).listAll(); + + //翫丞ず鐚阪+莎蕁合鐚 + List> listMaps = buildVariableArchiveData(variableArchiveList); + Map resultMap = listMaps.get(0); + + //膸茖 + 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); + return datas; + } + + @Override + public List getCreateForm() { + List variableItemPOS = getVariableItemService(user).listAll(); + List variableItemDTOList = variableItemPOS.stream() + .map(po -> VariableItemListDTO.builder() + .id(po.getId()) + .name(po.getName()) + .build()) + .collect(Collectors.toList()); + return variableItemDTOList; + } + + @Override + public XSSFWorkbook downloadTemplate(VariableArchiveQueryParam param) { + // 腱 + String nameI18n = SalaryI18nUtil.getI18nLabel(0, "羌絲弱ユ─"); + + // キ茴綣莎蕁合 + List variableItems = getVariableItemService(user).listAll(); + List header = Lists.newArrayList(); + header.add(SalaryI18nUtil.getI18nLabel(0, "筝腮g軸箙>査")); + header.add(SalaryI18nUtil.getI18nLabel(85429, "紮")); + header.add(SalaryI18nUtil.getI18nLabel(86185, "")); + header.add(SalaryI18nUtil.getI18nLabel(86186, "阪")); + header.add(SalaryI18nUtil.getI18nLabel(1933, "綏ュ")); + header.add(SalaryI18nUtil.getI18nLabel(86186, "莚篁九埇")); + header.add(SalaryI18nUtil.getI18nLabel(86187, "ヨユ")); + for (VariableItemPO variableItem : variableItems) { + header.add(variableItem.getName()); + } + + // 2.茵紊 + List> rows = new ArrayList<>(); + rows.add(header); + // キ罅f篆≧ + List variableArchiveList = list(param); + + if (param.isHasData()) { + List> listMaps = buildVariableArchiveData(variableArchiveList); + // 膸茖井 + listMaps.forEach(e -> { + List row = new ArrayList<>(); + row.add(e.get("taxAgentName").toString()); + row.add(e.get("username").toString()); + row.add(Optional.ofNullable(e.get("departmentName")).orElse("").toString()); + row.add(e.get("mobile") == null ? "" : e.get("mobile").toString()); + row.add(Optional.ofNullable(e.get("workcode")).orElse("").toString()); + row.add(Util.null2String(e.get("idNo"))); + row.add(Util.null2String(e.get("companystartdate"))); + + // 莎蕁合井 + for (VariableItemPO variableItem : variableItems) { + row.add(e.containsKey(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX) ? (e.get(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX) == null ? "" + : e.get(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX).toString()) : ""); + } + rows.add(row); + }); + } + + + // 4.羈 + List excelComments = Lists.newArrayList(); + + return ExcelUtilPlus.genWorkbookV2(rows, nameI18n, excelComments); + } + + @Override + public ExcelPreviewDTO preview(VariableArchiveImportHandleParam importParam) { + + //excel篁id + String imageId = Util.null2String(importParam.getImageId()); + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + return ExcelParseHelper.preview(fileInputStream, 0, EXCEL_TYPE_XLSX); + } finally { + IOUtils.closeQuietly(fileInputStream); + } + } + + @Override + public Map importData(VariableArchiveImportHandleParam importParam) { + // 紮初膈 + VariableArchiveExcelBO.initI18n(); + // ♂ + checkImportParam(importParam); + String imageId = importParam.getImageId(); + // 綮阪弱ュ + importParam = buildImportHandleParam(importParam); + // 絲弱ユ紊 + List allTodoVariableArchives = Lists.newArrayList(); + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); + Workbook workbook = ExcelSupport.parseFile(fileInputStream, EXCEL_TYPE_XLSX); + Sheet sheet = workbook.getSheetAt(0); + List headers = ExcelSupport.getSheetHeader(sheet, 0); + + int total = 0; + //excel井 + List> data = ExcelParseHelper.parse2Map(workbook, 0, 1); + if (data != null) { + total += data.size(); + } + + int index = 0; + int successCount = 0; + int errorCount = 0; + // 篋鐚紮絲弱ワ後employeeId句紊 + List initImportData = Lists.newArrayList(); + + + // 莚腓 + List> excelComments = new ArrayList<>(); + // 莚sheet井 + List> errorData = new ArrayList<>(); + + Map map; + for (int i = 0; i < data.size(); i++) { + index += 1; + map = data.get(i); + map.put("index", i + 2); + // 3.♂茵絎 + boolean isError = VariableArchiveExcelBO.singleRowCheck(allTodoVariableArchives, map, headers, excelComments, errorCount, importParam, user); + if (isError) { + errorCount += 1; + // 羞糸莚井 + errorData.add(map); + } else { + successCount += 1; + } + } + + // 4.井ュ紊 + handleImportData(importParam); + + Map apidatas = new HashMap<>(); + + apidatas.put("successCount", successCount); + apidatas.put("errorCount", errorCount); + apidatas.put("errorNotice", excelComments); + return apidatas; + } finally { + IOUtils.closeQuietly(fileInputStream); + } + } + + private void checkImportParam(VariableArchiveImportHandleParam importParam) { + //excel篁id + String imageId = Util.null2String(importParam.getImageId()); + //腮罨丈絮 + String salaryMonthStr = Util.null2String(importParam.getSalaryMonth()); + if (StringUtils.isBlank(imageId)) { + throw new SalaryRunTimeException("篁銀絖"); + } + if (StringUtils.isBlank(salaryMonthStr)) { + throw new SalaryRunTimeException("莎絮筝榊"); + } + } + + /** + * 綮阪弱ュ + * + * @param param + * @return + */ + private VariableArchiveImportHandleParam buildImportHandleParam(VariableArchiveImportHandleParam param) { + // キ茴綣羌莎蕁合 + List variableItems = getVariableItemService(user).listAll(); + Collection variableItemIds = variableItems.stream().map(VariableItemPO::getId).collect(Collectors.toList()); + List variableArchiveList = getVariableArchiveMapper().listSome(VariableArchivePO.builder().salaryMonth(SalaryDateUtil.dateStrToLocalYearMonth(param.getSalaryMonth())).build()); + + List variableArchiveIds = variableArchiveList.stream().map(VariableArchivePO::getId).collect(Collectors.toList()); + Map variableArchivesMap = SalaryEntityUtil.convert2Map(variableArchiveList, k -> k.getTaxAgentId() + "-" + k.getEmployeeId()); + + // キ羌莎罅f膸井 + List variableArchiveItemPOS = getVariableArchiveItemService(user).listByVariableArchiveIds(variableArchiveIds); + Map> variableArchiveItemMap = SalaryEntityUtil.group2Map(variableArchiveItemPOS, k -> k.getVariableArchiveId() + "-" + k.getVariableItemId()); + + Collection taxAgentList; + taxAgentList = getTaxAgentService(user).listTaxAgentAndEmployeeTree((long) user.getUID()); + + + return VariableArchiveImportHandleParam.builder() + .imageId(param.getImageId()) + .salaryMonth(param.getSalaryMonth()) + .salaryMonthDate(SalaryDateUtil.dateStrToLocalYearMonth(param.getSalaryMonth())) + .currentEmployeeId((long) user.getUID()) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + //篋阪絎篏劫 + .empValidType(getSalaryEmployeeService(user).empValidType()) + // キ腱隙篋阪 + .employees(getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ORG)) + // 羌莎蕁合 + .variableItems(variableItems) + // ヨ√群羌莎罅f堺井 + .variableArchivesMap(variableArchivesMap) + // 羌莎蕁合id + .variableItemIds(variableItemIds) + // ヨ√群羌莎蕁合井 + .effectiveItemListMap(variableArchiveItemMap) + // 篁ョ∞箙>査 + .taxAgentList(taxAgentList) + // 綵狗 + .nowTime(new Date()) + // 綵紊 + .today(new Date()) + // 緇篆絖羌莎罅f + .variableArchiveSaves(Lists.newArrayList()) + // 緇篆絖羌莎罅f-羌莎蕁合 + .variableArchiveItemSaves(Lists.newArrayList()) + // 緇ゆ貴莎罅f-羌莎蕁合 + .variableArchiveItemDelSalaryItemIds(Lists.newArrayList()) + .build(); + } + + + private void handleImportData(VariableArchiveImportHandleParam importHandleParam) { + List variableArchiveSaves = importHandleParam.getVariableArchiveSaves(); + List variableArchiveItemSaves = importHandleParam.getVariableArchiveItemSaves(); + List variableArchiveItemDelSalaryItemIds = importHandleParam.getVariableArchiveItemDelSalaryItemIds(); + + // 医罅f + if (CollectionUtils.isNotEmpty(variableArchiveSaves)) { + variableArchiveSaves.stream().forEach(getVariableArchiveMapper()::insertIgnoreNull); + } + // 莎罅f-莎蕁合 + if (CollectionUtils.isNotEmpty(variableArchiveItemDelSalaryItemIds)) { + getVariableArchiveItemService(user).deleteByIds(variableArchiveItemDelSalaryItemIds); + } + // 莎罅f-莎蕁合 + if (CollectionUtils.isNotEmpty(variableArchiveItemSaves)) { + getVariableArchiveItemService(user).batchInsert(variableArchiveItemSaves); + } + } + + @Override + public XSSFWorkbook export(VariableArchiveQueryParam param) { + // 腱 + String nameI18n = SalaryI18nUtil.getI18nLabel(0, "羌"); + + // キ茴綣莎蕁合 + List variableItems = getVariableItemService(user).listAll(); + List header = VariableArchiveBO.buildVariableArchiveTable(variableItems); + Map columnMap = SalaryEntityUtil.convert2Map(header, WeaTableColumn::getColumn); + + List finalColumns = new ArrayList<>(); + param.getColumns().forEach(col -> { + WeaTableColumn column = columnMap.get(col); + if (column != null) { + finalColumns.add(column); + } + }); + header = finalColumns; + + // 2.茵紊 + List> rows = new ArrayList<>(); + rows.add(header.stream().map(WeaTableColumn::getText).collect(Collectors.toList())); + // キ罅f篆≧ + List variableArchiveList = list(param); + List> listMaps = buildVariableArchiveData(variableArchiveList); + // 膸茖井 + List finalHeader = header; + listMaps.forEach(e -> { + List row = new ArrayList<>(); + for (WeaTableColumn column : finalHeader) { + row.add(Util.null2String(e.get(column.getColumn()))); + } + // row.add(e.get("salaryMonth").toString()); + // row.add(e.get("taxAgentName").toString()); + // row.add(e.get("username").toString()); + // row.add(Optional.ofNullable(e.get("departmentName")).orElse("").toString()); + // row.add(e.get("mobile") == null ? "" : e.get("mobile").toString()); + // row.add(Optional.ofNullable(e.get("workcode")).orElse("").toString()); + // row.add(Util.null2String(e.get("idNo"))); + // row.add(Util.null2String(e.get("companystartdate"))); + // + // // 莎蕁合井 + // for (VariableItemPO variableItem : variableItems) { + // row.add(e.containsKey(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX) ? (e.get(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX) == null ? "" + // : e.get(variableItem.getId() + SalaryItemConstant.VARIABLE_ITEM_DYNAMIC_SUFFIX).toString()) : ""); + // } + rows.add(row); + }); + + // 4.羈 + List excelComments = Lists.newArrayList(); + + return ExcelUtilPlus.genWorkbookV2(rows, nameI18n, excelComments); + } + + @Override + public void deleteSelectVariableArchive(Collection deleteIds) { + if (CollectionUtils.isEmpty(deleteIds)) { + return; + } + List variableArchivePOList = getVariableArchiveMapper().listSome(VariableArchivePO.builder().ids(deleteIds).build()); + List archiveIds = variableArchivePOList.stream().map(VariableArchivePO::getId).collect(Collectors.toList()); + deleteByIds(archiveIds); + // ゆ膸 + getVariableArchiveItemService(user).deleteByArchiveIds(archiveIds); + + } + + @Override + public List> listBySalaryMonthAndEmployeeIds(YearMonth salaryMonth, List employeeIds, Long taxAgentId) { + VariableArchiveQueryParam queryParam = VariableArchiveQueryParam.builder() + .employeeIds(employeeIds) + .salaryMonth(SalaryDateUtil.getFormatYearMonth(salaryMonth)) + .salaryMonthDate(SalaryDateUtil.toDate(salaryMonth, 1)) + .taxAgentIds(Collections.singletonList(taxAgentId)) + .build(); + List variableArchiveListDTO = list(queryParam); + return buildVariableArchiveData(variableArchiveListDTO); + } + + @Override + public void updateData(VariableArchiveSaveParam updateParam) { + if (updateParam.getId() == null) { + throw new SalaryRunTimeException("育莚"); + } + // キ羌罅f + VariableArchivePO variableArchivePO = getVariableArchiveMapper().getById(updateParam.getId()); + if (variableArchivePO == null) { + throw new SalaryRunTimeException("羌罅f筝絖綏画←"); + } + + // ゅ羌罅f膸 + getVariableArchiveItemService(user).deleteByArchiveIds(Collections.singletonList(updateParam.getId())); + + // 篆絖羌莎罅f莚膸篆≧ + List variableArchiveItemList = new ArrayList<>(); + Date now = new Date(); + updateParam.getItemValueList().forEach(e -> { + variableArchiveItemList.add(VariableArchiveItemPO.builder() + .id(IdGenerator.generate()) + .employeeId(updateParam.getEmployeeId()) + .variableArchiveId(variableArchivePO.getId()) + .variableItemId(e.getVariableItemId()) + .itemValue(e.getItemValue()) + .creator(Long.valueOf(user.getUID())) + .createTime(now) + .updateTime(now) + .deleteType(NumberUtils.INTEGER_ZERO) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build()); + }); + + if (CollectionUtils.isNotEmpty(variableArchiveItemList)) { + getVariableArchiveItemService(user).batchInsert(variableArchiveItemList); + } + } +} diff --git a/src/com/engine/salary/service/impl/VariableItemServiceImpl.java b/src/com/engine/salary/service/impl/VariableItemServiceImpl.java new file mode 100644 index 000000000..7ae749ae3 --- /dev/null +++ b/src/com/engine/salary/service/impl/VariableItemServiceImpl.java @@ -0,0 +1,260 @@ +package com.engine.salary.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableItemQueryParam; +import com.engine.salary.entity.datacollection.param.VariableItemSaveParam; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.entity.salaryformula.po.FormulaPO; +import com.engine.salary.entity.salaryformula.po.FormulaVar; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.datacollection.VariableItemMapper; +import com.engine.salary.service.*; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; +import com.engine.salary.util.valid.RuntimeTypeEnum; +import com.engine.salary.util.valid.ValidUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.springframework.beans.BeanUtils; +import weaver.conn.util.IdGenerator; +import weaver.hrm.User; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author Harryxzy + * @ClassName VariableItemServiceImpl + * @date 2024/08/07 9:31 + * @description 羌蕁合 + */ +public class VariableItemServiceImpl extends Service implements VariableItemService { + + private VariableItemMapper getVariableItemMapper(){ + return MapperProxyFactory.getProxy(VariableItemMapper.class); + } + + private SalaryFormulaService getSalaryFormulaService(User user) { + return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + private VariableArchiveItemService getVariableArchiveItemService(User user) { + return ServiceUtil.getService(VariableArchiveItemServiceImpl.class, user); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + + @Override + public VariableItemPO getById(Long id) { + if (id == null) { + return null; + } + return getVariableItemMapper().getById(id); + } + + @Override + public List listByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + return getVariableItemMapper().listSome(VariableItemPO.builder().ids(ids).build()); + } + + /** + * キ羌蕁合 + * @return + */ + @Override + public List listAll() { + return getVariableItemMapper().listAll(); + } + + /** + * キ羌莎蕁合茵鐚蕁居 + * + * @param queryParam + * @return + */ + @Override + public PageInfo listPage(VariableItemQueryParam queryParam) { + List variableItemPOS = listAll(); + Long employeeId = Long.valueOf(user.getUID()); + // ゆ紫∞ + Boolean isChief = getTaxAgentService(user).isChief(employeeId); + // 綣 + Boolean openDevolution = getTaxAgentService(user).isOpenDevolution(); + if (BooleanUtils.isTrue(openDevolution) && !isChief) { + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(employeeId); + List taxAgentIds = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(taxAgentIds)) { + // + return new PageInfo<>(); + } + } + + if (StringUtils.isNotBlank(queryParam.getItemName())) { + variableItemPOS = variableItemPOS.stream().filter(po -> po.getName().contains(queryParam.getItemName())).collect(Collectors.toList()); + } + // ヨ≫ょcodeid + SalaryItemServiceImpl.UsingItem usingItem = getSalaryItemService(user).getUsingItem(); + List usingCodes = usingItem.getUsingCodes(); + List usingVariableItemIds = getVariableArchiveItemService(user).listUsingItems(); + + List variableItemDTOList = variableItemPOS.stream() + .map(po -> VariableItemListDTO.builder() + .id(po.getId()) + .name(po.getName()) + .dataType(SalaryDataTypeEnum.parseByValue(po.getDataType()).getDefaultLabel()) + .canDelete( !(usingCodes.contains(po.getCode()) || usingVariableItemIds.contains(po.getId())) ) + .build()) + .collect(Collectors.toList()); + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), variableItemDTOList, VariableItemListDTO.class); + } + + private List listByName(String name) { + return getVariableItemMapper().listSome(VariableItemPO.builder().name(name).build()); + } + + @Override + public Integer save(VariableItemSaveParam saveParam) { + // 腱遺遵綏我絎箙莎蕁合 + List variableItemPOS = listByName(saveParam.getName()); + if (CollectionUtils.isNotEmpty(variableItemPOS)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "蕁合腱医群絖鐚莚潔医遵")); + } + Date now = new Date(); + long id = com.engine.salary.util.db.IdGenerator.generate(); + VariableItemPO variableItemPO = VariableItemPO.builder() + .id(id) + .name(saveParam.getName()) + .code(IdGenerator.getUUID()) + .dataType(saveParam.getDataType()) + .creator(Long.valueOf(user.getUID())) + .deleteType(NumberUtils.INTEGER_ZERO) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + return getVariableItemMapper().insertIgnoreNull(variableItemPO); + + } + + @Override + public VariableItemPO update(VariableItemSaveParam saveParam) { + ValidUtil.doValidator(saveParam, RuntimeTypeEnum.UPDATE); + // ヨ∵莎蕁合鐚ゆ莎蕁合絖 + VariableItemPO variableItemPO = getById(saveParam.getId()); + if (Objects.isNull(variableItemPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "育莚鐚蕁合筝絖綏画←")); + } + // 腱遺遵綏我絎箙莎蕁合 + List variableItemPOS = listByName(saveParam.getName()); + boolean nameExist = variableItemPOS.stream().anyMatch(e -> !Objects.equals(saveParam.getId(), e.getId())); + if (nameExist) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98326, "蕁合腱医群絖鐚莚潔医遵")); + } + + // 贋域莎蕁合 + VariableItemPO newVariableItemPO = new VariableItemPO(); + BeanUtils.copyProperties(variableItemPO, newVariableItemPO); + newVariableItemPO.setName(saveParam.getName()); + newVariableItemPO.setDataType(saveParam.getDataType()); + newVariableItemPO.setUpdateTime(new Date()); + getVariableItemMapper().update(newVariableItemPO); + + //劫贋医綣 + String oldName = variableItemPO.getName(); + String newName = saveParam.getName(); + if (!StringUtils.equals(oldName, newName)) { + String itemPrefix = "variableItem_"; + String fieldNamePrefix = "{羌莎蕁合.%s}"; + changeName(variableItemPO, oldName, newName, itemPrefix, fieldNamePrefix); + } + return variableItemPO; + } + + private void changeName(VariableItemPO variableItemPO, String oldName, String newName, String itemPrefix, String fieldNamePrefix) { + String code = itemPrefix + variableItemPO.getCode(); + Date now = new Date(); + List formulaVars = getSalaryFormulaService(user).listByCode(code); + formulaVars.forEach(v -> { + FormulaVar formulaVar = FormulaVar.builder() + .id(v.getId()) + .name(newName) + .fieldName(String.format(fieldNamePrefix, newName)) + .updateTime(now) + .build(); + getSalaryFormulaService(user).updateVar(formulaVar); + }); + + List formulaIds = SalaryEntityUtil.properties(formulaVars, FormulaVar::getFormulaId, Collectors.toList()); + List formulaPOS = getSalaryFormulaService(user).listByIds(formulaIds); + formulaPOS.forEach(f -> { + String formula = f.getFormula(); + formula = formula.replace(String.format(fieldNamePrefix, oldName), String.format(fieldNamePrefix, newName)); + FormulaPO formulaPO = FormulaPO.builder() + .id(f.getId()) + .formula(formula) + .updateTime(now) + .build(); + getSalaryFormulaService(user).update(formulaPO); + }); + } + + @Override + public void deleteItems(List itemIds) { + if (CollectionUtils.isEmpty(itemIds)) { + return; + } + + SalaryItemServiceImpl.UsingItem usingItem = getSalaryItemService(user).getUsingItem(); + List usingCodes = usingItem.getUsingCodes(); + + // ヨ∵莎蕁合 + List variableItemPOS = listByIds(itemIds); + if (CollectionUtils.isEmpty(variableItemPOS)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "育莚鐚羌莎蕁合筝絖綏画←")); + } + List codes = SalaryEntityUtil.properties(variableItemPOS, VariableItemPO::getCode, Collectors.toList()); + if (CollectionUtils.containsAny(usingCodes, codes)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "綣閫e篏睡莚ユ貴莎蕁合鐚筝莅後")); + } + // ヨ∽貴罅f筝綏俄戎羌莎蕁合 + List usingVariableItemIds = getVariableArchiveItemService(user).listUsingItems(); + if (CollectionUtils.containsAny(usingVariableItemIds, itemIds)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "羌莎罅f筝罩e篏睡莚ヨ莎蕁合鐚筝莅後")); + } + itemIds.stream().forEach(id -> getVariableItemMapper().delete(VariableItemPO.builder().id(id).build())); + ; + } + + @Override + public VariableItemListDTO getDetail(Long id) { + if (id == null) { + return null; + } + VariableItemPO variableItemPO = getVariableItemMapper().getById(id); + return VariableItemListDTO.builder() + .id(variableItemPO.getId()) + .name(variableItemPO.getName()) + .dataType(variableItemPO.getDataType()) + .build(); + } +} diff --git a/src/com/engine/salary/sys/config/SysConfig.java b/src/com/engine/salary/sys/config/SysConfig.java new file mode 100644 index 000000000..3da7f8818 --- /dev/null +++ b/src/com/engine/salary/sys/config/SysConfig.java @@ -0,0 +1,23 @@ +package com.engine.salary.sys.config; + +import com.engine.salary.sys.entity.po.SalarySysConfPO; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@XStreamAlias("SysConfig") +public class SysConfig { + + @XStreamImplicit + private List salarySysConfs; + +} diff --git a/src/com/engine/salary/sys/constant/SalarySysConstant.java b/src/com/engine/salary/sys/constant/SalarySysConstant.java index ff055b89e..6f35124c3 100644 --- a/src/com/engine/salary/sys/constant/SalarySysConstant.java +++ b/src/com/engine/salary/sys/constant/SalarySysConstant.java @@ -145,4 +145,15 @@ public class SalarySysConstant { * 莎胼綏ヨ筝腮g軸箙>査丞ず倶 */ public static final String TAX_AGENT_SHOW_STATUS = "taxAgentShowStatus"; + + + /** + * ヨ;綣膽絖鐚0鐚渇 1鐚綣 + */ + public static final String REPORT_CACHE = "REPORT_CACHE"; + + /** + * ヨ;膸膸膠糸鐚null/0 鐚悟句膸篆≧ 1鐚絎句膸篆≧ + */ + public static final String REPORT_ORGANIZATIN_TYPE = "REPORT_ORGANIZATIN_TYPE"; } diff --git a/src/com/engine/salary/sys/entity/param/UploadConfigParam.java b/src/com/engine/salary/sys/entity/param/UploadConfigParam.java new file mode 100644 index 000000000..6e104addc --- /dev/null +++ b/src/com/engine/salary/sys/entity/param/UploadConfigParam.java @@ -0,0 +1,25 @@ +package com.engine.salary.sys.entity.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 紮臀 + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class UploadConfigParam { + + //筝篌篁id + String imageId; + +} diff --git a/src/com/engine/salary/sys/entity/po/SalarySysConfPO.java b/src/com/engine/salary/sys/entity/po/SalarySysConfPO.java index 6a2d231ec..bc75d7a95 100644 --- a/src/com/engine/salary/sys/entity/po/SalarySysConfPO.java +++ b/src/com/engine/salary/sys/entity/po/SalarySysConfPO.java @@ -4,6 +4,9 @@ package com.engine.salary.sys.entity.po; import com.engine.salary.annotation.TableTitle; import com.engine.salary.util.valid.DataCheck; import com.engine.salary.util.valid.RuntimeTypeEnum; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamAsAttribute; +import com.thoughtworks.xstream.annotations.XStreamOmitField; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -15,54 +18,74 @@ import java.util.Date; @Builder @NoArgsConstructor @AllArgsConstructor +@XStreamAlias("SalarySysConf") public class SalarySysConfPO { @DataCheck(require = true, runtime = RuntimeTypeEnum.UPDATE, message = "id筝榊") + @XStreamOmitField private Long id; /** * 莚 */ @TableTitle(title = "莚", dataIndex = "confKey", key = "confKey") @DataCheck(require = true, message = "莚筝榊") + @XStreamAlias("confKey") + @XStreamAsAttribute private String confKey; /** * */ @TableTitle(title = "", dataIndex = "confValue", key = "confValue") @DataCheck(require = true, message = "莚筝榊") + @XStreamAlias("confValue") + @XStreamAsAttribute private String confValue; /** * 蘂 */ @TableTitle(title = "蘂", dataIndex = "title", key = "title") @DataCheck(require = true, message = "蘂筝榊") + @XStreamAlias("title") + @XStreamAsAttribute private String title; /** * 絮罔≦ */ @TableTitle(title = "絮罔≦", dataIndex = "module", key = "module") + @XStreamAlias("module") + @XStreamAsAttribute private String module; /** * 綺 */ @TableTitle(title = "綺", dataIndex = "orderWeight", key = "orderWeight") + @XStreamAlias("orderWeight") + @XStreamAsAttribute private Integer orderWeight; /** * 颷 */ @TableTitle(title = "颷", dataIndex = "description", key = "description") + @XStreamAlias("description") + @XStreamAsAttribute private String description; /** * 綏峨わ0鐚1 */ + @XStreamAlias("deleteType") + @XStreamAsAttribute private Integer deleteType; /** * 綮堺狗 */ + @XStreamAlias("createTime") + @XStreamAsAttribute private Date createTime; /** * 篆号狗 */ + @XStreamAlias("updateTime") + @XStreamAsAttribute private Date updateTime; } \ No newline at end of file diff --git a/src/com/engine/salary/sys/entity/vo/UploadConfigResponse.java b/src/com/engine/salary/sys/entity/vo/UploadConfigResponse.java new file mode 100644 index 000000000..f15dda773 --- /dev/null +++ b/src/com/engine/salary/sys/entity/vo/UploadConfigResponse.java @@ -0,0 +1,30 @@ +package com.engine.salary.sys.entity.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class UploadConfigResponse { + + private boolean finish; + + private List results; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Result { + String message; + List success; + List warning; + List error; + } +} diff --git a/src/com/engine/salary/sys/enums/OrderRuleEnum.java b/src/com/engine/salary/sys/enums/OrderRuleEnum.java index 560cc51a8..2d60f13bf 100644 --- a/src/com/engine/salary/sys/enums/OrderRuleEnum.java +++ b/src/com/engine/salary/sys/enums/OrderRuleEnum.java @@ -18,7 +18,8 @@ public enum OrderRuleEnum implements BaseEnum { LASTNAME("e.lastName", "篋阪腱", 1), DEPTNAME("d.departmentname", "腱", 1), SUBCOMNAME("c.subcompanyname", "腱", 1), - SHOWORDEROFDEPTTREE("d.showOrderOfTree", "膸膸", 1); + SHOWORDEROFDEPTTREE("d.showOrderOfTree", "膸膸", 1), + WORKCODE("e.workcode", "綏ュ", 1); private String value; diff --git a/src/com/engine/salary/sys/service/SalarySysConfService.java b/src/com/engine/salary/sys/service/SalarySysConfService.java index 345c2187a..6b78ceca2 100644 --- a/src/com/engine/salary/sys/service/SalarySysConfService.java +++ b/src/com/engine/salary/sys/service/SalarySysConfService.java @@ -1,10 +1,12 @@ package com.engine.salary.sys.service; +import com.engine.salary.sys.config.SysConfig; import com.engine.salary.sys.entity.param.AppSettingSaveParam; import com.engine.salary.sys.entity.param.OrderRuleParam; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.AppSettingVO; import com.engine.salary.sys.entity.vo.OrderRuleVO; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; import java.util.Date; @@ -38,6 +40,8 @@ public interface SalarySysConfService { SalarySysConfPO getOneByCode(String code); + String getValueByCode(String code); + List listSome(SalarySysConfPO build); void save(SalarySysConfPO salarySysConfPO); @@ -137,4 +141,8 @@ public interface SalarySysConfService { * @param app */ void saveSettingByType(String confValue, String confKey, String title, String app); + + SysConfig getConfig(); + + UploadConfigResponse.Result parseConfig(SysConfig config); } diff --git a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java index 24050fafc..b4aa8e526 100644 --- a/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java +++ b/src/com/engine/salary/sys/service/impl/SalarySysConfServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.sys.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; @@ -10,6 +11,7 @@ import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.po.OtherDeductionPO; import com.engine.salary.entity.datacollection.po.SpecialAddDeductionPO; +import com.engine.salary.entity.datacollection.po.VariableArchiveItemPO; import com.engine.salary.entity.salaryacct.po.ExcelAcctResultPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; @@ -23,10 +25,7 @@ import com.engine.salary.entity.sischeme.po.InsuranceSchemeDetailPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationDetailPO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.archive.SalaryArchiveItemMapper; -import com.engine.salary.mapper.datacollection.AddUpDeductionMapper; -import com.engine.salary.mapper.datacollection.AddUpSituationMapper; -import com.engine.salary.mapper.datacollection.OtherDeductionMapper; -import com.engine.salary.mapper.datacollection.SpecialAddDeductionMapper; +import com.engine.salary.mapper.datacollection.*; import com.engine.salary.mapper.salaryacct.ExcelAcctResultMapper; import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; import com.engine.salary.mapper.siaccount.ExcelInsuranceDetailMapper; @@ -38,12 +37,16 @@ import com.engine.salary.mapper.siarchives.SocialSchemeMapper; import com.engine.salary.mapper.sischeme.InsuranceSchemeDetailMapper; import com.engine.salary.mapper.sys.SalarySysConfMapper; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationDetailMapper; +import com.engine.salary.service.VariableArchiveItemService; +import com.engine.salary.service.impl.VariableArchiveItemServiceImpl; +import com.engine.salary.sys.config.SysConfig; import com.engine.salary.sys.constant.SalarySysConstant; import com.engine.salary.sys.entity.param.AppSettingSaveParam; import com.engine.salary.sys.entity.param.OrderRuleParam; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.AppSettingVO; import com.engine.salary.sys.entity.vo.OrderRuleVO; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.sys.enums.*; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.util.SalaryEntityUtil; @@ -64,6 +67,7 @@ import weaver.hrm.User; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; +import java.util.stream.Collectors; import static com.engine.salary.sys.constant.SalarySysConstant.*; import static java.util.concurrent.Executors.newFixedThreadPool; @@ -153,6 +157,9 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private VariableArchiveItemService getVariableArchiveItemService(User user) { + return ServiceUtil.getService(VariableArchiveItemServiceImpl.class, user); + } /** * 篏荀恰ュ @@ -212,6 +219,12 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe return getSalarySysConfMapper().getOneByCode(code); } + @Override + public String getValueByCode(String code) { + SalarySysConfPO confPO = getSalarySysConfMapper().getOneByCode(code); + return confPO == null ? "" : confPO.getConfValue(); + } + @Override public List listSome(SalarySysConfPO po) { return getSalarySysConfMapper().listSome(po); @@ -509,8 +522,52 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe } } + @Override + public SysConfig getConfig() { + SysConfig sysConfig = new SysConfig(); + List salarySysConfPOS = getSalarySysConfMapper().listAll(); + //サゅ絲臀 + salarySysConfPOS = salarySysConfPOS.stream().filter(po -> !po.getConfKey().equals(OPEN_APPLICATION_ENCRYPT)).collect(Collectors.toList()); + sysConfig.setSalarySysConfs(salarySysConfPOS); + return sysConfig; + } + + @Override + public UploadConfigResponse.Result parseConfig(SysConfig config) { + UploadConfigResponse.Result result = UploadConfigResponse.Result.builder() + .message("膤紫臀莉遵罸") + .success(new ArrayList<>()) + .warning(new ArrayList<>()) + .error(new ArrayList<>()) + .build(); + + List salarySysConfs = config.getSalarySysConfs(); + if (CollectionUtil.isNotEmpty((salarySysConfs))) { + + salarySysConfs.forEach(po -> { + try { + SalarySysConfPO sysConfPO = getSalarySysConfMapper().getOneByCode(po.getConfKey()); + if (sysConfPO == null) { + po.setId(IdGenerator.generate()); + getSalarySysConfMapper().insertIgnoreNull(po); + } else { + sysConfPO.setConfValue(po.getConfValue()); + getSalarySysConfMapper().updateIgnoreNull(sysConfPO); + } + result.getSuccess().add(String.format("[%s]臀鐚key:[%s],value:[%s]", po.getTitle(), po.getConfKey(), po.getConfValue())); + } catch (Exception e) { + log.error(String.format("莚,[%s]臀莉遵絽醐key:[%s],value:[%s]", po.getTitle(), po.getConfKey(), po.getConfValue()), e); + result.getError().add(String.format("莚,[%s]臀莉遵絽醐key:[%s],value:[%s],鐚%s", po.getTitle(), po.getConfKey(), po.getConfValue(), e.getMessage())); + } + }); + } + + return result; + } + /** * 綣/渇茹e + * * @param confValue */ public void updateEncrypt(String confValue) { @@ -1180,14 +1237,42 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe return 1; }); - int flag = submit.get() + submit1.get() + submit2.get() + submit3.get() + submit4.get() + submit5.get() + submit6.get() + submit7.get() + submit8.get() + submit9.get() + submit10.get() + submit11.get() + submit12.get() + submit13.get() + submit14.get(); - if (flag == 15) { + Future submit15 = fixedThreadPool.submit(() -> { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + List variableArchiveItemPOS = getVariableArchiveItemService(user).listAll(); + if (CollectionUtils.isNotEmpty(variableArchiveItemPOS)) { + variableArchiveItemPOS.forEach(po -> { + if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) { + po.setItemValue(AESEncryptUtil.closeEncryptSetting(po.getItemValue(), sysConfPo)); + } else { + po.setItemValue(AESEncryptUtil.encrypt(po.getItemValue())); + } + }); + List> partition = Lists.partition(variableArchiveItemPOS, 10); + VariableArchiveItemMapper mapper = sqlSession.getMapper(VariableArchiveItemMapper.class); + partition.forEach(mapper::updateBatchSelective); + sqlSession.commit(); + log.info("finish hrsa_variable_archive_item"); + } + } catch (Exception e) { + sqlSession.rollback(); + log.error("fail hrsa_variable_archive_item", e); + return 0; + } finally { + sqlSession.close(); + } + return 1; + }); + + int flag = submit.get() + submit1.get() + submit2.get() + submit3.get() + submit4.get() + submit5.get() + submit6.get() + submit7.get() + submit8.get() + submit9.get() + submit10.get() + submit11.get() + submit12.get() + submit13.get() + submit14.get() + submit15.get(); + if (flag == 16) { Util_DataCache.setObjVal(ENCRYPT_IN_PROGRESS + progressId, "success", 30); } else { Util_DataCache.setObjVal(ENCRYPT_IN_PROGRESS + progressId, "fail", 30); } Util_DataCache.clearVal(AES_ENCRYPT_IN_PROGRESS); - return flag == 15; + return flag == 16; } catch (Exception e) { Util_DataCache.setObjVal(ENCRYPT_IN_PROGRESS + progressId, "fail", 30); Util_DataCache.clearVal(AES_ENCRYPT_IN_PROGRESS); diff --git a/src/com/engine/salary/timer/AutoSyncAttendQuoteJob.java b/src/com/engine/salary/timer/AutoSyncAttendQuoteJob.java index 78baf3e7d..085c8ff29 100644 --- a/src/com/engine/salary/timer/AutoSyncAttendQuoteJob.java +++ b/src/com/engine/salary/timer/AutoSyncAttendQuoteJob.java @@ -15,6 +15,7 @@ import weaver.hrm.User; import weaver.interfaces.schedule.BaseCronJob; import java.time.LocalDate; +import java.util.Collections; import java.util.Date; import java.util.List; @@ -60,7 +61,7 @@ public class AutoSyncAttendQuoteJob extends BaseCronJob { salarySobList.stream().forEach(sob -> { // ♂篁ユ篏 Boolean canSync = getAttendQuoteWrapper(tempUser).checkOperation(AttendQuoteCheckOperationParam.builder() - .salarySobId(sob.getId()) + .salarySobIds(Collections.singletonList(sob.getId())) .salaryYearMonthStr(dateStr) .build()); if (canSync) { @@ -68,7 +69,7 @@ public class AutoSyncAttendQuoteJob extends BaseCronJob { try { baseBean.writeLog("罩ヨゆ井綣紮鐚"+ sob.getId()+","+dateStr); getAttendQuoteDataWrapper(tempUser).syncAttendQuoteData(AttendQuoteDataSyncParam.builder() - .salarySobId(sob.getId()) + .salarySobIds(Collections.singletonList(sob.getId())) .salaryYearMonth(dateStr) .build()); baseBean.writeLog("罩ヨゆ井膸鐚"+ sob.getId()+","+dateStr); diff --git a/src/com/engine/salary/util/db/IdGenerator.java b/src/com/engine/salary/util/db/IdGenerator.java index 3a900a8d6..e93e72e6f 100644 --- a/src/com/engine/salary/util/db/IdGenerator.java +++ b/src/com/engine/salary/util/db/IdGenerator.java @@ -1,5 +1,6 @@ package com.engine.salary.util.db; +import java.util.UUID; import java.util.concurrent.atomic.AtomicLong; public class IdGenerator { @@ -43,4 +44,8 @@ public class IdGenerator { return ""; } } + + public static String getUUID() { + return UUID.randomUUID().toString().replaceAll("-", ""); + } } diff --git a/src/com/engine/salary/util/excel/ExcelHead.java b/src/com/engine/salary/util/excel/ExcelHead.java index cec7da51d..5639859af 100644 --- a/src/com/engine/salary/util/excel/ExcelHead.java +++ b/src/com/engine/salary/util/excel/ExcelHead.java @@ -15,9 +15,9 @@ import java.lang.annotation.*; @Documented public @interface ExcelHead { - String title() default ""; + String title() ; - String dataIndex() default ""; + String dataIndex() ; DataTypeEnum dataType() default DataTypeEnum.string; diff --git a/src/com/engine/salary/util/excel/ExcelParseHelper.java b/src/com/engine/salary/util/excel/ExcelParseHelper.java index c25d8b08d..9da6eb545 100644 --- a/src/com/engine/salary/util/excel/ExcelParseHelper.java +++ b/src/com/engine/salary/util/excel/ExcelParseHelper.java @@ -3,7 +3,9 @@ package com.engine.salary.util.excel; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.exception.ContextedRuntimeException; +import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; @@ -88,7 +90,7 @@ public class ExcelParseHelper { for (; rowIndex < rowCount; rowIndex++) { List cellResult = new ArrayList(); for (int j = 0; j < cellCount; j++) { - cellResult.add(ExcelSupport.getCellValue(sheet, rowIndex, j)); + cellResult.add(ExcelSupport.getCellValue(sheet, null, rowIndex, j)); } result.add(cellResult); } @@ -104,17 +106,21 @@ public class ExcelParseHelper { * @return 篋膸贋井 */ private static List> parse2Map(InputStream file, int sheetIndex, int rowIndex, int standardCellNum, String fileName) { - Sheet sheet = ExcelSupport.parseFile(file, sheetIndex, fileName); + Workbook workbook = ExcelSupport.parseFile(file, fileName); + Sheet sheet = workbook.getSheetAt(sheetIndex); int rowCount = sheet.getPhysicalNumberOfRows(); // 肢 int cellCount = sheet.getRow(PARSE_EXCEL_ROW_VALID_CELL_INDEX).getPhysicalNumberOfCells(); // 糸 Validate.isTrue(standardCellNum == cellCount, "Error in excel template! Page %s sheet should have %s column data, existing in %s column , please check the template!", sheetIndex, standardCellNum, cellCount); + // 綮坂筝綣閺弱絲壕院 + FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); + List> result = new ArrayList>(); for (; rowIndex < rowCount; rowIndex++) { List cellResult = new ArrayList(); for (int j = 0; j < cellCount; j++) { - cellResult.add(ExcelSupport.getCellValue(sheet, rowIndex, j)); + cellResult.add(ExcelSupport.getCellValue(sheet, evaluator, rowIndex, j)); } result.add(cellResult); } @@ -131,7 +137,10 @@ public class ExcelParseHelper { * @return */ public static List> parse2Map(InputStream file, int sheetIndex, int rowIndex) { - Sheet sheet = ExcelSupport.parseFile(file, sheetIndex, EXCEL_TYPE_XLSX); + Workbook workbook = ExcelSupport.parseFile(file, EXCEL_TYPE_XLSX); + // 綮坂筝綣閺弱絲壕院 + FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); + Sheet sheet = workbook.getSheetAt(sheetIndex); int rowCount = sheet.getPhysicalNumberOfRows(); // 肢 int cellCount = sheet.getRow(PARSE_EXCEL_ROW_VALID_CELL_INDEX).getPhysicalNumberOfCells(); // 糸 @@ -142,7 +151,7 @@ public class ExcelParseHelper { Map cellResult = new HashMap<>(); for (int j = 0; j < cellCount; j++) { String key = sheetHeader.get(j); - cellResult.put(key, ExcelSupport.getCellValue(sheet, rowIndex, j)); + cellResult.put(key, ExcelSupport.getCellValue(sheet, evaluator, rowIndex, j)); } result.add(cellResult); } @@ -167,7 +176,49 @@ public class ExcelParseHelper { Map cellResult = new HashMap<>(); for (int j = 0; j < cellCount; j++) { String key = sheetHeader.get(j); - cellResult.put(key, ExcelSupport.getCellValue(sheet, rowIndex, j)); + cellResult.put(key, ExcelSupport.getCellValue(sheet, null, rowIndex, j)); + } + result.add(cellResult); + } + return result; + } + + public static List> parse2Map(Workbook workbook, int sheetIndex, int rowIndex) { + // 綮坂筝綣閺弱絲壕院 + FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); + Sheet sheet = workbook.getSheetAt(sheetIndex); + int rowCount = sheet.getPhysicalNumberOfRows(); // 肢 + int cellCount = sheet.getRow(PARSE_EXCEL_ROW_VALID_CELL_INDEX).getPhysicalNumberOfCells(); // 糸 + + List sheetHeader = ExcelSupport.getSheetHeader(sheet, PARSE_EXCEL_ROW_VALID_CELL_INDEX); + + List> result = new ArrayList<>(); + for (; rowIndex < rowCount; rowIndex++) { + Map cellResult = new HashMap<>(); + for (int j = 0; j < cellCount; j++) { + String key = sheetHeader.get(j); + cellResult.put(key, ExcelSupport.getCellValue(sheet, evaluator, rowIndex, j)); + } + result.add(cellResult); + } + return result; + } + + public static List> parse2Map(Workbook workbook, int sheetIndex, int rowIndex, int headerRowIndex) { + // 綮坂筝綣閺弱絲壕院 + FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); + Sheet sheet = workbook.getSheetAt(sheetIndex); + int rowCount = sheet.getPhysicalNumberOfRows(); // 肢 + int cellCount = sheet.getRow(headerRowIndex).getPhysicalNumberOfCells(); // 糸 + + List sheetHeader = ExcelSupport.getSheetHeader(sheet, headerRowIndex); + + List> result = new ArrayList<>(); + for (; rowIndex < rowCount; rowIndex++) { + Map cellResult = new HashMap<>(); + for (int j = 0; j < cellCount; j++) { + String key = sheetHeader.get(j); + cellResult.put(key, ExcelSupport.getCellValue(sheet, evaluator, rowIndex, j)); } result.add(cellResult); } @@ -177,7 +228,7 @@ public class ExcelParseHelper { /** * 絨sheet井莉筝map * - * @param rowIndex 篁茵綣紮茹f + * @param rowIndex 篁茵綣紮茹f * @param headerRowIndex 遵亥茵 * @return */ @@ -192,7 +243,7 @@ public class ExcelParseHelper { Map cellResult = new HashMap<>(); for (int j = 0; j < cellCount; j++) { String key = sheetHeader.get(j); - cellResult.put(key, ExcelSupport.getCellValue(sheet, rowIndex, j)); + cellResult.put(key, ExcelSupport.getCellValue(sheet, null, rowIndex, j)); } result.add(cellResult); } @@ -213,7 +264,7 @@ public class ExcelParseHelper { for (; rowIndex < rowCount; rowIndex++) { List cellResult = new ArrayList(); for (int j = 0; j < cellCount; j++) { - cellResult.add(ExcelSupport.getCellValue(sheet, rowIndex, j)); + cellResult.add(ExcelSupport.getCellValue(sheet, null, rowIndex, j)); } result.add(cellResult); } @@ -222,7 +273,8 @@ public class ExcelParseHelper { /** * 絨sheet井莉筝List - * @param rowIndex 篁茵綣紮茹f + * + * @param rowIndex 篁茵綣紮茹f * @param headerRowIndex 遵亥茵 * @return */ @@ -234,7 +286,29 @@ public class ExcelParseHelper { for (; rowIndex < rowCount; rowIndex++) { List cellResult = new ArrayList(); for (int j = 0; j < cellCount; j++) { - cellResult.add(ExcelSupport.getCellValue(sheet, rowIndex, j)); + cellResult.add(ExcelSupport.getCellValue(sheet, null, rowIndex, j)); + } + result.add(cellResult); + } + return result; + } + + /** + * 絨sheet井莉筝List + * + * @param rowIndex 篁茵綣紮茹f + * @param headerRowIndex 遵亥茵 + * @return + */ + public static List> parse2List(Sheet sheet, FormulaEvaluator evaluator, int rowIndex, int headerRowIndex) { + int rowCount = sheet.getPhysicalNumberOfRows(); // 肢 + int cellCount = sheet.getRow(headerRowIndex).getPhysicalNumberOfCells(); // 糸 + + List> result = new ArrayList>(); + for (; rowIndex < rowCount; rowIndex++) { + List cellResult = new ArrayList(); + for (int j = 0; j < cellCount; j++) { + cellResult.add(ExcelSupport.getCellValue(sheet, evaluator, rowIndex, j)); } result.add(cellResult); } @@ -310,4 +384,14 @@ public class ExcelParseHelper { } return val; } + + public static ExcelPreviewDTO preview(InputStream fileInputStream, int i, String excelTypeXlsx) { + Workbook workbook = ExcelSupport.parseFile(fileInputStream, EXCEL_TYPE_XLSX); + // 綮坂筝綣閺弱絲壕院 + FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); + Sheet sheet = workbook.getSheetAt(i); + return ExcelPreviewDTO.builder() + .headers(ExcelSupport.getSheetHeader(sheet, 0)) + .list(ExcelParseHelper.parse2List(sheet, evaluator, 1, 0)).build(); + } } diff --git a/src/com/engine/salary/util/excel/ExcelPreviewDTO.java b/src/com/engine/salary/util/excel/ExcelPreviewDTO.java new file mode 100644 index 000000000..69135fbf0 --- /dev/null +++ b/src/com/engine/salary/util/excel/ExcelPreviewDTO.java @@ -0,0 +1,18 @@ +package com.engine.salary.util.excel; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ExcelPreviewDTO { + private List headers; + + private List> list; +} diff --git a/src/com/engine/salary/util/excel/ExcelSupport.java b/src/com/engine/salary/util/excel/ExcelSupport.java index a13341a87..212905a93 100644 --- a/src/com/engine/salary/util/excel/ExcelSupport.java +++ b/src/com/engine/salary/util/excel/ExcelSupport.java @@ -50,13 +50,34 @@ public class ExcelSupport { } } + /** + * 茹f篁駈キ筝sheet + * + * @return sheet + */ + public static Workbook parseFile(InputStream ins, String fileName) { + Workbook workBook = null; + try { + if (fileName.endsWith(EXCEL_TYPE_XLSX)) { + workBook = new XSSFWorkbook(new BufferedInputStream(ins)); + } else if (fileName.endsWith(EXCEL_TYPE_XLS)) { + workBook = new HSSFWorkbook(new BufferedInputStream(ins)); + } else { + throw new IllegalArgumentException("File format error! Only xlsx and xls types are supported"); + } + return workBook; + } catch (Exception e) { + throw new IllegalArgumentException(e); + } + } + /** * 茹f篁駈キ筝sheet * * @param sheetIndex sheet筝鐚篁0綣紮 * @return sheet */ - public static Sheet parseFile(InputStream ins, int sheetIndex,String fileName) { + public static Sheet parseFile(InputStream ins, int sheetIndex, String fileName) { Workbook workBook = null; try { if (fileName.endsWith(EXCEL_TYPE_XLSX)) { @@ -80,12 +101,12 @@ public class ExcelSupport { * @return */ public static List getSheetHeader(Sheet sheet, int headerIndex) { - List headers = new ArrayList<>(); + List headers = new ArrayList<>(); Row headerRow = sheet.getRow(headerIndex); Iterator cellIterator = headerRow.cellIterator(); while (cellIterator.hasNext()) { Cell cell = (Cell) cellIterator.next(); - java.lang.String stringCellValue = cell.getStringCellValue(); + String stringCellValue = cell.getStringCellValue(); headers.add(stringCellValue); } return headers; @@ -93,16 +114,16 @@ public class ExcelSupport { /** - * 菴絎主井 + * 菴絎主井,Vlookup * * @param sheet 絎sheet * @param rowIndex 膃茵鐚篁0綣紮 * @param cellIndex 膃鐚篁0綣紮 * @return */ - public static String getCellValue(Sheet sheet, int rowIndex, int cellIndex) { + public static String getCellValue(Sheet sheet, FormulaEvaluator evaluator, int rowIndex, int cellIndex) { Validate.notNull(sheet.getRow(rowIndex), "Line %s is empty and cannot be resolved", rowIndex); - return getCellValue(sheet.getRow(rowIndex).getCell(cellIndex)); + return getCellValue(sheet.getRow(rowIndex).getCell(cellIndex), evaluator); } @@ -111,7 +132,7 @@ public class ExcelSupport { /** * 弱茹f井 */ - public static String getCellValue(Cell cell) { + public static String getCellValue(Cell cell, FormulaEvaluator evaluator) { String cellValue = ""; if (cell != null) { switch (cell.getCellType()) { @@ -119,8 +140,6 @@ public class ExcelSupport { if (DateUtil.isCellDateFormatted(cell)) { cellValue = getDateStr(cell.getDateCellValue(), pattern); } else { -// cell.setCellType(STRING); -// cellValue = cell.getStringCellValue(); cellValue = decimalFormat.format(cell.getNumericCellValue()); } break; @@ -131,7 +150,16 @@ public class ExcelSupport { cellValue = String.valueOf(cell.getBooleanCellValue()); break; case FORMULA: // 綣靏糸 - cellValue = String.valueOf(cell.getCellFormula()); + if (evaluator != null) { + // 莅∞綣 + CellType cellType = evaluator.evaluateFormulaCell(cell); + // キ綣顒∞ + cell.setCellType(cellType); + cellValue =getCellValue(cell, evaluator); + } else { + cellValue = String.valueOf(cell.getCellFormula()); + } + break; case BLANK: // 腥榊順瓜 cellValue = ""; diff --git a/src/com/engine/salary/util/excel/ExcelUtilPlus.java b/src/com/engine/salary/util/excel/ExcelUtilPlus.java index eeee8ee35..6dd3f342c 100644 --- a/src/com/engine/salary/util/excel/ExcelUtilPlus.java +++ b/src/com/engine/salary/util/excel/ExcelUtilPlus.java @@ -8,11 +8,13 @@ import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.RegionUtil; import org.apache.poi.xssf.usermodel.*; -import org.springframework.beans.BeanUtils; import java.awt.Color; import java.math.BigDecimal; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -72,7 +74,7 @@ public class ExcelUtilPlus { } - public static XSSFWorkbook genWorkbookV2WithPattern(List> rowList, String sheetName) { + public static XSSFWorkbook genWorkbookV2WithPattern(List> rowList, String sheetName, boolean lastRowRed) { XSSFWorkbook workbook = new XSSFWorkbook(); // 莅丞舟title桁 @@ -104,6 +106,19 @@ public class ExcelUtilPlus { cellStyle.setBorderTop(BorderStyle.THIN); cellStyle.setBorderBottom(BorderStyle.THIN); + XSSFCellStyle redCellStyle = workbook.createCellStyle(); + XSSFFont redFont = workbook.createFont(); + redFont.setFontName("絎篏"); + redFont.setFontHeightInPoints((short) 10);// 莅丞舟絖篏紊у + redFont.setColor(new XSSFColor(new Color(0xFF3333), null)); + redFont.setBold(true); + redCellStyle.setWrapText(true); + redCellStyle.setFont(redFont);// 荀亥絖篏弱 + redCellStyle.setBorderLeft(BorderStyle.THIN); + redCellStyle.setBorderRight(BorderStyle.THIN); + redCellStyle.setBorderTop(BorderStyle.THIN); + redCellStyle.setBorderBottom(BorderStyle.THIN); + XSSFSheet sheet = workbook.createSheet(sheetName); //綺絎遵墾 sheet.autoSizeColumn(0, true); @@ -121,25 +136,43 @@ public class ExcelUtilPlus { rowZeroCell.setCellValue(columnGroupItem.getText().toString()); rowZeroCell.setCellStyle(titleCellStyle); //莅丞舟絎 - sheet.setColumnWidth(i, Math.max(12, columnGroupItem.getText().length() * 4) * 256); + sheet.setColumnWidth(i, Math.min(255, Math.max(12, columnGroupItem.getText().length() * 4)) * 256); patternList.add(columnGroupItem.getPattern()); } HashMap numberCellStyleMap = new HashMap(); + HashMap numberRedCellStyleMap = new HashMap(); XSSFDataFormat df = workbook.createDataFormat(); patternList.stream().distinct().filter(a -> a != null).forEach(p -> { String start = "0."; if (p == 0) { start = "0"; } + + XSSFCellStyle numberRedCellStyle = workbook.createCellStyle(); + // 筝copy鐚excel膽莨区篋藥 + // BeanUtils.copyProperties(redCellStyle, numberRedCellStyle); + numberRedCellStyle.setWrapText(true); + numberRedCellStyle.setBorderLeft(BorderStyle.THIN); + numberRedCellStyle.setBorderRight(BorderStyle.THIN); + numberRedCellStyle.setBorderTop(BorderStyle.THIN); + numberRedCellStyle.setBorderBottom(BorderStyle.THIN); + numberRedCellStyle.setFont(redFont); short format = df.getFormat(start + Stream.generate(() -> "0").limit(p).collect(Collectors.joining()) + "_ "); + numberRedCellStyle.setDataFormat(format); + numberRedCellStyleMap.put(p, numberRedCellStyle); XSSFCellStyle numberCellStyle = workbook.createCellStyle(); - BeanUtils.copyProperties(cellStyle, numberCellStyle); + // BeanUtils.copyProperties(cellStyle, numberCellStyle); + numberCellStyle.setFont(font);// 荀亥絖篏弱 + numberCellStyle.setWrapText(true); + numberCellStyle.setBorderLeft(BorderStyle.THIN); + numberCellStyle.setBorderRight(BorderStyle.THIN); + numberCellStyle.setBorderTop(BorderStyle.THIN); + numberCellStyle.setBorderBottom(BorderStyle.THIN); numberCellStyle.setDataFormat(format); numberCellStyleMap.put(p, numberCellStyle); }); - for (int rowIndex = 1; rowIndex < rowList.size(); rowIndex++) { List infoList = rowList.get(rowIndex); XSSFRow row = sheet.createRow(rowIndex); @@ -151,16 +184,25 @@ public class ExcelUtilPlus { if (rowIndex == 0) { cell.setCellStyle(titleCellStyle); } else { - cell.setCellStyle(cellStyle); + if (lastRowRed && rowIndex == rowList.size() - 1) { + cell.setCellStyle(redCellStyle); + } else { + cell.setCellStyle(cellStyle); + } } Object o = infoList.get(cellIndex); if (o instanceof String) { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); } else if (o instanceof BigDecimal) { + if (lastRowRed && rowIndex == rowList.size() - 1) { + cell.setCellStyle(numberRedCellStyleMap.get(patternList.get(cellIndex))); + } else { + cell.setCellStyle(numberCellStyleMap.get(patternList.get(cellIndex))); + } cell.setCellType(CellType.NUMERIC); + double value = o == null ? 0 : ((BigDecimal) o).doubleValue(); cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); - cell.setCellStyle(numberCellStyleMap.get(patternList.get(cellIndex))); } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); @@ -222,7 +264,7 @@ public class ExcelUtilPlus { //莅丞舟絎 List header = rowList.get(0); for (int i = 0; i < header.size(); i++) { - sheet.setColumnWidth(i, Math.max(12, header.get(i).toString().length() * 4) * 256); + sheet.setColumnWidth(i, Math.min(255, Math.max(12, header.get(i).toString().length() * 4)) * 256); } for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { @@ -309,7 +351,7 @@ public class ExcelUtilPlus { //莅丞舟絎 List header = rowList.get(0); for (int i = 0; i < header.size(); i++) { - sheet.setColumnWidth(i, Math.max(12, header.get(i).toString().length() * 4) * 256); + sheet.setColumnWidth(i, Math.min(255, Math.max(12, header.get(i).toString().length() * 4)) * 256); } for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { @@ -414,7 +456,7 @@ public class ExcelUtilPlus { //莅丞舟絎 List header = rowList.get(0); for (int i = 0; i < header.size(); i++) { - sheet.setColumnWidth(i, Math.max(12, header.get(i).toString().length() * 4) * 256); + sheet.setColumnWidth(i, Math.min(255, Math.max(12, header.get(i).toString().length() * 4)) * 256); } for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { @@ -708,7 +750,7 @@ public class ExcelUtilPlus { rowOneCell.setCellValue(columnGroupItem.getText().toString()); rowOneCell.setCellStyle(titleCellStyle); //莅丞舟絎 - sheet.setColumnWidth(startIndex, Math.max(12, columnGroupItem.getText().length() * 4) * 256); + sheet.setColumnWidth(startIndex, Math.min(255, Math.max(12, columnGroupItem.getText().length() * 4)) * 256); startIndex++; patternList.add(columnGroupItem.getPattern()); } else { @@ -730,7 +772,7 @@ public class ExcelUtilPlus { subHeader.setCellValue(childrenItem.getText().toString()); subHeader.setCellStyle(titleCellStyle); //莅丞舟絎 - sheet.setColumnWidth(startIndex + j, Math.max(12, childrenItem.getText().length() * 4) * 256); + sheet.setColumnWidth(startIndex + j, Math.min(255, Math.max(12, childrenItem.getText().length() * 4)) * 256); patternList.add(childrenItem.getPattern()); } @@ -909,7 +951,7 @@ public class ExcelUtilPlus { rowOneCell.setCellValue(columnGroupItem.getText().toString()); rowOneCell.setCellStyle(titleCellStyle); //莅丞舟絎 - sheet.setColumnWidth(startIndex, Math.max(12, columnGroupItem.getText().length() * 4) * 256); + sheet.setColumnWidth(startIndex, Math.min(255, Math.max(12, columnGroupItem.getText().length() * 4)) * 256); startIndex++; } else { List childrenList = columnGroupItem.getChildren(); @@ -930,7 +972,7 @@ public class ExcelUtilPlus { subHeader.setCellValue(childrenItem.getText().toString()); subHeader.setCellStyle(titleCellStyle); //莅丞舟絎 - sheet.setColumnWidth(startIndex + j, Math.max(12, childrenItem.getText().length() * 4) * 256); + sheet.setColumnWidth(startIndex + j, Math.min(255, Math.max(12, childrenItem.getText().length() * 4)) * 256); } startIndex += childrenList.size(); diff --git a/src/com/engine/salary/util/excel/ImportExcelResponse.java b/src/com/engine/salary/util/excel/ImportExcelResponse.java new file mode 100644 index 000000000..eac7409c7 --- /dev/null +++ b/src/com/engine/salary/util/excel/ImportExcelResponse.java @@ -0,0 +1,27 @@ +package com.engine.salary.util.excel; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ImportExcelResponse { + private Integer totalCount; + private Integer successCount; + private Integer errorCount; + private List errorData; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Error { + String message; + } +} diff --git a/src/com/engine/salary/util/xml/XStreamUtil.java b/src/com/engine/salary/util/xml/XStreamUtil.java new file mode 100644 index 000000000..d0a30e215 --- /dev/null +++ b/src/com/engine/salary/util/xml/XStreamUtil.java @@ -0,0 +1,68 @@ +package com.engine.salary.util.xml; + +import cn.hutool.core.util.StrUtil; +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.io.HierarchicalStreamDriver; +import com.thoughtworks.xstream.io.naming.NoNameCoder; +import com.thoughtworks.xstream.io.xml.DomDriver; +import com.thoughtworks.xstream.security.AnyTypePermission; + +import java.util.Objects; + +public class XStreamUtil { + //new NoNameCoder() 茹e _ 茴綺 __ 蘂 + private static final NoNameCoder noNameCoder = new NoNameCoder(); + + private static XStream xStream = new XStream(new DomDriver("UTF-8", noNameCoder)); + + private static XStream getxStream(HierarchicalStreamDriver driver){ + if(Objects.isNull(driver)){ + return xStream; + } + return new XStream(driver); + } + + public static T unmarshal(String pkgName, Class cla, String xmlStr, HierarchicalStreamDriver driver) { + xStream = getxStream(driver); + + if (StrUtil.isEmpty(pkgName)) { + //蕭筝坂茹e喝羲闆鐚紜篋遵阪駈 絋筝莅丞舟菴筝巡ラ + xStream.addPermission(AnyTypePermission.ANY); + } else { + //莅丞舟莅梧В鐚絋筝活丞舟篁ョ addPermission(AnyTypePermission.ANY) 篁f + xStream.allowTypesByWildcard(new String[]{pkgName}); + } + + //羈茹o筝銀戎XStream羈茹d篌筝筝ラ + xStream.autodetectAnnotations(true); + xStream.processAnnotations(cla); + + //綽順ユュ, 絋筝羞糸菴筝鐚綵Xmlユ筝榊ー絎篏筝羃≧絮ф銀ラ No such field + xStream.ignoreUnknownElements(); + + return (T) xStream.fromXML(xmlStr); + } + + public static T unmarshal(String pkgName, Class cla, String xmlStr) { + return unmarshal(pkgName, cla, xmlStr, null); + } + + public static T unmarshal(Class cla, String xmlStr) { + return unmarshal(null, cla, xmlStr, null); + } + + public static String marshal(Object o, DomDriver driver) { + xStream = getxStream(driver); + + //羈茹o筝銀戎 @XStreamAlias() 羈茹d篌筝筝篌ラ + xStream.autodetectAnnotations(true); + + //羈絎箙狗頑習√鐚篏水XStream絮LocalDateTime鐚 筝菴羈鐚篏睡@XStreamConverter(LocalDateTimeConverter.class)羈茹e筝絖罧灸 +// xStream.registerConverter(new LocalDateTimeConverter()); + return xStream.toXML(o); + } + + public static String marshal(Object o){ + return marshal(o, null); + } +} diff --git a/src/com/engine/salary/web/SISchemeController.java b/src/com/engine/salary/web/SISchemeController.java index bcf226914..89772a896 100644 --- a/src/com/engine/salary/web/SISchemeController.java +++ b/src/com/engine/salary/web/SISchemeController.java @@ -133,7 +133,7 @@ public class SISchemeController { User user = HrmUserVarify.getUser(request, response); Map map = ParamUtil.request2Map(request); map.put("insuranceSchemeReqParam", insuranceSchemeReqParam); - return new ResponseResult, Map>(user).run(getService(user)::update, map); + return new ResponseResult,String>(user).run(getService(user)::update, map); } /** diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 48f30de4c..c63cd1f8b 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -9,6 +9,7 @@ import com.engine.salary.service.SalaryAcctExcelService; import com.engine.salary.service.impl.SalaryAcctExcelServiceImpl; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.excel.ExcelPreviewDTO; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.*; import io.swagger.v3.oas.annotations.parameters.RequestBody; @@ -167,7 +168,7 @@ public class SalaryAcctController { @GET @Path("/compareSobConfig") @Produces(MediaType.APPLICATION_JSON) - public String compareSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "id") Long id) { + public String compareSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::compareSobConfig, id); } @@ -181,7 +182,7 @@ public class SalaryAcctController { @GET @Path("/updateSobConfig") @Produces(MediaType.APPLICATION_JSON) - public String updateSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "id") Long id) { + public String updateSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getSalaryAcctRecordWrapper(user)::updateSobConfig, id); } @@ -247,13 +248,13 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::checkTaxAgent, param.getSalaryAcctRecordId()); } - //傑域莎悟篋阪筝腮g軸箙>査 + //傑域莎悟篋阪 @POST - @Path("/acctemployee/refreshTaxAgent") + @Path("/acctemployee/refresh") @Produces(MediaType.APPLICATION_JSON) public String refreshTaxAgent(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctEmpRefreshTaxAgentParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::refreshTaxAgent, param.getSalaryAcctRecordId()); + return new ResponseResult(user).run(getSalaryAcctEmployeeWrapper(user)::refresh, param.getSalaryAcctRecordId()); } //篁ッ罸筝鎞羞糸莎悟篋阪 @@ -322,10 +323,6 @@ public class SalaryAcctController { if (StringUtils.isNotBlank(positionIds)) { param.setPositionIds(Arrays.stream(positionIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); } - String status = request.getParameter("status"); - if (StringUtils.isNotBlank(status)) { - param.setStatus(SalaryEmployeeStatusEnum.parseByValue(Integer.parseInt(status))); - } String statuses = request.getParameter("statuses"); if (StringUtils.isNotBlank(statuses)) { param.setStatuses(Arrays.stream(statuses.split(",")).map(String::valueOf).collect(Collectors.toList())); @@ -468,6 +465,14 @@ public class SalaryAcctController { } + @POST + @Path("/acctresult/lock") + @Produces(MediaType.APPLICATION_JSON) + public String lock(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultLockParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::lock, param); + } + //贋域莎蕁合絎倶 @POST @Path("/acctresult/updateLockStatus") @@ -587,9 +592,9 @@ public class SalaryAcctController { @POST @Path("/acctresult/cacheImportField") @Produces(MediaType.APPLICATION_JSON) - public String cacheImportField(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctImportParam param) { + public String cacheImportField(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult, String>(user).run(getSalaryAcctExcelService(user)::cacheImportField, param.getSalaryItems()); + return new ResponseResult(user).run(getSalaryAcctExcelService(user)::cacheImportField, param); } // 莎悟絲弱阪罧窮絖 @@ -634,7 +639,7 @@ public class SalaryAcctController { @Produces(MediaType.APPLICATION_JSON) public String exportTemplateList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultTemplateSaveParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::exportTemplateList, param); + return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::exportTemplateList, param); } @@ -692,7 +697,7 @@ public class SalaryAcctController { @Produces(MediaType.APPLICATION_JSON) public String importSalaryAcctResultPreview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctImportParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSalaryAcctExcelService(user)::previewImportSalaryAcctResult, param); + return new ResponseResult(user).run(getSalaryAcctExcelService(user)::previewImportSalaryAcctResult, param); } // **********************************莎悟膸 end*********************************/ diff --git a/src/com/engine/salary/web/SalaryCommonController.java b/src/com/engine/salary/web/SalaryCommonController.java index ca7a439dc..d28dc0d86 100644 --- a/src/com/engine/salary/web/SalaryCommonController.java +++ b/src/com/engine/salary/web/SalaryCommonController.java @@ -1,19 +1,19 @@ 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.util.ResponseResult; import com.engine.salary.util.SalaryEnumUtil; import com.engine.salary.wrapper.SalaryCommonWrapper; +import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; +import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import java.util.List; @@ -40,7 +40,7 @@ public class SalaryCommonController { @Produces(MediaType.APPLICATION_JSON) public String getCacheInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "key") String key) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getCacheInfo, key); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getCacheInfo, key); } @GET @@ -52,4 +52,25 @@ public class SalaryCommonController { } + /** + * 蕁級∽─粋丞舟 + * + * @param param + * @return + */ + @POST + @Path("/pageList/save/setting") + @Produces(MediaType.APPLICATION_JSON) + public String savePageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PageListSettingSaveParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::savePageListSetting, param); + } + + @POST + @Path("/pageList/get/setting") + @Produces(MediaType.APPLICATION_JSON) + public String getPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListSettingQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param); + } } diff --git a/src/com/engine/salary/web/SalaryItemController.java b/src/com/engine/salary/web/SalaryItemController.java index cae184b9b..91fa153ad 100644 --- a/src/com/engine/salary/web/SalaryItemController.java +++ b/src/com/engine/salary/web/SalaryItemController.java @@ -5,18 +5,18 @@ import com.engine.salary.component.WeaFormOption; import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO; import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO; import com.engine.salary.entity.salaryitem.dto.SysSalaryItemListDTO; -import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; -import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; -import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; -import com.engine.salary.entity.salaryitem.param.SysSalaryItemSearchParam; +import com.engine.salary.entity.salaryitem.param.*; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.excel.ImportExcelResponse; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.SalaryItemWrapper; import com.engine.salary.wrapper.SysSalaryItemWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -25,6 +25,11 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.time.LocalDate; import java.util.Collection; import java.util.List; import java.util.Map; @@ -37,6 +42,7 @@ import java.util.Map; * @author qiantao * @version 1.0 **/ +@Slf4j public class SalaryItemController { private SalaryItemWrapper getSalaryItemWrapper(User user) { @@ -183,6 +189,75 @@ public class SalaryItemController { return new ResponseResult(user).run(getSalaryItemWrapper(user)::update, saveParam); } + + @POST + @Path("/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemExportParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getSalaryItemWrapper(user).export(param); + String time = LocalDate.now().toString(); + String fileName = "莎蕁合" + time; + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + } catch (Exception e) { + log.error("莎蕁合筝莉遵け茣", e); + throw e; + } + } + + @POST + @Path("/downloadTemplate") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response downloadTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemDownloadTemplateParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getSalaryItemWrapper(user).downloadTemplate(param); + String time = LocalDate.now().toString(); + String fileName = "莎蕁合絲弱ユ─" + time; + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + } catch (Exception e) { + log.error("莎蕁合絲弱ユ─", e); + throw e; + } + } + + @POST + @Path("/preview") + @Produces(MediaType.APPLICATION_JSON) + public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemImportParam importParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryItemWrapper(user)::preview, importParam); + } + + @POST + @Path("/import") + @Produces(MediaType.APPLICATION_JSON) + public String importSalaryItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemImportParam importParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryItemWrapper(user)::importSalaryItem, importParam); + } + /**********************************絎箙莎蕁合 end*********************************/ diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index 8dda50225..cfb78aefd 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -99,6 +99,18 @@ public class SalarySobController { } + /** + * 莎茣絅茵鐚鐚 + */ + @POST + @Path("/listAllByAuth") + @Produces(MediaType.APPLICATION_JSON) + public String listAllByAuth(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalarySobWrapper(user)::listAllByAuth); + } + + /** * 莎茣絅堺篆≧茵 */ diff --git a/src/com/engine/salary/web/SalarySystemConfigController.java b/src/com/engine/salary/web/SalarySystemConfigController.java index ae1b52d67..4586af8e3 100644 --- a/src/com/engine/salary/web/SalarySystemConfigController.java +++ b/src/com/engine/salary/web/SalarySystemConfigController.java @@ -1,16 +1,16 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; -import com.engine.salary.sys.entity.param.AppSettingSaveParam; -import com.engine.salary.sys.entity.param.MatchEmployeeModeSaveParam; -import com.engine.salary.sys.entity.param.OrderRuleParam; -import com.engine.salary.sys.entity.param.SalarySysConfQueryParam; +import com.engine.salary.entity.config.SalaryConfig; +import com.engine.salary.sys.entity.param.*; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.AppSettingVO; import com.engine.salary.sys.entity.vo.OrderRuleVO; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; import com.engine.salary.util.ResponseResult; import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.xml.XStreamUtil; import com.engine.salary.wrapper.SalarySystemConfigWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; @@ -22,6 +22,15 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; +import java.io.BufferedWriter; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.io.Writer; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.time.LocalDate; import java.util.Map; @Slf4j @@ -199,6 +208,7 @@ public class SalarySystemConfigController { /** * 莎悟篋阪拷茹 + * * @param request * @param response * @param param @@ -214,6 +224,7 @@ public class SalarySystemConfigController { /** * 綏ヨ薤 + * * @param request * @param response * @param param @@ -229,6 +240,7 @@ public class SalarySystemConfigController { /** * ゅ筝腮恰 + * * @param request * @param response * @param param @@ -244,6 +256,7 @@ public class SalarySystemConfigController { /** * ゆ。罅 + * * @param request * @param response * @param param @@ -318,4 +331,46 @@ public class SalarySystemConfigController { User user = HrmUserVarify.getUser(request, response); return new ResponseResult>(user).run(getSalarySystemConfigWrapper(user)::getEncryptProgress, progressId); } + + @POST + @Path("/downloadConfig") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response downloadConfig(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + SalaryConfig salaryConfig = getSalarySystemConfigWrapper(user).downloadConfig(); + + String xml = XStreamUtil.marshal(salaryConfig); + + String fileName = "臀" + LocalDate.now(); + try { + fileName = URLEncoder.encode(fileName + ".xml", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + StreamingOutput output = outputStream -> { + Writer writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8)); + writer.write(xml); + writer.flush(); + }; + + + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + } catch (Exception e) { + log.error("筝莉処臀", e); + throw new RuntimeException("筝莉処臀", e); + } + } + + @POST + @Path("/uploadConfig") + @Produces(MediaType.APPLICATION_JSON) + public String initConfig(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody UploadConfigParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalarySystemConfigWrapper(user)::uploadConfig, param); + + } + } diff --git a/src/com/engine/salary/web/SpecialAddDeductionController.java b/src/com/engine/salary/web/SpecialAddDeductionController.java index 891f48d91..da67a4677 100644 --- a/src/com/engine/salary/web/SpecialAddDeductionController.java +++ b/src/com/engine/salary/web/SpecialAddDeductionController.java @@ -8,6 +8,7 @@ import com.engine.salary.entity.datacollection.param.SpecialAddDeductionParam; import com.engine.salary.entity.datacollection.param.SpecialAddDeductionQueryParam; import com.engine.salary.entity.datacollection.param.SpecialAddDeductionRecordDeleteParam; import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.excel.ExcelPreviewDTO; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.SpecialAddDeductionWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; @@ -271,7 +272,7 @@ public class SpecialAddDeductionController { @Produces(MediaType.APPLICATION_JSON) public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SpecialAddDeductionImportParam importParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult>(user).run(getSpecialAddDeductionWrapper(user)::preview, importParam); + return new ResponseResult(user).run(getSpecialAddDeductionWrapper(user)::preview, importParam); } @POST diff --git a/src/com/engine/salary/web/VariableArchiveController.java b/src/com/engine/salary/web/VariableArchiveController.java new file mode 100644 index 000000000..f179c9683 --- /dev/null +++ b/src/com/engine/salary/web/VariableArchiveController.java @@ -0,0 +1,259 @@ +package com.engine.salary.web; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveSaveParam; +import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.excel.ExcelPreviewDTO; +import com.engine.salary.wrapper.VariableArchiveWrapper; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.time.LocalDate; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 井-羌 + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author xzy + * @version 1.0 + **/ +@Slf4j +public class VariableArchiveController { + + private VariableArchiveWrapper getVariableArchiveWrapper(User user) { + return ServiceUtil.getService(VariableArchiveWrapper.class, user); + } + + /** + * 羌茵 + * + * @param request + * @param response + * @param queryParam + * @return + */ + @POST + @Path("/list") + @Produces(MediaType.APPLICATION_JSON) + public String list(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableArchiveWrapper(user)::list, queryParam); + } + + /** + * 羌膸 + * + * @param request + * @param response + * @param queryParam + * @return + */ + @POST + @Path("/getDetail") + @Produces(MediaType.APPLICATION_JSON) + public String getDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableArchiveWrapper(user)::getDetail, queryParam); + } + + /** + * キ綮堺貴罅f狗々篆≧ + * + * @param request + * @param response + * @return + */ + @POST + @Path("/getCreateForm") + @Produces(MediaType.APPLICATION_JSON) + public String getCreateForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableArchiveWrapper(user)::getCreateForm); + } + + /** + * 綮堺貴罅f + * + * @param request + * @param response + * @param saveParam + * @return + */ + @POST + @Path("/createData") + @Produces(MediaType.APPLICATION_JSON) + public String createData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + if (saveParam.getId() == null) { + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::createData, saveParam); + } else { + // 贋 + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::updateData, saveParam); + } + } + + + @GET + @Path("/downloadTemplate") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response downloadTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + VariableArchiveQueryParam param = buildParam(request); + + XSSFWorkbook workbook = getVariableArchiveWrapper(user).downloadTemplate(param); + String fileName = "羌絲弱ユ─" + LocalDate.now(); + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + + } catch (Exception e) { + log.error("羌絲弱ユ─水絽", e); + throw e; + } + } + + + /** + * 絲弱 + * + * @param + * @return + */ + @POST + @Path("/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveQueryParam param) { + try { + User user = HrmUserVarify.getUser(request, response); + // VariableArchiveQueryParam param = buildParam(request); + // String columns = request.getParameter("columns"); + // if (StringUtils.isNotBlank(columns)) { + // param.setColumns(Arrays.stream(columns.split(",")).collect(Collectors.toList())); + // } + + XSSFWorkbook workbook = getVariableArchiveWrapper(user).export(param); + + String fileName = null; + try { + fileName = URLEncoder.encode("羌" + LocalDate.now() + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + + response.setContentType("application/octet-stream"); + return Response.ok(output) + .header("Content-disposition", "attachment;filename=" + fileName) + .header("Cache-Control", "no-cache").build(); + } catch (Exception e) { + log.error("羌絲弱阪絽", e); + throw e; + } + } + + + + private VariableArchiveQueryParam buildParam(HttpServletRequest request) { + VariableArchiveQueryParam param = new VariableArchiveQueryParam(); + + String salaryMonthStr = request.getParameter("salaryMonth"); + if (StringUtils.isNotBlank(salaryMonthStr)) { + param.setSalaryMonth(salaryMonthStr); + param.setSalaryMonthDate(SalaryDateUtil.dateStrToLocalYearMonth(salaryMonthStr)); + } + String username = request.getParameter("username"); + if (StringUtils.isNotBlank(username)) { + param.setUsername(username); + } + + String departmentIdStr = request.getParameter("departmentIds"); + if (StringUtils.isNotBlank(departmentIdStr)) { + List departmentIds = Arrays.stream(departmentIdStr.split(",")).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); + param.setDepartmentIds(departmentIds); + } + String workcode = request.getParameter("workcode"); + if (StringUtils.isNotBlank(workcode)) { + param.setWorkcode(workcode); + } + + String hasData = request.getParameter("hasData"); + if (StringUtils.isNotBlank(hasData)) { + param.setHasData(hasData.equals("true")); + } + + return param; + } + + @POST + @Path("/preview") + @Produces(MediaType.APPLICATION_JSON) + public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveImportHandleParam importParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getVariableArchiveWrapper(user)::preview, importParam); + } + + @POST + @Path("/importData") + @Produces(MediaType.APPLICATION_JSON) + public String importAddUpDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveImportHandleParam importParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableArchiveWrapper(user)::importData, importParam); + } + + + /** + * @description + * @return String + * @author Harryxzy + * @date 2024/08/08 14:41 + */ + @POST + @Path("/deleteSelectData") + @Produces(MediaType.APPLICATION_JSON) + public String deleteSelectVariableArchive(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableArchiveQueryParam variableArchiveQueryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(user).run(getVariableArchiveWrapper(user)::deleteSelectVariableArchive, variableArchiveQueryParam.getIds()); + } + +} diff --git a/src/com/engine/salary/web/VariableItemController.java b/src/com/engine/salary/web/VariableItemController.java new file mode 100644 index 000000000..70146a585 --- /dev/null +++ b/src/com/engine/salary/web/VariableItemController.java @@ -0,0 +1,324 @@ +package com.engine.salary.web; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableItemQueryParam; +import com.engine.salary.entity.datacollection.param.VariableItemSaveParam; +import com.engine.salary.util.ResponseResult; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.wrapper.VariableItemWrapper; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.List; + +/** + * 井-羌蕁合 + *

Copyright: Copyright (c) 2024

+ *

Company: 羈緇莉篁

+ * + * @author xzy + * @version 1.0 + **/ +@Slf4j +public class VariableItemController { + + private VariableItemWrapper getVariableItemWrapper(User user) { + return ServiceUtil.getService(VariableItemWrapper.class, user); + } + + /** + * 羌蕁合茵 + * + * @return + */ + @POST + @Path("/listPage") + @Produces(MediaType.APPLICATION_JSON) + public String listPage(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableItemQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getVariableItemWrapper(user)::listPage, queryParam); + } + + + /** + * 羌蕁合莚膸篆≧ + * + * @return + */ + @POST + @Path("/getDetail") + @Produces(MediaType.APPLICATION_JSON) + public String getDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableItemQueryParam queryParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getVariableItemWrapper(user)::getDetail, queryParam.getId()); + } + + + /** + * 篆絖羌莎蕁合 + * + * @param request + * @param response + * @param saveParam + * @return + */ + @POST + @Path("/save") + @Produces(MediaType.APPLICATION_JSON) + public String saveVariableItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableItemSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + if (saveParam.getId() == null || saveParam.getId() <= 0) { + return new ResponseResult(request, response, user).run(getVariableItemWrapper(user)::save, saveParam); + } else { + return new ResponseResult(request, response, user).run(getVariableItemWrapper(user)::update, saveParam); + } + } + + + + /** + * ゆ貴莎蕁合 + * + * @param request + * @param response + * @param param + * @return + */ + @POST + @Path("/delete") + @Produces(MediaType.APPLICATION_JSON) + public String deleteItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody VariableItemQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, String>(request, response, user).run(getVariableItemWrapper(user)::deleteItems, param.getItemIds()); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // @GET + // @Path("/downloadTemplate") + // @Produces(MediaType.APPLICATION_OCTET_STREAM) + // public Response getAll(@Context HttpServletRequest request, @Context HttpServletResponse response) { + // try { + // User user = HrmUserVarify.getUser(request, response); + // OtherDeductionQueryParam param = buildParam(request); + // + // XSSFWorkbook workbook = getOtherDeductionWrapper(user).downloadTemplate(param); + // String fileName = "銀腮iゅ弱ユ─" + LocalDate.now(); + // try { + // fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + // } catch (UnsupportedEncodingException e) { + // e.printStackTrace(); + // } + // + // StreamingOutput output = outputStream -> { + // workbook.write(outputStream); + // outputStream.flush(); + // }; + // response.setContentType("application/octet-stream"); + // return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + // + // } catch (Exception e) { + // log.error("銀腮iゅ弱ユ─水絽", e); + // throw e; + // } + // } + // + // + // /** + // * 絲弱 + // * + // * @param + // * @return + // */ + // @GET + // @Path("/export") + // @Produces(MediaType.APPLICATION_OCTET_STREAM) + // public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response) { + // try { + // User user = HrmUserVarify.getUser(request, response); + // + // OtherDeductionQueryParam param = buildParam(request); + // + // XSSFWorkbook workbook = getOtherDeductionWrapper(user).export(param); + // + // String fileName = null; + // try { + // fileName = URLEncoder.encode("銀腮i" + LocalDate.now() + ".xlsx", "UTF-8"); + // } catch (UnsupportedEncodingException e) { + // e.printStackTrace(); + // } + // + // StreamingOutput output = outputStream -> { + // workbook.write(outputStream); + // outputStream.flush(); + // }; + // + // response.setContentType("application/octet-stream"); + // return Response.ok(output) + // .header("Content-disposition", "attachment;filename=" + fileName) + // .header("Cache-Control", "no-cache").build(); + // } catch (Exception e) { + // log.error("銀腮iゅ弱阪絽", e); + // throw e; + // } + // } + // + // + // + // + // @Nullable + // private OtherDeductionQueryParam buildParam(HttpServletRequest request) { + // OtherDeductionQueryParam param = new OtherDeductionQueryParam(); + // String ids = request.getParameter("ids"); + // if (StringUtils.isNotBlank(ids)) { + // param.setIds(Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList())); + // } + // String keyword = request.getParameter("keyword"); + // if (StringUtils.isNotBlank(keyword)) { + // param.setKeyword(keyword); + // } + // String id = request.getParameter("id"); + // if (StringUtils.isNotBlank(id)) { + // param.setId(Long.valueOf(id)); + // } + // String declareMonth = request.getParameter("declareMonth"); + // if (StringUtils.isNotBlank(declareMonth)) { + // param.setDeclareMonth(Arrays.stream(declareMonth.split(",")).map(e -> e + "-01 00:00:00").collect(Collectors.toList())); + // param.setDeclareMonthDate(Arrays.stream(declareMonth.split(",")).map(e -> e + "-01 00:00:00").map(SalaryDateUtil::dateStrToLocalTime).collect(Collectors.toList())); + // } + // + // String username = request.getParameter("username"); + // if (StringUtils.isNotBlank(username)) { + // param.setUsername(username); + // } + // String employeeId = request.getParameter("employeeId"); + // if (StringUtils.isNotBlank(employeeId)) { + // param.setEmployeeId(Long.valueOf(employeeId)); + // } + // String taxAgentId = request.getParameter("taxAgentId"); + // if (StringUtils.isNotBlank(taxAgentId)) { + // param.setTaxAgentId(Long.valueOf(taxAgentId)); + // } + // String departmentIds = request.getParameter("departmentIds"); + // if (StringUtils.isNotBlank(departmentIds)) { + // param.setDepartmentIds(Arrays.stream(departmentIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); + // } + // String jobNum = request.getParameter("jobNum"); + // if (StringUtils.isNotBlank(jobNum)) { + // param.setJobNum(jobNum); + // } + // String idNo = request.getParameter("idNo"); + // if (StringUtils.isNotBlank(idNo)) { + // param.setIdNo(idNo); + // } + // String hiredate = request.getParameter("hiredate"); + // if (StringUtils.isNotBlank(hiredate)) { + // SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + // List dates = Arrays.stream(hiredate.split(",")).map(d -> { + // try { + // return format.parse(d); + // } catch (ParseException e) { + // e.printStackTrace(); + // } + // return null; + // }).collect(Collectors.toList()); + // param.setHiredate(dates); + // } + // String mobile = request.getParameter("mobile"); + // if (StringUtils.isNotBlank(mobile)) { + // param.setMobile(mobile); + // } + // String otherTaxExemptDeductionId = request.getParameter("otherTaxExemptDeductionId"); + // if (StringUtils.isNotBlank(otherTaxExemptDeductionId)) { + // param.setOtherTaxExemptDeductionId(Long.valueOf(otherTaxExemptDeductionId)); + // } + // + // String hasData = request.getParameter("hasData"); + // if (StringUtils.isNotBlank(hasData)) { + // param.setHasData("true".equals(hasData)); + // } + // return param; + // } + // + // @POST + // @Path("/preview") + // @Produces(MediaType.APPLICATION_JSON) + // public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionImportParam importParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::preview, importParam); + // } + // + // @POST + // @Path("/importData") + // @Produces(MediaType.APPLICATION_JSON) + // public String importAddUpDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionImportParam importParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::importData, importParam); + // } + // + // /** + // * @description キ銀腮iゆ井 + // * @return String + // * @author Harryxzy + // * @date 2022/10/31 13:42 + // */ + // @POST + // @Path("/getData") + // @Produces(MediaType.APPLICATION_JSON) + // public String getOtherDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody OtherDeductionParam otherDeductionParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult(user).run(getOtherDeductionWrapper(user)::getOtherDeduction, otherDeductionParam); + // } + // + // /** + // * @description ゆ銀腮i + // * @return String + // * @author Harryxzy + // * @date 2022/10/27 14:41 + // */ + // @POST + // @Path("/deleteSelectData") + // @Produces(MediaType.APPLICATION_JSON) + // public String deleteSelectOtherDeduction(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AddUpDeductionRecordDeleteParam otherDeductionDeleteParam) { + // User user = HrmUserVarify.getUser(request, response); + // return new ResponseResult>(user).run(getOtherDeductionWrapper(user)::deleteSelectData, otherDeductionDeleteParam); + // } + +} diff --git a/src/com/engine/salary/wrapper/AttendQuoteWrapper.java b/src/com/engine/salary/wrapper/AttendQuoteWrapper.java index ec232baaf..d0baa414f 100644 --- a/src/com/engine/salary/wrapper/AttendQuoteWrapper.java +++ b/src/com/engine/salary/wrapper/AttendQuoteWrapper.java @@ -107,7 +107,7 @@ public class AttendQuoteWrapper extends Service { String salaryYearMonthStr = checkOperationParam.getSalaryYearMonthStr(); YearMonth yearMonth = SalaryDateUtil.String2YearMonth(salaryYearMonthStr); checkOperationParam.setSalaryYearMonth(yearMonth); - return getAttendQuoteService(user).checkOperation(checkOperationParam.getSalaryYearMonth(), checkOperationParam.getSalarySobId()); + return getAttendQuoteService(user).checkOperation(checkOperationParam.getSalaryYearMonth(), checkOperationParam.getSalarySobIds()); } /** diff --git a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java index c0a01c50e..4d2146e5d 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java @@ -188,11 +188,11 @@ public class SalaryAcctEmployeeWrapper extends Service { } /** - * 傑遺肩腮g軸箙>査 + * 傑井悟篋阪 * * @param salaryAcctRecordId 莎悟莅医id */ - public void refreshTaxAgent(Long salaryAcctRecordId) { + public void refresh(Long salaryAcctRecordId) { getSalaryAcctEmployeeService(user).refresh(salaryAcctRecordId); } diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 98030a661..cf5763f80 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -16,7 +16,6 @@ import com.engine.salary.service.*; import com.engine.salary.service.impl.*; 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.page.PageInfo; import com.engine.salary.util.valid.ValidUtil; @@ -191,6 +190,11 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult getSalaryAcctResultService(user).save(saveParam); } + + public void lock(SalaryAcctResultLockParam param) { + getSalaryAcctResultService(user).lock(param); + } + /** * 贋域莎悟膸主絎倶 * @@ -208,10 +212,6 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult public void calculate(SalaryAcctCalculateParam calculateParam) { log.info("綣紮悟V1{}", calculateParam); - //ヨ; - List emps = getSalaryEmployeeService(user).listAllForReport(); - calculateParam.setEmps(SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId)); - //綵脂篋阪 DataCollectionEmployee simpleEmployee = new DataCollectionEmployee(); simpleEmployee.setEmployeeId((long) user.getUID()); @@ -220,6 +220,7 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult // 罍ユ罩e悟筝 ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId()); if (Objects.nonNull(salaryAcctProgressDTO) && salaryAcctProgressDTO.isStatus() && Optional.ofNullable(salaryAcctProgressDTO.getProgress()).orElse(BigDecimal.ZERO).compareTo(BigDecimal.ONE) < 0) { + log.warn("罩e悟筝鐚羈罨≧ц"+calculateParam.getSalaryAcctRecordId()); return; } // 紮菴綺 diff --git a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java index 17d1d9f53..50b6d10a5 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java @@ -256,7 +256,10 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt List listResult = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(queryParam, salaryItemIds); listResult = listResult.stream() .filter(r -> { - DataCollectionEmployee employee = employeeMap.getOrDefault(r.getEmployeeId(), new DataCollectionEmployee()); + DataCollectionEmployee employee = employeeMap.get(r.getEmployeeId()); + if (employee == null) { + return false; + } String username = queryParam.getUsername(); List departmentIds = queryParam.getDepartmentIds(); List positionIds = queryParam.getPositionIds(); diff --git a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java index baec86d91..e66e09121 100644 --- a/src/com/engine/salary/wrapper/SalaryCommonWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryCommonWrapper.java @@ -2,10 +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.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.Map; + public class SalaryCommonWrapper extends Service { @@ -13,11 +19,24 @@ public class SalaryCommonWrapper extends Service { return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); } - public String getCacheInfo(String key) { + private SettingService getSettingService(User user) { + return ServiceUtil.getService(SettingServiceImpl.class, user); + } + + public Object getCacheInfo(String key) { return getSalaryCacheService(user).get(key); } public void removeCache(String key) { getSalaryCacheService(user).remove(key); } + + public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) { + getSettingService(user).savePageListSetting(pageListSettingSaveParam); + } + + + public Map getPageListSetting(PageListSettingQueryParam param) { + return getSettingService(user).getPageListSetting(param); + } } diff --git a/src/com/engine/salary/wrapper/SalaryItemWrapper.java b/src/com/engine/salary/wrapper/SalaryItemWrapper.java index 1407d0f8d..15e935539 100644 --- a/src/com/engine/salary/wrapper/SalaryItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryItemWrapper.java @@ -2,17 +2,15 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.component.WeaFormOption; import com.engine.salary.config.SalaryElogConfig; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.bo.SalaryItemBO; import com.engine.salary.entity.salaryitem.bo.SysSalaryItemBO; import com.engine.salary.entity.salaryitem.dto.SalaryItemFormDTO; import com.engine.salary.entity.salaryitem.dto.SalaryItemListDTO; -import com.engine.salary.entity.salaryitem.param.SalaryItemSaveParam; -import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam; -import com.engine.salary.entity.salaryitem.param.SyncSalaryItemParam; +import com.engine.salary.entity.salaryitem.param.*; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salaryitem.po.SysSalaryItemPO; import com.engine.salary.entity.salarysob.po.SalarySobItemPO; @@ -26,12 +24,14 @@ 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.ImportExcelResponse; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.valid.RuntimeTypeEnum; import com.engine.salary.util.valid.ValidUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; import java.util.*; @@ -290,6 +290,7 @@ public class SalaryItemWrapper extends Service { /** * キ莎蕁合篋茣絅筝篏睡 + * * @param salaryItemId */ public List> getSalarySobBySalaryItem(Long salaryItemId) { @@ -298,9 +299,26 @@ public class SalaryItemWrapper extends Service { /** * 絨莎蕁合膊∞筝篆≧罩ヨ活侃絅 + * * @param syncSalaryItemParam */ public void syncSalaryItemToSalarySobItem(SyncSalaryItemParam syncSalaryItemParam) { getSalaryItemService(user).syncSalaryItemToSalarySobItem(syncSalaryItemParam); } + + public XSSFWorkbook export(SalaryItemExportParam param) { + return getSalaryItemService(user).export(param); + } + + public Map preview(SalaryItemImportParam param) { + return getSalaryItemService(user).preview(param); + } + public ImportExcelResponse importSalaryItem(SalaryItemImportParam param) { + return getSalaryItemService(user).importSalaryItem(param); + } + + + public XSSFWorkbook downloadTemplate(SalaryItemDownloadTemplateParam param) { + return getSalaryItemService(user).downloadTemplate(param); + } } diff --git a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java index e85253543..7d201108c 100644 --- a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java @@ -1,5 +1,6 @@ package com.engine.salary.wrapper; +import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.SalarySobExtRangePO; @@ -17,8 +18,10 @@ import org.apache.commons.lang.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; +import java.util.ArrayList; import java.util.Collection; import java.util.Map; +import java.util.Optional; /** * 莎茣絅篋阪 @@ -73,6 +76,31 @@ public class SalarySobRangeWrapper extends Service { * @param saveParam 篆絖 */ public void save(SalarySobRangeSaveParam saveParam) { + Optional.ofNullable(saveParam.getTargetParams()).orElse(new ArrayList<>()) + .forEach(targetParam -> { + if (StrUtil.isNotBlank(targetParam.getTarget())) { + targetParam.setTarget(targetParam.getTarget() + .replace("鐔鐔鐔鐔鐔鐔", "select") + .replace("鐚鰹璽鐚鐚ワ治鐚", "SELECT") + .replace("鐔鐔鐔鐔", "join") + .replace("鐚鐚鐚鐚", "JOIN") + .replace("鐔鐔鐔", "and") + .replace("鐚¥汐鐚", "AND") + .replace("鐔鐔", "or") + .replace("鐚鐚", "OR") + .replace("鐔鐔", "in") + .replace("鐚鐚", "IN") + .replace("鐔鐔鐔鐔", "like") + .replace("鐚鐚鐚鐚", "LIKE") + .replace("鐔鐔鐔鐔鐔鐔", "exists") + .replace("鐚ワ叱鐚鐚鰹軸鐚", "EXISTS") + .replace("鐔鐔鐔鐔鐔鐔鐔", "between") + .replace("鐚鐚ワ軸鐚件璽鐚ワ汐", "BETWEEN") + .replace("鐔鐔鐔鐔鐔", "union") + .replace("鐚居汐鐚鐚鐚", "UNION")); + } + }); + getSalarySobRangeService(user).save(saveParam); } diff --git a/src/com/engine/salary/wrapper/SalarySobWrapper.java b/src/com/engine/salary/wrapper/SalarySobWrapper.java index ed64c571a..d5ab26b6b 100644 --- a/src/com/engine/salary/wrapper/SalarySobWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobWrapper.java @@ -109,6 +109,15 @@ public class SalarySobWrapper extends Service { return getSalarySobService(user).listAll(); } + /** + * 莎茣絅茵鐚鐚 + * + * @return + */ + public List listAllByAuth() { + return getSalarySobService(user).listAllByAuth(); + } + private void handleSalarySobBackItemHistory(SalarySobListQueryParam queryParam) { queryParam.setPageSize(100000); List list = getSalarySobService(user).listPageByParam(queryParam).getList(); diff --git a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java index 46b470aa4..d6a2c3f3c 100644 --- a/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySystemConfigWrapper.java @@ -2,13 +2,21 @@ package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; -import com.engine.salary.sys.entity.param.AppSettingSaveParam; -import com.engine.salary.sys.entity.param.MatchEmployeeModeSaveParam; -import com.engine.salary.sys.entity.param.OrderRuleParam; -import com.engine.salary.sys.entity.param.SalarySysConfQueryParam; +import com.engine.salary.cache.SalaryCacheKey; +import com.engine.salary.entity.config.SalaryConfig; +import com.engine.salary.entity.salaryarchive.config.ArchiveFieldConfig; +import com.engine.salary.entity.salaryitem.config.SalaryItemAllConfig; +import com.engine.salary.entity.taxagent.config.TaxAgentConfig; +import com.engine.salary.entity.taxagent.po.TaxAgentBasePO; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.service.*; +import com.engine.salary.service.impl.*; +import com.engine.salary.sys.config.SysConfig; +import com.engine.salary.sys.entity.param.*; import com.engine.salary.sys.entity.po.SalarySysConfPO; import com.engine.salary.sys.entity.vo.AppSettingVO; import com.engine.salary.sys.entity.vo.OrderRuleVO; +import com.engine.salary.sys.entity.vo.UploadConfigResponse; import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum; import com.engine.salary.sys.service.SalarySysConfService; import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl; @@ -17,10 +25,20 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.RuntimeTypeEnum; import com.engine.salary.util.valid.ValidUtil; +import com.engine.salary.util.xml.XStreamUtil; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.util.IOUtils; +import weaver.file.ImageFileManager; import weaver.general.BaseBean; import weaver.hrm.User; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -33,12 +51,37 @@ import java.util.Map; * @author qiantao * @version 1.0 **/ +@Slf4j public class SalarySystemConfigWrapper extends Service { private SalarySysConfService getSalarySysConfService(User user) { return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + private SalaryArchiveItemService getSalaryArchiveItemService(User user) { + return ServiceUtil.getService(SalaryArchiveItemServiceImpl.class, user); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private SalaryFormulaService getSalaryFormulaService(User user) { + return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); + } + + private TaxAgentBaseService getTaxAgentBaseService(User user) { + return ServiceUtil.getService(TaxAgentBaseServiceImpl.class, user); + } + + private SalaryCacheService getSalaryCacheService(User user) { + return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); + } + public Map info() { BaseBean baseBean = new BaseBean(); String log = baseBean.getPropValue("hrmSalary", "log"); @@ -136,12 +179,12 @@ public class SalarySystemConfigWrapper extends Service { public AppSettingVO appSetting() { - return getSalarySysConfService(user).appSetting(); + return getSalarySysConfService(user).appSetting(); } public Map saveEncryptSetting(AppSettingSaveParam param) { - return getSalarySysConfService(user).saveEncryptSetting(param); + return getSalarySysConfService(user).saveEncryptSetting(param); } public Map getEncryptProgress(String progressId) { @@ -167,4 +210,92 @@ public class SalarySystemConfigWrapper extends Service { public void saveSalarySendFeedback(SalarySysConfPO param) { getSalarySysConfService(user).saveSalarySendFeedback(param); } + + + public SalaryConfig downloadConfig() { + Boolean chief = getTaxAgentService(user).isChief((long) user.getUID()); + if (!chief) { + throw new SalaryRunTimeException("筝紫∞鐚羈菴ュ咲臀鐚"); + } + + + SalaryConfig salaryConfig = new SalaryConfig(); + SysConfig sysConfig = getSalarySysConfService(user).getConfig(); + salaryConfig.setSysConfig(sysConfig); + +// FormluaConfig formluaConfig = getSalaryFormulaService(user).getConfig(); +// salaryConfig.setFormluaConfig(formluaConfig); + + SalaryItemAllConfig salaryItemConfig = getSalaryItemService(user).getConfig(); + salaryConfig.setSalaryItemConfig(salaryItemConfig); + + ArchiveFieldConfig archiveFieldConfig = getSalaryArchiveItemService(user).getConfig(); + salaryConfig.setArchiveFieldConfig(archiveFieldConfig); + + TaxAgentBasePO taxAgentBaseConfig = getTaxAgentBaseService(user).getConfig(); + salaryConfig.setTaxAgentBaseConfig(taxAgentBaseConfig); + + List taxAgentConfigs = getTaxAgentService(user).getConfig(); + salaryConfig.setTaxAgentConfigs(taxAgentConfigs); + + return salaryConfig; + } + + public UploadConfigResponse uploadConfig(UploadConfigParam param) { + Boolean chief = getTaxAgentService(user).isChief((long) user.getUID()); + if (!chief) { + throw new SalaryRunTimeException("筝紫∞鐚羈菴ラ臀鐚"); + } + + UploadConfigResponse lastResponse = getSalaryCacheService(user).get(SalaryCacheKey.UPLOAD_SALARY_CONFIG); + if (lastResponse != null && !lastResponse.isFinish()) { + throw new SalaryRunTimeException("菴ヤ算∴茵筝鐚莚欠緇筝罨>算≦鐚"); + } + +// LocalRunnable localRunnable = new LocalRunnable() { +// @Override +// public void execute() { + UploadConfigResponse response = UploadConfigResponse.builder().finish(false).results(new ArrayList<>()).build(); + getSalaryCacheService(user).set(SalaryCacheKey.UPLOAD_SALARY_CONFIG, response); + + InputStream fileInputStream = null; + try { + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); + Reader reader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8); + BufferedReader bufferedReader = new BufferedReader(reader); + String line; + StringBuilder xml = new StringBuilder(); + while ((line = bufferedReader.readLine()) != null) { + xml.append(line); + } + + SalaryConfig config = XStreamUtil.unmarshal(SalaryConfig.class, xml.toString()); + + UploadConfigResponse.Result sysConfigResult = getSalarySysConfService(user).parseConfig(config.getSysConfig()); + response.getResults().add(sysConfigResult); + + UploadConfigResponse.Result salaryItemResult = getSalaryItemService(user).parseConfig(config.getSalaryItemConfig()); + response.getResults().add(salaryItemResult); + + UploadConfigResponse.Result archiveFieldResult = getSalaryArchiveItemService(user).parseConfig(config.getArchiveFieldConfig()); + response.getResults().add(archiveFieldResult); + + UploadConfigResponse.Result taxAgentBaseResult = getTaxAgentBaseService(user).parseConfig(config.getTaxAgentBaseConfig()); + response.getResults().add(taxAgentBaseResult); + + List results = getTaxAgentService(user).parseConfig(config.getTaxAgentConfigs()); + response.getResults().addAll(results); + } catch (Exception e) { + log.error("莉遵け茣", e); + } finally { + response.setFinish(true); + IOUtils.closeQuietly(fileInputStream); + } + getSalaryCacheService(user).set(SalaryCacheKey.UPLOAD_SALARY_CONFIG, response); +// } +// }; +// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.HRM, "UPLOAD_SALARY_CONFIG", localRunnable); + + return response; + } } diff --git a/src/com/engine/salary/wrapper/SpecialAddDeductionWrapper.java b/src/com/engine/salary/wrapper/SpecialAddDeductionWrapper.java index c5e571950..1e2586096 100644 --- a/src/com/engine/salary/wrapper/SpecialAddDeductionWrapper.java +++ b/src/com/engine/salary/wrapper/SpecialAddDeductionWrapper.java @@ -18,6 +18,7 @@ import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; import com.engine.salary.service.impl.SpecialAddDeductionServiceImpl; import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.excel.ExcelPreviewDTO; import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; @@ -154,7 +155,7 @@ public class SpecialAddDeductionWrapper extends Service { /** * 蘂茹 */ - public Map preview(SpecialAddDeductionImportParam importParam){ + public ExcelPreviewDTO preview(SpecialAddDeductionImportParam importParam){ return getSpecialAddDeductionService(user).preview(importParam); } diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java index 961a6d894..d83fb5a1f 100644 --- a/src/com/engine/salary/wrapper/TaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -1,5 +1,6 @@ package com.engine.salary.wrapper; +import cn.hutool.core.util.StrUtil; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; @@ -412,6 +413,34 @@ public class TaxAgentWrapper extends Service { * @return */ public String saveRange(TaxAgentRangeSaveParam saveParam) { + //絨selectXSS菴羯ら綣絽後膃莉√ + + Optional.ofNullable(saveParam.getTargetParams()).orElse(new ArrayList<>()) + .forEach(targetParam -> { + if (StrUtil.isNotBlank(targetParam.getTarget())) { + targetParam.setTarget(targetParam.getTarget() + .replace("鐔鐔鐔鐔鐔鐔", "select") + .replace("鐚鰹璽鐚鐚ワ治鐚", "SELECT") + .replace("鐔鐔鐔鐔", "join") + .replace("鐚鐚鐚鐚", "JOIN") + .replace("鐔鐔鐔", "and") + .replace("鐚¥汐鐚", "AND") + .replace("鐔鐔", "or") + .replace("鐚鐚", "OR") + .replace("鐔鐔", "in") + .replace("鐚鐚", "IN") + .replace("鐔鐔鐔鐔", "like") + .replace("鐚鐚鐚鐚", "LIKE") + .replace("鐔鐔鐔鐔鐔鐔", "exists") + .replace("鐚ワ叱鐚鐚鰹軸鐚", "EXISTS") + .replace("鐔鐔鐔鐔鐔鐔鐔", "between") + .replace("鐚鐚ワ軸鐚件璽鐚ワ汐", "BETWEEN") + .replace("鐔鐔鐔鐔鐔", "union") + .replace("鐚居汐鐚鐚鐚", "UNION")); + } + }); + + getTaxAgentManageRangeService(user).save(saveParam); return StringUtils.EMPTY; } diff --git a/src/com/engine/salary/wrapper/VariableArchiveWrapper.java b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java new file mode 100644 index 000000000..61f9dcc86 --- /dev/null +++ b/src/com/engine/salary/wrapper/VariableArchiveWrapper.java @@ -0,0 +1,130 @@ +package com.engine.salary.wrapper; + +import com.cloudstore.eccom.pc.table.WeaTableColumn; +import com.cloudstore.eccom.result.WeaResultMsg; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.component.SalaryWeaTable; +import com.engine.salary.entity.datacollection.bo.VariableArchiveBO; +import com.engine.salary.entity.datacollection.dto.VariableArchiveListDTO; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableArchiveImportHandleParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveQueryParam; +import com.engine.salary.entity.datacollection.param.VariableArchiveSaveParam; +import com.engine.salary.entity.datacollection.po.VariableItemPO; +import com.engine.salary.service.VariableArchiveService; +import com.engine.salary.service.VariableItemService; +import com.engine.salary.service.impl.VariableArchiveServiceImpl; +import com.engine.salary.service.impl.VariableItemServiceImpl; +import com.engine.salary.util.excel.ExcelPreviewDTO; +import com.engine.salary.util.page.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.hrm.User; + +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: 羌 + * @Author: xzy + * @Date: 2024/8/6 17:39 + */ +@Slf4j +public class VariableArchiveWrapper extends Service { + private VariableArchiveService getVariableArchiveService(User user) { + return ServiceUtil.getService(VariableArchiveServiceImpl.class, user); + } + + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + + /** + * 井-羌茵(蕁) + * + * @param queryParam + * @return + */ + public Map list(VariableArchiveQueryParam queryParam) { + + //莎罅f茵 + 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); + pageInfos.setTotal(pageInfo.getTotal()); + pageInfos.setPageNum(pageInfo.getPageNum()); + pageInfos.setPageSize(pageInfo.getPageSize()); + + //膸茖 + List columns = VariableArchiveBO.buildVariableArchiveTable(variableItems); + + SalaryWeaTable table = new SalaryWeaTable(user, VariableArchiveListDTO.class); + table.setColumns(columns); + WeaResultMsg result = new WeaResultMsg(false); + result.putAll(table.makeDataResult()); + result.success(); + + Map datas = new HashMap<>(); + datas.put("pageInfo", pageInfos); + datas.put("dataKey", result.getResultMap()); + + return datas; + } + + /** + * 綮堺貴罅f + * + * @param saveParam + */ + public void createData(VariableArchiveSaveParam saveParam) { + getVariableArchiveService(user).createData(saveParam); + } + + /** + * 羌罅f膸 + * + * @param queryParam + * @return + */ + public Map getDetail(VariableArchiveQueryParam queryParam) { + return getVariableArchiveService(user).getDetail(queryParam); + } + + public List getCreateForm() { + return getVariableArchiveService(user).getCreateForm(); + } + + public XSSFWorkbook downloadTemplate(VariableArchiveQueryParam param) { + return getVariableArchiveService(user).downloadTemplate(param); + } + + public ExcelPreviewDTO preview(VariableArchiveImportHandleParam importParam) { + return getVariableArchiveService(user).preview(importParam); + } + + public Map importData(VariableArchiveImportHandleParam importParam) { + return getVariableArchiveService(user).importData(importParam); + } + + public XSSFWorkbook export(VariableArchiveQueryParam param) { + return getVariableArchiveService(user).export(param); + } + + public void deleteSelectVariableArchive(Collection deleteIds) { + getVariableArchiveService(user).deleteSelectVariableArchive(deleteIds); + } + + public void updateData(VariableArchiveSaveParam updateParam) { + getVariableArchiveService(user).updateData(updateParam); + } +} diff --git a/src/com/engine/salary/wrapper/VariableItemWrapper.java b/src/com/engine/salary/wrapper/VariableItemWrapper.java new file mode 100644 index 000000000..92119e90f --- /dev/null +++ b/src/com/engine/salary/wrapper/VariableItemWrapper.java @@ -0,0 +1,75 @@ +package com.engine.salary.wrapper; + + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.datacollection.dto.VariableItemListDTO; +import com.engine.salary.entity.datacollection.param.VariableItemQueryParam; +import com.engine.salary.entity.datacollection.param.VariableItemSaveParam; +import com.engine.salary.service.VariableItemService; +import com.engine.salary.service.impl.VariableItemServiceImpl; +import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.valid.ValidUtil; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.User; + +import java.util.List; + +/** + * @Description: 羌蕁合 + * @Author: xzy + * @Date: 2024/8/6 17:39 + */ +@Slf4j +public class VariableItemWrapper extends Service { + private VariableItemService getVariableItemService(User user) { + return ServiceUtil.getService(VariableItemServiceImpl.class, user); + } + + /** + * キ羌蕁合 + * + * @param queryParam + */ + public PageInfo listPage(VariableItemQueryParam queryParam) { + return getVariableItemService(user).listPage(queryParam); + } + + /** + * 医産羌蕁合 + * + * @param saveParam + */ + public void save(VariableItemSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + getVariableItemService(user).save(saveParam); + } + + /** + * 贋井貴蕁合 + * + * @param saveParam + */ + public void update(VariableItemSaveParam saveParam) { + ValidUtil.doValidator(saveParam); + getVariableItemService(user).update(saveParam); + } + + /** + * ゆ貴莎蕁合 + * + * @param itemIds + */ + public void deleteItems(List itemIds) { + getVariableItemService(user).deleteItems(itemIds); + } + + /** + * 羌蕁合莚膸篆≧ + * + * @param id + */ + public VariableItemListDTO getDetail(Long id) { + return getVariableItemService(user).getDetail(id); + } +}