diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index c62ade2bb..5c9223804 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.14.3.2406.01 +version=2.15.1.2407.01 openFormulaForcedEditing=false \ No newline at end of file diff --git a/resource/sqlupgrade/DM/sql202312190103.sql b/resource/sqlupgrade/DM/sql202312190103.sql index 659ca7b6d..3956b4605 100644 --- a/resource/sqlupgrade/DM/sql202312190103.sql +++ b/resource/sqlupgrade/DM/sql202312190103.sql @@ -45,10 +45,6 @@ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete (805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计减免税额', 'addUpTaxDeduction', '', NULL, NULL,1); / -INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES -(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计应扣缴税额', 'addUpTaxPayable', '', NULL, NULL,1); -/ - INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计已缴税额', 'addUpAdvanceTax', '', NULL, NULL,1); / diff --git a/resource/sqlupgrade/DM/sql202406170103.sql b/resource/sqlupgrade/DM/sql202406170103.sql new file mode 100644 index 000000000..159a2e240 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202406170103.sql @@ -0,0 +1,14 @@ +CREATE TABLE hrsa_sob_tax_rule ( +id NUMBER(38,0) primary key NOT NULL, +salary_sob_id NUMBER(38,0) NULL , +income_category varchar2(100) , +tax_index varchar2(100) , +salary_item_id NUMBER(38,0) NULL , +creator NUMBER(38,0) DEFAULT 0, +create_time DATE DEFAULT sysdate, +update_time DATE DEFAULT sysdate, +delete_type number DEFAULT 0, +tenant_key varchar2(10) DEFAULT '' +); +/ + diff --git a/resource/sqlupgrade/DM/sql202406180103.sql b/resource/sqlupgrade/DM/sql202406180103.sql new file mode 100644 index 000000000..0f51111b9 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202406180103.sql @@ -0,0 +1,27 @@ +alter table hrsa_salary_acct_emp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add subcompany_id NUMBER null; +/ + +alter table hrsa_salary_acct_emp add department_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add department_id NUMBER null; +/ + +alter table hrsa_salary_acct_emp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_salary_acct_emp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_salary_acct_emp add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/DM/sql202406180403.sql b/resource/sqlupgrade/DM/sql202406180403.sql new file mode 100644 index 000000000..5e12f2f77 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202406180403.sql @@ -0,0 +1,70 @@ +update hrsa_salary_acct_emp a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/DM/sql202406200203.sql b/resource/sqlupgrade/DM/sql202406200203.sql new file mode 100644 index 000000000..df0e20a61 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202406200203.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL; +/ + diff --git a/resource/sqlupgrade/DM/sql202406260403.sql b/resource/sqlupgrade/DM/sql202406260403.sql new file mode 100644 index 000000000..f27cbf3c4 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202406260403.sql @@ -0,0 +1,14 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/DM/sql202407170103.sql b/resource/sqlupgrade/DM/sql202407170103.sql new file mode 100644 index 000000000..6326041b7 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202407170103.sql @@ -0,0 +1,14 @@ +create table hrsa_acct_calc_tax_req +( + id number primary key , + create_time date default sysdate, + update_time date default sysdate, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + salary_acct_record_id number, + tax_agent_id number, + request_id varchar2(100) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202312190103.sql b/resource/sqlupgrade/GS/sql202312190103.sql index 659ca7b6d..3956b4605 100644 --- a/resource/sqlupgrade/GS/sql202312190103.sql +++ b/resource/sqlupgrade/GS/sql202312190103.sql @@ -45,10 +45,6 @@ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete (805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计减免税额', 'addUpTaxDeduction', '', NULL, NULL,1); / -INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES -(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计应扣缴税额', 'addUpTaxPayable', '', NULL, NULL,1); -/ - INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计已缴税额', 'addUpAdvanceTax', '', NULL, NULL,1); / diff --git a/resource/sqlupgrade/GS/sql202406170103.sql b/resource/sqlupgrade/GS/sql202406170103.sql new file mode 100644 index 000000000..159a2e240 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202406170103.sql @@ -0,0 +1,14 @@ +CREATE TABLE hrsa_sob_tax_rule ( +id NUMBER(38,0) primary key NOT NULL, +salary_sob_id NUMBER(38,0) NULL , +income_category varchar2(100) , +tax_index varchar2(100) , +salary_item_id NUMBER(38,0) NULL , +creator NUMBER(38,0) DEFAULT 0, +create_time DATE DEFAULT sysdate, +update_time DATE DEFAULT sysdate, +delete_type number DEFAULT 0, +tenant_key varchar2(10) DEFAULT '' +); +/ + diff --git a/resource/sqlupgrade/GS/sql202406180103.sql b/resource/sqlupgrade/GS/sql202406180103.sql new file mode 100644 index 000000000..0f51111b9 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202406180103.sql @@ -0,0 +1,27 @@ +alter table hrsa_salary_acct_emp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add subcompany_id NUMBER null; +/ + +alter table hrsa_salary_acct_emp add department_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add department_id NUMBER null; +/ + +alter table hrsa_salary_acct_emp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_salary_acct_emp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_salary_acct_emp add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202406180403.sql b/resource/sqlupgrade/GS/sql202406180403.sql new file mode 100644 index 000000000..5e12f2f77 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202406180403.sql @@ -0,0 +1,70 @@ +update hrsa_salary_acct_emp a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/GS/sql202406200203.sql b/resource/sqlupgrade/GS/sql202406200203.sql new file mode 100644 index 000000000..df0e20a61 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202406200203.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL; +/ + diff --git a/resource/sqlupgrade/GS/sql202406260403.sql b/resource/sqlupgrade/GS/sql202406260403.sql new file mode 100644 index 000000000..f27cbf3c4 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202406260403.sql @@ -0,0 +1,14 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/GS/sql202407170103.sql b/resource/sqlupgrade/GS/sql202407170103.sql new file mode 100644 index 000000000..6326041b7 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202407170103.sql @@ -0,0 +1,14 @@ +create table hrsa_acct_calc_tax_req +( + id number primary key , + create_time date default sysdate, + update_time date default sysdate, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + salary_acct_record_id number, + tax_agent_id number, + request_id varchar2(100) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202312190103.sql b/resource/sqlupgrade/JC/sql202312190103.sql index 659ca7b6d..3956b4605 100644 --- a/resource/sqlupgrade/JC/sql202312190103.sql +++ b/resource/sqlupgrade/JC/sql202312190103.sql @@ -45,10 +45,6 @@ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete (805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计减免税额', 'addUpTaxDeduction', '', NULL, NULL,1); / -INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES -(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计应扣缴税额', 'addUpTaxPayable', '', NULL, NULL,1); -/ - INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计已缴税额', 'addUpAdvanceTax', '', NULL, NULL,1); / diff --git a/resource/sqlupgrade/JC/sql202406170103.sql b/resource/sqlupgrade/JC/sql202406170103.sql new file mode 100644 index 000000000..159a2e240 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202406170103.sql @@ -0,0 +1,14 @@ +CREATE TABLE hrsa_sob_tax_rule ( +id NUMBER(38,0) primary key NOT NULL, +salary_sob_id NUMBER(38,0) NULL , +income_category varchar2(100) , +tax_index varchar2(100) , +salary_item_id NUMBER(38,0) NULL , +creator NUMBER(38,0) DEFAULT 0, +create_time DATE DEFAULT sysdate, +update_time DATE DEFAULT sysdate, +delete_type number DEFAULT 0, +tenant_key varchar2(10) DEFAULT '' +); +/ + diff --git a/resource/sqlupgrade/JC/sql202406180103.sql b/resource/sqlupgrade/JC/sql202406180103.sql new file mode 100644 index 000000000..0f51111b9 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202406180103.sql @@ -0,0 +1,27 @@ +alter table hrsa_salary_acct_emp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add subcompany_id NUMBER null; +/ + +alter table hrsa_salary_acct_emp add department_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add department_id NUMBER null; +/ + +alter table hrsa_salary_acct_emp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_salary_acct_emp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_salary_acct_emp add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202406180403.sql b/resource/sqlupgrade/JC/sql202406180403.sql new file mode 100644 index 000000000..5e12f2f77 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202406180403.sql @@ -0,0 +1,70 @@ +update hrsa_salary_acct_emp a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/JC/sql202406200203.sql b/resource/sqlupgrade/JC/sql202406200203.sql new file mode 100644 index 000000000..df0e20a61 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202406200203.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL; +/ + diff --git a/resource/sqlupgrade/JC/sql202406260403.sql b/resource/sqlupgrade/JC/sql202406260403.sql new file mode 100644 index 000000000..f27cbf3c4 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202406260403.sql @@ -0,0 +1,14 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/JC/sql202407170103.sql b/resource/sqlupgrade/JC/sql202407170103.sql new file mode 100644 index 000000000..6326041b7 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202407170103.sql @@ -0,0 +1,14 @@ +create table hrsa_acct_calc_tax_req +( + id number primary key , + create_time date default sysdate, + update_time date default sysdate, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + salary_acct_record_id number, + tax_agent_id number, + request_id varchar2(100) +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202312190103.sql b/resource/sqlupgrade/Mysql/sql202312190103.sql index 9cc0240c6..006ea1239 100644 --- a/resource/sqlupgrade/Mysql/sql202312190103.sql +++ b/resource/sqlupgrade/Mysql/sql202312190103.sql @@ -33,8 +33,7 @@ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计减免税额', 'addUpTaxDeduction', '', NULL, NULL,1); -INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES -(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计应扣缴税额', 'addUpTaxPayable', '', NULL, NULL,1); + INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计已缴税额', 'addUpAdvanceTax', '', NULL, NULL,1); diff --git a/resource/sqlupgrade/Mysql/sql202406170103.sql b/resource/sqlupgrade/Mysql/sql202406170103.sql new file mode 100644 index 000000000..be09a90f9 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202406170103.sql @@ -0,0 +1,13 @@ +CREATE TABLE hrsa_sob_tax_rule ( + id bigint(0) NOT NULL, + create_time datetime(0) , + update_time datetime(0) , + creator bigint(0) , + delete_type int(0) , + tenant_key varchar(10), + salary_sob_id bigint(0), + income_category varchar(100) , + tax_index varchar(100) , + salary_item_id bigint(0) , + PRIMARY KEY (id) +) ; diff --git a/resource/sqlupgrade/Mysql/sql202406180103.sql b/resource/sqlupgrade/Mysql/sql202406180103.sql new file mode 100644 index 000000000..4217d5d31 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202406180103.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_salary_acct_emp +ADD COLUMN subcompany_name varchar(200) , +ADD COLUMN subcompany_id bigint(0), +ADD COLUMN department_name varchar(200), +ADD COLUMN department_id bigint(0), +ADD COLUMN jobtitle_name varchar(200) , +ADD COLUMN jobtitle_id bigint(0) , +ADD COLUMN jobcall varchar(200), +ADD COLUMN jobcall_id bigint(0), +ADD COLUMN status varchar(200); \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202406180403.sql b/resource/sqlupgrade/Mysql/sql202406180403.sql new file mode 100644 index 000000000..c81607e2b --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202406180403.sql @@ -0,0 +1,29 @@ +update hrsa_salary_acct_emp a INNER JOIN ( + select e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) as b +on a.employee_id = b.employeeId + set a.department_id = b.departmentId, + a.department_name = b.departmentName, + a.subcompany_id = b.subcompanyid, + a.subcompany_name = b.subcompanyName, + a.jobtitle_id = b.jobtitleId, + a.jobtitle_name = b.jobtitleName, + a.jobcall_id = b.jobcallId, + a.jobcall = b.jobcall, + a.status = b.status +where a.delete_type=0; \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202406200203.sql b/resource/sqlupgrade/Mysql/sql202406200203.sql new file mode 100644 index 000000000..dc241d8d5 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202406200203.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_item add default_value varchar(255); +alter table hrsa_salary_sob_item add default_value varchar(255); +alter table hrsa_salary_sob_back_item add default_value varchar(255); \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202406260403.sql b/resource/sqlupgrade/Mysql/sql202406260403.sql new file mode 100644 index 000000000..4a8a4b313 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202406260403.sql @@ -0,0 +1,12 @@ +CREATE TABLE hrsa_api_task_record ( + id bigint(0) NOT NULL , + source varchar(500) , + api varchar(500), + param text , + response text, + tenant_key varchar(255) , + delete_type int(0) , + create_time datetime(0), + update_time datetime(0), + PRIMARY KEY (id) USING BTREE +); \ No newline at end of file diff --git a/resource/sqlupgrade/Mysql/sql202407170103.sql b/resource/sqlupgrade/Mysql/sql202407170103.sql new file mode 100644 index 000000000..10ccaaadd --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202407170103.sql @@ -0,0 +1,13 @@ +create table hrsa_acct_calc_tax_req +( + id bigint primary key comment 'ID' , + create_time datetime default now() comment '创建时间' , + update_time datetime default now() comment '修改时间' , + creator bigint comment '创建人id' , + delete_type int default 0 comment '是否删除' , + tenant_key varchar(10) comment '租户KEY' , + salary_acct_record_id bigint comment '薪资核算记录id' , + tax_agent_id bigint comment '个税扣缴义务人id' , + request_id varchar(100) comment '请求requestId' +) +; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202312190103.sql b/resource/sqlupgrade/Oracle/sql202312190103.sql index 14ad11e18..033891dfd 100644 --- a/resource/sqlupgrade/Oracle/sql202312190103.sql +++ b/resource/sqlupgrade/Oracle/sql202312190103.sql @@ -45,9 +45,6 @@ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete (805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计减免税额', 'addUpTaxDeduction', '', NULL, NULL,1) / -INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES -(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计应扣缴税额', 'addUpTaxPayable', '', NULL, NULL,1) -/ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计已缴税额', 'addUpAdvanceTax', '', NULL, NULL,1) diff --git a/resource/sqlupgrade/Oracle/sql202406170103.sql b/resource/sqlupgrade/Oracle/sql202406170103.sql new file mode 100644 index 000000000..1abe248d6 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202406170103.sql @@ -0,0 +1,13 @@ +CREATE TABLE hrsa_sob_tax_rule ( +id NUMBER(38,0) primary key NOT NULL, +salary_sob_id NUMBER(38,0) NULL , +income_category varchar2(100) , +tax_index varchar2(100) , +salary_item_id NUMBER(38,0) NULL , +creator NUMBER(38,0) DEFAULT 0, +create_time DATE DEFAULT sysdate, +update_time DATE DEFAULT sysdate, +delete_type number DEFAULT 0, +tenant_key varchar2(10) DEFAULT '' +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202406180103.sql b/resource/sqlupgrade/Oracle/sql202406180103.sql new file mode 100644 index 000000000..ee99ea754 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202406180103.sql @@ -0,0 +1,18 @@ +alter table hrsa_salary_acct_emp add subcompany_name varchar2(200) NULL +/ +alter table hrsa_salary_acct_emp add subcompany_id NUMBER null +/ +alter table hrsa_salary_acct_emp add department_name varchar2(200) NULL +/ +alter table hrsa_salary_acct_emp add department_id NUMBER null +/ +alter table hrsa_salary_acct_emp add jobtitle_name varchar2(200) NULL +/ +alter table hrsa_salary_acct_emp add jobtitle_id NUMBER NULL +/ +alter table hrsa_salary_acct_emp add jobcall varchar2(200) NULL +/ +alter table hrsa_salary_acct_emp add jobcall_id NUMBER NULL +/ +alter table hrsa_salary_acct_emp add status varchar2(200) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202406180403.sql b/resource/sqlupgrade/Oracle/sql202406180403.sql new file mode 100644 index 000000000..246694499 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202406180403.sql @@ -0,0 +1,69 @@ +update hrsa_salary_acct_emp a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202406200203.sql b/resource/sqlupgrade/Oracle/sql202406200203.sql new file mode 100644 index 000000000..141829044 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202406200203.sql @@ -0,0 +1,6 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL +/ +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL +/ +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202406260403.sql b/resource/sqlupgrade/Oracle/sql202406260403.sql new file mode 100644 index 000000000..610ce393c --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202406260403.sql @@ -0,0 +1,13 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202407170103.sql b/resource/sqlupgrade/Oracle/sql202407170103.sql new file mode 100644 index 000000000..906e14906 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202407170103.sql @@ -0,0 +1,13 @@ +create table hrsa_acct_calc_tax_req +( + id number primary key , + create_time date default sysdate, + update_time date default sysdate, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + salary_acct_record_id number, + tax_agent_id number, + request_id varchar2(100) +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202312190103.sql b/resource/sqlupgrade/PG/sql202312190103.sql index f999dbbc3..9f472713c 100644 --- a/resource/sqlupgrade/PG/sql202312190103.sql +++ b/resource/sqlupgrade/PG/sql202312190103.sql @@ -33,8 +33,7 @@ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计减免税额', 'addUpTaxDeduction', '', NULL, NULL,1); -INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES -(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计应扣缴税额', 'addUpTaxPayable', '', NULL, NULL,1); + INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计已缴税额', 'addUpAdvanceTax', '', NULL, NULL,1); diff --git a/resource/sqlupgrade/PG/sql202406170103.sql b/resource/sqlupgrade/PG/sql202406170103.sql new file mode 100644 index 000000000..848173fc6 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202406170103.sql @@ -0,0 +1,13 @@ +CREATE TABLE hrsa_sob_tax_rule ( + id bigserial NOT NULL, + salary_sob_id bigint , + income_category varchar(100) , + tax_index varchar(100) , + salary_item_id bigint , + creator bigint NOT NULL DEFAULT 0 , + create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP , + update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP , + delete_type int NOT NULL DEFAULT 0 , + tenant_key varchar(10) NOT NULL DEFAULT '' , + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202406180103.sql b/resource/sqlupgrade/PG/sql202406180103.sql new file mode 100644 index 000000000..59a96d245 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202406180103.sql @@ -0,0 +1,9 @@ +alter table hrsa_salary_acct_emp add subcompany_name varchar(200); +alter table hrsa_salary_acct_emp add subcompany_id bigint; +alter table hrsa_salary_acct_emp add department_name varchar(200); +alter table hrsa_salary_acct_emp add department_id bigint; +alter table hrsa_salary_acct_emp add jobtitle_name varchar(200); +alter table hrsa_salary_acct_emp add jobtitle_id bigint; +alter table hrsa_salary_acct_emp add jobcall varchar(200); +alter table hrsa_salary_acct_emp add jobcall_id bigint; +alter table hrsa_salary_acct_emp add status varchar(200); \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202406180403.sql b/resource/sqlupgrade/PG/sql202406180403.sql new file mode 100644 index 000000000..a15174c5f --- /dev/null +++ b/resource/sqlupgrade/PG/sql202406180403.sql @@ -0,0 +1,68 @@ +update hrsa_salary_acct_emp a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202406200203.sql b/resource/sqlupgrade/PG/sql202406200203.sql new file mode 100644 index 000000000..39c8d422e --- /dev/null +++ b/resource/sqlupgrade/PG/sql202406200203.sql @@ -0,0 +1,3 @@ +alter table hrsa_salary_item add default_value VARCHAR(255); +alter table hrsa_salary_sob_item add default_value VARCHAR(255); +alter table hrsa_salary_sob_back_item add default_value VARCHAR(255); \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202406260403.sql b/resource/sqlupgrade/PG/sql202406260403.sql new file mode 100644 index 000000000..45102625b --- /dev/null +++ b/resource/sqlupgrade/PG/sql202406260403.sql @@ -0,0 +1,13 @@ +create table hrsa_api_task_record +( + id bigint primary key , + source varchar(500) , + api varchar(500), + param text , + response text, + create_time timestamp, + update_time timestamp, + delete_type int default 0, + tenant_key varchar(10) +); +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202407170103.sql b/resource/sqlupgrade/PG/sql202407170103.sql new file mode 100644 index 000000000..47f27e07f --- /dev/null +++ b/resource/sqlupgrade/PG/sql202407170103.sql @@ -0,0 +1,13 @@ +create table hrsa_acct_calc_tax_req +( + id bigint primary key , + create_time timestamp default now(), + update_time timestamp default now(), + creator bigint, + delete_type int default 0, + tenant_key varchar(10), + salary_acct_record_id bigint, + tax_agent_id bigint, + request_id varchar(100) +); +/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202312190103.sql b/resource/sqlupgrade/SQLServer/sql202312190103.sql index 1a0cd83fb..d2c020a34 100644 --- a/resource/sqlupgrade/SQLServer/sql202312190103.sql +++ b/resource/sqlupgrade/SQLServer/sql202312190103.sql @@ -45,9 +45,6 @@ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete (805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计减免税额', 'addUpTaxDeduction', '', NULL, NULL,1) GO -INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES -(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计应扣缴税额', 'addUpTaxPayable', '', NULL, NULL,1) -GO INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计已缴税额', 'addUpAdvanceTax', '', NULL, NULL,1) diff --git a/resource/sqlupgrade/SQLServer/sql202406170103.sql b/resource/sqlupgrade/SQLServer/sql202406170103.sql new file mode 100644 index 000000000..c84a374f4 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202406170103.sql @@ -0,0 +1,14 @@ +create table hrsa_sob_tax_rule +( + id bigint primary key , + create_time datetime, + update_time datetime, + creator bigint, + delete_type int, + tenant_key nvarchar(10), + salary_sob_id bigint, + income_category varchar(100), + tax_index varchar(100), + salary_item_id bigint +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202406180103.sql b/resource/sqlupgrade/SQLServer/sql202406180103.sql new file mode 100644 index 000000000..87973812c --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202406180103.sql @@ -0,0 +1,11 @@ +ALTER TABLE hrsa_salary_acct_emp +ADD subcompany_name varchar(200), +subcompany_id bigint, +department_name varchar(200), +department_id bigint, +jobtitle_name varchar(200), +jobtitle_id bigint, +jobcall varchar(200), +jobcall_id bigint, +status varchar(200) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202406180403.sql b/resource/sqlupgrade/SQLServer/sql202406180403.sql new file mode 100644 index 000000000..02b5785e9 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202406180403.sql @@ -0,0 +1,31 @@ +UPDATE hrsa_salary_acct_emp +set department_id = b.departmentId, + department_name = b.departmentName, + subcompany_id = b.subcompanyid, + subcompany_name = b.subcompanyName, + jobtitle_id = b.jobtitleId, + jobtitle_name = b.jobtitleName, + jobcall_id = b.jobcallId, + jobcall = b.jobcall, + status = b.status +FROM hrsa_salary_acct_emp a INNER JOIN ( + select e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) as b +on a.employee_id = b.employeeId +WHERE a.delete_type=0 +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202406200203.sql b/resource/sqlupgrade/SQLServer/sql202406200203.sql new file mode 100644 index 000000000..17c17597a --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202406200203.sql @@ -0,0 +1,6 @@ +alter table hrsa_salary_item add default_value varchar(255) +go +alter table hrsa_salary_sob_item add default_value varchar(255) +go +alter table hrsa_salary_sob_back_item add default_value varchar(255) +go \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202406260403.sql b/resource/sqlupgrade/SQLServer/sql202406260403.sql new file mode 100644 index 000000000..dd1b5701c --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202406260403.sql @@ -0,0 +1,13 @@ +create table hrsa_api_task_record +( + id bigint primary key , + source varchar(500) , + api varchar(500), + param ntext , + response ntext, + create_time datetime, + update_time datetime, + delete_type int default 0, + tenant_key nvarchar(10) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202407170103.sql b/resource/sqlupgrade/SQLServer/sql202407170103.sql new file mode 100644 index 000000000..a8734ab0c --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202407170103.sql @@ -0,0 +1,13 @@ +create table hrsa_acct_calc_tax_req +( + id bigint primary key , + create_time datetime default getdate(), + update_time datetime default getdate(), + creator bigint, + delete_type int default 0, + tenant_key nvarchar(10), + salary_acct_record_id bigint, + tax_agent_id bigint, + request_id nvarchar(100) +) +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202312190103.sql b/resource/sqlupgrade/ST/sql202312190103.sql index 659ca7b6d..3956b4605 100644 --- a/resource/sqlupgrade/ST/sql202312190103.sql +++ b/resource/sqlupgrade/ST/sql202312190103.sql @@ -45,10 +45,6 @@ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete (805915446042158190, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计减免税额', 'addUpTaxDeduction', '', NULL, NULL,1); / -INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES -(805915446042158191, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计应扣缴税额', 'addUpTaxPayable', '', NULL, NULL,1); -/ - INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label,contrast_type) VALUES (805915446042158192, NULL, NULL, NULL, 0, 'all_teams', '1', '1', '累计已缴税额', 'addUpAdvanceTax', '', NULL, NULL,1); / diff --git a/resource/sqlupgrade/ST/sql202406170103.sql b/resource/sqlupgrade/ST/sql202406170103.sql new file mode 100644 index 000000000..159a2e240 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202406170103.sql @@ -0,0 +1,14 @@ +CREATE TABLE hrsa_sob_tax_rule ( +id NUMBER(38,0) primary key NOT NULL, +salary_sob_id NUMBER(38,0) NULL , +income_category varchar2(100) , +tax_index varchar2(100) , +salary_item_id NUMBER(38,0) NULL , +creator NUMBER(38,0) DEFAULT 0, +create_time DATE DEFAULT sysdate, +update_time DATE DEFAULT sysdate, +delete_type number DEFAULT 0, +tenant_key varchar2(10) DEFAULT '' +); +/ + diff --git a/resource/sqlupgrade/ST/sql202406180103.sql b/resource/sqlupgrade/ST/sql202406180103.sql new file mode 100644 index 000000000..0f51111b9 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202406180103.sql @@ -0,0 +1,27 @@ +alter table hrsa_salary_acct_emp add subcompany_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add subcompany_id NUMBER null; +/ + +alter table hrsa_salary_acct_emp add department_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add department_id NUMBER null; +/ + +alter table hrsa_salary_acct_emp add jobtitle_name varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add jobtitle_id NUMBER NULL; +/ + +alter table hrsa_salary_acct_emp add jobcall varchar2(200) NULL; +/ + +alter table hrsa_salary_acct_emp add jobcall_id NUMBER NULL; +/ + +alter table hrsa_salary_acct_emp add status varchar2(200) NULL; +/ + diff --git a/resource/sqlupgrade/ST/sql202406180403.sql b/resource/sqlupgrade/ST/sql202406180403.sql new file mode 100644 index 000000000..5e12f2f77 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202406180403.sql @@ -0,0 +1,70 @@ +update hrsa_salary_acct_emp a +set +( + department_id , + department_name, + subcompany_id , + subcompany_name, + jobtitle_id , + jobtitle_name , + jobcall_id, + jobcall, + status +) + = +( + select + b.departmentId, + b.departmentName, + b.subcompanyid, + b.subcompanyName, + b.jobtitleId, + b.jobtitleName, + b.jobcallId, + b.jobcall, + b.status from + ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId +) +where a.delete_type=0 and + exists (select 1 from ( + select + e.id as employeeId, + d.departmentname as departmentName, + d.id as departmentId, + sc.SUBCOMPANYNAME as subcompanyName, + sc.id as subcompanyid, + c.jobtitlename as jobtitleName, + c.id as jobtitleId, + e.status as status, + e.jobcall as jobcallId, + job.name as jobcall + from hrmresource e + left join hrmdepartment d on e.departmentid = d.id + left join hrmjobtitles c on e.jobtitle = c.id + left join HrmSubCompany sc on e.SUBCOMPANYID1=sc.id + left join hrmjobcall job on e.jobcall=job.id + where e.status not in (7) and (e.accounttype is null or e.accounttype = 0) + ) b + where a.employee_id = b.employeeId + ); +/ + diff --git a/resource/sqlupgrade/ST/sql202406200203.sql b/resource/sqlupgrade/ST/sql202406200203.sql new file mode 100644 index 000000000..df0e20a61 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202406200203.sql @@ -0,0 +1,9 @@ +ALTER TABLE hrsa_salary_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_item ADD default_value varchar2(255) NULL; +/ + +ALTER TABLE hrsa_salary_sob_back_item ADD default_value varchar2(255) NULL; +/ + diff --git a/resource/sqlupgrade/ST/sql202406260403.sql b/resource/sqlupgrade/ST/sql202406260403.sql new file mode 100644 index 000000000..f27cbf3c4 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202406260403.sql @@ -0,0 +1,14 @@ +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +); +/ + diff --git a/resource/sqlupgrade/ST/sql202407170103.sql b/resource/sqlupgrade/ST/sql202407170103.sql new file mode 100644 index 000000000..6326041b7 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202407170103.sql @@ -0,0 +1,14 @@ +create table hrsa_acct_calc_tax_req +( + id number primary key , + create_time date default sysdate, + update_time date default sysdate, + creator number, + delete_type int default 0, + tenant_key varchar2(10), + salary_acct_record_id number, + tax_agent_id number, + request_id varchar2(100) +); +/ + diff --git a/resource/wiki/delSalarySQL.bat b/resource/wiki/delSalarySQL.bat new file mode 100644 index 000000000..6c8f1d6fc --- /dev/null +++ b/resource/wiki/delSalarySQL.bat @@ -0,0 +1 @@ +del sql202205100201.sql sql202205100402.sql sql202205130903.sql sql202205200203.sql sql202205310203.sql sql202206071403.sql sql202206090403.sql sql202206141003.sql sql202206160500.sql sql202206230403.sql sql202207110803.sql sql202207120303.sql sql202207210203.sql sql202208051103.sql sql202208080403.sql sql202208240403.sql sql202208240503.sql sql202210080203.sql sql202210080403.sql sql202210170203.sql sql202210170303.sql sql202211090103.sql sql202211090301.sql sql202211090402.sql sql202211170503.sql sql202212080903.sql sql202212081003.sql sql202212230103.sql sql202301310403.sql sql202302060801.sql sql202302060902.sql sql202302090303.sql sql202302200403.sql sql202303130101.sql sql202303130202.sql sql202303150403.sql sql202304040503.sql sql202304260103.sql sql202304270203.sql sql202304270303.sql sql202304270501.sql sql202305050302.sql sql202305170903.sql sql202306020403.sql sql202306020603.sql sql202306080103.sql sql202306200203.sql sql202306260103.sql sql202307170403.sql sql202307180603.sql sql202307200603.sql sql202308080403.sql sql202308080503.sql sql202308090203.sql sql202308170403.sql sql202309210203.sql sql202310130403.sql sql202310250103.sql sql202311070403.sql sql202311080603.sql sql202311150103.sql sql202312130203.sql sql202401080103.sql sql202401230403.sql sql202401300303.sql sql202402190103.sql sql202402280703.sql sql202403150103.sql sql202404010103.sql diff --git a/resource/wiki/甯哥敤鏌ヨ.md b/resource/wiki/甯哥敤鏌ヨ.md index 594b14bf8..13ba2242f 100644 --- a/resource/wiki/甯哥敤鏌ヨ.md +++ b/resource/wiki/甯哥敤鏌ヨ.md @@ -18,4 +18,4 @@ left join hrmresource e on e.id= result.employee_id left join hrsa_tax_agent t on a.tax_agent_id=t.id where a.delete_type=0 and i.delete_type=0 and t.delete_type=0 and c.delete_type=0 and a.employee_id=浜哄憳id and t.name=鎵g即涔夊姟浜哄悕绉 - and effective_time <= now() and c.name='鍩烘湰宸ヨ祫' order by effective_time desc \ No newline at end of file + c.name='鍩烘湰宸ヨ祫' order by effective_time desc \ No newline at end of file diff --git a/resource/wiki/寰呮坊鍔爏ql b/resource/wiki/寰呮坊鍔爏ql index 44d2fbec2..8452d9a87 100644 --- a/resource/wiki/寰呮坊鍔爏ql +++ b/resource/wiki/寰呮坊鍔爏ql @@ -3,3 +3,59 @@ INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label, contrast_type) VALUES (700000000000000003, NULL, NULL, NULL, 0, 'all_teams', '1', '700', '鍏朵粬', 'royaltiesOther', 'number', 'qt', NULL, 0); INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label, contrast_type) VALUES (700000000000000004, NULL, NULL, NULL, 0, 'all_teams', '1', '700', '澶囨敞', 'royaltiesRemark', 'string', 'bz', NULL, 0); INSERT INTO hrsa_tax_report_column(id, create_time, update_time, creator, delete_type, tenant_key, tax_report_type, income_category, report_column_name, report_column_data_index, data_type, request_param_key, report_column_label, contrast_type) VALUES (700000000000000005, NULL, NULL, NULL, 0, 'all_teams', '1', '700', '鍑忓厤绋庨', 'royaltiesTaxDeduction', 'number', 'jmse', NULL, 0); + + +CREATE TABLE hrsa_api_task_record ( + id bigint(0) NOT NULL , + source varchar(500) , + api varchar(500), + param text , + response text, + tenant_key varchar(255) , + delete_type int(0) , + create_time datetime(0), + update_time datetime(0), + PRIMARY KEY (id) USING BTREE +); + +create table hrsa_api_task_record +( + id number primary key , + source varchar2(500) , + api varchar2(500), + param clob , + response clob, + create_time date, + update_time date, + delete_type int default 0, + tenant_key varchar2(10) +) +/ + +create table hrsa_api_task_record +( + id bigint primary key , + source varchar(500) , + api varchar(500), + param ntext , + response ntext, + create_time datetime, + update_time datetime, + delete_type int default 0, + tenant_key nvarchar(10) +) +GO + +create table hrsa_api_task_record +( + id bigint primary key , + source varchar(500) , + api varchar(500), + param text , + response text, + create_time timestamp, + update_time timestamp, + delete_type int default 0, + tenant_key varchar(10) +); +/ \ No newline at end of file diff --git a/resource/wiki/鑾峰彇鎸囧畾浜哄憳宸ヤ綔鏃ュぉ鏁.txt b/resource/wiki/鑾峰彇鎸囧畾浜哄憳宸ヤ綔鏃ュぉ鏁.txt new file mode 100644 index 000000000..19515b8c5 --- /dev/null +++ b/resource/wiki/鑾峰彇鎸囧畾浜哄憳宸ヤ綔鏃ュぉ鏁.txt @@ -0,0 +1,65 @@ + /** + * 杩斿洖鎸囧畾鏃ュ織鑼冨洿鍐呯殑宸ヤ綔鏃ュぉ鏁 + * @param beginDate 寮濮嬫棩鏈 + * @param endDate 缁撴潫鏃ユ湡 + * @param userid 浜哄憳ID + * @return + */ + public String getWorkDays(String beginDate, String endDate, int userid) { + BaseBean bean = new BaseBean(); + //璁剧疆鏃ユ湡鏍煎紡 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + + //璧峰鏃ユ湡 + if (beginDate == null || beginDate.length() == 0) { + beginDate = bean.getPropValue("scheduleWorkDayForFormula", "fromDate"); + beginDate = beginDate == null ? "" : beginDate.trim(); + if (beginDate.length() == 0) { + beginDate = df.format(new Date()); + } + } + + //鎴鏃ユ湡 + if (endDate == null || endDate.length() == 0) { + endDate = bean.getPropValue("scheduleWorkDayForFormula", "endDate"); + endDate = endDate == null ? "" : endDate.trim(); + if (endDate.length() == 0) { + endDate = df.format(new Date()); + } + } + + boolean isBig = false; + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date begin = sdf.parse(beginDate); + Date end = sdf.parse(endDate); + if (begin.compareTo(end) > 0) { + String temp = beginDate; + beginDate = endDate; + endDate = temp; + isBig = true; + } + } catch (Exception e) { + bean.writeLog("ExcelFormulaWorkday瑙f瀽鏃ユ湡鎶ラ敊", e); + } + + int workDayCount = 0; + User user = new User(userid); + HrmScheduleManager manager = new HrmScheduleManager(user); + Map mapWorkday = manager.isWorkday(beginDate, endDate, manager.getSubCompanyId()); + if (mapWorkday != null && mapWorkday.size() > 0) { + Iterator itr = mapWorkday.keySet().iterator(); + while (itr.hasNext()) { + String tempDate = itr.next(); + Boolean isWorkDay = mapWorkday.get(tempDate); + if (isWorkDay) { + if (isBig) { + workDayCount--; + } else { + workDayCount++; + } + } + } + } + return workDayCount+""; + } \ No newline at end of file diff --git a/src/com/engine/salary/action/CheckInitSalaryAction.java b/src/com/engine/salary/action/CheckInitSalaryAction.java index d93217792..34dd5782a 100644 --- a/src/com/engine/salary/action/CheckInitSalaryAction.java +++ b/src/com/engine/salary/action/CheckInitSalaryAction.java @@ -2,11 +2,23 @@ package com.engine.salary.action; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; +import com.engine.salary.mapper.archive.SalaryArchiveMapper; +import com.engine.salary.service.SalaryArchiveService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.impl.SalaryArchiveServiceImpl; +import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.wrapper.SalaryArchiveWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -25,6 +37,18 @@ public class CheckInitSalaryAction implements Action { return ServiceUtil.getService(SalaryArchiveWrapper.class, user); } + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private SalaryArchiveService getSalaryArchiveService(User user) { + return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); + } + + private SalaryArchiveMapper getSalaryArchiveMapper() { + return MapperProxyFactory.getProxy(SalaryArchiveMapper.class); + } + private String tableName; @@ -57,40 +81,72 @@ public class CheckInitSalaryAction implements Action { String value = fieldMap.get(processField); list.add(new SalaryField(processField, salaryName, value)); } - List> importData = new ArrayList<>(); Map importDataMap = SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue); - if(!importDataMap.containsKey("鐢熸晥鏃ユ湡")){ - importDataMap.put("鐢熸晥鏃ユ湡", SalaryDateUtil.getFormatDate(new Date())); - } - if(!importDataMap.containsKey("鏈鍚庡彂钖棩鏈")){ - importDataMap.put("鏈鍚庡彂钖棩鏈", ""); - } - importData.add(importDataMap); - SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() - .importDatas(importData) - .build(); - - //鎿嶄綔浜 - String uid = list.stream().filter(f -> f.salaryName.equals("鎿嶄綔浜")).findFirst().map(SalaryField::getValue).orElse("1"); - Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).checkSalaryArchiveInit(build); - - List errorNotice = (List) map.get("errorNotice"); - if (CollectionUtils.isNotEmpty(errorNotice)) { - log.error("瀹氳柂妫鏌ュ瓨鍦ㄥ紓甯 requestId:{} ,鍙傛暟:{}, map:{}", requestInfo.getRequestid(), build, map); - List> excelComments = (List>) map.get("errorNotice"); - StringBuilder message = new StringBuilder(""); - for (Map comments : excelComments) { - message.append(comments.get("message")).append("\n"); - } - requestInfo.getRequestManager().setMessage(message.toString()); - return FAILURE_AND_CONTINUE; - } + return doSalaryArchiveInit(requestInfo, importDataMap); } catch (Exception e) { log.error("瀹氳柂妫鏌ュ紓甯", e); requestInfo.getRequestManager().setMessage(e.getMessage()); return FAILURE_AND_CONTINUE; } + } + + public String doSalaryArchiveInit(RequestInfo requestInfo, Map importDataMap) { + User user = new User(); + user.setLoginid("sysadmin"); + user.setUid(1); + List> importData = new ArrayList<>(); + if(!importDataMap.containsKey("鐢熸晥鏃ユ湡")){ + importDataMap.put("鐢熸晥鏃ユ湡", SalaryDateUtil.getFormatDate(new Date())); + } + if(!importDataMap.containsKey("鏈鍚庡彂钖棩鏈")){ + importDataMap.put("鏈鍚庡彂钖棩鏈", ""); + } + importData.add(importDataMap); + + // 棣栧厛鍒ゆ柇鏄惁宸茬粡瀛樺湪钖祫妗f锛屼笖钖祫妗f鐘舵佷负寰呭畾钖 + String taxAgentName = importDataMap.getOrDefault("涓◣鎵g即涔夊姟浜", "").toString(); + String empIdStr = importDataMap.getOrDefault("鍛樺伐id", "").toString(); + if (StringUtils.isBlank(taxAgentName)) { + requestInfo.getRequestManager().setMessage("涓◣鎵g即涔夊姟浜轰笉鑳戒负绌"); + return FAILURE_AND_CONTINUE; + } + // 鑾峰彇涔夊姟浜轰俊鎭 + List taxAgentPOS = getTaxAgentService(user).list(TaxAgentQueryParam.builder().name(taxAgentName).build()); + if (CollectionUtils.isEmpty(taxAgentPOS)) { + requestInfo.getRequestManager().setMessage("涓◣鎵g即涔夊姟浜轰笉瀛樺湪"); + return FAILURE_AND_CONTINUE; + } + Long taxAgentId = taxAgentPOS.get(0).getId(); + // 鑾峰彇鍛樺伐id + if (NumberUtils.isCreatable(empIdStr)) { + List salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(Long.valueOf(empIdStr)).build()); + if (CollectionUtils.isNotEmpty(salaryArchivePOList) && !salaryArchivePOList.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())) { + // 瀛樺湪钖祫妗f锛屼笖钖祫妗f鐘舵佷笉鏄緟瀹氳柂锛屼慨鏀圭姸鎬佷负寰呭畾钖 + salaryArchivePOList.get(0).setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); + salaryArchivePOList.get(0).setPayEndDate(null); + getSalaryArchiveMapper().update(salaryArchivePOList.get(0)); + } + } + + SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() + .importDatas(importData) + .build(); + + //鎿嶄綔浜 + Map map = getSalaryArchiveWrapper(user).checkSalaryArchiveInit(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("瀹氳柂妫鏌ュ瓨鍦ㄥ紓甯 requestId:{} ,鍙傛暟:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } return SUCCESS; } diff --git a/src/com/engine/salary/action/InitSalaryAction.java b/src/com/engine/salary/action/InitSalaryAction.java index 4b2b0472b..3593dcb9b 100644 --- a/src/com/engine/salary/action/InitSalaryAction.java +++ b/src/com/engine/salary/action/InitSalaryAction.java @@ -2,11 +2,23 @@ package com.engine.salary.action; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; +import com.engine.salary.mapper.archive.SalaryArchiveMapper; +import com.engine.salary.service.SalaryArchiveService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.impl.SalaryArchiveServiceImpl; +import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.wrapper.SalaryArchiveWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -25,6 +37,18 @@ public class InitSalaryAction implements Action { return ServiceUtil.getService(SalaryArchiveWrapper.class, user); } + private SalaryArchiveService getSalaryArchiveService(User user) { + return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private SalaryArchiveMapper getSalaryArchiveMapper() { + return MapperProxyFactory.getProxy(SalaryArchiveMapper.class); + } + private String tableName; @@ -39,12 +63,10 @@ public class InitSalaryAction implements Action { @Override public String execute(RequestInfo requestInfo) { try { - Property[] properties = requestInfo.getMainTableInfo().getProperty(); Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); - RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; @@ -57,44 +79,79 @@ public class InitSalaryAction implements Action { String value = fieldMap.get(processField); list.add(new SalaryField(processField, salaryName, value)); } - List> importData = new ArrayList<>(); + Map importDataMap = SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue); - if(!importDataMap.containsKey("鐢熸晥鏃ユ湡")){ - importDataMap.put("鐢熸晥鏃ユ湡", SalaryDateUtil.getFormatDate(new Date())); - } - if(!importDataMap.containsKey("鏈鍚庡彂钖棩鏈")){ - importDataMap.put("鏈鍚庡彂钖棩鏈", ""); - } - importData.add(importDataMap); - SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() - .importDatas(importData) - .build(); - - //鎿嶄綔浜 - String uid = list.stream().filter(f -> f.salaryName.equals("鎿嶄綔浜")).findFirst().map(SalaryField::getValue).orElse("1"); - Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).importSalaryArchiveInit(build); - - List errorNotice = (List) map.get("errorNotice"); - if (CollectionUtils.isNotEmpty(errorNotice)) { - log.error("瀹氳柂瀛樺湪寮傚父 requestId:{} ,鍙傛暟:{}, map:{}", requestInfo.getRequestid(), build, map); - List> excelComments = (List>) map.get("errorNotice"); - StringBuilder message = new StringBuilder(""); - for (Map comments : excelComments) { - message.append(comments.get("message")).append("\n"); - } - requestInfo.getRequestManager().setMessage(message.toString()); - return FAILURE_AND_CONTINUE; - } + return doSalaryArchiveInit(requestInfo, importDataMap); } catch (Exception e) { log.error("瀹氳柂寮傚父", e); requestInfo.getRequestManager().setMessage(e.getMessage()); return FAILURE_AND_CONTINUE; } + } + + public String doSalaryArchiveInit(RequestInfo requestInfo, Map importDataMap) { + User user = new User(); + user.setLoginid("sysadmin"); + user.setUid(1); + List> importData = new ArrayList<>(); + if(!importDataMap.containsKey("鐢熸晥鏃ユ湡")){ + importDataMap.put("鐢熸晥鏃ユ湡", SalaryDateUtil.getFormatDate(new Date())); + } + if(!importDataMap.containsKey("鏈鍚庡彂钖棩鏈")){ + importDataMap.put("鏈鍚庡彂钖棩鏈", ""); + } + importData.add(importDataMap); + + // 棣栧厛鍒ゆ柇鏄惁宸茬粡瀛樺湪钖祫妗f锛屼笖钖祫妗f鐘舵佷负寰呭畾钖 + String taxAgentName = importDataMap.getOrDefault("涓◣鎵g即涔夊姟浜", "").toString(); + String empIdStr = importDataMap.getOrDefault("鍛樺伐id", "").toString(); + if (StringUtils.isBlank(taxAgentName)) { + requestInfo.getRequestManager().setMessage("涓◣鎵g即涔夊姟浜轰笉鑳戒负绌"); + return FAILURE_AND_CONTINUE; + } + // 鑾峰彇涔夊姟浜轰俊鎭 + List taxAgentPOS = getTaxAgentService(user).list(TaxAgentQueryParam.builder().name(taxAgentName).build()); + if (CollectionUtils.isEmpty(taxAgentPOS)) { + requestInfo.getRequestManager().setMessage("涓◣鎵g即涔夊姟浜轰笉瀛樺湪"); + return FAILURE_AND_CONTINUE; + } + Long taxAgentId = taxAgentPOS.get(0).getId(); + // 鑾峰彇鍛樺伐id + if (NumberUtils.isCreatable(empIdStr)) { + List salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(Long.valueOf(empIdStr)).build()); + if (CollectionUtils.isNotEmpty(salaryArchivePOList) && !salaryArchivePOList.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())) { + // 瀛樺湪钖祫妗f锛屼笖钖祫妗f鐘舵佷笉鏄緟瀹氳柂锛屼慨鏀圭姸鎬佷负寰呭畾钖 + salaryArchivePOList.get(0).setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); + salaryArchivePOList.get(0).setPayEndDate(null); + getSalaryArchiveMapper().update(salaryArchivePOList.get(0)); + } + } + + SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() + .importDatas(importData) + .build(); + + //鎿嶄綔浜 + String uid = importDataMap.getOrDefault("鎿嶄綔浜", "1").toString(); + Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).importSalaryArchiveInit(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("瀹氳柂瀛樺湪寮傚父 requestId:{} ,鍙傛暟:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } return SUCCESS; } + class SalaryField { private String processField; diff --git a/src/com/engine/salary/action/RehireAction.java b/src/com/engine/salary/action/RehireAction.java index d0acd6e27..ac236b54a 100644 --- a/src/com/engine/salary/action/RehireAction.java +++ b/src/com/engine/salary/action/RehireAction.java @@ -16,6 +16,7 @@ import com.engine.salary.service.TaxAgentService; import com.engine.salary.service.impl.SalaryArchiveServiceImpl; import com.engine.salary.service.impl.TaxAgentManageRangeServiceImpl; import com.engine.salary.service.impl.TaxAgentServiceImpl; +import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.wrapper.SalaryArchiveWrapper; @@ -89,9 +90,9 @@ public class RehireAction implements Action { String value = fieldMap.get(processField); list.add(new SalaryField(processField, salaryName, value)); } - Map salaryFieldMap = SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue); - String taxAgentName = salaryFieldMap.get("涓◣鎵g即涔夊姟浜"); - String empIdStr = salaryFieldMap.get("鍛樺伐id"); + Map salaryFieldMap = SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue); + String taxAgentName = salaryFieldMap.getOrDefault("涓◣鎵g即涔夊姟浜", "").toString(); + String empIdStr = salaryFieldMap.getOrDefault("鍛樺伐id", "").toString(); if (StringUtils.isBlank(taxAgentName) || StringUtils.isBlank(empIdStr)) { requestInfo.getRequestManager().setMessage("涓◣鎵g即涔夊姟浜恒佹垨鍛樺伐id涓嶈兘涓虹┖"); return FAILURE_AND_CONTINUE; @@ -107,47 +108,69 @@ public class RehireAction implements Action { Long employeeId = Long.valueOf(empIdStr); List salaryArchivePOS = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(employeeId).build()); if (CollectionUtils.isEmpty(salaryArchivePOS)){ - requestInfo.getRequestManager().setMessage("璇ヤ釜绋庢墸缂翠箟鍔′汉涓嬶紝璇ュ憳宸ヤ笉瀛樺湪钖祫妗f锛"); - return FAILURE_AND_CONTINUE; + // 鐩存帴璧板畾钖猘ction鐢熸垚妗f + InitSalaryAction initSalaryAction = new InitSalaryAction(); + return initSalaryAction.doSalaryArchiveInit(requestInfo, salaryFieldMap); + + // requestInfo.getRequestManager().setMessage("璇ヤ釜绋庢墸缂翠箟鍔′汉涓嬶紝璇ュ憳宸ヤ笉瀛樺湪钖祫妗f锛"); + // return FAILURE_AND_CONTINUE; } else if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue())) { - requestInfo.getRequestManager().setMessage("璇ヤ釜绋庢墸缂翠箟鍔′汉涓嬶紝璇ュ憳宸ユ病鏈夊彂杩囪柂銆傞渶鍙栨秷鍋滆柂鍚庯紝鐢宠瀹氳柂娴佺▼锛"); - return FAILURE_AND_CONTINUE; - } - - if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { - // 鍋滆柂鏉ヨ嚜寰呭仠钖 1銆佸彇娑堝仠钖 - getSalaryArchiveWrapper(user).cancelStop(Collections.singletonList(salaryArchivePOS.get(0).getId())); - } - if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()) || salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.SUSPEND.getValue())) { - // 1銆佸鏋滀笉鍦ㄤ汉鍛樿寖鍥村唴鍒欐妸浠栧姞鍏ヤ箟鍔′汉鐨勪汉鍛樿寖鍥达紝2銆佸垹闄ゅ緟鍔 - addTaxAgentRangeIfNotExist(taxAgentId, employeeId, user); - getSalaryArchiveWrapper(user).deleteSuspendTodo(Collections.singletonList(salaryArchivePOS.get(0).getId())); - } - - // 璋冭柂 - List> importData = new ArrayList<>(); - importData.add(SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue)); - - SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() - .importDatas(importData) - .build(); - - //鎿嶄綔浜 - String uid = list.stream().filter(f -> f.salaryName.equals("鎿嶄綔浜")).findFirst().map(RehireAction.SalaryField::getValue).orElse("1"); - Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).adjustmentSalaryArchive(build); - - List errorNotice = (List) map.get("errorNotice"); - if (CollectionUtils.isNotEmpty(errorNotice)) { - // 鍥炴粴妗f鐘舵 + // 鍏堟妸鐘舵佸彉鎴愬緟瀹氳柂鐒跺悗璧板畾钖猘ction + salaryArchivePOS.get(0).setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); + salaryArchivePOS.get(0).setPayEndDate(null); getSalaryArchiveMapper().update(salaryArchivePOS.get(0)); - log.error("璋冭柂瀛樺湪寮傚父 requestId:{} map:{}", requestInfo.getRequestid(), map); - List> excelComments = (List>) map.get("errorNotice"); - StringBuilder message = new StringBuilder(""); - for (Map comments : excelComments) { - message.append(comments.get("message")).append("\n"); + InitSalaryAction initSalaryAction = new InitSalaryAction(); + return initSalaryAction.doSalaryArchiveInit(requestInfo, salaryFieldMap); + + // requestInfo.getRequestManager().setMessage("璇ヤ釜绋庢墸缂翠箟鍔′汉涓嬶紝璇ュ憳宸ユ病鏈夊彂杩囪柂銆傞渶鍙栨秷鍋滆柂鍚庯紝鐢宠瀹氳柂娴佺▼锛"); + // return FAILURE_AND_CONTINUE; + } else { + if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { + // 鍋滆柂鏉ヨ嚜寰呭仠钖 1銆佸彇娑堝仠钖 + getSalaryArchiveWrapper(user).cancelStop(Collections.singletonList(salaryArchivePOS.get(0).getId())); + } + if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()) || + salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.SUSPEND.getValue())) { + // 1銆佸鏋滀笉鍦ㄤ汉鍛樿寖鍥村唴鍒欐妸浠栧姞鍏ヤ箟鍔′汉鐨勪汉鍛樿寖鍥达紝2銆佸垹闄ゅ緟鍔 + addTaxAgentRangeIfNotExist(taxAgentId, employeeId, user); + getSalaryArchiveWrapper(user).deleteSuspendTodo(Collections.singletonList(salaryArchivePOS.get(0).getId())); + } + + // 璋冭柂 + List> importData = new ArrayList<>(); + importData.add(SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue)); + + SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() + .importDatas(importData) + .build(); + + //鎿嶄綔浜 + String uid = list.stream().filter(f -> f.salaryName.equals("鎿嶄綔浜")).findFirst().map(RehireAction.SalaryField::getValue).orElse("1"); + Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).adjustmentSalaryArchive(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + // 鍥炴粴妗f鐘舵 + getSalaryArchiveMapper().update(salaryArchivePOS.get(0)); + log.error("璋冭柂瀛樺湪寮傚父 requestId:{} map:{}", requestInfo.getRequestid(), map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + // 濡傛灉鏈夎捣濮嬪彂钖棩鏈熷瓧娈碉紝鍒欐洿鏂版。妗堢殑璧峰鍙戣柂鏃ユ湡 + String startPayDate = salaryFieldMap.getOrDefault("璧峰鍙戣柂鏃ユ湡", "").toString(); + if (StringUtils.isNotBlank(startPayDate)) { + Date date = SalaryDateUtil.dateStrToLocalDate(startPayDate); + if (date != null) { + Long salaryArchiveId = salaryArchivePOS.get(0).getId(); + getSalaryArchiveMapper().updatePayStartDateById(salaryArchiveId, date); + } + } - requestInfo.getRequestManager().setMessage(message.toString()); - return FAILURE_AND_CONTINUE; } } catch (Exception e) { log.error("杩旇仒璋冭柂寮傚父", e); diff --git a/src/com/engine/salary/annotation/TaxField.java b/src/com/engine/salary/annotation/TaxField.java new file mode 100644 index 000000000..57495febf --- /dev/null +++ b/src/com/engine/salary/annotation/TaxField.java @@ -0,0 +1,12 @@ +package com.engine.salary.annotation; + +import java.lang.annotation.*; + +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface TaxField { + String name(); + + String taxIndex(); +} diff --git a/src/com/engine/salary/biz/EmployBiz.java b/src/com/engine/salary/biz/EmployBiz.java index aec48b367..bc471743e 100644 --- a/src/com/engine/salary/biz/EmployBiz.java +++ b/src/com/engine/salary/biz/EmployBiz.java @@ -62,6 +62,23 @@ public class EmployBiz extends BaseBean { } } + public List getEmployeeByIdsIncludeAccountType(List list) { + if (CollectionUtils.isEmpty(list)) { + return new ArrayList<>(); + } + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + List dataList = new ArrayList<>(); + EmployMapper mapper = sqlSession.getMapper(EmployMapper.class); + List> partition = Lists.partition(list, 1000); + for (List longs : partition) { + dataList.addAll(mapper.getEmployeeByIdsIncludeAccountType(longs)); + } + return dataList; + } finally { + sqlSession.close(); + } + } public List getEmployeeByIdsAll(List list) { if (CollectionUtils.isEmpty(list)) { @@ -102,6 +119,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 { @@ -171,6 +201,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 { @@ -211,4 +255,15 @@ public class EmployBiz extends BaseBean { } } + + 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..2f345fc76 100644 --- a/src/com/engine/salary/cache/SalaryCacheKey.java +++ b/src/com/engine/salary/cache/SalaryCacheKey.java @@ -15,6 +15,11 @@ public class SalaryCacheKey { */ public final static String ACCT_PROGRESS = "ACCT_PROGRESS_"; + /** + * 鏍哥畻绋庡悗宸ヨ祫杩涘害 + */ + public final static String AFTER_TAXA_CCT_PROGRESS = "AFTER_TAX_ACCT_PROGRESS_"; + /** * 钖祫鏍哥畻鐨勮处濂楅厤缃 */ diff --git a/src/com/engine/salary/config/SalaryPermissionConfig.java b/src/com/engine/salary/config/SalaryPermissionConfig.java index 7703e9267..61abe6086 100644 --- a/src/com/engine/salary/config/SalaryPermissionConfig.java +++ b/src/com/engine/salary/config/SalaryPermissionConfig.java @@ -22,11 +22,11 @@ //@Configuration //public class SalaryPermissionConfig { // -// @Autowired +// // private PermissionConfig permissionConfig; -// @Autowired +// // private PermissionModuleSourceService permissionModuleSourceService; -// @Autowired +// // private PermissionModuleTargetService permissionModuleTargetService; // // public static final String TABLE_NAME = "hrsa"; diff --git a/src/com/engine/salary/constant/SzyhApiConstant.java b/src/com/engine/salary/constant/SzyhApiConstant.java index 608bf61a4..7697a206a 100644 --- a/src/com/engine/salary/constant/SzyhApiConstant.java +++ b/src/com/engine/salary/constant/SzyhApiConstant.java @@ -23,12 +23,20 @@ public class SzyhApiConstant { /** * 浼佷笟娉ㄥ唽鎺ュ彛 */ - public static final String GET_REGISTER_INFO_URL = "gateway/iit/declare/getCompanyRegisterInfo"; + public static final String GET_REGISTER_INFO_URL = "gateway/iit/service/getCompanyRegisterInfo"; + /** + * 浼佷笟娉ㄥ唽鍙嶉鎺ュ彛 + */ + public static final String GET_REGISTER_INFO_FEEDBACK_URL = "/gateway/iit/service/getCompanyRegisterInfoFeedback"; /** * 鏍¢獙瀵嗙爜鎺ュ彛 */ - public static final String CHECK_PASSWORD_URL = "gateway/iit/check/checkPassword"; + public static final String CHECK_PASSWORD_URL = "gateway/iit/service/check/checkPassword"; + /** + * 鏍¢獙瀵嗙爜鍙嶉鎺ュ彛 + */ + public static final String CHECK_PASSWORD_FEEDBACK_URL = "gateway/iit/service/check/getCheckPasswordFeedback"; /** * 浜哄憳涓撻」闄勫姞鎵i櫎淇℃伅鏌ヨ @@ -73,22 +81,27 @@ public class SzyhApiConstant { /** * 鏇存鐢虫姤 */ - public static final String UPDATE_DECLARE = "/gateway/iit/report/correct"; + public static final String UPDATE_DECLARE = "/gateway/iit/service/correct"; + + /** + * 鏇存鐢虫姤鍙嶉 + */ + public static final String UPDATE_DECLARE_FEEDBACK = "/gateway/iit/service/getCorrectFeedback"; /** * 鎾ら攢鏇存鐢虫姤 */ public static final String CANCEL_CORRECT = "gateway/iit/report/cancelCorrect"; - /** - * 绋庡眬绔敵鎶ョ姸鎬佹煡璇 - */ - public static final String QUERY_DECLARE_STATUS = "/gateway/iit/report/queryDeclarationRecord"; - /** * 浼佷笟鐢虫姤鏁版嵁鏄庣粏鏌ヨ */ - public static final String QUERY_COMPANY_INCOMES = "/gateway/iit/report/getCompanyIncomes"; + public static final String GET_COMPANY_INCOMES = "gateway/iit/service/getCompanyIncomes"; + + /** + * 浼佷笟鐢虫姤鏁版嵁鏄庣粏鏌ヨ鍙嶉 + */ + public static final String GET_COMPANY_INCOMES_FEEDBACK = "gateway/iit/service/getCompanyIncomesFeedback"; /** * 鑾峰彇娴侀噺缁熻鎯呭喌 @@ -133,19 +146,53 @@ public class SzyhApiConstant { /** * 缂存鍑瘉浣滃簾 */ - public static final String CANCEL_WITHHOLDING_VOUCHER = "gateway/iit/payment/cancelWithholdingVoucher"; + public static final String CANCEL_WITHHOLDING_VOUCHER = "gateway/iit/service/cancelWithholdingVoucher"; + + /** + * 缂存鍑瘉浣滃簾鍙嶉 + */ + public static final String CANCEL_WITHHOLDING_VOUCHER_FEEDBACK = "gateway/iit/service/getCancelWithholdingVoucher"; + + /** * 瀹岀◣璇佹槑 */ - public static final String GET_WITHHELD_VOUCHER = "gateway/iit/payment/getWithheldVoucher"; + public static final String GET_WITHHELD_VOUCHER = "gateway/iit/service/getWithheldVoucher"; + /** - * 鍒锋柊缂存鐘舵 + * 瀹岀◣璇佹槑鍙嶉 */ - public static final String GET_SYNC_WITHHOLDING_FEEDBACK = "gateway/iit/payment/getSyncWithholdingFeedback"; + public static final String GET_WITHHELD_VOUCHER_FEEDBACK = "gateway/iit/service/getWithheldVoucherFeedback"; + /** - * 浼佷笟鐢虫姤鏁版嵁鏄庣粏鏌ヨ + * 鏌ヨ缂存鐘舵 */ - public static final String GET_COMPANY_INCOMES = "gateway/iit/report/getCompanyIncomes"; + public static final String GET_SYNC_WITHHOLDING_FEEDBACK = "gateway/iit/service/getSyncWithholdingFeedback"; + + /** + * 鏌ヨ缂存鐘舵佸弽棣 + */ + public static final String GET_SYNC_WITHHOLDING_FEEDBACK_FEEDBACK = "gateway/iit/service/getSyncWithholding"; + + + /** + * 涓汉鍏昏侀噾涓嬭浇 + */ + public static final String DOWNLOAD_PERSONAL_PENSION = "gateway/iit/personalPension/download"; + /** + * 鑾峰彇涓汉鍏昏侀噾涓嬭浇鍙嶉 + */ + public static final String DOWNLOAD_PERSONAL_PENSION_FEEDBACK = "gateway/iit/personalPension/getDownloadFeedback"; + /** + * 寮傛璁$畻涓◣ + */ + public static final String CALCULATE_ASYN_INDIVIDUAL_INCOME_TAX = "gateway/iit/calculateTax/calculateASynIndividualIncomeTax"; + /** + * 鏌ヨ绠楃◣鍙嶉缁撴灉 + */ + public static final String ASYN_INDIVIDUAL_INCOME_TAX_FEEDBACK = "gateway/iit/calculateTax/getASynIndividualIncomeTaxFeedback"; + + /** @@ -158,6 +205,11 @@ public class SzyhApiConstant { */ public static final String HANDLING_CODE = "000004"; + /** + * 寮傛璁$畻浠诲姟杩樻湭缁撴潫 + */ + public static final String TASK_HANDLING_CODE = "100004"; + /** * 浼佷笟鏈嶅姟涓嶅彲鐢 */ diff --git a/src/com/engine/salary/constant/des.json b/src/com/engine/salary/constant/des.json index 0b35d5f80..f970e4448 100644 --- a/src/com/engine/salary/constant/des.json +++ b/src/com/engine/salary/constant/des.json @@ -980,7 +980,31 @@ "infinite": true } ] - } + }, + { + "name": "DAYSINMONTH", + "chineseName": "杩斿洖鎸囧畾鏈堢殑澶╂暟", + "description": "杩斿洖鎸囧畾鏈堢殑澶╂暟銆", + "example": "DAYSINMONTH('2024-01-01')", + "result": "31", + "paramDescs": [ + "*鏃ユ湡*锛堝繀閫夛級" + ], + "formatString": "DAYSINMONTH(鏃ユ湡)", + "paramArray": [], + "paramData": [], + "returnType": "number", + "type": "function", + "validForm": "days_in_month", + "paramCount": -1, + "paramStatuses": [ + { + "dataType": "date", + "must": true, + "infinite": true + } + ] + }, ], "dataType": "date", "name": "鏃ユ湡鍑芥暟", diff --git a/src/com/engine/salary/entity/api/ApiTaskRecordPO.java b/src/com/engine/salary/entity/api/ApiTaskRecordPO.java new file mode 100644 index 000000000..dbb45bf9d --- /dev/null +++ b/src/com/engine/salary/entity/api/ApiTaskRecordPO.java @@ -0,0 +1,63 @@ +package com.engine.salary.entity.api; + +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 ApiTaskRecordPO { + + /** + * 涓婚敭id + */ + private Long id; + + /** + * 鏉ユ簮 + */ + private String source; + + /** + * api鎿嶄綔 + */ + private String api; + + /** + * 鍙傛暟 + */ + private String param; + /** + * 鍙嶉 + */ + private String response; + + /** + * 鏇存柊鏃堕棿 + */ + private Date updateTime; + + /** + * 鍒涘缓鏃堕棿 + */ + private Date createTime; + /** + * 鏄惁鍒犻櫎 + */ + private Integer deleteType; + + /** + * 绉熸埛key + */ + private String tenantKey; + + //涓婚敭id闆嗗悎 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java index 25ba3c731..69c7997f8 100644 --- a/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java +++ b/src/com/engine/salary/entity/employeedeclare/bo/EmployeeDeclareRefresh.java @@ -130,11 +130,6 @@ public class EmployeeDeclareRefresh { employeeDeclare.setGender(SalaryCardUtil.judgeGender(idNum).getValue()); employeeDeclare.setBirthday(SalaryDateUtil.localDateToDate(SalaryCardUtil.judgeBirthday(idNum))); employeeDeclare.setNationality("涓浗"); - } else { - // fixme 闃垮瘜姹 -// employeeDeclare.setNationality("闃垮瘜姹"); -// employeeDeclare.setEntryDate(); -// employeeDeclare.setDepartureDate(); } // 瀵逛汉鍛樺鐞嗐屼汉鍛樼姸鎬併嶃併岀鑱屾棩鏈熴 SalaryArchivePO salaryArchive = salaryArchiveMap.get(employeeDeclare.getEmployeeId()); 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 2e8f30ea4..d727f7eb6 100644 --- a/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java +++ b/src/com/engine/salary/entity/salaryBill/bo/SalaryBillBO.java @@ -261,7 +261,7 @@ public class SalaryBillBO { } Util_Message.store(messageBean); } catch (IOException e) { - e.printStackTrace(); + log.error("娑堟伅鍙戦佸け璐",e); } } diff --git a/src/com/engine/salary/entity/salaryBill/param/SalaryPreviewParam.java b/src/com/engine/salary/entity/salaryBill/param/SalaryPreviewParam.java new file mode 100644 index 000000000..8d48e5118 --- /dev/null +++ b/src/com/engine/salary/entity/salaryBill/param/SalaryPreviewParam.java @@ -0,0 +1,32 @@ +package com.engine.salary.entity.salaryBill.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 SalaryPreviewParam { + + /** + * 宸ヨ祫鍗昳d + */ + private Long salaryInfoId; + + /** + * 鍛樺伐id + */ + private Long recipient; + +} diff --git a/src/com/engine/salary/entity/salaryBill/param/SalarySendDetailQueryParam.java b/src/com/engine/salary/entity/salaryBill/param/SalarySendDetailQueryParam.java index 94fb68c32..1b49f639b 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalarySendDetailQueryParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalarySendDetailQueryParam.java @@ -68,6 +68,10 @@ public class SalarySendDetailQueryParam extends BaseQueryParam { // @JsonIgnore private List sendStatuss; + + // 瀵煎嚭鏃舵樉绀哄垪瀹氬埗淇℃伅 + List columns; + public static String checkParam(SalarySendDetailQueryParam saveParam) { if (saveParam.getSalarySendId() == null) { throw new SalaryRunTimeException("宸ヨ祫鍗曞彂鏀綢d蹇呬紶"); diff --git a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java index 1a42fb1c5..726442188 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/CalculateFormulaVarBO.java @@ -33,6 +33,7 @@ import lombok.experimental.Accessors; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import weaver.general.BaseBean; +import weaver.general.Util; import java.lang.reflect.Field; import java.math.BigDecimal; @@ -173,11 +174,7 @@ public class CalculateFormulaVarBO { String fieldValue = map.getOrDefault(fieldName, StringUtils.EMPTY); //鏃ユ湡鍊煎彇yyyy-MM-dd if (StringUtils.isNotBlank(fieldValue) && fieldValue.length() > 10 && SalaryDateUtil.parse(fieldValue, DATE_TIME_FORMATTER_PATTERN) != null) { - if (StringUtils.isNotBlank(salaryDateFormat)) { - fieldValue = fieldValue.substring(0, salaryDateFormat.length()); - } else { - fieldValue = fieldValue.substring(0, 10); - } + fieldValue = fieldValue.substring(0, 10); } formulaVarValues.add(new FormulaVarValue().setFieldId(fieldId).setFieldValue(fieldValue)); } @@ -529,11 +526,7 @@ public class CalculateFormulaVarBO { String fieldValue = map.getOrDefault(fieldName, StringUtils.EMPTY); //鍒ゆ柇鏄惁鏄棩鏈燂紝鏃ユ湡鍊煎彇yyyy-MM-dd if (StringUtils.isNotBlank(fieldValue) && fieldValue.length() > 10 && SalaryDateUtil.parse(fieldValue, DATE_TIME_FORMATTER_PATTERN) != null) { - if (StringUtils.isNotBlank(salaryDateFormat)) { - fieldValue = fieldValue.substring(0, salaryDateFormat.length()); - } else { - fieldValue = fieldValue.substring(0, 10); - } + fieldValue = fieldValue.substring(0, 10); } return new FormulaVarValue().setFieldId(fieldId).setFieldValue(fieldValue); }).collect(Collectors.toList())); @@ -566,7 +559,7 @@ public class CalculateFormulaVarBO { employeeMap.forEach((key, po) -> { // 鑾峰彇po鐨勭姸鎬 if(po.getStatus() != null && NumberUtil.isNumber(po.getStatus())) { - po.setStatusName(UserStatusEnum.getDefaultLabelByValue(new Integer(po.getStatus()))); + po.setStatusName(UserStatusEnum.getDefaultLabelByValue(new Integer(Util.null2s(po.getStatus(),"1")))); } List formulaVarValues = resultMap.computeIfAbsent(key, k -> Lists.newArrayList()); Map map = JsonUtil.parseMap(po, String.class); diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java index f29ccd1ce..57c113390 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctCalculateBO.java @@ -120,6 +120,11 @@ public class SalaryAcctCalculateBO { */ private BlockingDeque results; + /** + * 涓◣椤圭洰 + */ + private List taxIds; + /** * 绯荤粺绠楃◣鍚敤鐘舵 */ diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java index 39499174c..60058a59c 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctEmployeeBO.java @@ -15,6 +15,7 @@ import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; +import weaver.general.Util; import java.util.*; import java.util.stream.Collectors; @@ -121,9 +122,9 @@ public class SalaryAcctEmployeeBO { } public static List convert2Employee(Collection employee, - SalaryAcctRecordPO salaryAcctRecord, - List salaryArchiveTaxAgentData, - Long employeeId) { + SalaryAcctRecordPO salaryAcctRecord, + List salaryArchiveTaxAgentData, + Long employeeId) { if (CollectionUtils.isEmpty(employee)) { return Collections.emptyList(); } @@ -147,6 +148,15 @@ public class SalaryAcctEmployeeBO { .employeeId(emp.getEmployeeId()) .employeeType(emp.isExtEmp() ? 1 : 0) .taxAgentId(taxAgentId) + .departmentId(emp.getDepartmentId()) + .departmentName(emp.getDepartmentName()) + .jobcall(emp.getJobcall()) + .jobcallId(emp.getJobcallId()) + .jobtitleId(emp.getJobtitleId()) + .jobtitleName(emp.getJobtitleName()) + .subcompanyId(emp.getSubcompanyid()) + .subcompanyName(emp.getSubcompanyName()) + .status(emp.getStatus()) .creator(employeeId) .createTime(now) .updateTime(now) @@ -159,6 +169,24 @@ public class SalaryAcctEmployeeBO { return resultList; } + /** + * 鏍哥畻浜哄憳淇℃伅鏇挎崲瀹炴椂淇℃伅 + * @param simpleEmployee + * @param acctEmployeePO + */ + public static void copyAcctEmp(DataCollectionEmployee simpleEmployee, SalaryAcctEmployeePO acctEmployeePO) { + simpleEmployee.setDepartmentId(acctEmployeePO.getDepartmentId()); + simpleEmployee.setDepartmentName(acctEmployeePO.getDepartmentName()); + simpleEmployee.setSubcompanyid(acctEmployeePO.getSubcompanyId()); + simpleEmployee.setSubcompanyName(acctEmployeePO.getSubcompanyName()); + simpleEmployee.setJobcallId(acctEmployeePO.getJobcallId()); + simpleEmployee.setJobcall(acctEmployeePO.getJobcall()); + simpleEmployee.setJobtitleId(acctEmployeePO.getJobtitleId()); + simpleEmployee.setJobtitleName(acctEmployeePO.getJobtitleName()); + simpleEmployee.setStatusName(UserStatusEnum.getDefaultLabelByValue(new Integer(Util.null2s(acctEmployeePO.getStatus(), "1")))); + simpleEmployee.setStatus(acctEmployeePO.getStatus()); + } + public static List> partitionByEmployeeId(List salaryAcctEmployees) { if (CollectionUtils.isEmpty(salaryAcctEmployees)) { diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctFormulaBO.java index 546b1036b..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; @@ -62,7 +63,7 @@ public class SalaryAcctFormulaBO { salaryItemPattern = salarySobBackItemMap.get(salaryItem.getId()).getPattern(); } BigDecimal bigDecimalValue = SalaryEntityUtil.empty2Zero(value); - return SalaryEntityUtil.carryRule(salaryItemPattern, salaryItemRoundingMode, bigDecimalValue).toString(); + return SalaryEntityUtil.carryRule(salaryItemPattern, salaryItemRoundingMode, bigDecimalValue).toPlainString(); } /** @@ -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 121092602..ef1dcca05 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; @@ -20,6 +21,7 @@ import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO; import com.engine.salary.entity.salarysob.po.*; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.SalaryValueTypeEnum; +import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryaccounting.LockStatusEnum; import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.util.SalaryEntityUtil; @@ -31,8 +33,10 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; 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; @@ -251,7 +255,7 @@ public class SalaryAcctResultBO { * @param taxAgents * @param consolidatedTaxSalaryAcctEmpIds * @param customBackCalcParameters - * @param isBackCalc + * @param dynamicEmpInfo * @return */ public static List> buildTableData(List salaryItems, @@ -263,10 +267,11 @@ public class SalaryAcctResultBO { Set consolidatedTaxSalaryAcctEmpIds, Map customParameters, Map customBackCalcParameters, - boolean isBackCalc) { + boolean dynamicEmpInfo) { if (CollectionUtils.isEmpty(salaryAcctEmployees)) { return Collections.emptyList(); } + SalaryI18nUtil.i18nList(salaryAcctEmployees); Map employeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, DataCollectionEmployee::getEmployeeId); Map> acctResultMap = SalaryEntityUtil.group2Map(salaryAccountingResults, SalaryAcctResultPO::getEmployeeId); Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getId, TaxAgentPO::getName); @@ -278,12 +283,35 @@ public class SalaryAcctResultBO { // 钖祫椤圭洰鐨勫瓧娈电被鍨嬶紙鍓嶇渚濇嵁杩欎釜鍒ゆ柇鏄惁闇瑕佸睍绀哄崈鍒嗕綅锛 Map dataTypeMap = SalaryEntityUtil.convert2Map(salaryItems, salaryItemPO -> salaryItemPO.getId() + DATA_TYPE_SUFFIX, SalaryItemPO::getDataType); map.putAll(dataTypeMap); - // TODO ?鐪嬩竴涓嬪鏋滀笉鏄洖绠楄繖浼氫笉浼氭湁鍥炵畻鐨勪笢瑗? // 浜哄憳淇℃伅瀛楁鐨勫 - Map fieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(employeeMap.get(e.getEmployeeId())); + Map fieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(employeeMap.get(e.getEmployeeId()), e, true); for (SalarySobEmpFieldPO salarySobEmpField : salarySobEmpFields) { - map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); // 鍛樺伐淇℃伅瀛楁鐨勫瓧娈电被鍨 + if (dynamicEmpInfo) { + map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); + } else { + if ("departmentName".equals(salarySobEmpField.getFieldCode())) { + map.put("departmentName", e.getDepartmentName()); + } else if ("departmentId".equals(salarySobEmpField.getFieldCode())) { + map.put("departmentId", e.getDepartmentId()); + } else if ("subcompanyName".equals(salarySobEmpField.getFieldCode())) { + map.put("subcompanyName", e.getSubcompanyName()); + } else if ("jobcall".equals(salarySobEmpField.getFieldCode())) { + map.put("jobcall", e.getJobcall()); + } else if ("jobcallId".equals(salarySobEmpField.getFieldCode())) { + map.put("jobcallId", e.getJobcallId()); + } else if ("jobtitleName".equals(salarySobEmpField.getFieldCode())) { + map.put("jobtitleName", e.getJobtitleName()); + } else if ("jobtitleId".equals(salarySobEmpField.getFieldCode())) { + map.put("jobtitleId", e.getJobtitleId()); + } 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")))); + } else { + map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); + } + } map.put(salarySobEmpField.getFieldCode() + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); } // 涓婚敭id @@ -328,7 +356,8 @@ public class SalaryAcctResultBO { List taxAgents, Map customParameters, Set consolidatedTaxSalaryAcctEmpIds, - Set includeSalaryItemIds) { + Set includeSalaryItemIds, + boolean dynamicEmpInfo) { if (CollectionUtils.isEmpty(simpleEmployees)) { return Collections.emptyList(); } @@ -342,10 +371,34 @@ 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) { - map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); // 鍛樺伐淇℃伅瀛楁鐨勫瓧娈电被鍨 + if (dynamicEmpInfo) { + map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); + } else { + if ("departmentName".equals(salarySobEmpField.getFieldCode())) { + map.put("departmentName", salaryAcctEmployee.getDepartmentName()); + } else if ("departmentId".equals(salarySobEmpField.getFieldCode())) { + map.put("departmentId", salaryAcctEmployee.getDepartmentId()); + } else if ("subcompanyName".equals(salarySobEmpField.getFieldCode())) { + map.put("subcompanyName", salaryAcctEmployee.getSubcompanyName()); + } else if ("jobcall".equals(salarySobEmpField.getFieldCode())) { + map.put("jobcall", salaryAcctEmployee.getJobcall()); + } else if ("jobcallId".equals(salarySobEmpField.getFieldCode())) { + map.put("jobcallId", salaryAcctEmployee.getJobcallId()); + } else if ("jobtitleName".equals(salarySobEmpField.getFieldCode())) { + map.put("jobtitleName", salaryAcctEmployee.getJobtitleName()); + } else if ("jobtitleId".equals(salarySobEmpField.getFieldCode())) { + map.put("jobtitleId", salaryAcctEmployee.getJobtitleId()); + } else if ("status".equals(salarySobEmpField.getFieldCode())) { + map.put("status", salaryAcctEmployee.getStatus()); + } else if ("statusName".equals(salarySobEmpField.getFieldCode())) { + map.put("statusName", UserStatusEnum.getDefaultLabelByValue(new Integer(Util.null2s(salaryAcctEmployee.getStatus(), "1")))); + } else { + map.put(salarySobEmpField.getFieldCode(), fieldValueMap.get(salarySobEmpField.getFieldCode())); + } + } map.put(salarySobEmpField.getFieldCode() + DATA_TYPE_SUFFIX, SalaryDataTypeEnum.STRING.getValue()); } // 绯荤粺鍊 @@ -367,13 +420,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()); } @@ -424,16 +484,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(); + // 杩囨护鍑烘槸娴忚妗嗙被鍨嬬殑涓斾汉鍛樹俊鎭腑鍚屾椂瀛樺湪鍚嶇О鍜宨d鐨勫瓧娈 + 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); @@ -536,7 +632,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(""); @@ -658,6 +754,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/bo/SalaryCalcTax.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTax.java new file mode 100644 index 000000000..3dab288f0 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTax.java @@ -0,0 +1,199 @@ +package com.engine.salary.entity.salaryacct.bo; + +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +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.salaryacct.po.SalaryAcctTaxAgentPO; +import com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO; +import com.engine.salary.entity.taxagent.bo.TaxAgentTaxReturnBO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; +import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; +import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 钖祫鏍哥畻璁$畻涓◣ + * + * @author xiajun + */ +@Data +@AllArgsConstructor +public class SalaryCalcTax { + + /** + * 钖祫鏍哥畻璁板綍 + */ + private SalaryAcctRecordPO salaryAcctRecord; + + /** + * 钖祫鏍哥畻鍏宠仈鐨勪釜绋庢墸缂翠箟鍔′汉 + */ + private List salaryAcctTaxAgents; + + /** + * 钖祫鏍哥畻鍏宠仈鐨勮柂璧勬牳绠椾汉鍛 + */ + private List salaryAcctEmployees; + + /** + * 钖祫鏍哥畻鍏宠仈鐨勮柂璧勬牳绠楃粨鏋 + */ + private List salaryAcctResultValues; + + /** + * 涓◣鎵g即涔夊姟浜 + */ + private List taxAgents; + + /** + * 涓◣鎵g即涔夊姟浜虹殑涓◣淇℃伅 + */ + private List taxAgentTaxReturns; + + /** + * 涓◣鐢虫姤琛ㄥ瓧娈 + */ + private List taxReportColumns; + + /** + * 钖祫璐﹀鐨勪釜绋庣敵鎶ヨ〃瀛楁瀵瑰簲 + */ + private List salarySobTaxReportRules; + + /** + * 鎶ラ佷汉鍛 + */ + private List employeeDeclares; + + public Map> buildCalcTaxRequestParam() { + // 钖祫鏍哥畻鍏宠仈鐨勪釜绋庢墸缂翠箟鍔′汉 + Map> salaryAcctAgentMap = SalaryEntityUtil.group2Map(salaryAcctTaxAgents, SalaryAcctTaxAgentPO::getTaxAgentId); + // 钖祫鏍哥畻鍏宠仈鐨勮柂璧勬牳绠椾汉鍛 + Map> salaryAcctEmployeeMap = SalaryEntityUtil.group2Map(salaryAcctEmployees, SalaryAcctEmployeePO::getTaxAgentId); + // 钖祫鏍哥畻鍏宠仈鐨勮柂璧勬牳绠楃粨鏋 + Map> salaryAcctResultValueMap = SalaryEntityUtil.group2Map(salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId); + // 涓◣鎵f涔夊姟浜 + Map taxAgentMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getId); + // 涓◣鎵f涔夊姟浜虹殑涓◣淇℃伅 + Map taxAgentTaxReturnMap = SalaryEntityUtil.convert2Map(taxAgentTaxReturns, TaxAgentTaxReturnPO::getTaxAgentId); + // 涓◣鐢虫姤琛ㄥ瓧娈 + Map> taxReportColumnMap = SalaryEntityUtil.group2Map(taxReportColumns, TaxReportColumnPO::getIncomeCategory); + // 钖祫璐﹀鐨勪釜绋庣敵鎶ヨ〃瀛楁瀵瑰簲 + Map salarySobTaxReportRuleMap = SalaryEntityUtil.convert2Map(salarySobTaxReportRules, SalarySobTaxReportRulePO::getReportColumnDataIndex); + // 鎶ラ佷汉鍛 + Map> employeeDeclareMap = SalaryEntityUtil.group2Map(employeeDeclares, EmployeeDeclarePO::getTaxAgentId); + + Map> resultMap = new HashMap<>(); + + for (Map.Entry> entry : salaryAcctAgentMap.entrySet()) { + TaxAgentPO taxAgent = taxAgentMap.get(entry.getKey()); + if (taxAgent == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "涓◣鎵g即涔夊姟浜轰笉瀛樺湪鎴栧凡琚垹闄")); + } + TaxAgentTaxReturnPO taxAgentTaxReturn = taxAgentTaxReturnMap.get(taxAgent.getId()); + if (taxAgentTaxReturn == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "涓◣鎵g即涔夊姟浜烘病鏈夌淮鎶や釜绋庝俊鎭")); + } + List salaryAcctEmployees = salaryAcctEmployeeMap.get(taxAgent.getId()); + if (CollectionUtils.isEmpty(salaryAcctEmployees)) { + continue; + } + List employeeDeclares = employeeDeclareMap.get(taxAgent.getId()); + if (CollectionUtils.isEmpty(employeeDeclares)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "璇ヤ釜绋庢墸缂翠箟鍔′汉鏃犵敵鎶ヤ汉鍛")); + } + + // 娉ㄥ唽鐨勪紒涓氫俊鎭-->璇锋眰鍙傛暟 + Map requestParam = TaxAgentTaxReturnBO.convert2RequestMap(taxAgent, taxAgentTaxReturn); + // 绋庢鎵灞炴湡 + requestParam.put("skssq", SalaryDateUtil.getFormatYYYYMM(entry.getValue().get(0).getTaxCycle())); + // 缁煎悎鎵寰 + requestParam.put("zhsd", buildZHSDRequestParam(salaryAcctTaxAgents, salaryAcctEmployees, + salaryAcctResultValueMap, taxReportColumnMap, salarySobTaxReportRuleMap, employeeDeclares)); + + resultMap.put(taxAgent.getId(), requestParam); + } + return resultMap; + } + + private Map buildZHSDRequestParam(List salaryAcctTaxAgents, + List salaryAcctEmployees, + Map> salaryAcctResultValueMap, + Map> taxReportColumnMap, + Map salarySobTaxReportRuleMap, + List employeeDeclares) { + Map> incomeCategoryKeySalaryAcctEmployeeMap = SalaryEntityUtil + .group2Map(salaryAcctEmployees, SalaryAcctEmployeePO::getIncomeCategory); + + Map requestParam = new HashMap<>(); + + for (SalaryAcctTaxAgentPO salaryAcctTaxAgent : salaryAcctTaxAgents) { + IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum + .parseByValue(salaryAcctTaxAgent.getIncomeCategory()); + List taxReportColumns = taxReportColumnMap.get(incomeCategoryEnum.getValue().toString()); + List subSalaryAcctEmployees = incomeCategoryKeySalaryAcctEmployeeMap.get(incomeCategoryEnum.getValue().toString()); + Map salaryAcctEmployeeMap = SalaryEntityUtil.convert2Map(subSalaryAcctEmployees, SalaryAcctEmployeePO::getEmployeeId); + + SalaryCalcTaxRequest salaryCalcTaxRequest = new SalaryCalcTaxRequest(salaryAcctEmployeeMap, + salaryAcctResultValueMap, taxReportColumns, salarySobTaxReportRuleMap, employeeDeclares); + + switch (incomeCategoryEnum) { + case WAGES_AND_SALARIES: + requestParam.put("zcgzxj", salaryCalcTaxRequest.buildZCGZXJRequestParam()); + break; + case ONETIME_ANNUAL_BONUS: + requestParam.put("qnycxjjsslb", salaryCalcTaxRequest.buildQNYCXJJSSLBRequestParam()); + break; + case COMPENSATION_FOR_RETIRE: + requestParam.put("ntycxbcjlb", salaryCalcTaxRequest.buildNTYCXBCJLBRequestParam()); + break; + case COMPENSATION_FOR_DISMISS: + requestParam.put("jcldhtycxbcjlb", salaryCalcTaxRequest.buildJCLDHTYCXBCJLBRequestParam()); + break; + case INCOME_FOR_INDIVIDUAL_EQUITY_INCENTIVE: + requestParam.put("grgqjl", salaryCalcTaxRequest.buildGRGQJLRequestParam()); + break; + case ANNUITY_RECEIPT: + requestParam.put("qynj", salaryCalcTaxRequest.buildQYNJRequestParam()); + break; + case REMUNERATION_FOR_LABOR: + requestParam.put("lwbclb", salaryCalcTaxRequest.buildLWBCLBRequestParam()); + break; + case INCOME_FOR_INSURANCE_SALESMAN: + requestParam.put("bxyxy", salaryCalcTaxRequest.buildBXYXYRequestParam()); + break; + case INCOME_FOR_SECURITIES_BROKER: + requestParam.put("zqjjr", salaryCalcTaxRequest.buildZQJJRRequestParam()); + break; + case REMUNERATION_FOR_OTHER_CONTINUOUS_LABOR: + requestParam.put("qtlxlwbc", salaryCalcTaxRequest.buildQTLXLWBCRequestParam()); + break; + case REMUNERATION_FOR_OTHER_LABOR: + requestParam.put("qtflxlwbc", salaryCalcTaxRequest.buildQTFLXLWBCRequestParam()); + break; + case REMUNERATION_FOR_AUTHOR: + requestParam.put("gcsdlb", salaryCalcTaxRequest.buildGCSDLBRequestParam()); + break; + case ROYALTIES: + requestParam.put("txq", salaryCalcTaxRequest.buildTXQRequestParam()); + break; + default: + break; + + } + } + return requestParam; + } +} diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxFeedback.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxFeedback.java new file mode 100644 index 000000000..70963b916 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxFeedback.java @@ -0,0 +1,62 @@ +package com.engine.salary.entity.salaryacct.bo; + +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.engine.salary.util.JsonUtil; +import lombok.Data; +import weaver.general.Util; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 寮傛绠楃◣鐨勫弽棣堢粨鏋 + */ +@Data +public class SalaryCalcTaxFeedback { + + private Map dataMap; + + private List employeeDeclares; + + public SalaryCalcTaxFeedback(Map dataMap, List employeeDeclares) { + this.dataMap = dataMap; + this.employeeDeclares = employeeDeclares; + } + + public Map buildZCGZXJFeedback() { + Map successDataMap = new HashMap<>(); + List successList = JsonUtil.parseList(dataMap.get("sscglb"), Map.class); + for (Map map : successList) { + // 璇佷欢鍙风爜 + String zzhm = Util.null2String(map.get("zzhm")); + // 搴旇ˉ閫绋庨 + String ybtse = Util.null2String(map.get("ybtse")); + + successDataMap.put(zzhm, ybtse); + } + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + resultMap.put(employeeDeclare.getEmployeeId(), successDataMap.get(employeeDeclare.getCardNum())); + } + return resultMap; + } + + public Map buildOtherFeedback() { + Map successDataMap = new HashMap<>(); + List successList = JsonUtil.parseList(dataMap.get("sscglb"), Map.class); + for (Map map : successList) { + // 璇佷欢鍙风爜 + String zzhm = Util.null2String(map.get("zzhm")); + // 搴旇ˉ閫绋庨 + String ybtse = Util.null2String(map.get("yingkjse")); + + successDataMap.put(zzhm, ybtse); + } + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + resultMap.put(employeeDeclare.getEmployeeId(), successDataMap.get(employeeDeclare.getCardNum())); + } + return resultMap; + } +} diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxRequest.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxRequest.java new file mode 100644 index 000000000..69c78a14c --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryCalcTaxRequest.java @@ -0,0 +1,258 @@ +package com.engine.salary.entity.salaryacct.bo; + +import com.engine.salary.entity.employeedeclare.bo.EmployeeDeclareRequest; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; +import com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO; +import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; +import com.engine.salary.enums.employeedeclare.CardTypeEnum; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; +import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.util.SalaryEntityUtil; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.wbi.util.Util; +import lombok.AllArgsConstructor; +import lombok.Data; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; + +@Data +@AllArgsConstructor +public class SalaryCalcTaxRequest { + + private Map salaryAcctEmployeeMap; + private Map> salaryAcctResultValueMap; + private List taxReportColumns; + private Map salarySobTaxReportRuleMap; + private List employeeDeclares; + + /** + * 姝e父宸ヨ祫钖噾 + * + * @return + */ + public Map buildZCGZXJRequestParam() { + // 浜哄憳鍒楄〃 + List> RYLBRequestParam = EmployeeDeclareRequest.convert2RequestParam(employeeDeclares); + // 姝e父宸ヨ祫钖噾鍒楄〃 + List> ZCGZXJLBRequestParams = buildRequestParams(IncomeCategoryEnum.WAGES_AND_SALARIES, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + + Map param = new HashMap<>(); + // 浜哄憳鍒楄〃 + param.put("rylb", RYLBRequestParam); + // 姝e父宸ヨ祫钖噾鍒楄〃 + param.put("zcgzxjlb", ZCGZXJLBRequestParams); + // 姝e父宸ヨ祫钖噾鏄惁闇瑕佷笓椤 + param.put("zcgzxjsfxyzx", 1); + // 姝e父宸ヨ祫钖噾鏄惁浼犲叆涓撻」绱 + param.put("zcgzxjsfcrlj", 0); + // 鏄惁浼犲叆绱涓汉鍏昏侀噾锛2浣跨敤浼犲叆鏁版嵁 + param.put("gryljcl", 2); + + return param; + } + + /** + * 鍏ㄥ勾涓娆℃у閲戞敹鍏 + * + * @return + */ + public List> buildQNYCXJJSSLBRequestParam() { + return buildRequestParams(IncomeCategoryEnum.ONETIME_ANNUAL_BONUS, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + } + + /** + * 绋块叕鎵寰 + * + * @return + */ + public List> buildGCSDLBRequestParam() { + return buildRequestParams(IncomeCategoryEnum.REMUNERATION_FOR_AUTHOR, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + } + + /** + * 涓鑸姵鍔℃姤閰墍寰 + * + * @return + */ + public List> buildLWBCLBRequestParam() { + return buildRequestParams(IncomeCategoryEnum.REMUNERATION_FOR_LABOR, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + } + + /** + * 瑙i櫎鍔冲姩鍚堝悓涓娆℃цˉ鍋块噾 + * + * @return + */ + public List> buildJCLDHTYCXBCJLBRequestParam() { + return buildRequestParams(IncomeCategoryEnum.COMPENSATION_FOR_DISMISS, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + } + + /** + * 淇濋櫓钀ラ攢鍛樹剑閲戞敹鍏 + * + * @return + */ + public Map buildBXYXYRequestParam() { + List> requestParams = buildRequestParams(IncomeCategoryEnum.INCOME_FOR_INSURANCE_SALESMAN, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + + Map param = new HashMap<>(); + // 淇濋櫓钀ラ攢鍛樿柂閲戝垪琛 + param.put("bxyxylwbclb", requestParams); + // 鏄惁浼犲叆绱涓汉鍏昏侀噾锛2浣跨敤浼犲叆鏁版嵁 + param.put("gryljcl", 2); + return param; + } + + /** + * 璇佸埜缁忕邯浜轰剑閲戞敹鍏 + * + * @return + */ + public Map buildZQJJRRequestParam() { + List> requestParams = buildRequestParams(IncomeCategoryEnum.INCOME_FOR_SECURITIES_BROKER, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + + Map param = new HashMap<>(); + // 璇佸埜缁忕邯浜鸿柂閲戝垪琛 + param.put("zqjjrsdlb", requestParams); + // 鏄惁浼犲叆绱涓汉鍏昏侀噾锛2浣跨敤浼犲叆鏁版嵁 + param.put("gryljcl", 2); + return param; + } + + /** + * 鍏朵粬杩炵画鍔冲姟鎶ラ叕鎵寰 + * + * @return + */ + public Map buildQTLXLWBCRequestParam() { + List> requestParams = buildRequestParams(IncomeCategoryEnum.REMUNERATION_FOR_OTHER_CONTINUOUS_LABOR, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + + Map param = new HashMap<>(); + param.put("qtlxlwbclb", Lists.newArrayList()); + // 鏄惁浼犲叆绱涓汉鍏昏侀噾锛2浣跨敤浼犲叆鏁版嵁 + param.put("gryljcl", 2); + return param; + } + + /** + * 鐗硅鏉冧娇鐢ㄨ垂鎵寰 + * + * @return + */ + public List> buildTXQRequestParam() { + return buildRequestParams(IncomeCategoryEnum.ROYALTIES, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + } + + /** + * 涓汉鑲℃潈婵鍔辨敹鍏 + * + * @return + */ + public List> buildGRGQJLRequestParam() { + return buildRequestParams(IncomeCategoryEnum.INCOME_FOR_INDIVIDUAL_EQUITY_INCENTIVE, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + } + + /** + * 骞撮噾棰嗗彇 + * + * @return + */ + public List> buildQYNJRequestParam() { + return buildRequestParams(IncomeCategoryEnum.ANNUITY_RECEIPT, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + } + + /** + * 鍐呴涓娆℃цˉ鍋块噾 + * + * @return + */ + public List> buildNTYCXBCJLBRequestParam() { + return buildRequestParams(IncomeCategoryEnum.COMPENSATION_FOR_RETIRE, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + } + + /** + * 鍏朵粬闈炶繛缁姵鍔℃姤閰墍寰 + * + * @return + */ + public List> buildQTFLXLWBCRequestParam() { + return buildRequestParams(IncomeCategoryEnum.REMUNERATION_FOR_OTHER_LABOR, + employeeDeclares, salaryAcctEmployeeMap, salaryAcctResultValueMap); + } + + private List> buildRequestParams(IncomeCategoryEnum incomeCategoryEnum, + List employeeDeclares, + Map salaryAcctEmployeeMap, + Map> salaryAcctResultValueMap) { + List> requestParams = Lists.newArrayListWithExpectedSize(salaryAcctResultValueMap.size()); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + SalaryAcctEmployeePO salaryAcctEmployee = salaryAcctEmployeeMap.get(employeeDeclare.getEmployeeId()); + if (salaryAcctEmployee == null) { + continue; + } + List salaryAcctResultValue = salaryAcctResultValueMap.get(salaryAcctEmployee.getId()); + if (salaryAcctResultValue == null) { + continue; + } + Map map = SalaryEntityUtil.convert2Map(salaryAcctResultValue, SalaryAcctResultPO::getSalaryItemId, SalaryAcctResultPO::getResultValue); + Map requestParam = buildRequestParam(incomeCategoryEnum, employeeDeclare, map); + if (MapUtils.isNotEmpty(requestParam)) { + requestParams.add(requestParam); + } + } + return requestParams; + } + + private Map buildRequestParam(IncomeCategoryEnum incomeCategoryEnum, + EmployeeDeclarePO employeeDeclare, + Map salaryAcctResultValue) { + if (CollectionUtils.isEmpty(taxReportColumns)) { + return Collections.emptyMap(); + } + Map requestParam = Maps.newHashMap(); + // 濮撳悕 + requestParam.put("xm", employeeDeclare.getEmployeeName()); + // 璇佷欢绫诲瀷 + requestParam.put("zzlx", CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel()); + // 璇佷欢鍙风爜 + requestParam.put("zzhm", employeeDeclare.getCardNum()); + // 鎵寰楅」鐩 + requestParam.put("sdxm", incomeCategoryEnum.getDefaultLabel()); + + for (TaxReportColumnPO taxReportColumn : taxReportColumns) { + Long dataKey = null; + SalarySobTaxReportRulePO salarySobTaxReportRule = salarySobTaxReportRuleMap.get(taxReportColumn.getReportColumnDataIndex()); + if (salarySobTaxReportRule != null && salarySobTaxReportRule.getSalaryItemId() != null) { + dataKey = salarySobTaxReportRule.getSalaryItemId(); + } + String value = salaryAcctResultValue.getOrDefault(dataKey, StringUtils.EMPTY); + if (Objects.equals(taxReportColumn.getDataType(), SalaryDataTypeEnum.NUMBER.getValue())) { + value = Util.getBigDecimalValue(value, BigDecimal.ZERO).toPlainString(); + } else if (Objects.equals(taxReportColumn.getDataType(), "integer")) { + value = Util.getBigDecimalValue(value, BigDecimal.ZERO).setScale(0, RoundingMode.HALF_UP).toPlainString(); + } + requestParam.put(taxReportColumn.getRequestParamKey(), value); + } + return requestParam; + } +} diff --git a/src/com/engine/salary/entity/salaryacct/dto/AbnormalEmployeeListDTO.java b/src/com/engine/salary/entity/salaryacct/dto/AbnormalEmployeeListDTO.java new file mode 100644 index 000000000..f6292f980 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/dto/AbnormalEmployeeListDTO.java @@ -0,0 +1,37 @@ +package com.engine.salary.entity.salaryacct.dto; + +import com.engine.salary.annotation.TableTitle; +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 AbnormalEmployeeListDTO { + + //涓婚敭id + private Long id; + + //浜哄憳id + private Long employeeId; + + //濮撳悕 + @TableTitle(title = "濮撳悕", dataIndex = "employeeName", key = "employeeName") + private String employeeName; + + //宸ュ彿") + @TableTitle(title = "宸ュ彿", dataIndex = "jobNum", key = "jobNum") + private String jobNum; + +} 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/dto/SalaryCalcTaxInfoDTO.java b/src/com/engine/salary/entity/salaryacct/dto/SalaryCalcTaxInfoDTO.java new file mode 100644 index 000000000..ff19dd7ec --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/dto/SalaryCalcTaxInfoDTO.java @@ -0,0 +1,27 @@ +package com.engine.salary.entity.salaryacct.dto; + +import lombok.Data; + +/** + * 钖祫鏍哥畻璁$畻涓◣ + * + * @author xiajun + */ +@Data +public class SalaryCalcTaxInfoDTO { + + /** + * 鏄惁鏄剧ず璁$畻涓◣鎸夐挳 + */ + private boolean showCalcTaxButton; + + /** + * 鏄惁鏄剧ず鑾峰彇涓◣璁$畻鍙嶉鎸夐挳 + */ + private boolean showCalcTaxFeedbackButton; + + /** + * 鏄惁鏄剧ず鏍哥畻绋庡悗钖祫鎸夐挳 + */ + private boolean showCalcAfterTaxButton; +} diff --git a/src/com/engine/salary/entity/salaryacct/param/AbnormalEmployeeListQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/AbnormalEmployeeListQueryParam.java new file mode 100644 index 000000000..0e129b8c9 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/AbnormalEmployeeListQueryParam.java @@ -0,0 +1,39 @@ +package com.engine.salary.entity.salaryacct.param; + +import com.engine.salary.common.BaseQueryParam; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 鏈姤閫佷汉鍛樺垪琛 + *

Copyright: Copyright (c) 2023

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AbnormalEmployeeListQueryParam extends BaseQueryParam { + + //宸ュ彿銆佸鍚嶃佽韩浠借瘉鍙风爜") + private String keyword; + + //涓◣鐢虫姤璁板綍id") + private Long recordId; + + @JsonIgnore + //涓◣鎵g即涔夊姟浜篿d") + private Long taxAgentId; + + @JsonIgnore + //绋庢鎵灞炴湡") + private Date taxCycle; +} diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java index 8ebe19131..5f5749ac7 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java @@ -65,6 +65,11 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam { //钖祫椤圭洰id private Collection salaryItemIds; + /** + * 鏄惁闇瑕佸疄鏃朵汉鍛樹俊鎭 + */ + private boolean dynamicEmpInfo; + //鍏朵粬鏉′欢 private List otherConditions; 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/param/SalaryAfterTaxAcctCalculateParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAfterTaxAcctCalculateParam.java new file mode 100644 index 000000000..55fd34a0c --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAfterTaxAcctCalculateParam.java @@ -0,0 +1,24 @@ +package com.engine.salary.entity.salaryacct.param; + +import com.engine.salary.util.valid.DataCheck; +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 SalaryAfterTaxAcctCalculateParam { + @DataCheck(require = true,message = "鍙傛暟閿欒锛岃柂璧勬牳绠楄褰旾D涓嶈兘涓虹┖") + private Long salaryAcctRecordId; +} diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryCalcTaxParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryCalcTaxParam.java new file mode 100644 index 000000000..d4745f149 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryCalcTaxParam.java @@ -0,0 +1,19 @@ +package com.engine.salary.entity.salaryacct.param; + +import com.engine.salary.util.valid.DataCheck; +import lombok.Data; + +/** + * 钖祫鏍哥畻璁$畻涓◣ + * + * @author xiajun + */ +@Data +public class SalaryCalcTaxParam { + + /** + * 鍙傛暟閿欒锛岃柂璧勬牳绠楄褰旾D涓嶈兘涓虹┖ + */ + @DataCheck(require = true,message = "钖祫鏍哥畻璁板綍ID涓嶈兘涓虹┖") + private Long salaryAcctRecordId; +} diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctCalcTaxReqPO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctCalcTaxReqPO.java new file mode 100644 index 000000000..a325a71a1 --- /dev/null +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctCalcTaxReqPO.java @@ -0,0 +1,52 @@ +package com.engine.salary.entity.salaryacct.po; + +import com.engine.hrmelog.annotation.ElogTransform; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.Collection; +import java.util.Date; + +@Data +@Builder +@Accessors(chain = true) +@NoArgsConstructor +@AllArgsConstructor +@ElogTransform(name = "钖祫鏍哥畻鍦ㄧ嚎璁$畻涓◣璇锋眰") +//hrsa_acct_calc_tax_req +public class SalaryAcctCalcTaxReqPO { + + @ElogTransform(name = "涓婚敭id", ignore = true) + private Long id; + + @ElogTransform(name = "钖祫鏍哥畻璁板綍", ignore = true) + private Long salaryAcctRecordId; + + @ElogTransform(name = "涓◣鎵g即涔夊姟浜篿d", ignore = true) + private Long taxAgentId; + + @ElogTransform(name = "璇锋眰requestId", ignore = true) + private String requestId; + + @ElogTransform(name = "绉熸埛key", ignore = true) + private String tenantKey; + + @ElogTransform(name = "鍒涘缓浜篿d", ignore = true) + private Long creator; + + @ElogTransform(name = "鏄惁鍒犻櫎", ignore = true) + private Integer deleteType; + + @ElogTransform(name = "鍒涘缓鏃堕棿", ignore = true) + private Date createTime; + + @ElogTransform(name = "鏇存柊鏃堕棿", ignore = true) + private Date updateTime; + + //--------鏉′欢---------- + //涓婚敭id闆嗗悎 + private Collection ids; +} diff --git a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java index 26b0c3e59..5c636bcfd 100644 --- a/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java +++ b/src/com/engine/salary/entity/salaryacct/po/SalaryAcctEmployeePO.java @@ -1,6 +1,7 @@ package com.engine.salary.entity.salaryacct.po; import com.engine.hrmelog.annotation.ElogTransform; +import com.engine.salary.annotation.I18n; import com.engine.salary.annotation.SalaryFormulaVar; import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; import lombok.AllArgsConstructor; @@ -123,6 +124,35 @@ public class SalaryAcctEmployeePO { @ElogTransform(name = "閿佸畾鐘舵") private Integer lockStatus; + /** + * 鍒嗛儴 + */ + @I18n + private String subcompanyName; + private Long subcompanyId; + /** + * 閮ㄩ棬 + */ + @I18n + private String departmentName; + private Long departmentId; + /** + * 宀椾綅 + */ + @I18n + private String jobtitleName; + private Long jobtitleId; + /** + * 鑱岀О + */ + @I18n + private String jobcall; + private Long jobcallId; + /** + * 鐘舵 + */ + private String status; + //--------鏉′欢---------- //涓婚敭id闆嗗悎 diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index 721866069..9af1e542f 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -21,14 +21,16 @@ import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.excel.ExcelComment; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.engine.salary.util.db.IdGenerator; 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.time.LocalDate; import java.util.*; @@ -344,7 +346,7 @@ public class SalaryArchiveExcelBO extends Service { */ public static boolean singleRowCheck(List allTodoSalaryArchives, Map map, List headers, int effectiveTimeIndex, List> excelComments, int errorCount, - SalaryArchiveImportHandleParam importHandleParam, List azDepAuthEmpIds, Map taxAgentNameMap) { + SalaryArchiveImportHandleParam importHandleParam, List azDepAuthEmpIds, Map taxAgentNameMap, User user) { //鏄惁鏄祦绋 boolean process = importHandleParam.isProcess(); @@ -723,7 +725,7 @@ public class SalaryArchiveExcelBO extends Service { // 7.钖祫椤圭洰鍒楀鐞(寰呭畾钖猏瀹氳柂鐨勫垵濮嬪寲\瀹氳柂鐨勮皟钖) } else { isError = handleSalaryItem(isError, effectiveTimeIndex, excelComments, errorCount, j, - effectiveTime, finalSalaryArchive, adjustReason, importHandleParam, key.toString(), cellVal, map); + effectiveTime, finalSalaryArchive, adjustReason, importHandleParam, key.toString(), cellVal, map, user); } } @@ -873,14 +875,14 @@ public class SalaryArchiveExcelBO extends Service { public static boolean handleSalaryItem(boolean isError, int effectiveTimeIndex, List> excelComments, int errorCount, int j, Date effectiveTime, SalaryArchivePO finalSalaryArchive, String salaryItemAdjustReason, SalaryArchiveImportHandleParam importHandleParam, - String key, String cellVal, Map map) { + String key, String cellVal, Map map, User user) { String rowindex = "绗" + map.get("index") + "琛"; // 钖祫椤圭洰鏁版嵁 if (isError || importHandleParam.isSuspendList() || (importHandleParam.isSalaryItemAdjust() && effectiveTime == null) || finalSalaryArchive == null) { return isError; } - Optional optionalSalaryItem = importHandleParam.getSalaryItems().stream().filter(e -> e.getName().equals(key)).findFirst(); + Optional optionalSalaryItem = importHandleParam.getSalaryItems().stream().filter(e -> Util.formatMultiLang(e.getName(), String.valueOf(user.getLanguage())).equals(key)).findFirst(); // 鍙互澶勭悊钖祫椤圭洰鐨勬潯浠讹細鏈夎柂璧勯」鐩+寰呭畾钖垪琛+瀹氳柂鍒楄〃锛堣皟钖拰鍒濆鍖栧鍏ワ級 boolean isEnable = optionalSalaryItem.isPresent() && (importHandleParam.isPendingList() || importHandleParam.isInit() || importHandleParam.isSalaryItemAdjust()); if (isEnable) { diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java index 505ce3264..fd36884d3 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryArchiveQueryParam.java @@ -36,6 +36,8 @@ public class SalaryArchiveQueryParam extends BaseQueryParam { //涓◣鎵g即涔夊姟浜篿d private Long taxAgentId; + + private List taxAgentIds; private String taxAgentName; //鍒嗛儴id 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/salaryitem/bo/SalaryItemBO.java b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java index 1048360fa..b0c5fd15f 100644 --- a/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java +++ b/src/com/engine/salary/entity/salaryitem/bo/SalaryItemBO.java @@ -40,8 +40,6 @@ public class SalaryItemBO { private static final BaseBean baseBean = new BaseBean(); - //寮哄埗寮鍚处濂楃殑鍏紡閰嶇疆 - private static final Boolean openFormulaForcedEditing = "true".equals(baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing")); @@ -86,6 +84,10 @@ public class SalaryItemBO { if (CollectionUtils.isEmpty(salaryItems)) { return Collections.emptyList(); } + + //寮哄埗寮鍚处濂楃殑鍏紡閰嶇疆 + boolean openFormulaForcedEditing = "true".equals(baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing")); + Map formulaMap = SalaryEntityUtil.convert2Map(expressFormulas, ExpressFormula::getId, ExpressFormula::getFormula); Map sysSalaryItemNameMap = SalaryEntityUtil.convert2Map(sysSalaryItemPOS, SysSalaryItemPO::getId, SysSalaryItemPO::getName); return salaryItems.stream().map(salaryItemPO -> { @@ -134,6 +136,9 @@ public class SalaryItemBO { if (CollectionUtils.isEmpty(salaryItems)) { return Collections.emptyList(); } + //寮哄埗寮鍚处濂楃殑鍏紡閰嶇疆 + boolean openFormulaForcedEditing = "true".equals(baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing")); + Map formulaMap = SalaryEntityUtil.convert2Map(expressFormulas, ExpressFormula::getId, ExpressFormula::getFormula); Map sysSalaryItemNameMap = SalaryEntityUtil.convert2Map(sysSalaryItemPOS, SysSalaryItemPO::getId, SysSalaryItemPO::getName); return salaryItems.stream().map(salaryItemPO -> { @@ -171,6 +176,7 @@ public class SalaryItemBO { .sortedIndex(salaryItemPO.getSortedIndex()) .description(salaryItemPO.getDescription()) .salaryItemType(salaryItemPO.getUseInEmployeeSalary() == 0 ? "钖祫椤圭洰" : "妗f瀛楁") + .defaultValue(salaryItemPO.getDefaultValue()) .build(); } ).collect(Collectors.toList()); @@ -202,7 +208,8 @@ public class SalaryItemBO { .setTaxAgentIds(salaryItemPO.getTaxAgentIds()) .setSharedType(salaryItemPO.getSharedType()) .setSortedIndex(salaryItemPO.getSortedIndex()) - .setWidth(salaryItemPO.getWidth()); + .setWidth(salaryItemPO.getWidth()) + .setDefaultValue(salaryItemPO.getDefaultValue()); } /** @@ -283,6 +290,7 @@ public class SalaryItemBO { .taxAgentIds(saveParam.getTaxAgentIds()) .sortedIndex(saveParam.getSortedIndex()) .width(saveParam.getWidth()) + .defaultValue(saveParam.getDefaultValue()) .build(); // 寮鍚簡"钖祫妗f寮曠敤"锛屽彇鍊兼柟寮忓浐瀹氫负杈撳叆 // if (Objects.equals(saveParam.getUseInEmployeeSalary(), NumberUtils.INTEGER_ONE)) { diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java index da0c6d4d5..15585ff2d 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemFormDTO.java @@ -98,4 +98,7 @@ public class SalaryItemFormDTO { // 瀹藉害 private Integer width; + + // 榛樿鍊 + private String defaultValue; } diff --git a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java index 10aaa12bc..f90b6ff41 100644 --- a/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java +++ b/src/com/engine/salary/entity/salaryitem/dto/SalaryItemSobListDTO.java @@ -113,6 +113,9 @@ public class SalaryItemSobListDTO { //鎺掑簭 private Integer sortedIndex; + // 榛樿鍊 + private String defaultValue; + @SalaryTableColumn(text = "鎿嶄綔", width = "20%", column = "operate") private String operate; diff --git a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java index a200cea77..c7bfbd4bf 100644 --- a/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java +++ b/src/com/engine/salary/entity/salaryitem/param/SalaryItemSaveParam.java @@ -63,7 +63,7 @@ public class SalaryItemSaveParam { private Integer roundingMode; //淇濈暀灏忔暟浣 - @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 8, message = "灏忔暟浣嶆渶澶氫负8") + @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 10, message = "灏忔暟浣嶆渶澶氫负10") private Integer pattern; /** @@ -107,4 +107,9 @@ public class SalaryItemSaveParam { * 瀹藉害 */ private Integer width; + + /** + * 榛樿鍊 + */ + private String defaultValue; } diff --git a/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java b/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java index 8db3c3c89..1224b0c56 100644 --- a/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java +++ b/src/com/engine/salary/entity/salaryitem/po/SalaryItemPO.java @@ -191,4 +191,10 @@ public class SalaryItemPO { */ @ElogTransform(name = "瀹藉害") private Integer width; + + /** + * 榛樿鍊 + */ + @ElogTransform(name = "榛樿鍊") + private String defaultValue; } diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java index 511e946c7..b1a76a4a4 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobItemAggregateBO.java @@ -144,6 +144,7 @@ public class SalarySobItemAggregateBO { .canEdit(openFormulaForcedEditing || Objects.equals(salaryItemPO.getCanEdit(), 1)) .canDelete(openFormulaForcedEditing || salaryItemPO.getCanDelete() == null || Objects.equals(salaryItemPO.getCanDelete(), 1)) .width(salaryItemPO.getWidth()) + .defaultValue(salaryItemPO.getDefaultValue()) .build()); } } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobCycleDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobCycleDTO.java index 70a688b10..5a1f4ed2b 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobCycleDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobCycleDTO.java @@ -65,4 +65,8 @@ public class SalarySobCycleDTO { private Date attendCycleFromDate; @SalaryFormulaVar(defaultLabel = "鑰冨嫟鍛ㄦ湡缁撴潫鏃ユ湡", labelId = 86321, dataType = "string") private Date attendCycleEndDate; + + + //瀛樺湪寮傚父浜哄憳鏁伴噺 + private Integer abnormalEmployeeNum; } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java index 8b23d6446..9429f1522 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemDTO.java @@ -112,4 +112,7 @@ public class SalarySobItemDTO { // 鏄剧ず瀹藉害 private Integer width; + + // 榛樿鍊 + private String defaultValue; } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java index f23df1512..890f52ee9 100644 --- a/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobItemFormDTO.java @@ -53,7 +53,7 @@ public class SalarySobItemFormDTO { private Integer roundingMode; //淇濈暀灏忔暟浣") - @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 8, message = "灏忔暟浣嶆渶澶氫负8") + @DataCheck(require = true, type = ValidTypeEnum.NUMBER, max = 10, message = "灏忔暟浣嶆渶澶氫负10") private Integer pattern; //鍙栧兼柟寮") @@ -83,4 +83,7 @@ public class SalarySobItemFormDTO { // 钖祫妗f寮曠敤銆0锛氳柂璧勬。妗堟湭寮曠敤銆1锛氳柂璧勬。妗堝紩鐢 private Integer useInEmployeeSalary; + + // 榛樿鍊 + private String defaultValue; } diff --git a/src/com/engine/salary/entity/salarysob/dto/SalarySobTaxRuleDTO.java b/src/com/engine/salary/entity/salarysob/dto/SalarySobTaxRuleDTO.java new file mode 100644 index 000000000..787d71271 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/dto/SalarySobTaxRuleDTO.java @@ -0,0 +1,57 @@ +package com.engine.salary.entity.salarysob.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * 钖祫璐﹀鐨勪釜绋庤鍒 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class SalarySobTaxRuleDTO { + + //鎵寰楅」鐩殑id + private String incomeCategoryId; + + //鎵寰楅」鐩殑鍚嶇О + private String incomeCategoryName; + + //涓◣鐨勫搴斿叧绯 + private List taxRules; + + @Data + @AllArgsConstructor + @NoArgsConstructor + @Builder + public static class TaxRuleDTO { + + //涓◣瀛楁 + private String name; + + //涓◣绱㈠紩 + private String taxIndex; + + //涓◣瀛楁鍜岃柂璧勯」鐩殑瀵瑰簲鍏崇郴 + private Long salaryItemId; + private String salaryItemName; + + //涓◣瀛楁鐨勫 + private String value; + + //瀵瑰簲鍏崇郴鏄惁鍙互缂栬緫 + private boolean canEdit; + + + } +} diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java index e166991dc..c5944e9b8 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobItemSaveParam.java @@ -79,6 +79,9 @@ public class SalarySobItemSaveParam { private Boolean canDelete; + // 榛樿鍊 + private String defaultValue; + /** * 杩涗綅瑙勫垯 */ diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobTaxRuleSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobTaxRuleSaveParam.java new file mode 100644 index 000000000..bf3be6fc6 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobTaxRuleSaveParam.java @@ -0,0 +1,43 @@ +package com.engine.salary.entity.salarysob.param; + +import lombok.Data; + +import java.util.List; + +/** + * 钖祫璐﹀鐨勪釜绋庤鍒 + *

Copyright: Copyright (c) 2023

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class SalarySobTaxRuleSaveParam { + + //钖祫璐﹀鐨刬d + private Long salarySobId; + + //涓嶅悓鎵寰楅」鐩殑涓◣鐨勫搴斿叧绯 + private List incomeCategoryParams; + + @Data + public static class TaxReportRuleIncomeCategoryParam { + + //鎵寰楅」鐩 + private String incomeCategory; + + //涓◣鐨勫搴斿叧绯 + private List taxRuleParams; + } + + @Data + public static class TaxRuleParam { + + //涓◣鐨勫垪绱㈠紩 + private String taxIndex; + + //钖祫椤圭洰鐨刬d + private Long salaryItemId; + } +} diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java index 1b4981481..793d64bfe 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobBackItemPO.java @@ -114,6 +114,11 @@ public class SalarySobBackItemPO{ @JsonIgnore private Date updateTime; + /** + * 榛樿鍊 + */ + private String defaultValue; + /** @@ -132,6 +137,7 @@ public class SalarySobBackItemPO{ ", valueType=" + valueType + ", formulaId=" + formulaId + ", backCalcType=" + backCalcType + + ", defaultValue=" + defaultValue + '}'; } diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java index 74e2f278a..3fed60b27 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobItemPO.java @@ -131,6 +131,11 @@ public class SalarySobItemPO { //璇ュ垎绫绘槸鍚﹂殣钘忥紙0涓嶉殣钘忥紝1闅愯棌锛 private Long itemHide; + /** + * 榛樿鍊 + */ + private String defaultValue; + //in Collection ids; Collection salarySobIds; @@ -153,6 +158,7 @@ public class SalarySobItemPO { ", pattern=" + pattern + ", valueType=" + valueType + ", itemHide=" + itemHide + + ", defaultValue=" + defaultValue + '}'; } diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobTaxRulePO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobTaxRulePO.java new file mode 100644 index 000000000..4bd4c0613 --- /dev/null +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobTaxRulePO.java @@ -0,0 +1,60 @@ +package com.engine.salary.entity.salarysob.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Collection; +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SalarySobTaxRulePO { + /** + * ID + */ + private Long id; + /** + * 鍒涘缓鏃堕棿 + */ + private Date createTime; + /** + * 淇敼鏃堕棿 + */ + private Date updateTime; + /** + * 鍒涘缓浜篿d + */ + private Long creator; + /** + * 鏄惁鍒犻櫎 + */ + private Integer deleteType; + /** + * 绉熸埛KEY + */ + private String tenantKey; + /** + * 钖祫璐﹀鐨刬d + */ + private Long salarySobId; + /** + * 鎵寰楅」鐩 + */ + private String incomeCategory; + /** + * 涓◣鍒楃储寮 + */ + private String taxIndex; + /** + * 钖祫椤圭洰id + */ + private Long salaryItemId; + + //涓婚敭id闆嗗悎 + private Collection ids; + +} \ No newline at end of file diff --git a/src/com/engine/salary/entity/taxagent/response/CheckPasswordResponse.java b/src/com/engine/salary/entity/taxagent/response/CheckPasswordResponse.java index c4a21e6f6..a58fa44e5 100644 --- a/src/com/engine/salary/entity/taxagent/response/CheckPasswordResponse.java +++ b/src/com/engine/salary/entity/taxagent/response/CheckPasswordResponse.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.taxagent.response; +import com.engine.salary.entity.taxpayment.response.BaseResponse; import lombok.Data; /** @@ -11,11 +12,7 @@ import lombok.Data; * @version 1.0 **/ @Data -public class CheckPasswordResponse { - /** - * 鎺ュ彛鐘舵 - */ - private SzyhResponseHead head; +public class CheckPasswordResponse extends BaseResponse { /** * 杩斿洖鏁版嵁 */ diff --git a/src/com/engine/salary/entity/taxagent/response/CompanyRegisterInfoResponse.java b/src/com/engine/salary/entity/taxagent/response/CompanyRegisterInfoResponse.java index f0ff1c84f..4081c546e 100644 --- a/src/com/engine/salary/entity/taxagent/response/CompanyRegisterInfoResponse.java +++ b/src/com/engine/salary/entity/taxagent/response/CompanyRegisterInfoResponse.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.taxagent.response; +import com.engine.salary.entity.taxpayment.response.BaseResponse; import lombok.Data; import java.util.List; @@ -13,11 +14,8 @@ import java.util.List; * @version 1.0 **/ @Data -public class CompanyRegisterInfoResponse { - /** - * 鎺ュ彛鐘舵 - */ - private SzyhResponseHead head; +public class CompanyRegisterInfoResponse extends BaseResponse { + /** * 杩斿洖鏁版嵁 */ diff --git a/src/com/engine/salary/entity/taxdeclaration/param/DeclareTaxResultFeedbackQueryParam.java b/src/com/engine/salary/entity/taxdeclaration/param/GetCompanyIncomesQueryParam.java similarity index 87% rename from src/com/engine/salary/entity/taxdeclaration/param/DeclareTaxResultFeedbackQueryParam.java rename to src/com/engine/salary/entity/taxdeclaration/param/GetCompanyIncomesQueryParam.java index dbcdfccc8..09af485df 100644 --- a/src/com/engine/salary/entity/taxdeclaration/param/DeclareTaxResultFeedbackQueryParam.java +++ b/src/com/engine/salary/entity/taxdeclaration/param/GetCompanyIncomesQueryParam.java @@ -12,13 +12,11 @@ import lombok.experimental.Accessors; @Accessors(chain = true) @NoArgsConstructor @AllArgsConstructor -public class DeclareTaxResultFeedbackQueryParam { +public class GetCompanyIncomesQueryParam { @DataCheck(require = true, message = "涓◣鐢虫姤璁板綍id涓嶈兘涓虹┖锛") Long id; @DataCheck(require = true, message = "鐢虫姤绫诲瀷涓嶈兘涓虹┖锛") Integer reportType; - - String requestId; } diff --git a/src/com/engine/salary/entity/taxdeclaration/response/CancelDeclareFeedbackResponse.java b/src/com/engine/salary/entity/taxdeclaration/response/CancelDeclareFeedbackResponse.java index 564edd0b7..d22edac56 100644 --- a/src/com/engine/salary/entity/taxdeclaration/response/CancelDeclareFeedbackResponse.java +++ b/src/com/engine/salary/entity/taxdeclaration/response/CancelDeclareFeedbackResponse.java @@ -1,6 +1,6 @@ package com.engine.salary.entity.taxdeclaration.response; -import com.engine.salary.entity.taxagent.response.SzyhResponseHead; +import com.engine.salary.entity.taxpayment.response.BaseResponse; import lombok.Data; import java.util.Map; @@ -14,10 +14,7 @@ import java.util.Map; * @version 1.0 **/ @Data -public class CancelDeclareFeedbackResponse { - - //鎺ュ彛鐘舵") - private SzyhResponseHead head; +public class CancelDeclareFeedbackResponse extends BaseResponse { //鎺ュ彛鐘舵") private Map body; diff --git a/src/com/engine/salary/entity/taxdeclaration/response/UpdateDeclareResponse.java b/src/com/engine/salary/entity/taxdeclaration/response/UpdateDeclareResponse.java index e2b77f90c..7c586658c 100644 --- a/src/com/engine/salary/entity/taxdeclaration/response/UpdateDeclareResponse.java +++ b/src/com/engine/salary/entity/taxdeclaration/response/UpdateDeclareResponse.java @@ -1,7 +1,6 @@ package com.engine.salary.entity.taxdeclaration.response; -import com.engine.salary.entity.taxagent.response.SzyhResponseHead; -import io.swagger.annotations.ApiModel; +import com.engine.salary.entity.taxpayment.response.BaseResponse; import lombok.Data; /** @@ -13,9 +12,5 @@ import lombok.Data; * @version 1.0 **/ @Data -@ApiModel("鏇存鐢虫姤鐨勮繑鍥炴暟鎹") -public class UpdateDeclareResponse { - - //鎺ュ彛鐘舵") - private SzyhResponseHead head; +public class UpdateDeclareResponse extends BaseResponse { } diff --git a/src/com/engine/salary/entity/taxpayment/param/TaxPaymentQueryParam.java b/src/com/engine/salary/entity/taxpayment/param/TaxPaymentQueryParam.java index 8e3fbbfef..11d145388 100644 --- a/src/com/engine/salary/entity/taxpayment/param/TaxPaymentQueryParam.java +++ b/src/com/engine/salary/entity/taxpayment/param/TaxPaymentQueryParam.java @@ -1,5 +1,6 @@ package com.engine.salary.entity.taxpayment.param; +import com.engine.salary.enums.taxdeclaration.TaxPaymentServiceTypeEnum; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import lombok.AllArgsConstructor; @@ -10,10 +11,12 @@ import java.util.Date; /** * 鏌ヨ浼佷笟涓夋柟淇℃伅 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

* - * @author chengliming - * @date: 2022-12-06 17:25:28 - */ + * @author qiantao + * @version 1.0 + **/ @Data @NoArgsConstructor @AllArgsConstructor @@ -31,7 +34,7 @@ public class TaxPaymentQueryParam { private Long taxDeclareRecordId; /** - * TaxPaymentServiceTypeEnum + * @see TaxPaymentServiceTypeEnum */ //涓氬姟绫诲瀷") private Integer type; @@ -39,6 +42,11 @@ public class TaxPaymentQueryParam { //涓夋柟鍗忚鍙") private String protocolNumber; + /** + * 缂存甯愬彿 + */ + private String paymentNumber; + //搴旂即绋庨") private String taxAmount; diff --git a/src/com/engine/salary/enums/common/SalaryLogGroupTypeEnum.java b/src/com/engine/salary/enums/common/SalaryLogGroupTypeEnum.java new file mode 100644 index 000000000..5f4f684f6 --- /dev/null +++ b/src/com/engine/salary/enums/common/SalaryLogGroupTypeEnum.java @@ -0,0 +1,52 @@ +package com.engine.salary.enums.common; + +import com.engine.salary.enums.BaseEnum; +import lombok.AllArgsConstructor; + +/** + * 钖叕鏃ュ織鐨勯」鐩 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@AllArgsConstructor +public enum SalaryLogGroupTypeEnum implements BaseEnum { + + // 鍏朵粬涓氬姟鏁版嵁鐩稿叧 + CUS_BIZ_SETTING_FORM("1", "鑷畾涔変笟鍔℃暟鎹〃", 254950), + CUS_BIZ_SETTING_FIELD("2", "鑷畾涔変笟鍔℃暟鎹〃瀛楁", 254951), + // 骞寸粓濂栭噾鐩稿叧 + ANNUAL_BONUS_PLAN("3","鏈浼樺勾缁堝璁$◣鏂规", 247010), + ANNUAL_BONUS_ADDUP("4","鍚堝苟璁$◣鍩虹鏁版嵁",250255), + ANNUAL_BONUS_STRATEGY("5","浼樺寲鏂规璇︽儏",250256), + // 钖祫鏍哥畻鐩稿叧 + SALARY_ACCT_RECORD("6","钖祫鏍哥畻", 95783), + SALARY_ACCT_EMPLOYEE("7", "钖祫鏍哥畻浜哄憳", 203828), + SALARY_ACCT_RESULT_VALUE("8","钖祫鏍哥畻缁撴灉",187411), + SALARY_ACCT_CHECK_RESULT("9","钖祫鏍哥畻缁撴灉鏍¢獙寮傚父", 268617), + SALARY_ACCT_COMPARISON_RESULT("10","钖祫鏍哥畻绾夸笅瀵规瘮缁撴灉", 268616), + ; + + private final String value; + + private final String defaultLabel; + + private final Integer labelId; + + @Override + public String getValue() { + return value; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } +} diff --git a/src/com/engine/salary/enums/common/SalaryLogOperateTypeEnum.java b/src/com/engine/salary/enums/common/SalaryLogOperateTypeEnum.java new file mode 100644 index 000000000..b42cf2a9d --- /dev/null +++ b/src/com/engine/salary/enums/common/SalaryLogOperateTypeEnum.java @@ -0,0 +1,57 @@ +package com.engine.salary.enums.common; + +import com.engine.salary.enums.BaseEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 钖叕妯″潡鏃ュ織鐨勬搷浣滅被鍨 + *

Copyright: Copyright (c) 2024

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Getter +@AllArgsConstructor +public enum SalaryLogOperateTypeEnum implements BaseEnum { + + VIEW("0","鏌ョ湅",90821), + ADD("1", "鏂板缓", 94607), + UPDATE("2", "鏇存柊", 249295), + DELETE("3", "鍒犻櫎", 87061), + FILE("4", "褰掓。", 92144), + CANCEL_FILE("5", "鍙栨秷褰掓。", 145989), + CLEAR("6", "涓閿竻绌", 158473), + CALCULATE("7", "鏍哥畻", 94146), + SYNC("8", "鍚屾", 93950), + EXCEL_IMPORT("9", "瀵煎叆", 87622), + RE_CALCULATE("10", "閲嶆柊鏍哥畻", 98820), + BATCH_EDIT("11","鎵归噺缂栬緫", 158819), + CHECK("12","鏍¢獙", 95786), + CALC_TAX_ONLINE("13","鍦ㄧ嚎璁$畻涓◣", 268191), + GET_CALC_TAX_FEEDBACK("14","鑾峰彇涓◣璁$畻鍙嶉", 267984), + EXCEL_EXPORT("15","瀵煎嚭",17416) + ; + + private final String value; + + private final String defaultLabel; + + private final Integer labelId; + + @Override + public String getValue() { + return value; + } + + @Override + public Integer getLabelId() { + return labelId; + } + + @Override + public String getDefaultLabel() { + return defaultLabel; + } +} diff --git a/src/com/engine/salary/enums/salarysob/DeclareReportTypeEnum.java b/src/com/engine/salary/enums/salarysob/DeclareReportTypeEnum.java index 2d99b4ebc..f54e7bc86 100644 --- a/src/com/engine/salary/enums/salarysob/DeclareReportTypeEnum.java +++ b/src/com/engine/salary/enums/salarysob/DeclareReportTypeEnum.java @@ -1,8 +1,14 @@ package com.engine.salary.enums.salarysob; +import com.engine.salary.annotation.TaxField; +import com.engine.salary.entity.salarysob.dto.SalarySobTaxRuleDTO; import com.engine.salary.enums.BaseEnum; +import com.engine.salary.remote.tax.response.calculate.GetASynIndividualIncomeTaxFeedbackResponse; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; /** @@ -14,10 +20,30 @@ import java.util.Objects; * @version 1.0 **/ public enum DeclareReportTypeEnum implements BaseEnum { - COMPREHENSIVE_INCOME(1, "缁煎悎鎵寰", 100133), - CLASSIFIED_INCOME(2, "鍒嗙被鎵寰", 86185), - NONRESIDENT_INCOME(3, "闈炲眳姘戞墍寰", 107369), - RESTRICTED_SHARES_INCOME(4, "闄愬敭鑲℃墍寰", 90633); + COMPREHENSIVE_INCOME(1, "缁煎悎鎵寰", 100133) { + @Override + public List getTaxRules() { + return buildRules(GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result.class); + } + }, + CLASSIFIED_INCOME(2, "鍒嗙被鎵寰", 86185) { + @Override + public List getTaxRules() { + return buildRules(null); + } + }, + NONRESIDENT_INCOME(3, "闈炲眳姘戞墍寰", 107369) { + @Override + public List getTaxRules() { + return buildRules(GetASynIndividualIncomeTaxFeedbackResponse.Body.fjmsd.ssjgdx.result.class); + } + }, + RESTRICTED_SHARES_INCOME(4, "闄愬敭鑲℃墍寰", 90633) { + @Override + public List getTaxRules() { + return buildRules(null); + } + }; private int value; @@ -47,6 +73,28 @@ public enum DeclareReportTypeEnum implements BaseEnum { return defaultLabel; } + public abstract List getTaxRules(); + + public static List buildRules(Class clazz) { + if (clazz == null) { + return new ArrayList<>(); + } + List rules = new ArrayList<>(); + Field[] fields = clazz.getDeclaredFields(); + for (Field f : fields) { + boolean isanno = f.isAnnotationPresent(TaxField.class); + if (isanno) { + TaxField annotation = f.getAnnotation(TaxField.class); + String name = annotation.name(); + String taxIndex = annotation.taxIndex(); + SalarySobTaxRuleDTO.TaxRuleDTO taxRuleDTO = SalarySobTaxRuleDTO.TaxRuleDTO.builder().name(name).taxIndex(taxIndex).build(); + rules.add(taxRuleDTO); + } + } + return rules; + } + + public static DeclareReportTypeEnum parseByValue(Integer value) { for (DeclareReportTypeEnum targetTypeEnum : DeclareReportTypeEnum.values()) { if (Objects.equals(targetTypeEnum.getValue(), value)) { diff --git a/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java b/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java index fbce1c59b..37fabaaa6 100644 --- a/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java +++ b/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java @@ -1,12 +1,28 @@ package com.engine.salary.enums.salarysob; +import cn.hutool.core.collection.CollectionUtil; +import com.engine.salary.constant.SzyhApiConstant; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.engine.salary.entity.salarysob.dto.SalarySobTaxRuleDTO; import com.engine.salary.enums.BaseEnum; -import com.engine.salary.remote.tax.response.declare.GetDeclareTaxResultFeedbackResponse; +import com.engine.salary.exception.OnlineCalculateTaxException; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.remote.tax.response.calculate.GetASynIndividualIncomeTaxFeedbackResponse; +import com.engine.salary.remote.tax.response.declare.GetCompanyIncomesResponse; +import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.excel.ExcelUtil; import com.google.common.collect.Lists; +import com.google.gson.Gson; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import weaver.general.Util; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Type; import java.util.*; +import java.util.stream.Collectors; /** * 搴旂◣椤圭洰 @@ -16,161 +32,521 @@ import java.util.*; * @author qiantao * @version 1.0 **/ +@Slf4j public enum IncomeCategoryEnum implements BaseEnum { // todo 澶氳瑷 WAGES_AND_SALARIES(1, "0101", "姝e父宸ヨ祫钖噾", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 160487) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getZcgzxj().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getZcgzxj().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, REMUNERATION_FOR_LABOR(4, "0400", "涓鑸姵鍔℃姤閰墍寰", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 160488) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getLwbclb().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getLwbclb().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, ONETIME_ANNUAL_BONUS(2, "0103", "鍏ㄥ勾涓娆℃у閲戞敹鍏", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 160489) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQnycxjjsslb().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getQnycxjjsslb().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, COMPENSATION_FOR_RETIRE(107, "0107", "鍐呴涓娆℃цˉ鍋块噾", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 181936) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getNtycxbcjlb().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getNtycxbcjlb().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, COMPENSATION_FOR_DISMISS(108, "0108", "瑙i櫎鍔冲姩鍚堝悓涓娆℃цˉ鍋块噾", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 181937) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getJcldhtycxbcjlb().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getJcldhtycxbcjlb().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, INCOME_FOR_INDIVIDUAL_EQUITY_INCENTIVE(109, "0109", "涓汉鑲℃潈婵鍔辨敹鍏", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 181938) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getGrgqjl().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getGrgqjl().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, ANNUITY_RECEIPT(110, "0110", "骞撮噾棰嗗彇", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 181939) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQynj().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getQynj().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, INCOME_FOR_INSURANCE_SALESMAN(402, "0402", "淇濋櫓钀ラ攢鍛樹剑閲戞敹鍏", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 181940) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getBxyxy().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getBxyxy().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, INCOME_FOR_SECURITIES_BROKER(403, "0403", "璇佸埜缁忕邯浜轰剑閲戞敹鍏", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 181942) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getZqjjr().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getZqjjr().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, REMUNERATION_FOR_OTHER_CONTINUOUS_LABOR(489, "0489", "鍏朵粬杩炵画鍔冲姟鎶ラ叕鎵寰", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 181943) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQtlxlwbc().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getQtlxlwbc().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, REMUNERATION_FOR_OTHER_LABOR(499, "0499", "鍏朵粬闈炶繛缁姵鍔℃姤閰墍寰", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 175330) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getQtflxlwbc().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getQtflxlwbc().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, REMUNERATION_FOR_AUTHOR(500, "0500", "绋块叕鎵寰", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 181944) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getGcsdlb().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getGcsdlb().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, ROYALTIES(600, "0600", "鐗硅鏉冧娇鐢ㄨ垂鎵寰", DeclareReportTypeEnum.COMPREHENSIVE_INCOME, 181945) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List zhsd = declareTaxResultFeedbackResponse.getBody().getZhsd().getTxq().getSscglb(); - List> zhsdSheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.zhsd.zcgzxj.zhsdscjgbw.class, zhsd); - result.put(this.getDefaultLabel(), zhsdSheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getZhsd().getTxq().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.zhsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, NON_RESIDENT_INCOME_WAGES_AND_SALARIES(700, "0700", "鏃犱綇鎵涓汉姝e父宸ヨ祫钖噾", DeclareReportTypeEnum.NONRESIDENT_INCOME, 181945) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List fjmsd = declareTaxResultFeedbackResponse.getBody().getFjmsd().getWjgzxjlb().getSscglb(); - List> sheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.fjmsd.fjmsdssjgdx.fjmsdscbw.class, fjmsd); - result.put(this.getDefaultLabel(), sheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getFjmsd().getWjgzxjlb().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.fjmsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.fjmsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, NON_RESIDENT_INCOME_MONTHLY_BONUS(710, "0710", "鏃犱綇鎵涓汉鏁版湀濂栭噾", DeclareReportTypeEnum.NONRESIDENT_INCOME, 181945) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List fjmsd = declareTaxResultFeedbackResponse.getBody().getFjmsd().getWjrysyjjlb().getSscglb(); - List> sheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.fjmsd.fjmsdssjgdx.fjmsdscbw.class, fjmsd); - result.put(this.getDefaultLabel(), sheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getFjmsd().getWjrysyjjlb().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.fjmsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.fjmsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } }, NON_RESIDENT_INCOME_REMUNERATION_FOR_LABOR(720, "0720", "涓鑸姵鍔℃姤閰墍寰", DeclareReportTypeEnum.NONRESIDENT_INCOME, 181945) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List fjmsd = declareTaxResultFeedbackResponse.getBody().getFjmsd().getLwbclb().getSscglb(); - List> sheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.fjmsd.fjmsdssjgdx.fjmsdscbw.class, fjmsd); - result.put(this.getDefaultLabel(), sheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getFjmsd().getLwbclb().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.fjmsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.fjmsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } + }, NON_RESIDENT_INCOME_COMPENSATION_FOR_DISMISS(730, "0730", "瑙i櫎鍔冲姩鍚堝悓涓娆℃цˉ鍋块噾", DeclareReportTypeEnum.NONRESIDENT_INCOME, 181945) { @Override - public Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse) { - List fjmsd = declareTaxResultFeedbackResponse.getBody().getFjmsd().getJcldhtycxbcjlb().getSscglb(); - List> sheetData = ExcelUtil.getExcelSheetData(GetDeclareTaxResultFeedbackResponse.Body.fjmsd.fjmsdssjgdx.fjmsdscbw.class, fjmsd); - result.put(this.getDefaultLabel(), sheetData); - return result; + public Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO) { + checkGetASynIndividualIncomeTaxFeedbackResponse(declareTaxResultFeedbackResponse); + Gson gs = new Gson(); + List taxRules = taxRuleDTO.getTaxRules(); + + List sscglb = declareTaxResultFeedbackResponse.getBody().getFjmsd().getJcldhtycxbcjlb().getSscglb(); + Map idNoResultMap = SalaryEntityUtil.convert2Map(sscglb, GetASynIndividualIncomeTaxFeedbackResponse.Body.fjmsd.ssjgdx.result::getZzhm); + Map resultMap = new HashMap<>(); + for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { + GetASynIndividualIncomeTaxFeedbackResponse.Body.fjmsd.ssjgdx.result result = idNoResultMap.get(employeeDeclare.getCardNum()); + if (result == null) { + continue; + } + taxRules.forEach(rule -> { + String getter = "get" + rule.getTaxIndex().substring(0, 1).toUpperCase() + rule.getTaxIndex().substring(1); + try { + Method method = result.getClass().getMethod(getter); + Object invoke = method.invoke(result); + rule.setValue(Util.null2String(invoke)); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) { + log.error("getTaxErr no such method {}", getter, ex); + } + }); + resultMap.put(employeeDeclare.getEmployeeId(), gs.fromJson(gs.toJson(taxRuleDTO), (Type) SalarySobTaxRuleDTO.class)); + } + return resultMap; } + }; @@ -192,7 +568,37 @@ public enum IncomeCategoryEnum implements BaseEnum { this.labelId = labelId; } - public abstract Map>> parseGetDeclareTaxResultFeedbackResponse(Map>> result, GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse); + public abstract Map parseGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse declareTaxResultFeedbackResponse, List employeeDeclares, SalarySobTaxRuleDTO taxRuleDTO); + + private static void checkGetASynIndividualIncomeTaxFeedbackResponse(GetASynIndividualIncomeTaxFeedbackResponse feedbackResponse) { + + if (Objects.isNull(feedbackResponse) || Objects.isNull(feedbackResponse.getHead())) { + throw new OnlineCalculateTaxException(SalaryI18nUtil.getI18nLabel(156449, "鏈嶅姟寮傚父")); + } + if (Objects.equals(feedbackResponse.getHead().getCode(), SzyhApiConstant.HANDLING_CODE) || Objects.equals(feedbackResponse.getHead().getCode(), SzyhApiConstant.TASK_HANDLING_CODE)) { + throw new SalaryRunTimeException(feedbackResponse.getHead().getMsg()); + } + if (!Objects.equals(feedbackResponse.getHead().getCode(), SzyhApiConstant.SUCCESS_CODE)) { + throw new OnlineCalculateTaxException(feedbackResponse.getHead().getMsg()); + } + List rysbsblb = feedbackResponse.getBody().getRysbsblb(); + if (CollectionUtil.isNotEmpty(rysbsblb)) { + String err = rysbsblb.stream().map(GetASynIndividualIncomeTaxFeedbackResponse.Body.rysbsb::getSbyy).collect(Collectors.joining(";")); + throw new OnlineCalculateTaxException(err); + } + } + + public Map>> parseGetCompanyIncomesResponse(Map>> result, GetCompanyIncomesResponse response) { + List sfmx = Optional.ofNullable(response.getBody().getSfmx()) + .orElse(new ArrayList<>()) + .stream() + .filter(mx -> this.getDefaultLabel().equals(mx.getSdxmmc())) + .collect(Collectors.toList()); + List> sheetData = ExcelUtil.getExcelSheetData(GetCompanyIncomesResponse.sfmx.class, sfmx); + result.put(this.getDefaultLabel(), sheetData); + return result; + } + @Override public Integer getValue() { diff --git a/src/com/engine/salary/exception/OnlineCalculateTaxException.java b/src/com/engine/salary/exception/OnlineCalculateTaxException.java new file mode 100644 index 000000000..3719f0ce5 --- /dev/null +++ b/src/com/engine/salary/exception/OnlineCalculateTaxException.java @@ -0,0 +1,15 @@ +package com.engine.salary.exception; + +public class OnlineCalculateTaxException extends RuntimeException { + public OnlineCalculateTaxException(String message) { + super(message); + } + + public OnlineCalculateTaxException(Throwable cause) { + super(cause); + } + + public OnlineCalculateTaxException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/com/engine/salary/formlua/constant/FormluaConstant.java b/src/com/engine/salary/formlua/constant/FormluaConstant.java index c3d7f4cb7..c88d7090d 100644 --- a/src/com/engine/salary/formlua/constant/FormluaConstant.java +++ b/src/com/engine/salary/formlua/constant/FormluaConstant.java @@ -985,7 +985,31 @@ public class FormluaConstant { " \"infinite\": true\n" + " }\n" + " ]\n" + - " }\n" + + " },\n" + + " {\n" + + " \"name\": \"DAYSINMONTH\",\n" + + " \"chineseName\": \"杩斿洖鎸囧畾鏈堢殑澶╂暟\",\n" + + " \"description\": \"杩斿洖鎸囧畾鏈堢殑澶╂暟銆俓",\n" + + " \"example\": \"DAYSINMONTH('2024-01-01')\",\n" + + " \"result\": \"31\",\n" + + " \"paramDescs\": [\n" + + " \"*鏃ユ湡*锛堝繀閫夛級\"\n" + + " ],\n" + + " \"formatString\": \"DAYSINMONTH(鏃ユ湡)\",\n" + + " \"paramArray\": [],\n" + + " \"paramData\": [],\n" + + " \"returnType\": \"number\",\n" + + " \"type\": \"function\",\n" + + " \"validForm\": \"days_in_month\",\n" + + " \"paramCount\": -1,\n" + + " \"paramStatuses\": [\n" + + " {\n" + + " \"dataType\": \"date\",\n" + + " \"must\": true,\n" + + " \"infinite\": true\n" + + " }\n" + + " ]\n" + + " },\n" + " ],\n" + " \"dataType\": \"date\",\n" + " \"name\": \"鏃ユ湡鍑芥暟\",\n" + diff --git a/src/com/engine/salary/formlua/core/QlExpress.java b/src/com/engine/salary/formlua/core/QlExpress.java index 68cd238d9..9660ff1fe 100644 --- a/src/com/engine/salary/formlua/core/QlExpress.java +++ b/src/com/engine/salary/formlua/core/QlExpress.java @@ -189,6 +189,7 @@ public class QlExpress { runner.addFunctionOfServiceMethod("CURRSECOND", dateTimeService, "currSecond", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("MAXDATE", dateTimeService, "maxDate", new Class[]{Object[].class}, ""); runner.addFunctionOfServiceMethod("MINDATE", dateTimeService, "minDate", new Class[]{Object[].class}, ""); + runner.addFunctionOfServiceMethod("DAYSINMONTH", dateTimeService, "daysInMonth", new Class[]{Object[].class}, ""); // runner.addFunctionOfServiceMethod("DAYOFMONTH", dateTimeService, "dayOfMonth", new Class[]{Object[].class}, ""); //鑱氬悎鍑芥暟 diff --git a/src/com/engine/salary/formlua/entity/standard/ExcelResult.java b/src/com/engine/salary/formlua/entity/standard/ExcelResult.java index 66c5e05a8..defa5cde4 100644 --- a/src/com/engine/salary/formlua/entity/standard/ExcelResult.java +++ b/src/com/engine/salary/formlua/entity/standard/ExcelResult.java @@ -145,6 +145,18 @@ public class ExcelResult implements Serializable { this.runTime = runTime; } + public String getData2String() { + if (data == null) { + return ""; + } else { + if (data instanceof BigDecimal) { + return ((BigDecimal) data).toPlainString(); + } else { + return data.toString(); + } + } + } + @Override public String toString() { return "ExcelResult{" + diff --git a/src/com/engine/salary/formlua/func/compare/EqOperator.java b/src/com/engine/salary/formlua/func/compare/EqOperator.java index 24ee31946..679149b83 100644 --- a/src/com/engine/salary/formlua/func/compare/EqOperator.java +++ b/src/com/engine/salary/formlua/func/compare/EqOperator.java @@ -1,6 +1,5 @@ package com.engine.salary.formlua.func.compare; -import com.alibaba.fastjson.JSON; import com.engine.salary.formlua.core.exception.ErrorType; import com.engine.salary.formlua.entity.parameter.DataType; import com.engine.salary.formlua.util.CompareUtil; @@ -37,7 +36,6 @@ public class EqOperator extends OperatorEqualsLessMore { public Object executeInner(Object... list) throws Exception { DataType result=new DataType(); result.setDataType(DataType.BOOL); - logger.info("绛変簬鍙峰弬鏁帮細"+JSON.toJSONString(list)); String oper="="; if(list.length!=2){ throw new RuntimeException("[=]"+ ErrorType.MAX_VAR_COUNT.name()); @@ -75,7 +73,6 @@ public class EqOperator extends OperatorEqualsLessMore { int i=0; for (;i"+secondParam); if((firstParam instanceof String || firstParam instanceof Character) && (secondParam instanceof String || secondParam instanceof Character)){ if(firstParam.toString().length()==1&&secondParam.toString().length()==1){ boolean r=firstParam.toString().equals(secondParam.toString()); diff --git a/src/com/engine/salary/formlua/func/compare/GreaterOperator.java b/src/com/engine/salary/formlua/func/compare/GreaterOperator.java index f33b7dd5a..1540b887c 100644 --- a/src/com/engine/salary/formlua/func/compare/GreaterOperator.java +++ b/src/com/engine/salary/formlua/func/compare/GreaterOperator.java @@ -1,6 +1,5 @@ package com.engine.salary.formlua.func.compare; -import com.alibaba.fastjson.JSON; import com.engine.salary.formlua.entity.parameter.DataType; import com.engine.salary.formlua.util.CompareUtil; import com.engine.salary.formlua.util.DateUtil; @@ -22,7 +21,6 @@ public class GreaterOperator extends OperatorEqualsLessMore { result.setDataType(DataType.BOOL); // IgnoreParamFilter.filterCompareFunc(op1,op2,">"); String datatype = ExcelParamUtil.checkParamType(op1); - logger.info("澶т簬鍙锋瘮杈冿細" + JSON.toJSONString(op1) + "-->" + JSON.toJSONString(op2)); //瀵筼ption鐨勭壒娈婂鐞嗭紝鑾峰彇option鐨勫瓧绗︿覆鍚庢牴鎹楀彿鍒嗗壊锛岀劧鍚庢帓搴忔暟缁勶紝鏁扮粍闀垮害涓嶄竴鑷磋繑鍥瀎alse锛屼竴鑷村垯寰幆瀵规瘮鐩村埌鍚屾牱涓嬫爣鐨勬暟鎹笉涓鑷磋繑鍥瀎alse锛屽惁鍒欎负true try { if (datatype.equals(DataType.OPTION)) { @@ -77,8 +75,6 @@ public class GreaterOperator extends OperatorEqualsLessMore { } result.setContent(dateResult); } else { - logger.info("鍙傛暟1锛" + ExcelParamUtil.convertParamValToNumber(op1) + ""); - logger.info("鍙傛暟2锛" + ExcelParamUtil.convertParamValToNumber(op2) + ""); boolean r; if (ExcelParamUtil.getParamType(op1).toLowerCase().equals("double") || ExcelParamUtil.getParamType(op2).toLowerCase().equals("double")) { r = OperatorEqualsLessMore.executeInner(">", ExcelParamUtil.convertParamValToNumber(op1), ExcelParamUtil.convertParamValToNumber(op2)); diff --git a/src/com/engine/salary/formlua/func/compare/WOperatorDiv.java b/src/com/engine/salary/formlua/func/compare/WOperatorDiv.java index d4d612bf8..8011e3649 100644 --- a/src/com/engine/salary/formlua/func/compare/WOperatorDiv.java +++ b/src/com/engine/salary/formlua/func/compare/WOperatorDiv.java @@ -52,10 +52,9 @@ public class WOperatorDiv extends OperatorMultiDiv { newList[1] = secondParam; try { Object r = super.executeInner(newList); - logger.info("涔樻硶杩愮畻锛" + r.toString()); result.setContent(new BigDecimal(r + "")); } catch (Exception e) { - logger.info("闄ゆ硶璁$畻寮傚父杩斿洖0锛" + e.getMessage()); + logger.error("闄ゆ硶璁$畻寮傚父杩斿洖0锛" + e.getMessage()); result.setContent(0); } return result; diff --git a/src/com/engine/salary/formlua/func/date/DateTimeService.java b/src/com/engine/salary/formlua/func/date/DateTimeService.java index 2b7dca962..7fbf04508 100644 --- a/src/com/engine/salary/formlua/func/date/DateTimeService.java +++ b/src/com/engine/salary/formlua/func/date/DateTimeService.java @@ -89,4 +89,11 @@ import com.engine.salary.formlua.entity.parameter.DataType; */ DataType currSecond(Object... objects); + /** + * 鑾峰彇鏈堟湁澶氬皯澶 + * @param objects + * @return + */ + DataType daysInMonth(Object... objects); + } diff --git a/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java b/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java index 07fa4c8ae..5f2ffedd0 100644 --- a/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java +++ b/src/com/engine/salary/formlua/func/date/DateTimeServiceImpl.java @@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.YearMonth; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -549,7 +550,6 @@ public class DateTimeServiceImpl implements DateTimeService { date = lastday; break; } - logger.info("firstday:" + firstday + " lastday:" + lastday); return new DataType(DataType.STRING, date); } @@ -998,6 +998,37 @@ public class DateTimeServiceImpl implements DateTimeService { int year = cal.get(Calendar.SECOND); return new DataType(DataType.NUMBER, year); } + + @Override + public DataType daysInMonth(Object... objects) { + Class[] typeObjects = new Class[]{DateAndString.class}; + IgnoreParamFilter.commonFilter("YEAR", 1, 1, typeObjects, objects); + Object obj = objects[0]; + Object date = DateUtil.getContent(obj, formatter); + if (ExcelParamUtil.checkIsNull(date, ExcelParamUtil.CHECKLEVEL_STRING)) { + return new DataType(DataType.NUMBER, 0); + } + int year = 0; + try { + year = getDateTimeValue(date, "Y", "YEAR"); + } catch (ParseException e) { + logger.error("err", e); + throw new RuntimeException(e); + } + + IgnoreParamFilter.commonFilter("MONTH", 1, 1, typeObjects, objects); + int month = 0; + try { + month = getDateTimeValue(date, "M", "MONTH") + 1; + } catch (ParseException e) { + logger.error("err", e); + throw new RuntimeException(e); + } + + YearMonth yearMonth = YearMonth.of(year, month); + int daysInMonth = yearMonth.lengthOfMonth(); + return new DataType(DataType.NUMBER, daysInMonth); + } /*******浠ヤ笅涓烘棩鏈熷嚱鏁扮殑涓浜涘叕鍏遍昏緫********/ @@ -1256,7 +1287,7 @@ public class DateTimeServiceImpl implements DateTimeService { r = true; break; } catch (ParseException e) { - logger.info(e.getMessage()); + logger.error(e.getMessage()); r = false; } } diff --git a/src/com/engine/salary/formlua/func/finance/FinanceServiceImpl.java b/src/com/engine/salary/formlua/func/finance/FinanceServiceImpl.java index acda12221..e3b4f1d24 100644 --- a/src/com/engine/salary/formlua/func/finance/FinanceServiceImpl.java +++ b/src/com/engine/salary/formlua/func/finance/FinanceServiceImpl.java @@ -79,7 +79,6 @@ public class FinanceServiceImpl implements FinanceService{ int intLen = integerNum.length(); for (int i = 0; i < intLen; i++) { String n = integerNum.substring(i, i+1); - logger.info("杞崲涓枃锛"+n); int p = intLen - i - 1; int q = p / 4; int m = p % 4; diff --git a/src/com/engine/salary/formlua/func/logic/IfOperator.java b/src/com/engine/salary/formlua/func/logic/IfOperator.java index 44430d341..b826836fb 100644 --- a/src/com/engine/salary/formlua/func/logic/IfOperator.java +++ b/src/com/engine/salary/formlua/func/logic/IfOperator.java @@ -1,6 +1,5 @@ package com.engine.salary.formlua.func.logic; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.engine.salary.formlua.core.exception.ExcelRunTimeException; import com.engine.salary.formlua.entity.parameter.DataType; @@ -26,7 +25,6 @@ public class IfOperator extends OperatorIf { throw new ExcelRunTimeException("IF鍑芥暟鍙厑璁镐笁涓弬鏁"); } Object obj = list.get(0).getObject(parent); - logger.info("IF鍙傛暟锛" + JSON.toJSONString(obj)); boolean isDataTypeBool = false; DataType boolDtaType = null; if (obj != null && obj instanceof DataType) { diff --git a/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java b/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java index 395b9acdf..f550fd861 100644 --- a/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java +++ b/src/com/engine/salary/formlua/func/logic/LogicServiceImpl.java @@ -477,7 +477,6 @@ public class LogicServiceImpl implements LogicService { Object obj = objects[i - 1]; String typeStr = ExcelParamUtil.getParamType(obj); typeStr = ExcelParamUtil.checkParamType(typeStr); - logger.info(typeStr); if (type == null) { type = typeStr; } else { diff --git a/src/com/engine/salary/formlua/func/string/StringFormulaServiceImpl.java b/src/com/engine/salary/formlua/func/string/StringFormulaServiceImpl.java index bf96613c3..f18557327 100644 --- a/src/com/engine/salary/formlua/func/string/StringFormulaServiceImpl.java +++ b/src/com/engine/salary/formlua/func/string/StringFormulaServiceImpl.java @@ -236,7 +236,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { int replaceLength=(repIdx-1)+repLenth; if(replaceLength>sourceStr.length()){ // throw new RunTimeException(errorJson.getString("msg")); - logger.info("REPLACE鍑芥暟鏇挎崲浣嶇疆瓒呰繃浜嗗瓧绗﹂暱搴"); replaceLength=sourceStr.length(); } String cutStr=sourceStr.substring(repIdx-1,replaceLength); @@ -463,7 +462,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { sex = "鐢"; } } - logger.info(sex); return new DataType(DataType.STRING,sex); } @@ -471,7 +469,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { public DataType nativePlace(String idCard){ int nativePlaceCode=Integer.parseInt(idCard.substring(0, 6)); String nativePlace= NativePlace.getNativePlace(nativePlaceCode); - logger.info("鎮ㄦ墍鍦ㄧ殑鍦板尯涓猴細\n" + nativePlace); return new DataType(DataType.STRING,nativePlace); } @@ -489,7 +486,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { if(dataType!=null && dataType.getContent()!=null){ age=dataType.getContent(); } - logger.info("骞撮緞锛"+age); } } catch (ParseException e) { logger.error("err",e); @@ -526,7 +522,6 @@ public class StringFormulaServiceImpl implements StringFormulaService { } String birth=year+"-"+month+"-"+day; - logger.info("鐢熸棩涓猴細"+birth); result=birth; break; @@ -756,12 +751,10 @@ public class StringFormulaServiceImpl implements StringFormulaService { if(fieldType.equalsIgnoreCase("string")){ if(content!=null){ try { - logger.info("isJson鍑芥暟鐨凧SON瀛楃杞崲锛"+content+""); JSON.parseObject(content+""); resultDataType=new DataType(DataType.BOOL,true); } catch (Exception e) { - logger.info("err",e); - logger.info("涓嶆槸姝e父鐨凧SON瀛楃"); + logger.error("err",e); resultDataType=new DataType(DataType.BOOL,false); } }else{ @@ -800,13 +793,11 @@ public class StringFormulaServiceImpl implements StringFormulaService { if(fieldType.equalsIgnoreCase("string")){ if(content!=null){ try { - logger.info("isJson鍑芥暟鐨凧SON瀛楃杞崲锛"+content+""); JSONObject jsonObject=JSON.parseObject(content+""); Object jsonValue=jsonObject.get(objectKey+""); resultDataType=new DataType(DataType.STRING,jsonValue==null?"":jsonValue.toString()); } catch (Exception e) { logger.info("err",e); - logger.info("涓嶆槸姝e父鐨凧SON瀛楃"); resultDataType=new DataType(DataType.STRING,""); } }else{ diff --git a/src/com/engine/salary/formlua/util/DateUtil.java b/src/com/engine/salary/formlua/util/DateUtil.java index 64e97e2bd..5eddb6eb0 100644 --- a/src/com/engine/salary/formlua/util/DateUtil.java +++ b/src/com/engine/salary/formlua/util/DateUtil.java @@ -87,7 +87,6 @@ public class DateUtil { try { format.setLenient(false); format.parse(dateString); - logger.info(dateString); } catch (ParseException e) { // logger.error("err",e); convertSuccess=false; diff --git a/src/com/engine/salary/formlua/util/IgnoreParamFilter.java b/src/com/engine/salary/formlua/util/IgnoreParamFilter.java index 31f670347..b8db227e4 100644 --- a/src/com/engine/salary/formlua/util/IgnoreParamFilter.java +++ b/src/com/engine/salary/formlua/util/IgnoreParamFilter.java @@ -1,6 +1,5 @@ package com.engine.salary.formlua.util; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.engine.salary.formlua.core.exception.ErrorType; import com.engine.salary.formlua.entity.parameter.DataType; @@ -39,7 +38,6 @@ public class IgnoreParamFilter { * @return */ public static boolean isEmployee(Object object) { - logger.info("鏍¢獙浜哄憳鍙傛暟" + JSON.toJSONString(object)); // if (object instanceof DataType) { // DataType dataType = (DataType) object; // if (dataType.getComponentKey() != null && dataType.getComponentKey().equalsIgnoreCase(ComponentType.Employee.toString())) { @@ -227,7 +225,6 @@ public class IgnoreParamFilter { * @throws RuntimeException */ public static void filterAggFunc(String func, Object... objects) throws RuntimeException { - logger.info("鑱氬悎鍙傛暟锛" + JSON.toJSONString(objects)); Integer number = getSetFuncNumber(func); Map map = new HashMap<>(); boolean mustNumber = false; diff --git a/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.java b/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.java new file mode 100644 index 000000000..efb1db4d7 --- /dev/null +++ b/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.java @@ -0,0 +1,72 @@ +package com.engine.salary.mapper.api; + +import com.engine.salary.entity.api.ApiTaskRecordPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface ApiTaskRecordMapper { + + /** + * 鏌ヨ鎵鏈夎褰 + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listAll(); + + /** + * 鏉′欢鏌ヨ + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listSome(ApiTaskRecordPO apiTaskRecord); + + + /** + * 鏍规嵁涓婚敭鏌ヨ + * + * @param id 涓婚敭 + * @return 杩斿洖璁板綍锛屾病鏈夎繑鍥瀗ull + */ + ApiTaskRecordPO getById(Long id); + + /** + * 鏂板锛屽拷鐣ull瀛楁 + * + * @param apiTaskRecord 鏂板鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int insertIgnoreNull(ApiTaskRecordPO apiTaskRecord); + + /** + * 淇敼锛屼慨鏀规墍鏈夊瓧娈 + * + * @param apiTaskRecord 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int update(ApiTaskRecordPO apiTaskRecord); + + /** + * 淇敼锛屽拷鐣ull瀛楁 + * + * @param apiTaskRecord 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int updateIgnoreNull(ApiTaskRecordPO apiTaskRecord); + + /** + * 鍒犻櫎璁板綍 + * + * @param apiTaskRecord 寰呭垹闄ょ殑璁板綍 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int delete(ApiTaskRecordPO apiTaskRecord); + + /** + * 鎵归噺鍒犻櫎璁板綍 + * @param ids 涓婚敭id闆嗗悎 + */ + void deleteByIds(@Param("ids") Collection ids); + +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.xml b/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.xml new file mode 100644 index 000000000..55eb613d8 --- /dev/null +++ b/src/com/engine/salary/mapper/api/ApiTaskRecordMapper.xml @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + t + . + api + , t.create_time + , t.delete_type + , t.id + , t.param + , t.response + , t.source + , t.tenant_key + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_api_task_record + + + + api, + + + create_time, + + + delete_type, + + + id, + + + param, + + + response, + + + source, + + + tenant_key, + + + update_time, + + + + + #{api}, + + + #{createTime}, + + + #{deleteType}, + + + #{id}, + + + #{param}, + + + #{response}, + + + #{source}, + + + #{tenantKey}, + + + #{updateTime}, + + + + + + + UPDATE hrsa_api_task_record + + api=#{api}, + create_time=#{createTime}, + delete_type=#{deleteType}, + param=#{param}, + response=#{response}, + source=#{source}, + tenant_key=#{tenantKey}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_api_task_record + + + api=#{api}, + + + create_time=#{createTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + param=#{param}, + + + response=#{response}, + + + source=#{source}, + + + tenant_key=#{tenantKey}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_api_task_record + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_api_task_record + 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/archive/SalaryArchiveMapper.java b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java index 76b94d8bd..10bb6af67 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java @@ -138,4 +138,11 @@ public interface SalaryArchiveMapper { List listDateBeforeLastPayDate(@Param("date")Date date); List listPayStartDateIsNull(@Param("runStatus")String runStatus); + + /** + * 鏇存柊璧峰鍙戣柂鏃ユ湡 + * @param salaryArchiveId + * @param date + */ + void updatePayStartDateById(@Param("id")Long salaryArchiveId, @Param("payStartDate")Date date); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index fb327f7ad..a6da1930d 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -145,6 +145,13 @@ AND e.workcode like CONCAT('%',#{param.workcode},'%') + + + AND t.tax_agent_id IN + + #{taxAgentId} + + AND c.id IN @@ -241,6 +248,13 @@ AND e.workcode like '%'||#{param.workcode}||'%' + + + AND t.tax_agent_id IN + + #{taxAgentId} + + AND c.id IN @@ -335,6 +349,13 @@ AND e.workcode like '%'+#{param.workcode}+'%' + + + AND t.tax_agent_id IN + + #{taxAgentId} + + AND c.id IN @@ -440,6 +461,12 @@ AND t.tax_agent_id = #{param.taxAgentId} + + AND t.tax_agent_id IN + + #{taxAgentId} + + AND e.username like CONCAT('%',#{param.username},'%') @@ -895,5 +922,12 @@ #{id} + + UPDATE hrsa_salary_archive + + pay_start_date= #{payStartDate} + + WHERE id = #{id} + \ 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 dbda968e3..d271e4572 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.java +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.java @@ -3,6 +3,7 @@ package com.engine.salary.mapper.datacollection; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.IdCardEmployee; 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; @@ -36,6 +37,13 @@ public interface EmployMapper { */ List getEmployeeByIds(@Param("collection") List ids); + /** + * 鍗曡〃鏌ヨ 鍖呮嫭娆¤处鍙 + * @param ids + * @return + */ + List getEmployeeByIdsIncludeAccountType(@Param("collection") List ids); + /** * 澶氳〃鑱旀煡 * @param ids @@ -75,6 +83,13 @@ public interface EmployMapper { */ List listPositionInfo(@Param("collection") List ids); + /** + * 鎵浠ュ矖浣峣d 鑾峰彇宀椾綅淇℃伅 + * @param id + * @return + */ + PositionInfo getPositionInfoById(@Param("positionId") Long id); + /** * 鎵浠ラ儴闂 * @param departmentIds @@ -98,6 +113,13 @@ public interface EmployMapper { */ List getSubCompanyInfoList(@Param("subDepartmentIds") List subDepartmentIds); + /** + * 鏍规嵁鍒嗛儴id鑾峰彇鍒嗛儴淇℃伅 + * @param subDepartmentId + * @return + */ + SubCompanyInfo getSubCompanyInfoById(@Param("subDepartmentId")Long subDepartmentId); + /** * 铏氭嫙鍒嗛儴 * @param virtualSubCompanyIds @@ -168,6 +190,8 @@ public interface EmployMapper { */ List listBySubCompanyOrDepartment(@Param("subCompanyIds") List subCompanyIds, @Param("departmentIds") List departmentIds); + JobCallInfo getJobCallInfoById(@Param("jobCallId") Long jobCallId); + /** * 鏍规嵁鐢ㄦ埛鍚嶅拰宸ュ彿妯$硦鏌ヨ * @param keyword diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index 4b137a808..89ec94c3b 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -36,6 +36,25 @@ + + + + + + + select job.id, + job.NAME as name + from hrmjobcall job + where job.id = #{jobCallId} + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctCalcTaxReqMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctCalcTaxReqMapper.java new file mode 100644 index 000000000..badcde3d7 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctCalcTaxReqMapper.java @@ -0,0 +1,74 @@ +package com.engine.salary.mapper.salaryacct; + +import com.engine.salary.entity.salaryacct.po.SalaryAcctCalcTaxReqPO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface SalaryAcctCalcTaxReqMapper { + + /** + * 鏌ヨ鎵鏈夎褰 + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listAll(); + + /** + * 鏉′欢鏌ヨ + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listSome(SalaryAcctCalcTaxReqPO acctCalcTaxReq); + + + /** + * 鏍规嵁涓婚敭鏌ヨ + * + * @param id 涓婚敭 + * @return 杩斿洖璁板綍锛屾病鏈夎繑鍥瀗ull + */ + SalaryAcctCalcTaxReqPO getById(Long id); + + /** + * 鏂板锛屽拷鐣ull瀛楁 + * + * @param acctCalcTaxReq 鏂板鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int insertIgnoreNull(SalaryAcctCalcTaxReqPO acctCalcTaxReq); + + + /** + * 淇敼锛屼慨鏀规墍鏈夊瓧娈 + * + * @param acctCalcTaxReq 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int update(SalaryAcctCalcTaxReqPO acctCalcTaxReq); + + /** + * 淇敼锛屽拷鐣ull瀛楁 + * + * @param acctCalcTaxReq 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int updateIgnoreNull(SalaryAcctCalcTaxReqPO acctCalcTaxReq); + + /** + * 鍒犻櫎璁板綍 + * + * @param acctCalcTaxReq 寰呭垹闄ょ殑璁板綍 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int delete(SalaryAcctCalcTaxReqPO acctCalcTaxReq); + + /** + * 鎵归噺鍒犻櫎璁板綍 + * @param ids 涓婚敭id闆嗗悎 + */ + void deleteByIds(@Param("ids") Collection ids); + + void deleteByRecordId(Long salaryAcctRecordId); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctCalcTaxReqMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctCalcTaxReqMapper.xml new file mode 100644 index 000000000..ced6e5276 --- /dev/null +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctCalcTaxReqMapper.xml @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + t + . + id + , t.salary_acct_record_id + , t.tax_agent_id + , t.request_id + , t.tenant_key + , t.creator + , t.delete_type + , t.create_time + , t.update_time + + + + + + + + + + + + + + + INSERT INTO hrsa_acct_calc_tax_req + + + + id, + + + salary_acct_record_id, + + + tax_agent_id, + + + request_id, + + + tenant_key, + + + creator, + + + delete_type, + + + create_time, + + + update_time, + + + + + #{id}, + + + #{salaryAcctRecordId}, + + + #{taxAgentId}, + + + #{requestId}, + + + #{tenantKey}, + + + #{creator}, + + + #{deleteType}, + + + #{createTime}, + + + #{updateTime}, + + + + + + + + UPDATE hrsa_acct_calc_tax_req + + salary_acct_record_id=#{salaryAcctRecordId}, + tax_agent_id=#{taxAgentId}, + request_id=#{requestId}, + tenant_key=#{tenantKey}, + creator=#{creator}, + delete_type=#{deleteType}, + create_time=#{createTime}, + update_time=#{updateTime}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_acct_calc_tax_req + + + salary_acct_record_id=#{salaryAcctRecordId}, + + + tax_agent_id=#{taxAgentId}, + + + request_id=#{requestId}, + + + tenant_key=#{tenantKey}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_acct_calc_tax_req + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_acct_calc_tax_req + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + UPDATE hrsa_acct_calc_tax_req + SET delete_type = 1 + WHERE delete_type = 0 + AND salary_acct_record_id = #{salaryAcctRecordId} + + + + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java index 3b97e3084..1ce2b5fa6 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.java @@ -1,6 +1,8 @@ package com.engine.salary.mapper.salaryacct; +import com.engine.salary.entity.salaryacct.dto.AbnormalEmployeeListDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; +import com.engine.salary.entity.salaryacct.param.AbnormalEmployeeListQueryParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import org.apache.ibatis.annotations.Param; @@ -122,4 +124,10 @@ public interface SalaryAcctEmployeeMapper { void lockByAcctEmpIds(@Param("lockStatus") Integer lockStatus, @Param("acctEmpIds") Set acctEmpIds); void lockByRecordId(@Param("lockStatus") Integer lockStatus, @Param("recordId") Long recordId); + + List listPage4NotDeclareByParam(@Param("param") AbnormalEmployeeListQueryParam queryParam); + + int countNotDeclareByParam(@Param("param") AbnormalEmployeeListQueryParam queryParam); + + void updateIgnoreNull(@Param("salaryAcctEmployeePO")SalaryAcctEmployeePO salaryAcctEmployeePO); } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index f39b5bc53..505c5202a 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -16,6 +16,15 @@ + + + + + + + + + @@ -54,7 +72,16 @@ INSERT INTO hrsa_salary_acct_emp( salary_acct_record_id, salary_sob_id, employee_id, tax_agent_id, salary_month, - creator, create_time, update_time, delete_type, tenant_key,employee_type,lock_status) + creator, create_time, update_time, delete_type, tenant_key,employee_type,lock_status, + subcompany_name, + subcompany_id, + department_name, + department_id, + jobtitle_name, + jobtitle_id, + jobcall, + jobcall_id, + status) VALUES ( @@ -69,15 +96,32 @@ #{emp.deleteType}, #{emp.tenantKey}, #{emp.employeeType}, - #{emp.lockStatus} + #{emp.lockStatus}, + #{emp.subcompanyName}, + #{emp.subcompanyId}, + #{emp.departmentName}, + #{emp.departmentId}, + #{emp.jobtitleName}, + #{emp.jobtitleId}, + #{emp.jobcall}, + #{emp.jobcallId}, + #{emp.status} ) INSERT INTO hrsa_salary_acct_emp( salary_acct_record_id, salary_sob_id, employee_id, tax_agent_id, salary_month, - creator, create_time, update_time, delete_type, tenant_key,employee_type,lock_status) - + creator, create_time, update_time, delete_type, tenant_key,employee_type,lock_status, + subcompany_name, + subcompany_id, + department_name, + department_id, + jobtitle_name, + jobtitle_id, + jobcall, + jobcall_id, + status) select #{emp.salaryAcctRecordId,jdbcType=DOUBLE}, @@ -91,7 +135,16 @@ #{emp.deleteType,jdbcType=INTEGER}, #{emp.tenantKey,jdbcType=VARCHAR}, #{emp.employeeType,jdbcType=INTEGER}, - #{emp.lockStatus,jdbcType=INTEGER} + #{emp.lockStatus,jdbcType=INTEGER}, + #{emp.subcompanyName,jdbcType=VARCHAR}, + #{emp.subcompanyId,jdbcType=DOUBLE}, + #{emp.departmentName,jdbcType=VARCHAR}, + #{emp.departmentId,jdbcType=DOUBLE}, + #{emp.jobtitleName,jdbcType=VARCHAR}, + #{emp.jobtitleId,jdbcType=DOUBLE}, + #{emp.jobcall,jdbcType=VARCHAR}, + #{emp.jobcallId,jdbcType=DOUBLE}, + #{emp.status,jdbcType=VARCHAR} from dual @@ -99,7 +152,16 @@ INSERT INTO hrsa_salary_acct_emp( salary_acct_record_id, salary_sob_id, employee_id, tax_agent_id, salary_month, - creator, create_time, update_time, delete_type, tenant_key,employee_type,lock_status) + creator, create_time, update_time, delete_type, tenant_key,employee_type,lock_status, + subcompany_name, + subcompany_id, + department_name, + department_id, + jobtitle_name, + jobtitle_id, + jobcall, + jobcall_id, + status) VALUES ( #{emp.salaryAcctRecordId}, @@ -113,7 +175,16 @@ #{emp.deleteType}, #{emp.tenantKey}, #{emp.employeeType}, - #{emp.lockStatus} + #{emp.lockStatus}, + #{emp.subcompanyName}, + #{emp.subcompanyId}, + #{emp.departmentName}, + #{emp.departmentId}, + #{emp.jobtitleName}, + #{emp.jobtitleId}, + #{emp.jobcall}, + #{emp.jobcallId}, + #{emp.status} ) @@ -1151,6 +1222,15 @@ + + + + + + + + + @@ -1170,6 +1250,15 @@ , t.tenant_key , t.employee_type , t.lock_status + , t.subcompany_name + , t.subcompany_id + , t.department_name + , t.department_id + , t.jobtitle_name + , t.jobtitle_id + , t.jobcall + , t.jobcall_id + , t.status @@ -1244,7 +1333,7 @@ - AND salary_sob_id IN + AND t.salary_sob_id IN #{salarySobId} @@ -1281,7 +1370,112 @@ UPDATE hrsa_salary_acct_emp SET lock_status = #{lockStatus} WHERE delete_type = 0 - AND salary_acct_record_id =#{recordId} + 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 diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.java b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.java index 545b5a81b..bbc727459 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.java +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctResultMapper.java @@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param; import java.util.Collection; import java.util.List; +import java.util.Set; public interface SalaryAcctResultMapper { diff --git a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml index 93ec756ca..7b8f39b3b 100644 --- a/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml +++ b/src/com/engine/salary/mapper/salaryitem/SalaryItemMapper.xml @@ -24,6 +24,9 @@ + + + @@ -52,7 +55,8 @@ t.tax_agent_ids, t.sorted_index, t.hide_default, - t.width + t.width, + t.default_value @@ -221,6 +225,9 @@ width, + + default_value, + @@ -295,6 +302,9 @@ #{width}, + + #{defaultValue}, + @@ -369,7 +379,12 @@ width=#{width}, - sorted_index=#{sortedIndex}, + + sorted_index=#{sortedIndex}, + + + default_value=#{defaultValue}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobBackItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobBackItemMapper.xml index 430bb5734..85c51b081 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobBackItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobBackItemMapper.xml @@ -52,6 +52,7 @@ , t.delete_type , t.create_time , t.update_time + , t.default_value diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml index 04c91d121..62a3ca7ae 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobItemMapper.xml @@ -17,6 +17,7 @@ + @@ -41,6 +42,7 @@ , t.rounding_mode , t.pattern , t.value_type + , t.default_value , t.item_hide , t.income_category @@ -174,6 +176,7 @@ value_type=#{valueType}, item_hide=#{itemHide}, income_category=#{incomeCategory}, + default_value=#{defaultValue}, WHERE id = #{id} AND delete_type = 0 @@ -228,6 +231,9 @@ value_type=#{valueType}, + + default_value=#{defaultValue}, + item_hide=#{itemHide}, @@ -280,7 +286,7 @@ INSERT INTO hrsa_salary_sob_item(salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,salary_item_code,item_hide,income_category) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,salary_item_code,item_hide,income_category,default_value) VALUES ( @@ -301,13 +307,14 @@ #{item.valueType}, #{item.salaryItemCode}, #{item.itemHide}, - #{item.incomeCategory} + #{item.incomeCategory}, + #{item.defaultValue} ) INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,salary_item_code,item_hide,income_category) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,salary_item_code,item_hide,income_category,default_value) select @@ -328,14 +335,15 @@ #{item.valueType,jdbcType=INTEGER}, #{item.salaryItemCode,jdbcType=INTEGER}, #{item.itemHide,jdbcType=DOUBLE}, - #{item.incomeCategory,jdbcType=VARCHAR} + #{item.incomeCategory,jdbcType=VARCHAR}, + #{item.defaultValue,jdbcType=VARCHAR} from dual INSERT INTO hrsa_salary_sob_item( salary_sob_id, salary_item_id, salary_sob_item_group_id, formula_id, - sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,salary_item_code,item_hide,income_category) + sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,salary_item_code,item_hide,income_category,default_value) VALUES ( #{item.salarySobId}, @@ -355,7 +363,8 @@ #{item.valueType}, #{item.salaryItemCode}, #{item.itemHide}, - #{item.incomeCategory} + #{item.incomeCategory}, + #{item.defaultValue} ) diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml index 8c89c191b..087eb9a34 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml @@ -117,15 +117,15 @@ #{id} + + AND tax_agent_id = #{taxAgentId} + AND tax_agent_id IN #{taxAgentId} - - AND tax_agent_id = #{taxAgentId} - ORDER BY create_time DESC diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobTaxRuleMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobTaxRuleMapper.java new file mode 100644 index 000000000..cd2db6677 --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/SalarySobTaxRuleMapper.java @@ -0,0 +1,73 @@ +package com.engine.salary.mapper.salarysob; + +import com.engine.salary.entity.salarysob.po.SalarySobTaxRulePO; +import org.apache.ibatis.annotations.Param; + +import java.util.Collection; +import java.util.List; + +public interface SalarySobTaxRuleMapper { + + /** + * 鏌ヨ鎵鏈夎褰 + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listAll(); + + /** + * 鏉′欢鏌ヨ + * + * @return 杩斿洖闆嗗悎锛屾病鏈夎繑鍥炵┖List + */ + List listSome(SalarySobTaxRulePO sobTaxRule); + + + /** + * 鏍规嵁涓婚敭鏌ヨ + * + * @param id 涓婚敭 + * @return 杩斿洖璁板綍锛屾病鏈夎繑鍥瀗ull + */ + SalarySobTaxRulePO getById(Long id); + + /** + * 鏂板锛屽拷鐣ull瀛楁 + * + * @param sobTaxRule 鏂板鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int insertIgnoreNull(SalarySobTaxRulePO sobTaxRule); + + /** + * 淇敼锛屼慨鏀规墍鏈夊瓧娈 + * + * @param sobTaxRule 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int update(SalarySobTaxRulePO sobTaxRule); + + /** + * 淇敼锛屽拷鐣ull瀛楁 + * + * @param sobTaxRule 淇敼鐨勮褰 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int updateIgnoreNull(SalarySobTaxRulePO sobTaxRule); + + /** + * 鍒犻櫎璁板綍 + * + * @param sobTaxRule 寰呭垹闄ょ殑璁板綍 + * @return 杩斿洖褰卞搷琛屾暟 + */ + int delete(SalarySobTaxRulePO sobTaxRule); + + /** + * 鎵归噺鍒犻櫎璁板綍 + * @param ids 涓婚敭id闆嗗悎 + */ + void deleteByIds(@Param("ids") Collection ids); + + void deleteBySalarySobIds(@Param("salarySobIds") Collection salarySobIds); +} \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobTaxRuleMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobTaxRuleMapper.xml new file mode 100644 index 000000000..53277c457 --- /dev/null +++ b/src/com/engine/salary/mapper/salarysob/SalarySobTaxRuleMapper.xml @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + t + . + id + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + , t.salary_sob_id + , t.income_category + , t.tax_index + , t.salary_item_id + + + + + + + + + + + + + + + INSERT INTO hrsa_sob_tax_rule + + + + id, + + + create_time, + + + update_time, + + + creator, + + + delete_type, + + + tenant_key, + + + salary_sob_id, + + + income_category, + + + tax_index, + + + salary_item_id, + + + + + #{id}, + + + #{createTime}, + + + #{updateTime}, + + + #{creator}, + + + #{deleteType}, + + + #{tenantKey}, + + + #{salarySobId}, + + + #{incomeCategory}, + + + #{taxIndex}, + + + #{salaryItemId}, + + + + + + + UPDATE hrsa_sob_tax_rule + + create_time=#{createTime}, + update_time=#{updateTime}, + creator=#{creator}, + delete_type=#{deleteType}, + tenant_key=#{tenantKey}, + salary_sob_id=#{salarySobId}, + income_category=#{incomeCategory}, + tax_index=#{taxIndex}, + salary_item_id=#{salaryItemId}, + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_sob_tax_rule + + + create_time=#{createTime}, + + + update_time=#{updateTime}, + + + creator=#{creator}, + + + delete_type=#{deleteType}, + + + tenant_key=#{tenantKey}, + + + salary_sob_id=#{salarySobId}, + + + income_category=#{incomeCategory}, + + + tax_index=#{taxIndex}, + + + salary_item_id=#{salaryItemId}, + + + WHERE id = #{id} AND delete_type = 0 + + + + + + UPDATE hrsa_sob_tax_rule + SET delete_type=1 + WHERE id = #{id} + AND delete_type = 0 + + + + UPDATE hrsa_sob_tax_rule + SET delete_type = 1 + WHERE delete_type = 0 + AND id IN + + #{id} + + + + + + UPDATE hrsa_sob_tax_rule + SET delete_type = 1 + WHERE delete_type = 0 + AND salary_sob_id IN + + #{salarySobId} + + + + \ No newline at end of file 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 6aeab513e..99553f193 100644 --- a/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java +++ b/src/com/engine/salary/remote/attend/service/impl/RemoteAttend4SalaryServiceImpl.java @@ -18,6 +18,7 @@ import org.apache.commons.lang3.math.NumberUtils; import weaver.general.BaseBean; import weaver.general.Util; +import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -172,7 +173,7 @@ public class RemoteAttend4SalaryServiceImpl extends Service implements RemoteAtt public List> getBalanceOfLeaveColumns() { Map paramsMap = new HashMap(); paramsMap.put("dateScope", "6"); - paramsMap.put("selectedYear", 2023); + paramsMap.put("selectedYear", LocalDate.now().getYear()); paramsMap.put("dataScope", "3"); paramsMap.put("resourceId", 92); paramsMap.put("status", "9"); diff --git a/src/com/engine/salary/remote/tax/client/CalculateClient.java b/src/com/engine/salary/remote/tax/client/CalculateClient.java new file mode 100644 index 000000000..0cfa8e933 --- /dev/null +++ b/src/com/engine/salary/remote/tax/client/CalculateClient.java @@ -0,0 +1,33 @@ +package com.engine.salary.remote.tax.client; + +import com.engine.salary.remote.tax.response.calculate.GetASynIndividualIncomeTaxFeedbackResponse; +import com.engine.salary.util.HttpUtil; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SingnatureData; +import com.engine.salary.util.TaskUtil; +import lombok.extern.slf4j.Slf4j; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +@Slf4j +public class CalculateClient extends TaxBaseClient{ + + public CalculateClient(Long taxAgentId) { + super(taxAgentId); + } + + public GetASynIndividualIncomeTaxFeedbackResponse getASynIndividualIncomeTaxFeedback(String requestId){ + String url = super.apiConfig.getHost() + "/gateway/iit/calculateTax/getASynIndividualIncomeTaxFeedback"; + Map params = new HashMap<>(1); + params.put("requestId", requestId); + Map header = SingnatureData.initHeader(Collections.emptyMap(), apiConfig.getAppKey(), apiConfig.getAppSecret()); + String res = HttpUtil.getRequest(url, header, params); + TaskUtil taskUtil = new TaskUtil(); + taskUtil.writeApiTaskRecord(requestId, url, requestId, res); + log.info("getASynIndividualIncomeTaxFeedback res --- {}", res); + return JsonUtil.parseObject(res, GetASynIndividualIncomeTaxFeedbackResponse.class); + + } +} diff --git a/src/com/engine/salary/remote/tax/client/CompanyClient.java b/src/com/engine/salary/remote/tax/client/CompanyClient.java new file mode 100644 index 000000000..3ebf962e9 --- /dev/null +++ b/src/com/engine/salary/remote/tax/client/CompanyClient.java @@ -0,0 +1,39 @@ +package com.engine.salary.remote.tax.client; + +import com.engine.salary.constant.SzyhApiConstant; +import com.engine.salary.entity.taxagent.response.CheckPasswordResponse; +import com.engine.salary.entity.taxagent.response.CompanyRegisterInfoResponse; +import lombok.extern.slf4j.Slf4j; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +public class CompanyClient extends TaxBaseClient { + + + public CompanyClient(Long taxAgentId) { + super(taxAgentId); + } + + public CompanyRegisterInfoResponse getCompanyRegisterInfo(Map requestParam) { + String url = apiConfig.getHost() + SzyhApiConstant.GET_REGISTER_INFO_URL; + String requestId = request(url, requestParam); + + String getRegisterInfoFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.GET_REGISTER_INFO_FEEDBACK_URL; + Map responseParam = new HashMap<>(1); + responseParam.put("requestId", requestId); + return response(getRegisterInfoFeedbackUrl, responseParam, CompanyRegisterInfoResponse.class); + } + + public CheckPasswordResponse checkPassword(Map requestParam) { + + String url = apiConfig.getHost() + SzyhApiConstant.CHECK_PASSWORD_URL; + String requestId = request(url, requestParam); + + String checkPasswordFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.CHECK_PASSWORD_FEEDBACK_URL; + Map responseParam = new HashMap<>(1); + responseParam.put("requestId", requestId); + return response(checkPasswordFeedbackUrl, responseParam, CheckPasswordResponse.class); + } +} diff --git a/src/com/engine/salary/remote/tax/client/DeclareClient.java b/src/com/engine/salary/remote/tax/client/DeclareClient.java index 532affabd..cb9c6cb17 100644 --- a/src/com/engine/salary/remote/tax/client/DeclareClient.java +++ b/src/com/engine/salary/remote/tax/client/DeclareClient.java @@ -1,5 +1,9 @@ package com.engine.salary.remote.tax.client; +import com.engine.salary.constant.SzyhApiConstant; +import com.engine.salary.entity.taxdeclaration.response.CancelDeclareFeedbackResponse; +import com.engine.salary.entity.taxdeclaration.response.UpdateDeclareResponse; +import com.engine.salary.remote.tax.response.declare.GetCompanyIncomesResponse; import com.engine.salary.remote.tax.response.declare.GetDeclareTaxResultFeedbackResponse; import com.engine.salary.util.HttpUtil; import com.engine.salary.util.JsonUtil; @@ -19,17 +23,21 @@ import java.util.Map; * @version 1.0 **/ @Slf4j -public class DeclareClient extends TaxBaseClient{ +public class DeclareClient extends TaxBaseClient { public DeclareClient(Long taxAgentId) { super(taxAgentId); } /** - * 鐢虫姤鍐呯疆绠楃◣缁撴灉鏌ヨ - * @param requestId路 + * 鏌ヨ浼佷笟鐢虫姤鏁版嵁鏄庣粏 + * + * 宸蹭笅鏋 + * + * @param requestId * @return */ - public GetDeclareTaxResultFeedbackResponse getDeclareTaxResultFeedback(String requestId){ + @Deprecated + public GetDeclareTaxResultFeedbackResponse getDeclareTaxResultFeedback(String requestId){ // 渚涘簲鍟嗕俊鎭 String url = super.apiConfig.getHost() + "/gateway/iit/report/getDeclareTaxResultFeedback"; Map params = new HashMap<>(1); @@ -42,4 +50,50 @@ public class DeclareClient extends TaxBaseClient{ } + /** + * 浣滃簾鐢虫姤 + * @param requestParam + * @param responseParam + * @return + */ + public CancelDeclareFeedbackResponse cancel(Map requestParam, Map responseParam) { + String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_DECLARE; + String requestId = request(url, requestParam); + + String feedbackUrl = apiConfig.getHost() + SzyhApiConstant.CANCEL_DECLARE_FEEDBACK; + responseParam.put("requestId", requestId); + return response(feedbackUrl, responseParam, CancelDeclareFeedbackResponse.class); + } + + /** + * 鏇存鐢虫姤 + * + * @param requestParam + */ + public UpdateDeclareResponse correct(Map requestParam) { + String url = apiConfig.getHost() + SzyhApiConstant.UPDATE_DECLARE; + String requestId = request(url, requestParam); + + String feedbackUrl = apiConfig.getHost() + SzyhApiConstant.UPDATE_DECLARE_FEEDBACK; + Map responseParam = new HashMap<>(1); + responseParam.put("requestId", requestId); + return response(feedbackUrl, responseParam, UpdateDeclareResponse.class); + } + + + /** + * 浼佷笟鐢虫姤鏁版嵁鏄庣粏 + * @param requestParam + * @return + */ + public GetCompanyIncomesResponse getCompanyIncomes(Map requestParam) { + String url = apiConfig.getHost() + SzyhApiConstant.GET_COMPANY_INCOMES; + String requestId = request(url, requestParam); + + String feedbackUrl = apiConfig.getHost() + SzyhApiConstant.GET_COMPANY_INCOMES_FEEDBACK; + Map responseParam = new HashMap<>(1); + responseParam.put("requestId", requestId); + return response(feedbackUrl, responseParam, GetCompanyIncomesResponse.class); + } + } diff --git a/src/com/engine/salary/remote/tax/client/EmployeeClient.java b/src/com/engine/salary/remote/tax/client/EmployeeClient.java index 0bbee002f..480d00e53 100644 --- a/src/com/engine/salary/remote/tax/client/EmployeeClient.java +++ b/src/com/engine/salary/remote/tax/client/EmployeeClient.java @@ -1,15 +1,9 @@ package com.engine.salary.remote.tax.client; -import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareParam; import com.engine.salary.enums.taxagent.TaxAgentTaxReturnPasswordTypeEnum; -import com.engine.salary.remote.tax.request.employee.BatchInvalidSubmissionRequest; -import com.engine.salary.remote.tax.request.employee.GetCompanyEmployeeRequest; -import com.engine.salary.remote.tax.request.employee.InformationChangeRequest; import com.engine.salary.remote.tax.request.employee.MergedEmployeeArchivesRequest; -import com.engine.salary.remote.tax.response.employee.GetCompanyEmployeeResponse; import com.engine.salary.util.HttpUtil; import com.engine.salary.util.JsonUtil; -import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SingnatureData; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -34,100 +28,6 @@ public class EmployeeClient extends TaxBaseClient { super(taxAgentId); } - //4.2.3浼佷笟浜哄憳鍒楄〃鏌ヨ - public GetCompanyEmployeeResponse getCompanyEmployee(EmployeeDeclareParam param) { - - String url = super.apiConfig.getHost() + "gateway/iit/data/getCompanyEmployee"; - GetCompanyEmployeeRequest getCompanyEmployeeRequest = new GetCompanyEmployeeRequest(); - getCompanyEmployeeRequest.setNsrsbh(returnPO.getTaxCode()); - getCompanyEmployeeRequest.setQymc(returnPO.getTaxAgentName()); - getCompanyEmployeeRequest.setDjxhid(StringUtils.isNotEmpty(returnPO.getTaxRegistrationNumber()) ? returnPO.getTaxRegistrationNumber() : null); - getCompanyEmployeeRequest.setAreaid(returnPO.getAreaCode()); - getCompanyEmployeeRequest.setBmbh(StringUtils.isNotEmpty(returnPO.getDepartmentCode()) ? returnPO.getDepartmentCode() : null); - boolean realNamePwd = TaxAgentTaxReturnPasswordTypeEnum.REAL_NAME_PASSWORD.getValue().equals(returnPO.getPasswordType()); - getCompanyEmployeeRequest.setSbmm(realNamePwd ? null : returnPO.getPwd()); - getCompanyEmployeeRequest.setJmsbmm("0"); - getCompanyEmployeeRequest.setSmzh(realNamePwd ? returnPO.getRealAccount() : null); - getCompanyEmployeeRequest.setSmmm(realNamePwd ? returnPO.getPwd() : null); - getCompanyEmployeeRequest.setJmsmmm("0"); - getCompanyEmployeeRequest.setMmlx("" + returnPO.getPasswordType()); - getCompanyEmployeeRequest.setSsyf(SalaryDateUtil.getFormatYYYYMM(param.getTaxCycle())); - getCompanyEmployeeRequest.setPageNo("" + param.getCurrent()); - getCompanyEmployeeRequest.setPageSize("" + param.getPageSize()); - - String reqJson = JsonUtil.toJsonString(getCompanyEmployeeRequest); - log.info("getCompanyEmployee params --- \n{}\n", reqJson); - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - - // 寮濮嬭姹 - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("getCompanyEmployee res --- {}", res); - return JsonUtil.parseObject(res, GetCompanyEmployeeResponse.class); - - } - - public String batchInvalidSubmission(BatchInvalidSubmissionRequest batchInvalidSubmissionRequest) { - - String url = super.apiConfig.getHost() + "gateway/iit/declare/batchInvalidSubmission"; - batchInvalidSubmissionRequest.setNsrsbh(returnPO.getTaxCode()); - batchInvalidSubmissionRequest.setBizNo(UUID.randomUUID().toString().replace("-", "")); - batchInvalidSubmissionRequest.setQymc(returnPO.getTaxAgentName()); - batchInvalidSubmissionRequest.setDjxhid(StringUtils.isNotEmpty(returnPO.getTaxRegistrationNumber()) ? returnPO.getTaxRegistrationNumber() : null); - batchInvalidSubmissionRequest.setAreaid(returnPO.getAreaCode()); - batchInvalidSubmissionRequest.setBmbh(StringUtils.isNotEmpty(returnPO.getDepartmentCode()) ? returnPO.getDepartmentCode() : null); - boolean realNamePwd = TaxAgentTaxReturnPasswordTypeEnum.REAL_NAME_PASSWORD.getValue().equals(returnPO.getPasswordType()); - batchInvalidSubmissionRequest.setSbmm(realNamePwd ? null : returnPO.getPwd()); - batchInvalidSubmissionRequest.setJmsbmm("0"); - batchInvalidSubmissionRequest.setSmzh(realNamePwd ? returnPO.getRealAccount() : null); - batchInvalidSubmissionRequest.setSmmm(realNamePwd ? returnPO.getPwd() : null); - batchInvalidSubmissionRequest.setJmsmmm("0"); - batchInvalidSubmissionRequest.setMmlx("" + returnPO.getPasswordType()); - - - String reqJson = JsonUtil.toJsonString(batchInvalidSubmissionRequest); - log.info("batchInvalidSubmission params --- \n{}\n", reqJson); - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - - // 寮濮嬭姹 - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("batchInvalidSubmission res --- {}", res); -// return JsonUtil.parseObject(res, GetCompanyEmployeeResponse.class); - return res; - } - - public String informationChange(InformationChangeRequest informationChangeRequest) { - - String url = super.apiConfig.getHost() + "gateway/iit/employee/informationChange"; - informationChangeRequest.setNsrsbh(returnPO.getTaxCode()); - informationChangeRequest.setBizNo(UUID.randomUUID().toString().replace("-", "")); - informationChangeRequest.setQymc(returnPO.getTaxAgentName()); - informationChangeRequest.setDjxhid(StringUtils.isNotEmpty(returnPO.getTaxRegistrationNumber()) ? returnPO.getTaxRegistrationNumber() : null); - informationChangeRequest.setAreaid(returnPO.getAreaCode()); - informationChangeRequest.setBmbh(StringUtils.isNotEmpty(returnPO.getDepartmentCode()) ? returnPO.getDepartmentCode() : null); - boolean realNamePwd = TaxAgentTaxReturnPasswordTypeEnum.REAL_NAME_PASSWORD.getValue().equals(returnPO.getPasswordType()); - informationChangeRequest.setSbmm(realNamePwd ? null : returnPO.getPwd()); - informationChangeRequest.setJmsbmm("0"); - informationChangeRequest.setSmzh(realNamePwd ? returnPO.getRealAccount() : null); - informationChangeRequest.setSmmm(realNamePwd ? returnPO.getPwd() : null); - informationChangeRequest.setJmsmmm("0"); - informationChangeRequest.setMmlx("" + returnPO.getPasswordType()); - - - String reqJson = JsonUtil.toJsonString(informationChangeRequest); - log.info("informationChangeRequest params --- \n{}\n", reqJson); - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - - // 寮濮嬭姹 - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("informationChangeRequest res --- {}", res); -// return JsonUtil.parseObject(res, GetCompanyEmployeeResponse.class); - return res; - } - - public String mergedEmployeeArchives(MergedEmployeeArchivesRequest mergedEmployeeArchivesRequest) { String url = super.apiConfig.getHost() + "gateway/iit/mergedEmployeeArchives/query"; diff --git a/src/com/engine/salary/remote/tax/client/PaymentClient.java b/src/com/engine/salary/remote/tax/client/PaymentClient.java index 8c9571071..bb64bfe58 100644 --- a/src/com/engine/salary/remote/tax/client/PaymentClient.java +++ b/src/com/engine/salary/remote/tax/client/PaymentClient.java @@ -1,17 +1,6 @@ package com.engine.salary.remote.tax.client; -import com.engine.salary.enums.taxagent.TaxAgentTaxReturnPasswordTypeEnum; -import com.engine.salary.remote.tax.request.payment.QueryArrearageRequest; -import com.engine.salary.util.HttpUtil; -import com.engine.salary.util.JsonUtil; -import com.engine.salary.util.SingnatureData; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; @Slf4j public class PaymentClient extends TaxBaseClient { @@ -19,44 +8,6 @@ public class PaymentClient extends TaxBaseClient { super(taxAgentId); } - public void queryArrearage(String taxCycle) { - QueryArrearageRequest queryArrearageRequest = new QueryArrearageRequest(); - queryArrearageRequest.setNsrsbh(returnPO.getTaxCode()); - queryArrearageRequest.setQymc(returnPO.getTaxAgentName()); - queryArrearageRequest.setDjxhid(StringUtils.isNotEmpty(returnPO.getTaxRegistrationNumber()) ? returnPO.getTaxRegistrationNumber() : null); - queryArrearageRequest.setAreaid(returnPO.getAreaCode()); - queryArrearageRequest.setBmbh(StringUtils.isNotEmpty(returnPO.getDepartmentCode()) ? returnPO.getDepartmentCode() : null); - boolean realNamePwd = TaxAgentTaxReturnPasswordTypeEnum.REAL_NAME_PASSWORD.getValue().equals(returnPO.getPasswordType()); - queryArrearageRequest.setSbmm(realNamePwd ? null : returnPO.getPwd()); - queryArrearageRequest.setJmsbmm("0"); - queryArrearageRequest.setSmzh(realNamePwd ? returnPO.getRealAccount() : null); - queryArrearageRequest.setSmmm(realNamePwd ? returnPO.getPwd() : null); - queryArrearageRequest.setJmsmmm("0"); - queryArrearageRequest.setMmlx("" + returnPO.getPasswordType()); - queryArrearageRequest.setBizNo(UUID.randomUUID().toString()); - queryArrearageRequest.setSkssq(taxCycle); - - - String reqJson = JsonUtil.toJsonString(queryArrearageRequest); - - String url = super.apiConfig.getHost() + "/gateway/iit/payment/queryArrearage"; - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - System.out.println(res); - - getArrearageQueryFeedback(""); - } - - public void getArrearageQueryFeedback(String requestId) { - Map params = new HashMap<>(1); - params.put("requestId", "43dd5abf686946f59cfea50a51f8183a"); - Map header = SingnatureData.initHeader(Collections.emptyMap(), apiConfig.getAppKey(), apiConfig.getAppSecret()); - String url = super.apiConfig.getHost() + "/gateway/iit/payment/getArrearageQueryFeedback"; - String res = HttpUtil.getRequest(url, header, params); - - System.out.println(res); - } } diff --git a/src/com/engine/salary/remote/tax/client/TaxBaseClient.java b/src/com/engine/salary/remote/tax/client/TaxBaseClient.java index 1eae80e88..686676a39 100644 --- a/src/com/engine/salary/remote/tax/client/TaxBaseClient.java +++ b/src/com/engine/salary/remote/tax/client/TaxBaseClient.java @@ -1,12 +1,23 @@ package com.engine.salary.remote.tax.client; +import com.engine.salary.constant.SzyhApiConstant; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO; +import com.engine.salary.entity.taxpayment.response.BaseResponse; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.mapper.taxagent.TaxAgentTaxReturnMapper; import com.engine.salary.mapper.taxdeclaration.TaxDeclareApiConfigMapper; -import com.engine.salary.util.Sm4Utils; +import com.engine.salary.remote.tax.response.RequestIdResponse; +import com.engine.salary.util.*; import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; +import weaver.general.Util; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; @Slf4j public class TaxBaseClient { @@ -14,25 +25,140 @@ public class TaxBaseClient { return MapperProxyFactory.getProxy(TaxDeclareApiConfigMapper.class); } - private TaxAgentTaxReturnMapper getTaxAgentTaxReturnMapper() { return MapperProxyFactory.getProxy(TaxAgentTaxReturnMapper.class); } + private TaxAgentMapper getTaxAgentMapper() { + return MapperProxyFactory.getProxy(TaxAgentMapper.class); + } + public Long taxAgentId; - public TaxDeclarationApiConfigPO apiConfig ; - public TaxAgentTaxReturnPO returnPO ; + public TaxDeclarationApiConfigPO apiConfig; + public TaxAgentTaxReturnPO returnPO; + public TaxAgentPO taxAgent; + + public static final int threshold = 600; public TaxBaseClient(Long taxAgentId) { this.taxAgentId = taxAgentId; this.apiConfig = getTaxDeclareApiConfigMapper().getOne(); TaxAgentTaxReturnPO taxReturnPO = getTaxAgentTaxReturnMapper().selectOneByTaxAgentId(taxAgentId); - try { - // 瀵嗙爜瑙e瘑 - taxReturnPO.setPwd(Sm4Utils.decryptEcb(apiConfig.getAppSecret(), taxReturnPO.getPwd())); - } catch (Exception e) { - log.error("Sm4Utils.decryptEcb ---- error: {}", e.getMessage()); - } +// try { +// // 瀵嗙爜瑙e瘑 +// taxReturnPO.setPwd(Sm4Utils.decryptEcb(apiConfig.getAppSecret(), taxReturnPO.getPwd())); +// } catch (Exception e) { +// log.error("Sm4Utils.decryptEcb ---- error: {}", e.getMessage()); +// } this.returnPO = taxReturnPO; + this.taxAgent = getTaxAgentMapper().getById(taxAgentId); + } + + public Map initRequestMap() { + Map requestMap = new HashMap<>(); + requestMap.put("bizNo", UUID.randomUUID().toString().replace("-", "")); + requestMap.put("qymc", taxAgent.getName()); + requestMap.put("mmlx", returnPO.getPasswordType()); + requestMap.put("smzh", returnPO.getRealAccount()); + requestMap.put("smmm", returnPO.getPwd()); + requestMap.put("jmsmmm", "1"); + requestMap.put("sbmm", returnPO.getPwd()); + requestMap.put("jmsbmm", "1"); + requestMap.put("djxhid", returnPO.getTaxRegistrationNumber()); + requestMap.put("nsrsbh", returnPO.getTaxCode()); + requestMap.put("areaid", returnPO.getAreaCode()); + requestMap.put("bmbh", returnPO.getDepartmentCode()); + requestMap.put("bmmc", returnPO.getDepartmentName()); + return requestMap; + } + + public String request(String url, Map requestParam) { + String reqJson = JsonUtil.toJsonString(requestParam); + Map header = SingnatureData.initHeader(new HashMap<>(1), apiConfig.getAppKey(), apiConfig.getAppSecret()); + String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); + //璁板綍鎺ュ彛 + TaskUtil taskUtil = new TaskUtil(); + taskUtil.writeApiTaskRecord(Util.null2String(taxAgentId), url, reqJson, res); + + RequestIdResponse response = JsonUtil.parseObject(res, RequestIdResponse.class); + if (response == null || response.getHead() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "鏈嶅姟寮傚父锛岃绋嶅悗閲嶈瘯")); + } + if (!SzyhApiConstant.SUCCESS_CODE.equals(response.getHead().getCode()) || response.getBody() == null) { + // 濡傛灉杩斿洖閿欒 + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, response.getHead().getMsg())); + } + return response.getBody().getRequestId(); + } + + public T response(String url, Map param, Class clazz) { + TaskUtil taskUtil = new TaskUtil(); + T response = null; + for (int i = 0; i <= threshold; ++i) { + Map header = SingnatureData.initHeader(new HashMap<>(1), apiConfig.getAppKey(), apiConfig.getAppSecret()); + String res = HttpUtil.getRequest(url, header, param); + //璁板綍鎺ュ彛 + taskUtil.writeApiTaskRecord(Util.null2String(taxAgentId), url, JsonUtil.toJsonString(param), res); + response = JsonUtil.parseBean(res, clazz); + if (response == null || response.getHead() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "鏈嶅姟寮傚父锛岃绋嶅悗閲嶈瘯")); + } + // 濡傛灉绋庡弸杩斿洖閿欒淇℃伅 + String code = response.getHead().getCode(); + if (SzyhApiConstant.HANDLING_CODE.equals(code) || SzyhApiConstant.TASK_HANDLING_CODE.equals(code)) { + //杩涜涓殑浠诲姟锛岄噸璇 + try { + Thread.sleep(6 * 1000); + } catch (InterruptedException e) { + log.error("", e); + } + if (threshold == i) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "鏈湪棰勬湡鏃堕棿鍐呭畬鎴愪换鍔★紝璇风◢鍚庨噸璇曪紒闃鍊硷細" + threshold)); + } + } else if (SzyhApiConstant.SUCCESS_CODE.equals(response.getHead().getCode())) { + //鎴愬姛鐨勪换鍔★紝杩斿洖缁撴灉 + break; + } else { + //閿欒浠诲姟锛屾彁绀 + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, response.getHead().getMsg())); + } + } + return response; + } + + public T postResponse(String url, Map param, Class clazz) { + String reqJson = JsonUtil.toJsonString(param); + TaskUtil taskUtil = new TaskUtil(); + T response = null; + for (int i = 0; i <= threshold; ++i) { + Map header = SingnatureData.initHeader(new HashMap<>(1), apiConfig.getAppKey(), apiConfig.getAppSecret()); + String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); + response = JsonUtil.parseBean(res, clazz); + //璁板綍鎺ュ彛 + taskUtil.writeApiTaskRecord(Util.null2String(taxAgentId), url, JsonUtil.toJsonString(param), res); + if (response == null || response.getHead() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "鏈嶅姟寮傚父锛岃绋嶅悗閲嶈瘯")); + } + // 濡傛灉绋庡弸杩斿洖閿欒淇℃伅 + String code = response.getHead().getCode(); + if (SzyhApiConstant.HANDLING_CODE.equals(code) || SzyhApiConstant.TASK_HANDLING_CODE.equals(code)) { + //杩涜涓殑浠诲姟锛岄噸璇 + try { + Thread.sleep(6 * 1000); + } catch (InterruptedException e) { + log.error("", e); + } + if (threshold == i) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "鏈湪棰勬湡鏃堕棿鍐呭畬鎴愪换鍔★紝璇风◢鍚庨噸璇曪紒闃鍊硷細" + threshold)); + } + } else if (SzyhApiConstant.SUCCESS_CODE.equals(response.getHead().getCode())) { + //鎴愬姛鐨勪换鍔★紝杩斿洖缁撴灉 + break; + } else { + //閿欒浠诲姟锛屾彁绀 + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, response.getHead().getMsg())); + } + } + return response; } } diff --git a/src/com/engine/salary/remote/tax/client/TaxPaymentClient.java b/src/com/engine/salary/remote/tax/client/TaxPaymentClient.java new file mode 100644 index 000000000..2f80692b1 --- /dev/null +++ b/src/com/engine/salary/remote/tax/client/TaxPaymentClient.java @@ -0,0 +1,70 @@ +package com.engine.salary.remote.tax.client; + +import com.engine.salary.constant.SzyhApiConstant; +import com.engine.salary.entity.datacollection.response.QuerySpecialAmountResponse; +import com.engine.salary.entity.taxpayment.response.SyncWithholdingFeedbackResponse; +import com.engine.salary.entity.taxpayment.response.WithheldVoucherResponse; +import lombok.extern.slf4j.Slf4j; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +public class TaxPaymentClient extends TaxBaseClient { + public TaxPaymentClient(Long taxAgentId) { + super(taxAgentId); + } + + + /** + * 浣滃簾缂存鍑瘉 + * + * @param requestParam + * @return + */ + public QuerySpecialAmountResponse cancelWithholdingVoucher(Map requestParam) { + String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_WITHHOLDING_VOUCHER; + String requestId = request(url, requestParam); + + url = apiConfig.getHost() + SzyhApiConstant.CANCEL_WITHHOLDING_VOUCHER_FEEDBACK; + Map responseParam = new HashMap<>(1); + responseParam.put("requestId", requestId); + return response(url, responseParam, QuerySpecialAmountResponse.class); + + } + + /** + * 鍒锋柊缂存鐘舵 + * @param requestParam + * @return + */ + public SyncWithholdingFeedbackResponse getSyncWithholding(Map requestParam) { + String url = apiConfig.getHost() + SzyhApiConstant.GET_SYNC_WITHHOLDING_FEEDBACK; + String requestId = request(url, requestParam); + + url = apiConfig.getHost() + SzyhApiConstant.GET_SYNC_WITHHOLDING_FEEDBACK_FEEDBACK; + Map responseParam = new HashMap<>(1); + responseParam.put("requestId", requestId); + return response(url, responseParam, SyncWithholdingFeedbackResponse.class); + + } + + + /** + * 寮鍏峰畬绋庤瘉鏄 + * + * @param requestParam + * @return + */ + public WithheldVoucherResponse getWithheldVoucher(Map requestParam) { + String url = apiConfig.getHost() + SzyhApiConstant.GET_WITHHELD_VOUCHER; + String requestId = request(url, requestParam); + + url = apiConfig.getHost() + SzyhApiConstant.GET_WITHHELD_VOUCHER_FEEDBACK; + Map responseParam = new HashMap<>(1); + responseParam.put("requestId", requestId); + return response(url, responseParam, WithheldVoucherResponse.class); + + } + +} diff --git a/src/com/engine/salary/remote/tax/request/calculate/CalculateASynIndividualIncomeTaxRequest.java b/src/com/engine/salary/remote/tax/request/calculate/CalculateASynIndividualIncomeTaxRequest.java new file mode 100644 index 000000000..408dec81f --- /dev/null +++ b/src/com/engine/salary/remote/tax/request/calculate/CalculateASynIndividualIncomeTaxRequest.java @@ -0,0 +1,1442 @@ +package com.engine.salary.remote.tax.request.calculate; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class CalculateASynIndividualIncomeTaxRequest { + /** + * 澶栭儴涓氬姟缂栧彿 蹇呭~锛氭槸 澶栭儴涓氬姟缂栧彿锛屽敮涓锛屽箓绛夐渶瑕侊紝鏈闀64浣,寤鸿浣跨敤UUID,寤鸿浣跨敤UUID + */ + private String bizNo; + /** + * 浼佷笟鍚嶇О 蹇呭~锛氭槸 鎵g即涔夊姟浜哄悕绉帮細渚嬪锛氭祴璇暶熺鎶鏈夐檺鍏徃 + */ + private String qymc; + /** + * 瀵嗙爜绫诲瀷 蹇呭~锛氬惁 0琛ㄧず鐢虫姤瀵嗙爜锛2琛ㄧず瀹炲悕璐﹀彿瀹炲悕瀵嗙爜 + */ + private String mmlx; + /** + * 瀹炲悕璐﹀彿 蹇呭~锛氭潯浠跺繀濉 褰搈mlx=2鏃讹紝蹇呭~ + */ + private String smzh; + /** + * 瀹炲悕瀵嗙爜 蹇呭~锛氭潯浠跺繀濉 褰搈mlx=2鏃讹紝蹇呭~ + */ + private String smmm; + /** + * 鍔犲瘑瀹炲悕瀵嗙爜 蹇呭~锛氬惁 榛樿涓嶄紶鍒欒缃负0锛0琛ㄧず涓嶅姞瀵,1琛ㄧず鍔犲瘑 + */ + private String jmsmmm; + /** + * 鐢虫姤瀵嗙爜 蹇呭~锛氭潯浠跺繀濉 褰搈mlx=0鏃讹紝蹇呭~ + */ + private String sbmm; + /** + * 鍔犲瘑鐢虫姤瀵嗙爜 蹇呭~锛氬惁 榛樿涓嶄紶鍒欒缃负0锛0琛ㄧず涓嶅姞瀵嗭紱1琛ㄧず鍔犲瘑 + */ + private String jmsbmm; + /** + * 鐧昏搴忓彿 蹇呭~锛氭潯浠跺繀濉 瀛樺湪澶氫釜鐧昏搴忓彿鏃讹紝闇瑕佹寚瀹氫紶鍏ヤ竴涓.渚嬶細10117440105249764755 + */ + private String djxhid; + /** + * 绋庡彿 蹇呭~锛氭槸 鎵g即鍗曚綅绾崇◣浜鸿瘑鍒彿 + */ + private String nsrsbh; + /** + * 鍦板尯缂栧彿 蹇呭~锛氭槸 6浣嶈鏀垮尯鍒掍唬鐮,绮剧‘鍒板競绾э紝渚嬪锛440100,鍙傝冪渷甯傚尯缂栫爜 + */ + private String areaid; + /** + * 閮ㄩ棬缂栧彿 蹇呭~锛氭潯浠跺繀濉 鍒嗛儴闂ㄤ唬鎶ユ椂蹇呬紶 + */ + private String bmbh; + /** + * 閮ㄩ棬鍚嶇О 蹇呭~锛氬惁 鍒嗛儴闂ㄤ唬鎶ユ椂蹇呬紶 + */ + private String bmmc; + /** + * 鎵灞炴湡 蹇呭~锛氭槸 鏍煎紡YYYYMM骞存湀 + */ + private String skssq; + /** + * 澶氭壒娆$畻绋庯紝鏄惁鏍¢獙浜哄憳涔嬪墠鎵规绠楃◣鐘舵 蹇呭~锛氬惁 搴旂敤鍦烘櫙: 濡傛灉濉啓鈥滄槸鈥濓紝鍦ㄥ鎵规绠楃◣涓細鏍¢獙褰撳墠鎵规涓殑浜哄憳鍦ㄤ箣鍓嶆壒娆$畻绋庝腑鏄惁瀛樺湪鏈嬁鍙嶉鐨勮姹傦紝濡傛灉瀛樺湪灏遍樆鏂綋鍓嶆壒娆$畻绋庛 + * 濡傛灉涓嶅~鍐欐垨鑰呭~鍐欌滃惁鈥濓紝涓嶆牎楠岃閫昏緫銆 + */ + private String sfjyrysszt; + /** + * 缁煎悎鎵寰 蹇呭~锛氭槸 瑙佺患鍚堟墍寰 + */ + private zhsd zhsd; +// /** +// * 鍒嗙被鎵寰 蹇呭~锛氭槸 瑙佸垎绫绘墍寰 +// */ +// private 瀵硅薄 flsd; +// /** +// * 闈炲眳姘戞墍寰 蹇呭~锛氭槸 瑙侀潪灞呮皯鎵寰 +// */ +// private 瀵硅薄 fjmsd; +// /** +// * 闄愬敭鑲℃墍寰 蹇呭~锛氭槸 瑙侀檺鍞偂鎵寰 +// */ +// private 瀵硅薄 xsgsd; + + @Data + public static class zhsd { + /** + * 鏄惁绂荤嚎绠楄柂 蹇呭~锛氬惁 鍙夈愭槸銆戞垨銆愬惁銆戯紝闈炲繀浼狅紝涓嶄紶鐨勬儏鍐典笅榛樿涓恒愬惁銆戯紝褰撲负绂荤嚎绠楄柂鏃讹紝涓撻」涓嬭浇銆佷汉鍛樻姤閫侀兘澶辨晥锛 + * sfrysb=1 鏃朵篃涓嶄細鎶ラ佷汉鍛橈紝 + * zcgzxjsfcrlj=0鏃朵細缁熶竴浣跨敤鏈湴鏁版嵁杩涜璁$畻 + */ + private String sflxsx; + /** + * 鍑忓厤鏂瑰紡 蹇呭~锛氬惁 1:"姣斾緥鍑忓厤鏂瑰紡" 2:"闄愰鍑忓厤鏂瑰紡" 鍏朵粬鏂瑰紡涓嶄紶鍊硷紝鎸夌収褰撳湴鏀跨瓥閫夋嫨鍑忓厤鏂瑰紡 + */ + private String jmfs; + /** + * 鍑忓厤姣斾緥 蹇呭~锛氭潯浠跺繀濉 jmfs涓1鏃跺繀濉紝绀轰緥锛10% 浼0.1 + */ + private BigDecimal jmbl; + /** + * 鍑忓厤闄愰 蹇呭~锛氭潯浠跺繀濉 jmfs涓2鏃跺繀濉紝鍑忓厤闄愰澶т簬0 + */ + private BigDecimal jmxe; + /** + * 姝e父宸ヨ祫钖噾瀵硅薄 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-姝e父宸ヨ祫钖噾瀵硅薄 + */ + private zcgzxj zcgzxj; + /** + * 鍏ㄥ勾涓娆℃у閲戞敹鍏ュ垪琛 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-鍏ㄥ勾涓娆℃у閲戞敹鍏 + */ + private List qnycxjjsslb; + /** + * 绋块叕鎵寰楀垪琛 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-绋块叕鎵寰 + */ + private List gcsdlb; + /** + * 涓鑸姵鍔℃姤閰墍寰楀垪琛 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-涓鑸姵鍔℃姤閰墍寰 + */ + private List lwbclb; + /** + * 瑙i櫎鍔冲姩鍚堝悓涓娆℃цˉ鍋块噾鍒楄〃 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-瑙i櫎鍔冲姩鍚堝悓涓娆℃цˉ鍋块噾 + */ + private List jcldhtycxbcjlb; + /** + * 淇濋櫓钀ラ攢鍛 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-淇濋櫓钀ラ攢鍛樿柂閲戝璞 + */ + private bxyxy bxyxy; + /** + * 璇佸埜缁忕邯浜 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-璇佸埜缁忕邯浜鸿柂閲戝璞 + */ + private zqjjr zqjjr; + /** + * 鍏朵粬杩炵画鍔冲姟鎶ラ叕鎵寰 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-鍏朵粬杩炵画鍔冲姟鎶ラ叕鎵寰 + */ + private qtlxlwbc qtlxlwbc; + /** + * 鐗硅鏉冩墍寰 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-鐗硅鏉冩墍寰 + */ + private List txq; + /** + * 涓汉鑲℃潈婵鍔辨墍寰 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-涓汉鑲℃潈婵鍔辨墍寰 + */ + private List grgqjl; + /** + * 浼佷笟骞撮噾 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-浼佷笟骞撮噾 + */ + private List qynj; + /** + * 鍐呴涓娆℃цˉ鍋块噾 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-鍐呴涓娆℃цˉ鍋块噾 + */ + private List ntycxbcjlb; + /** + * 鍏朵粬闈炶繛缁姵鍔℃姤閰 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-鍏朵粬闈炶繛缁姵鍔℃姤閰 + */ + private List qtflxlwbc; +// /** +// * 鎻愬墠閫浼戜竴娆℃цˉ璐 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-鎻愬墠閫浼戜竴娆℃цˉ璐 +// */ +// private List tqtxycxbt; +// /** +// * 澶紒璐熻矗浜虹哗鏁堣柂閲戝欢鏈熷厬鐜版敹鍏ュ拰浠绘湡濂栧姳 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-澶紒璐熻矗浜虹哗鏁堣柂閲戝欢鏈熷厬鐜版敹鍏ュ拰浠绘湡濂栧姳 +// */ +// private 鏁扮粍 yqfzrsrhjl; +// /** +// * 娉曞緥鎻村姪鍔冲姟鎶ラ叕鎵寰楀垪琛 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-娉曞緥鎻村姪鍔冲姟鎶ラ叕鎵寰楀垪琛 +// */ +// private 鏁扮粍 flyzlwbclb; +// /** +// * 闈炲眳姘戞墍寰 蹇呭~锛氭槸 瑙侀潪灞呮皯鎵寰 +// */ +// private 瀵硅薄 fjmsd; +// /** +// * 闄愬敭鑲℃墍寰 蹇呭~锛氭槸 瑙侀檺鍞偂鎵寰 +// */ +// private 瀵硅薄 xsgsd; + + @Data + public static class ry { + /** + * 濮撳悕 蹇呭~锛氭槸 绾崇◣浜哄鍚 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 璇佷欢鍙风爜闇瑕佸ぇ鍐 + */ + private String zzhm; + /** + * 鍏朵粬璇佷欢绫诲瀷 蹇呭~锛氭潯浠跺繀濉 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String qtzzlx; + /** + * 鍏朵粬璇佷欢鍙风爜 蹇呭~锛氭潯浠跺繀濉 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String qtzzhm; + /** + * 閮ㄩ棬缂栧彿 蹇呭~锛氬惁 閮ㄩ棬缂栧彿 + */ + private String bmbh; + /** + * 浜哄憳鎶ラ佺瓥鐣 蹇呭~锛氬惁 1. 榛樿閫昏緫鈥滄槸鈥濓紝浠呭綋淇℃伅鍙樺寲鏃舵墠浼氭姤閫佷俊鎭埌绋庡眬 2. 鑻ヤ紒涓氭兂瑕佹敮鎸佷汉鍛樹俊鎭笉鍙樺寲鐨勬儏鍐典笅锛屼篃鑳介噸鏂板彂璧锋姤閫侊紝瑕嗙洊灞绔俊鎭紝鍙慨鏀逛紶鍙備负鈥滃惁鈥 + */ + private String rybscl; + /** + * 宸ュ彿 蹇呭~锛氬惁 + */ + private String gh; + /** + * 鎵灞炴湡 蹇呭~锛氬惁 鏍煎紡YYYYMM骞存湀 + */ + private String skssq; + /** + * 鐢佃瘽鍙风爜 蹇呭~锛氭槸 11浣嶄腑鍥藉ぇ闄嗘墜鏈哄彿鐮 + */ + private String lxdh; + /** + * 浜哄憳鐘舵 蹇呭~锛氭槸 榛樿涓烘甯革紝鍙夋嫨姝e父/闈炴甯 + */ + private String nsrzt; + /** + * 浠昏亴鍙楅泧绫诲瀷 蹇呭~锛氭槸 鍙夋嫨闆囧憳銆佷繚闄╄惀閿鍛樸佽瘉鍒哥粡绾汉銆佸叾浠栥佸疄涔犲鐢燂紙鍏ㄦ棩鍒跺鍘嗘暀鑲诧級 + */ + private String sfgy; + /** + * 鍏ヨ亴骞村害灏变笟鎯呭舰 蹇呭~锛氬惁 褰撻泧鍛樸佷繚闄╄惀閿鍛樸佽瘉鍒哥粡绾汉鏃跺彲閫夋嫨锛氬綋骞撮娆″叆鑱屽鐢熴佸綋骞撮娆″叆鑱屽叾浠栦汉鍛樸傚叾浠栨儏鍐典笅濉啓榛樿涓虹┖ + */ + private String rzndjyqk; + /** + * 鍙楅泧鏃ユ湡 蹇呭~锛氭潯浠跺繀濉 鏍煎紡:YYYY-MM-DD,涓嶈兘澶т簬褰撳墠鏃堕棿 浠昏亴鍙楅泧绫诲瀷閫夋嫨:闆囧憳銆佷繚闄╄惀閿鍛樸佽瘉鍒哥粡绾汉銆佸疄涔犲鐢燂紙鍏ㄦ棩鍒跺鍘嗘暀鑲诧級鏃跺繀褰 + */ + private String rzsgrq; + /** + * 鎬у埆 蹇呭~锛氭槸 鐢/濂 + */ + private String xb; + /** + * 鍑虹敓鏃ユ湡 蹇呭~锛氭槸 YYYY-MM-DD 闇瑕佸拰韬唤璇佷笂淇濇寔涓鑷 + */ + private String csny; + /** + * 鍥界睄 蹇呭~锛氭槸 瑙佸浗绫嶅瓧鍏 + */ + private String gj; + /** + * 浜哄憳鍦板尯 蹇呭~锛氭槸 澧冨唴/澧冨 + */ + private String rydq; + /** + * 绂昏亴鏃ユ湡 蹇呭~锛氬惁 鏍煎紡锛歒YYY-MM-DD,涓嶈兘澶т簬褰撳墠鏃堕棿锛岀鑱屾棩鏈熶笉鑳藉ぇ浜庡叆鑱屾棩鏈 浜哄憳鐘舵侀潪姝e父鏃跺繀濉 娉細娓呯┖绂昏亴鏃堕棿浼犲叆绌哄瓧绗︿覆锛屼笉鑳芥槸null + */ + private String lzrq; + /** + * 涓汉鎶曡祫鎬婚 蹇呭~锛氭潯浠跺繀濉 褰撲负鑲′笢鎶曡祫鑰呮椂蹇呭~锛屾姇璧勯澶т簬0 + */ + private BigDecimal grgbze; + /** + * 涓汉鎶曡祫姣斾緥 蹇呭~锛氬惁 鎶曡祫棰濆~鍐欐椂蹇呭~锛岃寖鍥翠负0~100锛屼笉鍖呭惈0 + */ + private BigDecimal grgbbl; + /** + * 鏄惁娈嬬柧 蹇呭~锛氬惁 榛樿涓哄惁锛屽彲閫夋嫨鏄/鍚 + */ + private String sfcj; + /** + * 鏄惁鐑堝睘 蹇呭~锛氬惁 榛樿涓哄惁锛屽彲閫夋嫨鏄/鍚 + */ + private String sfls; + /** + * 鏄惁瀛よ 蹇呭~锛氬惁 榛樿涓哄惁锛屽彲閫夋嫨鏄/鍚 + */ + private String sfgl; + /** + * 鏄惁鎵i櫎鍑忛櫎璐圭敤 蹇呭~锛氬惁 榛樿涓烘槸锛屽彲閫夋嫨鏄/鍚︼紝浼爊ull鎴栬呯┖鍊奸兘浼氶粯璁や负鏄紝褰撳~浜嗗惁鍚, 濡傛灉鍚庣画杩橀渶瑕佷繚鎸佸惁鐨勭姸鎬佽繕闇浼犲惁锛屼笉濉垯浼氶粯璁や负鏄 + */ + private String sfzdw; + /** + * 娈嬬柧璇佸彿 蹇呭~锛氭潯浠跺繀濉 褰撲负娈嬬柧鏃跺繀濉 + */ + private String cjzh; + /** + * 鐑堝睘璇佸彿 蹇呭~锛氭潯浠跺繀濉 褰撲负鐑堝睘鏃跺繀濉 + */ + private String lszh; + /** + * 閭 蹇呭~锛氬惁 + */ + private String dzyx; + /** + * 瀛﹀巻 蹇呭~锛氬惁 + * 榛樿涓虹┖锛屽ぇ瀛︽湰绉戜互涓 澶у鏈 鐮旂┒鐢 + */ + private String xl; + /** + * 鑱屽姟 蹇呭~锛氬惁 楂樺眰 鏅 + */ + private String zw; + /** + * 寮鎴烽摱琛 蹇呭~锛氬惁 瑙侀摱琛屽瓧鍏 + */ + private String khyh; + /** + * 寮鎴烽摱琛岀渷浠 蹇呭~锛氬惁 瑙佸紑鎴烽摱琛岀渷浠藉瓧鍏 + */ + private String khyhsfmz; + /** + * 閾惰璐﹀彿 蹇呭~锛氬惁 濡傛灉khyh锛宬hyhsfmz,yhzh 鏈変竴椤归夋嫨濉啓浜嗛偅涔堝叾浠栦袱椤逛篃闇瑕佸~鍐 + */ + private String yhzh; + /** + * 灞呬綇鐪佷唤 蹇呭~锛氬惁 涓枃锛屼緥濡傛禉姹熺渷 + */ + private String lxdz_sheng; + /** + * 灞呬綇鍩庡競 蹇呭~锛氬惁 涓枃锛屼緥濡傛澀宸炲競 + */ + private String lxdz_shi; + /** + * 灞呬綇鍖哄幙 蹇呭~锛氬惁 涓枃锛屼緥濡傛花姹熷尯 + */ + private String lxdz_qx; + /** + * 灞呬綇琛楅亾 蹇呭~锛氬惁 涓枃锛屾郸娌胯閬 + */ + private String lxdz_jd; + /** + * 灞呬綇璇︾粏鍦板潃 蹇呭~锛氬惁 + */ + private String lxdz; + /** + * 鎴风睄鐪佷唤 蹇呭~锛氬惁 涓枃锛屼緥濡傛禉姹熺渷 + */ + private String hjszd_sheng; + /** + * 鎴风睄鍩庡競 蹇呭~锛氬惁 涓枃锛屼緥濡傛澀宸炲競 + */ + private String hjszd_shi; + /** + * 鎴风睄鍖哄幙 蹇呭~锛氬惁 涓枃锛屼緥濡傛花姹熷尯 + */ + private String hjszd_qx; + /** + * 鎴风睄琛楅亾 蹇呭~锛氬惁 涓枃锛屾郸娌胯閬 + */ + private String hjszd_jd; + /** + * 鎴风睄璇︾粏鍦板潃 蹇呭~锛氬惁 + */ + private String hjszd_xxdz; + /** + * 澶囨敞 蹇呭~锛氬惁 + */ + private String bz; + /** + * 鍑虹敓鍦 蹇呭~锛氭潯浠跺繀濉 澶栫睄浜哄憳蹇呭~锛屽~鍐欏嚭鐢熷湴鍥藉锛堝湴鍖猴級锛岃鍥界睄瀛楀吀 + */ + private String csd; + /** + * 娑夌◣浜嬬敱 蹇呭~锛氭潯浠跺繀濉 澶栫睄浜哄憳蹇呭~锛屽涓椂鐢ㄩ楀彿鍒嗗壊; + * 浠昏亴鍙楅泧 鎻愪緵涓存椂鍔冲姟 杞璐骇 浠庝簨鎶曡祫鍜岀粡钀ユ椿鍔 鍏朵粬 + */ + private String sssx; + /** + * 棣栨鍏ュ鏃堕棿 蹇呭~锛氭潯浠跺繀濉 璇佷欢绫诲瀷涓烘腐婢冲眳姘戞潵寰鍐呭湴閫氳璇併佹腐婢冲眳姘戝眳浣忚瘉銆佸彴婀惧眳姘戞潵寰澶ч檰閫氳璇併佸彴婀惧眳姘戝眳浣忚瘉銆佸鍥芥姢鐓с佸鍥戒汉姘镐箙灞呯暀韬唤璇併佸鍥戒汉鏉ュ崕宸ヤ綔璁稿彲璇丄銆佸鍥戒汉鏉ュ崕宸ヤ綔璁稿彲璇丅銆佸鍥戒汉鏉ュ崕宸ヤ綔璁稿彲璇丆鏃讹紝涓斾换鑱屽彈闆囩被鍨嬮夋嫨闆囧憳鏃跺繀濉紝鏍煎紡YYYY-MM-DD + */ + private String scrjsj; + /** + * 棰勮绂诲鏃堕棿 蹇呭~锛氭潯浠跺繀濉 璇佷欢绫诲瀷涓烘腐婢冲眳姘戞潵寰鍐呭湴閫氳璇併佹腐婢冲眳姘戝眳浣忚瘉銆佸彴婀惧眳姘戞潵寰澶ч檰閫氳璇併佸彴婀惧眳姘戝眳浣忚瘉銆佸鍥芥姢鐓с佸鍥戒汉姘镐箙灞呯暀韬唤璇併佸鍥戒汉鏉ュ崕宸ヤ綔璁稿彲璇丄銆佸鍥戒汉鏉ュ崕宸ヤ綔璁稿彲璇丅銆佸鍥戒汉鏉ュ崕宸ヤ綔璁稿彲璇丆鏃讹紝涓斾换鑱屽彈闆囩被鍨嬮夋嫨闆囧憳鏃跺繀濉紝鏍煎紡YYYY-MM-DD + */ + private String yjljsj; + /** + * 鑱旂郴鍦扮渷浠 蹇呭~锛氬惁 + */ + private String wjrlxdz_sheng; + /** + * 鑱旂郴鍦板煄甯 蹇呭~锛氬惁 + */ + private String wjrlxdz_shi; + /** + * 鑱旂郴鍦板尯鍘 蹇呭~锛氬惁 + */ + private String wjrlxdz_qx; + /** + * 鑱旂郴鍦拌閬 蹇呭~锛氬惁 + */ + private String wjrlxdz_jd; + /** + * 鑱旂郴鍦拌缁嗗湴鍧 蹇呭~锛氬惁 + */ + private String wjrlxdz_xxdz; + /** + * 涓枃鍚 蹇呭~锛氬惁 璇佷欢绫诲瀷涓哄鍥芥姢鐓с佸鍥戒汉姘镐箙灞呯暀韬唤璇併佸鍥戒汉宸ヤ綔璁稿彲璇侊紙A绫伙級銆佸鍥戒汉宸ヤ綔璁稿彲璇侊紙B绫伙級銆佸鍥戒汉宸ヤ綔璁稿彲璇侊紙C绫伙級鏃朵笉鍙~鍐欙紝鍏朵粬璇佷欢绫诲瀷鍙~鍐欍傚鏋滄湁濉啓蹇呴』涓轰腑鏂囥 + */ + private String xmzw; + + } + + @Data + public static class zcgzxj { + /** + * 姝e父宸ヨ祫钖噾鍒楄〃 蹇呭~锛氭槸 鍙傝冪患鍚堟墍寰-姝e父宸ヨ祫钖噾 + */ + private List zcgzxjlb; + /** + * 涓婃湀姝e父宸ヨ祫钖噾鍒楄〃 蹇呭~锛氬惁 鍙傝冪患鍚堟墍寰-姝e父宸ヨ祫钖噾 + * 1銆佽嫢褰撴湀宸茬粡浠f姤瀹屾瘯锛堝綋鏈堜唬鎶ヤ笂鏈堟墍寰楋級锛岄偅涔堣兘浠庡鎴风涓嬪彂绱鍒颁笂鏈堢殑鎵寰楁暟鎹紝姝ゆ椂浼犵粰瀹㈡埛绔殑鎵寰楁湀浠戒负褰撳墠鏈堜唤 + * 2銆佽嫢褰撴湀鏈唬鎶ュ畬姣曪紙褰撴湀浠f姤涓婃湀鎵寰楋級锛岄偅涔堣兘浠庡鎴风涓嬪彂绱鍒颁笂鏈-1鐨勬墍灞炴暟鎹紝姝ゆ椂浼犵粰瀹㈡埛绔殑鎵寰楁湀浠戒负褰撴湀鏈堜唤-1 + * 3銆佷笂鏈堟甯稿伐璧勮柂閲戝垪琛ㄤ笌鏈湀姝e父宸ヨ祫钖噾鍒楄〃闇瑕佷竴涓瀵瑰簲 + */ + private List syzcgzxjlb; + /** + * 浜哄憳鍒楄〃 蹇呭~锛氭槸 瑙佷汉鍛樺垪琛 + */ + private List rylb; + /** + * 姝e父宸ヨ祫钖噾鏄惁闇瑕佷笅杞戒笓椤 蹇呭~锛氭槸 + * 1:闇瑕佷笓椤规槑缁嗚繘琛屼笓椤硅绠 + * 0:涓嶉渶瑕佷笓椤规槑缁嗚繘琛屼笓椤硅绠 + * 瑙侀檮褰曚笓椤逛紶鍊肩瓥鐣 + */ + private String zcgzxjsfxyzx; + /** + * 鏄惁宸蹭唬鎶ヤ笂鏈堟甯稿伐璧勮柂閲 蹇呭~锛氬惁 + * 浠呭闇瑕佽绠楁甯稿伐璧勬墍寰楃敓鏁堬紝锛堥粯璁や负1锛 + * 1: 宸蹭唬鎶ヤ笂鏈堟甯稿伐璧勮柂閲 + * 0: 鏈唬鎶ヤ笂鏈堟甯稿伐璧勮柂閲戯紙涓や釜鏈堢畻绋庝紶鍏0锛 + */ + private String syysfsyzcgzxj; + /** + * 鏀寔浼犲叆涓撻」 蹇呭~锛氬惁 + * 浠呭湪syysfsyzcgzxj=0鏃跺欑敓鏁堬紝榛樿鍊=0 + * 0: 涓嶆敮鎸佺敤鎴蜂紶涓撻」锛屼娇鐢ㄥ疄鏃朵笅杞界殑涓撻」锛岄粯璁ゅ + * 1: 鏀寔浼犱笂鏈堝綋鏈堢殑涓撻」 + * 2锛氭敮鎸佷紶鎴鑷充笂鏈堜负姝㈢殑绱涓撻」 + */ + private String zcgzxjsfcrzx; + /** + * 褰撳墠绠楃◣鏈堟甯稿伐璧勮柂閲戞槸鍚︿紶鍏ヤ笓椤圭疮璁 蹇呭~锛氬惁 + * 浠呭褰撳墠绠楃◣鏈堟暟鎹敓鏁堬紝榛樿涓0 + * 锛堝鏋滄槸绂荤嚎绠楄柂锛寊cgzxjsfcrlj=1鏃朵細寮哄埗浣跨敤鏈湴鏁版嵁杩涜璁$畻锛 + * 0锛氫娇鐢ㄤ笅杞借绠椾笓椤圭疮璁 + * 1锛氫娇鐢ㄤ紶鍏ョ殑涓撻」绱鍊 + * 2: 涓嶅疄鏃朵笅杞戒笓椤癸紝浣跨敤鏈湴鏁版嵁杩涜璁$畻 + * 瑙侀檮褰曚笓椤逛紶鍊肩瓥鐣 + */ + private String zcgzxjsfcrlj; + + /** + * 鎵规鍙 蹇呭~锛氬惁 + * 榛樿涓嶅~涓篘ull,琛ㄧず涓鏈堜竴娆$畻钖紱 + * 鍏朵粬鏁存暟鍊硷紙濡1銆2銆3绛夛級涓轰竴鏈堝娆″彂钖畻钖殑鎵规 + */ + private Integer pch; + /** + * 鏄惁瀵煎叆涓婃湀姝e父宸ヨ祫钖噾(涓鏈堝娆″彂钖) 蹇呭~锛氬惁 + * 浠呭湪涓鏈堝娆$畻绋庡満鏅腑浣跨敤 0锛氫笉瀵煎叆涓婃湀钖噾 1锛氬鍏ヤ笂鏈堣柂璧勶紙榛樿涓1锛屽鍏ヤ笂鏈堣柂璧勶級 + */ + private String sfdrsyzcgzxj; + /** + * 鏄惁鍚屾椂浜哄憳鎶ラ 蹇呭~锛氬惁 0锛 浜哄憳涓嶆姤閫侊紱 + */ + private String sfrysb; + /** + * 骞撮噾/浣忔埧鍏Н閲戜笂闄愰夐」 蹇呭~锛氬惁 + * 1:涓嶅鐞嗭紙榛樿锛 + * 2:浣跨敤骞撮噾/鍏Н閲戜笂闄愶紙瓒呰繃涓婇檺浣跨敤涓婇檺鍊硷紝涓嶈秴杩 鍒欎娇鐢ㄥ師鏉ョ殑鍊硷級 + * 3:骞撮噾浣跨敤涓婇檺锛屽叕绉噾鎴彇瓒呬笂闄愰儴鍒嗙撼鍏ユ敹鍏ラ + * 4.骞撮噾浣跨敤涓婇檺锛屾埅鍙栧叕绉噾瓒呰繃涓婇檺鐨勯儴鍒嗗噺灏戞敹鍏ラ + */ + private String njzfgjjsxxx; + /** + * 浼佷笟涓嬭浇寰鏈熸爣蹇 蹇呭~锛氬惁 + * 1:鎸夌収浼佷笟缁村害涓嬭浇锛堥粯璁わ級 0:鎸夌収閮ㄩ棬缁村害涓嬭浇(浼佷笟鍦ㄥ眬绔妗堝垎閮ㄩ棬,闇瑕佷紶鍏0) + */ + private String qyxzwqbz; + + /** + * 澶氭湀绠楃◣锛屾槸鍚︿娇鐢ㄤ笂鏈堜紶鍏ョ殑搴旇ˉ閫绋庨 蹇呭~锛氬惁 + * 1. 涓嶄紶鎴栦紶绌(榛樿涓哄惁)鎴栬呬紶鈥滃惁鈥,涓庡綋鍓嶅鏈堢畻绋庨昏緫涓鑷淬2. 浼犫滄槸鈥,澶氭湀绠楃◣鏃跺彇涓婃湀钖祫鏁版嵁浼犲叆鐨勫簲琛ラ绋庨鍙備笌绠楃◣銆 + */ + private String sfsysyybtse; + + /** + * 涓汉鍏昏侀噾绛栫暐 蹇呭~锛氬惁 + * 0: 涓嶄紶鎴栦紶绌烘垨鑰呬紶鈥0鈥濆垯浼氬疄鏃朵笅杞戒釜浜哄吇鑰侀噾 1: 浼犫1鈥濆垯浣跨敤鏈湴鐨勪釜浜哄吇鑰侀噾 2: 浼犫2鈥濆垯浣跨敤浼犲叆鐨勭疮璁′釜浜哄吇鑰侀噾 + */ + private String gryljcl; + + /** + * 涓婃湀涓汉鍏昏侀噾绛栫暐 蹇呭~锛氬惁 + * 涓嶄紶鎴栦紶绌鸿祴鍊奸粯璁ゅ硷紝榛樿鍊间负1 + * 0:浼犫0鈥濆垯浼氬疄鏃朵笅杞戒釜浜哄吇鑰侀噾 1: 浼犫1鈥濆垯浣跨敤鏈湴鐨勪釜浜哄吇鑰侀噾 2: 浼犫2鈥濆垯浣跨敤浼犲叆鐨勭疮璁′釜浜哄吇鑰侀噾 + */ + private String sygryljcl; + + @Data + public static class zcgz { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭潯浠跺繀濉 褰搒ygs涓虹┖鎴栬呯瓑浜庡叕寮5鏃跺繀濉 + */ + private BigDecimal sre; + /** + * 閫傜敤鍏紡 蹇呭~锛氬惁 瑙併婂伐璧勬敹鍏ュ叕寮忓瓧鍏搞 + * 閲嶇偣璇存槑锛氫竴鑸甯稿伐璧勮柂閲戞墍寰椾笉鐢ㄤ紶閫傜敤鍏紡锛屽彧闇瑕佷紶鍏ユ敹鍏ラ锛屽氨鍙互杩涜璁$畻锛涗篃鍙互浼犻傜敤鍏紡锛岀郴缁熷氨浼氭寜鐓ч傜敤鍏紡杩涜璁$畻 褰撹瘉浠剁被鍨嬩负灞呮皯韬唤璇佹椂锛岄傜敤鍏紡榛樿涓虹┖ + */ + private String sygs; + /** + * 澧冨唴宸ヤ綔澶╂暟 蹇呭~锛氭潯浠跺繀濉 姝e父宸ヨ祫钖噾浼犱簡閫傜敤鍏紡鎵嶉渶瑕佹潯浠跺繀褰曘傚綋sygs瀛楁濉煎苟涓斾笉绛変簬鍏紡5鏃讹紝璇ュ瓧娈靛繀濉,鍙互涓哄皬鏁 灏忔暟浣0.5澶 涓嶈兘涓や綅灏忔暟锛屽彧鑳芥槸1鎴栬1.0涓嶈兘1.00 + */ + private BigDecimal jngzts; + /** + * 澧冨宸ヤ綔澶╂暟 蹇呭~锛氭潯浠跺繀濉 姝e父宸ヨ祫钖噾浼犱簡閫傜敤鍏紡鎵嶉渶瑕佹潯浠跺繀褰曘傚綋sygs瀛楁濉煎苟涓斾笉绛変簬鍏紡5鏃讹紝璇ュ瓧娈靛繀濉,鍙互涓哄皬鏁 灏忔暟浣0.5澶 涓嶈兘涓や綅灏忔暟锛屽彧鑳芥槸1鎴栬1.0涓嶈兘1.00 + */ + private BigDecimal jwgzts; + /** + * 澧冨唴鏀粯 蹇呭~锛氭潯浠跺繀濉 姝e父宸ヨ祫钖噾浼犱簡閫傜敤鍏紡鎵嶉渶瑕佹潯浠跺繀褰曘傚綋sygs瀛楁濉煎苟涓斾笉绛変簬鍏紡5鏃讹紝璇ュ瓧娈靛繀濉 + */ + private BigDecimal jnzf; + /** + * 澧冨鏀粯 蹇呭~锛氭潯浠跺繀濉 姝e父宸ヨ祫钖噾浼犱簡閫傜敤鍏紡鎵嶉渶瑕佹潯浠跺繀褰曘傚綋sygs瀛楁濉煎苟涓斾笉绛変簬鍏紡5鏃讹紝璇ュ瓧娈靛繀濉 + */ + private BigDecimal jwzf; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍩烘湰鍏昏佷繚闄 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jbylaobxf; + /** + * 鍩烘湰鍖荤枟淇濋櫓 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jbylbxf; + /** + * 澶变笟淇濋櫓 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal sybxf; + /** + * 浣忔埧鍏Н閲 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal zfgjj; + /** + * 骞撮噾 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal nj; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syjkbx; + /** + * 绋庡欢鍏昏佷繚闄 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syylbx; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩紝濉啓鍏朵粬锛屼竴瀹 + */ + private BigDecimal qt; + /** + * 澶囨敞 蹇呭~锛氭潯浠跺繀濉 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉 + */ + private String bz; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氬惁 鏃犲垯濉0锛屾寜鐓х◣娉曚互鍙婄浉鍏虫硶瑙勩佹斂绛栬瀹氾紝鍙互鍦ㄧ◣鍓嶆墸闄ょ殑鎹愯禒棰 + */ + private BigDecimal zykcjze; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 姝e父宸ヨ祫钖噾锛 + */ + private String sdxm; + /** + * 瀛愬コ鏁欒偛鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=1鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal znjyzc; + /** + * 缁х画鏁欒偛鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=1鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal jxjyzc; + /** + * 浣忔埧绉熼噾鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=1鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal zfzjzc; + /** + * 鎴垮眿璐锋鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=1鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal zfdklxzc; + /** + * 璧″吇鑰佷汉鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=1鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal sylrzc; + /** + * 3宀佷互涓嬪┐骞煎効鐓ф姢鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=1鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal yyezhzc; + /** + * 绱瀛愬コ鏁欒偛鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=2鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal ljznjyzc; + /** + * 绱缁х画鏁欒偛鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=2鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal ljjxjyzc; + /** + * 绱浣忔埧绉熼噾鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=2鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal ljzfzjzc; + /** + * 绱鎴垮眿璐锋鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=2鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal ljzfdklxzc; + /** + * 绱璧″吇鑰佷汉鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=2鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal ljsylrzc; + /** + * 绱3宀佷互涓嬪┐骞煎効鐓ф姢鏀嚭 蹇呭~锛氭潯浠跺繀濉 鍦▃cgzxjsfcrzx=2鏃跺繀浼狅紝榛樿涓嶄紶 + */ + private BigDecimal ljyyezhzc; + /** + * 绱涓汉鍏昏侀噾 蹇呭~锛氬惁 鍦╣ryljcl=2鏃朵紶鍊硷紝榛樿涓嶄紶 + */ + private BigDecimal ljgrylj; + /** + * 绱涓汉鍏昏侀噾鏍¢獙鐮 蹇呭~锛氬惁 + * 鍦╣ryljcl=2鏃朵紶鍊硷紝榛樿涓嶄紶 鍦╨jgrylj浼犲兼椂鏍¢獙鏄惁鍚堟硶 ljgrylj浼0鏃朵笉鏍¢獙 + */ + private String ljgryljjym; + /** + * 搴旇ˉ閫绋庨 蹇呭~锛氬惁 閰嶅悎sfsysyybtse瀛楁浣跨敤 + */ + private BigDecimal ybtse; + } + } + + @Data + public static class qnycxjjss { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 鎵规鍙 蹇呭~锛氬惁 榛樿涓嶅~涓篘ull,琛ㄧず涓鏈堜竴娆$畻钖紱 鍏朵粬鏁存暟鍊硷紙濡1銆2銆3绛夛級涓轰竴鏈堝娆″彂钖畻钖殑鎵规 + */ + private Integer pch; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭槸 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal sre; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal zykcjze; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 澶囨敞 蹇呭~锛氥鏉′欢蹇呭~ 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 濉啓锛氬叏骞翠竴娆℃у閲戞敹鍏ワ紱 + */ + private String sdxm; + } + + @Data + public static class gcsd { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭槸 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal sre; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 澶囨敞 蹇呭~锛氥鏉′欢蹇呭~ 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 濉啓锛氱ǹ閰墍寰楋紱 + */ + private String sdxm; + } + + @Data + public static class lwbc { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭槸 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal sre; + /** + * 褰撴湡鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syjkbx; + /** + * 绋庡欢鍏昏佷繚闄 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syylbx; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 澶囨敞 蹇呭~锛氭潯浠跺繀濉 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鍏佽鎵i櫎绋庤垂 蹇呭~锛氬惁 + */ + private BigDecimal yxkcsf; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 濉啓锛氫竴鑸姵鍔℃姤閰墍寰楋紱 + */ + private String sdxm; + } + + @Data + public static class jcldhtycxbcj { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭槸 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal sre; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 澶囨敞 蹇呭~锛氥鏉′欢蹇呭~ 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal zykcjze; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 濉啓锛氳В闄ゅ姵鍔ㄥ悎鍚屼竴娆℃цˉ鍋块噾锛 + */ + private String sdxm; + + } + + @Data + public static class bxyxy { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭潯浠跺繀濉 褰搒ygs涓虹┖鎴栬呯瓑浜庡叕寮5鏃跺繀濉 + */ + private BigDecimal sre; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氭槸 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓 蹇呭~锛氭槸 鏃犲垯濉0 + */ + private BigDecimal syjkbx; + /** + * 绋庡欢鍏昏佷繚闄 蹇呭~锛氭槸 鏃犲垯濉0 + */ + private BigDecimal syylbx; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氬惁 鏃犲垯濉0锛屾寜鐓х◣娉曚互鍙婄浉鍏虫硶瑙勩佹斂绛栬瀹氾紝鍙互鍦ㄧ◣鍓嶆墸闄ょ殑鎹愯禒棰 + */ + private BigDecimal zykcjze; + /** + * 鍏朵粬 蹇呭~锛氭槸 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 澶囨敞 蹇呭~锛氭潯浠跺繀濉 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鍑忓厤绋庨 蹇呭~锛氭槸 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 绱涓汉鍏昏侀噾 蹇呭~锛氬惁 鍦╣ryljcl=2鏃朵紶鍊硷紝榛樿涓嶄紶 + */ + private BigDecimal ljgrylj; + /** + * 绱涓汉鍏昏侀噾鏍¢獙鐮 蹇呭~锛氬惁 + * 鍦╣ryljcl=2鏃朵紶鍊硷紝榛樿涓嶄紶 鍦╨jgrylj浼犲兼椂鏍¢獙鏄惁鍚堟硶 ljgrylj浼0鏃朵笉鏍¢獙 + */ + private String ljgryljjym; + + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 淇濋櫓钀ラ攢鍛樹剑閲戞敹鍏ワ紱 + */ + private String sdxm; + /** + * 鍏佽鎵i櫎绋庤垂 蹇呭~锛氬惁 + */ + private BigDecimal yxkcsf; + /** + * 搴旇ˉ閫绋庨 蹇呭~锛氬惁 閰嶅悎sfsysyybtse瀛楁浣跨敤 + */ + private BigDecimal ybtse; + } + + @Data + public static class zqjjr { + /** + * 璇佸埜缁忕邯浜烘墍寰楄柂閲戝垪琛 蹇呭~锛歯ull 鍙傝冪患鍚堟墍寰-璇佸埜缁忕邯浜哄垪琛 + */ + private List zqjjrsdlb; + /** + * 涓婃湀璇佸埜缁忕邯浜哄垪琛 蹇呭~锛歯ull 鍙傝冪患鍚堟墍寰-璇佸埜缁忕邯浜哄垪琛 + */ + private List syzqjjrlb; + /** + * 浜哄憳鍒楄〃 蹇呭~锛歯ull 瑙佷紒涓氫汉鍛樺垪琛 + */ + private List rylb; + /** + * 鎵规鍙 蹇呭~锛氬惁 + * 榛樿涓嶅~涓篘ull,琛ㄧず涓鏈堜竴娆$畻钖紱 + * 鍏朵粬鏁存暟鍊硷紙濡1銆2銆3绛夛級涓轰竴鏈堝娆″彂钖畻钖殑鎵规 + */ + private Integer pch; + /** + * 鏄惁瀵煎叆涓婃湀姝e父宸ヨ祫钖噾(涓鏈堝娆″彂钖) 蹇呭~锛氬惁 + * 浠呭湪涓鏈堝娆$畻绋庡満鏅腑浣跨敤 + * 0锛氫笉瀵煎叆涓婃湀钖噾 1锛氬鍏ヤ笂鏈堣柂璧 锛堥粯璁や负1锛屽鍏ヤ笂鏈堣柂璧勶級 + */ + private String sfdrsyzcgzxj; + /** + * 鏄惁鍚屾椂浜哄憳鎶ラ 蹇呭~锛氬惁 0锛 浜哄憳涓嶆姤閫侊紱 1锛 浜哄憳鎶ラ 锛堥粯璁や负1锛岀畻绋庡墠鍚屾椂澶勭悊浜哄憳鎶ラ侊紝绂荤嚎绠楄柂妯″紡鏃讹紝涓嶄細杩涜浜哄憳鎶ラ侊級 + */ + private String sfrysb; + /** + * 鏄惁宸蹭唬鎶ヤ笂鏈堣柂閲 蹇呭~锛氬惁 锛堥粯璁や负1锛 1: 宸蹭唬鎶ヤ笂鏈堟甯稿伐璧勮柂閲 0: 鏈唬鎶ヤ笂鏈堟甯稿伐璧勮柂閲戯紙涓や釜鏈堢畻绋庝紶鍏0锛 + */ + private String syysfsyzcgzxj; + /** + * 浼佷笟涓嬭浇寰鏈熸爣蹇 蹇呭~锛氬惁 1:鎸夌収浼佷笟缁村害涓嬭浇锛堥粯璁わ級 0:鎸夌収閮ㄩ棬缁村害涓嬭浇(浼佷笟鍦ㄥ眬绔妗堝垎閮ㄩ棬,闇瑕佷紶鍏0) + */ + private String qyxzwqbz; + /** + * 澶氭湀绠楃◣锛屾槸鍚︿娇鐢ㄤ笂鏈堜紶鍏ョ殑搴旇ˉ閫绋庨 蹇呭~锛氬惁 + * 1. 涓嶄紶鎴栦紶绌(榛樿涓哄惁)鎴栬呬紶鈥滃惁鈥,涓庡綋鍓嶅鏈堢畻绋庨昏緫涓鑷淬 2. 浼犫滄槸鈥,澶氭湀绠楃◣鏃跺彇涓婃湀钖祫鏁版嵁浼犲叆鐨勫簲琛ラ绋庨鍙備笌绠楃◣銆 + */ + private String sfsysyybtse; + /** + * 涓汉鍏昏侀噾绛栫暐 蹇呭~锛氬惁 + * 0: 涓嶄紶鎴栦紶绌烘垨鑰呬紶鈥0鈥濆垯浼氬疄鏃朵笅杞戒釜浜哄吇鑰侀噾 1: 浼犫1鈥濆垯浣跨敤鏈湴鐨勪釜浜哄吇鑰侀噾 2: 浼犫2鈥濆垯浣跨敤浼犲叆鐨勭疮璁′釜浜哄吇鑰侀噾 + */ + private String gryljcl; + /** + * 涓婃湀涓汉鍏昏侀噾绛栫暐 蹇呭~锛氬惁 + * 涓嶄紶鎴栦紶绌鸿祴鍊奸粯璁ゅ硷紝榛樿鍊间负1 0:浼犫0鈥濆垯浼氬疄鏃朵笅杞戒釜浜哄吇鑰侀噾 1: 浼犫1鈥濆垯浣跨敤鏈湴鐨勪釜浜哄吇鑰侀噾 2: 浼犫2鈥濆垯浣跨敤浼犲叆鐨勭疮璁′釜浜哄吇鑰侀噾 + */ + private String sygryljcl; + + + @Data + public static class zqjjrsd { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭潯浠跺繀濉 褰搒ygs涓虹┖鎴栬呯瓑浜庡叕寮5鏃跺繀濉 + */ + private BigDecimal sre; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syjkbx; + /** + * 绋庡欢鍏昏佷繚闄 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syylbx; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氬惁 鏃犲垯濉0锛屾寜鐓х◣娉曚互鍙婄浉鍏虫硶瑙勩佹斂绛栬瀹氾紝鍙互鍦ㄧ◣鍓嶆墸闄ょ殑鎹愯禒棰 + */ + private BigDecimal zykcjze; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 澶囨敞 蹇呭~锛氭潯浠跺繀濉 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 绱涓汉鍏昏侀噾 蹇呭~锛氬惁 鍦╣ryljcl=2鏃朵紶鍊硷紝榛樿涓嶄紶 + */ + private BigDecimal ljgrylj; + /** + * 绱涓汉鍏昏侀噾鏍¢獙鐮 蹇呭~锛氬惁 + * 鍦╣ryljcl=2鏃朵紶鍊硷紝榛樿涓嶄紶 鍦╨jgrylj浼犲兼椂鏍¢獙鏄惁鍚堟硶 ljgrylj浼0鏃朵笉鏍¢獙 + */ + private String ljgryljjym; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 璇佸埜缁忕邯浜轰剑閲戞敹鍏ワ紱 + */ + private String sdxm; + /** + * 鍏佽鎵i櫎绋庤垂 蹇呭~锛氬惁 + */ + private BigDecimal yxkcsf; + /** + * 搴旇ˉ閫绋庨 蹇呭~锛氬惁 閰嶅悎sfsysyybtse瀛楁浣跨敤 + */ + private BigDecimal ybtse; + } + } + + @Data + public static class qtlxlwbc { + /** + * 鍏朵粬杩炵画鍔冲姟鎶ラ叕鎵寰楀垪琛 蹇呭~锛歯ull 鍙傝冪患鍚堟墍寰-鍏朵粬杩炵画鍔冲姟鎶ラ叕鎵寰楀垪琛 + */ + private List qtlxlwbclb; + /** + * 涓婃湀鍏朵粬杩炵画鍔冲姟鎶ラ叕鎵寰楀垪琛 蹇呭~锛歯ull 鍙傝冪患鍚堟墍寰-鍏朵粬杩炵画鍔冲姟鎶ラ叕鎵寰楀垪琛 + */ + private List syqtlxlwbclb; + /** + * 浜哄憳鍒楄〃 蹇呭~锛歯ull 瑙佷紒涓氫汉鍛樺垪琛 + */ + private List rylb; + /** + * 鏄惁鍚屾椂浜哄憳鎶ラ 蹇呭~锛氬惁 0锛 浜哄憳涓嶆姤閫侊紱1锛 浜哄憳鎶ラ 榛樿涓1锛岀畻绋庡墠鍚屾椂澶勭悊浜哄憳鎶ラ侊紝绂荤嚎绠楄柂妯″紡鏃讹紝涓嶄細杩涜浜哄憳鎶ラ侊級 + */ + private String sfrysb; + /** + * 鏄惁宸蹭唬鎶ヤ笂钖噾 蹇呭~锛氬惁 锛堥粯璁や负1锛 1: 宸蹭唬鎶ヤ笂鏈堟甯稿伐璧勮柂閲 0: 鏈唬鎶ヤ笂鏈堟甯稿伐璧勮柂閲戯紙涓や釜鏈堢畻绋庯級 + */ + private String syysfsyzcgzxj; + /** + * 浼佷笟涓嬭浇寰鏈熸爣蹇 蹇呭~锛氬惁 1:鎸夌収浼佷笟缁村害涓嬭浇锛堥粯璁わ級 0:鎸夌収閮ㄩ棬缁村害涓嬭浇(浼佷笟鍦ㄥ眬绔妗堝垎閮ㄩ棬,闇瑕佷紶鍏0) + */ + private String qyxzwqbz; + /** + * 鎵规鍙 蹇呭~锛氬惁 榛樿涓嶅~涓篘ull,琛ㄧず涓鏈堜竴娆$畻钖紱 鍏朵粬鏁存暟鍊硷紙濡1銆2銆3绛夛級涓轰竴鏈堝娆″彂钖畻钖殑鎵规 + */ + private Integer pch; + /** + * 澶氭湀绠楃◣锛屾槸鍚︿娇鐢ㄤ笂鏈堜紶鍏ョ殑搴旇ˉ閫绋庨 蹇呭~锛氬惁 1. 涓嶄紶鎴栦紶绌(榛樿涓哄惁)鎴栬呬紶鈥滃惁鈥,涓庡綋鍓嶅鏈堢畻绋庨昏緫涓鑷淬 2. 浼犫滄槸鈥,澶氭湀绠楃◣鏃跺彇涓婃湀钖祫鏁版嵁浼犲叆鐨勫簲琛ラ绋庨鍙備笌绠楃◣銆 + */ + private String sfsysyybtse; + /** + * 涓汉鍏昏侀噾绛栫暐 蹇呭~锛氬惁 0: 涓嶄紶鎴栦紶绌烘垨鑰呬紶鈥0鈥濆垯浼氬疄鏃朵笅杞戒釜浜哄吇鑰侀噾 1: 浼犫1鈥濆垯浣跨敤鏈湴鐨勪釜浜哄吇鑰侀噾 2: 浼犫2鈥濆垯浣跨敤浼犲叆鐨勭疮璁′釜浜哄吇鑰侀噾 + */ + private String gryljcl; + /** + * 涓婃湀涓汉鍏昏侀噾绛栫暐 蹇呭~锛氬惁 涓嶄紶鎴栦紶绌鸿祴鍊奸粯璁ゅ硷紝榛樿鍊间负1 0:浼犫0鈥濆垯浼氬疄鏃朵笅杞戒釜浜哄吇鑰侀噾 1: 浼犫1鈥濆垯浣跨敤鏈湴鐨勪釜浜哄吇鑰侀噾 2: 浼犫2鈥濆垯浣跨敤浼犲叆鐨勭疮璁′釜浜哄吇鑰侀噾 + */ + private String sygryljcl; + + @Data + public static class qtlxlw { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭潯浠跺繀濉 褰搒ygs涓虹┖鎴栬呯瓑浜庡叕寮5鏃跺繀濉 + */ + private BigDecimal sre; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syjkbx; + /** + * 绋庡欢鍏昏佷繚闄 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syylbx; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氬惁 鏃犲垯濉0锛屾寜鐓х◣娉曚互鍙婄浉鍏虫硶瑙勩佹斂绛栬瀹氾紝鍙互鍦ㄧ◣鍓嶆墸闄ょ殑鎹愯禒棰 + */ + private BigDecimal zykcjze; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 澶囨敞 蹇呭~锛氭潯浠跺繀濉 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 绱涓汉鍏昏侀噾 蹇呭~锛氬惁 鍦╣ryljcl=2鏃朵紶鍊硷紝榛樿涓嶄紶 + */ + private BigDecimal ljgrylj; + /** + * 绱涓汉鍏昏侀噾鏍¢獙鐮 蹇呭~锛氬惁 鍦╣ryljcl=2鏃朵紶鍊硷紝榛樿涓嶄紶 鍦╨jgrylj浼犲兼椂鏍¢獙鏄惁鍚堟硶 ljgrylj浼0鏃朵笉鏍¢獙 + */ + private String ljgryljjym; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 璇佸埜缁忕邯浜轰剑閲戞敹鍏ワ紱 + */ + private String sdxm; + /** + * 鍏佽鎵i櫎绋庤垂 蹇呭~锛氬惁 + */ + private BigDecimal yxkcsf; + /** + * 搴旇ˉ閫绋庨 蹇呭~锛氬惁 閰嶅悎sfsysyybtse瀛楁浣跨敤 + */ + private BigDecimal ybtse; + } + } + + @Data + public static class txq { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭槸 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal sre; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 澶囨敞 蹇呭~锛氥鏉′欢蹇呭~ 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 濉啓锛氱壒璁告潈浣跨敤璐规墍寰 + */ + private String sdxm; + } + + @Data + public static class grgqjl { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭槸 + */ + private BigDecimal sre; + /** + * 绱鏀跺叆棰濓紙涓嶅惈鏈湡锛 蹇呭~锛氬惁 濡傛灉涓簄ull锛屽垯浣跨敤鏈湴鐢虫姤鏁版嵁绱鑷姩濉厖 + */ + private BigDecimal ljsre; + /** + * 绱鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 澶囨敞 蹇呭~锛氭潯浠跺繀濉 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal zykcjze; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 閫傜敤鍏紡 蹇呭~锛氬惁 瑙併婂伐璧勬敹鍏ュ叕寮忓瓧鍏搞 + */ + private String sygs; + /** + * 绱宸叉墸缂寸◣棰 蹇呭~锛氬惁 濡傛灉涓簄ull锛屽垯浣跨敤鏈湴鐢虫姤鏁版嵁绱鑷姩濉厖 + */ + private BigDecimal ykjse; + /** + * 澧冨唴宸ヤ綔澶╂暟 蹇呭~锛氭潯浠跺繀濉 + * 褰搒ygs瀛楁濉煎苟涓斾笉绛変簬鍏紡5鏃讹紝璇ュ瓧娈靛繀濉 涓嶈兘涓や綅灏忔暟锛屽彧鑳芥槸1鎴栬1.0涓嶈兘1.00 + */ + private BigDecimal jngzts; + /** + * 澧冨宸ヤ綔澶╂暟 蹇呭~锛氭潯浠跺繀濉 + * 褰搒ygs瀛楁濉煎苟涓斾笉绛変簬鍏紡5鏃讹紝璇ュ瓧娈靛繀濉 + * 涓嶈兘涓や綅灏忔暟锛屽彧鑳芥槸1鎴栬1.0涓嶈兘1.00 + */ + private BigDecimal jwgzts; + /** + * 澧冨唴鏀粯 蹇呭~锛氭潯浠跺繀濉 褰搒ygs瀛楁濉煎苟涓斾笉绛変簬鍏紡5鏃讹紝璇ュ瓧娈靛繀濉 + */ + private BigDecimal jnzf; + /** + * 澧冨鏀粯 蹇呭~锛氭潯浠跺繀濉 褰搒ygs瀛楁濉煎苟涓斾笉绛変簬鍏紡5鏃讹紝璇ュ瓧娈靛繀濉 + */ + private BigDecimal jwzf; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 濉啓锛氫釜浜鸿偂鏉冩縺鍔辨敹鍏 + */ + private String sdxm; + } + + @Data + public static class qynj { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭槸 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal sre; + /** + * 宸插畬绋庣即璐归 蹇呭~锛氬惁 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal ywsjfe; + /** + * 鍏ㄩ儴缂磋垂棰 蹇呭~锛氭槸 涓嶅皬浜庣瓑浜0锛屽彇鍊煎皬鏁扮偣鍚庝袱浣嶄緥0.00 + */ + private BigDecimal qbjfe; + /** + * 鏄惁涓娆℃ч鍙 蹇呭~锛氥鏄 1:鏄 0:鍚 + */ + private String sfycxlq; + /** + * 骞撮噾棰嗗彇鏂瑰紡 蹇呭~锛氭潯浠跺繀濉 褰撯滄槸鍚︿竴娆℃ч鍙栤濅负鏄椂锛屼笉鍙~鍐欙紝褰撯滄槸鍚︿竴娆℃ч鍙栤濅负鍚︽椂锛屽彲濉啓锛 棰嗗彇鏂瑰紡鎸夆滄寜骞粹濓紝鈥滄寜瀛b濓紝鈥滄寜鏈堚 + */ + private String njlqfs; + /** + * 骞撮噾棰嗗彇鍘熷洜 蹇呭~锛氭潯浠跺繀濉 褰撯滄槸鍚︿竴娆℃ч鍙栤濅负鏄椂锛屽彲濉啓锛 褰撯滄槸鍚︿竴娆℃ч鍙栤濅负鍚︽椂锛屼笉鍙~鍐欙紱 棰嗗彇鍘熷洜锛氣滃嚭鍥藉畾灞呮垨涓汉姝讳骸鈥溿佲濆叾浠栤滐紱 + */ + private String njlqyy; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓 蹇呭~锛氬惁 + */ + private BigDecimal syjkbx; + /** + * 绋庡欢鍏昏佷繚闄 蹇呭~锛氬惁 + */ + private BigDecimal syylbx; + /** + * 鍏朵粬 蹇呭~锛氬惁 + */ + private BigDecimal qt; + /** + * 鍑嗕簣鎵i櫎鎹愯禒棰 蹇呭~锛氬惁 + */ + private BigDecimal zykcjze; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 澶囨敞 蹇呭~锛氭潯浠跺繀濉 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 濉啓锛氬勾閲戦鍙 + */ + private String sdxm; + } + + @Data + public static class ntycxbcj { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 涓娆℃цˉ鍋挎敹鍏 蹇呭~锛氭槸 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal sre; + /** + * 鏈湡宸ヨ祫鏀跺叆 蹇呭~锛氥鍚 + */ + private BigDecimal bqgzs; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍏朵粬 蹇呭~锛氬惁 + */ + private BigDecimal qt; + /** + * 鍑嗕簣鎵i櫎鎹愯禒棰 蹇呭~锛氬惁 + */ + private BigDecimal zykcjze; + /** + * 澶囨敞 蹇呭~锛氭潯浠跺繀濉 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 濉啓锛氬唴閫涓娆℃цˉ鍋块噾 + */ + private String sdxm; + /** + * 鍒嗘憡鏈堜唤鏁 蹇呭~锛氭槸 + */ + private Integer ftyfs; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + } + + @Data + public static class qtflxlwbc { + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氭槸 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭槸 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal sre; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal mssd; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syjkbx; + /** + * 绋庡欢鍏昏佷繚闄 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal syylbx; + /** + * 鍏佽鎵i櫎绋庤垂 蹇呭~锛氬惁 + */ + private BigDecimal yxkcsf; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 澶囨敞 蹇呭~锛氭潯浠跺繀濉 鏍规嵁鏀跨瓥瑕佹眰锛屽~鍐欍愬叾浠栥戦」锛屼竴瀹氬湪澶囨敞涓啓鏄庡叿浣撴墸闄ら」鐩悕绉帮紝澶囨敞涓嶈秴杩20涓瓧绗 + */ + private String bz; + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 鏃犲垯濉0 + */ + private BigDecimal jmse; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 濉啓锛氬叾浠栭潪杩炵画鍔冲姟鎶ラ叕 + */ + private String sdxm; + } + } + + +} diff --git a/src/com/engine/salary/remote/tax/request/declare/GetCompanyIncomesRequest.java b/src/com/engine/salary/remote/tax/request/declare/GetCompanyIncomesRequest.java new file mode 100644 index 000000000..f8912a261 --- /dev/null +++ b/src/com/engine/salary/remote/tax/request/declare/GetCompanyIncomesRequest.java @@ -0,0 +1,81 @@ +package com.engine.salary.remote.tax.request.declare; + +import lombok.Data; + +@Data +public class GetCompanyIncomesRequest { + /** + * 澶栭儴涓氬姟缂栧彿 蹇呭~锛氭槸 澶栭儴涓氬姟缂栧彿锛屽敮涓锛屽箓绛夐渶瑕侊紝鏈闀64浣,寤鸿浣跨敤UUID,寤鸿浣跨敤UUID + */ + private String bizNo; + /** + * 浼佷笟鍚嶇О 蹇呭~锛氭槸 鎵g即涔夊姟浜哄悕绉帮細渚嬪锛氭祴璇暶熺鎶鏈夐檺鍏徃 + */ + private String qymc; + /** + * 瀵嗙爜绫诲瀷 蹇呭~锛氬惁 0琛ㄧず鐢虫姤瀵嗙爜锛2琛ㄧず瀹炲悕璐﹀彿瀹炲悕瀵嗙爜 + */ + private String mmlx; + /** + * 瀹炲悕璐﹀彿 蹇呭~锛氭潯浠跺繀濉 褰搈mlx=2鏃讹紝蹇呭~ + */ + private String smzh; + /** + * 瀹炲悕瀵嗙爜 蹇呭~锛氭潯浠跺繀濉 褰搈mlx=2鏃讹紝蹇呭~ + */ + private String smmm; + /** + * 鍔犲瘑瀹炲悕瀵嗙爜 蹇呭~锛氬惁 榛樿涓嶄紶鍒欒缃负0锛0琛ㄧず涓嶅姞瀵,1琛ㄧず鍔犲瘑 + */ + private String jmsmmm; + /** + * 鐢虫姤瀵嗙爜 蹇呭~锛氭潯浠跺繀濉 褰搈mlx=0鏃讹紝蹇呭~ + */ + private String sbmm; + /** + * 鍔犲瘑鐢虫姤瀵嗙爜 蹇呭~锛氬惁 榛樿涓嶄紶鍒欒缃负0锛0琛ㄧず涓嶅姞瀵嗭紱1琛ㄧず鍔犲瘑 + */ + private String jmsbmm; + /** + * 鐧昏搴忓彿 蹇呭~锛氭潯浠跺繀濉 瀛樺湪澶氫釜鐧昏搴忓彿鏃讹紝闇瑕佹寚瀹氫紶鍏ヤ竴涓.渚嬶細10117440105249764755 + */ + private String djxhid; + /** + * 绋庡彿 蹇呭~锛氭槸 鎵g即鍗曚綅绾崇◣浜鸿瘑鍒彿 + */ + private String nsrsbh; + /** + * 鍦板尯缂栧彿 蹇呭~锛氭槸 6浣嶈鏀垮尯鍒掍唬鐮,绮剧‘鍒板競绾э紝渚嬪锛440100,鍙傝冪渷甯傚尯缂栫爜 + */ + private String areaid; + /** + * 閮ㄩ棬缂栧彿 蹇呭~锛氭潯浠跺繀濉 鍒嗛儴闂ㄤ唬鎶ユ椂蹇呬紶 + */ + private String bmbh; + /** + * 閮ㄩ棬鍚嶇О 蹇呭~锛氬惁 鍒嗛儴闂ㄤ唬鎶ユ椂蹇呬紶 + */ + private String bmmc; + /** + * 鎵灞炴湡 蹇呭~锛氭槸 鏍煎紡YYYYMM骞存湀 + */ + private String skssq; + /** + * 姣忛〉鐨勬暟閲 + */ + private Integer pageSize; + /** + * 椤电爜 + */ + private Integer pageNo; + /** + * 鎶ヨ〃绫诲瀷 + *

+ * 1锛氱患鍚堟墍寰; + * 2: 鍒嗙被鎵寰楋紱 + * 3锛氶潪灞呮皯鎵寰 + * 4: 闄愬敭鑲℃墍寰 + */ + private String reportType; + +} diff --git a/src/com/engine/salary/remote/tax/response/RequestIdResponse.java b/src/com/engine/salary/remote/tax/response/RequestIdResponse.java new file mode 100644 index 000000000..ef5505021 --- /dev/null +++ b/src/com/engine/salary/remote/tax/response/RequestIdResponse.java @@ -0,0 +1,32 @@ +package com.engine.salary.remote.tax.response; + +import com.engine.salary.entity.taxagent.response.SzyhResponseHead; +import lombok.Data; + +/** + * 绁炲窞浜戝悎鎺ュ彛杩斿洖鐘舵佸疄浣 + *

Copyright: Copyright (c) 2023

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class RequestIdResponse { + /** + * 鎺ュ彛鐘舵 + */ + private SzyhResponseHead head; + /** + * 杩斿洖鏁版嵁 + */ + private Body body; + + /** + * 绁炲窞浜戝悎鎺ュ彛杩斿洖鐘舵佸疄浣撶被 + **/ + @Data + public static class Body { + String requestId; + } +} diff --git a/src/com/engine/salary/remote/tax/response/calculate/GetASynIndividualIncomeTaxFeedbackResponse.java b/src/com/engine/salary/remote/tax/response/calculate/GetASynIndividualIncomeTaxFeedbackResponse.java new file mode 100644 index 000000000..ff4fb6484 --- /dev/null +++ b/src/com/engine/salary/remote/tax/response/calculate/GetASynIndividualIncomeTaxFeedbackResponse.java @@ -0,0 +1,823 @@ +package com.engine.salary.remote.tax.response.calculate; + +import com.engine.salary.annotation.TaxField; +import com.engine.salary.entity.taxpayment.response.BaseResponse; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +public class GetASynIndividualIncomeTaxFeedbackResponse extends BaseResponse { + /** + * 杩斿洖鏁版嵁 + */ + private Body body; + + @Data + public static class Body { + /** + * 浼佷笟鍚嶇О 蹇呭~锛氭槸 + */ + private String qymc; + /** + * 绋庡彿 蹇呭~锛氭槸 + */ + private String nsrsbh; + /** + * 鍦板尯缂栧彿 蹇呭~锛氭槸 6浣嶈鏀垮尯鍒掍唬鐮,绮剧‘鍒板競绾э紝渚嬪锛440100,鍙傝冪渷甯傚尯缂栫爜 + */ + private String areaid; + /** + * 閮ㄩ棬缂栧彿 蹇呭~锛氭槸 + */ + private String bmbh; + /** + * 閮ㄩ棬鍚嶇О 蹇呭~锛氬惁 + */ + private String bmmc; + /** + * 绠楃◣鏈堜唤 蹇呭~锛氭槸 + */ + private String skssq; + /** + * 缁煎悎鎵寰 蹇呭~锛氭槸 瑙佺患鍚堟墍寰楄绠楃粨鏋 + */ + private zhsd zhsd; +// /** +// * 鍒嗙被鎵寰 蹇呭~锛氭槸 瑙佸垎绫绘墍寰楄绠楃粨鏋 +// */ +// private flsd flsd; + /** + * 闈炲眳姘戞墍寰 蹇呭~锛氭槸 瑙侀潪灞呮皯鎵寰楄绠楃粨鏋 + */ + private fjmsd fjmsd; +// /** +// * 闄愬敭鑲℃墍寰 蹇呭~锛氭槸 瑙侀檺鍞偂鎵寰楄绠楃粨鏋 +// */ +// private xsgsd xsgsd; + /** + * 浜哄憳鐢虫姤澶辫触鍒楄〃 蹇呭~锛氭槸 鍙傝冧汉鍛樹唬鎶ョ粨鏋滃璞 + */ + private List rysbsblb; + + + @Data + public static class zhsd { + /** + * 浜哄憳浠d唬鎶ュけ璐ュ垪琛 鍙傝冧汉鍛樹唬鎶ョ粨鏋滃璞 + */ + private List rysbsblb; + /** + * 姝e父宸ヨ祫钖噾绠楃◣缁撴灉瀵硅薄 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx zcgzxj; + /** + * 鍏ㄥ勾涓娆℃у閲戞敹鍏ョ畻绋庣粨鏋滃璞 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx qnycxjjsslb; + /** + * 绋块叕鎵寰楃畻绋庣粨鏋滃璞 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx gcsdlb; + /** + * 涓鑸姵鍔℃姤閰畻绋庣粨鏋滃璞 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx lwbclb; + /** + * 瑙i櫎鍔冲姩鍚堝悓涓娆℃цˉ鍋块噾鍒楄〃 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx jcldhtycxbcjlb; + /** + * 淇濋櫓钀ラ攢鍛樿柂閲戠畻绋庣粨鏋滃璞 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx bxyxy; + /** + * 璇佸埜缁忕邯浜鸿柂閲戠畻绋庣粨鏋滃璞 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx zqjjr; + /** + * 鐗硅鏉冪畻绋庣粨鏋滃璞 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx txq; + /** + * 涓汉鑲℃潈婵鍔辩粨鏋滃璞 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx grgqjl; + /** + * 浼佷笟骞撮噾缁撴灉瀵硅薄 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx qynj; + /** + * 鍐呴涓娆℃цˉ鍋块噾 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx ntycxbcjlb; + /** + * 鍏朵粬杩炵画鍔冲姟鎶ラ叕 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx qtlxlwbc; + /** + * 鍏朵粬闈炶繛缁姵鍔℃姤閰 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx qtflxlwbc; + /** + * 鎻愬墠閫浼戜竴娆℃цˉ璐 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx tqtxycxbt; + /** + * 澶紒璐熻矗浜虹哗鏁堣柂閲戝欢鏈熷厬鐜版敹鍏ュ拰浠绘湡濂栧姳 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx yqfzrsrhjl; + /** + * 娉曞緥鎻村姪鍔冲姟鎶ラ叕 鍙傝冪患鍚堟墍寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx flyzlwbclb; + + + @Data + public static class rysb { + /** + * 濮撳悕 + */ + private String xm; + /** + * 璇佷欢绫诲瀷鍚嶇О + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 + */ + private String zzhm; + /** + * 浠f姤鐘舵 1 寰呮姤閫 2 浠f姤涓 3 浠f姤澶辫触 4 浠f姤鎴愬姛 + */ + private String sbzt; + /** + * 浜哄憳璁よ瘉鐘舵 + */ + private String rzzt; + /** + * 澶辫触鍘熷洜 + */ + private String sbyy; + /** + * 涓撻」浠f姤鐘舵 + */ + private String clzt; + /** + * 涓撻」浠f姤缁撴灉鍘熷洜 + */ + private String cljgms; + } + + @Data + public static class ssjgdx { + /** + * 缁煎悎绠楃◣鎴愬姛鍒楄〃 鍙傝冪患鍚堟墍寰楄緭鍑虹粨鏋滄姤鏂 + */ + private List sscglb; + /** + * 缁煎悎绠楃◣澶辫触鍒楄〃 鍙傝冪患鍚堟墍寰楄緭鍑虹粨鏋滄姤鏂 + */ + private List sssblb; + /** + * 缁煎悎绠楃◣澶辫触鍘熷洜鍒楄〃 鍙傝冪畻绋庡け璐ュ師鍥犲璞 + */ + private List sssbyylb; + /** + * 鍙備笌缁煎悎绠楃◣鎬讳汉鏁 + */ + private int sszrs; + /** + * 缁煎悎绠楃◣澶辫触鎬讳汉鏁 + */ + private int sssbrs; + /** + * 骞撮噾涓婇檺 + */ + private BigDecimal njsx; + /** + * 浣忔埧鍏Н閲戜笂闄 + */ + private BigDecimal zfgjjsx; + /** + * 骞村钩鍧囧伐璧 + */ + private BigDecimal npjgz; + /** + * 浼佷笟涓婃湀鏄惁宸茬敵鎶 0:涓婃湀鏈敵鎶 1:涓婃湀宸茬敵鎶 2:涓婁笂鏈堟湭鐢虫姤 + */ + private String qysysfysb; + + + @Data + public static class result { + /** + * 鏄惁鏄庣粏鐢虫姤 蹇呭~锛氬惁 鏄垨鑰呭惁 + */ + private String sfmxsb; + /** + * 濮撳悕 蹇呭~锛氬惁 濡傛灉鏄眹鎬荤敵鎶ヨ繑鍥炵┖ + */ + private String xm; + /** + * 璇佷欢绫诲瀷 蹇呭~锛氬惁 瑙佽瘉浠剁被鍨嬪瓧鍏 濡傛灉鏄眹鎬荤敵鎶ヨ繑鍥炵┖ + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氬惁 濡傛灉鏄眹鎬荤敵鎶ヨ繑鍥炵┖ + */ + private String zzhm; + /** + * 浠昏亴鍙楅泧鏃ユ湡 蹇呭~锛氭槸 鏍煎紡YYYY-MM-DD + */ + private String rzsgrq; + /** + * 绂昏亴鏃ユ湡 蹇呭~锛氬惁 鏍煎紡YYYY-MM-DD + */ + private String lzrq; + /** + * 褰撴湡鏀跺叆棰 蹇呭~锛氭槸 涓嶅~鍐欓粯璁や负0 + */ + private BigDecimal sre; + /** + * 褰撴湡鍏嶇◣鏀跺叆 蹇呭~锛氬惁 + */ + private BigDecimal mssd; + /** + * 鍩烘湰鍏昏佷繚闄 蹇呭~锛氬惁 + */ + private BigDecimal jbylaobxf; + /** + * 鍩烘湰鍖荤枟淇濋櫓 蹇呭~锛氬惁 + */ + private BigDecimal jbylbxf; + /** + * 澶变笟淇濋櫓 蹇呭~锛氬惁 + */ + private BigDecimal sybxf; + /** + * 浣忔埧鍏Н閲 蹇呭~锛氬惁 + */ + private BigDecimal zfgjj; + /** + * 瀛愬コ鏁欒偛鏀嚭 蹇呭~锛氬惁 + */ + private BigDecimal znjyzc; + /** + * 璧″吇鑰佷汉鏀嚭 蹇呭~锛氬惁 + */ + private BigDecimal sylrzc; + /** + * 浣忔埧璐锋鍒╂伅鏀嚭 蹇呭~锛氬惁 + */ + private BigDecimal zfdklxzc; + /** + * 浣忔埧绉熼噾鏀嚭 蹇呭~锛氬惁 + */ + private BigDecimal zfzjzc; + /** + * 缁х画鏁欒偛鏀嚭 蹇呭~锛氬惁 + */ + private BigDecimal jxjyzc; + /** + * 闈炲鍘嗙户缁暀鑲叉敮鍑 蹇呭~锛氬惁 + */ + private BigDecimal fxljxjyzc; + /** + * 3宀佷互涓嬪┐骞煎効鐓ф姢鏀嚭 蹇呭~锛氬惁 + */ + private BigDecimal yyezhzc; + /** + * 骞撮噾 蹇呭~锛氬惁 + */ + private BigDecimal nj; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓 蹇呭~锛氬惁 + */ + private BigDecimal syjkbx; + /** + * 绋庡欢鍏昏佷繚闄 蹇呭~锛氬惁 + */ + private BigDecimal syylbx; + /** + * 鍏朵粬 蹇呭~锛氬惁 鎸夋硶寰嬭瀹氬彲浠ュ湪绋庡墠鎵i櫎鐨勯」鐩 + */ + private BigDecimal qt; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氬惁 + */ + private BigDecimal zykcjze; + + /** + * 澶囨敞 蹇呭~锛氬惁 + */ + private String bz; + /** + * 鍑忛櫎璐圭敤 蹇呭~锛氬惁 姝e父宸ヨ祫钖噾鐨勫噺闄よ垂鐢ㄣ 瀵瑰簲淇濋櫓钀ラ攢鍛樸佽瘉鍒哥粡绾汉鐨勮垂鐢 + */ + private BigDecimal jcfy; + /** + * 鍏朵粬鎵i櫎鍚堣 蹇呭~锛氬惁 + */ + private BigDecimal qtckhj; + /** + * 搴旂撼绋庢墍寰楅 蹇呭~锛氬惁 姝e父宸ヨ祫钖噾杩斿洖鍚 + */ + private BigDecimal ynssde; + /** + * 搴旂撼绋庨 蹇呭~锛氬惁 姝e父宸ヨ祫钖噾杩斿洖鍚 + */ + private BigDecimal ynse; + /** + * 宸茬即绋庨 蹇呭~锛氬惁 姝e父宸ヨ祫钖噾杩斿洖鍚 + */ + private BigDecimal ykjse; + /** + * 搴旀墸缂寸◣棰 蹇呭~锛氬惁 姝e父宸ヨ祫钖噾杩斿洖鍚 + */ + private BigDecimal yingkjse; + /** + * 鎵寰楅」鐩悕绉 蹇呭~锛氭槸 姝e父宸ヨ祫钖噾锛涘叏骞翠竴娆℃у閲戞敹鍏ワ紱绋块叕鎵寰楋紱鍔冲姟鎶ラ叕 + */ + private String sdxm; + + /** + * 绱鏀跺叆棰 蹇呭~锛氬惁 + */ + @TaxField(name = "褰撳墠绱搴旂◣鏀跺叆鍚堣", taxIndex = "ljsre") + private BigDecimal ljsre; + /** + * 绱鍏嶇◣鏀跺叆棰 蹇呭~锛氬惁 + */ + @TaxField(name = "褰撳墠绱鍏嶇◣鏀跺叆", taxIndex = "ljmssd") + private BigDecimal ljmssd; + /** + * 绱涓撻」鎵i櫎棰 蹇呭~锛氬惁 涓夐櫓涓閲戝悎璁 + */ + @TaxField(name = "褰撳墠绱涓撻」鎵i櫎鍚堣", taxIndex = "ljzxkce") + private BigDecimal ljzxkce; + + /** + * 绱鍏朵粬鎵i櫎棰 蹇呭~锛氬惁 + */ + @TaxField(name = "褰撳墠绱鍏朵粬鎵i櫎鍚堣", taxIndex = "ljqtkce") + private BigDecimal ljqtkce; + + /** + * 绱鍑忛櫎璐圭敤棰 蹇呭~锛氬惁 姝e父宸ヨ祫钖噾绱鍑忛櫎璐圭敤 蹇呭~锛氬惁 瀵瑰簲淇濋櫓钀ラ攢鍛樸佽瘉鍒哥粡绾汉绱璐圭敤 + */ + @TaxField(name = "褰撳墠绱鍑忛櫎璐圭敤", taxIndex = "ljjcfye") + private BigDecimal ljjcfye; + /** + * 绱鏈堝噺闄よ垂鐢 蹇呭~锛氬惁 淇濋櫓钀ラ攢鍛樸佽瘉鍒哥粡绾汉锛屽叾浠栬繛缁姵鍔℃姤閰殑鍑忛櫎璐圭敤 + */ + private BigDecimal ljyjcfy; + /** + * 鍏佽鎵i櫎绋庤垂 蹇呭~锛氬惁 淇濋櫓钀ラ攢鍛樸佽瘉鍒哥粡绾汉 + */ + private BigDecimal yxkcsf; + /** + * 灞曚笟鎴愭湰 蹇呭~锛氬惁 淇濋櫓钀ラ攢鍛樸佽瘉鍒哥粡绾汉 + */ + private BigDecimal zycb; + /** + * 鏈堝噺闄よ垂鐢 蹇呭~锛氬惁 淇濋櫓钀ラ攢鍛樸佽瘉鍒哥粡绾汉锛屽叾浠栬繛缁姵鍔℃姤閰殑鍑忛櫎璐圭敤 + */ + private BigDecimal yjcfy; + /** + * 绱瀛愬コ鏁欒偛鏀嚭 蹇呭~锛氬惁 + */ + @TaxField(name = "绱瀛愬コ鏁欒偛", taxIndex = "ljznjyzc") + private BigDecimal ljznjyzc; + /** + * 绱缁х画鏁欒偛鏀嚭 蹇呭~锛氬惁 + */ + @TaxField(name = "绱缁х画鏁欒偛", taxIndex = "ljjxjyzc") + private BigDecimal ljjxjyzc; + + /** + * 绱闈炲鍘嗙户缁暀鑲叉敮鎸 蹇呭~锛氬惁 + */ + private BigDecimal ljfxljxjyzc; + /** + * 绱瀛﹀巻缁х画鏁欒偛鏀寔 蹇呭~锛氬惁 + */ + private BigDecimal ljxljxjyzc; + /** + * 绱浣忔埧绉熼噾鏀嚭 蹇呭~锛氬惁 + */ + @TaxField(name = "绱浣忔埧绉熼噾", taxIndex = "ljzfzjzc") + private BigDecimal ljzfzjzc; + /** + * 绱鎴垮眿璐锋鏀嚭 蹇呭~锛氬惁 + */ + @TaxField(name = "绱浣忔埧璐锋鍒╂伅", taxIndex = "ljzfdklxzc") + private BigDecimal ljzfdklxzc; + /** + * 绱璧″吇鑰佷汉鏀嚭 蹇呭~锛氬惁 + */ + @TaxField(name = "绱璧″吇鑰佷汉", taxIndex = "ljsylrzc") + private BigDecimal ljsylrzc; + /** + * 绱澶х梾鍖荤枟鏀嚭 蹇呭~锛氬惁 + */ + @TaxField(name = "绱澶х梾鍖荤枟", taxIndex = "ljdbylzc") + private BigDecimal ljdbylzc; + /** + * 绱3宀佷互涓嬪┐骞煎効鐓ф姢鏀嚭 蹇呭~锛氬惁 + */ + @TaxField(name = "绱濠村辜鍎跨収鎶", taxIndex = "ljyyezhzc") + private BigDecimal ljyyezhzc; + + + /** + * 绱涓撻」闄勫姞鎵i櫎棰 蹇呭~锛氬惁 涓撻」闄勫姞鍚堣 + */ + @TaxField(name = "褰撳墠绱涓撻」闄勫姞鎵i櫎鍚堣", taxIndex = "ljzxfjkce") + private BigDecimal ljzxfjkce; + + /** + * 绱鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氬惁 + */ + @TaxField(name = "褰撳墠绱鍑嗕簣鎵i櫎鐨勬崘璧犻", taxIndex = "ljzykcjze") + private BigDecimal ljzykcjze; + + + /** + * 绱涓汉鍏昏侀噾 蹇呭~锛氬惁 + */ + @TaxField(name = "绱涓汉鍏昏侀噾", taxIndex = "ljgrylj") + private BigDecimal ljgrylj; + /** + * 绱涓汉鍏昏侀噾鏍¢獙鐮 蹇呭~锛氬惁 + */ + private String ljgryljjym; + /** + * 浠呭湪涓や釜鏈堢畻绋庡満鏅椂浣跨敤锛屽綋鍓嶆湀鍒嗕负N鏈堬細 + * 0琛ㄧずN-1鏈堬紙涓婃湀锛夋湭鐢虫姤 + * 1琛ㄧずN-1鏈堬紙涓婃湀锛夊凡鐢虫姤 + * 2琛ㄧずN-2鏈堬紙涓婁笂涓湀锛夋湭鐢虫姤 + */ + private String qysysfysb; + + /** + * 褰撳墠鏈堝垎涓篘,濡傛灉N-1锛堜笂鏈堬級宸茬敵鎶ワ紝鍒欒繑鍥濶-1鏈堝憳宸ュ湪绋庡眬绱宸叉墸缂寸殑绋庨; + * 濡傛灉N-1鏈堟湭鐢虫姤锛屽垯杩斿洖N-2鏈堝伐鍦ㄧ◣灞绱宸叉墸缂寸殑绋庨; + */ + private BigDecimal ygzsjljykjse; + /** + * 鏈湀宸茬疮璁℃墸闄ょ◣棰 蹇呭~锛氬惁 閽堝涓鏈堝娆$畻绋庣殑鍦烘櫙瀛楁 + */ + private BigDecimal byyljkjse; + /** + * 鏈搴旀墸缂寸◣棰 蹇呭~锛氬惁 閽堝涓鏈堝娆$畻绋庣殑鍦烘櫙瀛楁锛屾湰娆″簲鎵g即绋庨=鏈湀搴旀墸缂寸◣棰-鏈湀宸茬疮璁$◣棰 + */ + private BigDecimal bcykjse; + /** + * 鍒嗘憡骞村害鏁 蹇呭~锛氬惁 + */ + private Integer ftnds; + /** + * 骞村噺闄よ垂鐢 蹇呭~锛氬惁 榛樿涓60000 + */ + private BigDecimal njcfy; + + /** + * 绱搴旂撼绋庢墍寰楅 蹇呭~锛氬惁 + */ + @TaxField(name = "褰撳墠绱搴旂撼绋庢墍寰楅", taxIndex = "ljynssde") + private BigDecimal ljynssde; + + + /** + * 绋庣巼 蹇呭~锛氬惁 + */ + @TaxField(name = "绋庣巼", taxIndex = "sl") + private BigDecimal sl; + /** + * 閫熺畻鎵i櫎鏁 蹇呭~锛氬惁 + */ + @TaxField(name = "閫熺畻鎵i櫎鏁", taxIndex = "sskcs") + private BigDecimal sskcs; + + /** + * 绱搴旂撼绋庨 蹇呭~锛氬惁 + */ + @TaxField(name = "褰撳墠绱搴旂撼绋庨", taxIndex = "ljynse") + private BigDecimal ljynse; + + + /** + * 鍑忓厤绋庨 蹇呭~锛氬惁 + */ + @TaxField(name = "鏈湀锛堟锛夊噺鍏嶇◣棰", taxIndex = "jmse") + private BigDecimal jmse; + + /** + * 绱鍑忓厤绋庨 蹇呭~锛氬惁 + */ + @TaxField(name = "褰撳墠绱鍑忓厤绋庨鍚堣", taxIndex = "ljjmse") + private BigDecimal ljjmse; + + /** + * 绱搴旀墸缂寸◣棰 蹇呭~锛氬惁 绱搴旀墸缂寸◣棰 = 绱搴旂撼绋庨 - 绱鍑忓厤绋庨 + */ + private BigDecimal ljyingkjse; + + /** + * 绱宸茬即绋庨 蹇呭~锛氬惁 + */ + @TaxField(name = "褰撳墠绱宸叉墸缂寸◣棰濆悎璁", taxIndex = "ljykjse") + private BigDecimal ljykjse; + + /** + * 搴旇ˉ閫绋庨 蹇呭~锛氬惁 搴旇ˉ閫绋庨=绱搴旀墸缂寸◣棰-绱宸茬即绋庨 + */ + @TaxField(name = "鏈湀锛堟锛夊簲琛ョ◣棰", taxIndex = "ybtse") + private BigDecimal ybtse; + } + } + + } + + + @Data + public static class fjmsd { + /** + * 姝e父宸ヨ祫钖噾锛堟棤浣忔墍涓汉姝e父宸ヨ祫钖噾锛夋墍寰楀垪琛 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx wjgzxjlb; + /** + * 鏃犱綇鎵涓汉鏁版湀濂栭噾鍒楄〃 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx wjrysyjjlb; + /** + * 鍔冲姟鎶ラ叕鍒楄〃 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx lwbclb; + /** + * 绋块叕鎵寰楀垪琛 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx gcsdlb; + /** + * 鍒╂伅濮戞伅绾㈠埄鎵寰楀垪琛 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx lxgxhllb; + /** + * 鑲℃潈杞鍒楄〃 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx gqzrlb; + /** + * 鍏朵粬璐骇杞鍒楄〃 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx qtcczrlb; + /** + * 鍋剁劧鎵寰楀垪琛 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx orsdlb; + /** + * 瑙i櫎鍔冲姩鍚堝悓涓娆℃цˉ鍋块噾鍒楄〃 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx jcldhtycxbcjlb; + /** + * 淇濋櫓钀ラ攢鍛樿柂閲戠畻绋庣粨鏋滃璞 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx bxyxy; + /** + * 璇佸埜缁忕邯浜鸿柂閲戠畻绋庣粨鏋滃璞 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx zqjjr; + /** + * 涓汉鑲℃潈婵鍔辩粨鏋滃璞 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx grgqjl; + /** + * 鐗硅鏉冧娇鐢ㄨ垂鎵寰 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx txqsyfsd; + /** + * 涓汉鎴垮眿鍑虹鎵寰 鍙傝冮潪灞呮皯鎵寰楃畻绋庣粨鏋滃璞 + */ + private ssjgdx grfwczsd; + + @Data + public static class ssjgdx { + /** + * 闈炲眳姘戠畻绋庢垚鍔熷垪琛 鍙傝冭緭鍏ユ姤鏂囬潪灞呮皯鎵寰楄緭鍑虹粨鏋滄姤鏂 + */ + private List sscglb; + /** + * 闈炲眳姘戠畻绋庡け璐ュ垪琛 鍙傝冭緭鍏ユ姤鏂囬潪灞呮皯鎵寰楄緭鍑虹粨鏋滄姤鏂 + */ + private List sssblb; + /** + * 闈炲眳姘戠畻绋庡け璐ュ師鍥犲垪琛 鍙傝冪畻绋庡け璐ュ師鍥犲璞 + */ + private List sssbyylb; + /** + * 鍙備笌闈炲眳姘戠畻绋庢讳汉鏁 + */ + private int sszrs; + /** + * 闈炲眳姘戠畻绋庡け璐ユ讳汉鏁 + */ + private int sssbrs; + + @Data + public static class result { + + /** + * 濮撳悕 蹇呭~锛氭槸 + */ + private String xm; + /** + * 璇佷欢绫诲瀷鍚嶇О 蹇呭~锛氭槸 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 蹇呭~锛氭槸 + */ + private String zzhm; + /** + * 鏀跺叆棰 蹇呭~锛氭槸 + */ + private String sre; + /** + * 绱鏀跺叆锛堜笉鍚湰娆★級 蹇呭~锛氭槸 + */ + private String ljsre; + /** + * 鍏嶇◣鏀跺叆 蹇呭~锛氭槸 + */ + private String mssd; + /** + * 璐骇鍘熷 蹇呭~锛氭槸 + */ + private String ccyz; + /** + * 鍏佽鎵i櫎鐨勭◣璐 蹇呭~锛氭槸 + */ + private String yxkcsf; + /** + * 鎶曡祫鎶垫墸 蹇呭~锛氭槸 + */ + private String tzdk; + /** + * 鍏朵粬 蹇呭~锛氭槸 + */ + private String qt; + /** + * 澶囨敞 蹇呭~锛氭槸 + */ + private String bz; + /** + * 瀹為檯宸ヤ綔骞撮檺 蹇呭~锛氭槸 + */ + private String sjgznxs; + /** + * 鍑忛櫎璐圭敤 蹇呭~锛氭槸 + */ + private String jcfy; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 蹇呭~锛氭槸 + */ + private String zykcjze; + /** + * 绋庡墠鎵i櫎椤圭洰鍚堣 蹇呭~锛氭槸 + */ + private String sqkcxmhj; + /** + * 搴旂撼绋庨鎵寰楅 蹇呭~锛氭槸 + */ + private String ynssde; + /** + * 搴旂撼绋庨 蹇呭~锛氭槸 + */ + private String ynse; + /** + * 鍑忓厤绋庨 蹇呭~锛氭槸 + */ + private String jmse; + /** + * 搴旀墸缂寸◣棰 蹇呭~锛氭槸 + */ + private String yingkjse; + /** + * 宸叉墸缂寸◣棰 蹇呭~锛氭槸 鏃犻渶濉啓璇ュ硷紝鎸0澶勭悊 + */ + private String ykjse; + /** + * 绋庣巼 蹇呭~锛氭槸 + */ + private String sl; + /** + * 閫熺畻鎵i櫎鏁 蹇呭~锛氭槸 + */ + private String sskcs; + /** + * 浠f姤鏂瑰紡 蹇呭~锛氭槸 + */ + private String sbfs; + /** + * 搴旇ˉ閫绋庨 蹇呭~锛氭槸 + */ + private String ybtse; + /** + * 闈炲眳姘戞墍寰楅」鐩悕瀛 蹇呭~锛氭槸 銆闈炲眳姘戞墍寰楄柂閲戠被鍒-鏃犱綇鎵涓汉姝e父宸ヨ祫钖噾銆佸叏骞翠竴娆℃у閲戞敹鍏 + */ + private String sdxm; + /** + * 鎵寰楁湡闂磋捣 蹇呭~锛氭槸 YYYY-MM + */ + private String sdqjq; + /** + * 鎵寰楁湡闂存 蹇呭~锛氭槸 YYYY-MM + */ + private String sdqjz; + } + } + } + + @Data + public static class rysbsb { + /** + * 濮撳悕 + */ + private String xm; + /** + * 璇佷欢绫诲瀷鍚嶇О + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 + */ + private String zzhm; + /** + * 浠f姤鐘舵 1 寰呮姤閫 2 浠f姤涓 3 浠f姤澶辫触 4 浠f姤鎴愬姛 + */ + private String sbzt; + /** + * 浜哄憳璁よ瘉鐘舵 + */ + private String rzzt; + /** + * 澶辫触鍘熷洜 + */ + private String sbyy; + /** + * 涓撻」浠f姤鐘舵 + */ + private String clzt; + /** + * 涓撻」浠f姤缁撴灉鍘熷洜 + */ + private String cljgms; + } + + + /** + * 绠楃◣澶辫触鍘熷洜瀵硅薄 + */ + @Data + public static class sssbyy { + /** + * 浜哄憳ID + */ + private Integer ygid; + /** + * 浜哄憳鍚嶇О + */ + private String xm; + /** + * 璇佷欢绫诲瀷 瑙佽瘉浠剁被鍨嬪瓧鍏 + */ + private String zzlx; + /** + * 璇佷欢鍙风爜 + */ + private String zzhm; + /** + * 閿欒鐮 + */ + private String cwm; + /** + * 閿欒淇℃伅 + */ + private String cwxx; + /** + * 鎵寰楃◣鐨刢ode + */ + private String sdxmdm; + /** + * 鎵寰楃◣鐨勫悕绉 + */ + private String sdxmmc; + } + + } + + +} diff --git a/src/com/engine/salary/remote/tax/response/declare/GetCompanyIncomesResponse.java b/src/com/engine/salary/remote/tax/response/declare/GetCompanyIncomesResponse.java new file mode 100644 index 000000000..779ec3671 --- /dev/null +++ b/src/com/engine/salary/remote/tax/response/declare/GetCompanyIncomesResponse.java @@ -0,0 +1,456 @@ +package com.engine.salary.remote.tax.response.declare; + +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.entity.taxpayment.response.BaseResponse; +import com.engine.salary.util.excel.ExcelHead; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +public class GetCompanyIncomesResponse extends BaseResponse { + /** + * 杩斿洖鏁版嵁 + */ + private Body body; + + + /** + * 浜哄憳涓撻」闄勫姞鎵i櫎淇℃伅鏌ヨ缁撴灉body + **/ + @Data + public static class Body { + /** + * 鏄庣粏 + */ + private List sfmx; + + /** + * 鍚堣 + */ + private sfhj sfhj; + + + } + + @Data + public static class sfmx { + /** + * 鏄惁鏄庣粏鐢虫姤 鏄垨鑰呭惁 + */ + private String sfmxsb; + /** + * 绾崇◣浜哄鍚 姹囨荤敵鎶ヤ负绌 + */ + @SalaryTableColumn(text = "濮撳悕", width = "10%", column = "xm") + @ExcelHead(title = "濮撳悕", dataIndex = "xm") + private String xm; + /** + * 绾崇◣璇嗗埆鍙 + */ + private String nsrsbh; + /** + * 璇佷欢绫诲瀷 姹囨荤敵鎶ヤ负绌 + */ + @SalaryTableColumn(text = "璇佷欢绫诲瀷", width = "10%", column = "zjlx") + @ExcelHead(title = "璇佷欢绫诲瀷", dataIndex = "zjlx") + private String zjlx; + /** + * 璇佷欢鍙风爜 姹囨荤敵鎶ヤ负绌 + */ + @SalaryTableColumn(text = "璇佷欢鍙风爜", width = "10%", column = "zjhm") + @ExcelHead(title = "璇佷欢鍙风爜", dataIndex = "zjhm") + private String zjhm; + /** + * 闈炲眳姘戜釜浜 1锛氬惁 2锛氭槸 + */ + private String sffjm; + /** + * 鎵寰楅」鐩悕绉 瑙佹墍寰楅」鐩瓧鍏 + */ + private String sdxmmc; + /** + * 鏀跺叆棰 + */ + @SalaryTableColumn(text = "鏈湡鏀跺叆", width = "10%", column = "sre") + @ExcelHead(title = "鏈湡鏀跺叆", dataIndex = "sre") + private String sre; + /** + * 璐圭敤 + */ + private String fy; + /** + * 鍏嶇◣鏀跺叆 + */ + @SalaryTableColumn(text = "鏈湡鍏嶇◣鏀跺叆", width = "10%", column = "mssr") + @ExcelHead(title = "鏈湡鍏嶇◣鏀跺叆", dataIndex = "mssr") + private String mssr; + /** + * 璐骇鍘熷 + */ + private String ccyz; + /** + * 鎶曡祫鎶垫墸 + */ + private String tzdk; + /** + * 鍏佽鎵i櫎鐨勮垂鐢 + */ + private String yxkcsf; + /** + * 鍑忚姣斾緥 + */ + private String jjbl; + /** + * 鍑忛櫎璐圭敤 + */ + private String jcfy; + /** + * 鍩烘湰鍏昏佷繚闄 + */ + @SalaryTableColumn(text = "鍩烘湰鍏昏佷繚闄╄垂", width = "10%", column = "jbylaobxf") + @ExcelHead(title = "鍩烘湰鍏昏佷繚闄╄垂", dataIndex = "jbylaobxf") + private String jbylaobxf; + /** + * 鍩烘湰鍖荤枟淇濋櫓璐 + */ + @SalaryTableColumn(text = "鍩烘湰鍖荤枟淇濋櫓璐", width = "10%", column = "jbylbxf") + @ExcelHead(title = "鍩烘湰鍖荤枟淇濋櫓璐", dataIndex = "jbylbxf") + private String jbylbxf; + /** + * 澶变笟淇濋櫓璐 + */ + @SalaryTableColumn(text = "澶变笟淇濋櫓璐", width = "10%", column = "sybxf") + @ExcelHead(title = "澶变笟淇濋櫓璐", dataIndex = "sybxf") + private String sybxf; + /** + * 浣忔埧鍏Н閲 + */ + @SalaryTableColumn(text = "浣忔埧鍏Н閲", width = "10%", column = "zfgjj") + @ExcelHead(title = "浣忔埧鍏Н閲", dataIndex = "zfgjj") + private String zfgjj; + /** + * 骞撮噾 + */ + @SalaryTableColumn(text = "浼佷笟(鑱屼笟)骞撮噾", width = "10%", column = "nj") + @ExcelHead(title = "浼佷笟(鑱屼笟)骞撮噾", dataIndex = "nj") + private String nj; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓 + */ + @SalaryTableColumn(text = "鍟嗕笟鍋ュ悍淇濋櫓", width = "10%", column = "syjkbx") + @ExcelHead(title = "鍟嗕笟鍋ュ悍淇濋櫓", dataIndex = "syjkbx") + private String syjkbx; + /** + * 绋庡欢鍏昏佷繚闄 + */ + @SalaryTableColumn(text = "绋庡欢鍏昏佷繚闄", width = "10%", column = "syylbx") + @ExcelHead(title = "绋庡欢鍏昏佷繚闄", dataIndex = "syylbx") + private String syylbx; + /** + * 鍏跺畠鎵i櫎 + */ + @SalaryTableColumn(text = "鍏朵粬", width = "10%", column = "qt") + @ExcelHead(title = "鍏朵粬", dataIndex = "qt") + private String qt; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻 + */ + @SalaryTableColumn(text = "鍑嗕簣鎵i櫎鐨勬崘璧犻", width = "10%", column = "zykcjze") + @ExcelHead(title = "鍑嗕簣鎵i櫎鐨勬崘璧犻", dataIndex = "zykcjze") + private String zykcjze; + /** + * 绱鏀跺叆棰 + */ + @SalaryTableColumn(text = "绱鏀跺叆棰", width = "10%", column = "ljsre") + @ExcelHead(title = "绱鏀跺叆棰", dataIndex = "ljsre") + private String ljsre; + /** + * 绱鍑忛櫎璐圭敤 + */ + @SalaryTableColumn(text = "绱鍑忛櫎璐圭敤", width = "10%", column = "ljjcfy") + @ExcelHead(title = "绱鍑忛櫎璐圭敤", dataIndex = "ljjcfy") + private String ljjcfy; + /** + * 绱涓撻」鎵i櫎 + */ + @SalaryTableColumn(text = "绱涓撻」鎵i櫎", width = "10%", column = "ljzxkc") + @ExcelHead(title = "绱涓撻」鎵i櫎", dataIndex = "ljzxkc") + private String ljzxkc; + /** + * 绱瀛愬コ鏁欒偛 + */ + @SalaryTableColumn(text = "绱瀛愬コ鏁欒偛", width = "10%", column = "ljznjy") + @ExcelHead(title = "绱瀛愬コ鏁欒偛", dataIndex = "ljznjy") + private String ljznjy; + /** + * 绱璧″吇鑰佷汉 + */ + @SalaryTableColumn(text = "绱璧″吇鑰佷汉", width = "10%", column = "ljsylr") + @ExcelHead(title = "绱璧″吇鑰佷汉", dataIndex = "ljsylr") + private String ljsylr; + /** + * 绱浣忔埧璐锋鍒╂伅 + */ + @SalaryTableColumn(text = "绱浣忔埧璐锋鍒╂伅", width = "10%", column = "ljzfdklx") + @ExcelHead(title = "绱浣忔埧璐锋鍒╂伅", dataIndex = "ljzfdklx") + private String ljzfdklx; + /** + * 绱浣忔埧绉熼噾 + */ + @SalaryTableColumn(text = "绱浣忔埧绉熼噾", width = "10%", column = "ljzfzj") + @ExcelHead(title = "绱浣忔埧绉熼噾", dataIndex = "ljzfzj") + private String ljzfzj; + /** + * 绱缁х画鏁欒偛 + */ + @SalaryTableColumn(text = "绱缁х画鏁欒偛", width = "10%", column = "ljjxjy") + @ExcelHead(title = "绱缁х画鏁欒偛", dataIndex = "ljjxjy") + private String ljjxjy; + /** + * 绱3宀佷互涓嬪┐骞煎効鐓ф姢鏀嚭 + */ + @SalaryTableColumn(text = "绱3宀佷互涓嬪┐骞煎効鐓ф姢", width = "10%", column = "ljyyezhzc") + @ExcelHead(title = "绱3宀佷互涓嬪┐骞煎効鐓ф姢", dataIndex = "ljyyezhzc") + private String ljyyezhzc; + /** + * 绱鍏跺畠鎵i櫎 + */ + @SalaryTableColumn(text = "绱鍏朵粬鎵i櫎", width = "10%", column = "ljqtkc") + @ExcelHead(title = "绱鍏朵粬鎵i櫎", dataIndex = "ljqtkc") + private String ljqtkc; + /** + * 绱鍑嗕簣鎵i櫎鐨勬崘璧犻 + */ + @SalaryTableColumn(text = "绱鍑嗕簣鎵i櫎鐨勬崘璧", width = "10%", column = "ljzykcjze") + @ExcelHead(title = "绱鍑嗕簣鎵i櫎鐨勬崘璧", dataIndex = "ljzykcjze") + private String ljzykcjze; + /** + * 绱涓汉鍏昏侀噾 + */ + private BigDecimal ljgrylj; + /** + * 搴旂撼绋庢墍寰楅 + */ + @SalaryTableColumn(text = "绱搴旂撼绋庢墍寰楅", width = "10%", column = "ynssde") + @ExcelHead(title = "绱搴旂撼绋庢墍寰楅", dataIndex = "ynssde") + private String ynssde; + /** + * 绋庣巼 + */ + @SalaryTableColumn(text = "绋庣巼", width = "10%", column = "sl") + @ExcelHead(title = "绋庣巼", dataIndex = "sl") + private String sl; + /** + * 鍗忓畾绋庣巼 + */ + private String xdsl; + /** + * 閫熺畻鎵i櫎鏁 + */ + @SalaryTableColumn(text = "閫熺畻鎵i櫎鏁", width = "10%", column = "sskcs") + @ExcelHead(title = "閫熺畻鎵i櫎鏁", dataIndex = "sskcs") + private String sskcs; + /** + * 搴旂撼绋庨 + */ + @SalaryTableColumn(text = "绱搴旂撼绋庨", width = "10%", column = "ynse") + @ExcelHead(title = "绱搴旂撼绋庨", dataIndex = "ynse") + private String ynse; + /** + * 鍑忓厤绋庨 + */ + @SalaryTableColumn(text = "绱鍑忓厤绋庨", width = "10%", column = "jmse") + @ExcelHead(title = "绱鍑忓厤绋庨", dataIndex = "jmse") + private String jmse; + /** + * 宸叉墸缂寸◣棰 + */ + @SalaryTableColumn(text = "绱宸茬即绋庨", width = "10%", column = "ykjse") + @ExcelHead(title = "绱宸茬即绋庨", dataIndex = "ykjse") + private String ykjse; + /** + * 搴旇ˉ閫绋庨 + */ + @SalaryTableColumn(text = "搴旇ˉ(閫)绋庨", width = "10%", column = "ybtse") + @ExcelHead(title = "搴旇ˉ(閫)绋庨", dataIndex = "ybtse") + private String ybtse; + /** + * 澶囨敞 + */ + private String bz; + /** + * 鍒嗘憡骞村害鏁 + */ + private Integer ftnds; + /** + * 骞村噺闄よ垂鐢 榛樿涓60000 + */ + private BigDecimal njcfy; + /** + * 搴旀墸缂寸◣棰 + */ + private BigDecimal kjse; + /** + * 璇佸埜璐︽埛鍙 闄愬敭鑲℃墍寰楁墠浼氳繑鍥 + */ + private String zqzhh; + /** + * 鑲$エ浠g爜 闄愬敭鑲℃墍寰楁墠浼氳繑鍥 + */ + private String gpdm; + /** + * 鑲$エ鍚嶇О 闄愬敭鑲℃墍寰楁墠浼氳繑鍥 + */ + private String gpmc; + /** + * 姣忚偂璁$◣浠锋牸 闄愬敭鑲℃墍寰楁墠浼氳繑鍥 + */ + private BigDecimal mgjsjg; + /** + * 杞鑲℃暟 闄愬敭鑲℃墍寰楁墠浼氳繑鍥 + */ + private Integer zrgs; + /** + * 闄愬敭鑲″師鍊 闄愬敭鑲℃墍寰楁墠浼氳繑鍥 + */ + private BigDecimal xsgyz; + /** + * 鍚堢悊绋庤垂 闄愬敭鑲℃墍寰楁墠浼氳繑鍥 + */ + private BigDecimal hlsf; + /** + * 鎵i櫎鍙婂噺闄ら」鐩悎璁 闄愬敭鑲℃墍寰楁墠浼氳繑鍥 + */ + private BigDecimal kcjjcxmhj; + + } + + @Data + public static class sfhj { + /** + * 鏀跺叆棰濆悎璁 + */ + private String srehj; + /** + * 鍏嶇◣鏀跺叆鍚堣 + */ + private String mssrhj; + /** + * 璐骇鍘熷煎悎璁 + */ + private String ccyzhj; + /** + * 鎶曡祫鎶垫墸鍚堣 + */ + private String tzdkhj; + /** + * 鍏佽鎵i櫎鐨勭◣璐瑰悎璁 + */ + private String yxkcsfhj; + /** + * 鍩烘湰鍏昏佷繚闄╄垂鍚堣 + */ + private String jbylaobxfhj; + /** + * 鍩烘湰鍖荤枟淇濋櫓璐瑰悎璁 + */ + private String jbylbxfhj; + /** + * 澶变笟淇濋櫓璐瑰悎璁 + */ + private String sybxfhj; + /** + * 浣忔埧鍏Н閲戝悎璁 + */ + private String zfgjjhj; + /** + * 骞撮噾鍚堣 + */ + private String njhj; + /** + * 鍟嗕笟鍋ュ悍淇濋櫓鍚堣 + */ + private String syjkbxhj; + /** + * 绋庡欢鍏昏佷繚闄╁悎璁 + */ + private String syylbxhj; + /** + * 鍏朵粬鎵i櫎鍚堣 + */ + private String qthj; + /** + * 鍑嗕簣鎵i櫎鐨勬崘璧犻鍚堣 + */ + private String zykcjzehj; + /** + * 绱鏀跺叆棰濆悎璁 + */ + private String ljsrehj; + /** + * 绱涓撻」鎵i櫎鍚堣 + */ + private String ljzxkchj; + /** + * 绱瀛愬コ鏁欒偛鍚堣 + */ + private String ljznjyhj; + /** + * 绱璧″吇鑰佷汉鍚堣 + */ + private String ljsylrhj; + /** + * 绱浣忔埧璐锋鍒╂伅鍚堣 + */ + private String ljzfdklxhj; + /** + * 绱浣忔埧绉熼噾鍚堣 + */ + private String ljzfzjhj; + /** + * 绱缁х画鏁欒偛鍚堣 + */ + private String ljjxjyhj; + /** + * 绱3宀佷互涓嬪┐骞煎効鐓ф姢鏀嚭鍚堣 + */ + private String ljyyezhzchj; + /** + * 绱鍏朵粬鎵i櫎鍚堣 + */ + private String ljqtkchj; + /** + * 绱鍑嗕簣鎵i櫎鐨勬崘璧犻鍚堣 + */ + private String ljzykcjzehj; + /** + * 绱涓汉鍏昏侀噾鍚堣 + */ + private BigDecimal ljgryljhj; + /** + * 搴旂撼绋庢墍寰楅鍚堣 + */ + private String ynssdehj; + /** + * 搴旂撼绋庨鍚堣 + */ + private String ynsehj; + /** + * 鍑忓厤绋庨鍚堣 + */ + private String jmsehj; + /** + * 宸叉墸缂寸◣棰濆悎璁 + */ + private String ykjsehj; + /** + * 搴旇ˉ閫绋庨鍚堣 + */ + private String ybtsehj; + } + +} diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsEmployeeSalaryQueryParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsEmployeeSalaryQueryParam.java index 13108c0be..a1dbab11b 100644 --- a/src/com/engine/salary/report/entity/param/SalaryStatisticsEmployeeSalaryQueryParam.java +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsEmployeeSalaryQueryParam.java @@ -47,4 +47,7 @@ public class SalaryStatisticsEmployeeSalaryQueryParam extends BaseQueryParam { // 閮ㄥ垎瀵煎嚭id private List ids; + + // 瀵煎嚭鏃舵樉绀哄垪瀹氬埗淇℃伅 + List columns; } \ No newline at end of file diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java index 8fe73f9a5..481d6d887 100644 --- a/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java @@ -88,4 +88,28 @@ public class SalaryStatisticsReportDataQueryParam extends BaseQueryParam { // "鍒嗕韩鎵规id private Long batchId; + + @Override + public String toString() { + return "SalaryStatisticsReportDataQueryParam{" + + "id=" + id + + ", dimensionId=" + dimensionId + + ", salaryStartMonth='" + salaryStartMonth + '\'' + + ", salaryEndMonth='" + salaryEndMonth + '\'' + + ", taxAgent=" + taxAgent + + ", salarySob=" + salarySob + + ", incomeCategory=" + incomeCategory + + ", subCompany=" + subCompany + + ", depart=" + depart + + ", grade=" + grade + + ", position=" + position + + ", status=" + status + + ", employee=" + employee + + ", hiredate=" + hiredate + + ", leavedate=" + leavedate + + ", unitType=" + unitType + + ", isShare=" + isShare + + ", batchId=" + batchId + + '}'; + } } diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java index ecde4e139..3a6e00071 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java @@ -367,8 +367,23 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala 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); + List salaryItemList = getSalaryItemService(user).listAll(); + 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()); return SalaryStatisticsEmployeeDetailResultDTO.builder() .salaryAcctEmployeeList(salaryAcctEmployeeList) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsPushServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsPushServiceImpl.java index 421f0a18e..25f724899 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsPushServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsPushServiceImpl.java @@ -200,7 +200,7 @@ public class SalaryStatisticsPushServiceImpl extends Service implements SalarySt public void sendMsg(SalaryStatisticsPushParam param) { // 鑾峰彇琚垎浜汉 - List receivers = getSalaryEmployeeService(user).getEmployeeByIds(param.getSharedBy()); + List receivers = getSalaryEmployeeService(user).getEmployeeByIdsIncludeAccountType(param.getSharedBy()); // 鍙戦佹秷鎭 receivers.forEach(receiver -> { // 鍙戦佹秷鎭... @@ -654,7 +654,7 @@ public class SalaryStatisticsPushServiceImpl extends Service implements SalarySt } else { salaryStatisticsPushPOS = getSalaryStatisticsPushMapper().listSome(SalaryStatisticsPushPO.builder().build()); } - + int total = salaryStatisticsPushPOS.size(); salaryStatisticsPushPOS = SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), salaryStatisticsPushPOS); PageInfo dtoPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), SalaryStatisticsPushTableDTO.class); if (CollectionUtils.isNotEmpty(salaryStatisticsPushPOS)) { @@ -679,12 +679,12 @@ public class SalaryStatisticsPushServiceImpl extends Service implements SalarySt .effectiveTime(StringUtils.isEmpty(po.getStartTime()) ? "" : po.getStartTime() + "鈥斺" + (StringUtils.isEmpty(po.getEndTime()) ? "" : po.getEndTime())) .id(po.getId()) - .successPush(buildSuccessPush(groupByBatchId.get(po.getId()))) - .sharedView(buildSharedView(groupByBatchId.get(po.getId()))) + .successPush(buildSuccessPush(groupByBatchId.getOrDefault(po.getId(), Collections.emptyList()))) + .sharedView(buildSharedView(groupByBatchId.getOrDefault(po.getId(), Collections.emptyList()))) .build(); }).collect(Collectors.toList()); dtoPageInfo.setList(dtoList); - dtoPageInfo.setTotal(dtoList.size()); + dtoPageInfo.setTotal(total); } return dtoPageInfo; } @@ -699,7 +699,10 @@ public class SalaryStatisticsPushServiceImpl extends Service implements SalarySt } public String buildSuccessPush(List list) { - List employeeByIds = getSalaryEmployeeService(user).getEmployeeByIds(list.stream().filter(po -> Objects.equals(po.getPushStatus(), "true") && !(Objects.equals(po.getRebackStatus(), "true"))).map(SalaryStatisticsPushDetailPO::getEmployeeId).collect(Collectors.toList())); + List employeeIds = list.stream() + .filter(po -> Objects.equals(po.getPushStatus(), "true") && !(Objects.equals(po.getRebackStatus(), "true"))) + .map(SalaryStatisticsPushDetailPO::getEmployeeId).collect(Collectors.toList()); + List employeeByIds = getSalaryEmployeeService(user).getEmployeeByIdsIncludeAccountType(employeeIds); Set employeeName = employeeByIds.stream().map(DataCollectionEmployee::getUsername).collect(Collectors.toSet()); return String.join("銆", employeeName); } diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index db2f739c0..b75c5c413 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -1102,8 +1102,6 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary List fieldSettings = Optional.ofNullable(Optional.ofNullable(employeeInfoExpandDTO).orElse(new EmployeeInfoExpandDTO()).getFieldSettings()).orElse(new ArrayList<>()); Map> expandEmployeeMap = getSalaryEmployeeService(user).expandEmployeeMap(empIds, employeeInfoExpandDTO); - log.info("鎵╁睍灞炴" + expandEmployeeMap); - // List extEmployees = extEmployeeService.listByIdsWithDeleted(accountDetailPOList.stream().filter(e -> EmployeeTypeEnum.EXT_EMPLOYEE.getValue().equals(e.getEmployeeType())).map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList()), data.getTenantKey()); // Map employeeExtByIdMap = SalaryEntityUtil.convert2Map(extEmployees, ExtEmployeePO::getId, ExtEmployeePO::getUsername); diff --git a/src/com/engine/salary/report/web/SalaryStatisticsReportController.java b/src/com/engine/salary/report/web/SalaryStatisticsReportController.java index 1c062650e..219ee67a0 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsReportController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsReportController.java @@ -6,7 +6,6 @@ import com.engine.salary.report.wrapper.SalaryStatisticsReportWrapper; import com.engine.salary.util.ResponseResult; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -158,17 +157,10 @@ public class SalaryStatisticsReportController { * * @return */ - @GET + @POST @Path("/exportData") @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response exportData(@Context HttpServletRequest request, @Context HttpServletResponse response) { - SalaryStatisticsReportDataQueryParam param = SalaryStatisticsReportDataQueryParam.builder() - .id(Long.parseLong(request.getParameter("id"))) - .dimensionId(Long.parseLong(request.getParameter("dimensionId"))) - .salaryStartMonth(request.getParameter("salaryStartMonth")) - .salaryEndMonth(request.getParameter("salaryEndMonth")) - .isShare(StringUtils.equals(request.getParameter("isShare"), "true")) - .build(); + public Response exportData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryStatisticsReportDataQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); Map map = getSalaryStatisticsReportWrapper(user).exportData(param); diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java index e74dd2bb4..e498c64b1 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsEmployeeWrapper.java @@ -10,6 +10,7 @@ import com.engine.salary.component.SalaryWeaTable; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.report.common.constant.SalaryConstant; import com.engine.salary.report.entity.bo.SalaryStatisticsReportBO; import com.engine.salary.report.entity.dto.SalaryStatisticsEmployeeDetailResultDTO; @@ -20,10 +21,12 @@ 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.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.excel.ExcelUtilPlus; 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 org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -137,6 +140,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { /** * 鑾峰彇鍛樺伐鍙戣柂鏄庣粏鍒楄〃 + * * @param queryParam */ public Map salaryList(SalaryStatisticsEmployeeSalaryQueryParam queryParam) { @@ -147,7 +151,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 鑾峰彇鍙戣柂浜哄憳 PageInfo salaryAcctEmployeePageInfo = getSalaryStatisticsEmployeeService(user).listSalaryAcctEmp(queryParam); // 鑾峰彇钖祫鏍哥畻缁撴灉 - SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(salaryAcctEmployeePageInfo.getList()); + SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(salaryAcctEmployeePageInfo.getList()); List> records = getSalaryStatisticsEmployeeService(user).listDetailPage(salaryStatisticsEmployeeDetailResult, null); Map countResultMap = Maps.newHashMap(); @@ -183,7 +187,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 缁撴灉 if (queryParam.isExport()) { resultMap.put("columns", weaTableColumns); - resultMap.put("salaryItems",salaryStatisticsEmployeeDetailResult.getSalaryItemList()); + resultMap.put("salaryItems", salaryStatisticsEmployeeDetailResult.getSalaryItemList()); resultMap.put("countResult", countResultMap); } else { WeaTable table = new WeaTable(); @@ -205,6 +209,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service { /** * 鑾峰彇鍛樺伐鍙戣柂鏄庣粏鍒楄〃 + * * @param queryParam */ public Map salaryListSum(SalaryStatisticsEmployeeSalaryQueryParam queryParam) { @@ -215,25 +220,39 @@ public class SalaryStatisticsEmployeeWrapper extends Service { queryParam.setExport(true); // 鑾峰彇鍙戣柂浜哄憳 PageInfo salaryAcctEmployeePageInfo = getSalaryStatisticsEmployeeService(user).listSalaryAcctEmp(queryParam); - // 鑾峰彇钖祫鏍哥畻缁撴灉 - SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(salaryAcctEmployeePageInfo.getList()); - List> records = getSalaryStatisticsEmployeeService(user).listDetailPage(salaryStatisticsEmployeeDetailResult, null); + List employeePOS = salaryAcctEmployeePageInfo.getList(); Map sumResultMap = Maps.newHashMap(); - if (CollectionUtils.isNotEmpty(records)) { - List salaryItems = salaryStatisticsEmployeeDetailResult.getSalaryItemList(); - for (SalaryItemPO item : salaryItems) { - BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.ZERO); - String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; - for (Map record : records) { - if (record.containsKey(itemKey)) { - if (Objects.nonNull(record.get(itemKey)) && StringUtils.isNotEmpty(record.get(itemKey).toString()) && NumberUtils.isCreatable(record.get(itemKey).toString())) { - sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); + + List> empParts = Lists.partition(employeePOS, 500); + + for (int i = 0; i < empParts.size(); i++) { + // 鑾峰彇钖祫鏍哥畻缁撴灉 + SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(empParts.get(i)); + List> records = getSalaryStatisticsEmployeeService(user).listDetailPage(salaryStatisticsEmployeeDetailResult, null); + + if (CollectionUtils.isNotEmpty(records)) { + List salaryItems = salaryStatisticsEmployeeDetailResult.getSalaryItemList(); + // 杩囨护鍙粺璁℃暟鍊煎瀷钖祫椤圭洰 + salaryItems = salaryItems.stream().filter(salaryItemPO -> salaryItemPO.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).collect(Collectors.toList()); + for (SalaryItemPO item : salaryItems) { + BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.ZERO); + String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX; + for (Map record : records) { + if (record.containsKey(itemKey)) { + if (Objects.nonNull(record.get(itemKey)) && StringUtils.isNotEmpty(record.get(itemKey).toString()) && NumberUtils.isCreatable(record.get(itemKey).toString())) { + sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString())); + } } } + Object o = sumResultMap.get(itemKey + "_n"); + if (o != null) { + sumBigDecimal = sumBigDecimal.add((BigDecimal) o); + } + sumResultMap.put(itemKey + "_n", sumBigDecimal); + // 钖祫椤圭洰鍚堣 + sumResultMap.put(itemKey, ReportDataUtil.thousandthConvert(sumBigDecimal.toString())); } - // 钖祫椤圭洰鍚堣 - sumResultMap.put(itemKey, ReportDataUtil.thousandthConvert(sumBigDecimal.toString())); } } resultMap.put("sumRow", sumResultMap); @@ -249,6 +268,15 @@ public class SalaryStatisticsEmployeeWrapper extends Service { List> resultList = ((PageInfo>) resultMap.get("pageInfo")).getList(); Map countResult = (Map)resultMap.get("countResult"); + Map columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn); + List finalColumns = new ArrayList<>(); + queryParam.getColumns().forEach(col -> { + WeaTableColumn column = columnMap.get(col); + if (column != null) { + finalColumns.add(column); + } + }); + columns = finalColumns; List> rowList = new ArrayList<>(); // 琛ㄥご rowList.add(columns.stream().map(WeaTableColumn::getText).collect(Collectors.toList())); @@ -263,12 +291,12 @@ public class SalaryStatisticsEmployeeWrapper extends Service { // 鍚堣 List sumRow = new ArrayList<>(); sumRow.add("鎬昏"); - for (int i=1; i exportDetailList(SalaryStatisticsEmployeeDetailQueryParam queryParam) { diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 9bf43c582..22fb6261f 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -30,6 +30,7 @@ import com.engine.salary.service.impl.*; import com.engine.salary.util.*; import com.engine.salary.util.excel.ExcelUtilPlus; 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 org.apache.commons.collections4.CollectionUtils; @@ -325,11 +326,32 @@ public class SalaryStatisticsReportWrapper extends Service { //宸茬紦瀛樼殑鎶ヨ〃id String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); String salaryReportConditions = ""; + // 鑾峰彇浜哄憳缁村害id + Optional empDimensionOptional = getSalaryStatisticsDimensionService(user).listAllDefaultDimension().stream().filter(dim -> dim.getDimName().equals("浜哄憳")).map(SalaryStatisticsDimensionPO::getId).findFirst(); + Long empDimensionId = 0L; + if (empDimensionOptional.isPresent()) { + empDimensionId = empDimensionOptional.get(); + } if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { //鎶ヨ〃涓紦瀛樼殑鏉′欢 salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { - return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); + Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); + if (param.getDimensionId().equals(empDimensionId)) { + // 浜哄憳缁村害闇瑕佸垎椤 + Map finalResultMap = new HashMap<>(); + PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); + PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); + finalPageInfo.setTotal(pageInfo.getList().size()); + finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); + finalResultMap.put("pageInfo", finalPageInfo); + finalResultMap.put("columns", result.get("columns")); + finalResultMap.put("countResult", result.get("countResult")); + finalResultMap.put("reportId", id); + return finalResultMap; + } + + return result; } } @@ -356,6 +378,20 @@ public class SalaryStatisticsReportWrapper extends Service { getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id, salaryReportConditions + "," + paramMd5); getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5, resultMap); + Map finalResultMap = Maps.newHashMap(); + // 缂撳瓨瀹屼箣鍚庣粨鏋滃垎椤 + if (param.getDimensionId().equals(empDimensionId)) { + // 鍙湁鏄汉鍛樼淮搴︽墠鍒嗛〉 + PageInfo> pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); + pageInfo.setTotal(page.getList().size()); + pageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), page.getList())); + finalResultMap.put("pageInfo", pageInfo); + finalResultMap.put("columns", weaTableColumns); + finalResultMap.put("countResult", countResultMap); + finalResultMap.put("reportId", id); + + return finalResultMap; + } return resultMap; } @@ -368,11 +404,12 @@ public class SalaryStatisticsReportWrapper extends Service { * @return */ public Map exportData(SalaryStatisticsReportDataQueryParam param) { - if (param.getId() == null || param.getDimensionId() == null) { + Long id = param.getId(); + if (id == null || param.getDimensionId() == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "鍙傛暟閿欒")); } - SalaryStatisticsReportPO po = this.getSalaryStatisticsReportService(user).getById(param.getId()); + SalaryStatisticsReportPO po = this.getSalaryStatisticsReportService(user).getById(id); if (po == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161845, "钖叕缁熻鎶ヨ〃涓嶅瓨鍦")); } @@ -381,72 +418,98 @@ public class SalaryStatisticsReportWrapper extends Service { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161300, "缁熻缁村害涓嶅瓨鍦")); } sharedReportCheck(param.isShare(), po); - // 鍙傛暟杞崲 - SalaryStatisticsReportBO.poToQueryParam(param, po); // 鏌ヨ鑷畾涔夌粺璁¢」鐩 List salaryStatisticsItemList = this.getSalaryStatisticsItemService(user).listByStatisticsReportId(po.getId()); - // 鍒楄〃data - PageInfo> page = this.getSalaryStatisticsReportService(user).buildReportRecords(dimension, param, salaryStatisticsItemList); - // 缁勮鍚堣 - Map countResultMap = SalaryStatisticsReportBO.buildTotal(page, salaryStatisticsItemList, (long) user.getUID()); - List> list = page.getList(); - if (CollectionUtils.isNotEmpty(list) && MapUtils.isNotEmpty(countResultMap)) { - list.add(countResultMap); - } - // 鑾峰彇鏁版嵁 - List> records = list.stream().map(m -> m.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() + StringUtils.EMPTY))).collect(Collectors.toList()); + // 鍙傛暟杞崲 + SalaryStatisticsReportBO.poToQueryParam(param, po); + String paramMd5 = SecureUtil.md5(param + salaryStatisticsItemList.toString()); - // 鑾峰彇鍒楀ご - List weaTableColumns = SalaryStatisticsReportBO.buildReportColumns(dimension, salaryStatisticsItemList); + //宸茬紦瀛樼殑鎶ヨ〃id + String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); + String salaryReportConditions = ""; - // 缁勮瀵煎嚭鍙傛暟 -// ExportCommonParam exportParam = SalaryStatisticsReportBO.buildExportParam(dimension.getDimName(), weaTableColumns, records); -// exportParam.setSheetName(SalaryI18nUtil.getI18nLabel(179263, "钖叕缁熻鎶ヨ〃") + "-" + exportParam.getDimensionName()); -// + if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { + //鎶ヨ〃涓紦瀛樼殑鏉′欢 + salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); + if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { + Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); + // 鑾峰彇鍒楀ご + List weaTableColumns = (List) result.get("columns"); + PageInfo> page = (PageInfo>) result.get("pageInfo"); + // 缁勮鍚堣 + Map countResultMap = SalaryStatisticsReportBO.buildTotal(page, salaryStatisticsItemList, (long) user.getUID()); + List> list = page.getList(); + if (CollectionUtils.isNotEmpty(list) && MapUtils.isNotEmpty(countResultMap)) { + list.add(countResultMap); + } + // 鑾峰彇鏁版嵁 + List> records = list.stream().map(m -> m.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() + StringUtils.EMPTY))).collect(Collectors.toList()); - List rows = new ArrayList<>(); - rows.add(weaTableColumns); + List rows = new ArrayList<>(); + rows.add(weaTableColumns); - List head = new ArrayList<>(); - weaTableColumns.forEach(weaTableColumn -> { - String column = weaTableColumn.getColumn(); - if (CollectionUtils.isEmpty(weaTableColumn.getChildren())) { - head.add(column); - } else { - weaTableColumn.getChildren().forEach(children -> { - head.add(children.getColumn()); + List head = new ArrayList<>(); + weaTableColumns.forEach(weaTableColumn -> { + String column = weaTableColumn.getColumn(); + if (CollectionUtils.isEmpty(weaTableColumn.getChildren())) { + head.add(column); + } else { + weaTableColumn.getChildren().forEach(children -> { + head.add(children.getColumn()); + }); + } }); - } - }); - for (Map map : records) { - List row = Lists.newArrayListWithExpectedSize(records.size()); - head.forEach(k -> { - row.add(map.getOrDefault(k, StringUtils.EMPTY)); - }); - rows.add(row); + List itemIds = salaryStatisticsItemList.stream().map(item -> item.getItemValue().split(",")).flatMap(Arrays::stream).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); + List salaryItemPOList = getSalaryItemService(user).listByIds(itemIds); + List numberItemIds = salaryItemPOList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).map(salaryItemPO -> salaryItemPO.getId().toString()).collect(Collectors.toList()); + Map salaryStatisticsItemMap = SalaryEntityUtil.convert2Map(salaryStatisticsItemList, statisticsItemPO -> statisticsItemPO.getId().toString()); + + for (Map map : records) { + List row = Lists.newArrayListWithExpectedSize(records.size()); + head.forEach(k -> { + // 鑾峰彇鏄暟鍊艰繕鏄枃鏈 + if (k.contains(SalaryStatisticsReportBO.UD)) { + String[] split = k.split(SalaryStatisticsReportBO.UD); + String salaryItemId = split[0]; + SalaryStatisticsItemPO salaryStatisticsItemPO = salaryStatisticsItemMap.get(salaryItemId); + if (salaryStatisticsItemPO != null) { + Optional textItemOptional = Arrays.stream(salaryStatisticsItemPO.getItemValue().split(",")).filter(itemId -> !numberItemIds.contains(itemId)).findFirst(); + row.add((!textItemOptional.isPresent() && NumberUtils.isCreatable(map.getOrDefault(k, StringUtils.EMPTY).replace(",", ""))) ? new BigDecimal(map.get(k).replace(",", "")) : map.getOrDefault(k, StringUtils.EMPTY)); + } else { + row.add(map.getOrDefault(k, StringUtils.EMPTY)); + } + } else { + row.add(map.getOrDefault(k, StringUtils.EMPTY)); + } + }); + rows.add(row); + } + + String sheetName = SalaryI18nUtil.getI18nLabel(179263, "钖叕缁熻鎶ヨ〃") + "-" + dimension.getDimName(); + XSSFWorkbook book = ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, sheetName, true); + + Map map = new HashMap<>(); + map.put("workbook", book); + map.put("fileName", sheetName); + + // 璁板綍鎿嶄綔鏃ュ織 + String name = SalaryI18nUtil.getI18nLabel(0, "瀵煎嚭"); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setTargetId(po.getId().toString()); + loggerContext.setTargetName(po.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.EXCEL_EXPORT.getValue()); + loggerContext.setOperateTypeName(name); + loggerContext.setOperatedesc(name + SalaryI18nUtil.getI18nLabel(0, "钖叕缁熻鎶ヨ〃") + "-" + po.getReportName()); + loggerContext.setUser(user); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + + return map; + } } - String sheetName = SalaryI18nUtil.getI18nLabel(179263, "钖叕缁熻鎶ヨ〃") + "-" + dimension.getDimName(); - XSSFWorkbook book = ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, sheetName, true); - - Map map = new HashMap<>(); - map.put("workbook", book); - map.put("fileName", sheetName); - - // 璁板綍鎿嶄綔鏃ュ織 - String name = SalaryI18nUtil.getI18nLabel(0, "瀵煎嚭"); - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setTargetId(po.getId().toString()); - loggerContext.setTargetName(po.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.EXCEL_EXPORT.getValue()); - loggerContext.setOperateTypeName(name); - loggerContext.setOperatedesc(name + SalaryI18nUtil.getI18nLabel(0, "钖叕缁熻鎶ヨ〃") + "-" + po.getReportName()); - loggerContext.setUser(user); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); - - return map; + throw new SalaryRunTimeException("鏈煡璇㈡姤琛ㄦ暟鎹紒"); } /** diff --git a/src/com/engine/salary/service/ApiTaskService.java b/src/com/engine/salary/service/ApiTaskService.java new file mode 100644 index 000000000..bdf3ac137 --- /dev/null +++ b/src/com/engine/salary/service/ApiTaskService.java @@ -0,0 +1,7 @@ +package com.engine.salary.service; + +public interface ApiTaskService { + + void writeApiTaskRecord (String source,String api,String param,String response); + +} diff --git a/src/com/engine/salary/service/EmployeeDeclareService.java b/src/com/engine/salary/service/EmployeeDeclareService.java index d1cb79875..a7a301b42 100644 --- a/src/com/engine/salary/service/EmployeeDeclareService.java +++ b/src/com/engine/salary/service/EmployeeDeclareService.java @@ -6,6 +6,7 @@ import com.engine.salary.entity.employeedeclare.dto.EmployeeDeclareListDTO; import com.engine.salary.entity.employeedeclare.dto.EmployeeDeclareRateDTO; import com.engine.salary.entity.employeedeclare.param.*; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctTaxAgentPO; import com.engine.salary.util.page.PageInfo; import java.util.Collection; @@ -109,6 +110,14 @@ public interface EmployeeDeclareService{ */ PageInfo listPage4FailByParam(EmployeeDeclareFailListQueryParam param); + /** + * 鏍规嵁钖祫鏍哥畻璁板綍鍏崇郴鐨勪釜绋庢墸缂翠箟鍔′汉鏌ヨ鎶ラ佷汉鍛 + * + * @param salaryAcctTaxAgents + * @return + */ + List listBySalaryAcctTaxAgent(List salaryAcctTaxAgents); + /** * 淇濆瓨 * @@ -176,19 +185,6 @@ public interface EmployeeDeclareService{ */ void getDeclareFeedback(EmployeeDeclareParam param, EmployeeDeclareRateDTO employeeDeclareRate); - /** - * 浣滃簾浜哄憳 - * @param param - */ - String invalid(EmployeeInvalidParam param); - - /** - * 鍏抽敭淇℃伅鍙樻洿 - * @param param - * @return - */ - String informationChange(EmployeeInformationChangeParam param); - /** * 鍚屾浠昏亴鍙楅泧鏃ユ湡涓哄叆鑱屾棩鏈 * diff --git a/src/com/engine/salary/service/SalaryAcctCalcTaxReqService.java b/src/com/engine/salary/service/SalaryAcctCalcTaxReqService.java new file mode 100644 index 000000000..8fe41c879 --- /dev/null +++ b/src/com/engine/salary/service/SalaryAcctCalcTaxReqService.java @@ -0,0 +1,30 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salaryacct.po.SalaryAcctCalcTaxReqPO; + +import java.util.List; + +public interface SalaryAcctCalcTaxReqService { + + /** + * 鏍规嵁钖祫鏍哥畻璁板綍鏌ヨ + * + * @param salaryAcctRecordId + * @return + */ + List listByRecordId(Long salaryAcctRecordId); + + /** + * 鎵归噺淇濆瓨 + * + * @param salaryAcctCalcTaxReqs + */ + void batchSave(List salaryAcctCalcTaxReqs); + + /** + * 鏍规嵁钖祫鏍哥畻璁板綍鍒犻櫎 + * + * @param salaryAcctRecordId + */ + void deleteByRecordId(Long salaryAcctRecordId); +} diff --git a/src/com/engine/salary/service/SalaryAcctEmployeeService.java b/src/com/engine/salary/service/SalaryAcctEmployeeService.java index 10bdf5bd5..e1fe3f502 100644 --- a/src/com/engine/salary/service/SalaryAcctEmployeeService.java +++ b/src/com/engine/salary/service/SalaryAcctEmployeeService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.salaryacct.dto.AbnormalEmployeeListDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; @@ -264,4 +265,19 @@ public interface SalaryAcctEmployeeService { */ void lockEmp(SalaryAcctResultUpdateLockStatusParam updateParam); + /** + * 鏈姤閫佷汉鍛 + * @param queryParam + * @return + */ + PageInfo listPage4NotDeclareByParam(AbnormalEmployeeListQueryParam queryParam); + + + int countNotDeclareByParam(AbnormalEmployeeListQueryParam queryParam); + + /** + * 鏇存柊 + * @param salaryAcctEmployeePO + */ + void updateIgnoreNull(SalaryAcctEmployeePO salaryAcctEmployeePO); } diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index 7c8e8a00f..b4af31089 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -5,7 +5,9 @@ import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; import com.engine.salary.entity.salaryacct.param.*; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; +import com.engine.salary.enums.common.SalaryLogOperateTypeEnum; import com.engine.salary.util.page.PageInfo; import java.util.Collection; @@ -116,6 +118,7 @@ public interface SalaryAcctResultService { * @param salaryAcctResultPOS 钖祫鏍哥畻缁撴灉 */ void batchSave(List salaryAcctResultPOS); + void batchUpdate(List salaryAcctResultPOS); /** * 鏍规嵁钖祫鏍哥畻浜哄憳id鍒犻櫎钖祫鏍哥畻缁撴灉 @@ -148,6 +151,13 @@ public interface SalaryAcctResultService { */ void calculate(SalaryAcctCalculateParam calculateParam, DataCollectionEmployee simpleEmployee); + /** + * 鏍哥畻绋庡悗 + * @param calculateParam + * @param simpleEmployee + */ + void afterTaxAccounting(SalaryAfterTaxAcctCalculateParam calculateParam, DataCollectionEmployee simpleEmployee); + /** * 鏍规嵁钖祫鏍哥畻璁板綍鐨刬d銆佷釜绋庢墸缂翠箟鍔′汉鏌ヨ钖祫鏍哥畻缁撴灉 * @@ -210,4 +220,16 @@ public interface SalaryAcctResultService { * @param param */ void batchUpdate(SalaryAcctResultBatchUpdateParam param); + + /** + * 璁板綍鏃ュ織 + * + * @param salaryAcctRecord + * @param newResultValueMap + * @param operateType + */ + void writeBatchLog(SalaryAcctRecordPO salaryAcctRecord, + Map newResultValueMap, + SalaryLogOperateTypeEnum operateType); + } diff --git a/src/com/engine/salary/service/SalaryBillService.java b/src/com/engine/salary/service/SalaryBillService.java index 530c3080e..4878df87b 100644 --- a/src/com/engine/salary/service/SalaryBillService.java +++ b/src/com/engine/salary/service/SalaryBillService.java @@ -1,7 +1,10 @@ package com.engine.salary.service; +import com.engine.salary.entity.salaryBill.dto.SalaryBillSendDTO; import com.engine.salary.entity.salaryBill.param.SalaryExportPdfParam; import com.engine.salary.entity.salaryBill.param.SalarySendGrantParam; +import com.engine.salary.entity.salaryBill.po.SalarySendPO; +import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; import java.util.List; import java.util.Map; @@ -52,6 +55,15 @@ public interface SalaryBillService { String genPdfBeforeExport(SalaryExportPdfParam salaryExportPdfParam); + /** + * 鏋勫缓鍙戞斁鍙傛暟 + * @param salarySend + * @param taxAgentName + * @param salaryTemplate + * @return + */ + SalaryBillSendDTO buildSendParams(SalarySendPO salarySend, String taxAgentName, SalaryTemplatePO salaryTemplate); + /** * 宸ヨ祫鍗曟挙鍥 * diff --git a/src/com/engine/salary/service/SalaryCalcTaxService.java b/src/com/engine/salary/service/SalaryCalcTaxService.java new file mode 100644 index 000000000..7e6efec5c --- /dev/null +++ b/src/com/engine/salary/service/SalaryCalcTaxService.java @@ -0,0 +1,29 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salaryacct.dto.SalaryCalcTaxInfoDTO; +import com.engine.salary.entity.salaryacct.param.SalaryCalcTaxParam; + +public interface SalaryCalcTaxService { + + /** + * 鏍规嵁钖祫鏍哥畻璁板綍id鑾峰彇鍦ㄧ嚎璁$畻涓◣鐨勭浉鍏充俊鎭 + * + * @param salaryCalcTaxParam + * @return + */ + SalaryCalcTaxInfoDTO getCalcTaxInfo(SalaryCalcTaxParam salaryCalcTaxParam); + + /** + * 璁$畻涓◣ + * + * @param salaryCalcTaxParam + */ + void calcTax(SalaryCalcTaxParam salaryCalcTaxParam); + + /** + * 璁$畻涓◣鑾峰彇鍙嶉 + * + * @param salaryCalcTaxParam + */ + void calcTaxFeedback(SalaryCalcTaxParam salaryCalcTaxParam); +} diff --git a/src/com/engine/salary/service/SalaryEmployeeService.java b/src/com/engine/salary/service/SalaryEmployeeService.java index 5037e0b68..dbab79c4d 100644 --- a/src/com/engine/salary/service/SalaryEmployeeService.java +++ b/src/com/engine/salary/service/SalaryEmployeeService.java @@ -3,6 +3,7 @@ package com.engine.salary.service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.IdCardEmployee; 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; @@ -71,6 +72,14 @@ public interface SalaryEmployeeService { */ List getEmployeeByIds(List simpleEmployeeIds); + /** + * 鑾峰彇浜哄憳淇℃伅 鍖呮嫭娆¤处鍙 + * + * @param simpleEmployeeIds + * @return 绠鍗 + */ + List getEmployeeByIdsIncludeAccountType(List simpleEmployeeIds); + /** * 鑾峰彇褰撳墠鐧诲綍浜虹殑淇℃伅 * @param employeeId @@ -96,14 +105,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); @@ -190,4 +205,11 @@ public interface SalaryEmployeeService { */ List listByKeyword(String keyword); + + /** + * 鏍规嵁鑱岀Оid鑾峰彇鑱岀О淇℃伅 + * @param jobCallId + * @return + */ + JobCallInfo getJobCallInfoById(Long jobCallId); } diff --git a/src/com/engine/salary/service/SalarySendService.java b/src/com/engine/salary/service/SalarySendService.java index 72fc71423..4f570039b 100644 --- a/src/com/engine/salary/service/SalarySendService.java +++ b/src/com/engine/salary/service/SalarySendService.java @@ -218,4 +218,11 @@ public interface SalarySendService { List getByIds(List salarySendId); List listSome(SalarySendPO param); + + /** + * 宸ヨ祫鍗曢瑙 + * @param param + * @return + */ + Map preview(SalaryPreviewParam param); } diff --git a/src/com/engine/salary/service/SalarySobTaxRuleService.java b/src/com/engine/salary/service/SalarySobTaxRuleService.java new file mode 100644 index 000000000..b4d15c58b --- /dev/null +++ b/src/com/engine/salary/service/SalarySobTaxRuleService.java @@ -0,0 +1,51 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.salarysob.dto.SalarySobTaxRuleDTO; +import com.engine.salary.entity.salarysob.param.SalarySobTaxRuleSaveParam; +import com.engine.salary.entity.salarysob.po.SalarySobTaxRulePO; + +import java.util.Collection; +import java.util.List; + +/** + * 钖祫璐﹀鐨勪釜绋庤鍒 + *

Copyright: Copyright (c) 2023

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +public interface SalarySobTaxRuleService { + + /** + * 鏍规嵁钖祫璐﹀id鏌ヨ钖祫璐﹀鐨勪釜绋庤鍒 + * + * @param salarySobIds + * @return + */ + List listBySalarySobId(Long salarySobIds); + + /** + * 鏍规嵁钖祫璐﹀id鏌ヨ钖祫璐﹀鐨勪釜绋庤鍒 + * + * @param salarySobId + * @return + */ + List getSalarySobTaxRuleDTO(Long salarySobId); + + /** + * 淇濆瓨 + * + * @param saveParam + */ + void saveByParam(SalarySobTaxRuleSaveParam saveParam); + + /** + * 鎸夎柂璧勮处濂梚d鍒犻櫎 + * + * @param salarySobIds + */ + void deleteBySalarySobIds(Collection salarySobIds); + + void saveBatch(List salarySobTaxReportRules); +} diff --git a/src/com/engine/salary/service/TaxDeclareRecordService.java b/src/com/engine/salary/service/TaxDeclareRecordService.java index 424e296d4..2b15ad623 100644 --- a/src/com/engine/salary/service/TaxDeclareRecordService.java +++ b/src/com/engine/salary/service/TaxDeclareRecordService.java @@ -2,10 +2,9 @@ package com.engine.salary.service; import com.engine.salary.common.YearMonthRange; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationRateDTO; -import com.engine.salary.entity.taxdeclaration.param.DeclareTaxResultFeedbackQueryParam; +import com.engine.salary.entity.taxdeclaration.param.GetCompanyIncomesQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; -import com.engine.salary.entity.taxdeclaration.param.TaxDeclareRecordParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclareRecordPO; import com.engine.salary.util.page.PageInfo; @@ -82,13 +81,6 @@ public interface TaxDeclareRecordService { */ void save(TaxDeclarationSaveParam saveParam); - /** - * 绋庡眬绔敵鎶ユ槑缁嗘煡璇 - * - */ - String queryCompanyIncomes(TaxDeclareRecordParam taxDeclareRecordParam); - - /** * 鍒锋柊鏁版嵁 * @@ -142,21 +134,20 @@ public interface TaxDeclareRecordService { /** - * 鐢虫姤鍐呯疆绠楃◣缁撴灉鏌ヨ + * 鏌ヨ浼佷笟鐢虫姤鏁版嵁鏄庣粏 * - * @param id * @return */ - Object getDeclareTaxResultFeedback(Long id); + Object getCompanyIncomes(GetCompanyIncomesQueryParam param); - XSSFWorkbook exportGetDeclareTaxResultFeedback(DeclareTaxResultFeedbackQueryParam param); + XSSFWorkbook exportGetCompanyIncomes(GetCompanyIncomesQueryParam param); /** * 浣滃簾 * * @param id */ - void cancelDeclare(Long id, Integer reportType); + void cancelDeclare(Long id, Integer reportType,TaxDeclarationRateDTO taxDeclarationRate); /** * 鑾峰彇浣滃簾鍙嶉 @@ -179,13 +170,6 @@ public interface TaxDeclareRecordService { */ void cancelCorrect(Long id); - /** - * 绋庡眬绔敵鎶ョ姸鎬佹煡璇 - * - * @param id - */ - String queryDeclareStatus(Long id); - void updateById(TaxDeclareRecordPO taxDeclareRecord); } diff --git a/src/com/engine/salary/service/TaxReportColumnService.java b/src/com/engine/salary/service/TaxReportColumnService.java index 329cd697e..bed870ffb 100644 --- a/src/com/engine/salary/service/TaxReportColumnService.java +++ b/src/com/engine/salary/service/TaxReportColumnService.java @@ -22,6 +22,14 @@ public interface TaxReportColumnService { */ List listAll(); + + /** + * 鏍规嵁鏄惁鏄姣斿瓧娈垫煡璇 + * @param contrastType 1鏄 0鍚 + * @return + */ + List listByContrastType(Integer contrastType); + /** * 鏍规嵁鎵寰楅」鐩煡璇釜绋庣敵鎶ヨ〃琛ㄥご * diff --git a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java index 301782ed1..ea1684fac 100644 --- a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java +++ b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java @@ -16,13 +16,12 @@ import com.engine.salary.enums.taxagent.TaxAgentTaxReturnPasswordTypeEnum; import com.engine.salary.enums.taxagent.TaxAgentTaxReturnStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxagent.TaxAgentTaxReturnMapper; -import com.engine.salary.service.TaxAgentService; -import com.engine.salary.service.TaxAgentTaxReturnCheckService; -import com.engine.salary.service.TaxAgentTaxReturnService; -import com.engine.salary.service.TaxDeclarationApiConfigService; -import com.engine.salary.util.*; -import com.engine.salary.util.db.MapperProxyFactory; +import com.engine.salary.remote.tax.client.CompanyClient; +import com.engine.salary.service.*; +import com.engine.salary.util.SalaryAssert; +import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -56,6 +55,10 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl return ServiceUtil.getService(TaxDeclarationApiConfigServiceImpl.class, user); } + protected ApiTaskService getApiTaskService(User user) { + return ServiceUtil.getService(ApiTaskServiceImpl.class, user); + } + /** * 鑾峰彇楠岃瘉绫诲瀷 * @@ -82,9 +85,7 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl po.setUpdateTime(new Date()); // 濡傛灉绋庡弸杩斿洖閿欒淇℃伅 if (!SzyhApiConstant.SUCCESS_CODE.equals(response.getHead().getCode()) || CollectionUtils.isEmpty(response.getBody())) { - po.setCheckStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue()); - po.setFailReason(response.getHead().getMsg()); - return new ArrayList<>(); + throw new SalaryRunTimeException(response.getHead().getMsg()); } // 濡傛灉绋庡弸杩斿洖楠岃瘉淇℃伅 List checkFormDTOList = buildCheckDTO(saveParam, response.getBody()); @@ -107,12 +108,12 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl * @param saveParam * @return */ - protected CompanyRegisterInfoResponse getCompanyRegisterInfoResponse(TaxDeclarationApiConfigPO apiConfig, TaxAgentTaxReturnPO taxAgentTaxReturnPO, TaxAgentTaxReturnSaveParam saveParam) { - TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxAgentTaxReturnPO.getTaxAgentId()); + protected CompanyRegisterInfoResponse getCompanyRegisterInfo(TaxDeclarationApiConfigPO apiConfig, TaxAgentTaxReturnPO taxAgentTaxReturnPO, TaxAgentTaxReturnSaveParam saveParam) { + Long taxAgentId = taxAgentTaxReturnPO.getTaxAgentId(); + TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxAgentId); if (taxAgentPO == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100545, "涓◣鎵g即涔夊姟浜轰笉瀛樺湪")); } - String url = apiConfig.getHost() + SzyhApiConstant.GET_REGISTER_INFO_URL; Map requestParam = new HashMap<>(4); requestParam.put("bizNo", IdGenerator.generate()); requestParam.put("qymc", taxAgentPO.getName()); @@ -121,15 +122,11 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl if (StringUtils.isNotEmpty(saveParam.getTaxRegistrationNumber())) { requestParam.put("djxhid", saveParam.getTaxRegistrationNumber()); } - String reqJson = JsonUtil.toJsonString(requestParam); - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - log.info("getCompanyRegisterInfo params = {}", reqJson); - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("getCompanyRegisterInfo === res : {}", res); - return JsonUtil.parseBean(res, CompanyRegisterInfoResponse.class); + + return new CompanyClient(taxAgentId).getCompanyRegisterInfo(requestParam); } + private List buildCheckDTO(TaxAgentTaxReturnSaveParam saveParam, List registerInfos) { List checkFormDTOList = new ArrayList<>(); for (int i = 1; i <= registerInfos.size(); i++) { @@ -168,7 +165,7 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl if (taxAgentPO == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100545, "涓◣鎵g即涔夊姟浜轰笉瀛樺湪")); } - String url = apiConfig.getHost() + SzyhApiConstant.CHECK_PASSWORD_URL; + Long taxAgentId = taxAgentPO.getId(); Map requestParam = new HashMap<>(16); requestParam.put("bizNo", IdGenerator.generate()); requestParam.put("qymc", taxAgentPO.getName()); @@ -188,13 +185,8 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl requestParam.put("bmbh", saveParam.getDepartmentCode()); requestParam.put("bmmc", saveParam.getDepartmentName()); } - String reqJson = JsonUtil.toJsonString(requestParam); - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - log.info("checkPassword === res : {}", reqJson); - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("checkPassword === res : {}", res); - return JsonUtil.parseObject(res, CheckPasswordResponse.class); + + return new CompanyClient(taxAgentId).checkPassword(requestParam); } /** diff --git a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java index 0a3db3b50..785939385 100644 --- a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java @@ -1,6 +1,7 @@ package com.engine.salary.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSON; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; @@ -10,10 +11,10 @@ import com.api.formmode.mybatis.util.SqlProxyHandle; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.AddUpDeductionBiz; import com.engine.salary.common.LocalDateRange; import com.engine.salary.config.SalaryElogConfig; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.constant.SzyhApiConstant; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpDeduction; @@ -66,6 +67,7 @@ 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.*; +import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelComment; import com.engine.salary.util.excel.ExcelParseHelper; @@ -75,7 +77,6 @@ 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.engine.salary.util.db.IdGenerator; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -89,6 +90,7 @@ import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.*; import java.util.*; @@ -1118,11 +1120,11 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction //鑾峰彇鎿嶄綔鎸夐挳璧勬簮 - List> rowList = getExcelRowDetailList(isChief, queryParam); + List> rowList = getExcelRowDetailList(isChief, queryParam); //鑾峰彇excel - return ExcelUtil.genWorkbook(rowList, "绱涓撻」闄勫姞鎵i櫎鏄庣粏"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "绱涓撻」闄勫姞鎵i櫎鏄庣粏", 2); } @@ -1132,32 +1134,33 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction * @param param * @return */ - private List> getExcelRowDetailList(boolean isChief, AddUpDeductionQueryParam param) { + private List> getExcelRowDetailList(boolean isChief, AddUpDeductionQueryParam param) { long employeeId = user.getUID(); //excel鏍囬 - List title = Arrays.asList("濮撳悕", "鐢虫姤鏈堜唤", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "宸ュ彿", "绱瀛愬コ鏁欒偛", "绱缁х画鏁欒偛", "绱浣忔埧璐锋鍒╂伅", "绱浣忔埧绉熼噾", "绱璧″吇鑰佷汉", "绱澶х梾鍖荤枟", "绱濠村辜鍎跨収鎶"); + List title = Arrays.asList("濮撳悕", "鐢虫姤鏈堜唤", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "宸ュ彿", "绱瀛愬コ鏁欒偛", "绱缁х画鏁欒偛", "绱浣忔埧璐锋鍒╂伅", "绱浣忔埧绉熼噾", "绱璧″吇鑰佷汉", "绱澶х梾鍖荤枟", "绱濠村辜鍎跨収鎶"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); //鏌ヨ璇︾粏淇℃伅 List list = new AddUpDeductionBiz().recordList(param); - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getDeclareMonth() == null ? "" : formatter.format(dto.getDeclareMonth()))); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getAddUpChildEducation())); - cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); - cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - cellList.add(Util.null2String(dto.getAddUpHousingRent())); - cellList.add(Util.null2String(dto.getAddUpSupportElderly())); - cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); - cellList.add(Util.null2String(dto.getAddUpInfantCare())); + cellList.add(NumberUtil.isNumber(dto.getAddUpChildEducation()) ? new BigDecimal(dto.getAddUpChildEducation()) : Util.null2String(dto.getAddUpChildEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpContinuingEducation()) ? new BigDecimal(dto.getAddUpContinuingEducation()) :Util.null2String(dto.getAddUpContinuingEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingLoanInterest()) ? new BigDecimal(dto.getAddUpHousingLoanInterest()) :Util.null2String(dto.getAddUpHousingLoanInterest())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingRent()) ? new BigDecimal(dto.getAddUpHousingRent()) :Util.null2String(dto.getAddUpHousingRent())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSupportElderly()) ? new BigDecimal(dto.getAddUpSupportElderly()) :Util.null2String(dto.getAddUpSupportElderly())); + cellList.add(NumberUtil.isNumber(dto.getAddUpIllnessMedical()) ? new BigDecimal(dto.getAddUpIllnessMedical()) :Util.null2String(dto.getAddUpIllnessMedical())); + cellList.add(NumberUtil.isNumber(dto.getAddUpInfantCare()) ? new BigDecimal(dto.getAddUpInfantCare()) :Util.null2String(dto.getAddUpInfantCare())); + return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); @@ -1177,7 +1180,7 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction } - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); rowList.addAll(dataRowList); return rowList; @@ -1265,7 +1268,7 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction SalaryElogConfig.addUpDeductionLoggerTemplate.write(loggerContext); //鑾峰彇excel - return ExcelUtil.genWorkbookV2(rowList, "绱涓撻」闄勫姞鎵i櫎"); + return ExcelUtil.genWorkbookV2WithDefaultPattern(rowList, "绱涓撻」闄勫姞鎵i櫎", 2); } private List> getLists(AddUpDeductionQueryParam param) { @@ -1300,13 +1303,13 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction cellList.add(Util.null2String(dto.getJobNum())); cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); - cellList.add(Util.null2String(dto.getAddUpChildEducation())); - cellList.add(Util.null2String(dto.getAddUpContinuingEducation())); - cellList.add(Util.null2String(dto.getAddUpHousingLoanInterest())); - cellList.add(Util.null2String(dto.getAddUpHousingRent())); - cellList.add(Util.null2String(dto.getAddUpSupportElderly())); - cellList.add(Util.null2String(dto.getAddUpIllnessMedical())); - cellList.add(Util.null2String(dto.getAddUpInfantCare())); + cellList.add(NumberUtil.isNumber(dto.getAddUpChildEducation()) ? new BigDecimal(dto.getAddUpChildEducation()) : Util.null2String(dto.getAddUpChildEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpContinuingEducation()) ? new BigDecimal(dto.getAddUpContinuingEducation()) :Util.null2String(dto.getAddUpContinuingEducation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingLoanInterest()) ? new BigDecimal(dto.getAddUpHousingLoanInterest()) :Util.null2String(dto.getAddUpHousingLoanInterest())); + cellList.add(NumberUtil.isNumber(dto.getAddUpHousingRent()) ? new BigDecimal(dto.getAddUpHousingRent()) :Util.null2String(dto.getAddUpHousingRent())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSupportElderly()) ? new BigDecimal(dto.getAddUpSupportElderly()) :Util.null2String(dto.getAddUpSupportElderly())); + cellList.add(NumberUtil.isNumber(dto.getAddUpIllnessMedical()) ? new BigDecimal(dto.getAddUpIllnessMedical()) :Util.null2String(dto.getAddUpIllnessMedical())); + cellList.add(NumberUtil.isNumber(dto.getAddUpInfantCare()) ? new BigDecimal(dto.getAddUpInfantCare()) :Util.null2String(dto.getAddUpInfantCare())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); @@ -1675,7 +1678,7 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction // 鏍¢獙璇锋眰缁撴灉 String responseCode = Optional.ofNullable(response).map(QuerySpecialAmountFeedbackResponse::getHead).map(SzyhResponseHead::getCode).orElse(null); String msg = Optional.ofNullable(response).map(QuerySpecialAmountFeedbackResponse::getHead).map(SzyhResponseHead::getMsg).orElse(null); - if (SzyhApiConstant.HANDLING_CODE.equals(responseCode)) { + if (SzyhApiConstant.HANDLING_CODE.equals(responseCode)||SzyhApiConstant.TASK_HANDLING_CODE.equals(responseCode)) { // 濡傛灉鎺ュ彛浠嶅湪澶勭悊涓紝鍒欑户缁疆璇 return AddUpDeductionRequestResultDTO.builder().finish(false).build(); } diff --git a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java index 496bfa574..005a9ab13 100644 --- a/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpSituationServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSON; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; @@ -12,7 +13,6 @@ import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.AddUpSituationBiz; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SzyhApiConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpSituation; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -68,6 +68,7 @@ import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.YearMonth; @@ -308,7 +309,7 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation SalaryElogConfig.addUpSituationLoggerTemplate.write(loggerContext); // 鑾峰彇excel - return ExcelUtil.genWorkbookV2(rowList, "绱鎯呭喌"); + return ExcelUtil.genWorkbookV2WithDefaultPattern(rowList, "绱鎯呭喌", 2); } @@ -352,19 +353,19 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation cellList.add(Util.null2String(dto.getJobNum())); cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); - cellList.add(Util.null2String(dto.getAddUpIncome())); - cellList.add(Util.null2String(dto.getAddUpSubtraction())); - cellList.add(Util.null2String(dto.getAddUpSocialSecurityTotal())); - // cellList.add(Util.null2String(dto.getAddUpAccumulationFundTotal())); - cellList.add(Util.null2String(dto.getAddUpEnterpriseAndOther())); - cellList.add(Util.null2String(dto.getAddUpOtherDeduction())); - cellList.add(Util.null2String(dto.getAddUpTaxExemptIncome())); - cellList.add(Util.null2String(dto.getAddUpAllowedDonation())); - cellList.add(Util.null2String(dto.getAddUpTaxSavings())); - cellList.add(Util.null2String(dto.getAddUpAdvanceTax())); - cellList.add(Util.null2String(dto.getActualAddUpAdvanceTax())); - cellList.add(Util.null2String(dto.getTaxAdjustment())); - cellList.add(Util.null2String(dto.getAddUpTaxableIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpIncome()) ? new BigDecimal(dto.getAddUpIncome()) : Util.null2String(dto.getAddUpIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSubtraction()) ? new BigDecimal(dto.getAddUpSubtraction()) : Util.null2String(dto.getAddUpSubtraction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSocialSecurityTotal()) ? new BigDecimal(dto.getAddUpSocialSecurityTotal()) : Util.null2String(dto.getAddUpSocialSecurityTotal())); + // cellList.add(NumberUtil.isNumber(dto.getAddUpAccumulationFundTotal()) ? new BigDecimal(dto.getAddUpAccumulationFundTotal()) : Util.null2String(dto.getAddUpAccumulationFundTotal())); + cellList.add(NumberUtil.isNumber(dto.getAddUpEnterpriseAndOther()) ? new BigDecimal(dto.getAddUpEnterpriseAndOther()) : Util.null2String(dto.getAddUpEnterpriseAndOther())); + cellList.add(NumberUtil.isNumber(dto.getAddUpOtherDeduction()) ? new BigDecimal(dto.getAddUpOtherDeduction()) : Util.null2String(dto.getAddUpOtherDeduction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxExemptIncome()) ? new BigDecimal(dto.getAddUpTaxExemptIncome()) : Util.null2String(dto.getAddUpTaxExemptIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAllowedDonation()) ? new BigDecimal(dto.getAddUpAllowedDonation()) : Util.null2String(dto.getAddUpAllowedDonation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxSavings()) ? new BigDecimal(dto.getAddUpTaxSavings()) : Util.null2String(dto.getAddUpTaxSavings())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAdvanceTax()) ? new BigDecimal(dto.getAddUpAdvanceTax()) : Util.null2String(dto.getAddUpAdvanceTax())); + cellList.add(NumberUtil.isNumber(dto.getActualAddUpAdvanceTax()) ? new BigDecimal(dto.getActualAddUpAdvanceTax()) : Util.null2String(dto.getActualAddUpAdvanceTax())); + cellList.add(NumberUtil.isNumber(dto.getTaxAdjustment()) ? new BigDecimal(dto.getTaxAdjustment()) : Util.null2String(dto.getTaxAdjustment())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxableIncome()) ? new BigDecimal(dto.getAddUpTaxableIncome()) : Util.null2String(dto.getAddUpTaxableIncome())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); @@ -382,10 +383,10 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation * @param param * @return */ - private List> getExcelRowDetailList(AddUpSituationQueryParam param) { + private List> getExcelRowDetailList(AddUpSituationQueryParam param) { long employeeId = user.getUID(); //excel鏍囬 - List title = Arrays.asList("濮撳悕", "绋庢鎵灞炴湡", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "绱鏀跺叆棰", "绱鍑忛櫎璐圭敤", + List title = Arrays.asList("濮撳悕", "绋庢鎵灞炴湡", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "绱鏀跺叆棰", "绱鍑忛櫎璐圭敤", "绱涓撻」鎵i櫎", "绱浼佷笟锛堣亴涓氾級骞撮噾鍙婂叾浠栫鍒", "绱鍏朵粬鎵i櫎", "绱鍏嶇◣鏀跺叆", "绱鍑嗕簣鎵i櫎鐨勬崘璧", "绱鍑忓厤绋庨", "绱搴旀墸缂寸◣棰", "宸茬即绋庨", "涓◣璋冨樊", "绱搴旂撼绋庢墍寰楅"); @@ -401,34 +402,34 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation taxAgentIdsAsAdmin.contains(f.getTaxAgentId()) ).collect(Collectors.toList()); } - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getTaxYearMonth() == null ? "" : formatter.format(dto.getTaxYearMonth()))); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); cellList.add(Util.null2String(dto.getMobile())); cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getAddUpIncome())); - cellList.add(Util.null2String(dto.getAddUpSubtraction())); - cellList.add(Util.null2String(dto.getAddUpSocialSecurityTotal())); -// cellList.add(Util.null2String(dto.getAddUpAccumulationFundTotal())); - cellList.add(Util.null2String(dto.getAddUpEnterpriseAndOther())); - cellList.add(Util.null2String(dto.getAddUpOtherDeduction())); - cellList.add(Util.null2String(dto.getAddUpTaxExemptIncome())); - cellList.add(Util.null2String(dto.getAddUpAllowedDonation())); - cellList.add(Util.null2String(dto.getAddUpTaxSavings())); - cellList.add(Util.null2String(dto.getAddUpAdvanceTax())); - cellList.add(Util.null2String(dto.getActualAddUpAdvanceTax())); - cellList.add(Util.null2String(dto.getTaxAdjustment())); - cellList.add(Util.null2String(dto.getAddUpTaxableIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpIncome()) ? new BigDecimal(dto.getAddUpIncome()) : Util.null2String(dto.getAddUpIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSubtraction()) ? new BigDecimal(dto.getAddUpSubtraction()) : Util.null2String(dto.getAddUpSubtraction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpSocialSecurityTotal()) ? new BigDecimal(dto.getAddUpSocialSecurityTotal()) : Util.null2String(dto.getAddUpSocialSecurityTotal())); +// cellList.add(NumberUtil.isNumber(dto.getAddUpAccumulationFundTotal()) ? new BigDecimal(dto.getAddUpAccumulationFundTotal()) : Util.null2String(dto.getAddUpAccumulationFundTotal())); + cellList.add(NumberUtil.isNumber(dto.getAddUpEnterpriseAndOther()) ? new BigDecimal(dto.getAddUpEnterpriseAndOther()) : Util.null2String(dto.getAddUpEnterpriseAndOther())); + cellList.add(NumberUtil.isNumber(dto.getAddUpOtherDeduction()) ? new BigDecimal(dto.getAddUpOtherDeduction()) : Util.null2String(dto.getAddUpOtherDeduction())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxExemptIncome()) ? new BigDecimal(dto.getAddUpTaxExemptIncome()) : Util.null2String(dto.getAddUpTaxExemptIncome())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAllowedDonation()) ? new BigDecimal(dto.getAddUpAllowedDonation()) : Util.null2String(dto.getAddUpAllowedDonation())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxSavings()) ? new BigDecimal(dto.getAddUpTaxSavings()) : Util.null2String(dto.getAddUpTaxSavings())); + cellList.add(NumberUtil.isNumber(dto.getAddUpAdvanceTax()) ? new BigDecimal(dto.getAddUpAdvanceTax()) : Util.null2String(dto.getAddUpAdvanceTax())); + cellList.add(NumberUtil.isNumber(dto.getActualAddUpAdvanceTax()) ? new BigDecimal(dto.getActualAddUpAdvanceTax()) : Util.null2String(dto.getActualAddUpAdvanceTax())); + cellList.add(NumberUtil.isNumber(dto.getTaxAdjustment()) ? new BigDecimal(dto.getTaxAdjustment()) : Util.null2String(dto.getTaxAdjustment())); + cellList.add(NumberUtil.isNumber(dto.getAddUpTaxableIncome()) ? new BigDecimal(dto.getAddUpTaxableIncome()) : Util.null2String(dto.getAddUpTaxableIncome())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); rowList.addAll(dataRowList); return rowList; @@ -464,10 +465,10 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation } //鑾峰彇鎿嶄綔鎸夐挳璧勬簮 - List> rowList = getExcelRowDetailList(queryParam); + List> rowList = getExcelRowDetailList(queryParam); //鑾峰彇excel - return ExcelUtil.genWorkbook(rowList, "绱鎯呭喌鏄庣粏"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "绱鎯呭喌鏄庣粏", 2); } @@ -685,7 +686,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)) { @@ -1308,152 +1309,6 @@ public class AddUpSituationServiceImpl extends Service implements AddUpSituation } - @Override - public Map onlineRequest(AddUpDeductionMonthTaxAgentParam param) { - SalaryAssert.notNull(param.getDeclareMonth(), SalaryI18nUtil.getI18nLabel(100586, "绋庢鎵灞炴湡蹇呬紶")); - // 鑾峰彇鎺ュ彛閰嶇疆 - TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(true); - // 鑾峰彇鍖呰绫 - AddUpDeductionServiceImpl.AddUpDeductionOnlineRequestWrapper requestWrapper = getAddUpDeductionOnlineRequestWrapper(null, apiConfig); - // 鑾峰彇鎶ョ◣淇℃伅 - List taxReturnPOList = getTaxAgentTaxReturnService(user).getByTaxAgentIds(requestWrapper.getTaxAgentMap().keySet()); - List failReturnPOList = taxReturnPOList.stream().filter(e -> !TaxAgentTaxReturnStatusEnum.SUCCESS.getValue().equals(e.getCheckStatus())).collect(Collectors.toList()); - SalaryAssert.isFalse(taxReturnPOList.size() == failReturnPOList.size(), SalaryI18nUtil.getI18nLabel(183781, "浼佷笟鏈氳繃楠岃瘉锛屾殏鏃舵棤娉曡幏鍙栫疮璁′笓椤归檮鍔犳墸闄ゆ暟鎹紝璇峰厛鍦ㄣ愪釜绋庢墸缂翠箟鍔′汉銆戣彍鍗曢獙璇佷紒涓氭姤绋庝俊鎭")); - Map result = new HashMap<>(1); - if (!failReturnPOList.isEmpty()) { - String failTaxAgentNames = failReturnPOList.stream().map(e -> requestWrapper.getTaxAgentMap().get(e.getTaxAgentId())).collect(Collectors.joining("銆")); - result.put("msg", String.format(SalaryI18nUtil.getI18nLabel(183782, "%s鏈氳繃鐧昏楠岃瘉锛屾棤娉曞湪绾胯幏鍙栨暟鎹"), failTaxAgentNames)); - } - // 鑾峰彇鎶ラ佹垚鍔熺殑浜哄憳鍚嶅崟 - Map> taxAgentEmpDeclareMap = getEmpDeclareMap(requestWrapper.getTaxAgentMap().keySet(), param.getDeclareMonth()); - // 寮濮嬭姹傛帴鍙h幏鍙栨暟鎹 - getQuerySpecialAmountBodies(param, requestWrapper, taxAgentEmpDeclareMap, taxReturnPOList); - return result; - } - - private void getQuerySpecialAmountBodies(AddUpDeductionMonthTaxAgentParam param, - AddUpDeductionServiceImpl.AddUpDeductionOnlineRequestWrapper requestWrapper, - Map> taxAgentEmployeeDeclareMap, - List taxReturnPOList) { - List updateList = new ArrayList<>(); - List insertList = new ArrayList<>(); - for (TaxAgentTaxReturnPO returnPO : taxReturnPOList) { - if (!TaxAgentTaxReturnStatusEnum.SUCCESS.getValue().equals(returnPO.getCheckStatus())) { - continue; - } - // 鍙戣捣璇锋眰 - String taxAgentName = requestWrapper.getTaxAgentMap().get(returnPO.getTaxAgentId()); - List declarePOList = taxAgentEmployeeDeclareMap.getOrDefault(returnPO.getTaxAgentId(), new ArrayList<>()); - if (declarePOList.isEmpty()) { - log.info("璇ヤ富浣撲笅娌℃湁鎶ラ佹垚鍔熺殑浜哄憳锛屼富浣撳悕绉帮細{}", taxAgentName); - continue; - } - List poList = getAddUpSituationMapper().listSome((AddUpSituation.builder().taxYearMonth(param.getDeclareMonth()).taxAgentId(returnPO.getTaxAgentId()).build())); - encryptUtil.decryptList(poList,AddUpSituation.class); - Map poMap = SalaryEntityUtil.convert2Map(poList, e -> e.getTaxAgentId() + "-" + e.getEmployeeId()); - - // 鍐呴儴鍛樺伐锛堣韩浠借瘉淇℃伅锛 - List employeeIds = SalaryEntityUtil.properties(requestWrapper.getSalaryArchiveList(), SalaryArchivePO::getEmployeeId, Collectors.toList()); - List simpleUserInfos = getSalaryEmployeeService(user).listByIds(employeeIds); - Map simpleUserInfoMap = SalaryEntityUtil.convert2Map(simpleUserInfos, DataCollectionEmployee::getIdNo); - - for (int i = 1; true; i++) { - GetCompanyIncomesResponse queryResponse = getCompanyIncomes(returnPO, taxAgentName, param, requestWrapper.getApiConfig(), i); - // 鏍¢獙璇锋眰缁撴灉 - String responseCode = Optional.ofNullable(queryResponse) - .map(GetCompanyIncomesResponse::getHead) - .map(SzyhResponseHead::getCode) - .orElse(null); - List details = Optional.ofNullable(queryResponse) - .map(GetCompanyIncomesResponse::getBody) - .map(GetCompanyIncomesResponse.Body::getSfmx) - .orElse(null); - if (!SzyhApiConstant.SUCCESS_CODE.equals(responseCode)) { - log.info("getCompanyIncomes error锛歿}", JSON.toJSONString(queryResponse)); - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "鏈嶅姟寮傚父锛岃绋嶅悗閲嶈瘯")); - } - if (CollectionUtils.isEmpty(details)) { - break; - } - Date now = new Date(); - for (GetCompanyIncomesResponse.Detail detail : details) { - DataCollectionEmployee simpleUserInfo = simpleUserInfoMap.get(detail.getZjhm()); - Long employeeId = Optional.ofNullable(simpleUserInfo) - .map(DataCollectionEmployee::getEmployeeId) - .orElse(0L); - if (poMap.containsKey(returnPO.getTaxAgentId() + "-" + employeeId)) { - AddUpSituation po = poMap.get(returnPO.getTaxAgentId() + "-" + employeeId); - po.setUpdateTime(now); - po.setActualAddUpAdvanceTax(detail.getKjse()); - po.setTaxAdjustment(SalaryEntityUtil.string2BigDecimalDefault0(detail.getKjse()).subtract(SalaryEntityUtil.string2BigDecimalDefault0(po.getAddUpAdvanceTax())).toString()); - updateList.add(po); - } else { - AddUpSituation po = new AddUpSituation(); -// po.setId(IdGenerator.generate()); - po.setCreateTime(now); - po.setUpdateTime(now); - po.setCreator(requestWrapper.getCurrentEmployeeId()); - po.setDeleteType(NumberUtils.INTEGER_ZERO); - po.setTenantKey(requestWrapper.getTenantKey()); - po.setYear(param.getDeclareMonth().getYear()); - po.setTaxYearMonth(param.getDeclareMonth()); - po.setEmployeeType(0); - po.setTaxAgentId(returnPO.getTaxAgentId()); - po.setEmployeeId(employeeId); - po.setAddUpIncome("0"); - po.setAddUpSubtraction("0"); - po.setAddUpSocialSecurityTotal("0"); - po.setAddUpAccumulationFundTotal("0"); - po.setAddUpEnterpriseAndOther("0"); - po.setAddUpOtherDeduction("0"); - po.setAddUpTaxExemptIncome("0"); - po.setAddUpAllowedDonation("0"); - po.setAddUpTaxSavings("0"); - po.setAddUpAdvanceTax("0"); - po.setAddUpTaxableIncome("0"); - po.setActualAddUpAdvanceTax(detail.getKjse()); - po.setTaxAdjustment(detail.getKjse()); - insertList.add(po); - } - } - } - } - if (!insertList.isEmpty()) { - List> insertPartition = Lists.partition(insertList, 50); - insertPartition.forEach(list -> { - list = encryptUtil.encryptList(list, AddUpSituation.class); - getAddUpSituationMapper().insertData(list); - }); - } - if (!updateList.isEmpty()) { - List> updatePartition = Lists.partition(updateList, 50); - updatePartition.forEach(list -> { - list = encryptUtil.encryptList(list, AddUpSituation.class); - getAddUpSituationMapper().updateData(list); - }); - } - } - - private GetCompanyIncomesResponse getCompanyIncomes(TaxAgentTaxReturnPO returnPO, - String taxAgentName, - AddUpDeductionMonthTaxAgentParam param, - TaxDeclarationApiConfigPO apiConfig, - Integer pageNo) { - String url = apiConfig.getHost() + SzyhApiConstant.GET_COMPANY_INCOMES; - Map requestParam = DataCollectionBO.getApiBaseQueryParams(returnPO, taxAgentName, SalaryDateUtil.getFormatYYYYMM(param.getDeclareMonth())); - requestParam.put("pageSize", 1000); - requestParam.put("pageNo", pageNo); - requestParam.put("reportType", 1); - String reqJson = JsonUtil.toJsonString(requestParam); - log.info("getCompanyIncomes params --- \n{}\n", reqJson); - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - // 寮濮嬭姹 - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("getCompanyIncomes res --- {}", res); - return JsonUtil.parseObject(res, GetCompanyIncomesResponse.class); - } - private AddUpDeductionServiceImpl.AddUpDeductionOnlineRequestWrapper getAddUpDeductionOnlineRequestWrapper(List requestPOList, TaxDeclarationApiConfigPO apiConfig) { boolean isOpenDevolution = getTaxAgentService(user).isOpenDevolution(); boolean isChief = getTaxAgentService(user).isChief((long) user.getUID()); diff --git a/src/com/engine/salary/service/impl/ApiTaskServiceImpl.java b/src/com/engine/salary/service/impl/ApiTaskServiceImpl.java new file mode 100644 index 000000000..107edf704 --- /dev/null +++ b/src/com/engine/salary/service/impl/ApiTaskServiceImpl.java @@ -0,0 +1,53 @@ +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.api.ApiTaskRecordPO; +import com.engine.salary.mapper.api.ApiTaskRecordMapper; +import com.engine.salary.service.ApiTaskService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; +import weaver.hrm.User; + +import java.util.Date; + +/** + * api浠诲姟璋冨害鏈嶅姟 + *

Copyright: Copyright (c) 2022

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +@Slf4j +public class ApiTaskServiceImpl extends Service implements ApiTaskService { + + private ApiTaskRecordMapper getApiTaskRecordMapper() { + return MapperProxyFactory.getProxy(ApiTaskRecordMapper.class); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + @Override + public void writeApiTaskRecord(String source, String api, String param, String response) { + log.info("source:{} , api:{} , param:{} , response : {}", source, api, param, response); + Date now = new Date(); + ApiTaskRecordPO build = ApiTaskRecordPO.builder() + .id(IdGenerator.generate()) + .source(source) + .api(api) + .param(param) + .response(response) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + getApiTaskRecordMapper().insertIgnoreNull(build); + } +} diff --git a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java index a9cb7876e..0b95a4a1d 100644 --- a/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java +++ b/src/com/engine/salary/service/impl/AttendQuoteDataServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import com.alibaba.druid.support.json.JSONUtils; import com.alibaba.fastjson.JSONObject; import com.api.formmode.mybatis.util.SqlProxyHandle; @@ -8,6 +9,7 @@ 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.biz.AttendQuoteBiz; import com.engine.salary.biz.AttendQuoteDataBiz; import com.engine.salary.biz.AttendQuoteDataValueBiz; @@ -15,7 +17,6 @@ import com.engine.salary.biz.AttendQuoteFieldBiz; import com.engine.salary.common.LocalDateRange; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.bo.AttendQuoteDataBO; import com.engine.salary.entity.datacollection.dto.*; @@ -24,11 +25,12 @@ import com.engine.salary.entity.datacollection.po.AttendQuoteDataPO; import com.engine.salary.entity.datacollection.po.AttendQuoteDataValuePO; import com.engine.salary.entity.datacollection.po.AttendQuoteFieldPO; import com.engine.salary.entity.datacollection.po.AttendQuotePO; -import com.engine.salary.entity.salarysob.bo.SalarySobRangeBO; +import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; -import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.entity.salarysob.po.SalarySobPO; -import com.engine.salary.entity.salarysob.po.SalarySobRangePO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.AttendQuoteSourceTypeEnum; @@ -124,6 +126,11 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa return MapperProxyFactory.getProxy(SalarySobRangeMapper.class); } + private SalaryArchiveService getSalaryArchiveService(User user) { + return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); + } + + private RemoteAttend4SalaryService getRemoteAttend4SalaryService(User user) { return ServiceUtil.getService(RemoteAttend4SalaryServiceImpl.class, user); @@ -270,7 +277,16 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa // 鍔ㄦ佸垪 for (AttendQuoteFieldPO attendQuoteField : attendQuoteFields) { - row.add(dto.get(attendQuoteField.getId().toString() + "_attendQuoteData")); + Object o = dto.get(attendQuoteField.getId().toString() + "_attendQuoteData"); + try { + if (o != null && NumberUtil.isNumber(o.toString())) { + row.add(new BigDecimal(o.toString())); + } else { + row.add(o); + } + } catch (Exception e) { + row.add(o); + } } rows.add(row); } @@ -318,39 +334,45 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa @Override public String syncAttendQuoteData(AttendQuoteDataSyncParam syncParam) { AttendQuoteDataSyncParam.checkParam(syncParam); - + Long salarySobId = syncParam.getSalarySobId(); String salaryYearMonth = syncParam.getSalaryYearMonth(); int year = Integer.parseInt(salaryYearMonth.split("-")[0]); int month = Integer.parseInt(salaryYearMonth.split("-")[1]); if (!SalaryDateUtil.checkYearMonth(salaryYearMonth)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100365, "钖祫鎵灞炴湀鏍煎紡鏈夎锛屾纭牸寮忕ず渚嬩负'2021-01'")); } + // 1.鑾峰彇宸茶缃殑鍙悓姝ョ殑鑰冨嫟瀛楁 List attendQuoteFields = getAttendQuoteSetFields(AttendQuoteSourceTypeEnum.QUOTE); if (CollectionUtils.isEmpty(attendQuoteFields)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100366, "璇峰厛璁剧疆鍚屾瀛楁")); } - // 鑾峰彇钖祫璐﹀ - SalarySobCycleDTO salarySobCycle = getSalarySobService(user).getSalarySobCycle(syncParam.getSalarySobId(), YearMonth.of(year, month)); - // 2.钖祫璐﹀浜哄憳 - List employeeIds = new ArrayList<>(); - // 鑾峰彇钖祫璐﹀浜哄憳 - List salarySobRanges = getSalarySobRangeMapper().listSome(SalarySobRangePO.builder().includeType(1).salarySobId(salarySobCycle.getSalarySobId()).build()); - List salarySobRangeEmpQueryParams = SalarySobRangeBO.convert2EmployeeQueryParam(salarySobRanges); - List> partition = Lists.partition(salarySobRangeEmpQueryParams, 100); - List employeeSalarySobIds = new ArrayList<>(); - partition.forEach(l -> employeeSalarySobIds.addAll(getSalarySobRangeMapper().listEmployeeIds(l))); - if (CollectionUtils.isEmpty(employeeSalarySobIds) || CollectionUtils.isEmpty(salarySobRangeEmpQueryParams)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100367, "钖祫璐﹀杩樻病鏈変汉鍛")); + // 鑾峰彇钖祫璐﹀ + SalarySobCycleDTO salarySobCycleDTO = getSalarySobService(user).getSalarySobCycle(syncParam.getSalarySobId(), YearMonth.of(year, month)); + + // 鏍规嵁钖祫璐﹀鏌ヨ浜哄憳 + List salaryEmployees = getSalaryEmployeeService(user).listBySalarySobId(salarySobId); + if (CollectionUtils.isEmpty(salaryEmployees)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100367, "钖祫璐﹀娌℃湁浜哄憳")); } - // 璐﹀澶栦汉鍛 - List employeeOtherIds = (List) syncParam.getEmployeeIds(); - employeeIds.addAll(employeeSalarySobIds); - employeeIds.addAll(CollectionUtils.emptyIfNull(employeeOtherIds)); + // 鏍规嵁钖祫璐﹀鏌ヨ钖祫鍛ㄦ湡 + SalarySobPO salarySobPO = getSalarySobService(user).getById(salarySobId); + Long taxAgentId = salarySobPO.getTaxAgentId(); + + // 鏌ヨ钖祫妗f锛岃幏鍙栦汉鍛樼殑涓◣鎵g即涔夊姟浜 + List employeeIds = SalaryEntityUtil.properties(salaryEmployees, DataCollectionEmployee::getEmployeeId, Collectors.toList()); + List salaryArchiveDataDTOS = getSalaryArchiveService(user).getSalaryArchiveTaxAgentData(salarySobCycleDTO.getSalaryCycle(), employeeIds, taxAgentId); + // 杞崲鎴愯柂璧勬牳绠椾汉鍛榩o + Date salaryDate = SalaryDateUtil.dateStrToLocalTime(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()); + // 4.鑾峰彇鑰冨嫟妯″潡鏁版嵁 - List> attendQuoteSyncData = getAttendQuoteDataFromRemoteAttend(salarySobCycle.getAttendCycle(), employeeIds, attendQuoteFields); + List> attendQuoteSyncData = getAttendQuoteDataFromRemoteAttend(salarySobCycleDTO.getAttendCycle(), employeeIds, attendQuoteFields); List pos = new ArrayList<>(); List values = new ArrayList<>(); // 5.鑰冨嫟寮曠敤鏁版嵁澶勭悊 @@ -358,7 +380,7 @@ public class AttendQuoteDataServiceImpl extends Service implements AttendQuoteDa if (CollectionUtils.isNotEmpty(attendQuoteSyncData)) { // 3.鐢熸垚鑰冨嫟寮曠敤 - AttendQuotePO attendQuote = getAttendQuote(AttendQuoteSourceTypeEnum.QUOTE, syncParam.getSalarySobId(), year, month, syncParam.getDescription()); + AttendQuotePO attendQuote = getAttendQuote(AttendQuoteSourceTypeEnum.QUOTE, salarySobId, year, month, syncParam.getDescription()); for (Long employeeId : employeeIds) { AttendQuoteDataPO po = new AttendQuoteDataPO(); diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java index 03eff50d4..d3fbbb043 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java @@ -21,6 +21,7 @@ import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclareRecordPO; import com.engine.salary.entity.employeedeclare.response.DeclareEmployeeFeedbackResponse; import com.engine.salary.entity.employeedeclare.response.DeclareEmployeeInfoResponse; +import com.engine.salary.entity.salaryacct.po.SalaryAcctTaxAgentPO; import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.taxagent.bo.TaxAgentTaxReturnBO; @@ -43,9 +44,6 @@ import com.engine.salary.enums.taxagent.TaxAgentTaxReturnStatusEnum; import com.engine.salary.enums.taxdeclaration.EnumDeclareApiBusinessType; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.employeedeclare.EmployeeDeclareMapper; -import com.engine.salary.remote.tax.client.EmployeeClient; -import com.engine.salary.remote.tax.request.employee.BatchInvalidSubmissionRequest; -import com.engine.salary.remote.tax.request.employee.InformationChangeRequest; import com.engine.salary.service.*; import com.engine.salary.util.*; import com.engine.salary.util.db.IdGenerator; @@ -198,6 +196,24 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla return page; } + @Override + public List listBySalaryAcctTaxAgent(List salaryAcctTaxAgents) { + if (CollectionUtils.isEmpty(salaryAcctTaxAgents)) { + return Collections.emptyList(); + } + Map employeeDeclareParamMap = new HashMap<>(); + for (SalaryAcctTaxAgentPO po : salaryAcctTaxAgents) { + employeeDeclareParamMap.putIfAbsent(po.getTaxAgentId() + "-" + po.getTaxCycle(), po); + } + List employeeDeclares = new ArrayList<>(); + for (Map.Entry entry : employeeDeclareParamMap.entrySet()) { + SalaryAcctTaxAgentPO salaryAcctTaxAgent = entry.getValue(); + List temp = listByTaxCycleAndTaxAgentId(salaryAcctTaxAgent.getTaxCycle(), salaryAcctTaxAgent.getTaxAgentId()); + employeeDeclares.addAll(temp); + } + return employeeDeclares; + } + @Override public void save(EmployeeDeclareSaveParam saveParam) { // 鑹惧織 - 240529娉ㄩ噴 @@ -478,7 +494,7 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla List preTaxCycleEmployeeDeclares = listByTaxCycleAndTaxAgentId(SalaryDateUtil.plusMonths(refreshParam.getTaxCycle(), -1), refreshParam.getTaxAgentId()) //鍙渶瑕佹甯哥殑 .stream() - .filter(e ->Objects.equals(e.getDeclareStatus(), DeclareStatusEnum.DECLARE_SUCCESS.getValue())) + .filter(e -> Objects.equals(e.getDeclareStatus(), DeclareStatusEnum.DECLARE_SUCCESS.getValue())) .collect(Collectors.toList()); // 鏌ヨ涓◣鎵g即涔夊姟浜 TaxAgentPO taxAgent = getTaxAgentService(user).getById(refreshParam.getTaxAgentId()); @@ -632,6 +648,7 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla Map params = new HashMap<>(1); Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); + log.info("鍙戣捣浜哄憳鎶ラ:{} 鍙嶉{}", reqJson, res); DeclareEmployeeInfoResponse declareEmployeeInfoResponse = JsonUtil.parseObject(res, DeclareEmployeeInfoResponse.class); if (Objects.isNull(declareEmployeeInfoResponse) || Objects.isNull(declareEmployeeInfoResponse.getHead())) { log.error("鏈嶅姟寮傚父:" + res); @@ -763,44 +780,6 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla } } - @Override - public String invalid(EmployeeInvalidParam param) { - List employeeDeclarePOS = listByIds(Collections.singletonList(param.getId())); - if (CollectionUtils.isEmpty(employeeDeclarePOS)) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "鏈壘鍒拌浜哄憳")); - } - - BatchInvalidSubmissionRequest request = new BatchInvalidSubmissionRequest(); - List rys = employeeDeclarePOS.stream().map(po -> { - BatchInvalidSubmissionRequest.RY ry = new BatchInvalidSubmissionRequest.RY(); - ry.setXm(po.getEmployeeName()); - ry.setZzhm(po.getCardNum()); - ry.setZzlx(CardTypeEnum.getByValue(po.getCardType()).getDefaultLabel()); - return ry; - }).collect(Collectors.toList()); - request.setRylb(rys); - - EmployeeClient employeeClient = new EmployeeClient(employeeDeclarePOS.get(0).getTaxAgentId()); - String s = employeeClient.batchInvalidSubmission(request); - return s; - } - - @Override - public String informationChange(EmployeeInformationChangeParam param) { - EmployeeDeclarePO employeeDeclarePO = getById(param.getId()); - if (employeeDeclarePO == null) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "鏈壘鍒拌浜哄憳")); - } - - InformationChangeRequest request =new InformationChangeRequest(); - request.setXm(param.getName()); - request.setZzlx(param.getCardType().getDefaultLabel()); - request.setZzhm(param.getCardNum()); - EmployeeClient employeeClient = new EmployeeClient(employeeDeclarePO.getTaxAgentId()); - String s = employeeClient.informationChange(request); - return s; - } - @Override public String syncEmploymentDate(EmployeeDeclareSyncStartDateParam param) { diff --git a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java index d5877254e..8347f1045 100644 --- a/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/OtherDeductionServiceImpl.java @@ -1,13 +1,14 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSONObject; 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.OtherDeductionBiz; 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.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -54,6 +55,7 @@ import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.YearMonth; @@ -490,7 +492,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction SalaryElogConfig.otherDeductionLoggerTemplate.write(loggerContext); //鑾峰彇excel - return ExcelUtil.genWorkbookV2(rowList, "鍏朵粬鍏嶇◣鎵i櫎"); + return ExcelUtil.genWorkbookV2WithDefaultPattern(rowList, "鍏朵粬鍏嶇◣鎵i櫎", 2); } @@ -534,11 +536,11 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction cellList.add(Util.null2String(dto.getJobNum())); cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); - cellList.add(Util.null2String(dto.getBusinessHealthyInsurance())); - cellList.add(Util.null2String(dto.getTaxDelayEndowmentInsurance())); - cellList.add(Util.null2String(dto.getOtherDeduction())); - cellList.add(Util.null2String(dto.getDeductionAllowedDonation())); - cellList.add(Util.null2String(dto.getPrivatePension())); + cellList.add(NumberUtil.isNumber(dto.getBusinessHealthyInsurance()) ? new BigDecimal(dto.getBusinessHealthyInsurance()) : Util.null2String(dto.getBusinessHealthyInsurance())); + cellList.add(NumberUtil.isNumber(dto.getTaxDelayEndowmentInsurance()) ? new BigDecimal(dto.getTaxDelayEndowmentInsurance()) : Util.null2String(dto.getTaxDelayEndowmentInsurance())); + cellList.add(NumberUtil.isNumber(dto.getOtherDeduction()) ? new BigDecimal(dto.getOtherDeduction()) : Util.null2String(dto.getOtherDeduction())); + cellList.add(NumberUtil.isNumber(dto.getDeductionAllowedDonation()) ? new BigDecimal(dto.getDeductionAllowedDonation()) : Util.null2String(dto.getDeductionAllowedDonation())); + cellList.add(NumberUtil.isNumber(dto.getPrivatePension()) ? new BigDecimal(dto.getPrivatePension()) : Util.null2String(dto.getPrivatePension())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); @@ -586,10 +588,10 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction //鑾峰彇鎿嶄綔鎸夐挳璧勬簮 - List> rowList = getExcelRowDetailList(param); + List> rowList = getExcelRowDetailList(param); //鑾峰彇excel - return ExcelUtil.genWorkbook(rowList, "鍏朵粬鍏嶇◣鎵i櫎鏄庣粏"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "鍏朵粬鍏嶇◣鎵i櫎鏄庣粏", 2); } @@ -599,34 +601,34 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction * @param param * @return */ - private List> getExcelRowDetailList(OtherDeductionQueryParam param) { + private List> getExcelRowDetailList(OtherDeductionQueryParam param) { //excel鏍囬 - List title = Arrays.asList("濮撳悕", "鐢虫姤鏈堜唤", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "鍟嗕笟鍋ュ悍淇濋櫓", "绋庡欢鍏昏佷繚闄", "鍏朵粬", "鍑嗕簣鎵i櫎鐨勬崘璧犻", "涓汉鍏昏侀噾"); + List title = Arrays.asList("濮撳悕", "鐢虫姤鏈堜唤", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "鍟嗕笟鍋ュ悍淇濋櫓", "绋庡欢鍏昏佷繚闄", "鍏朵粬", "鍑嗕簣鎵i櫎鐨勬崘璧犻", "涓汉鍏昏侀噾"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); //鏌ヨ璇︾粏淇℃伅 List list = getOtherDeductionMapper().recordList(param); encryptUtil.decryptList(list, OtherDeductionRecordDTO.class); - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getDeclareMonth() == null ? "" : formatter.format(dto.getDeclareMonth()))); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); cellList.add(Util.null2String(dto.getMobile())); cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getBusinessHealthyInsurance())); - cellList.add(Util.null2String(dto.getTaxDelayEndowmentInsurance())); - cellList.add(Util.null2String(dto.getOtherDeduction())); - cellList.add(Util.null2String(dto.getDeductionAllowedDonation())); - cellList.add(Util.null2String(dto.getPrivatePension())); + cellList.add(NumberUtil.isNumber(dto.getBusinessHealthyInsurance()) ? new BigDecimal(dto.getBusinessHealthyInsurance()) : Util.null2String(dto.getBusinessHealthyInsurance())); + cellList.add(NumberUtil.isNumber(dto.getTaxDelayEndowmentInsurance()) ? new BigDecimal(dto.getTaxDelayEndowmentInsurance()) : Util.null2String(dto.getTaxDelayEndowmentInsurance())); + cellList.add(NumberUtil.isNumber(dto.getOtherDeduction()) ? new BigDecimal(dto.getOtherDeduction()) : Util.null2String(dto.getOtherDeduction())); + cellList.add(NumberUtil.isNumber(dto.getDeductionAllowedDonation()) ? new BigDecimal(dto.getDeductionAllowedDonation()) : Util.null2String(dto.getDeductionAllowedDonation())); + cellList.add(NumberUtil.isNumber(dto.getPrivatePension()) ? new BigDecimal(dto.getPrivatePension()) : Util.null2String(dto.getPrivatePension())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); rowList.addAll(dataRowList); return rowList; diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 568a3055b..615fdbabc 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -3518,11 +3518,56 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { Map resultMap = new HashMap<>(); // resultMap.put("data", dataMap); // resultMap.put("items", addGroups); + + // 鑾峰彇褰撳墠鏀炬柟妗堜俊鎭 + InsuranceArchivesSocialSchemePO socialSchemePO = new InsuranceArchivesSocialSchemePO(); + InsuranceArchivesFundSchemePO fundSchemePO = new InsuranceArchivesFundSchemePO(); + InsuranceArchivesOtherSchemePO otherSchemePO = new InsuranceArchivesOtherSchemePO(); + List insuranceSchemeDetailPOS = new ArrayList<>(); List schemeIdList = new ArrayList<>(); - schemeIdList.add(insuranceAccountDetailPO.getSocialSchemeId()); - schemeIdList.add(insuranceAccountDetailPO.getFundSchemeId()); - schemeIdList.add(insuranceAccountDetailPO.getOtherSchemeId()); + if (insuranceAccountDetailPO.getSocialSchemeId() == null) { + List socialSchemePOList = getSocialSchemeMapper().getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .employeeId(insuranceAccountDetailPO.getEmployeeId()) + .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) + .build()); + if (socialSchemePOList.size() > 0) { + encryptUtil.decryptList(socialSchemePOList, InsuranceArchivesSocialSchemePO.class); + socialSchemePO = socialSchemePOList.get(0); + } + schemeIdList.add(socialSchemePO.getSocialSchemeId()); + } else { + schemeIdList.add(insuranceAccountDetailPO.getSocialSchemeId()); + } + + if (insuranceAccountDetailPO.getFundSchemeId() == null) { + List fundSchemePOList = getFundSchemeMapper().getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .employeeId(insuranceAccountDetailPO.getEmployeeId()) + .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) + .build()); + if (fundSchemePOList.size() > 0) { + encryptUtil.decryptList(fundSchemePOList, InsuranceArchivesFundSchemePO.class); + fundSchemePO = fundSchemePOList.get(0); + } + schemeIdList.add(fundSchemePO.getFundSchemeId()); + } else { + schemeIdList.add(insuranceAccountDetailPO.getFundSchemeId()); + } + + if (insuranceAccountDetailPO.getOtherSchemeId() == null) { + List otherSchemePOList = getOtherSchemeMapper().getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO.builder() + .employeeId(insuranceAccountDetailPO.getEmployeeId()) + .paymentOrganization(insuranceAccountDetailPO.getPaymentOrganization()) + .build()); + if (otherSchemePOList.size() > 0) { + encryptUtil.decryptList(otherSchemePOList, InsuranceArchivesOtherSchemePO.class); + otherSchemePO = otherSchemePOList.get(0); + } + schemeIdList.add(otherSchemePO.getOtherSchemeId()); + } else { + schemeIdList.add(insuranceAccountDetailPO.getOtherSchemeId()); + } + schemeIdList = schemeIdList.stream().filter(schemeId -> schemeId != null).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(schemeIdList)) { insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(schemeIdList); @@ -3670,7 +3715,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { encryptUtil.decrypt(insuranceAccountDetailPO, InsuranceAccountDetailPO.class); InsuranceAccountBatchPO targetPO = getInsuranceAccountBatchMapper().getByBillMonth(insuranceAccountDetailPO.getBillMonth(), insuranceAccountDetailPO.getPaymentOrganization()); TaxAgentPO taxAgentInfo = getTaxAgentMapper().getById(targetPO.getPaymentOrganization()); - DataCollectionEmployee empInfo = getEmployMapper().getEmployeeById(insuranceAccountDetailPO.getEmployeeId()); + DataCollectionEmployee empInfo = getSalaryEmployeeService(user).getEmployeeById(insuranceAccountDetailPO.getEmployeeId()); LoggerContext loggerContext = new LoggerContext(); loggerContext.setUser(user); loggerContext.setTargetId(String.valueOf(targetPO.getId())); diff --git a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java index 29464725d..bb0c776b3 100644 --- a/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIBalanceServiceImpl.java @@ -167,13 +167,18 @@ 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()); + 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 +208,18 @@ 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()); + fundIds.addAll(fundComMap.keySet()); + fundIds = fundIds.stream().distinct().collect(Collectors.toList()); //鏌ヨ璇ョ鍒╂柟妗堜笅寮鍚即绾崇殑绂忓埄椤 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(fundSchemePO.getFundSchemeId()); - List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); + 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 +249,19 @@ 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()); + otherIds.addAll(otherComMap.keySet()); + otherIds = otherIds.stream().distinct().collect(Collectors.toList()); //鏌ヨ璇ョ鍒╂柟妗堜笅寮鍚即绾崇殑绂忓埄椤 List insuranceIdAndScopeList = payInsuranceIdAndScopeList(otherSchemePO.getOtherSchemeId()); - List insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().listBySchemeIds(Collections.singletonList(socialSchemePO.getSocialSchemeId())); + 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/SICompensationServiceImpl.java b/src/com/engine/salary/service/impl/SICompensationServiceImpl.java index 25bf127a0..a6c4cb5d8 100644 --- a/src/com/engine/salary/service/impl/SICompensationServiceImpl.java +++ b/src/com/engine/salary/service/impl/SICompensationServiceImpl.java @@ -470,7 +470,7 @@ public class SICompensationServiceImpl extends Service implements SICompensation //璁板綍鎿嶄綔鏃ュ織 InsuranceAccountBatchPO targetPO = getInsuranceAccountBatchMapper().getByBillMonth(insuranceAccountDetailPO.getBillMonth(), insuranceAccountDetailPO.getPaymentOrganization()); TaxAgentPO taxAgentInfo = getTaxAgentMapper().getById(insuranceAccountDetailPO.getPaymentOrganization()); - DataCollectionEmployee empInfo = getEmployMapper().getEmployeeById(insuranceAccountDetailPO.getEmployeeId()); + DataCollectionEmployee empInfo = getSalaryEmployeeService(user).getEmployeeById(insuranceAccountDetailPO.getEmployeeId()); LoggerContext loggerContext = new LoggerContext(); loggerContext.setUser(user); loggerContext.setTargetId(String.valueOf(targetPO.getId())); diff --git a/src/com/engine/salary/service/impl/SIExportServiceImpl.java b/src/com/engine/salary/service/impl/SIExportServiceImpl.java index 2e6602adf..241b1d23a 100644 --- a/src/com/engine/salary/service/impl/SIExportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIExportServiceImpl.java @@ -47,6 +47,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.general.BaseBean; import weaver.hrm.User; +import java.math.BigDecimal; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -251,7 +252,15 @@ public class SIExportServiceImpl extends Service implements SIExportService { for (Map recordData : records) { List row = new LinkedList<>(); for (WeaTableColumn column : columns) { - row.add(recordData.get(column.getColumn())); + try { + if (column.getText().contains("涓汉") || column.getText().contains("鍗曚綅") || column.getText().contains("鍚堣")) { + row.add(new BigDecimal(recordData.get(column.getColumn()).toString())); + } else { + row.add(recordData.get(column.getColumn())); + } + } catch (Exception e) { + row.add(recordData.get(column.getColumn())); + } } rows.add(row); } diff --git a/src/com/engine/salary/service/impl/SIImportServiceImpl.java b/src/com/engine/salary/service/impl/SIImportServiceImpl.java index d5049be64..05c854402 100644 --- a/src/com/engine/salary/service/impl/SIImportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIImportServiceImpl.java @@ -199,6 +199,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 d0bc17e72..ead724055 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -657,7 +657,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { for (WeaTableColumn column : columns) { try { Object o = recordData.get(column.getColumn()); - row.add(o.toString()); + if (column.getText().contains("鐢虫姤鍩烘暟") && StringUtils.isNotBlank(o.toString())) { + row.add(new BigDecimal(o.toString())); + } else { + row.add(o.toString()); + } } catch (Exception e) { row.add(""); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalcTaxReqServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalcTaxReqServiceImpl.java new file mode 100644 index 000000000..c23a9b87c --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryAcctCalcTaxReqServiceImpl.java @@ -0,0 +1,37 @@ +package com.engine.salary.service.impl; + +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryacct.po.SalaryAcctCalcTaxReqPO; +import com.engine.salary.mapper.salaryacct.SalaryAcctCalcTaxReqMapper; +import com.engine.salary.service.SalaryAcctCalcTaxReqService; +import com.engine.salary.util.db.MapperProxyFactory; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +public class SalaryAcctCalcTaxReqServiceImpl extends Service implements SalaryAcctCalcTaxReqService { + + private SalaryAcctCalcTaxReqMapper getSalaryAcctCalcTaxReqMapper() { + return MapperProxyFactory.getProxy(SalaryAcctCalcTaxReqMapper.class); + } + + + @Override + public List listByRecordId(Long salaryAcctRecordId) { + return getSalaryAcctCalcTaxReqMapper().listSome(SalaryAcctCalcTaxReqPO.builder().salaryAcctRecordId(salaryAcctRecordId).build()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchSave(List salaryAcctCalcTaxReqs) { + if (CollectionUtils.isNotEmpty(salaryAcctCalcTaxReqs)) { + salaryAcctCalcTaxReqs.forEach(getSalaryAcctCalcTaxReqMapper()::insertIgnoreNull); + } + } + + @Override + public void deleteByRecordId(Long salaryAcctRecordId) { + getSalaryAcctCalcTaxReqMapper().deleteByRecordId(salaryAcctRecordId); + } +} diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index 76e852686..32380ea28 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; @@ -35,8 +36,8 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.util.StopWatch; import weaver.general.BaseBean; +import weaver.general.Util; import weaver.hrm.User; -import weaver.wechat.util.Utils; import java.time.Month; import java.util.*; @@ -111,7 +112,7 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc @Override public void calculate(SalaryAcctCalculateBO salaryAcctCalculateBO, DataCollectionEmployee simpleEmployee, List salarySobBackItems) { - StopWatch sw = new StopWatch("鏍哥畻鑰楁椂鏄庣粏锛宨d锛"+salaryAcctCalculateBO.getSalaryAcctRecordPO().getId()+""); + StopWatch sw = new StopWatch("鏍哥畻鑰楁椂鏄庣粏锛宨d锛" + salaryAcctCalculateBO.getSalaryAcctRecordPO().getId() + ""); Date now = new Date(); try { // 鏁版嵁搴撳瓧娈靛姞瀵嗙敤 @@ -194,6 +195,9 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc Set salarySobBackItemIds = SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getSalaryItemId); Map salarySobBackItemMap = SalaryEntityUtil.convert2Map(salarySobBackItems, SalarySobBackItemPO::getSalaryItemId); List salaryAcctResultTempPOS = Lists.newArrayList(); + + //涓◣椤圭洰id + List taxIds = salaryAcctCalculateBO.getTaxIds(); sw.stop(); // 寮濮嬫牳绠 sw.start("鏍哥畻鑰楁椂"); @@ -212,21 +216,32 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc String resultValue; SalaryItemPO salaryItemPO = salaryItemMap.get(salaryItemId); ExpressFormula expressFormula; + String defaultValue; if (salarySobBackItemMap.containsKey(salaryItemId)) { // 濡傛灉钖祫璐﹀鐨勫洖绠楅」鐩腑閲嶆柊瀹氫箟浜嗗洖绠楅」鐩叕寮忥紝鍒欎娇鐢ㄨ柂璧勮处濂椾笅鐨勫叕寮 SalarySobBackItemPO salarySobBackItemPO = salarySobBackItemMap.get(salaryItemId); expressFormula = expressFormulaMap.get(salarySobBackItemPO.getFormulaId()); + defaultValue = salarySobBackItemPO.getDefaultValue(); } else if (salaryItemIdKeySalarySobItemPOMap.containsKey(salaryItemId)) { // 濡傛灉钖祫璐﹀涓嬮噸鏂板畾涔変簡钖祫椤圭洰鐨勫叕寮忥紝鍒欎娇鐢ㄨ柂璧勮处濂椾笅鐨勫叕寮忥紝鍚﹀垯浣跨敤钖祫椤圭洰鏈韩鐨勫叕寮 SalarySobItemPO salarySobItemPO = salaryItemIdKeySalarySobItemPOMap.get(salaryItemId); expressFormula = expressFormulaMap.get(salarySobItemPO.getFormulaId()); + defaultValue = salarySobItemPO.getDefaultValue(); } else { expressFormula = expressFormulaMap.get(salaryItemPO.getFormulaId()); + defaultValue = salaryItemPO.getDefaultValue(); } + + if (taxIds.contains(salaryItemId)) { + //涓◣椤圭洰锛岄粯璁ゅ彧鑳戒粠绋庡眬鍙栥 + expressFormula = null; + defaultValue = ""; + } + if (Objects.nonNull(expressFormula)) { // 杩愯鍏紡 ExcelResult result = runExpressFormula(expressFormula, formulaVarValueMap, simpleEmployee); - resultValue = Utils.null2String(result.getData()); + resultValue = result.getData2String(); //鍏紡寮傚父淇℃伅 if (!result.isStatus()) { String username = empInfo.stream().filter(emp -> StringUtils.equals("employeeInfo_username", emp.getFieldId())).findFirst().map(CalculateFormulaVarBO.FormulaVarValue::getFieldValue).orElse(""); @@ -243,6 +258,9 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc // 澶勭悊鍙栧肩被鍨嬩负鈥滆緭鍏/瀵煎叆鈥濈殑钖祫椤圭洰 String key = SalaryFormulaReferenceEnum.SALARY_ITEM.getValue() + SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR + salaryItemPO.getCode(); resultValue = formulaVarValueMap.getOrDefault(key, StringUtils.EMPTY); + if (StrUtil.isBlank(resultValue)) { + resultValue = Util.null2String(defaultValue); + } } // 澶勭悊钖祫妗f if (Objects.equals(salaryItemPO.getUseInEmployeeSalary(), NumberUtils.INTEGER_ONE)) { diff --git a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java index 412858d08..dabc4c7c8 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctEmployeeServiceImpl.java @@ -5,11 +5,12 @@ import cn.hutool.core.date.DateUtil; 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.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; +import com.engine.salary.entity.salaryacct.dto.AbnormalEmployeeListDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; @@ -112,7 +113,9 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct @Override public SalaryAcctEmployeePO getById(Long id) { - return getSalaryAcctEmployeeMapper().getById(id); + SalaryAcctEmployeePO po = getSalaryAcctEmployeeMapper().getById(id); + SalaryI18nUtil.i18n(po); + return po; } @Override @@ -438,7 +441,7 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) { return; } - List> partition = Lists.partition((List) salaryAcctEmployeePOS, 100); + List> partition = Lists.partition((List) salaryAcctEmployeePOS, 50); partition.forEach(getSalaryAcctEmployeeMapper()::batchInsert); } @@ -788,4 +791,34 @@ public class SalaryAcctEmployeeServiceImpl extends Service implements SalaryAcct } } + + @Override + public PageInfo listPage4NotDeclareByParam(AbnormalEmployeeListQueryParam queryParam) { + + Long recordId = queryParam.getRecordId(); + SalaryAcctRecordPO recordPO = getSalaryAcctRecordService(user).getById(recordId); + SalarySobPO sobPO = getSalarySobService(user).getById(recordPO.getSalarySobId()); + queryParam.setTaxCycle(recordPO.getTaxCycle()); + queryParam.setTaxAgentId(sobPO.getTaxAgentId()); + + List list = getSalaryAcctEmployeeMapper().listPage4NotDeclareByParam(queryParam); + return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, AbnormalEmployeeListDTO.class); + } + + @Override + public int countNotDeclareByParam(AbnormalEmployeeListQueryParam queryParam) { + + Long recordId = queryParam.getRecordId(); + SalaryAcctRecordPO recordPO = getSalaryAcctRecordService(user).getById(recordId); + SalarySobPO sobPO = getSalarySobService(user).getById(recordPO.getSalarySobId()); + queryParam.setTaxCycle(recordPO.getTaxCycle()); + queryParam.setTaxAgentId(sobPO.getTaxAgentId()); + + return getSalaryAcctEmployeeMapper().countNotDeclareByParam(queryParam); + } + + @Override + public void updateIgnoreNull(SalaryAcctEmployeePO salaryAcctEmployeePO) { + getSalaryAcctEmployeeMapper().updateIgnoreNull(salaryAcctEmployeePO); + } } diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index d21fe8d56..7f2e440e1 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -757,6 +757,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc rows.add(headerList); if (param.getImportType() != null && param.getImportType().equals("true")) { // 闇瑕佸鍑虹幇鏈夋暟鎹紝鏌ヨ钖祫鏍哥畻缁撴灉 + param.setDynamicEmpInfo(true); List> resultMapList = getSalaryAcctResultService(user).listByParam(param); for (Map map : resultMapList) { List row = Lists.newArrayListWithExpectedSize(headerColumnGroup.size()); diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 546cbf3c9..deb771892 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -3,15 +3,13 @@ package com.engine.salary.service.impl; 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.common.LocalDateRange; import com.engine.salary.common.YearMonthRange; -import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.report.po.SalaryAcctResultReportPO; import com.engine.salary.config.SalaryElogConfig; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.entity.salaryBill.po.SalarySendPO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO; +import com.engine.salary.entity.salaryacct.param.AbnormalEmployeeListQueryParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; @@ -20,9 +18,9 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctTaxAgentPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobPO; -import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; +import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -41,7 +39,6 @@ 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.ValidUtil; -import com.engine.salary.util.db.IdGenerator; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; @@ -286,8 +283,11 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "钖祫鏍哥畻璁板綍涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎")); } // 鏌ヨ钖祫鏍哥畻鎵鐢ㄨ柂璧勮处濂楃殑钖祫鍛ㄦ湡銆佽冨嫟鍛ㄦ湡鈥︹ - return getSalarySobService(user).getSalarySobCycle(salaryAcctRecordPO.getSalarySobId(), SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth())); + SalarySobCycleDTO salarySobCycle = getSalarySobService(user).getSalarySobCycle(salaryAcctRecordPO.getSalarySobId(), SalaryDateUtil.localDate2YearMonth(salaryAcctRecordPO.getSalaryMonth())); + int i = getSalaryAcctEmployeeService(user).countNotDeclareByParam(AbnormalEmployeeListQueryParam.builder().recordId(id).build()); + salarySobCycle.setAbnormalEmployeeNum(i); + return salarySobCycle; } @Override diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index de0842e3f..132b66264 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -11,6 +11,10 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant; 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.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; @@ -30,6 +34,8 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.common.FilterEnum; +import com.engine.salary.enums.common.SalaryLogGroupTypeEnum; +import com.engine.salary.enums.common.SalaryLogOperateTypeEnum; import com.engine.salary.enums.salaryaccounting.LockStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; import com.engine.salary.enums.salaryaccounting.SalaryAcctResultDataSourceEnum; @@ -200,6 +206,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user); } + private SalarySobTaxRuleService getSalarySobTaxRuleService(User user) { + return ServiceUtil.getService(SalarySobTaxRuleServiceImpl.class, user); + } + @Override public List listBySalaryAcctRecordIds(Collection salaryAcctRecordIds) { if (CollectionUtils.isEmpty(salaryAcctRecordIds)) { @@ -226,10 +236,11 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe List> partition = Lists.partition((List) salaryAcctEmployeeIds, 500); List salaryAcctResultPOS = new ArrayList<>(); partition.forEach(empIds -> { - salaryAcctResultPOS.addAll(getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(empIds).build())); + List resultPOS = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpIds(empIds).build()); + encryptUtil.decryptList(resultPOS, SalaryAcctResultPO.class); + salaryAcctResultPOS.addAll(resultPOS); }); // 瑙e瘑 - encryptUtil.decryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); return salaryAcctResultPOS; } @@ -502,7 +513,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe }); // 杞崲鎴愯柂璧勬牳绠楃粨鏋滃垪琛 - return SalaryAcctResultBO.buildTableData(salaryItemPOS, salarySobEmpFieldPOS, simpleEmployees, salaryAcctEmployeePOS, salaryAcctResultPOS, taxAgentPOS, salaryAcctEmployeeIds4ConsolidatedTax, customParameters, customBackCalcParameters, isBackCalc); + return SalaryAcctResultBO.buildTableData(salaryItemPOS, salarySobEmpFieldPOS, simpleEmployees, salaryAcctEmployeePOS, salaryAcctResultPOS, taxAgentPOS, salaryAcctEmployeeIds4ConsolidatedTax, customParameters, customBackCalcParameters, queryParam.isDynamicEmpInfo()); } @@ -597,6 +608,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瘑 @@ -704,6 +755,15 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } } + public void batchUpdate(List salaryAcctResultPOS) { + if (CollectionUtils.isNotEmpty(salaryAcctResultPOS)) { + // 鏁版嵁鍔犲瘑 + encryptUtil.encryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); + List> partition = Lists.partition(salaryAcctResultPOS, 100); + partition.forEach(getSalaryAcctResultMapper()::batchUpdate); + } + } + @Override public void deleteBySalaryAcctEmployeeIds(Collection salaryAcctEmployeeIds) { @@ -774,8 +834,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // 鏈杩愮畻鐨勫洖绠楄柂璧勯」鐩墍娑夊強鐨勫彉閲 Set issuedFieldIds = getIssuedFieldIds(salarySobBackItems); // 9銆佽绠楄柂璧勯」鐩殑杩愮畻浼樺厛绾 -// List> salarySobItemsWithPriority = SalaryAcctCalculatePriorityBO.calculatePriority(salarySobItemPOS, salaryItemPOS, expressFormulas, salarySobBackItems, issuedFieldIds); List salarySobItemsWithPriority = sortItems(salarySobItemPOS, salarySobBackItems, salaryItemPOS, expressFormulas); + //璐﹀涓厤缃殑涓◣瀛楁锛屼笉闇瑕佺郴缁熺畻 + List salarySobTaxRulePOS = getSalarySobTaxRuleService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List taxIds = SalaryEntityUtil.properties(salarySobTaxRulePOS, SalarySobTaxRulePO::getSalaryItemId, Collectors.toList()); // 10銆佹牴鎹甶d鏌ヨ鍏朵粬鍚堝苟璁$◣鐨勮柂璧勬牳绠楄褰 List otherSalaryAcctRecordPOS = getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAcctRecordPO.getId()); @@ -798,7 +860,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe 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)){ + 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); @@ -841,7 +903,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .setChildMonitor(childMonitor) .setResults(calculateResults) .setCalculateKey(calculateKey) - .setTaxDeclarationFunction(taxDeclarationFunction); + .setTaxDeclarationFunction(taxDeclarationFunction) + .setTaxIds(taxIds); List finalSalarySobBackItems = salarySobBackItems; LocalRunnable localRunnable = new LocalRunnable() { @Override @@ -900,6 +963,188 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } } + + @Override + public void afterTaxAccounting(SalaryAfterTaxAcctCalculateParam calculateParam, DataCollectionEmployee simpleEmployee) { + Long salaryAcctRecordId = calculateParam.getSalaryAcctRecordId(); + try { + // 1銆佹煡璇㈣柂璧勬牳绠楄褰 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "钖祫鏍哥畻璁板綍涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎")); + } + //鏌ヨ瀵瑰簲璐﹀ + SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId()); + if (Objects.isNull(salarySobPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "钖祫璐﹀涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎")); + } + + // 涓嶆槸鏌ヨ钖祫璐﹀涓嬪疄鏃剁殑钖祫椤圭洰锛岃屾槸鏌ヨ鍙戣捣钖祫鏍哥畻鏃跺瓨鍌ㄧ殑钖祫椤圭洰蹇収 + SalaryAcctConfig salaryAcctSobConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(salaryAcctRecordId); + + // 1.1銆佸鏋滆柂璧勬牳绠楄褰曞凡缁忓綊妗d簡锛屽氨涓嶈兘缁х画鏍哥畻 + if (!Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99148, "褰撳墠钖祫鏍哥畻璁板綍宸插綊妗o紝璇烽噸鏂版墦寮鍚庡啀杩涜鏍哥畻")); + } + // 2銆佹煡璇㈣柂璧勬牳绠楄褰曠殑钖祫鍛ㄦ湡銆佽冨嫟鍛ㄦ湡绛 + SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(salaryAcctRecordId); + // 3銆佹煡璇㈣柂璧勬牳绠楄褰曟墍鐢ㄨ柂璧勮处濂楃殑钖祫椤圭洰鍓湰 + List salarySobItemPOS = salaryAcctSobConfig.getSalarySobItems(); + if (CollectionUtils.isEmpty(salarySobItemPOS)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99151, "褰撳墠鎵鐢ㄧ殑钖祫璐﹀鏈夋嫨浠讳綍钖祫椤圭洰锛屾棤娉曟牳绠")); + } + // 鍥炵畻钖祫椤圭洰 + List salarySobBackItems = Collections.emptyList(); + if (Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), 1)) { + salarySobBackItems = salaryAcctSobConfig.getSalarySobBackItems(); + } + // 4銆佹煡璇㈠綋鍓嶇鎴风殑鎵鏈夎柂璧勯」鐩 + List salaryItemPOS = getSalaryItemService(user).listAll(); + // 5銆佹煡璇㈣柂璧勬牳绠楄褰曟墍鐢ㄨ柂璧勮处濂楃殑璋冭柂璁¤柂瑙勫垯 + List salarySobAdjustRulePOS = getSalarySobAdjustRuleService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + // 6銆佹煡璇㈢ぞ淇濈鍒╃殑鎵鏈夊瓧娈 + Map welfareColumns = getSIAccountService(user).welfareColumns(); + // 7銆佹煡璇㈣冨嫟寮曠敤鐨勬墍鏈夊瓧娈 + List attendQuoteFieldListDTOS = getAttendQuoteFieldService(user).listAll(); + + // 8銆佹煡璇㈠叕寮忚鎯 + Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); + formulaIds.addAll(SalaryEntityUtil.properties(salaryItemPOS, SalaryItemPO::getFormulaId)); + formulaIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getFormulaId)); + List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); + // 鏈杩愮畻鐨勫洖绠楄柂璧勯」鐩墍娑夊強鐨勫彉閲 + Set issuedFieldIds = getIssuedFieldIds(salarySobBackItems); + // 9銆佽绠楄柂璧勯」鐩殑杩愮畻浼樺厛绾 + List salarySobItemsWithPriority = sortItems(salarySobItemPOS, salarySobBackItems, salaryItemPOS, expressFormulas); + + //璐﹀涓厤缃殑涓◣瀛楁锛屼笉闇瑕佺郴缁熺畻 + List salarySobTaxRulePOS = getSalarySobTaxRuleService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List taxIds = SalaryEntityUtil.properties(salarySobTaxRulePOS, SalarySobTaxRulePO::getSalaryItemId, Collectors.toList()); + + /** + * 璁$畻绋庡悗钖祫 + */ + int index = salarySobItemsWithPriority.size() - 1; + for (Long id : taxIds) { + int i = salarySobItemsWithPriority.indexOf(id); + if (i != -1 && i < index) { + index = i; + } + } + salarySobItemsWithPriority = salarySobItemsWithPriority.subList(index, salarySobItemsWithPriority.size()); + + // 10銆佹牴鎹甶d鏌ヨ鍏朵粬鍚堝苟璁$◣鐨勮柂璧勬牳绠楄褰 + List otherSalaryAcctRecordPOS = getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAcctRecordPO.getId()); + // 11銆佹煡璇㈡湰娆℃牳绠椾汉鍛 + List salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId()); + 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(salaryAcctRecordId), 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); + } + + + // 11.1銆佸垵濮嬪寲杩涘害 + 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.AFTER_TAXA_CCT_PROGRESS + salaryAcctRecordId, initProgress); + // 12銆佸钖祫鏍哥畻浜哄憳杩涜鎷嗗垎 + List> partition = Lists.partition(salaryAcctEmployeePOS, 100); + // 12.1銆佺洃鎺у瓙绾跨▼鐨勪换鍔℃墽琛 + CountDownLatch childMonitor = new CountDownLatch(partition.size()); + // 12.2銆佽褰曞瓙绾跨▼鐨勬墽琛岀粨鏋 + BlockingDeque calculateResults = new LinkedBlockingDeque<>(partition.size()); + // 12.3銆佺敓鎴愭湰娆¤繍绠楃殑key + String calculateKey = UUID.randomUUID().toString(); + // 12.4銆佹槸鍚﹂噰鐢ㄧ郴缁熺畻绋 + TaxDeclarationFunctionEnum taxDeclarationFunction = getSalarySysConfService(user).getTaxDeclaration(); + // 12.5銆佸绾跨▼杩愮畻锛岃繍绠楃粨鏋滃瓨鏀惧湪涓存椂琛ㄤ腑 + for (List acctEmployeePOS : partition) { + SalaryAcctCalculateBO salaryAcctCalculateBO = new SalaryAcctCalculateBO() + .setSalaryAcctRecordPO(salaryAcctRecordPO) + .setSalarySobPO(salarySobPO) + .setSalarySobCycleDTO(salarySobCycleDTO) + .setOtherSalaryAcctRecordPOS(otherSalaryAcctRecordPOS) + .setSalaryAcctLockResultPOS(MapUtils.emptyIfNull(acctResults)) + .setLockSalaryItemIds(lockSalaryItemIds) + .setSalarySobItemPOS(salarySobItemPOS) + .setSalaryItemIdWithPriorityList(salarySobItemsWithPriority) + .setExpressFormulas(expressFormulas) + .setSalaryItemPOS(salaryItemPOS) + .setSalarySobAdjustRulePOS(salarySobAdjustRulePOS) + .setWelfareColumns(MapUtils.emptyIfNull(welfareColumns)) + .setAttendQuoteFieldListDTOS(attendQuoteFieldListDTOS) + .setSalaryAcctEmployeePOS(acctEmployeePOS) + .setIssuedFieldIds(issuedFieldIds) + .setChildMonitor(childMonitor) + .setResults(calculateResults) + .setCalculateKey(calculateKey) + .setTaxDeclarationFunction(taxDeclarationFunction) + .setTaxIds(taxIds); + List finalSalarySobBackItems = salarySobBackItems; + LocalRunnable localRunnable = new LocalRunnable() { + @Override + public void execute() { + getSalaryAcctCalculateService(user).calculate(salaryAcctCalculateBO, simpleEmployee, finalSalarySobBackItems); + } + }; + ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.HRM, "salaryAcctCalculate", localRunnable); + } + // 13銆佺瓑寰呮墍鏈夊瓙绾跨▼鎵ц瀹屾瘯 + childMonitor.await(); + + + // 14銆佸垽鏂瓙绾跨▼鎵ц缁撴灉 + boolean allSuccess = calculateResults.stream().allMatch(SalaryAcctCalculateBO.Result::isStatus); + if (!allSuccess) { + // 钖祫鏍哥畻瀹炵幇鐨勭嚎绋嬬殑閿欒淇℃伅 + String errorMsg = calculateResults.stream().filter(result -> !result.isStatus()).map(SalaryAcctCalculateBO.Result::getErrMsg).collect(Collectors.joining("|")); + getSalaryAcctProgressService(user).fail(SalaryCacheKey.AFTER_TAXA_CCT_PROGRESS + salaryAcctRecordId, errorMsg); + // 鍒犻櫎钖祫鏍哥畻涓存椂瀛樺偍琛ㄤ腑鐨勬暟鎹 + getSalaryAcctResultTempService(user).deleteByCalculateKey(calculateKey); + return; + } + // 15銆佸鐞嗘牳绠楃粨鏋滀复鏃惰〃鏁版嵁 + handleSalaryAfterTaxAcctResultTemp(salaryAcctRecordId, calculateKey,salarySobItemsWithPriority); + // 16銆佸紑濮嬭繍琛屾牎楠岃鍒 +// SalaryAcctCheckParam salaryAcctCheckParam = new SalaryAcctCheckParam() +// .setSalaryAcctRecordId(calculateParam.getSalaryAcctRecordId()) +// .setIds(calculateParam.getIds()); +// salaryCheckResultService.check(salaryAcctCheckParam, true, simpleEmployee); +// Thread.sleep(10); + getSalaryAcctProgressService(user).finish(SalaryCacheKey.AFTER_TAXA_CCT_PROGRESS + salaryAcctRecordId, true); + + + // 璁板綍鏃ュ織 + // 鏌ヨ鎿嶄綔鏃ュ織鐨則argetName + String targetName = getSalaryAcctRecordService(user).getLogTargetNameById(salaryAcctRecordId); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(salaryAcctRecordId)); + loggerContext.setTargetName(targetName); + loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "鏍哥畻绋庡悗钖祫")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "鏍哥畻绋庡悗钖祫")); + SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext); + } catch (Exception e) { + log.info("鏍哥畻绋庡悗钖祫鍑洪敊锛歿}", e.getMessage(), e); + getSalaryAcctProgressService(user).fail(SalaryCacheKey.AFTER_TAXA_CCT_PROGRESS + salaryAcctRecordId, SalaryI18nUtil.getI18nLabel(99642, "钖祫鏍哥畻鍑洪敊") + ": " + e.getMessage()); + } finally { + // 鏁版嵁搴撳瓧娈靛姞瀵嗙敤 + } + } + @NotNull private List sortItems(List salarySobItemPOS, List salarySobBackItems, List salaryItemPOS, List expressFormulas) { @@ -980,6 +1225,19 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe log.info(sw.prettyPrint()); } + + private void handleSalaryAfterTaxAcctResultTemp(Long salaryAcctRecordId, String calculateKey, List afterTaxItemIds) { + // 鏌ヨ钖祫鏍哥畻缁撴灉鐨勪复鏃跺瓨鍌 + List salaryAcctResultTempPOS = getSalaryAcctResultTempService(user).listByCalculateKey(calculateKey); + // 鍒犻櫎鍘熸潵鐨勮柂璧勬牳绠楃粨鏋 + getSalaryAcctResultMapper().deleteBySalaryAcctRecordIdAndSalaryItemIds(salaryAcctRecordId, afterTaxItemIds); + // 淇濆瓨钖祫鐨勮柂璧勬牳绠楃粨鏋 + List salaryAcctResultPOS = SalaryAcctResultBO.convert2ResultPO(salaryAcctResultTempPOS); + batchSave(salaryAcctResultPOS); + // 鍒犻櫎钖祫鏍哥畻涓存椂瀛樺偍琛ㄤ腑鐨勬暟鎹 + getSalaryAcctResultTempService(user).deleteByCalculateKey(calculateKey); + } + @Override public List listBySalaryAcctRecordIdsAndTaxAgentIds(Collection salaryAcctRecordIds, Collection taxAgentIds) { if (CollectionUtils.isEmpty(salaryAcctRecordIds)) { @@ -1227,4 +1485,21 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe } } + + @Override + public void writeBatchLog(SalaryAcctRecordPO salaryAcctRecord, + Map newResultValueMap, + SalaryLogOperateTypeEnum operateType) { + LoggerContext> context = new LoggerContext<>(); + context.setUser(user); + context.setTargetId(salaryAcctRecord.getId().toString()); + context.setTargetName(SalaryI18nUtil.getI18nLabel(268573, "鍏ㄩ儴浜哄憳")); + context.setOperator(user.getUID() + ""); + context.setOperateType(operateType.getValue()); + context.setOperateTypeName(operateType.getDefaultLabel()); + context.setGroupId(SalaryLogGroupTypeEnum.SALARY_ACCT_RESULT_VALUE.getValue()); + context.setGroupNameLabel(SalaryLogGroupTypeEnum.SALARY_ACCT_RESULT_VALUE.getLabelId().toString()); + context.setNewValues(newResultValueMap); + SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(context); + } } \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java index 60fb921dd..42ee468d3 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java @@ -538,7 +538,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch map = data.get(i); map.put("index", i + 2); // 3.鏍¢獙琛屽唴瀹 - boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, azDepAuthEmpIds, taxAgentNameMap); + boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, azDepAuthEmpIds, taxAgentNameMap, user); if (isError) { errorCount += 1; // 娣诲姞閿欒鏁版嵁 @@ -655,7 +655,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch map = data.get(i); map.put("index", i + 2); // 3.鏍¢獙琛屽唴瀹 - boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, azDepAuthEmpIds, taxAgentNameMap); + boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, azDepAuthEmpIds, taxAgentNameMap, user); if (isError) { errorCount += 1; // 娣诲姞閿欒鏁版嵁 diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 49a233a65..d5aa68c6e 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -6,6 +6,7 @@ import com.engine.core.impl.Service; import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.biz.*; import com.engine.salary.common.LocalDateRange; +import com.engine.salary.component.WeaTableColumnGroup; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.constant.SalaryItemConstant; @@ -28,6 +29,7 @@ import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.salaryarchive.*; +import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum; import com.engine.salary.enums.taxagent.TaxAgentEmpChangeModuleEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.archive.SalaryArchiveItemMapper; @@ -70,6 +72,7 @@ import weaver.hrm.User; import weaver.hrm.company.DepartmentComInfo; import java.io.InputStream; +import java.math.BigDecimal; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Pattern; @@ -592,23 +595,24 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe String sheetName = SalaryI18nUtil.getI18nLabel(85368, "钖祫妗f"); // 鑾峰彇鎵鏈夊彲琚紩鐢ㄧ殑钖祫椤圭洰 List salaryItems = salaryItemMapper.getCanAdjustSalaryItems(); - String[] header = {SalaryI18nUtil.getI18nLabel(85429, "濮撳悕"), - SalaryI18nUtil.getI18nLabel(86184, "涓◣鎵g即涔夊姟浜"), - SalaryI18nUtil.getI18nLabel(86185, "閮ㄩ棬"), - SalaryI18nUtil.getI18nLabel(86176, "宸ュ彿"), - SalaryI18nUtil.getI18nLabel(86186, "鎵嬫満鍙"), - SalaryI18nUtil.getI18nLabel(0, "浜哄憳鍒嗙被"), - SalaryI18nUtil.getI18nLabel(86186, "璇佷欢鍙风爜"), - SalaryI18nUtil.getI18nLabel(15890, "鍛樺伐鐘舵"), - SalaryI18nUtil.getI18nLabel(91075, "璧峰鍙戣柂鏃ユ湡"), - SalaryI18nUtil.getI18nLabel(91075, "鏈鍚庡彂钖棩鏈"), - SalaryI18nUtil.getI18nLabel(0, "棣栨钖祫鍙戞斁鏃ユ湡"), - SalaryI18nUtil.getI18nLabel(0, "鏈钖祫鍙戞斁鏃ユ湡") + Object[] header = { + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(85429, "濮撳悕"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86184, "涓◣鎵g即涔夊姟浜"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86185, "閮ㄩ棬"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86176, "宸ュ彿"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86186, "鎵嬫満鍙"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(0, "浜哄憳鍒嗙被"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(86186, "璇佷欢鍙风爜"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(15890, "鍛樺伐鐘舵"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(91075, "璧峰鍙戣柂鏃ユ湡"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(91075, "鏈鍚庡彂钖棩鏈"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(0, "棣栨钖祫鍙戞斁鏃ユ湡"), "", "", 0), + new WeaTableColumnGroup("150px", SalaryI18nUtil.getI18nLabel(0, "鏈钖祫鍙戞斁鏃ユ湡"), "", "", 0) }; // 2.琛ㄥご List headerList = new ArrayList<>(Arrays.asList(header)); for (SalaryItemPO salaryItem : salaryItems) { - headerList.add(salaryItem.getName()); + headerList.add(new WeaTableColumnGroup("150px", salaryItem.getName(), "", "", salaryItem.getPattern())); } // 鑾峰彇鎵鏈変釜绋庢墸缂翠箟鍔′汉 @@ -707,7 +711,15 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe row.add(Util.null2String(e.get("lastPayDate"))); // 钖祫椤圭洰鏁版嵁 for (SalaryItemPO salaryItem : salaryItems) { - row.add(e.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) ? (e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) == null ? "" : e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX).toString()) : ""); + try { + if (salaryItem.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())) { + row.add(new BigDecimal(e.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) ? (e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) == null ? "" : e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX).toString()) : "")); + } else { + row.add(e.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) ? (e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) == null ? "" : e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX).toString()) : ""); + } + } catch (Exception ex) { + row.add(e.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) ? (e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX) == null ? "" : e.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX).toString()) : ""); + } } rows.add(row); }); @@ -725,7 +737,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "钖祫妗f") + "-" + name); loggerContext.setUser(user); SalaryElogConfig.salaryArchiveLoggerTemplate.write(loggerContext); - return ExcelUtilPlus.genWorkbookV2(rows, sheetName); + return ExcelUtilPlus.genWorkbookV2WithPattern(rows, sheetName); } diff --git a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java index ea9097e9d..392ddb58c 100644 --- a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java @@ -113,7 +113,7 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB salaryBillViewingLimitSetting salaryBillViewingLimitDTO = saveParam.getSalaryBillViewingLimitSetting(); if (salaryBillViewingLimitDTO != null) { getSalarySysConfService(user).saveSettingByType(Util.null2String(salaryBillViewingLimitDTO.getLimitMonth()), SALARY_BILL_VIEWING_LIMIT_MONTH, "宸ヨ祫鍗曟椂鏁堟ц缃", "billSend"); - getSalarySysConfService(user).saveSettingByType(Util.null2String(salaryBillViewingLimitDTO.getBurningAfterReadingMin()), SALARY_BILL_BURNING_AFTER_READING_MIN, "宸ヨ祫鍗曟煡鐪嬪悗閿姣佽缃", "billSend"); + getSalarySysConfService(user).saveSettingByType(salaryBillViewingLimitDTO.getBurningAfterReadingMin() == null ? " " : salaryBillViewingLimitDTO.getBurningAfterReadingMin().toString(), SALARY_BILL_BURNING_AFTER_READING_MIN, "宸ヨ祫鍗曟煡鐪嬪悗閿姣佽缃", "billSend"); } return StringUtils.EMPTY; } diff --git a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java index eaf9c0be1..060f15cb2 100644 --- a/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillServiceImpl.java @@ -337,7 +337,7 @@ public class SalaryBillServiceImpl extends Service implements SalaryBillService * @param salaryTemplate * @return */ - private SalaryBillSendDTO buildSendParams(SalarySendPO salarySend, String taxAgentName, SalaryTemplatePO salaryTemplate) { + public SalaryBillSendDTO buildSendParams(SalarySendPO salarySend, String taxAgentName, SalaryTemplatePO salaryTemplate) { // 鍙戦侀氶亾 Set sendChannels = SalaryBillBO.buildSendChannels(salaryTemplate); if (CollectionUtils.isEmpty(sendChannels)) { diff --git a/src/com/engine/salary/service/impl/SalaryCalcTaxServiceImpl.java b/src/com/engine/salary/service/impl/SalaryCalcTaxServiceImpl.java new file mode 100644 index 000000000..f76d1354a --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryCalcTaxServiceImpl.java @@ -0,0 +1,306 @@ +package com.engine.salary.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.constant.SzyhApiConstant; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.engine.salary.entity.salaryacct.bo.SalaryCalcTax; +import com.engine.salary.entity.salaryacct.dto.SalaryCalcTaxInfoDTO; +import com.engine.salary.entity.salaryacct.param.AbnormalEmployeeListQueryParam; +import com.engine.salary.entity.salaryacct.param.SalaryCalcTaxParam; +import com.engine.salary.entity.salaryacct.po.*; +import com.engine.salary.entity.salarysob.dto.SalarySobTaxRuleDTO; +import com.engine.salary.entity.salarysob.po.SalarySobTaxReportRulePO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; +import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO; +import com.engine.salary.entity.taxdeclaration.po.TaxReportColumnPO; +import com.engine.salary.entity.taxdeclaration.response.DeclareTaxResponse; +import com.engine.salary.enums.common.SalaryLogOperateTypeEnum; +import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; +import com.engine.salary.exception.OnlineCalculateTaxException; +import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.remote.tax.client.CalculateClient; +import com.engine.salary.remote.tax.response.calculate.GetASynIndividualIncomeTaxFeedbackResponse; +import com.engine.salary.service.*; +import com.engine.salary.util.*; +import com.engine.salary.util.db.IdGenerator; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import weaver.hrm.User; + +import java.util.*; + +@Slf4j +public class SalaryCalcTaxServiceImpl extends Service implements SalaryCalcTaxService { + + + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { + return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); + } + + private SalaryAcctTaxAgentService getSalaryAcctTaxAgentService(User user) { + return ServiceUtil.getService(SalaryAcctTaxAgentServiceImpl.class, user); + } + + private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) { + return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private TaxAgentTaxReturnService getTaxAgentTaxReturnService(User user) { + return ServiceUtil.getService(TaxAgentTaxReturnServiceImpl.class, user); + } + + private TaxReportColumnService getTaxReportColumnService(User user) { + return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user); + } + + private SalarySobTaxReportRuleService getSalarySobTaxReportRuleService(User user) { + return ServiceUtil.getService(SalarySobTaxReportRuleServiceImpl.class, user); + } + + private SalarySobTaxRuleService getSalarySobTaxRuleService(User user) { + return ServiceUtil.getService(SalarySobTaxRuleServiceImpl.class, user); + } + + private EmployeeDeclareService getEmployeeDeclareService(User user) { + return ServiceUtil.getService(EmployeeDeclareServiceImpl.class, user); + } + + private TaxDeclarationApiConfigService getTaxDeclarationApiConfigService(User user) { + return ServiceUtil.getService(TaxDeclarationApiConfigServiceImpl.class, user); + } + + private SalaryAcctCalcTaxReqService getSalaryAcctCalcTaxReqService(User user) { + return ServiceUtil.getService(SalaryAcctCalcTaxReqServiceImpl.class, user); + } + + private SalaryAcctResultService getSalaryAcctResultService(User user) { + return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user); + } + + + @Override + public SalaryCalcTaxInfoDTO getCalcTaxInfo(SalaryCalcTaxParam salaryCalcTaxParam) { + // 鏌ヨ钖祫鏍哥畻璁板綍 + SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryCalcTaxParam.getSalaryAcctRecordId()); + // 鏌ヨ渚涘簲鍟嗕俊鎭 + TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(false); + // 鏌ヨ鍦ㄧ嚎璁$畻涓◣璁板綍 + List salaryAcctCalcTaxReqs = getSalaryAcctCalcTaxReqService(user).listByRecordId(salaryAcctRecord.getId()); + + boolean enableTaxDeclarationApiConfig = Objects.nonNull(apiConfig) && Objects.equals(apiConfig.getEnableUse(), 1); + boolean showCalcTaxButton = enableTaxDeclarationApiConfig && CollectionUtils.isEmpty(salaryAcctCalcTaxReqs); + boolean showCalcTaxFeedbackButton = enableTaxDeclarationApiConfig && CollectionUtils.isNotEmpty(salaryAcctCalcTaxReqs); + + SalaryCalcTaxInfoDTO salaryCalcTaxInfo = new SalaryCalcTaxInfoDTO(); + salaryCalcTaxInfo.setShowCalcTaxButton(showCalcTaxButton); + salaryCalcTaxInfo.setShowCalcTaxFeedbackButton(showCalcTaxFeedbackButton); + salaryCalcTaxInfo.setShowCalcAfterTaxButton(showCalcTaxFeedbackButton); + + return salaryCalcTaxInfo; + } + + @Override + public void calcTax(SalaryCalcTaxParam salaryCalcTaxParam) { + // 鏌ヨ渚涘簲鍟嗕俊鎭 + TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(true); + if (apiConfig == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160525, "鎺ュ彛娴侀噺涓嶈冻锛屾殏鏃犳硶浣跨敤璇ュ姛鑳斤紝璇峰厛璐拱鏅鸿兘绠楄柂鎺ュ彛娴侀噺")); + } + + Long salaryAcctRecordId = salaryCalcTaxParam.getSalaryAcctRecordId(); + int i = getSalaryAcctEmployeeService(user).countNotDeclareByParam(AbnormalEmployeeListQueryParam.builder().recordId(salaryAcctRecordId).build()); + if (i > 0) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(11111, "瀛樺湪鏈姤閫佺殑浜哄憳锛岃鍏堣繘琛屼汉鍛樻姤閫")); + } + List reqs = getSalaryAcctCalcTaxReqService(user).listByRecordId(salaryAcctRecordId); + if (CollUtil.isNotEmpty(reqs)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(11111, "璇峰厛鑾峰彇涓婁竴娆″湪绾跨畻绋庣粨鏋")); + } + + // 鏌ヨ钖祫鏍哥畻璁板綍 + SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + // 鏌ヨ钖祫鏍哥畻璁板綍鍏宠仈鐨勪釜绋庢墸缂翠箟鍔′汉 + List salaryAcctTaxAgents = getSalaryAcctTaxAgentService(user) + .listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecord.getId())); + // 鏌ヨ钖祫鏍哥畻璁板綍鍏宠仈鐨勮柂璧勬牳绠椾汉鍛 + List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecord.getId()); + // 鏌ヨ钖祫鏍哥畻璁板綍鍏宠仈鐨勮柂璧勬牳绠楃粨鏋 + List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecord.getId())); + // 鏌ヨ涓◣鎵g即涔夊姟浜 + Set taxAgentIds = SalaryEntityUtil.properties(salaryAcctTaxAgents, SalaryAcctTaxAgentPO::getTaxAgentId); + List taxAgents = getTaxAgentService(user).listByIds(taxAgentIds); + // 鏌ヨ涓◣鎵g即涔夊姟浜哄叧鑱旂殑鎶ョ◣淇℃伅 + List taxAgentTaxReturns = getTaxAgentTaxReturnService(user).getByTaxAgentIds(taxAgentIds); + // 鏌ヨ涓◣鐢虫姤琛ㄥ瓧娈 + List taxReportColumns = getTaxReportColumnService(user).listByContrastType(0); + // 鏌ヨ钖祫鏍哥畻璁板綍鍏宠仈钖祫璐﹀鐨勪釜绋庣敵鎶ラ厤缃 + List salarySobTaxReportRules = getSalarySobTaxReportRuleService(user) + .listBySalarySobIds(Collections.singleton(salaryAcctRecord.getSalarySobId())); + // 鏌ヨ鎶ラ佷汉鍛 + List employeeDeclares = getEmployeeDeclareService(user).listBySalaryAcctTaxAgent(salaryAcctTaxAgents); + + List salaryAcctCalcTaxReqs = new ArrayList<>(); + + Date now = new Date(); + Map params = new HashMap<>(1); + Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); + String url = apiConfig.getHost() + SzyhApiConstant.CALCULATE_ASYN_INDIVIDUAL_INCOME_TAX; + SalaryCalcTax salaryCalcTax = new SalaryCalcTax(salaryAcctRecord, salaryAcctTaxAgents, salaryAcctEmployees, + salaryAcctResultValues, taxAgents, taxAgentTaxReturns, taxReportColumns, salarySobTaxReportRules, employeeDeclares); + Map> taxAgentIdKeyRequestParam = salaryCalcTax.buildCalcTaxRequestParam(); + for (Map.Entry> entry : taxAgentIdKeyRequestParam.entrySet()) { + String reqJson = JsonUtil.toJsonString(entry.getValue()); + // 璇锋眰绗笁鏂逛緵搴斿晢 + String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); + TaskUtil taskUtil = new TaskUtil(); + taskUtil.writeApiTaskRecord(salaryAcctRecordId + "", url, reqJson, res); + + DeclareTaxResponse declareTaxResponse = JsonUtil.parseObject(res, DeclareTaxResponse.class); + if (Objects.isNull(declareTaxResponse) || Objects.isNull(declareTaxResponse.getHead())) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156449, "鏈嶅姟寮傚父")); + } + if (!Objects.equals(declareTaxResponse.getHead().getCode(), SzyhApiConstant.SUCCESS_CODE)) { + throw new SalaryRunTimeException(declareTaxResponse.getHead().getMsg()); + } + + SalaryAcctCalcTaxReqPO salaryAcctCalcTaxReq = new SalaryAcctCalcTaxReqPO(); + salaryAcctCalcTaxReq.setId(IdGenerator.generate()); + salaryAcctCalcTaxReq.setSalaryAcctRecordId(salaryAcctRecord.getId()); + salaryAcctCalcTaxReq.setTaxAgentId(entry.getKey()); + salaryAcctCalcTaxReq.setRequestId(declareTaxResponse.getBody().getRequestId()); + salaryAcctCalcTaxReq.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + salaryAcctCalcTaxReq.setCreator((long) user.getUID()); + salaryAcctCalcTaxReq.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + salaryAcctCalcTaxReq.setCreateTime(now); + salaryAcctCalcTaxReq.setUpdateTime(now); + salaryAcctCalcTaxReqs.add(salaryAcctCalcTaxReq); + } + + // 鎵归噺淇濆瓨 + getSalaryAcctCalcTaxReqService(user).batchSave(salaryAcctCalcTaxReqs); + // 璁板綍鏃ュ織 + getSalaryAcctResultService(user).writeBatchLog(salaryAcctRecord, Collections.emptyMap(), SalaryLogOperateTypeEnum.CALC_TAX_ONLINE); + } + + @Override + public void calcTaxFeedback(SalaryCalcTaxParam salaryCalcTaxParam) { + // 鏌ヨ渚涘簲鍟嗕俊鎭 + TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(true); + if (apiConfig == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160525, "鎺ュ彛娴侀噺涓嶈冻锛屾殏鏃犳硶浣跨敤璇ュ姛鑳斤紝璇峰厛璐拱鏅鸿兘绠楄柂鎺ュ彛娴侀噺")); + } + // 鏌ヨ钖祫鏍哥畻璁板綍 + Long salaryAcctRecordId = salaryCalcTaxParam.getSalaryAcctRecordId(); + SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + // 鏌ヨ钖祫鏍哥畻璁板綍鍏宠仈鐨勮柂璧勬牳绠椾汉鍛 + List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecord.getId()); + Map> salaryAcctEmployeeMap = SalaryEntityUtil.group2Map(salaryAcctEmployees, e -> e.getTaxAgentId() + "-" + e.getIncomeCategory()); + // 鏌ヨ钖祫鏍哥畻璁板綍鍏宠仈鐨勮柂璧勬牳绠楃粨鏋 + List salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecord.getId())); + Map> salaryAcctResultValueMap = SalaryEntityUtil.list2Map(salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId, SalaryAcctResultPO::getSalaryItemId); + // 鏌ヨ钖祫鏍哥畻璁板綍鍏宠仈鐨勪釜绋庢墸缂翠箟鍔′汉 + List salaryAcctTaxAgents = getSalaryAcctTaxAgentService(user) + .listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecord.getId())); + Map> salaryAcctTaxAgentMap = SalaryEntityUtil.group2Map(salaryAcctTaxAgents, SalaryAcctTaxAgentPO::getTaxAgentId); + // 鏌ヨ钖祫鏍哥畻璁板綍鍏宠仈鐨勫紓姝ョ畻绋庤姹傝褰 + List salaryAcctCalcTaxReqs = getSalaryAcctCalcTaxReqService(user).listByRecordId(salaryAcctRecord.getId()); + if (CollectionUtils.isEmpty(salaryAcctCalcTaxReqs)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(268184, "璇峰厛璁$畻涓◣鍐嶈幏鍙栧弽棣")); + } + // 鏌ヨ钖祫鏍哥畻璁板綍鍏宠仈鐨勮柂璧勮处濂椾釜绋庡瓧娈靛搴 + List salarySobTaxRules = getSalarySobTaxRuleService(user).getSalarySobTaxRuleDTO(salaryAcctRecord.getSalarySobId()); + Map salarySobTaxRuleMap = SalaryEntityUtil.convert2Map(salarySobTaxRules, SalarySobTaxRuleDTO::getIncomeCategoryId); + // 鏌ヨ鎶ラ佷汉鍛 + List employeeDeclares = getEmployeeDeclareService(user).listBySalaryAcctTaxAgent(salaryAcctTaxAgents); + Map> employeeDeclareMap = SalaryEntityUtil.group2Map(employeeDeclares, EmployeeDeclarePO::getTaxAgentId); + + + List addResultPOS = new ArrayList<>(); + List updateResultPOS = new ArrayList<>(); + + for (SalaryAcctCalcTaxReqPO salaryAcctCalcTaxReq : salaryAcctCalcTaxReqs) { + CalculateClient calculateClient = new CalculateClient(salaryAcctCalcTaxReq.getTaxAgentId()); + GetASynIndividualIncomeTaxFeedbackResponse feedbackResponse = calculateClient.getASynIndividualIncomeTaxFeedback(salaryAcctCalcTaxReq.getRequestId()); + + List subSalaryAcctTaxAgents = salaryAcctTaxAgentMap.get(salaryAcctCalcTaxReq.getTaxAgentId()); + if (CollectionUtils.isEmpty(subSalaryAcctTaxAgents)) { + continue; + } + List subEmployeeDeclares = employeeDeclareMap.get(salaryAcctCalcTaxReq.getTaxAgentId()); + Date now = new Date(); + // 鑾峰彇涓嶅悓鎵寰楅」鐩殑涓◣ + for (SalaryAcctTaxAgentPO salaryAcctTaxAgent : subSalaryAcctTaxAgents) { + IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(salaryAcctTaxAgent.getIncomeCategory()); + if (incomeCategoryEnum == null) { + continue; + } + SalarySobTaxRuleDTO taxRuleDTO = salarySobTaxRuleMap.get(incomeCategoryEnum.getValue().toString()); + Map empIdResult; + try { + empIdResult = incomeCategoryEnum.parseGetASynIndividualIncomeTaxFeedbackResponse(feedbackResponse, subEmployeeDeclares, taxRuleDTO); + } catch (OnlineCalculateTaxException e) { + log.error("鑾峰彇鍦ㄧ嚎绠楃◣缁撴灉寮傚父", e); + getSalaryAcctCalcTaxReqService(user).deleteByRecordId(salaryAcctRecord.getId()); + throw new SalaryRunTimeException(e.getMessage()); + } + List subSalaryAcctEmployees = salaryAcctEmployeeMap.get(salaryAcctTaxAgent.getTaxAgentId() + "-" + salaryAcctTaxAgent.getIncomeCategory()); + if (CollectionUtils.isEmpty(subSalaryAcctEmployees)) { + continue; + } + for (SalaryAcctEmployeePO salaryAcctEmployee : subSalaryAcctEmployees) { + Map salaryAcctResultValue = salaryAcctResultValueMap.get(salaryAcctEmployee.getId()); + if (salaryAcctResultValue == null) { + continue; + } + SalarySobTaxRuleDTO salarySobTaxRuleDTO = empIdResult.get(salaryAcctEmployee.getEmployeeId()); + if (salarySobTaxRuleDTO == null) { + continue; + } + List taxRules = salarySobTaxRuleDTO.getTaxRules(); + taxRules.stream() + .filter(rule -> rule.getSalaryItemId() != null) + .forEach(rule -> { + Long salaryItemId = rule.getSalaryItemId(); + SalaryAcctResultPO salaryAcctResultPO = salaryAcctResultValue.get(salaryItemId); + if (salaryAcctResultPO != null) { + salaryAcctResultPO.setResultValue(rule.getValue()); + updateResultPOS.add(salaryAcctResultPO); + } else { + salaryAcctResultPO = SalaryAcctResultPO.builder() + .salaryAcctRecordId(salaryAcctRecordId) + .salaryAcctEmpId(salaryAcctEmployee.getId()) + .employeeId(salaryAcctEmployee.getEmployeeId()) + .taxAgentId(salaryAcctEmployee.getTaxAgentId()) + .salarySobId(salaryAcctEmployee.getSalarySobId()) + .salaryItemId(salaryItemId) + .resultValue(rule.getValue()) + .originResultValue("") + .creator((long) user.getUID()) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); + addResultPOS.add(salaryAcctResultPO); + } + }); + } + } + } + + getSalaryAcctResultService(user).batchSave(addResultPOS); + getSalaryAcctResultService(user).batchUpdate(updateResultPOS); + getSalaryAcctCalcTaxReqService(user).deleteByRecordId(salaryAcctRecord.getId()); + // 璁板綍鏃ュ織 + getSalaryAcctResultService(user).writeBatchLog(salaryAcctRecord, Collections.emptyMap(), SalaryLogOperateTypeEnum.GET_CALC_TAX_FEEDBACK); + } +} diff --git a/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java index 688eba134..2fd26a4b3 100644 --- a/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryComparisonResultServiceImpl.java @@ -160,7 +160,7 @@ public class SalaryComparisonResultServiceImpl extends Service implements Salary // 鏌ヨ钖祫鏍哥畻鎵鐢ㄨ柂璧勮处濂楃殑钖祫椤圭洰鍓湰 List salarySobItemPOS = salaryAcctConfig.getSalarySobItems(); // 杩囨护鍦ㄨ处濂椾腑闅愯棌鐨勮柂璧勯」鐩 - salarySobItemPOS = salarySobItemPOS.stream().filter(po -> po.getItemHide()==null || po.getItemHide() == 0).collect(Collectors.toList()); + salarySobItemPOS = salarySobItemPOS.stream().filter(po -> po.getItemHide() == null || po.getItemHide() == 0).collect(Collectors.toList()); // 鏌ヨ鍏紡璇︽儏 Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId); List expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds); @@ -230,7 +230,7 @@ public class SalaryComparisonResultServiceImpl extends Service implements Salary Set includeSalaryItemIds = Sets.newHashSetWithExpectedSize(salaryItemPOS.size()); // 杞崲鎴愯柂璧勬牳绠楃嚎涓嬪姣旂粨鏋 List> resultMapList = SalaryAcctResultBO.buildComparisonTableData(salaryItemPOS, salarySobEmpFieldPOS, simpleEmployees, - salaryAcctEmployeePOS, salaryAcctResultPOS, excelAcctResultPOS, taxAgentPOS, customParameters, salaryAcctEmployeeIds4ConsolidatedTax, includeSalaryItemIds); + salaryAcctEmployeePOS, salaryAcctResultPOS, excelAcctResultPOS, taxAgentPOS, customParameters, salaryAcctEmployeeIds4ConsolidatedTax, includeSalaryItemIds, queryParam.isDynamicEmpInfo()); // 绯荤粺鍊煎拰绾夸笅鍊间竴鑷寸殑浜哄憳 if (queryParam.isOnlyDiffEmployee()) { // 杩囨护绯荤粺鍊煎拰绾夸笅鍊间竴鑷寸殑钖祫鏍哥畻浜哄憳 diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index 3fd658d1e..94646f488 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.SalarySobExtRangePO; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.IdCardEmployee; 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; @@ -215,6 +216,23 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee } + @Override + public List getEmployeeByIdsIncludeAccountType(List simpleEmployeeIds) { + if (CollectionUtils.isEmpty(simpleEmployeeIds)) { + return new ArrayList<>(); + } + List employeeList = new ArrayList<>(); + List> partition = Lists.partition(simpleEmployeeIds, 1000); + for (List longs : partition) { + employeeList.addAll(employBiz.getEmployeeByIdsIncludeAccountType(longs)); + if (openExtEmp) { + employeeList.addAll(getExtEmpService(user).getEmployeeByIds(longs)); + } + } + return SalaryI18nUtil.i18nList(employeeList); + + } + public List filterEmployees(List employees, String userName, String deparmentName, String mobile) { List employeeSameIds = employees.stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) @@ -273,6 +291,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)) { @@ -287,6 +313,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)) { @@ -301,6 +332,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,7 +366,9 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee // 浠巋rmresource鍜宧rmresourcevirtual鍙兘鑾峰彇鍒伴噸澶嶄汉鍛樻暟鎹紝闇瑕佹牴鎹汉鍛榠d鍘婚噸 result = result.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparingLong(DataCollectionEmployee::getEmployeeId))), ArrayList::new)); - return SalaryI18nUtil.i18nList(result); + //閮ㄩ棬鍒嗛儴绛変俊鎭浠藉埌鏍哥畻浜哄憳琛ㄤ腑锛屼笉杩涜澶氳瑷澶勭悊 + // return SalaryI18nUtil.i18nList(result); + return result; } /** @@ -535,4 +573,12 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee } return result; } + + @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/SalaryItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java index 64ce6fd2b..1a4a89bda 100644 --- a/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryItemServiceImpl.java @@ -249,6 +249,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService newSalaryItemPO.setTaxAgentIds(saveParam.getTaxAgentIds()); newSalaryItemPO.setSortedIndex(saveParam.getSortedIndex()); newSalaryItemPO.setWidth(saveParam.getWidth()); + newSalaryItemPO.setDefaultValue(saveParam.getDefaultValue()); salaryItemBiz.updateById(newSalaryItemPO); //鏀瑰悕鍚庢洿鏂板叕寮 @@ -459,6 +460,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService sobItem.setValueType(salaryItemPO.getValueType()); sobItem.setDescription(salaryItemPO.getDescription()); sobItem.setUpdateTime(now); + sobItem.setDefaultValue(salaryItemPO.getDefaultValue() == null ? "" : salaryItemPO.getDefaultValue()); getSalarySobItemService(user).update(sobItem); } } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index cb1fa61e0..33e914a26 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.salary.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Validator; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -25,6 +26,7 @@ import com.engine.salary.entity.salaryBill.param.*; import com.engine.salary.entity.salaryBill.po.SalarySendInfoPO; import com.engine.salary.entity.salaryBill.po.SalarySendPO; import com.engine.salary.entity.salaryBill.po.SalaryTemplatePO; +import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctFormulaBO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO; import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; @@ -54,6 +56,7 @@ import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper; import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; import com.engine.salary.mapper.salarybill.SalarySendInfoMapper; import com.engine.salary.mapper.salarybill.SalarySendMapper; +import com.engine.salary.report.common.constant.SalaryConstant; import com.engine.salary.service.*; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; @@ -469,26 +472,24 @@ public class SalarySendServiceImpl extends Service implements SalarySendService @Override public Map mySalaryBill(Long salaryInfoId, Long currentEmployeeId) { -// List salarySendInfos = new LambdaQueryChainWrapper<>(salarySendInfoMapper) -// .eq(SalarySendInfoPO::getDeleteType, 0) -// .eq(SalarySendInfoPO::getTenantKey, currentTenantKey) -// .eq(SalarySendInfoPO::getId, salaryInfoId).list(); - if (salaryInfoId == null) { - throw new SalaryRunTimeException("宸ヨ祫鍗曡褰曚笉瀛樺湪锛"); + throw new SalaryRunTimeException("宸ヨ祫鍗昳d涓虹┖锛"); } - SalarySendInfoPO po = new SalarySendInfoPO(); - po.setDeleteType(0); - po.setId(salaryInfoId); - List salarySendInfos = salarySendInfoMapper.listSome(po); - if (CollectionUtils.isEmpty(salarySendInfos)) { + SalarySendInfoPO salarySendInfo = getSalarySendInfoMapper().getById(salaryInfoId); + if (salarySendInfo == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "宸ヨ祫鍗曚俊鎭笉瀛樺湪")); } - if (currentEmployeeId.compareTo(salarySendInfos.get(0).getEmployeeId()) != 0) { + + if (currentEmployeeId.compareTo(salarySendInfo.getEmployeeId()) != 0) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "褰撳墠璐﹀彿鏃犳硶鏌ョ湅姝ゅ伐璧勫崟")); } - SalarySendInfoPO salarySendInfo = salarySendInfos.get(0); + + // 鑾峰彇榛樿妯℃澘淇℃伅 + SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); + if (salarySendPO == null) { + throw new SalaryRunTimeException("宸ヨ祫鍗曡褰曚笉瀛樺湪"); + } //宸ヨ祫鍗曟煡鐪嬫椂鏁堟 Date limitMonth = getLimitMonth(); @@ -497,11 +498,6 @@ public class SalarySendServiceImpl extends Service implements SalarySendService throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "浠呰兘鏌ョ湅" + salaryBillViewingLimitSetting.getLimitMonth() + "鏈堝唴鐨勫伐璧勫崟")); } - // 鑾峰彇榛樿妯℃澘淇℃伅 - SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); - if (salarySendPO == null) { - throw new SalaryRunTimeException("宸ヨ祫鍗曚笉瀛樺湪"); - } // 鑾峰彇銆佽褰曢娆℃煡鐪嬫椂闂 Date firstReadingTime = new Date(); if (salarySendInfo.getFirstReadingTime() == null) { @@ -529,15 +525,8 @@ public class SalarySendServiceImpl extends Service implements SalarySendService salarySendInfo.setUpdateTime(new Date()); getSalarySendInfoMapper().updateIgnoreNull(salarySendInfo); } -// List salarySends = new LambdaQueryChainWrapper<>(mapper) -// .eq(SalarySendPO::getDeleteType, 0) -// .eq(SalarySendPO::getTenantKey, currentTenantKey) -// .eq(SalarySendPO::getId, salarySendInfo.getSalarySendId()).list(); - SalarySendPO sendPo = new SalarySendPO(); - sendPo.setDeleteType(0); - sendPo.setId(salarySendInfo.getSalarySendId()); - List salarySends = mapper.listSome(sendPo); + List salarySends = mapper.listSome(SalarySendPO.builder().id(salarySendInfo.getSalarySendId()).build()); if (CollectionUtils.isEmpty(salarySends)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100512, "宸ヨ祫鍗曞彂鏀句笉瀛樺湪")); } @@ -565,15 +554,14 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // 鑾峰彇钖祫椤圭洰鏁版嵁 - - SalaryAcctResultPO acctPo = new SalaryAcctResultPO(); - acctPo.setDeleteType(0); - acctPo.setSalaryAcctRecordId(salarySendInfo.getSalaryAcctRecordId()); - acctPo.setEmployeeId(currentEmployeeId); - List salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(acctPo); + Long salaryAcctRecordId = salarySendInfo.getSalaryAcctRecordId(); + List salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctRecordId(salaryAcctRecordId).employeeId(currentEmployeeId).build()); + if (CollUtil.isEmpty(salaryAcctResultPOS)) { + throw new SalaryRunTimeException("钖祫鏍哥畻缁撴灉涓嶅瓨鍦紒"); + } encryptUtil.decryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); - SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salarySendInfo.getSalaryAcctRecordId()); + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); if (salaryAcctRecordPO == null) { throw new SalaryRunTimeException("钖祫鏍哥畻璁板綍涓嶅瓨鍦紒"); } @@ -647,6 +635,8 @@ public class SalarySendServiceImpl extends Service implements SalarySendService TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(salarySendInfo.getTaxAgentId()); DataCollectionEmployee simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(salarySendInfo.getEmployeeId()); + SalaryAcctEmployeePO acctEmployeePO = getSalaryAcctEmployeeService(user).getById(salaryAcctResultPOS.get(0).getSalaryAcctEmpId()); + SalaryAcctEmployeeBO.copyAcctEmp(simpleEmployee, acctEmployeePO); buildEmployeeInfo(employeeInformation, simpleEmployee, taxAgentPO.getName(), SalaryAcctResultBO.buildEmployeeFieldName()); map.put("employeeInformation", employeeInformation); map.put("salaryGroups", itemSetListDTOS); @@ -700,6 +690,8 @@ public class SalarySendServiceImpl extends Service implements SalarySendService return map; } + + private Date getLimitMonth() { //宸ヨ祫鍗曟椂鏁堟 salaryBillViewingLimitSetting salaryBillViewingLimitSetting = getSalaryBillBaseSetService(user).getSalaryBillViewingLimitSetting(); @@ -941,7 +933,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService .jobtitleName(simpleEmployee.getJobtitleName()) .jobtitleId(simpleEmployee.getJobtitleId()) .status(simpleEmployee.getStatus() == null ? "" : simpleEmployee.getStatus()) - .statusName(simpleEmployee.getStatus() == null ? "" : UserStatusEnum.parseByValue(new Integer(simpleEmployee.getStatus())).getDefaultLabel()) + .statusName(simpleEmployee.getStatus() == null ? "" : UserStatusEnum.parseByValue(new Integer(Util.null2s(simpleEmployee.getStatus(),"1"))).getDefaultLabel()) .telephone(StringUtils.isEmpty(simpleEmployee.getTelephone()) ? "" : simpleEmployee.getTelephone()) .username(StringUtils.isEmpty(simpleEmployee.getUsername()) ? "" : simpleEmployee.getUsername()) .workcode(StringUtils.isEmpty(simpleEmployee.getWorkcode()) ? "" : simpleEmployee.getWorkcode()) @@ -1579,13 +1571,25 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // 1.宸ヤ綔绨垮悕绉 String sheetName = SalaryI18nUtil.getI18nLabel(97036, "宸ヨ祫鍗曞彂鏀捐鎯"); List header = new ArrayList<>(); + // 鍛樺伐淇℃伅瀛楁 header.add(SalaryI18nUtil.getI18nLabel(85429, "濮撳悕")); header.add(SalaryI18nUtil.getI18nLabel(86185, "閮ㄩ棬")); header.add(SalaryI18nUtil.getI18nLabel(86186, "鎵嬫満鍙")); header.add(SalaryI18nUtil.getI18nLabel(86317, "宸ュ彿")); + Map salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, dto -> dto.getSalaryItemId() + SalaryConstant.DYNAMIC_SUFFIX); + List sortedSalaryItems = new ArrayList<>(); + for(String column : queryParam.getColumns()) { + if (column.contains(SalaryConstant.DYNAMIC_SUFFIX)) { + SalaryTemplateSalaryItemListDTO salaryTemplateSalaryItemListDTO = salaryItemMap.get(column); + if (salaryTemplateSalaryItemListDTO != null) { + sortedSalaryItems.add(salaryTemplateSalaryItemListDTO); + } + } + } + // 鍔ㄦ佸垪 - if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(salaryItems)) { - for (SalaryTemplateSalaryItemListDTO salaryItem : salaryItems) { + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(sortedSalaryItems)) { + for (SalaryTemplateSalaryItemListDTO salaryItem : sortedSalaryItems) { header.add(salaryItem.getName()); } } @@ -1604,7 +1608,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // 鍔ㄦ佸垪 Map mapColumn = listMaps.get(0); - for (SalaryTemplateSalaryItemListDTO salaryItem : salaryItems) { + for (SalaryTemplateSalaryItemListDTO salaryItem : sortedSalaryItems) { if (mapColumn.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX)) { row.add(dto.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX)); } @@ -1715,7 +1719,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService .filter(NumberUtils::isCreatable) .map(BigDecimal::new) .reduce(BigDecimal.ZERO, BigDecimal::add); - map.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap)); + map.put(item.getId() + SalaryItemConstant.DYNAMIC_SUFFIX, SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap)); }); return map; } @@ -1834,4 +1838,174 @@ public class SalarySendServiceImpl extends Service implements SalarySendService public List listSome(SalarySendPO param) { return getSalarySendMapper().listSome(param); } + + @Override + public Map preview(SalaryPreviewParam param) { + Long salaryInfoId = param.getSalaryInfoId(); + Long recipient = param.getRecipient(); + + if (salaryInfoId == null) { + throw new SalaryRunTimeException("宸ヨ祫鍗昳d涓虹┖锛"); + } + + SalarySendInfoPO salarySendInfo = getSalarySendInfoMapper().getById(salaryInfoId); + if (salarySendInfo == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100511, "宸ヨ祫鍗曚俊鎭笉瀛樺湪")); + } + + // 鑾峰彇榛樿妯℃澘淇℃伅 + SalarySendPO salarySendPO = getSalarySendMapper().getById(salarySendInfo.getSalarySendId()); + if (salarySendPO == null) { + throw new SalaryRunTimeException("宸ヨ祫鍗曡褰曚笉瀛樺湪"); + } + + // 鑾峰彇妯℃澘 + SalarySobPO salarySob = getSalarySobService(user).getById(salarySendPO.getSalarySobId()); + TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(salarySendInfo.getTaxAgentId()); + List salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Arrays.asList(salarySendPO.getSalarySobId(), salarySob.getId())); + if (CollectionUtils.isEmpty(salaryTemplates)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100518, "娌℃湁榛樿妯℃澘锛屾棤娉曞彂閫")); + } + SalaryBillSendDTO salaryBillSendDTO = getSalaryBillService(user).buildSendParams(salarySendPO, taxAgentPO.getName(), salaryTemplates.get(0)); + + SalaryTemplatePO salaryTemplate = salaryBillSendDTO.getSalaryTemplate(); + if (salaryTemplate == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100513, "娌℃湁榛樿妯℃澘锛屾棤娉曟煡鐪")); + } + + // 鍒ゆ柇鏄惁鏄ˉ鍙 + boolean isReplenish = NumberUtils.INTEGER_ONE.equals(salarySendInfo.getSalaryAcctType()); + + List salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctRecordId(salarySendInfo.getSalaryAcctRecordId()).employeeId(recipient).build()); + if (CollUtil.isEmpty(salaryAcctResultPOS)) { + throw new SalaryRunTimeException("钖祫鏍哥畻缁撴灉涓嶅瓨鍦紒"); + } + encryptUtil.decryptList(salaryAcctResultPOS, SalaryAcctResultPO.class); + + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salarySendInfo.getSalaryAcctRecordId()); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException("钖祫鏍哥畻璁板綍涓嶅瓨鍦紒"); + } + List> salaryAcctResultS = null; + if (Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), NumberUtils.INTEGER_ONE) && !isReplenish) { + // 璇ヨ褰曞洖绠楄繃,骞朵笖鑾峰彇鐨勪笉鏄洖绠楀悗鐨勫伐璧勫崟 + salaryAcctResultS = salaryAcctResultPOS.stream().map(m -> { + Map map = new LinkedHashMap<>(); + map.put("salaryItemId", m.getSalaryItemId()); + map.put("resultValue", m.getOriginResultValue()); + return map; + }).collect(Collectors.toList()); + } else { + salaryAcctResultS = salaryAcctResultPOS.stream().map(m -> { + Map map = new LinkedHashMap<>(); + map.put("salaryItemId", m.getSalaryItemId()); + map.put("resultValue", m.getResultValue()); + return map; + }).collect(Collectors.toList()); + } + + + Map map = new LinkedHashMap<>(); + map.put("tenantName", ""); + map.put("sendTime", SalaryDateUtil.getFormatLocalDateTime(salarySendInfo.getSendTime())); + List listDTOS = JSONArray.parseArray(isReplenish ? salaryTemplate.getReplenishSalaryItemSetting() : salaryTemplate.getSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class); + Optional optionalEmployeeInformation = listDTOS.stream().filter(e -> SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID.equals(e.getGroupId())).findFirst(); + SalaryTemplateSalaryItemSetListDTO employeeInformation = optionalEmployeeInformation.orElse(null); + List itemSetListDTOS = listDTOS.stream().filter(e -> !SalaryTemplateSalaryItemSetGroupConstant.EMPLOYEE_INFO_GROUP_ID.equals(e.getGroupId())).collect(Collectors.toList()); + List> finalSalaryAcctResultS = salaryAcctResultS; + itemSetListDTOS.stream().forEach(item -> { + item.getItems() + .forEach(e -> { + if (CollectionUtils.isEmpty(finalSalaryAcctResultS)) { + e.setSalaryItemValue(""); + } else { + Object o = finalSalaryAcctResultS.stream() + .filter(f -> f.get("salaryItemId") != null && String.valueOf(f.get("salaryItemId")).equals(e.getSalaryItemId())).findFirst() + .orElse(new HashMap<>()) + .get("resultValue"); + e.setSalaryItemValue(o == null ? "" : (String) o); + } + }); + }); + + + /** + * 杩囨护绌 + */ + if (Objects.equals(1, salaryTemplate.getSalaryItemNullStatus())) { + for (SalaryTemplateSalaryItemSetListDTO itemSetListDTO : itemSetListDTOS) { + List items = itemSetListDTO.getItems(); + List collect = items.stream().filter(item -> StringUtils.isNotBlank(item.getSalaryItemValue())).collect(Collectors.toList()); + itemSetListDTO.setItems(collect); + } + } + + /** + * 杩囨护0 + */ + if (Objects.equals(1, salaryTemplate.getSalaryItemZeroStatus())) { + for (SalaryTemplateSalaryItemSetListDTO itemSetListDTO : itemSetListDTOS) { + List items = itemSetListDTO.getItems(); + List collect = items.stream() + .filter(item -> SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue()) == null + || BigDecimal.ZERO.compareTo(SalaryEntityUtil.string2BigDecimal(item.getSalaryItemValue())) != 0) + .collect(Collectors.toList()); + itemSetListDTO.setItems(collect); + } + } + + DataCollectionEmployee simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(salarySendInfo.getEmployeeId()); + SalaryAcctEmployeePO acctEmployeePO = getSalaryAcctEmployeeService(user).getById(salaryAcctResultPOS.get(0).getSalaryAcctEmpId()); + SalaryAcctEmployeeBO.copyAcctEmp(simpleEmployee, acctEmployeePO); + buildEmployeeInfo(employeeInformation, simpleEmployee, taxAgentPO.getName(), SalaryAcctResultBO.buildEmployeeFieldName()); + map.put("employeeInformation", employeeInformation); + map.put("salaryGroups", itemSetListDTOS); + + salaryTemplate.setTheme(getBillTitle(salaryTemplate.getTheme(), salarySendPO.getSalaryMonth(), recipient)); + // 宸ヨ祫鍗曟按鍗版枃鏈瀷鍔ㄦ佸彉閲 == 澶勭悊 + handleSalaryWatermark(salaryTemplate, salarySendInfo, recipient); + map.put("salaryTemplate", salaryTemplate); + map.put("salaryAcctResult", salaryAcctResultS); + + // 宸ヨ祫鍗曠‘璁ゆ寜閽 + if (NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(), 1) == 0) { + // 寮鍚簡宸ヨ祫鍗曠‘璁 + Integer ackStatus = salarySendInfo.getBillConfirmStatus(); + if (ackStatus == null || ackStatus != BillConfimStatusEnum.CONFIRMED.getValue()) { + map.put("showAck", "1"); + } else { + map.put("showAck", "0"); + } + map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); + } else { + map.put("showAck", "0"); + } + + + // 宸ヨ祫鍗曞弽棣 + if (NumberUtils.compare(salaryTemplate.getFeedbackStatus(), 1) == 0) { + // 寮鍚簡宸ヨ祫鍗曞弽棣堟寜閽 + Integer confirmStatus = salarySendInfo.getBillConfirmStatus(); + map.put("showFeedback", "1"); + // 闄ら潪纭鐘舵佷负宸茬‘璁ゅ惁鍒欏彲浠ヤ竴鐩村弽棣 + if (NumberUtils.compare(salaryTemplate.getAckFeedbackStatus(), 1) == 0 && confirmStatus != null && confirmStatus == BillConfimStatusEnum.CONFIRMED.getValue()) { + map.put("showFeedback", "0"); + } + map.put("sendEmployeeId", salarySendInfo.getSendEmployeeId()); + } else { + map.put("showFeedback", "0"); + } + + // 璁板綍鏌ョ湅鏃ュ織 + String targetName = taxAgentPO.getName() + "-" + SalaryDateUtil.getFormatYearMonth(salarySendInfo.getSalaryMonth()); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setUser(user); + loggerContext.setTargetId(String.valueOf(salarySendInfo.getId())); + loggerContext.setTargetName(targetName); + loggerContext.setOperateType(OperateTypeEnum.READ.getValue()); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "棰勮宸ヨ祫鍗") + ": " + targetName + " " + salaryInfoId); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "棰勮宸ヨ祫鍗") + ": " + targetName); + SalaryElogConfig.mySalaryBillLoggerTemplate.write(loggerContext); + return map; + } } diff --git a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java index c53acbdd9..3fa69de29 100644 --- a/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobItemServiceImpl.java @@ -424,6 +424,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) .itemHide(itemParam.getItemHide()) + .defaultValue(itemParam.getDefaultValue()) .build(); salarySobItems.add(salarySobItemPO); } @@ -467,6 +468,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) .itemHide(itemParam.getItemHide()) + .defaultValue(itemParam.getDefaultValue()) .build(); salarySobItems.add(salarySobItemPO); } @@ -488,6 +490,7 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()) .valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()) .itemHide(itemParam.getItemHide()) + .defaultValue(itemParam.getDefaultValue()) .build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); @@ -515,13 +518,13 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needAddItems) { SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); - SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().salarySobId(salarySobId).incomeCategory(incomeCategory).salaryItemId(itemParam.getSalaryItemId()).salaryItemCode(salaryItemPO.getCode()).salarySobItemGroupId(NumberUtils.LONG_ZERO).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).description(StringUtils.EMPTY).creator(employeeId).createTime(now).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).build(); + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().salarySobId(salarySobId).incomeCategory(incomeCategory).salaryItemId(itemParam.getSalaryItemId()).salaryItemCode(salaryItemPO.getCode()).salarySobItemGroupId(NumberUtils.LONG_ZERO).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).description(StringUtils.EMPTY).creator(employeeId).createTime(now).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).build(); salarySobItems.add(salarySobItemPO); } for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) { SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap); - SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().id(itemParam.getId()).incomeCategory(incomeCategory).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).updateTime(now).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).build(); + SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().id(itemParam.getId()).incomeCategory(incomeCategory).formulaId(Optional.ofNullable(itemParam.getFormulaId()).orElse(NumberUtils.LONG_ZERO)).sortedIndex(itemParam.getSortedIndex()).updateTime(now).canDelete(itemParam.getCanDelete() == null ? NumberUtils.INTEGER_ONE : (itemParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)).roundingMode(itemParam.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : itemParam.getRoundingMode()).pattern(itemParam.getPattern() == null ? salaryItemPO.getPattern() : itemParam.getPattern()).valueType(itemParam.getValueType() == null ? salaryItemPO.getValueType() : itemParam.getValueType()).itemHide(itemParam.getItemHide()).defaultValue(itemParam.getDefaultValue()).build(); getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO); } @@ -647,7 +650,8 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe .setOriginSqlContent(valueType.equals(SalaryValueTypeEnum.SQL.getValue()) ? formulaContent : "") .setUseInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary()) .setDescription(salarySobItemPO.getDescription()) - .setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0); + .setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0) + .setDefaultValue(salarySobItemPO.getDefaultValue()); } return salarySobItemFormDTO; } diff --git a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java index 0432abfee..0a4b06cb4 100644 --- a/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobRangeServiceImpl.java @@ -293,7 +293,7 @@ public class SalarySobRangeServiceImpl extends Service implements SalarySobRange InputStream fileInputStream = null; try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); - List salarySobRangeImportLists = ExcelParseHelper.parse2Map(fileInputStream, SalarySobRangeImportListDTO.class, 0, 1, 5, "SpecialAddDeductionTemplate.xlsx"); + List salarySobRangeImportLists = ExcelParseHelper.parse2Map(fileInputStream, SalarySobRangeImportListDTO.class, 0, 1, 6, "SpecialAddDeductionTemplate.xlsx"); int total = salarySobRangeImportLists.size(); int index = 0; diff --git a/src/com/engine/salary/service/impl/SalarySobTaxRuleServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobTaxRuleServiceImpl.java new file mode 100644 index 000000000..2b95251dc --- /dev/null +++ b/src/com/engine/salary/service/impl/SalarySobTaxRuleServiceImpl.java @@ -0,0 +1,165 @@ +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.salaryitem.po.SalaryItemPO; +import com.engine.salary.entity.salarysob.dto.SalarySobTaxRuleDTO; +import com.engine.salary.entity.salarysob.param.SalarySobTaxRuleSaveParam; +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.salarysob.po.SalarySobTaxRulePO; +import com.engine.salary.enums.salarysob.IncomeCategoryEnum; +import com.engine.salary.enums.sicategory.DeleteTypeEnum; +import com.engine.salary.mapper.salarysob.SalarySobTaxRuleMapper; +import com.engine.salary.service.*; +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.google.common.collect.Lists; +import com.google.common.collect.Sets; +import org.apache.commons.collections4.CollectionUtils; +import weaver.hrm.User; + +import java.util.*; + +/** + * 钖祫璐﹀鐨勪釜绋庣敵鎶ヨ〃瑙勫垯 + *

Copyright: Copyright (c) 2023

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +public class SalarySobTaxRuleServiceImpl extends Service implements SalarySobTaxRuleService { + + + private SalarySobTaxRuleMapper salarySobTaxRuleMapper() { + return MapperProxyFactory.getProxy(SalarySobTaxRuleMapper.class); + } + + private SalarySobService getSalarySobService(User user) { + return ServiceUtil.getService(SalarySobServiceImpl.class, user); + } + + private TaxReportColumnService getTaxReportColumnService(User user) { + return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user); + } + + private SalaryItemService getSalaryItemService(User user) { + return ServiceUtil.getService(SalaryItemServiceImpl.class, user); + } + + private SalarySobItemService getSalarySobItemService(User user) { + return ServiceUtil.getService(SalarySobItemServiceImpl.class, user); + } + + private SalarySobBackItemService getSalarySobBackItemService(User user) { + return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user); + } + + @Override + public List listBySalarySobId(Long salarySobId) { + if (salarySobId == null) { + return Collections.emptyList(); + } + return salarySobTaxRuleMapper().listSome(SalarySobTaxRulePO.builder().salarySobId(salarySobId).build()); + } + + @Override + public List getSalarySobTaxRuleDTO(Long salarySobId) { + List resultList = Lists.newArrayList(); + // 鏌ヨ钖祫璐﹀ + SalarySobPO salarySob = getSalarySobService(user).getById(salarySobId); + Integer incomeCategory = salarySob.getIncomeCategory(); + List incomeCategoryIds = Collections.singletonList(incomeCategory); + // 钖祫璐﹀鐨勮柂璧勯」鐩 + List salarySobItems = getSalarySobItemService(user).listBySalarySobId(salarySobId); + // 钖祫璐﹀鐨勫洖绠楄柂璧勯」鐩 + List salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId); + // 钖祫椤圭洰 + Set salaryItemIds = Sets.newHashSet(); + salaryItemIds.addAll(SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId)); + salaryItemIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getSalaryItemId)); + List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); + Map idKeySalaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getId); + // 钖祫璐﹀涓凡缁忓瓨鍦ㄧ殑瀵瑰簲鍏崇郴 + List salarySobTaxReportRules = listBySalarySobId(salarySobId); + Map salarySobTaxReportRuleMap = SalaryEntityUtil.convert2Map(salarySobTaxReportRules, + e -> e.getIncomeCategory() + "-" + e.getTaxIndex(), SalarySobTaxRulePO::getSalaryItemId); + + for (Integer incomeCategoryId : incomeCategoryIds) { + IncomeCategoryEnum incomeCategoryEnum = IncomeCategoryEnum.parseByValue(incomeCategoryId); + List taxRules = new ArrayList<>(); + if (incomeCategoryEnum == IncomeCategoryEnum.WAGES_AND_SALARIES || incomeCategoryEnum == IncomeCategoryEnum.NON_RESIDENT_INCOME_WAGES_AND_SALARIES) { + //鍙湁姝e父宸ヨ祫钖噾锛屾墠鏄剧ず绠楃◣鏄庣粏瑙勫垯 + taxRules = incomeCategoryEnum.getReportType().getTaxRules(); + } else { + taxRules.add(SalarySobTaxRuleDTO.TaxRuleDTO.builder().name("绋庣巼").taxIndex("sl").build()); + taxRules.add(SalarySobTaxRuleDTO.TaxRuleDTO.builder().name("閫熺畻鎵i櫎鏁").taxIndex("sskcs").build()); + taxRules.add(SalarySobTaxRuleDTO.TaxRuleDTO.builder().name("鏈湀锛堟锛夊簲琛ョ◣棰").taxIndex("ybtse").build()); + } + for (SalarySobTaxRuleDTO.TaxRuleDTO taxRule : taxRules) { + Long salaryItemId = salarySobTaxReportRuleMap.get(incomeCategoryId + "-" + taxRule.getTaxIndex()); + SalaryItemPO salaryItem = idKeySalaryItemMap.get(salaryItemId); + if (Objects.nonNull(salaryItem)) { + taxRule.setSalaryItemId(salaryItem.getId()); + taxRule.setSalaryItemName(salaryItem.getName()); + } + } + + SalarySobTaxRuleDTO salarySobTaxReportRuleDTO = new SalarySobTaxRuleDTO(); + salarySobTaxReportRuleDTO.setIncomeCategoryId(incomeCategoryId.toString()); + salarySobTaxReportRuleDTO.setIncomeCategoryName(SalaryI18nUtil.getI18nLabel(incomeCategoryEnum.getLabelId(), incomeCategoryEnum.getDefaultLabel())); + salarySobTaxReportRuleDTO.setTaxRules(taxRules); + resultList.add(salarySobTaxReportRuleDTO); + } + return resultList; + } + + @Override + public void saveByParam(SalarySobTaxRuleSaveParam saveParam) { + // 鏍¢獙鍙傛暟鏄惁鍚堟硶 + // 鏋勫缓po + Date now = new Date(); + List salarySobTaxReportRules = Lists.newArrayList(); + for (SalarySobTaxRuleSaveParam.TaxReportRuleIncomeCategoryParam incomeCategoryParam : saveParam.getIncomeCategoryParams()) { + for (SalarySobTaxRuleSaveParam.TaxRuleParam taxReportRuleParam : incomeCategoryParam.getTaxRuleParams()) { + SalarySobTaxRulePO salarySobTaxRule = new SalarySobTaxRulePO(); + salarySobTaxRule.setId(IdGenerator.generate()); + salarySobTaxRule.setSalarySobId(saveParam.getSalarySobId()); + salarySobTaxRule.setIncomeCategory(incomeCategoryParam.getIncomeCategory()); + salarySobTaxRule.setTaxIndex(taxReportRuleParam.getTaxIndex()); + salarySobTaxRule.setSalaryItemId(taxReportRuleParam.getSalaryItemId()); + salarySobTaxRule.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); + salarySobTaxRule.setCreator((long) user.getUID()); + salarySobTaxRule.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + salarySobTaxRule.setCreateTime(now); + salarySobTaxRule.setUpdateTime(now); + salarySobTaxReportRules.add(salarySobTaxRule); + } + } + deleteBySalarySobIds(Collections.singleton(saveParam.getSalarySobId())); + if (CollectionUtils.isNotEmpty(salarySobTaxReportRules)) { + salarySobTaxReportRules.forEach(salarySobTaxRuleMapper()::insertIgnoreNull); + } + } + + @Override + public void deleteBySalarySobIds(Collection salarySobIds) { + if (CollectionUtils.isEmpty(salarySobIds)) { + return; + } + salarySobTaxRuleMapper().deleteBySalarySobIds(salarySobIds); + } + + @Override + public void saveBatch(List salarySobTaxReportRules) { + if (CollectionUtils.isEmpty(salarySobTaxReportRules)) { + return; + } +// salarySobTaxReportRules.forEach(salarySobTaxReportRuleMapper()::insertIgnoreNull); + } +} diff --git a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java index f8ee03c5a..f6f7e8b18 100644 --- a/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryTemplateServiceImpl.java @@ -317,7 +317,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate List newItems = new ArrayList<>(); for (SalaryTemplateSalaryItemListDTO templateItem : salaryItemSetting.getItems()) { SalarySobEmpFieldPO empFieldPO = getSalarySobEmpFieldMapper().getById(Long.valueOf(templateItem.getSalaryItemId())); - if (empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) { + if (empFieldPO != null && empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) { templateItem.setId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString()); templateItem.setSalaryItemId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString()); newItems.add(templateItem); @@ -341,7 +341,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate List newItems = new ArrayList<>(); for (SalaryTemplateSalaryItemListDTO templateItem : salaryItemSetting.getItems()) { SalarySobEmpFieldPO empFieldPO = getSalarySobEmpFieldMapper().getById(Long.valueOf(templateItem.getSalaryItemId())); - if (empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) { + if (empFieldPO != null && empFieldCodeList.contains(empFieldPO.getFieldCode()) && empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()) != null) { templateItem.setId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString()); templateItem.setSalaryItemId(empFieldCodeWithIdMap.get(empFieldPO.getFieldCode()).toString()); newItems.add(templateItem); diff --git a/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java b/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java index 80fee7f92..53a8826b2 100644 --- a/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/SpecialAddDeductionServiceImpl.java @@ -1,12 +1,13 @@ package com.engine.salary.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.NumberUtil; 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.SpecialAddDeductionBiz; import com.engine.salary.config.SalaryElogConfig; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.AddUpDeduction; import com.engine.salary.entity.datacollection.DataCollectionEmployee; @@ -53,6 +54,7 @@ import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.YearMonth; import java.util.*; @@ -371,7 +373,7 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd public XSSFWorkbook export(SpecialAddDeductionQueryParam param, boolean isTemplate) { //鑾峰彇鎿嶄綔鎸夐挳璧勬簮 - List> rowList = getExcelRowList(param, isTemplate); + List> rowList = getExcelRowList(param, isTemplate); // 璁板綍鎿嶄綔鏃ュ織 String name = SalaryI18nUtil.getI18nLabel(0, "瀵煎嚭"); @@ -384,7 +386,7 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd SalaryElogConfig.specialAddDeductionLoggerTemplate.write(loggerContext); //鑾峰彇excel - return ExcelUtil.genWorkbook(rowList, "涓撻」闄勫姞鍏嶇◣鎵i櫎"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "涓撻」闄勫姞鍏嶇◣鎵i櫎", 2); } @@ -393,16 +395,16 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd * * @return 瀵煎嚭鏁版嵁琛岄泦鍚 */ - private List> getExcelRowList(SpecialAddDeductionQueryParam param, boolean isTemplate) { + private List> getExcelRowList(SpecialAddDeductionQueryParam param, boolean isTemplate) { long employeeId = user.getUID(); //excel鏍囬 - List title = Arrays.asList("濮撳悕", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "璇佷欢鍙风爜", "鍏ヨ亴鏃ユ湡", "瀛愬コ鏁欒偛", "缁х画鏁欒偛", "浣忔埧璐锋鍒╂伅", "浣忔埧绉熼噾", "璧″吇鑰佷汉", "澶х梾鍖荤枟", "濠村辜鍎跨収鎶"); + List title = Arrays.asList("濮撳悕", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "璇佷欢鍙风爜", "鍏ヨ亴鏃ユ湡", "瀛愬コ鏁欒偛", "缁х画鏁欒偛", "浣忔埧璐锋鍒╂伅", "浣忔埧绉熼噾", "璧″吇鑰佷汉", "澶х梾鍖荤枟", "濠村辜鍎跨収鎶"); - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); if (!isTemplate || param.isHasData()) { // 闈炰笅杞藉鍏ユā鐗堬紝鏌ヨ鏁版嵁濉厖 - List> dataRowList = queryInfoForExcel(param, rowList); + List> dataRowList = queryInfoForExcel(param, rowList); rowList.addAll(dataRowList); } return rowList; @@ -439,10 +441,10 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd //鑾峰彇鎿嶄綔鎸夐挳璧勬簮 - List> rowList = getExcelRowDetailList(param); + List> rowList = getExcelRowDetailList(param); //鑾峰彇excel - return ExcelUtil.genWorkbook(rowList, "涓撻」闄勫姞鎵i櫎鏄庣粏"); + return ExcelUtil.genWorkbookWithDefaultPattern(rowList, "涓撻」闄勫姞鎵i櫎鏄庣粏", 2); } @@ -452,35 +454,35 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd * @param param * @return */ - private List> getExcelRowDetailList(SpecialAddDeductionQueryParam param) { + private List> getExcelRowDetailList(SpecialAddDeductionQueryParam param) { //excel鏍囬 - List title = Arrays.asList("濮撳悕", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "瀛愬コ鏁欒偛", "缁х画鏁欒偛", "浣忔埧璐锋鍒╂伅", "浣忔埧绉熼噾", "璧″吇鑰佷汉", "澶х梾鍖荤枟", "濠村辜鍎跨収鎶"); + List title = Arrays.asList("濮撳悕", "涓◣鎵g即涔夊姟浜", "閮ㄩ棬", "鎵嬫満鍙", "宸ュ彿", "瀛愬コ鏁欒偛", "缁х画鏁欒偛", "浣忔埧璐锋鍒╂伅", "浣忔埧绉熼噾", "璧″吇鑰佷汉", "澶х梾鍖荤枟", "濠村辜鍎跨収鎶"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); //鏌ヨ璇︾粏淇℃伅 List list = getSpecialAddDeductionBiz().listDTOByParam(param); encryptUtil.decryptList(list, SpecialAddDeductionRecordDTO.class); - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); cellList.add(Util.null2String(dto.getMobile())); cellList.add(Util.null2String(dto.getJobNum())); - cellList.add(Util.null2String(dto.getChildrenEducation())); - cellList.add(Util.null2String(dto.getContinuingEducation())); - cellList.add(Util.null2String(dto.getHousingLoanInterest())); - cellList.add(Util.null2String(dto.getHousingRent())); - cellList.add(Util.null2String(dto.getSupportingElder())); - cellList.add(Util.null2String(dto.getSeriousIllnessTreatment())); - cellList.add(Util.null2String(dto.getInfantCare())); + cellList.add(NumberUtil.isNumber(dto.getChildrenEducation()) ? new BigDecimal(dto.getChildrenEducation()) : Util.null2String(dto.getChildrenEducation())); + cellList.add(NumberUtil.isNumber(dto.getContinuingEducation()) ? new BigDecimal(dto.getContinuingEducation()) : Util.null2String(dto.getContinuingEducation())); + cellList.add(NumberUtil.isNumber(dto.getHousingLoanInterest()) ? new BigDecimal(dto.getHousingLoanInterest()) : Util.null2String(dto.getHousingLoanInterest())); + cellList.add(NumberUtil.isNumber(dto.getHousingRent()) ? new BigDecimal(dto.getHousingRent()) : Util.null2String(dto.getHousingRent())); + cellList.add(NumberUtil.isNumber(dto.getSupportingElder()) ? new BigDecimal(dto.getSupportingElder()) : Util.null2String(dto.getSupportingElder())); + cellList.add(NumberUtil.isNumber(dto.getSeriousIllnessTreatment()) ? new BigDecimal(dto.getSeriousIllnessTreatment()) : Util.null2String(dto.getSeriousIllnessTreatment())); + cellList.add(NumberUtil.isNumber(dto.getInfantCare()) ? new BigDecimal(dto.getInfantCare()) : Util.null2String(dto.getInfantCare())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); - List> rowList = new ArrayList<>(); + List> rowList = new ArrayList<>(); rowList.add(title); rowList.addAll(dataRowList); return rowList; @@ -703,7 +705,7 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd return null; } - private List> queryInfoForExcel(SpecialAddDeductionQueryParam param, List> rowList) { + private List> queryInfoForExcel(SpecialAddDeductionQueryParam param, List> rowList) { //鎺掑簭閰嶇疆 OrderRuleVO orderRule = getSalarySysConfService(user).orderRule(); param.setOrderRule(orderRule); @@ -712,10 +714,10 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd putQueryRange(param); } List list = getSpecialAddDeductionBiz().listByParam(param); - final List> dataRowList = Optional.ofNullable(list) + final List> dataRowList = Optional.ofNullable(list) .map(List::stream) .map(operatorStream -> operatorStream.map(dto -> { - List cellList = new ArrayList<>(); + List cellList = new ArrayList<>(); cellList.add(Util.null2String(dto.getUsername())); cellList.add(Util.null2String(dto.getTaxAgentName())); cellList.add(Util.null2String(dto.getDepartmentName())); @@ -723,13 +725,13 @@ public class SpecialAddDeductionServiceImpl extends Service implements SpecialAd cellList.add(Util.null2String(dto.getJobNum())); cellList.add(Util.null2String(dto.getIdNo())); cellList.add(Util.null2String(dto.getHiredate())); - cellList.add(Util.null2String(dto.getChildrenEducation())); - cellList.add(Util.null2String(dto.getContinuingEducation())); - cellList.add(Util.null2String(dto.getHousingLoanInterest())); - cellList.add(Util.null2String(dto.getHousingRent())); - cellList.add(Util.null2String(dto.getSupportingElder())); - cellList.add(Util.null2String(dto.getSeriousIllnessTreatment())); - cellList.add(Util.null2String(dto.getInfantCare())); + cellList.add(NumberUtil.isNumber(dto.getChildrenEducation()) ? new BigDecimal(dto.getChildrenEducation()) : Util.null2String(dto.getChildrenEducation())); + cellList.add(NumberUtil.isNumber(dto.getContinuingEducation()) ? new BigDecimal(dto.getContinuingEducation()) : Util.null2String(dto.getContinuingEducation())); + cellList.add(NumberUtil.isNumber(dto.getHousingLoanInterest()) ? new BigDecimal(dto.getHousingLoanInterest()) : Util.null2String(dto.getHousingLoanInterest())); + cellList.add(NumberUtil.isNumber(dto.getHousingRent()) ? new BigDecimal(dto.getHousingRent()) : Util.null2String(dto.getHousingRent())); + cellList.add(NumberUtil.isNumber(dto.getSupportingElder()) ? new BigDecimal(dto.getSupportingElder()) : Util.null2String(dto.getSupportingElder())); + cellList.add(NumberUtil.isNumber(dto.getSeriousIllnessTreatment()) ? new BigDecimal(dto.getSeriousIllnessTreatment()) : Util.null2String(dto.getSeriousIllnessTreatment())); + cellList.add(NumberUtil.isNumber(dto.getInfantCare()) ? new BigDecimal(dto.getInfantCare()) : Util.null2String(dto.getInfantCare())); return cellList; }).collect(Collectors.toList())) .orElse(Collections.emptyList()); diff --git a/src/com/engine/salary/service/impl/TaxDeclarationApiConfigServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationApiConfigServiceImpl.java index f307a95c8..9d44300cc 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationApiConfigServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationApiConfigServiceImpl.java @@ -3,14 +3,12 @@ package com.engine.salary.service.impl; import com.engine.core.impl.Service; import com.engine.salary.constant.SzyhApiConstant; import com.engine.salary.entity.datacollection.response.QuerySpecialAmountFeedbackResponse; -import com.engine.salary.entity.taxagent.response.SzyhResponseHead; import com.engine.salary.entity.taxapiflow.bo.TaxApiFlowBO; import com.engine.salary.entity.taxapiflow.param.TaxDeclarationBillingConfigSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiProfilePO; import com.engine.salary.enums.SalaryOnOffEnum; import com.engine.salary.enums.taxdeclaration.TaxDeclareApiProfileEnum; -import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationApiProfileMapper; import com.engine.salary.mapper.taxdeclaration.TaxDeclareApiConfigMapper; import com.engine.salary.service.TaxDeclarationApiConfigService; @@ -19,7 +17,10 @@ import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * chengliming @@ -97,17 +98,6 @@ public class TaxDeclarationApiConfigServiceImpl extends Service implements TaxDe config.setHost(getApiHost()); insert(config); } - if (StringUtils.isNotEmpty(config.getAppKey()) && StringUtils.isNotEmpty(config.getAppSecret())) { - QuerySpecialAmountFeedbackResponse response = getQuerySpecialAmountFeedbackResponse(config); - // 鏍¢獙璇锋眰缁撴灉 - String responseCode = Optional.ofNullable(response).map(QuerySpecialAmountFeedbackResponse::getHead).map(SzyhResponseHead::getCode).orElse(null); - - if (SzyhApiConstant.ERROR_CODE.equals(responseCode) - || SzyhApiConstant.APP_DISABLED_CODE.equals(responseCode) - || SzyhApiConstant.APP_PAUSED_CODE.equals(responseCode)) { - throw new SalaryRunTimeException("璐﹀彿瀵嗙爜閿欒鎴栬处鍙峰凡鍋滅敤"); - } - } } private String getApiHost() { diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index 788836bf8..4a97d36a5 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -1,13 +1,14 @@ package com.engine.salary.service.impl; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import com.cloudstore.eccom.pc.table.WeaTableColumn; 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.employeedeclare.po.EmployeeDeclarePO; @@ -31,7 +32,7 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationValueMapper; import com.engine.salary.mapper.taxdeclaration.TaxDeclareRecordMapper; import com.engine.salary.remote.tax.client.DeclareClient; -import com.engine.salary.remote.tax.response.declare.GetDeclareTaxResultFeedbackResponse; +import com.engine.salary.remote.tax.response.declare.GetCompanyIncomesResponse; import com.engine.salary.service.*; import com.engine.salary.util.*; import com.engine.salary.util.db.IdGenerator; @@ -220,7 +221,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar TaxDeclarationValuePO po = TaxDeclarationValuePO.builder().id(IdGenerator.generate()).taxDeclarationId(param.getTaxDeclarationId()).taxDeclareRecordId(taxDeclareRecordId).employeeId(param.getEmployeeId()).employeeType(param.getEmployeeType()).resultValue(param.getTaxReportColumnValues()).resultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())).createTime(new Date()).updateTime(new Date()).source(SourceEnum.ADD.getValue()).creator((long) user.getUID()).deleteType(0).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build(); TaxDeclarationValuePO po4log = new TaxDeclarationValuePO(); - BeanUtils.copyProperties(po,po4log); + BeanUtils.copyProperties(po, po4log); encryptUtil.encrypt(po, TaxDeclarationValuePO.class); getTaxDeclarationValueMapper().insertIgnoreNull(po); @@ -234,8 +235,8 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar .replace("{1}", SalaryDateUtil.getFormatYearMonth(declareRecordPO.getTaxCycle())) .replace("{2}", po.getEmployeeId().toString())); 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(po4log); SalaryElogConfig.taxDeclarationLoggerTemplate.write(loggerContext); @@ -269,8 +270,8 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar .replace("{1}", SalaryDateUtil.getFormatYearMonth(taxDeclareRecordPO.getTaxCycle())) .replace("{2}", po.getEmployeeId().toString())); loggerContext.setOperateType(OperateTypeEnum.UPDATE.getValue()); - loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "淇敼涓◣鐢虫姤鏁版嵁")); - loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "淇敼涓◣鐢虫姤鏁版嵁")); + loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "淇敼涓◣鐢虫姤鏁版嵁")); + loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "淇敼涓◣鐢虫姤鏁版嵁")); loggerContext.setOldValues(oldPo); loggerContext.setNewValues(po4log); SalaryElogConfig.taxDeclarationLoggerTemplate.write(loggerContext); @@ -375,15 +376,20 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar } Integer reportType = IncomeCategoryEnum.parseByValue(taxDeclaration.getIncomeCategory()).getReportType().getValue(); - TaxDeclareStatusPO taxDeclareStatus = getTaxDeclareStatusService(user).getTaxDeclareStatus(taxDeclareRecordPO.getId(), reportType); //绾夸笂鏁版嵁 DeclareClient declareClient = new DeclareClient(taxDeclareRecordPO.getTaxAgentId()); - GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(taxDeclareStatus.getDeclareRequestId()); + Map requestParam = declareClient.initRequestMap(); + // 绋庢鎵灞炴湡 + requestParam.put("skssq", SalaryDateUtil.getFormatYYYYMM(taxDeclaration.getTaxCycle())); + requestParam.put("pageSize", 10000); + requestParam.put("pageNo", 1); + requestParam.put("reportType", reportType); + GetCompanyIncomesResponse companyIncomes = declareClient.getCompanyIncomes(requestParam); Map>> onlineDataMap = new HashMap<>(); List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(taxDeclareRecordPO.getId()); - list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetDeclareTaxResultFeedbackResponse(onlineDataMap, declareTaxResultFeedbackResponse)); + list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetCompanyIncomesResponse(onlineDataMap, companyIncomes)); Map resultList = new HashMap<>(); List taxDeclarationValues = listByTaxDeclarationId(taxDeclaration.getId()); @@ -470,6 +476,8 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar onlyShowColumns.add(col); hasDiff.set(true); } + } else if ((StrUtil.isBlank(localValue) && "0.00".equals(onlineValue)) || (StrUtil.isBlank(onlineValue) && "0.00".equals(localValue))) { + //鐭矾 } else { if (!Objects.equals(localValue, onlineValue)) { dto.setDiff(localValue); @@ -526,7 +534,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar // 鑾峰彇绾夸笅瀵规瘮缁撴灉 Map contrastMap = contrast(param); List header = ((List) contrastMap.get("columns")); - PageInfo> pageInfo = (PageInfo>)contrastMap.get("pageInfo"); + PageInfo> pageInfo = (PageInfo>) contrastMap.get("pageInfo"); List> list = pageInfo.getList(); List empInfoColumns = new ArrayList<>(); diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java index cdd2d7ffc..4fe2376f3 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java @@ -27,7 +27,10 @@ import com.engine.salary.entity.taxapiflow.bo.TaxApiFlowBO; import com.engine.salary.entity.taxapiflow.po.TaxDeclarationApiFlowRecordPO; import com.engine.salary.entity.taxdeclaration.bo.*; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationRateDTO; -import com.engine.salary.entity.taxdeclaration.param.*; +import com.engine.salary.entity.taxdeclaration.param.AbnormalEmployeeListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.GetCompanyIncomesQueryParam; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; +import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; import com.engine.salary.entity.taxdeclaration.po.*; import com.engine.salary.entity.taxdeclaration.response.CancelDeclareFeedbackResponse; import com.engine.salary.entity.taxdeclaration.response.DeclareTaxFeedbackResponse; @@ -45,7 +48,7 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.mapper.taxdeclaration.TaxDeclareRecordMapper; import com.engine.salary.mapper.taxdeclaration.TaxDeclareStatusMapper; import com.engine.salary.remote.tax.client.DeclareClient; -import com.engine.salary.remote.tax.response.declare.GetDeclareTaxResultFeedbackResponse; +import com.engine.salary.remote.tax.response.declare.GetCompanyIncomesResponse; import com.engine.salary.service.*; import com.engine.salary.service.factory.TaxPaymentServiceFactory; import com.engine.salary.util.*; @@ -54,7 +57,6 @@ 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.page.SalaryPageUtil; -import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Sets; @@ -732,7 +734,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe declareStatus.setTaxDeclareStatus(TaxDeclareStatusEnum.DECLARING.getValue()); declareStatus.setRequestId(declareTaxResponse.getBody().getRequestId()); declareStatus.setTaxDeclareErrorMsg(""); - getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus,true); + getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus, true); // 璁板綍鏃ュ織 TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent(); @@ -748,8 +750,6 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe SalaryElogConfig.taxDeclarationLoggerTemplate.write(loggerContext); } - - @Override public void getDeclareFeedback(Long id, Integer reportType, TaxDeclarationRateDTO taxDeclarationRate) { TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); @@ -857,7 +857,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe declareStatus.setTaxPayAmount(payAmount.subtract(purePaidAmount).toString()); } //鏇存柊鐢虫姤鐘舵 - getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus,true); + getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus, true); // 濡傛灉鐢虫姤澶辫触 if (CollectionUtils.isNotEmpty(taxDeclareFails)) { @@ -886,9 +886,10 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe } @Override - public void cancelDeclare(Long id, Integer reportType) { + public void cancelDeclare(Long id, Integer reportType, TaxDeclarationRateDTO taxDeclarationRate) { TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); + Long taxAgentId = taxDeclareRecord.getTaxAgentId(); TaxDeclareStatusPO declareStatus = getTaxDeclareStatusService(user).getTaxDeclareStatus(id, reportType); // 鏇存鐢虫姤鎴愬姛鍚庝笉鑳戒綔搴 @@ -899,8 +900,6 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe if (!Objects.equals(declareStatus.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_SUCCESS_NO_PAY.getValue()) && !Objects.equals(declareStatus.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_SUCCESS_UNPAID.getValue())) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156497, "鍙湁鐢虫姤鎴愬姛锛屾棤闇缂存/鐢虫姤鎴愬姛锛屾湭缂存鐨勭姸鎬佹墠鑳戒綔搴")); } - // 渚涘簲鍟嗕俊鎭 - TaxDeclarationApiConfigPO apiConfig = taxDeclareRequest.getTaxDeclarationApiConfig(); // 娉ㄥ唽鐨勪紒涓氫俊鎭-->璇锋眰鍙傛暟 Map requestParam = taxDeclareRequest.getRequestParam(); // 绋庢鎵灞炴湡 @@ -908,27 +907,30 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe // 鐢虫姤绫诲瀷 requestParam.put("sblx", reportType + ""); // 浣滃簾閾惰仈缂存鍑瘉 -// taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()).cancelWithholdingVoucher(apiConfig, taxDeclareRecord, requestParam); +// ServiceUtil.getService(TaxPaymentWithholdingVoucherServiceImpl.class, user).cancelWithholdingVoucher(apiConfig, taxDeclareRecord, requestParam); // 鏄惁娓呯┖鎵寰 requestParam.put("sfqksd", "0"); - // 璇锋眰 - String reqJson = JsonUtil.toJsonString(requestParam); - String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_DECLARE; - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("浣滃簾鐢虫姤杩斿洖鏁版嵁锛" + res); - DeclareTaxResponse declareTaxResponse = JsonUtil.parseObject(res, DeclareTaxResponse.class); - if (Objects.isNull(declareTaxResponse) || Objects.isNull(declareTaxResponse.getHead())) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156449, "鏈嶅姟寮傚父")); + + Map responseParam = new HashMap<>(); + responseParam.put("reportType",reportType + ""); + DeclareClient declareClient = new DeclareClient(taxAgentId); + CancelDeclareFeedbackResponse cancelDeclareFeedbackResponse = declareClient.cancel(requestParam,responseParam); + + // 浣滃簾鏄惁鎴愬姛 + CancelDeclareStatusEnum cancelDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(SalaryEntityUtil.getIntValue(cancelDeclareFeedbackResponse.getBody().get("fkztbj"), 10), CancelDeclareStatusEnum.class); + if (cancelDeclareStatusEnum == CancelDeclareStatusEnum.CANCEL_FAIL) { + String feedbackBody = Util.null2String(cancelDeclareFeedbackResponse.getBody().get("fknr")).replace("\\", ""); + List errorMsgList = JsonUtil.parseList(feedbackBody, Map.class).stream().map(e -> Util.null2String(e.get("msg"))).collect(Collectors.toList()); + taxDeclarationRate.setStatus(false).setMsg(SalaryI18nUtil.getI18nLabel(156508, "浣滃簾澶辫触锛") + StringUtils.join(errorMsgList, ",")); } - if (!Objects.equals(declareTaxResponse.getHead().getCode(), SzyhApiConstant.SUCCESS_CODE)) { - throw new SalaryRunTimeException(declareTaxResponse.getHead().getMsg()); + TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(SalaryEntityUtil.getIntValue(cancelDeclareFeedbackResponse.getBody().get("sbztbj"), 1), TaxDeclareStatusEnum.class); + if (taxDeclareStatusEnum == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156509, "鏈嶅姟寮傚父锛屾帴鍙h繑鍥炴暟鎹湁璇")); } - // 鏇存柊涓◣鐢虫姤鐘舵 - declareStatus.setTaxDeclareStatus(TaxDeclareStatusEnum.DECLARE_CANCELLING.getValue()); - declareStatus.setRequestId(declareTaxResponse.getBody().getRequestId()); - getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus,true); + + //鏇存柊涓◣鐢虫姤鐘舵 + declareStatus.setTaxDeclareStatus(taxDeclareStatusEnum.getValue()); + getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus, true); // 璁板綍鏃ュ織 TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent(); @@ -985,7 +987,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe //鏇存柊涓◣鐢虫姤鐘舵 declareStatus.setTaxDeclareStatus(taxDeclareStatusEnum.getValue()); declareStatus.setRequestId(""); - getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus,true); + getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus, true); // 璁板綍鏃ュ織 TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent(); @@ -1003,28 +1005,38 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe @Override - public Object getDeclareTaxResultFeedback(Long id) { - TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); - TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); + public Object getCompanyIncomes(GetCompanyIncomesQueryParam param) { + Long id = param.getId(); + TaxDeclareRecordPO taxDeclareRecord = getById(id); DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId()); - GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(taxDeclareRecord.getDeclareRequestId()); + Map requestParam = declareClient.initRequestMap(); + // 绋庢鎵灞炴湡 + requestParam.put("skssq", SalaryDateUtil.getFormatYYYYMM(taxDeclareRecord.getTaxCycle())); + requestParam.put("pageSize", 10000); + requestParam.put("pageNo", 1); + requestParam.put("reportType", param.getReportType()); + GetCompanyIncomesResponse companyIncomes = declareClient.getCompanyIncomes(requestParam); Map>> map = new HashMap<>(); List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(id); - list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetDeclareTaxResultFeedbackResponse(map, declareTaxResultFeedbackResponse)); - return declareClient.getDeclareTaxResultFeedback(taxDeclareRecord.getDeclareRequestId()); + list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetCompanyIncomesResponse(map, companyIncomes)); + return map; } @Override - public XSSFWorkbook exportGetDeclareTaxResultFeedback(DeclareTaxResultFeedbackQueryParam param) { + public XSSFWorkbook exportGetCompanyIncomes(GetCompanyIncomesQueryParam param) { Long id = param.getId(); TaxDeclareRecordPO taxDeclareRecord = getById(id); - String requestId = param.getRequestId(); - TaxDeclareStatusPO declareStatus = getTaxDeclareStatusService(user).getTaxDeclareStatus(id, param.getReportType()); DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId()); - GetDeclareTaxResultFeedbackResponse declareTaxResultFeedbackResponse = declareClient.getDeclareTaxResultFeedback(StringUtils.isEmpty(requestId) ? declareStatus.getDeclareRequestId() : requestId); + Map requestParam = declareClient.initRequestMap(); + // 绋庢鎵灞炴湡 + requestParam.put("skssq", SalaryDateUtil.getFormatYYYYMM(taxDeclareRecord.getTaxCycle())); + requestParam.put("pageSize", 10000); + requestParam.put("pageNo", 1); + requestParam.put("reportType", param.getReportType()); + GetCompanyIncomesResponse companyIncomes = declareClient.getCompanyIncomes(requestParam); Map>> map = new HashMap<>(); List list = getTaxDeclarationService(user).listByTaxDeclareRecordId(id); @@ -1032,30 +1044,8 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe .map(TaxDeclarationPO::getIncomeCategory) .map(IncomeCategoryEnum::parseByValue) .filter(incomeCategoryEnum -> incomeCategoryEnum.getReportType().getValue().equals(param.getReportType())) - .collect(Collectors.toList()).forEach(e -> e.parseGetDeclareTaxResultFeedbackResponse(map, declareTaxResultFeedbackResponse)); - list.stream().map(TaxDeclarationPO::getIncomeCategory).map(IncomeCategoryEnum::parseByValue).forEach(e -> e.parseGetDeclareTaxResultFeedbackResponse(map, declareTaxResultFeedbackResponse)); - // 鑹惧織鍒嗘潈 - 240529娉ㄩ噴 - // List taxAgentIds = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); - // if (!taxAgentIds.contains(taxDeclareRecord.getTaxAgentId())) { - // Map authMap = getEmployeeDeclareService(user).empIdsByAzGssbAuth(user.getUID()); - // List canManageEmpIds = (List)authMap.get("canManageEmpIds"); - // // 鑾峰彇杩欎簺浜哄湪浜哄憳淇℃伅鎶ラ佷腑鐨勮瘉浠跺彿鐮 - // List employeeDeclareList = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentId(taxDeclareRecord.getTaxCycle(), taxDeclareRecord.getTaxAgentId()); - // List canManageCardNum = employeeDeclareList.stream().filter(declare -> canManageEmpIds.contains(declare.getEmployeeId())).map(EmployeeDeclarePO::getCardNum).collect(Collectors.toList()); - // for (Map.Entry>> entry : map.entrySet()) { - // List> valueList = entry.getValue(); - // List> newvalueList = new ArrayList<>(); - // newvalueList.add(valueList.get(0)); - // for (int i =1; i value = valueList.get(i); - // String cardNum = Util.null2String(value.get(2)); - // if (canManageCardNum.contains(cardNum)) { - // newvalueList.add(value); - // } - // } - // map.put(entry.getKey(), newvalueList); - // } - // } + .collect(Collectors.toList()) + .forEach(e -> e.parseGetCompanyIncomesResponse(map, companyIncomes)); return ExcelUtil.genWorkbookV2(map); } @@ -1080,27 +1070,15 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe requestParam.put("skssq", SalaryDateUtil.getFormatYYYYMM(taxDeclareRecord.getTaxCycle())); // 鐢虫姤绫诲瀷 requestParam.put("sblx", reportType + ""); - // 璇锋眰 - String reqJson = JsonUtil.toJsonString(requestParam); - log.info("鏇存鐢虫姤璇锋眰鏁版嵁锛" + reqJson); - String url = apiConfig.getHost() + SzyhApiConstant.UPDATE_DECLARE; - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("鏇存鐢虫姤杩斿洖鏁版嵁锛" + res); - UpdateDeclareResponse updateDeclareResponse = JsonUtil.parseObject(res, UpdateDeclareResponse.class); - if (Objects.isNull(updateDeclareResponse) || Objects.isNull(updateDeclareResponse.getHead())) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156449, "鏈嶅姟寮傚父")); - } - if (!Objects.equals(updateDeclareResponse.getHead().getCode(), SzyhApiConstant.SUCCESS_CODE)) { - throw new SalaryRunTimeException(updateDeclareResponse.getHead().getMsg()); - } + + DeclareClient declareClient = new DeclareClient(taxDeclareRecord.getTaxAgentId()); + declareClient.correct(requestParam); //鏇存柊鐢虫姤鐘舵 declareStatus.setTaxDeclareType(TaxDeclareTypeEnum.UPDATE_DECLARE.getValue()); declareStatus.setTaxDeclareStatus(NOT_DECLARE.getValue()); declareStatus.setRequestId(""); - getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus,true); + getTaxDeclareStatusService(user).updateTaxDeclareStatus(declareStatus, true); // 璁板綍鏃ュ織 TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent(); @@ -1167,50 +1145,6 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe // taxDeclarationLoggerTemplate.write(loggerContext); } - @Override - public String queryDeclareStatus(Long id) { - TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id); - TaxDeclarationApiConfigPO apiConfig = taxDeclareRequest.getTaxDeclarationApiConfig(); - TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); - Map requestParam = taxDeclareRequest.getRequestParam(); - // 绋庢鎵灞炴湡 - requestParam.put("skssq", SalaryDateUtil.getFormatYYYYMM(taxDeclareRecord.getTaxCycle())); - // 璇锋眰 - String reqJson = JsonUtil.toJsonString(requestParam); - String url = apiConfig.getHost() + SzyhApiConstant.QUERY_DECLARE_STATUS; - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("绋庡眬绔敵鎶ョ姸鎬佹煡璇㈣繑鍥炴暟鎹細" + res); - return res; - } - - @Override - public String queryCompanyIncomes(TaxDeclareRecordParam taxDeclareRecordParam) { - ValidUtil.doValidator(taxDeclareRecordParam); - - TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(taxDeclareRecordParam.getTaxDeclareRecordId()); - TaxDeclarationApiConfigPO apiConfig = taxDeclareRequest.getTaxDeclarationApiConfig(); - TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord(); - Map requestParam = taxDeclareRequest.getRequestParam(); - // 绋庢鎵灞炴湡 - requestParam.put("skssq", SalaryDateUtil.getFormatYYYYMM(taxDeclareRecord.getTaxCycle())); - // 鎶ヨ〃绫诲瀷 - requestParam.put("reportType", taxDeclareRecordParam.getReportType()); - // 椤电爜 - requestParam.put("pageNo", "1"); - // 姣忛〉鏁伴噺 - requestParam.put("pageSize", "3000"); - // 璇锋眰 - String reqJson = JsonUtil.toJsonString(requestParam); - String url = apiConfig.getHost() + SzyhApiConstant.QUERY_COMPANY_INCOMES; - Map params = new HashMap<>(1); - Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("绋庡眬绔敵鎶ユ槑缁嗘煡璇㈣繑鍥炴暟鎹細" + res); - return res; - } - @Override public void updateById(TaxDeclareRecordPO taxDeclareRecord) { diff --git a/src/com/engine/salary/service/impl/TaxPaymentAgreementServiceImpl.java b/src/com/engine/salary/service/impl/TaxPaymentAgreementServiceImpl.java index 5b140dd83..e0cd2bb00 100644 --- a/src/com/engine/salary/service/impl/TaxPaymentAgreementServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxPaymentAgreementServiceImpl.java @@ -39,7 +39,7 @@ public class TaxPaymentAgreementServiceImpl extends AbstractTaxPaymentService { String responseCode = Optional.ofNullable(feedbackResponse).map(AgreementQueryFeedbackResponse::getHead).map(SzyhResponseHead::getCode).orElse(null); String msg = Optional.ofNullable(feedbackResponse).map(AgreementQueryFeedbackResponse::getHead).map(SzyhResponseHead::getMsg).orElse(null); TaxAgreementFormDTO agreementFormDTO = new TaxAgreementFormDTO(); - if (SzyhApiConstant.HANDLING_CODE.equals(responseCode)) { + if (SzyhApiConstant.HANDLING_CODE.equals(responseCode)||SzyhApiConstant.TASK_HANDLING_CODE.equals(responseCode)) { // 濡傛灉鎺ュ彛浠嶅湪澶勭悊涓紝鍒欑户缁疆璇 return agreementFormDTO.setFinish(false); } diff --git a/src/com/engine/salary/service/impl/TaxPaymentWithheldVoucherServiceImpl.java b/src/com/engine/salary/service/impl/TaxPaymentWithheldVoucherServiceImpl.java index 235bdeefd..16578143b 100644 --- a/src/com/engine/salary/service/impl/TaxPaymentWithheldVoucherServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxPaymentWithheldVoucherServiceImpl.java @@ -3,16 +3,14 @@ package com.engine.salary.service.impl; import com.alibaba.fastjson.JSON; import com.engine.salary.constant.SzyhApiConstant; import com.engine.salary.entity.datacollection.bo.DataCollectionBO; -import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; import com.engine.salary.entity.taxagent.response.SzyhResponseHead; -import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO; import com.engine.salary.entity.taxpayment.dto.TaxWithheldVoucherResultDTO; import com.engine.salary.entity.taxpayment.param.TaxPaymentQueryParam; -import com.engine.salary.entity.taxpayment.response.BaseResponse; import com.engine.salary.entity.taxpayment.response.WithheldVoucherResponse; import com.engine.salary.enums.salarysob.DeclareReportTypeEnum; import com.engine.salary.enums.taxdeclaration.TaxPaymentServiceTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.remote.tax.client.TaxPaymentClient; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -35,17 +33,14 @@ public class TaxPaymentWithheldVoucherServiceImpl extends AbstractTaxPaymentServ return TaxPaymentServiceTypeEnum.WITHHELD_VOUCHER.getValue(); } - protected T getRequestIdResponse(TaxAgentTaxReturnPO returnPO, String taxAgentName, TaxPaymentQueryParam param, TaxDeclarationApiConfigPO apiConfig, Class clazz) { - String url = apiConfig.getHost() + SzyhApiConstant.GET_WITHHELD_VOUCHER; - Map requestParam = DataCollectionBO.getApiBaseQueryParams(returnPO, taxAgentName, SalaryDateUtil.getFormatYYYYMM(param.getTaxYearMonth())); - return postRequest(apiConfig, url, requestParam, clazz); - } - @Override public TaxWithheldVoucherResultDTO getWithheldVoucher(TaxPaymentQueryParam param) { TempWrapper tempWrapper = checkBeforeGetRequestIdResponse(param); - WithheldVoucherResponse queryResponse = getRequestIdResponse(tempWrapper.getTaxReturnPO(), tempWrapper.getTaxAgentPO().getName(), - param, tempWrapper.getApiConfigPO(), WithheldVoucherResponse.class); + + TaxPaymentClient taxPaymentClient = new TaxPaymentClient(param.getTaxAgentId()); + Map requestParam = DataCollectionBO.getApiBaseQueryParams(tempWrapper.getTaxReturnPO(), tempWrapper.getTaxAgentPO().getName(), SalaryDateUtil.getFormatYYYYMM(param.getTaxYearMonth())); + WithheldVoucherResponse queryResponse = taxPaymentClient.getWithheldVoucher(requestParam); + // 鏍¢獙璇锋眰缁撴灉 String responseCode = Optional.ofNullable(queryResponse).map(WithheldVoucherResponse::getHead).map(SzyhResponseHead::getCode).orElse(null); WithheldVoucherResponse.Feedback feedback = Optional.ofNullable(queryResponse).map(WithheldVoucherResponse::getBody).map(body -> { diff --git a/src/com/engine/salary/service/impl/TaxPaymentWithholdingServiceImpl.java b/src/com/engine/salary/service/impl/TaxPaymentWithholdingServiceImpl.java index 743f1631c..66b458146 100644 --- a/src/com/engine/salary/service/impl/TaxPaymentWithholdingServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxPaymentWithholdingServiceImpl.java @@ -3,7 +3,6 @@ package com.engine.salary.service.impl; import com.alibaba.fastjson.JSON; import com.engine.salary.constant.SzyhApiConstant; import com.engine.salary.entity.datacollection.bo.DataCollectionBO; -import com.engine.salary.entity.datacollection.response.QuerySpecialAmountResponse; import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; import com.engine.salary.entity.taxagent.response.SzyhResponseHead; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO; @@ -13,10 +12,8 @@ import com.engine.salary.entity.taxpayment.dto.TaxAgreementFeedbackResultDTO; import com.engine.salary.entity.taxpayment.dto.TaxAmountFormDTO; import com.engine.salary.entity.taxpayment.dto.TaxFeedbackResultDTO; import com.engine.salary.entity.taxpayment.param.TaxPaymentQueryParam; -import com.engine.salary.entity.taxpayment.po.TaxPaymentRequestPO; import com.engine.salary.entity.taxpayment.response.BaseResponse; import com.engine.salary.entity.taxpayment.response.WithholdingFeedbackResponse; -import com.engine.salary.enums.SalaryOnOffEnum; import com.engine.salary.enums.salarysob.DeclareReportTypeEnum; import com.engine.salary.enums.taxdeclaration.TaxDeclareStatusEnum; import com.engine.salary.enums.taxdeclaration.TaxPaymentServiceTypeEnum; @@ -26,7 +23,10 @@ import com.engine.salary.util.*; import lombok.extern.slf4j.Slf4j; import java.math.BigDecimal; -import java.util.*; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; /** * 涓夋柟缂存 @@ -45,7 +45,7 @@ public class TaxPaymentWithholdingServiceImpl extends AbstractTaxPaymentService // 鏍¢獙璇锋眰缁撴灉 String responseCode = Optional.ofNullable(feedbackResponse).map(WithholdingFeedbackResponse::getHead).map(SzyhResponseHead::getCode).orElse(null); String msg = Optional.ofNullable(feedbackResponse).map(WithholdingFeedbackResponse::getHead).map(SzyhResponseHead::getMsg).orElse(null); - if (SzyhApiConstant.HANDLING_CODE.equals(responseCode)) { + if (SzyhApiConstant.HANDLING_CODE.equals(responseCode)||SzyhApiConstant.TASK_HANDLING_CODE.equals(responseCode)) { // 濡傛灉鎺ュ彛浠嶅湪澶勭悊涓紝鍒欑户缁疆璇 throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(175337, "缂存杩樺湪澶勭悊涓紝璇风◢鍚庣偣鍑荤即娆惧弽棣")); } @@ -80,7 +80,6 @@ public class TaxPaymentWithholdingServiceImpl extends AbstractTaxPaymentService Integer paymentStatus = SalaryEntityUtil.getIntValue(feedback.getJkzt(), -1); TaxPaymentStatusEnum paymentStatusEnum = SalaryEnumUtil.enumMatchByValue(paymentStatus, TaxPaymentStatusEnum.class); if (paymentStatusEnum != TaxPaymentStatusEnum.SUCCESS) { - // fixme throw new SalaryRunTimeException(String.format("缂存澶辫触锛屽け璐ュ師鍥狅細%s锛岀敵鎶ョ姸鎬侊細%s", feedback.getJksbyy(), feedback.getSbzt())); } // 绱瀹炵即閲戦 @@ -128,53 +127,58 @@ public class TaxPaymentWithholdingServiceImpl extends AbstractTaxPaymentService TaxPaymentQueryParam param, TaxDeclarationApiConfigPO apiConfig, Class clazz) { - SalaryAssert.notBlank(param.getProtocolNumber(), SalaryI18nUtil.getI18nLabel(184071, "涓夋柟缂磋垂鍙傛暟閿欒")); + String protocolNumber = param.getProtocolNumber(); + String paymentNumber = param.getPaymentNumber(); + Integer reportType = param.getReportType(); + String taxAmount = param.getTaxAmount(); + SalaryAssert.notBlank(protocolNumber, SalaryI18nUtil.getI18nLabel(184071, "涓夋柟鍗忚鍙蜂负绌")); + SalaryAssert.notBlank(paymentNumber, SalaryI18nUtil.getI18nLabel(184071, "缂存甯愬彿涓虹┖")); + SalaryAssert.notNull(reportType, SalaryI18nUtil.getI18nLabel(184071, "鎶ヨ〃绫诲瀷涓虹┖")); + SalaryAssert.notBlank(taxAmount, SalaryI18nUtil.getI18nLabel(184071, "搴旂撼绋庨涓虹┖")); String url = apiConfig.getHost() + SzyhApiConstant.DECLARE_WITH_HOLDING; Map requestParam = DataCollectionBO.getApiBaseQueryParams(returnPO, taxAgentName, SalaryDateUtil.getFormatYYYYMM(param.getTaxYearMonth())); - requestParam.put("sfxyh", param.getProtocolNumber()); -// requestParam.put("ynse", param.getTaxAmount()); -// requestParam.put("sblx", "1"); + requestParam.put("sfxyh", protocolNumber); + requestParam.put("jkzh", paymentNumber); + requestParam.put("bblx", reportType); + requestParam.put("ynse", taxAmount); return postRequest(apiConfig, url, requestParam, clazz); } @Override protected TempWrapper checkBeforeGetRequestIdResponse(TaxPaymentQueryParam param) { TempWrapper tempWrapper = super.checkBeforeGetRequestIdResponse(param); - Map requestParam = DataCollectionBO.getApiBaseQueryParams(tempWrapper.getTaxReturnPO(), tempWrapper.getTaxAgentPO().getName(), SalaryDateUtil.getFormatYYYYMM(param.getTaxYearMonth())); - cancelWithholdingVoucher(tempWrapper.getApiConfigPO(), tempWrapper.getTaxDeclareRecord(), requestParam); return tempWrapper; } - @Override - public void cancelWithholdingVoucher(TaxDeclarationApiConfigPO apiConfig, TaxDeclareRecordPO taxDeclareRecord, Map requestParam) { - TaxPaymentRequestPO paymentRequestPO = getTaxPaymentRequestMapper().getOne(TaxPaymentRequestPO - .builder() - .requestType(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()) - .taxAgentId(taxDeclareRecord.getTaxAgentId()) - .taxYearMonth(taxDeclareRecord.getTaxCycle()) - .build()); - -// if (paymentRequestPO != null) { - List statuses = getTaxDeclareStatusService(user).getTaxDeclareStatusByTaxDeclareRecordId(taxDeclareRecord.getId()); - statuses.forEach(status -> { - requestParam.put("sblx", status.getReportType()); - String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_WITHHOLDING_VOUCHER; - QuerySpecialAmountResponse cancelResponse = postRequest(apiConfig, url, requestParam, QuerySpecialAmountResponse.class); - SzyhResponseHead head = Optional.ofNullable(cancelResponse).map(QuerySpecialAmountResponse::getHead) - .orElse(new SzyhResponseHead("0", SalaryI18nUtil.getI18nLabel(183785, "閾惰仈缂存鍑瘉浣滃簾澶辫触锛岃绋嶅悗閲嶈瘯"))); - SalaryAssert.isTrue(SzyhApiConstant.SUCCESS_CODE.equals(head.getCode()) || SzyhApiConstant.NONE_VOUCHER_CODE.equals(head.getCode()), head.getMsg()); - - getTaxPaymentRequestMapper().updateFeedbackByRequestTypeTaxAgentIdTaxYearMonth(TaxPaymentRequestPO - .builder() - .feedback(SalaryOnOffEnum.ON.getValue()) - .requestType(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()) - .taxAgentId(taxDeclareRecord.getTaxAgentId()) - .taxYearMonth(taxDeclareRecord.getTaxCycle()) - .build()); - }); - -// } - } +// @Override +// public void cancelWithholdingVoucher(TaxDeclarationApiConfigPO apiConfig, TaxDeclareRecordPO taxDeclareRecord, Map requestParam) { +// TaxPaymentRequestPO paymentRequestPO = getTaxPaymentRequestMapper().getOne(TaxPaymentRequestPO +// .builder() +// .requestType(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()) +// .taxAgentId(taxDeclareRecord.getTaxAgentId()) +// .taxYearMonth(taxDeclareRecord.getTaxCycle()) +// .build()); +//// if (paymentRequestPO != null) { +// TaxPaymentClient taxPaymentClient = new TaxPaymentClient(taxDeclareRecord.getTaxAgentId()); +// List statuses = getTaxDeclareStatusService(user).getTaxDeclareStatusByTaxDeclareRecordId(taxDeclareRecord.getId()); +// statuses.forEach(status -> { +// requestParam.put("sblx", status.getReportType()); +// QuerySpecialAmountResponse cancelResponse = taxPaymentClient.cancelWithholdingVoucher(requestParam); +// SzyhResponseHead head = Optional.ofNullable(cancelResponse).map(QuerySpecialAmountResponse::getHead) +// .orElse(new SzyhResponseHead("0", SalaryI18nUtil.getI18nLabel(183785, "閾惰仈缂存鍑瘉浣滃簾澶辫触锛岃绋嶅悗閲嶈瘯"))); +// SalaryAssert.isTrue(SzyhApiConstant.SUCCESS_CODE.equals(head.getCode()) || SzyhApiConstant.NONE_VOUCHER_CODE.equals(head.getCode()), head.getMsg()); +// +// getTaxPaymentRequestMapper().updateFeedbackByRequestTypeTaxAgentIdTaxYearMonth(TaxPaymentRequestPO +// .builder() +// .feedback(SalaryOnOffEnum.ON.getValue()) +// .requestType(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()) +// .taxAgentId(taxDeclareRecord.getTaxAgentId()) +// .taxYearMonth(taxDeclareRecord.getTaxCycle()) +// .build()); +// }); +// +//// } +// } protected BaseResponse getFeedbackResponse(TaxDeclarationApiConfigPO apiConfig, String requestId) { String url = apiConfig.getHost() + SzyhApiConstant.DECLARE_WITH_HOLDING_FEEDBACK; diff --git a/src/com/engine/salary/service/impl/TaxPaymentWithholdingVoucherServiceImpl.java b/src/com/engine/salary/service/impl/TaxPaymentWithholdingVoucherServiceImpl.java index 028a86c7c..18d10a4ec 100644 --- a/src/com/engine/salary/service/impl/TaxPaymentWithholdingVoucherServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxPaymentWithholdingVoucherServiceImpl.java @@ -16,19 +16,19 @@ import com.engine.salary.entity.taxpayment.param.TaxPaymentQueryParam; import com.engine.salary.entity.taxpayment.po.TaxPaymentRequestPO; import com.engine.salary.entity.taxpayment.response.BaseResponse; import com.engine.salary.entity.taxpayment.response.SyncWithholdingFeedbackResponse; -import com.engine.salary.entity.taxpayment.response.WithholdingFeedbackResponse; import com.engine.salary.entity.taxpayment.response.WithholdingVoucherFeedbackResponse; import com.engine.salary.enums.SalaryOnOffEnum; import com.engine.salary.enums.taxdeclaration.TaxPaymentServiceTypeEnum; -import com.engine.salary.enums.taxdeclaration.TaxPaymentStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.util.*; +import com.engine.salary.remote.tax.client.TaxPaymentClient; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SalaryAssert; +import com.engine.salary.util.SalaryDateUtil; +import com.engine.salary.util.SalaryI18nUtil; import lombok.extern.slf4j.Slf4j; -import java.math.BigDecimal; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -49,7 +49,7 @@ public class TaxPaymentWithholdingVoucherServiceImpl extends AbstractTaxPaymentS // 鏍¢獙璇锋眰缁撴灉 String responseCode = Optional.ofNullable(feedbackResponse).map(WithholdingVoucherFeedbackResponse::getHead).map(SzyhResponseHead::getCode).orElse(null); String msg = Optional.ofNullable(feedbackResponse).map(WithholdingVoucherFeedbackResponse::getHead).map(SzyhResponseHead::getMsg).orElse(null); - if (SzyhApiConstant.HANDLING_CODE.equals(responseCode)) { + if (SzyhApiConstant.HANDLING_CODE.equals(responseCode)||SzyhApiConstant.TASK_HANDLING_CODE.equals(responseCode)) { // 濡傛灉鎺ュ彛浠嶅湪澶勭悊涓紝鍒欑户缁疆璇 throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(175337, "缂存杩樺湪澶勭悊涓紝璇风◢鍚庣偣鍑荤即娆惧弽棣")); } @@ -115,11 +115,10 @@ public class TaxPaymentWithholdingVoucherServiceImpl extends AbstractTaxPaymentS // if (paymentRequestPO != null) { List statuses = getTaxDeclareStatusService(user).getTaxDeclareStatusByTaxDeclareRecordId(taxDeclareRecord.getId()); + TaxPaymentClient taxPaymentClient = new TaxPaymentClient(taxDeclareRecord.getTaxAgentId()); statuses.forEach(status -> { requestParam.put("sblx", status.getReportType()); - - String url = apiConfig.getHost() + SzyhApiConstant.CANCEL_WITHHOLDING_VOUCHER; - QuerySpecialAmountResponse cancelResponse = postRequest(apiConfig, url, requestParam, QuerySpecialAmountResponse.class); + QuerySpecialAmountResponse cancelResponse = taxPaymentClient.cancelWithholdingVoucher(requestParam); SzyhResponseHead head = Optional.ofNullable(cancelResponse).map(QuerySpecialAmountResponse::getHead) .orElse(new SzyhResponseHead("0", SalaryI18nUtil.getI18nLabel(183785, "閾惰仈缂存鍑瘉浣滃簾澶辫触锛岃绋嶅悗閲嶈瘯"))); SalaryAssert.isTrue(SzyhApiConstant.SUCCESS_CODE.equals(head.getCode()), head.getMsg()); @@ -134,40 +133,43 @@ public class TaxPaymentWithholdingVoucherServiceImpl extends AbstractTaxPaymentS // } } - @Override - public void syncWithholdingFeedback(TaxPaymentQueryParam param) { - TempWrapper tempWrapper = checkBeforeGetRequestIdResponse(param); - SyncWithholdingFeedbackResponse response = getRequestIdResponse(tempWrapper.getTaxReturnPO(), tempWrapper.getTaxAgentPO().getName(), - param, tempWrapper.getApiConfigPO(), SyncWithholdingFeedbackResponse.class); - // 鏍¢獙璇锋眰缁撴灉 - String responseCode = Optional.ofNullable(response) - .map(SyncWithholdingFeedbackResponse::getHead) - .map(SzyhResponseHead::getCode) - .orElse(null); - WithholdingFeedbackResponse.Feedback body = Optional.ofNullable(response) - .map(SyncWithholdingFeedbackResponse::getBody) - .orElse(null); - if (!SzyhApiConstant.SUCCESS_CODE.equals(responseCode) || Objects.isNull(body)) { - log.info("syncWithholdingFeedback code error锛歿}", JSON.toJSONString(response)); - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "绋庡眬鎺ュ彛寮傚父锛岃绋嶅悗閲嶈瘯")); - } - Integer paymentStatus = SalaryEntityUtil.getIntValue(body.getJkzt(), -1); - TaxPaymentStatusEnum paymentStatusEnum = SalaryEnumUtil.enumMatchByValue(paymentStatus, TaxPaymentStatusEnum.class); - if (paymentStatusEnum != TaxPaymentStatusEnum.SUCCESS) { - throw new SalaryRunTimeException(String.format("鏌ヨ澶辫触锛屽け璐ュ師鍥狅細%s锛岀敵鎶ョ姸鎬侊細%s", body.getJksbyy(), body.getSbzt())); - } - // 绱瀹炵即閲戦 - BigDecimal totalPaid = body.getKkfhlb().stream().map(e -> new BigDecimal(e.getSjse())).reduce(BigDecimal.ZERO, BigDecimal::add); - // 鏇存柊涓◣鐢虫姤璁板綍鐘舵佷负宸茬即娆 - updateTaxDeclareRecord(param, totalPaid); - // 鏇存柊涓夋柟缂存鍙嶉鐘舵 - getTaxPaymentRequestMapper().updateFeedbackByTaxDeclareRecordId(TaxPaymentRequestPO - .builder() - .feedback(SalaryOnOffEnum.ON.getValue()) - .requestType(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()) - .taxDeclareRecordId(param.getTaxDeclareRecordId()) - .build()); - } +// @Override +// public void syncWithholdingFeedback(TaxPaymentQueryParam param) { +// TempWrapper tempWrapper = checkBeforeGetRequestIdResponse(param); +// TaxPaymentClient taxPaymentClient = new TaxPaymentClient(param.getTaxAgentId()); +// Map requestParam = DataCollectionBO.getApiBaseQueryParams(tempWrapper.getTaxReturnPO(), tempWrapper.getTaxAgentPO().getName(), SalaryDateUtil.getFormatYYYYMM(param.getTaxYearMonth())); +// requestParam.put("bblx", param.getReportType()); +// SyncWithholdingFeedbackResponse response = taxPaymentClient.getSyncWithholding(requestParam); +// +// // 鏍¢獙璇锋眰缁撴灉 +// String responseCode = Optional.ofNullable(response) +// .map(SyncWithholdingFeedbackResponse::getHead) +// .map(SzyhResponseHead::getCode) +// .orElse(null); +// WithholdingFeedbackResponse.Feedback body = Optional.ofNullable(response) +// .map(SyncWithholdingFeedbackResponse::getBody) +// .orElse(null); +// if (!SzyhApiConstant.SUCCESS_CODE.equals(responseCode) || Objects.isNull(body)) { +// log.info("syncWithholdingFeedback code error锛歿}", JSON.toJSONString(response)); +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "绋庡眬鎺ュ彛寮傚父锛岃绋嶅悗閲嶈瘯")); +// } +// Integer paymentStatus = SalaryEntityUtil.getIntValue(body.getJkzt(), -1); +// TaxPaymentStatusEnum paymentStatusEnum = SalaryEnumUtil.enumMatchByValue(paymentStatus, TaxPaymentStatusEnum.class); +// if (paymentStatusEnum != TaxPaymentStatusEnum.SUCCESS) { +// throw new SalaryRunTimeException(String.format("鏌ヨ澶辫触锛屽け璐ュ師鍥狅細%s锛岀敵鎶ョ姸鎬侊細%s", body.getJksbyy(), body.getSbzt())); +// } +// // 绱瀹炵即閲戦 +// BigDecimal totalPaid = body.getKkfhlb().stream().map(e -> new BigDecimal(e.getSjse())).reduce(BigDecimal.ZERO, BigDecimal::add); +// // 鏇存柊涓◣鐢虫姤璁板綍鐘舵佷负宸茬即娆 +// updateTaxDeclareRecord(param, totalPaid); +// // 鏇存柊涓夋柟缂存鍙嶉鐘舵 +// getTaxPaymentRequestMapper().updateFeedbackByTaxDeclareRecordId(TaxPaymentRequestPO +// .builder() +// .feedback(SalaryOnOffEnum.ON.getValue()) +// .requestType(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()) +// .taxDeclareRecordId(param.getTaxDeclareRecordId()) +// .build()); +// } @Override public void cancelWithholdingVoucher(TaxPaymentQueryParam param) { diff --git a/src/com/engine/salary/service/impl/TaxReportColumnServiceImpl.java b/src/com/engine/salary/service/impl/TaxReportColumnServiceImpl.java index 30ebbe9d5..c09510bd8 100644 --- a/src/com/engine/salary/service/impl/TaxReportColumnServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxReportColumnServiceImpl.java @@ -30,6 +30,13 @@ public class TaxReportColumnServiceImpl extends Service implements TaxReportColu return getTaxReportColumnMapper().listAll(); } + @Override + public List listByContrastType(Integer contrastType) { + + return getTaxReportColumnMapper().listSome(TaxReportColumnPO.builder().contrastType(contrastType).build()); + + } + @Override public List listByIncomeCategory(IncomeCategoryEnum incomeCategory, Integer... contrastTypes) { return getTaxReportColumnMapper().listSome(TaxReportColumnPO.builder().contrastTypes(Arrays.asList(contrastTypes)).incomeCategory(incomeCategory.getValue().toString()).build()); diff --git a/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java b/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java index 12feb8d16..8a9e315d9 100644 --- a/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java @@ -46,7 +46,7 @@ public class TaxReturnCheckMainServiceImpl extends AbstractTaxAgentTaxReturnChec log.error("淇濆瓨寮傚父", e); } // 璋冪敤绁炲窞浜戝悎API - CompanyRegisterInfoResponse response = getCompanyRegisterInfoResponse(apiConfig, po, saveParam); + CompanyRegisterInfoResponse response = getCompanyRegisterInfo(apiConfig, po, saveParam); List checkFormDTOS = verifyCompanyRegisterInfoResponse(apiConfig, saveParam, po, response); getTaxAgentTaxReturnMapper().updateIgnoreNull(po); // 鏋勫缓缁撴灉 diff --git a/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java b/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java index 4ac507c1b..3f6eff61c 100644 --- a/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java @@ -30,7 +30,7 @@ public class TaxReturnCheckRegistrationServiceImpl extends AbstractTaxAgentTaxRe TaxAgentTaxReturnPO po = getTaxAgentTaxReturnService(user).getByTaxAgentId(saveParam.getTaxAgentId()); // 璋冪敤绁炲窞浜戝悎API TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(true); - CompanyRegisterInfoResponse response = getCompanyRegisterInfoResponse(apiConfig, po, saveParam); + CompanyRegisterInfoResponse response = getCompanyRegisterInfo(apiConfig, po, saveParam); List checkFormDTOS = verifyCompanyRegisterInfoResponse(apiConfig, saveParam, po, response); po.setTaxRegistrationNumber(saveParam.getTaxRegistrationNumber()); getTaxAgentTaxReturnMapper().updateIgnoreNull(po); diff --git a/src/com/engine/salary/util/SalaryEntityUtil.java b/src/com/engine/salary/util/SalaryEntityUtil.java index 81e5b12d9..f14a1a2d8 100644 --- a/src/com/engine/salary/util/SalaryEntityUtil.java +++ b/src/com/engine/salary/util/SalaryEntityUtil.java @@ -163,6 +163,36 @@ public class SalaryEntityUtil { Collectors.collectingAndThen(Collectors.toList(), e -> e.stream().map(valueMapper).collect(Collectors.toList())))); } + public static Map> list2Map(Collection objs, Function function1, Function function2, Function function3) { + if (CollectionUtils.isEmpty(objs)) { + return Maps.newHashMap(); + } + Map> collect = objs.stream().collect(Collectors.groupingBy(function1)); + Map> map = new HashMap<>(); + for (Map.Entry> entry: collect.entrySet()) { + Map values = map.getOrDefault(entry.getKey(), new HashMap<>()); + entry.getValue().forEach(e -> values.put(function2.apply(e), function3.apply(e))); + map.put(entry.getKey(), values); + } + return map; + } + + public static Map> list2Map(Collection objs, Function function1, Function function2) { + if (CollectionUtils.isEmpty(objs)) { + return Maps.newHashMap(); + } + Map> collect = objs.stream().collect(Collectors.groupingBy(function1)); + Map> map = new HashMap<>(); + for (Map.Entry> entry: collect.entrySet()) { + Map values = map.getOrDefault(entry.getKey(), new HashMap<>()); + entry.getValue().forEach(e -> values.put(function2.apply(e), e)); + map.put(entry.getKey(), values); + } + return map; + } + + + /** * LinkedHashMap鏈夊簭鍘婚噸 * @@ -211,9 +241,10 @@ public class SalaryEntityUtil { /** * 杩涗綅瑙勫垯 - * @param newScale 灏忔暟浣 + * + * @param newScale 灏忔暟浣 * @param rententionRule 杩涗綅瑙勫垯 - * @param value 鍊 + * @param value 鍊 * @return */ public static BigDecimal carryRule(Integer newScale, Integer rententionRule, BigDecimal value) { @@ -374,7 +405,6 @@ public class SalaryEntityUtil { } - public static String null2String(Object obj) { if (Objects.isNull(obj)) { return ""; diff --git a/src/com/engine/salary/util/TaskUtil.java b/src/com/engine/salary/util/TaskUtil.java new file mode 100644 index 000000000..63df65134 --- /dev/null +++ b/src/com/engine/salary/util/TaskUtil.java @@ -0,0 +1,42 @@ +package com.engine.salary.util; + +import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.api.ApiTaskRecordPO; +import com.engine.salary.mapper.api.ApiTaskRecordMapper; +import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; +import lombok.extern.slf4j.Slf4j; + +import java.util.Date; + +@Slf4j +public class TaskUtil { + + private ApiTaskRecordMapper getApiTaskRecordMapper() { + return MapperProxyFactory.getProxy(ApiTaskRecordMapper.class); + } + + public void writeApiTaskRecord(String source, String api, String param, String response) { + try { + log.info("source:{} , api:{} , param:{} , response : {}", source, api, param, response); + Date now = new Date(); + ApiTaskRecordPO build = ApiTaskRecordPO.builder() + .id(IdGenerator.generate()) + .source(source) + .api(api) + .param(param) + .response(response) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + getApiTaskRecordMapper().insertIgnoreNull(build); + }catch (Exception e){ + log.error("writeApiTaskRecord error", e); + } + + } + + +} diff --git a/src/com/engine/salary/util/excel/ExcelUtil.java b/src/com/engine/salary/util/excel/ExcelUtil.java index e3a0b4fd7..55f5dc54e 100644 --- a/src/com/engine/salary/util/excel/ExcelUtil.java +++ b/src/com/engine/salary/util/excel/ExcelUtil.java @@ -1,7 +1,7 @@ package com.engine.salary.util.excel; -import com.engine.salary.util.JsonUtil; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationLaborListDTO; +import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; import com.google.common.collect.Lists; @@ -11,6 +11,7 @@ import org.apache.poi.ss.usermodel.FillPatternType; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.xssf.usermodel.*; +import org.springframework.beans.BeanUtils; import java.awt.*; import java.beans.BeanInfo; @@ -18,12 +19,14 @@ import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Date; +import java.math.BigDecimal; import java.util.List; import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class ExcelUtil { + /** * 鐢熸垚excel * @@ -78,6 +81,82 @@ public class ExcelUtil { return workbook; } + // 璁剧疆榛樿鑸嶅叆浣嶆暟锛屽彲璁句负null + public static XSSFWorkbook genWorkbookWithDefaultPattern(List> rowList, String sheetName, Integer defaultPattern) { + XSSFWorkbook workbook = new XSSFWorkbook(); + + // 璁剧疆title鏍峰紡 + XSSFCellStyle titleCellStyle = workbook.createCellStyle(); + XSSFFont titleFont = workbook.createFont(); + titleFont.setFontName("浠垮畫"); + titleFont.setFontHeightInPoints((short) 15); + titleCellStyle.setFont(titleFont); + titleCellStyle.setAlignment(HorizontalAlignment.CENTER); + titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//鑳屾櫙鑹 + titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + + + // 璁剧疆涓讳綋鏍峰紡 + XSSFCellStyle cellStyle = workbook.createCellStyle(); + XSSFFont font = workbook.createFont(); + font.setFontName("瀹嬩綋"); + font.setFontHeightInPoints((short) 10);// 璁剧疆瀛椾綋澶у皬 + cellStyle.setFont(font);// 閫夋嫨闇瑕佺敤鍒扮殑瀛椾綋鏍煎紡 + cellStyle.setWrapText(true); + + XSSFSheet sheet = workbook.createSheet(sheetName); + //鑷傚簲瀹藉害 + sheet.autoSizeColumn(0, true); + //榛樿鍒楀 + sheet.setDefaultColumnWidth(20); + //榛樿琛岄珮 + sheet.setDefaultRowHeightInPoints(18); + + + XSSFCellStyle numberCellStyle = null; + if (defaultPattern != null) { + XSSFDataFormat df = workbook.createDataFormat(); + String start = "0."; + if (defaultPattern.equals(0)) { + start = "0"; + } + short format = df.getFormat(start + Stream.generate(() -> "0").limit(defaultPattern).collect(Collectors.joining()) + "_ "); + numberCellStyle = workbook.createCellStyle(); + BeanUtils.copyProperties(cellStyle, numberCellStyle); + numberCellStyle.setDataFormat(format); + } + + for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { + List infoList = rowList.get(rowIndex); + XSSFRow row = sheet.createRow(rowIndex); + for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) { + XSSFCell cell = row.createCell(cellIndex); + cell.setCellType(CellType.STRING); + if (rowIndex == 0) { + cell.setCellStyle(titleCellStyle); + } 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) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); + if (defaultPattern != null) { + cell.setCellStyle(numberCellStyle); + } + } else { + cell.setCellType(CellType.STRING); + cell.setCellValue(o == null ? "" : o.toString()); + } +// sheet.setColumnWidth(cellIndex, 35 * 256); + } + } + return workbook; + } + public static XSSFWorkbook genWorkbook(String sheetName, List rowList) { List headerList = Lists.newArrayList(); List dataIndexList = Lists.newArrayList(); @@ -158,6 +237,88 @@ public class ExcelUtil { if (o instanceof String) { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); + } else if (o instanceof Boolean) { + cell.setCellType(CellType.BOOLEAN); + cell.setCellValue(String.valueOf(o)); + } else if (o instanceof Date) { + cell.setCellType(CellType.STRING); + cell.setCellValue(SalaryDateUtil.getFormatLocalDate((Date) o)); + } else { + cell.setCellType(CellType.STRING); + cell.setCellValue(o == null ? "" : o.toString()); + } + } + } + return workbook; + } + + // 璁剧疆榛樿鑸嶅叆浣嶆暟,鍙紶null + public static XSSFWorkbook genWorkbookV2WithDefaultPattern(List> rowList, String sheetName, Integer defaultPattern) { + XSSFWorkbook workbook = new XSSFWorkbook(); + + // 璁剧疆title鏍峰紡 + XSSFCellStyle titleCellStyle = workbook.createCellStyle(); + XSSFFont titleFont = workbook.createFont(); + titleFont.setFontName("浠垮畫"); + titleFont.setFontHeightInPoints((short) 15); + titleCellStyle.setFont(titleFont); + titleCellStyle.setAlignment(HorizontalAlignment.CENTER); + titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//鑳屾櫙鑹 + titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + + + // 璁剧疆涓讳綋鏍峰紡 + XSSFCellStyle cellStyle = workbook.createCellStyle(); + XSSFFont font = workbook.createFont(); + font.setFontName("瀹嬩綋"); + font.setFontHeightInPoints((short) 10);// 璁剧疆瀛椾綋澶у皬 + cellStyle.setFont(font);// 閫夋嫨闇瑕佺敤鍒扮殑瀛椾綋鏍煎紡 + cellStyle.setWrapText(true); + + XSSFSheet sheet = workbook.createSheet(sheetName); + //鑷傚簲瀹藉害 + sheet.autoSizeColumn(0, true); + //榛樿鍒楀 + sheet.setDefaultColumnWidth(20); + //榛樿琛岄珮 + sheet.setDefaultRowHeightInPoints(18); + + XSSFCellStyle numberCellStyle = null; + if (defaultPattern != null) { + XSSFDataFormat df = workbook.createDataFormat(); + String start = "0."; + if (defaultPattern.equals(0)) { + start = "0"; + } + short format = df.getFormat(start + Stream.generate(() -> "0").limit(defaultPattern).collect(Collectors.joining()) + "_ "); + numberCellStyle = workbook.createCellStyle(); + BeanUtils.copyProperties(cellStyle, numberCellStyle); + numberCellStyle.setDataFormat(format); + } + + for (int rowIndex = 0; rowIndex < rowList.size(); rowIndex++) { + List infoList = rowList.get(rowIndex); + XSSFRow row = sheet.createRow(rowIndex); + for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) { + XSSFCell cell = row.createCell(cellIndex); + if (rowIndex == 0) { + cell.setCellStyle(titleCellStyle); + } 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) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); + if (defaultPattern != null) { + cell.setCellStyle(numberCellStyle); + } } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); diff --git a/src/com/engine/salary/util/excel/ExcelUtilPlus.java b/src/com/engine/salary/util/excel/ExcelUtilPlus.java index cdf73e282..dcbc24588 100644 --- a/src/com/engine/salary/util/excel/ExcelUtilPlus.java +++ b/src/com/engine/salary/util/excel/ExcelUtilPlus.java @@ -74,6 +74,114 @@ public class ExcelUtilPlus { } + public static XSSFWorkbook genWorkbookV2WithPattern(List> rowList, String sheetName) { + XSSFWorkbook workbook = new XSSFWorkbook(); + + // 璁剧疆title鏍峰紡 + XSSFCellStyle titleCellStyle = workbook.createCellStyle(); + XSSFFont titleFont = workbook.createFont(); + titleFont.setBold(true); + titleFont.setFontName("浠垮畫"); + titleFont.setFontHeightInPoints((short) 15); + titleCellStyle.setFont(titleFont); + titleCellStyle.setAlignment(HorizontalAlignment.CENTER); + titleCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//鑳屾櫙鑹 + titleCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); + titleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + titleCellStyle.setBorderLeft(BorderStyle.THIN); + titleCellStyle.setBorderRight(BorderStyle.THIN); + titleCellStyle.setBorderTop(BorderStyle.THIN); + titleCellStyle.setBorderBottom(BorderStyle.THIN); + + + // 璁剧疆涓讳綋鏍峰紡 + XSSFCellStyle cellStyle = workbook.createCellStyle(); + XSSFFont font = workbook.createFont(); + font.setFontName("瀹嬩綋"); + font.setFontHeightInPoints((short) 10);// 璁剧疆瀛椾綋澶у皬 + cellStyle.setFont(font);// 閫夋嫨闇瑕佺敤鍒扮殑瀛椾綋鏍煎紡 + cellStyle.setWrapText(true); + cellStyle.setBorderLeft(BorderStyle.THIN); + cellStyle.setBorderRight(BorderStyle.THIN); + cellStyle.setBorderTop(BorderStyle.THIN); + cellStyle.setBorderBottom(BorderStyle.THIN); + + XSSFSheet sheet = workbook.createSheet(sheetName); + //鑷傚簲瀹藉害 + sheet.autoSizeColumn(0, true); + //榛樿鍒楀 + sheet.setDefaultColumnWidth(20); + //榛樿琛岄珮 + sheet.setDefaultRowHeightInPoints(18); + //閬嶅巻璁剧疆鍒楀 + List header = rowList.get(0); + List patternList = new ArrayList<>(); + XSSFRow row0 = sheet.createRow(0); + for (int i = 0; i < header.size(); i++) { + WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) header.get(i); + XSSFCell rowZeroCell = row0.createCell(i, CellType.STRING); + rowZeroCell.setCellValue(columnGroupItem.getText().toString()); + rowZeroCell.setCellStyle(titleCellStyle); + //璁剧疆鍒楀 + sheet.setColumnWidth(i, Math.max(12, columnGroupItem.getText().length() * 4) * 256); + patternList.add(columnGroupItem.getPattern()); + } + + HashMap numberCellStyleMap = new HashMap(); + XSSFDataFormat df = workbook.createDataFormat(); + patternList.stream().distinct().filter(a -> a != null).forEach(p -> { + String start = "0."; + if (p == 0) { + start = "0"; + } + short format = df.getFormat(start + Stream.generate(() -> "0").limit(p).collect(Collectors.joining()) + "_ "); + XSSFCellStyle numberCellStyle = workbook.createCellStyle(); + BeanUtils.copyProperties(cellStyle, numberCellStyle); + 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); + float height = 18; + float finalHeight = 18; + + for (int cellIndex = 0; cellIndex < infoList.size(); cellIndex++) { + XSSFCell cell = row.createCell(cellIndex); + if (rowIndex == 0) { + cell.setCellStyle(titleCellStyle); + } 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) { + cell.setCellType(CellType.NUMERIC); + 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)); + } else if (o instanceof Date) { + cell.setCellType(CellType.STRING); + cell.setCellValue(SalaryDateUtil.getFormatLocalDate((Date) o)); + } else { + cell.setCellType(CellType.STRING); + cell.setCellValue(o == null ? "" : o.toString()); + } + + //鍒ゆ柇鏄惁瑕佽皟鏁撮珮搴 + int width = sheet.getColumnWidth(cellIndex) / 256; + finalHeight = getFinalHeight(o, width, finalHeight, height); + } + row.setHeightInPoints(finalHeight); + } + return workbook; + } public static XSSFWorkbook genWorkbookV2(List> rowList, String sheetName) { XSSFWorkbook workbook = new XSSFWorkbook(); @@ -136,6 +244,9 @@ public class ExcelUtilPlus { if (o instanceof String) { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); @@ -329,6 +440,9 @@ public class ExcelUtilPlus { if (o instanceof String) { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); @@ -477,14 +591,27 @@ public class ExcelUtilPlus { start = "0"; } XSSFCellStyle numberRedCellStyle = workbook.createCellStyle(); - BeanUtils.copyProperties(redCellStyle, numberRedCellStyle); + // 涓嶈兘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); }); @@ -512,13 +639,14 @@ public class ExcelUtilPlus { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); } else if (o instanceof BigDecimal) { - cell.setCellType(CellType.NUMERIC); - cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); 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(value); } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); @@ -582,6 +710,7 @@ public class ExcelUtilPlus { cellStyle.setBorderRight(BorderStyle.THIN); cellStyle.setBorderTop(BorderStyle.THIN); cellStyle.setBorderBottom(BorderStyle.THIN); + cellStyle.setFillPattern(FillPatternType.NO_FILL); XSSFCellStyle redCellStyle = workbook.createCellStyle(); XSSFFont redFont = workbook.createFont(); @@ -674,6 +803,9 @@ public class ExcelUtilPlus { if (o instanceof String) { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); + } else if (o instanceof BigDecimal) { + cell.setCellType(CellType.NUMERIC); + cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); diff --git a/src/com/engine/salary/web/EmployeeDeclareController.java b/src/com/engine/salary/web/EmployeeDeclareController.java index c94c9da12..af3295194 100644 --- a/src/com/engine/salary/web/EmployeeDeclareController.java +++ b/src/com/engine/salary/web/EmployeeDeclareController.java @@ -242,21 +242,6 @@ public class EmployeeDeclareController { return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::getDeclareFeedback, employeeDeclareParam); } - @POST - @Path("/invalid") - @Produces(MediaType.APPLICATION_JSON) - public String invalid(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeInvalidParam param) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::invalid, param); - } - - @POST - @Path("/informationChange") - @Produces(MediaType.APPLICATION_JSON) - public String informationChange(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeInformationChangeParam param) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::informationChange, param); - } /** * 浜哄憳鎶ラ-鍚庣涓氬姟閫昏緫鏄惁宸茬粡瀹屾垚 @@ -272,21 +257,6 @@ public class EmployeeDeclareController { return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::getRate, index); } - /** - * 浼佷笟浜哄憳鍒楄〃鏌ヨ - * @param request - * @param response - * @param param - * @return - */ - @POST - @Path("/getCompanyEmployee") - @Produces(MediaType.APPLICATION_JSON) - public String getCompanyEmployee(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareParam param) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::getCompanyEmployee, param); - } - /** * 浜哄憳鎶ラ-涓嬭浇瀵煎叆妯℃澘 * diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index c40a92294..151d0e9e3 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -11,6 +11,7 @@ import com.engine.salary.util.ResponseResult; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.*; +import io.swagger.annotations.ApiOperation; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -399,6 +400,17 @@ public class SalaryAcctController { } } + /** + * 鏈姤閫佷汉鍛樺垪琛 + */ + @POST + @Path("/acctemployee/listPage4NotDeclare") + @Produces(MediaType.APPLICATION_JSON) + public String listPage4NotDeclare(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody AbnormalEmployeeListQueryParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalaryAcctEmployeeWrapper(user)::listPage4NotDeclareByParam, param); + } + // **********************************钖祫鏍哥畻浜哄憳鐩稿叧 end*********************************/ @@ -502,6 +514,42 @@ public class SalaryAcctController { return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::calculate, param); } + @POST + @Path("/acctresult/getCalcTaxInfo") + @ApiOperation("鑾峰彇銆岃绠椾釜绋庛嶅拰銆岃幏鍙栦釜绋庤绠楀弽棣堛嶅弽棣堢殑鏄剧ず涓庡惁") + @Produces(MediaType.APPLICATION_JSON) + public String getCalcTaxInfo(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody SalaryCalcTaxParam salaryCalcTaxParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::getCalcTaxInfo, salaryCalcTaxParam); + } + + @POST + @Path("/acctresult/calcTax") + @ApiOperation("璁$畻涓◣") + @Produces(MediaType.APPLICATION_JSON) + public String calcTax(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody SalaryCalcTaxParam salaryCalcTaxParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::calcTax, salaryCalcTaxParam); + } + + @POST + @Path("/acctresult/calcTaxFeedback") + @ApiOperation("鑾峰彇涓◣璁$畻鍙嶉") + @Produces(MediaType.APPLICATION_JSON) + public String calcTaxFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody SalaryCalcTaxParam salaryCalcTaxParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::calcTaxFeedback, salaryCalcTaxParam); + } + + //璁$畻绋庡悗宸ヨ祫 + @POST + @Path("/acctresult/afterTaxAccounting") + @Produces(MediaType.APPLICATION_JSON) + public String afterTaxAccounting(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAfterTaxAcctCalculateParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::afterTaxAccounting, param); + } + //瀵煎嚭鏍哥畻缁撴灉 @GET @Path("/acctresult/export") @@ -700,7 +748,7 @@ public class SalaryAcctController { // @GetMapping("/checkresult/getCount") // @ApiOperation(("鑾峰彇鏍¢獙缁撴灉锛堝紓甯革級鎬绘暟")) -// @WeaPermission +// @Produces(MediaType.APPLICATION_JSON) // public WeaResult getCheckResultCount(@RequestParam(value = "salaryAcctRecordId") Long salaryAcctRecordId) { // Integer salaryCheckResultCount = salaryAcctCheckResultWrapper.countBySalaryAcctRecordId(salaryAcctRecordId, TenantContext.getCurrentTenantKey()); // return WeaResult.success(salaryCheckResultCount); @@ -708,7 +756,7 @@ public class SalaryAcctController { // // @PostMapping("/checkresult/list") // @ApiOperation("鏍¢獙缁撴灉鍒楄〃") -// @WeaPermission +// @Produces(MediaType.APPLICATION_JSON) // public WeaResult> listCheckResult(@RequestBody @Validated SalaryCheckResultQueryParam queryParam) { // WeaTable weaTable = salaryAcctCheckResultWrapper.listPage(queryParam, TenantContext.getCurrentTenantKey()); // return WeaResult.success(weaTable); @@ -716,7 +764,7 @@ public class SalaryAcctController { // // @PostMapping("/checkresultdetail/list") // @ApiOperation("鏍¢獙缁撴灉鏄庣粏鍒楄〃") -// @WeaPermission +// @Produces(MediaType.APPLICATION_JSON) // public WeaResult> listCheckResultRecord(@RequestBody @Validated SalaryCheckResultRecordQueryParam queryParam) { // WeaTable weaTable = salaryAcctCheckResultWrapper.listPage4CheckResultRecord(queryParam, TenantContext.getCurrentTenantKey()); // return WeaResult.success(weaTable); @@ -724,7 +772,7 @@ public class SalaryAcctController { // // @PostMapping("/checkresult/ignore") // @ApiOperation("鏍¢獙缁撴灉鍒楄〃") -// @WeaPermission +// @Produces(MediaType.APPLICATION_JSON) // public WeaResult ignoreCheckResult(@RequestParam(value = "id") Long id) { // salaryAcctCheckResultWrapper.ignoreById(id, TenantContext.getCurrentTenantKey()); // return WeaResult.success(null); @@ -732,7 +780,7 @@ public class SalaryAcctController { // // @PostMapping("/checkresult/ignoreAll") // @ApiOperation("鏍¢獙缁撴灉鍒楄〃") -// @WeaPermission +// @Produces(MediaType.APPLICATION_JSON) // public WeaResult ignoreAllCheckResult(@RequestParam(value = "salaryAcctRecordId") Long salaryAcctRecordId) { // salaryAcctCheckResultWrapper.ignoreBySalaryAcctRecordId(salaryAcctRecordId, TenantContext.getCurrentTenantKey()); // return WeaResult.success(null); @@ -740,7 +788,7 @@ public class SalaryAcctController { // // @PostMapping("/acctresult/check") // @ApiOperation(("钖祫鏍哥畻缁撴灉鏍¢獙")) -// @WeaPermission +// @Produces(MediaType.APPLICATION_JSON) // public WeaResult check(@RequestBody @Validated SalaryAcctCheckParam checkParam) { // salaryAcctResultWrapper.check(checkParam, UserContext.getCurrentUser(), TenantContext.getCurrentTenantKey()); // return WeaResult.success(null); @@ -748,7 +796,7 @@ public class SalaryAcctController { // // @PostMapping("/checkresult/export") // @ApiOperation("鏍¢獙寮傚父瀵煎嚭") -// @WeaPermission +// @Produces(MediaType.APPLICATION_JSON) // public WeaResult> exportCheckResult(@RequestBody @Validated SalaryCheckResultExportParam exportParam) { // DataCollectionEmployee simpleEmployee = UserContext.getCurrentUser(); // String tenantKey = TenantContext.getCurrentTenantKey(); @@ -759,7 +807,7 @@ public class SalaryAcctController { // // @PostMapping("/checkresultRecord/export") // @ApiOperation("鏍¢獙寮傚父鏄庣粏瀵煎嚭") -// @WeaPermission +// @Produces(MediaType.APPLICATION_JSON) // public WeaResult> exportCheckResultDetail(@RequestParam(value = "checkResultId") Long checkResultId) { // DataCollectionEmployee simpleEmployee = UserContext.getCurrentUser(); // String tenantKey = TenantContext.getCurrentTenantKey(); diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index b77174441..90da1e8d9 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -16,6 +16,7 @@ import com.engine.salary.wrapper.SalaryArchiveWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -486,6 +487,11 @@ public class SalaryArchiveController { if (StringUtils.isNotBlank(taxAgentId)) { param.setTaxAgentId(Long.valueOf(taxAgentId)); } + String taxAgentIdsStr = request.getParameter("taxAgentIds"); + if (StringUtils.isNotBlank(taxAgentIdsStr)) { + List taxAgentIds = Arrays.stream(taxAgentIdsStr.split(",")).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); + param.setTaxAgentIds(taxAgentIds); + } String departmentIds = request.getParameter("departmentIds"); if (StringUtils.isNotBlank(departmentIds)) { param.setDepartmentIds(Arrays.stream(departmentIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index c94be9966..94a2ea915 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -323,6 +323,20 @@ public class SalaryBillController { return new ResponseResult(user).run(getSalarySendWrapper(user)::getBaseInfo, id); } + /** + * 棰勮宸ヨ祫鍗 + * + * @param param + * @return + */ + @POST + @Path("/preview") + @Produces(MediaType.APPLICATION_JSON) + public String preview(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryPreviewParam param) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalarySendWrapper(user)::preview, param); + } + /** * 宸ヨ祫鍗曞彂鏀句俊鎭垪琛ㄧ殑楂樼骇鎼滅储 * @@ -517,21 +531,21 @@ public class SalaryBillController { * * @return */ - @GET + @POST @Path("/send/exportDetailList") @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response exportDetailList(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public Response exportDetailList(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody SalarySendDetailQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - SalarySendDetailQueryParam queryParam = new SalarySendDetailQueryParam(); - String salarySendId = request.getParameter("salarySendId"); - String ids = request.getParameter("ids"); - if (StringUtils.isNotBlank(ids)) { - queryParam.setIds(Arrays.asList(ids.split(",")).stream().map(Long::new).collect(Collectors.toList())); - } - if (StringUtils.isNotBlank(salarySendId)) { - queryParam.setSalarySendId(Long.parseLong(salarySendId)); - } + // SalarySendDetailQueryParam queryParam = new SalarySendDetailQueryParam(); + // String salarySendId = request.getParameter("salarySendId"); + // String ids = request.getParameter("ids"); + // if (StringUtils.isNotBlank(ids)) { + // queryParam.setIds(Arrays.asList(ids.split(",")).stream().map(Long::new).collect(Collectors.toList())); + // } + // if (StringUtils.isNotBlank(salarySendId)) { + // queryParam.setSalarySendId(Long.parseLong(salarySendId)); + // } XSSFWorkbook workbook = getSalarySendWrapper(user).exportDetailList(queryParam); String fileName = "宸ヨ祫鍗曞彂鏀捐鎯呭垪琛" + LocalDate.now(); @@ -563,6 +577,7 @@ public class SalaryBillController { /** * 涓嬭浇pdf鍓嶅厛杩涜鏍¢獙 鐢熸垚 + * * @param request * @param response * @return diff --git a/src/com/engine/salary/web/SalarySobController.java b/src/com/engine/salary/web/SalarySobController.java index 6f214c507..7bdd6a0ea 100644 --- a/src/com/engine/salary/web/SalarySobController.java +++ b/src/com/engine/salary/web/SalarySobController.java @@ -81,6 +81,11 @@ public class SalarySobController { private SalarySobAddUpRuleWrapper getSalarySobAddUpRuleWrapper(User user) { return ServiceUtil.getService(SalarySobAddUpRuleWrapper.class, user); } + + private SalarySobTaxRuleWrapper getSalarySobTaxRuleWrapper(User user) { + return ServiceUtil.getService(SalarySobTaxRuleWrapper.class, user); + } + /**********************************钖祫璐﹀ start*********************************/ /** @@ -105,6 +110,13 @@ public class SalarySobController { return new ResponseResult>(user).run(getSalarySobWrapper(user)::listAll); } + @GET + @Path("/incomeCategoryList") + @Produces(MediaType.APPLICATION_JSON) + public String getSalarySobBasicForm(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>>(user).run(getSalarySobWrapper(user)::incomeCategoryList); + } /** * 钖祫璐﹀鍩烘湰淇℃伅琛ㄥ崟 @@ -541,6 +553,40 @@ public class SalarySobController { /**********************************钖祫璐﹀鐨勪釜绋庣敵鎶ヨ〃瑙勫垯 end*********************************/ + /**********************************钖祫璐﹀鐨勪釜绋庣敵鎶ヨ〃瑙勫垯 start*********************************/ + + /** + * 钖祫璐﹀涓嬬殑涓◣瑙勫垯鐨勮鎯 + * + * @param id 钖祫璐﹀id + * @return + */ + @GET + @Path("/taxrule/getForm") + @ApiOperation("钖祫璐﹀涓嬬殑涓◣瑙勫垯鐨勮鎯") + @Produces(MediaType.APPLICATION_JSON) + public String getSalarySobTaxRuleForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalarySobTaxRuleWrapper(user)::getForm, id); + } + + /** + * 淇濆瓨钖祫璐﹀涓嬬殑涓◣瑙勫垯 + * + * @param saveParam 淇濆瓨鍙傛暟 + * @return + */ + @POST + @Path("/taxrule/save") + @ApiOperation("淇濆瓨钖祫璐﹀涓嬬殑涓◣瑙勫垯鐨") + @Produces(MediaType.APPLICATION_JSON) + public String saveSalarySobTaxRule(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalarySobTaxRuleSaveParam saveParam) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalarySobTaxRuleWrapper(user)::save, saveParam); + } + + /**********************************钖祫璐﹀鐨勪釜绋庣敵鎶ヨ〃瑙勫垯 end*********************************/ + /**********************************璋冭柂璁¤柂瑙勫垯 start*********************************/ diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 4dab0dfe2..397b24f89 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -249,33 +249,33 @@ public class TaxDeclarationController { } /** - * 鐢虫姤鍐呯疆绠楃◣缁撴灉鏌ヨ + * 鏌ヨ浼佷笟鐢虫姤鏁版嵁鏄庣粏 * * @param * @return */ - @GET - @Path("/getDeclareTaxResultFeedback") + @POST + @Path("/getCompanyIncomes") @Produces(MediaType.APPLICATION_JSON) - public String getDeclareTaxResultFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) { + public String getCompanyIncomes(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody GetCompanyIncomesQueryParam param) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getDeclareTaxResultFeedback, id); + return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::getCompanyIncomes, param); } /** - * 鐢虫姤鍐呯疆绠楃◣缁撴灉 + * 浼佷笟鐢虫姤鏁版嵁鏄庣粏 * * @return */ @POST - @Path("/exportGetDeclareTaxResultFeedback") + @Path("/exportGetCompanyIncomes") @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response exportGetDeclareTaxResultFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody DeclareTaxResultFeedbackQueryParam param) { + public Response exportGetCompanyIncomes(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody GetCompanyIncomesQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); - XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetDeclareTaxResultFeedback(param); - String fileName = "鐢虫姤鍐呯疆绠楃◣缁撴灉-" + LocalDate.now(); + XSSFWorkbook workbook = getTaxDeclareRecordWrapper(user).exportGetCompanyIncomes(param); + String fileName = "浼佷笟鐢虫姤鏁版嵁鏄庣粏-" + LocalDate.now(); try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); } catch (UnsupportedEncodingException e) { @@ -289,7 +289,7 @@ public class TaxDeclarationController { 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); + log.error("浼佷笟鐢虫姤鏁版嵁鏄庣粏瀵煎嚭寮傚父", e); throw e; } } @@ -399,35 +399,6 @@ public class TaxDeclarationController { // return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::cancelCorrect, taxDeclareRecordParam.getTaxDeclareRecordId()); // } - /** - * 绋庡眬绔敵鎶ョ姸鎬佹煡璇 - * - * @param taxDeclareRecordParam 鏌ヨ鍙傛暟 - * @return - */ - @POST - @Path("/queryDeclareStatus") - @Produces(MediaType.APPLICATION_JSON) - public String queryDeclareStatus(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::queryDeclareStatus, taxDeclareRecordParam.getTaxDeclareRecordId()); - } - - /** - * 绋庡眬绔敵鎶ユ槑缁嗘煡璇 - * - * @param taxDeclareRecordParam 鏌ヨ鐢虫姤鏄庣粏鍙傛暟 - * @return - */ - @POST - @Path("/queryCompanyIncomes") - @Produces(MediaType.APPLICATION_JSON) - public String queryCompanyIncomes(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam taxDeclareRecordParam) { - User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::queryCompanyIncomes,taxDeclareRecordParam); - } - - /** * 鍒锋柊鏁版嵁 * diff --git a/src/com/engine/salary/web/TaxPaymentController.java b/src/com/engine/salary/web/TaxPaymentController.java index 07e5203ca..800e9e91d 100644 --- a/src/com/engine/salary/web/TaxPaymentController.java +++ b/src/com/engine/salary/web/TaxPaymentController.java @@ -103,6 +103,7 @@ public class TaxPaymentController { @Path("/voucher/print") @POST @Produces(MediaType.APPLICATION_JSON) + @Deprecated public String printVoucher(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxPaymentQueryParam param) { param.setType(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()); User user = HrmUserVarify.getUser(request, response); @@ -118,6 +119,7 @@ public class TaxPaymentController { @Path("/voucher/print/feedback") @POST @Produces(MediaType.APPLICATION_JSON) + @Deprecated public String printVoucherFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxPaymentQueryParam param) { param.setType(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()); User user = HrmUserVarify.getUser(request, response); @@ -133,6 +135,7 @@ public class TaxPaymentController { @Path("/voucher/cancel") @POST @Produces(MediaType.APPLICATION_JSON) + @Deprecated public String cancelVoucher(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxPaymentQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxPaymentWrapper(user)::cancelVoucher, param); @@ -161,6 +164,7 @@ public class TaxPaymentController { @Path("/voucher/status/sync") @POST @Produces(MediaType.APPLICATION_JSON) + @Deprecated public String getSyncWithholdingFeedback(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxPaymentQueryParam param) { User user = HrmUserVarify.getUser(request, response); return new ResponseResult(user).run(getTaxPaymentWrapper(user)::getSyncWithholdingFeedback, param); diff --git a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java index 3766dcd59..0418be6f9 100644 --- a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java +++ b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java @@ -16,8 +16,6 @@ import com.engine.salary.enums.SalaryOnOffEnum; import com.engine.salary.enums.employeedeclare.*; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; -import com.engine.salary.remote.tax.client.EmployeeClient; -import com.engine.salary.remote.tax.response.employee.GetCompanyEmployeeResponse; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; import com.engine.salary.util.SalaryDateUtil; @@ -568,16 +566,6 @@ public class EmployeeDeclareWrapper extends Service { return employeeDeclareRate.getIndex(); } - public String invalid(EmployeeInvalidParam param) { - return getEmployeeDeclareService(user).invalid(param); - } - - public String informationChange(EmployeeInformationChangeParam param) { - return getEmployeeDeclareService(user).informationChange(param); - } - - - /** * 鑾峰彇浜哄憳鎶ラ佺浉鍏冲悗绔帴鍙f槸鍚﹀凡缁忓畬鎴 @@ -589,15 +577,6 @@ public class EmployeeDeclareWrapper extends Service { return getSalaryCacheService(user).get(SalaryCacheKey.EMPLOYEE_DECLARE + index); } - public Object getCompanyEmployee(EmployeeDeclareParam param) { - ValidUtil.doValidator(param); - - EmployeeClient employeeClient = new EmployeeClient(param.getTaxAgentId()); - GetCompanyEmployeeResponse companyEmployee = employeeClient.getCompanyEmployee(param); - - - return companyEmployee; - } /** * 浜哄憳鎶ラ-涓嬭浇瀵煎叆妯℃澘 diff --git a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java index 095935fd5..b010175a9 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctEmployeeWrapper.java @@ -4,6 +4,7 @@ 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.bo.SalaryAcctEmployeeBO; +import com.engine.salary.entity.salaryacct.dto.AbnormalEmployeeListDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAccEmployeeListDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; @@ -195,4 +196,14 @@ public class SalaryAcctEmployeeWrapper extends Service { public void lockEmp(SalaryAcctResultUpdateLockStatusParam salaryAcctResultUpdateLockStatusParam) { getSalaryAcctEmployeeService(user).lockEmp(salaryAcctResultUpdateLockStatusParam); } + + + /** + * 鏈姤閫佷汉鍛樺垪琛 + * @param param + * @return + */ + public PageInfo listPage4NotDeclareByParam(AbnormalEmployeeListQueryParam param) { + return getSalaryAcctEmployeeService(user).listPage4NotDeclareByParam(param); + } } diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index cae703b1c..0442df794 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -9,6 +9,7 @@ import com.engine.salary.entity.progress.ProgressDTO; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; +import com.engine.salary.entity.salaryacct.dto.SalaryCalcTaxInfoDTO; import com.engine.salary.entity.salaryacct.param.*; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.exception.SalaryRunTimeException; @@ -75,6 +76,10 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult return ServiceUtil.getService(SalarySysConfServiceImpl.class, user); } + private SalaryCalcTaxService getSalaryCalcTaxService(User user) { + return ServiceUtil.getService(SalaryCalcTaxServiceImpl.class, user); + } + /** * 钖祫鏍哥畻鍒楄〃 * @@ -231,14 +236,6 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult .setStatus(true) .setMessage(StringUtils.EMPTY); getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), initProgress); - // 寮傛鎵ц钖祫鏍哥畻 -// LocalRunnable localRunnable = new LocalRunnable() { -// @Override -// public void execute() { -// getSalaryAcctResultService(user).calculate(calculateParam, simpleEmployee); -// } -// }; -// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.HRM, "salaryAcctCalculateV1", localRunnable); new Thread() { public void run() { getSalaryAcctResultService(user).calculate(calculateParam, simpleEmployee); @@ -247,6 +244,41 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult } + /** + * 鏍哥畻绋庡悗 + * + * @param calculateParam 钖祫鏍哥畻鐨勫弬鏁 + */ + public void afterTaxAccounting(SalaryAfterTaxAcctCalculateParam calculateParam) { + //褰撳墠鐧婚檰浜哄憳 + DataCollectionEmployee simpleEmployee = new DataCollectionEmployee(); + simpleEmployee.setEmployeeId((long) user.getUID()); + // 妫鏌ヨ柂璧勬牳绠椾汉鍛樼殑涓◣鎵g即涔夊姟浜 + getSalaryAcctEmployeeWrapper(user).checkTaxAgent(calculateParam.getSalaryAcctRecordId()); + // 妫鏌ユ槸鍚︽鍦ㄦ牳绠椾腑 + ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.AFTER_TAXA_CCT_PROGRESS + calculateParam.getSalaryAcctRecordId()); + if (Objects.nonNull(salaryAcctProgressDTO) && salaryAcctProgressDTO.isStatus() && Optional.ofNullable(salaryAcctProgressDTO.getProgress()).orElse(BigDecimal.ZERO).compareTo(BigDecimal.ONE) < 0) { + return; + } + // 鍒濆鍖栬繘搴 + ProgressDTO initProgress = new ProgressDTO() + .setTitle(SalaryI18nUtil.getI18nLabel(97515, "鏍哥畻涓")) + .setTitleLabelId(97515L) + .setTotalQuantity(NumberUtils.INTEGER_ONE) + .setCalculatedQuantity(NumberUtils.INTEGER_ZERO) + .setProgress(BigDecimal.ZERO) + .setStatus(true) + .setMessage(StringUtils.EMPTY); + getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.AFTER_TAXA_CCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), initProgress); + new Thread() { + public void run() { + getSalaryAcctResultService(user).afterTaxAccounting(calculateParam, simpleEmployee); + } + }.start(); + + } + + /** * 妫鏌ユ槸鍚︽湁钖祫鏍哥畻缁撴灉鐨勬煡鐪嬫潈闄 * @param salaryAcctRecordId @@ -298,4 +330,32 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult // }; // ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "salaryAcctCheck", localRunnable); // } + + /** + * 鏍规嵁钖祫鏍哥畻璁板綍id鑾峰彇鍦ㄧ嚎璁$畻涓◣鐨勭浉鍏充俊鎭 + * + * @param salaryCalcTaxParam + * @return + */ + public SalaryCalcTaxInfoDTO getCalcTaxInfo(SalaryCalcTaxParam salaryCalcTaxParam) { + return getSalaryCalcTaxService(user).getCalcTaxInfo(salaryCalcTaxParam); + } + + /** + * 璁$畻涓◣ + * + * @param salaryCalcTaxParam + */ + public void calcTax(SalaryCalcTaxParam salaryCalcTaxParam) { + getSalaryCalcTaxService(user).calcTax(salaryCalcTaxParam); + } + + /** + * 璁$畻涓◣鑾峰彇鍙嶉 + * + * @param salaryCalcTaxParam + */ + public void calcTaxFeedback(SalaryCalcTaxParam salaryCalcTaxParam) { + getSalaryCalcTaxService(user).calcTaxFeedback(salaryCalcTaxParam); + } } diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 210c69501..0fccfecd0 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -219,6 +219,10 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy return getSalarySendService(user).getBaseInfo(id); } + public Map preview(SalaryPreviewParam param) { + return getSalarySendService(user).preview(param); + } + /** * 宸ヨ祫鍗曞彂鏀句俊鎭垪琛ㄧ殑楂樼骇鎼滅储 * @@ -558,6 +562,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy checkboxpopedom.setPopedompara("column:system_type"); checkboxpopedom.setShowmethod("com.engine.salary.transmethod.TaxRateTransMethod.getCheckBoxPopedom"); checkboxpopedomList.add(checkboxpopedom); + table.setPageUID(queryParam.getSalarySendId().toString()); table.setCheckboxList(checkboxpopedomList); table.setCheckboxpopedom(null); diff --git a/src/com/engine/salary/wrapper/SalarySobTaxRuleWrapper.java b/src/com/engine/salary/wrapper/SalarySobTaxRuleWrapper.java new file mode 100644 index 000000000..493b2ed36 --- /dev/null +++ b/src/com/engine/salary/wrapper/SalarySobTaxRuleWrapper.java @@ -0,0 +1,45 @@ +package com.engine.salary.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.entity.salarysob.dto.SalarySobTaxRuleDTO; +import com.engine.salary.entity.salarysob.param.SalarySobTaxRuleSaveParam; +import com.engine.salary.service.SalarySobTaxRuleService; +import com.engine.salary.service.impl.SalarySobTaxRuleServiceImpl; +import weaver.hrm.User; + +import java.util.List; + +/** + * 钖祫璐﹀鐨勪釜绋庤鍒 + *

Copyright: Copyright (c) 2023

+ *

Company: 娉涘井杞欢

+ * + * @author qiantao + * @version 1.0 + **/ +public class SalarySobTaxRuleWrapper extends Service { + + private SalarySobTaxRuleService getSalarySobTaxRuleService(User user) { + return ServiceUtil.getService(SalarySobTaxRuleServiceImpl.class, user); + } + + /** + * 钖祫璐﹀鐨勪釜绋庤鍒 + * + * @param salarySobId + * @return + */ + public List getForm(Long salarySobId) { + return getSalarySobTaxRuleService(user).getSalarySobTaxRuleDTO(salarySobId); + } + + /** + * 淇濆瓨钖祫璐﹀鐨勪釜绋庤鍒 + * + * @param saveParam + */ + public void save(SalarySobTaxRuleSaveParam saveParam) { + getSalarySobTaxRuleService(user).saveByParam(saveParam); + } +} diff --git a/src/com/engine/salary/wrapper/SalarySobWrapper.java b/src/com/engine/salary/wrapper/SalarySobWrapper.java index e0f456a5f..37b16bfa1 100644 --- a/src/com/engine/salary/wrapper/SalarySobWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobWrapper.java @@ -18,6 +18,7 @@ import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO; import com.engine.salary.entity.salarysob.po.SalarySobDefaultBackItemPO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.salarysob.DeclareReportTypeEnum; import com.engine.salary.enums.salarysob.IncomeCategoryEnum; import com.engine.salary.enums.sicategory.DeleteTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -71,7 +72,6 @@ public class SalarySobWrapper extends Service { } - /** * 钖祫璐﹀鍒楄〃 * @@ -269,4 +269,19 @@ public class SalarySobWrapper extends Service { return taxAgentIds.contains(salarySobPO.getTaxAgentId()) || Objects.isNull(salarySobPO.getTaxAgentId()); } + public List> incomeCategoryList() { + List> list = new ArrayList<>(); + Arrays.stream(IncomeCategoryEnum.values()) + .filter(incomeCategory -> incomeCategory.getReportType() == DeclareReportTypeEnum.COMPREHENSIVE_INCOME) + .forEach(incomeCategory -> { + Map map = new HashMap(); + map.put("enum", incomeCategory); + map.put("value", incomeCategory.getValue()); + map.put("defaultLabel", incomeCategory.getDefaultLabel()); + map.put("labelId", incomeCategory.getLabelId()); + map.put("reportTypeName", incomeCategory.getReportType().getDefaultLabel()); + list.add(map); + }); + return list; + } } diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 89e2a06ef..6a4cd290b 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -542,13 +542,13 @@ public class TaxDeclareRecordWrapper extends Service { } - public Object getDeclareTaxResultFeedback(Long id) { - return getTaxDeclareRecordService(user).getDeclareTaxResultFeedback(id); + public Object getCompanyIncomes(GetCompanyIncomesQueryParam param) { + return getTaxDeclareRecordService(user).getCompanyIncomes(param); } - public XSSFWorkbook exportGetDeclareTaxResultFeedback(DeclareTaxResultFeedbackQueryParam param) { - return getTaxDeclareRecordService(user).exportGetDeclareTaxResultFeedback(param); + public XSSFWorkbook exportGetCompanyIncomes(GetCompanyIncomesQueryParam param) { + return getTaxDeclareRecordService(user).exportGetCompanyIncomes(param); } /** @@ -565,7 +565,7 @@ public class TaxDeclareRecordWrapper extends Service { @Override public void execute() { try { - getTaxDeclareRecordService(user).cancelDeclare(id, param.getReportType()); + getTaxDeclareRecordService(user).cancelDeclare(id, param.getReportType(), taxDeclarationRate); taxDeclarationRate.setFinish(true); } catch (SalaryRunTimeException e) { taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage()); @@ -674,24 +674,6 @@ public class TaxDeclareRecordWrapper extends Service { return taxDeclarationRate.getIndex(); } - /** - * 绋庡眬绔敵鎶ョ姸鎬佹煡璇 - * - * @param id - * @return - */ - public String queryDeclareStatus(Long id) { - return getTaxDeclareRecordService(user).queryDeclareStatus(id); - } - - /** - * 绋庡眬绔敵鎶ユ槑缁嗘煡璇 - * - * @return - */ - public String queryCompanyIncomes(TaxDeclareRecordParam taxDeclareRecordParam) { - return getTaxDeclareRecordService(user).queryCompanyIncomes(taxDeclareRecordParam); - } /** * 瀵规瘮绠楃◣缁撴灉 diff --git a/src/com/engine/salary/wrapper/TaxPaymentWrapper.java b/src/com/engine/salary/wrapper/TaxPaymentWrapper.java index f90f62713..258af95af 100644 --- a/src/com/engine/salary/wrapper/TaxPaymentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxPaymentWrapper.java @@ -1,12 +1,16 @@ package com.engine.salary.wrapper; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.taxpayment.dto.TaxAmountFormDTO; import com.engine.salary.entity.taxpayment.dto.TaxFeedbackResultDTO; import com.engine.salary.entity.taxpayment.dto.TaxWithheldVoucherResultDTO; import com.engine.salary.entity.taxpayment.param.TaxPaymentQueryParam; -import com.engine.salary.enums.taxdeclaration.TaxPaymentServiceTypeEnum; import com.engine.salary.service.factory.TaxPaymentServiceFactory; +import com.engine.salary.service.impl.TaxPaymentAgreementServiceImpl; +import com.engine.salary.service.impl.TaxPaymentWithheldVoucherServiceImpl; +import com.engine.salary.service.impl.TaxPaymentWithholdingServiceImpl; +import com.engine.salary.service.impl.TaxPaymentWithholdingVoucherServiceImpl; import lombok.extern.slf4j.Slf4j; /** @@ -22,34 +26,37 @@ public class TaxPaymentWrapper extends Service { private final TaxPaymentServiceFactory taxPaymentServiceFactory = new TaxPaymentServiceFactory(user); public TaxFeedbackResultDTO getAgreementFeedback(TaxPaymentQueryParam param) { - return taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.QUERY_AGREEMENT.getValue()).getFeedback(param); + return ServiceUtil.getService(TaxPaymentAgreementServiceImpl.class, user).getFeedback(param); } public TaxFeedbackResultDTO payAgreementFeedback(TaxPaymentQueryParam param) { - return taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.WITHHOLDING_PAY.getValue()).getFeedback(param); + return ServiceUtil.getService(TaxPaymentWithholdingServiceImpl.class, user).getFeedback(param); } - public TaxFeedbackResultDTO printVoucherFeedback(TaxPaymentQueryParam param) { - return taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()).getFeedback(param); - } public String getRequestId(TaxPaymentQueryParam param) { return taxPaymentServiceFactory.get(param.getType()).getRequestId(param); } public TaxAmountFormDTO queryTaxAmount(TaxPaymentQueryParam param) { - return taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.QUERY_AGREEMENT.getValue()).queryTaxAmount(param); + return ServiceUtil.getService(TaxPaymentAgreementServiceImpl.class, user).queryTaxAmount(param); } public TaxWithheldVoucherResultDTO getWithheldVoucher(TaxPaymentQueryParam param) { - return taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.WITHHELD_VOUCHER.getValue()).getWithheldVoucher(param); + return ServiceUtil.getService(TaxPaymentWithheldVoucherServiceImpl.class, user).getWithheldVoucher(param); } + @Deprecated public void getSyncWithholdingFeedback(TaxPaymentQueryParam param) { - taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()).syncWithholdingFeedback(param); + ServiceUtil.getService(TaxPaymentWithholdingVoucherServiceImpl.class, user).syncWithholdingFeedback(param); + } + @Deprecated + public void cancelVoucher(TaxPaymentQueryParam param) { + ServiceUtil.getService(TaxPaymentWithholdingVoucherServiceImpl.class, user).cancelWithholdingVoucher(param); + } + @Deprecated + public TaxFeedbackResultDTO printVoucherFeedback(TaxPaymentQueryParam param) { + return ServiceUtil.getService(TaxPaymentWithholdingVoucherServiceImpl.class, user).getFeedback(param); } - public void cancelVoucher(TaxPaymentQueryParam param) { - taxPaymentServiceFactory.get(TaxPaymentServiceTypeEnum.WITHHOLDING_VOUCHER.getValue()).cancelWithholdingVoucher(param); - } } diff --git a/src/com/engine/salary/wrapper/proxy/SalaryAcctResultWrapperProxy.java b/src/com/engine/salary/wrapper/proxy/SalaryAcctResultWrapperProxy.java index 7a984d1c4..4334ed9ba 100644 --- a/src/com/engine/salary/wrapper/proxy/SalaryAcctResultWrapperProxy.java +++ b/src/com/engine/salary/wrapper/proxy/SalaryAcctResultWrapperProxy.java @@ -19,5 +19,7 @@ public interface SalaryAcctResultWrapperProxy { void calculate(SalaryAcctCalculateParam calculateParam); + void afterTaxAccounting(SalaryAfterTaxAcctCalculateParam calculateParam); + void batchUpdate(SalaryAcctResultBatchUpdateParam param); } diff --git a/test/FwjtDemo.java b/test/FwjtDemo.java new file mode 100644 index 000000000..48d9f3719 --- /dev/null +++ b/test/FwjtDemo.java @@ -0,0 +1,70 @@ +import com.engine.salary.util.HttpUtil; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SingnatureData; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class FwjtDemo { + + private static final String hostUrl = "https://uat-ddapi.bigfintax.com/"; + private static final String appKey = "fwjt"; + + private static final String appSecret = "D22439F71F0D7BB17C46583837962E6F"; + + public static void main(String[] args) throws Exception { + //1.鏍¢獙浠诲姟鍙戣捣 + //checkPassWord(); + // 鎴愬姛鍙楃悊杩斿洖锛 {"head":{"msg":"鎴愬姛","code":"00000000","description":"鎴愬姛","time":"2024-06-21 11:42:31","status":"Y"},"body":{"requestId":"25d99665958148698e60b1de97e2d53d"}} + //2.鏍¢獙浠诲姟鏌ヨ缁撴灉 + getCheckPassWord("25d99665958148698e60b1de97e2d53d"); + // 澶辫触鍦烘櫙濡備笅锛 {"head":{"msg":"鎮ㄨ緭鍏ョ殑瀵嗙爜閿欒锛屾偍杩樺墿3娆℃満浼氾紝杩炵画杈撻敊鍚庡瘑鐮佸皢浼氶攣瀹120鍒嗛挓锛岃璋ㄦ厧浣跨敤","code":"010013","description":null,"time":"2024-06-21 11:35:15","status":"N"}} + // 鎴愬姛鍦烘櫙濡備笅锛 {"head":{"msg":"鎴愬姛","code":"00000000","description":"鎴愬姛","time":"2024-06-21 11:34:00","status":"Y"},"body":true} + } + + /*** + * 鏍¢獙瀵嗙爜 + * @return + * @throws Exception + */ + public static String checkPassWord() throws Exception { + String url = hostUrl + "gateway/iit/service/check/checkPassword"; + Map requestParam = new HashMap(); + requestParam.put("bizNo", UUID.randomUUID().toString().replace("-", "")); + requestParam.put("qymc", "娴嬭瘯0"); + requestParam.put("mmlx", "0"); + requestParam.put("djxhid", "10117110118941289705"); + requestParam.put("nsrsbh", "91110118941289705K"); + requestParam.put("sbmm", "Aa123456"); + requestParam.put("mmlx", "0"); + requestParam.put("areaid", "110105"); + String reqJson = JsonUtil.toJsonString(requestParam); + Map params = new HashMap(); + Map header = SingnatureData.initHeader(params, appKey, appSecret); + String res = ""; + try { + //res = HttpUtil.getRequest(url, header, params); + res = HttpUtil.doPost(url, header, reqJson, "application/json"); + System.out.println(res); + } catch (Exception e) { + e.printStackTrace(); + } + return res; + } + + public static String getCheckPassWord(String requestId) throws Exception { + String url = hostUrl + "gateway/iit/service/check/getCheckPasswordFeedback"; + Map params = new HashMap(); + params.put("requestId", requestId); + Map header = SingnatureData.initHeader(params, appKey, appSecret); + String res = ""; + try { + res = HttpUtil.getRequest(url, header, params); + System.out.println(res); + } catch (Exception e) { + e.printStackTrace(); + } + return res; + } +} diff --git a/test/ParseTaxApi.java b/test/ParseTaxApi.java index 56bb4a986..716d56807 100644 --- a/test/ParseTaxApi.java +++ b/test/ParseTaxApi.java @@ -7,9 +7,9 @@ import java.util.List; public class ParseTaxApi { public static void main(String[] args) { - readExcel("H:\\code\\salary\\test\\ApiDes.xlsx"); +// readExcel("H:\\code\\salary\\test\\ApiDes.xlsx"); -// readExcel2("H:\\code\\salary\\test\\ApiDes.xlsx"); + readExcel2("H:\\code\\salary\\test\\ApiDes.xlsx"); }