Merge branch 'release/2.16.1.2410.01' into custom/宁波精华

# Conflicts:
#	src/com/engine/salary/entity/salaryacct/bo/SalaryAcctResultBO.java
#	src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java
#	src/com/engine/salary/mapper/datacollection/EmployMapper.java
#	src/com/engine/salary/mapper/datacollection/EmployMapper.xml
#	src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java
#	src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml
#	src/com/engine/salary/mapper/taxagent/TaxAgentMapper.java
#	src/com/engine/salary/mapper/taxagent/TaxAgentMapper.xml
#	src/com/engine/salary/service/SalaryAcctEmployeeService.java
#	src/com/engine/salary/service/SalaryEmployeeService.java
#	src/com/engine/salary/service/TaxAgentService.java
#	src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java
#	src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java
#	src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java
#	src/com/engine/salary/service/impl/TaxAgentServiceImpl.java
This commit is contained in:
Harryxzy 2024-10-18 17:11:03 +08:00
commit 558304043c
301 changed files with 11490 additions and 1610 deletions

Binary file not shown.

View File

@ -1,5 +1,5 @@
log=false
defaultCloseNonStandard149=true
AESEncryptScrect=990EB004A1C862721C1513AE90038C9E
version=2.15.1.2407.01
version=2.16.1.2410.01
openFormulaForcedEditing=false

View File

@ -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;
/

View File

@ -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)
);
/

View File

@ -0,0 +1,3 @@
alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0);
/

View File

@ -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
);
/

View File

@ -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 ;
/

View File

@ -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;
/

View File

@ -0,0 +1,8 @@
ALTER TABLE hrsa_acct_result_template ADD (
type number NULL
);
/
update hrsa_acct_result_template set type = 0;
/

View File

@ -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)
);
/

View File

@ -0,0 +1,3 @@
alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL;
/

View File

@ -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;
/

View File

@ -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)
);
/

View File

@ -0,0 +1,3 @@
alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0);
/

View File

@ -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
);
/

View File

@ -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 ;
/

View File

@ -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;
/

View File

@ -0,0 +1,8 @@
ALTER TABLE hrsa_acct_result_template ADD (
type number NULL
);
/
update hrsa_acct_result_template set type = 0;
/

View File

@ -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)
);
/

View File

@ -0,0 +1,3 @@
alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL;
/

View File

@ -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;
/

View File

@ -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)
);
/

View File

@ -0,0 +1,3 @@
alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0);
/

View File

@ -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
);
/

View File

@ -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 ;
/

View File

@ -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;
/

View File

@ -0,0 +1,8 @@
ALTER TABLE hrsa_acct_result_template ADD (
type number NULL
);
/
update hrsa_acct_result_template set type = 0;
/

View File

@ -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)
);
/

View File

@ -0,0 +1,3 @@
alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL;
/

View File

@ -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
;

View File

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

View File

@ -0,0 +1 @@
alter table hrsa_variable_archive add tax_agent_id bigint;

View File

@ -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 ;

View File

@ -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
;

View File

@ -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
;

View File

@ -0,0 +1,3 @@
ALTER TABLE hrsa_acct_result_template ADD COLUMN type int(0) NULL ;
update hrsa_acct_result_template set type = 0;

View File

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

View File

@ -0,0 +1 @@
ALTER TABLE hrsa_salary_acct_emp ADD COLUMN lock_items varchar(4000);

View File

@ -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
/

View File

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

View File

@ -0,0 +1,2 @@
alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0)
/

View File

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

View File

@ -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
/

View File

@ -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
/

View File

@ -0,0 +1,7 @@
ALTER TABLE hrsa_acct_result_template ADD (
type number NULL
)
/
update hrsa_acct_result_template set type = 0
/

View File

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

View File

@ -0,0 +1,2 @@
alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL
/

View File

@ -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;
/

View File

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

View File

@ -0,0 +1 @@
alter table hrsa_variable_archive add tax_agent_id bigint;

View File

@ -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 ;

View File

@ -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 ;
/

View File

@ -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
;

View File

@ -0,0 +1,3 @@
alter table hrsa_acct_result_template add type int null ;
update hrsa_acct_result_template set type = 0;

View File

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

View File

@ -0,0 +1 @@
alter table hrsa_salary_acct_emp add lock_items varchar(4000);

View File

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

View File

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

View File

@ -0,0 +1,2 @@
alter table hrsa_variable_archive add tax_agent_id bigint
GO

View File

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

View File

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

View File

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

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_acct_result_template ADD type int NULL
GO
update hrsa_acct_result_template set type = 0
GO

View File

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

View File

@ -0,0 +1,2 @@
ALTER TABLE hrsa_salary_acct_emp ADD lock_items varchar(4000)
GO

View File

@ -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;
/

View File

@ -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)
);
/

View File

@ -0,0 +1,3 @@
alter table hrsa_variable_archive add tax_agent_id NUMBER(38,0);
/

View File

@ -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
);
/

View File

@ -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 ;
/

View File

@ -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;
/

View File

@ -0,0 +1,8 @@
ALTER TABLE hrsa_acct_result_template ADD (
type number NULL
);
/
update hrsa_acct_result_template set type = 0;
/

View File

@ -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)
);
/

View File

@ -0,0 +1,3 @@
alter table hrsa_salary_acct_emp add lock_items varchar2(4000) NULL;
/

View File

@ -20,6 +20,9 @@ update hrsa_salary_archive set delete_type=3 where tax_agent_id=扣缴义务人
二、删除停薪员工档案
update hrsa_salary_archive set delete_type=3 where run_status in ('STOP_FROM_PENDING','STOP_FROM_SUSPEND')
二、删除停薪员工社保档案
update hrsa_insurance_base_info set delete_type=3 where run_status in ('4','5')
三、删除指定人员档案

View File

@ -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 = '工资薪金合计'
# 获取档案信息
select i.item_value from hrsa_salary_archive_item i

View File

@ -1 +1,2 @@
formulaRunOvertimeThreshold=
formulaRunOvertimeThreshold=100
personNumberInOneThread = 100

View File

@ -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 {
}

View File

@ -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 {
}

View File

@ -107,7 +107,7 @@ public class RehireAction implements Action {
Long taxAgentId = taxAgentPOS.get(0).getId();
Long employeeId = Long.valueOf(empIdStr);
List<SalaryArchivePO> 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生成档案
InitSalaryAction initSalaryAction = new InitSalaryAction();
return initSalaryAction.doSalaryArchiveInit(requestInfo, salaryFieldMap);

View File

@ -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<DataCollectionEmployee> listByParams(List<SalarySobRangeEmpQueryParam> 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<DataCollectionEmployee> 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();
}
}
}

View File

@ -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";
}

View File

@ -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
*/
* 默认租户
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public class SalaryDefaultTenantConstant {
public static final String DEFAULT_TENANT_KEY = "all_teams";

View File

@ -15,6 +15,11 @@ public class SalaryItemConstant {
*/
public static final String DYNAMIC_SUFFIX = "_salaryItem";
/**
* 列表中浮动薪资项目动态列后缀标识
*/
public static final String VARIABLE_ITEM_DYNAMIC_SUFFIX = "_variableItem";
/**
* 薪资核算导入缓存表头字段key
*/

View File

@ -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;
//扣缴义务人
@XStreamImplicit
private List<TaxAgentConfig> taxAgentConfigs;
}

View File

@ -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<String, Object> map = new LinkedHashMap<>();
map.put("employeeId", m.get("resourceId"));

View File

@ -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: 浮动薪资档案
* @Author: xzy
*/
public class VariableArchiveBO {
@Override
public String toString() {
return "SalaryArchiveBO{}";
}
/**
* 构建表格动态列
*
* @param variableItems
*/
public static List<WeaTableColumn> buildVariableArchiveTable(List<VariableItemPO> variableItems) {
// 表格表头
List<WeaTableColumn> 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, "个税扣缴义务人"), "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;
}
// /**
// * 构建薪资档案数据
// *
// * @param salaryArchiveList
// * @param salaryArchiveItemDataList
// * @param localDateRange
// * @param allEmployeeIds
// * @param isOnlyTaxAgent
// * @return
// */
// public static List<SalaryArchiveDataDTO> buildSalaryArchiveData(List<SalaryArchivePO> salaryArchiveList,
// List<SalaryArchiveItemPO> salaryArchiveItemDataList,
// LocalDateRange localDateRange,
// List<Long> allEmployeeIds,
// boolean isOnlyTaxAgent) {
// // 开始日期
// Date start = localDateRange.getFromDate();
// // 结束日期
// Date end = localDateRange.getEndDate();
//
// List<SalaryArchiveDataDTO> list = new ArrayList<>();
// allEmployeeIds.forEach(e -> {
// // 同一个人的档案数据
// List<SalaryArchivePO> salaryArchives = salaryArchiveList.stream().filter(f -> f.getEmployeeId().equals(e)).collect(Collectors.toList());
// List<Long> salaryArchiveIds = salaryArchives.stream().map(SalaryArchivePO::getId).collect(Collectors.toList());
// // 同一个人的薪资项目调整历史数据
// List<SalaryArchiveItemPO> salaryArchiveItems = salaryArchiveItemDataList.stream().filter(d -> salaryArchiveIds.contains(d.getSalaryArchiveId())).collect(Collectors.toList());
// List<Long> salaryArchiveItemIds = salaryArchiveItems.stream().map(SalaryArchiveItemPO::getSalaryItemId).distinct().collect(Collectors.toList());
//
// SalaryArchiveDataDTO salaryArchiveData = new SalaryArchiveDataDTO();
// salaryArchiveData.setEmployeeId(e);
// List<SalaryArchiveTaxAgentDataDTO> taxAgents = new ArrayList<>();
// // 按个税扣缴义务人生效日期时间段切割
// 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());
// // 薪资项目数据按个税扣缴义务人切割
// if (!isOnlyTaxAgent) {
// // 开始日期
// Date startItem = taxAgent.getEffectiveDateRange().getFromDate();
// // 结束日期
// Date endItem = taxAgent.getEffectiveDateRange().getEndDate();
// Date endTempItem = endItem;
// List<SalaryArchiveItemDataDTO> 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<TaxAgentEmpChangePO> taxAgentEmpChangeList, List<SalaryArchivePO> salaryArchiveList, List<SalaryArchiveItemPO> salaryArchiveItemList, Long currentEmployeeId) {
// List<Long> changeIds = taxAgentEmpChangeList.stream().map(TaxAgentEmpChangePO::getId).collect(Collectors.toList());
// // 根据个税扣缴义务人和人员以及增量类型分组
// Map<String, Long> 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<TaxAgentEmpChangePO> 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<String> stopStatus = Arrays.asList(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue());
// List<SalaryArchivePO> salaryArchiveAddTodoList = Lists.newArrayList();
// List<SalaryArchivePO> salaryArchiveUpdateTodoList = Lists.newArrayList();
// List<SalaryArchiveItemPO> salaryArchiveItemAddTodos = Lists.newArrayList();
//
// Map<String, SalaryArchivePO> salaryArchiveListMap = SalaryEntityUtil.convert2Map(salaryArchiveList, k -> k.getTaxAgentId() + "-" + k.getEmployeeId());
// taxAgentEmpChanges.forEach(change -> {
// SalaryArchivePO salaryArchive = salaryArchiveListMap.get(change.getTaxAgentId() + "-" + change.getEmployeeId());
// // 如果是新增 说明如果没有档案则新增如果有档案而且是停薪就挪到待定薪中以个税扣缴义务人和人员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<SalaryArchiveItemPO> 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());
// }
// // 如果是删除 说明如果有档案并且是在定薪列表才处理没档案不用管
// } 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 {
//
// /**
// * 批量修改薪资档案
// */
// private List<SalaryArchivePO> salaryArchiveAddTodoList;
//
// /**
// * 批量新增薪资档案
// */
// private List<SalaryArchivePO> salaryArchiveUpdateTodoList;
//
// /**
// * 落库处理薪资项目
// */
// private List<SalaryArchiveItemPO> salaryArchiveItemAddTodos;
//
// /**
// * 删除增量数据
// */
// private List<Long> changeIds;
// }
}

View File

@ -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: 浮动薪资档案-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, "个税扣缴义务人");
taxAgentRangeMsg = SalaryI18nUtil.getI18nLabel(132633, "该员工不在该个税扣缴义务人的人员范围中") + "," + 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, "个税扣缴义务人不存在");
incomeCategoryNoExist = SalaryI18nUtil.getI18nLabel(121923, "收入所得项目不存在");
currSalarySobI18n = SalaryI18nUtil.getI18nLabel(127213, "该收入所得项目");
noExist = SalaryI18nUtil.getI18nLabel(127236, "不存在");
effectiveTimeErr = SalaryI18nUtil.getI18nLabel(102497, "生效日期错误或格式不正确,正确格式示例为'2022-01-01'、'2022/1/1'");
adjustReasonNoExist = SalaryI18nUtil.getI18nLabel(100591, "调整原因不存在");
dateErr = SalaryI18nUtil.getI18nLabel(109819, "日期错误或格式不正确,正确格式示例为'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, "该员工的薪资档案记录有误,请检查");
numberErr = SalaryI18nUtil.getI18nLabel(100581, "请输入数字");
}
/**
* 校验单行数据
*
* @param map
* @param headers
* @param excelComments
* @param errorCount
* @param importHandleParam
* @return
*/
public static boolean singleRowCheck(List<String> allTodoVariableArchives,
Map<String, Object> map,
List<String> headers,
List<Map<String, String>> 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<DataCollectionEmployee> emps = new ArrayList<>();
if ("0".equals(validType)) {
//0代表姓名+部门+手机号的匹配原则1代表工号为唯一匹配原则
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<Long> 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<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + "查找人员失败,请确定姓名、部门、手机号正确且唯一");
excelComments.add(errorMessageMap);
isError = true;
return isError;
}
// 个税扣缴义务人
String taxAgentCellVal = Optional.ofNullable(map.get(taxAgentI18n)).orElse("").toString();
map.put("taxAgent", taxAgentCellVal);
Optional<TaxAgentManageRangeEmployeeDTO> optionalTaxAgent = importHandleParam.getTaxAgentList().stream().filter(m -> m.getTaxAgentName().equals(taxAgentCellVal)).findFirst();
if (!optionalTaxAgent.isPresent()) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + "个税扣缴义务人不存在,或不在权限范围内");
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<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + "存在重复数据");
excelComments.add(errorMessageMap);
isError = true;
return isError;
} else {
allTodoVariableArchives.add(repeatKey);
}
// 构建薪资档案
VariableArchivePO finalVariableArchive = buildVariableArchive(employeeId, taxAgentId, importHandleParam);
map.put("variableArchiveId", finalVariableArchive.getId());
List<Long> 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<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + header + empRepeatMsg);
excelComments.add(errorMessageMap);
isError = true;
}
} else {
// 浮动薪资项目数据
if (!isError) {
Optional<VariableItemPO> 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<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowindex + key + numberErr);
excelComments.add(errorMessageMap);
isError = true;
}
Long variableItemId = variableItemPO.getId();
// 已生效
List<VariableArchiveItemPO> 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;
}
/**
* 构建浮动薪资档案对象
*
* @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) {
// 新增浮动档案
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{}";
}
}

View File

@ -0,0 +1,33 @@
package com.engine.salary.entity.datacollection.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 浮动薪酬档案明细
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @author xzy
* @version 1.0
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VariableArchiveItemDTO {
private Long id;
/**
* 浮动项目id
*/
private Long variableItemId;
/**
* 浮动值
*/
private String itemValue;
}

View File

@ -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;
/**
* 浮动薪资档案列表
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @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;
/**
* 个税扣缴义务人
*/
@TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName")
@I18n
private String taxAgentName;
/**
* 个税扣缴义务人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;
}

View File

@ -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;
/**
* 浮动薪资项目列表
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @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;
}

View File

@ -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<Long> salarySobIds;
}

View File

@ -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<Long> salarySobIds;
//账套外人员主键id
private Collection<Long> 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, "薪资账套必传"));
}
}

View File

@ -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;
/**
* 数据采集-浮动薪酬导入参数
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @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<DataCollectionEmployee> employees;
/**
* 获取所有可被引用的浮动薪资项目
*/
List<VariableItemPO> variableItems;
/**
* 查询已有的浮动薪资档案基本数据
*/
Map<String, VariableArchivePO> variableArchivesMap;
/**
* 浮动薪资项目id
*/
Collection<Long> variableItemIds;
/**
* 查询已生效的浮动薪资项目数据
*/
Map<String, List<VariableArchiveItemPO>> effectiveItemListMap;
/**
* 获取所有个税扣缴义务人
*/
Collection<TaxAgentManageRangeEmployeeDTO> taxAgentList;
/**
* 当前时间
*/
Date nowTime = new Date();
/**
* 当天
*/
Date today = new Date();
/**
* 待保存浮动薪资档案
*/
List<VariableArchivePO> variableArchiveSaves;
/**
* 待保存浮动薪资档案-浮动薪资项目
*/
List<VariableArchiveItemPO> variableArchiveItemSaves;
/**
* 待删除浮动薪资档案-浮动薪资项目
*/
List<Long> variableArchiveItemDelSalaryItemIds;
}

View File

@ -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<Long> ids;
// 主键id
private Long id;
// 个税扣缴义务人
private List<Long> taxAgentIds;
// 薪资年月
@DataCheck(require = true,message = "薪资所属月不能为空")
private String salaryMonth;
private Date salaryMonthDate;
// 姓名
private String username;
// 部门id
private List<Long> departmentIds;
// 工号
private String workcode;
// 下载模板是否带数据
private boolean hasData;
private List<Long> employeeIds;
private List<String> columns;
}

View File

@ -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
//数据采集-浮动薪酬档案保存参数
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<VariableArchiveItemDTO> itemValueList;
}

View File

@ -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<Long> itemIds;
}

View File

@ -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;
/**
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @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;
}

View File

@ -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 浮动薪酬档案明细
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VariableArchiveItemPO {
private Long id;
/**
* 员工id
*/
private Long employeeId;
/**
* 浮动薪资档案主键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<Long> ids;
private Collection<Long> variableArchiveIds;
}

View File

@ -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 浮动薪酬档案
*/
@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<Long> ids;
}

Some files were not shown because too many files have changed in this diff Show More