Merge branch 'release/个税版本' into custom/艾志工业
# Conflicts: # src/com/engine/salary/service/impl/SIArchivesServiceImpl.java
This commit is contained in:
commit
76bb2faced
|
|
@ -1,5 +1,5 @@
|
|||
log=false
|
||||
defaultCloseNonStandard149=true
|
||||
AESEncryptScrect=990EB004A1C862721C1513AE90038C9E
|
||||
version=2.14.1.2405.01
|
||||
version=2.14.2.2405.02
|
||||
openFormulaForcedEditing=false
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
create table hrsa_salary_acct_sob_config
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
salary_acct_record_id number,
|
||||
basic_config clob,
|
||||
employee_field_config clob,
|
||||
item_config clob,
|
||||
item_group_config clob,
|
||||
back_item_config clob,
|
||||
adjust_rule_config clob,
|
||||
check_rule_config clob
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
ALTER TABLE hrsa_salary_sob_item ADD item_hide NUMBER(20,0);
|
||||
/
|
||||
|
||||
ALTER TABLE hrsa_salary_sob_item_group ADD item_hide NUMBER(20,0);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
update hrsa_salary_sob_item set item_hide = 0;
|
||||
/
|
||||
|
||||
update hrsa_salary_sob_item_group set item_hide = 0;
|
||||
/
|
||||
|
||||
UPDATE hrsa_salary_sob_item a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.salary_item_id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
/
|
||||
|
||||
UPDATE hrsa_salary_sob_item_group a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
create table hrsa_salary_acct_sob_config
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
salary_acct_record_id number,
|
||||
basic_config clob,
|
||||
employee_field_config clob,
|
||||
item_config clob,
|
||||
item_group_config clob,
|
||||
back_item_config clob,
|
||||
adjust_rule_config clob,
|
||||
check_rule_config clob
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
ALTER TABLE hrsa_salary_sob_item ADD item_hide NUMBER(20,0);
|
||||
/
|
||||
|
||||
ALTER TABLE hrsa_salary_sob_item_group ADD item_hide NUMBER(20,0);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
update hrsa_salary_sob_item set item_hide = 0;
|
||||
/
|
||||
|
||||
update hrsa_salary_sob_item_group set item_hide = 0;
|
||||
/
|
||||
|
||||
UPDATE hrsa_salary_sob_item a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.salary_item_id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
/
|
||||
|
||||
UPDATE hrsa_salary_sob_item_group a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
create table hrsa_salary_acct_sob_config
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
salary_acct_record_id number,
|
||||
basic_config clob,
|
||||
employee_field_config clob,
|
||||
item_config clob,
|
||||
item_group_config clob,
|
||||
back_item_config clob,
|
||||
adjust_rule_config clob,
|
||||
check_rule_config clob
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
ALTER TABLE hrsa_salary_sob_item ADD item_hide NUMBER(20,0);
|
||||
/
|
||||
|
||||
ALTER TABLE hrsa_salary_sob_item_group ADD item_hide NUMBER(20,0);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
update hrsa_salary_sob_item set item_hide = 0;
|
||||
/
|
||||
|
||||
update hrsa_salary_sob_item_group set item_hide = 0;
|
||||
/
|
||||
|
||||
UPDATE hrsa_salary_sob_item a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.salary_item_id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
/
|
||||
|
||||
UPDATE hrsa_salary_sob_item_group a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
create table hrsa_salary_acct_sob_config
|
||||
(
|
||||
id bigint primary key comment 'ID' ,
|
||||
create_time datetime comment '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>' ,
|
||||
update_time datetime comment '<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>' ,
|
||||
creator bigint comment '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id' ,
|
||||
delete_type int default 0 comment '<EFBFBD>Ƿ<EFBFBD>ɾ<EFBFBD><EFBFBD>' ,
|
||||
tenant_key varchar(10) comment '<EFBFBD>⻧KEY' ,
|
||||
salary_acct_record_id bigint comment 'н<EFBFBD>ʺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>id' ,
|
||||
basic_config text comment 'н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ' ,
|
||||
employee_field_config text comment 'н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ֶ<EFBFBD>' ,
|
||||
item_config text comment 'н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ' ,
|
||||
item_group_config text comment 'н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' ,
|
||||
back_item_config text comment 'н<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ' ,
|
||||
adjust_rule_config text comment 'н<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD>ĵ<EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' ,
|
||||
check_rule_config text comment 'н<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
||||
)
|
||||
;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
alter table hrsa_salary_sob_item add item_hide bigint;
|
||||
|
||||
alter table hrsa_salary_sob_item_group add item_hide bigint;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
update hrsa_salary_sob_item set item_hide = 0;
|
||||
|
||||
update hrsa_salary_sob_item_group set item_hide = 0;
|
||||
|
||||
update hrsa_salary_sob_item a INNER JOIN hrsa_salary_item_hide b on a.salary_item_id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id set a.item_hide = b.item_hide where a.delete_type=0 and b.delete_type=0 and b.is_group=0 and b.item_hide is not null;
|
||||
|
||||
update hrsa_salary_sob_item_group a INNER JOIN hrsa_salary_item_hide b on a.id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id set a.item_hide = b.item_hide where a.delete_type=0 and b.delete_type=0 and b.is_group=1 and b.item_hide is not null;
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
create table hrsa_salary_acct_sob_config
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
salary_acct_record_id number,
|
||||
basic_config clob,
|
||||
employee_field_config clob,
|
||||
item_config clob,
|
||||
item_group_config clob,
|
||||
back_item_config clob,
|
||||
adjust_rule_config clob,
|
||||
check_rule_config clob
|
||||
)
|
||||
/
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
ALTER TABLE hrsa_salary_sob_item ADD item_hide NUMBER(20,0)
|
||||
/
|
||||
|
||||
ALTER TABLE hrsa_salary_sob_item_group ADD item_hide NUMBER(20,0)
|
||||
/
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
update hrsa_salary_sob_item set item_hide = 0
|
||||
/
|
||||
update hrsa_salary_sob_item_group set item_hide = 0
|
||||
/
|
||||
UPDATE hrsa_salary_sob_item a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.salary_item_id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide)
|
||||
/
|
||||
|
||||
UPDATE hrsa_salary_sob_item_group a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide)
|
||||
/
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
create table hrsa_salary_acct_sob_config
|
||||
(
|
||||
id bigint primary key ,
|
||||
create_time timestamp,
|
||||
update_time timestamp,
|
||||
creator bigint,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar(10),
|
||||
salary_acct_record_id bigint,
|
||||
basic_config text,
|
||||
employee_field_config text,
|
||||
item_config text,
|
||||
item_group_config text,
|
||||
back_item_config text,
|
||||
adjust_rule_config text,
|
||||
check_rule_config text
|
||||
);
|
||||
/
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE hrsa_salary_sob_item ADD COLUMN item_hide bigint;
|
||||
|
||||
ALTER TABLE hrsa_salary_sob_item_group ADD COLUMN item_hide bigint;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
update hrsa_salary_sob_item set item_hide = 0;
|
||||
|
||||
update hrsa_salary_sob_item_group set item_hide = 0;
|
||||
|
||||
UPDATE hrsa_salary_sob_item a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.salary_item_id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
|
||||
UPDATE hrsa_salary_sob_item_group a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
create table hrsa_salary_acct_sob_config
|
||||
(
|
||||
id bigint primary key ,
|
||||
create_time datetime,
|
||||
update_time datetime,
|
||||
creator bigint,
|
||||
delete_type int default 0,
|
||||
tenant_key nvarchar(10),
|
||||
salary_acct_record_id bigint,
|
||||
basic_config ntext,
|
||||
employee_field_config ntext,
|
||||
item_config ntext,
|
||||
item_group_config ntext,
|
||||
back_item_config ntext,
|
||||
adjust_rule_config ntext,
|
||||
check_rule_config ntext
|
||||
)
|
||||
GO
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
alter table hrsa_salary_sob_item add item_hide bigint
|
||||
GO
|
||||
|
||||
alter table hrsa_salary_sob_item_group add item_hide bigint
|
||||
GO
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
update hrsa_salary_sob_item set item_hide = 0
|
||||
GO
|
||||
|
||||
update hrsa_salary_sob_item_group set item_hide = 0
|
||||
GO
|
||||
|
||||
UPDATE hrsa_salary_sob_item SET item_hide = b.item_hide FROM hrsa_salary_sob_item a INNER JOIN hrsa_salary_item_hide b ON a.salary_item_id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id
|
||||
WHERE a.delete_type=0 and b.delete_type=0 and b.is_group=0 and b.item_hide is not null
|
||||
GO
|
||||
|
||||
|
||||
UPDATE hrsa_salary_sob_item_group SET item_hide = b.item_hide FROM hrsa_salary_sob_item_group a INNER JOIN hrsa_salary_item_hide b ON a.id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id
|
||||
WHERE a.delete_type=0 and b.delete_type=0 and b.is_group=1 and b.item_hide is not null
|
||||
GO
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
create table hrsa_salary_acct_sob_config
|
||||
(
|
||||
id number primary key ,
|
||||
create_time date,
|
||||
update_time date,
|
||||
creator number,
|
||||
delete_type int default 0,
|
||||
tenant_key varchar2(10),
|
||||
salary_acct_record_id number,
|
||||
basic_config clob,
|
||||
employee_field_config clob,
|
||||
item_config clob,
|
||||
item_group_config clob,
|
||||
back_item_config clob,
|
||||
adjust_rule_config clob,
|
||||
check_rule_config clob
|
||||
);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
ALTER TABLE hrsa_salary_sob_item ADD item_hide NUMBER(20,0);
|
||||
/
|
||||
|
||||
ALTER TABLE hrsa_salary_sob_item_group ADD item_hide NUMBER(20,0);
|
||||
/
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
update hrsa_salary_sob_item set item_hide = 0;
|
||||
/
|
||||
|
||||
update hrsa_salary_sob_item_group set item_hide = 0;
|
||||
/
|
||||
|
||||
UPDATE hrsa_salary_sob_item a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.salary_item_id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
/
|
||||
|
||||
UPDATE hrsa_salary_sob_item_group a SET item_hide = (SELECT b.item_hide FROM hrsa_salary_item_hide b WHERE a.id = b.salary_item_id and a.salary_sob_id = b.salary_sob_id and a.delete_type=0 and b.delete_type=0 ) WHERE EXISTS (SELECT 1 FROM hrsa_salary_item_hide b WHERE b.item_hide = a.item_hide);
|
||||
/
|
||||
|
||||
|
|
@ -841,6 +841,7 @@ public class SIArchivesBiz {
|
|||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (oldOtherInfoList.size() == 1) {
|
||||
InsuranceArchivesOtherSchemePO oldOtherInfo = oldOtherInfoList.get(0);
|
||||
//设置福利档案基数调整记录数据
|
||||
|
|
@ -867,15 +868,17 @@ public class SIArchivesBiz {
|
|||
.otherPaymentBaseString(paramReq.getPaymentForm())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求,
|
||||
if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("其他福利个人:" + errorMsg.toString());
|
||||
}
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
updateOtherInfo.setOtherPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("其他福利公司:" + errorMsg.toString());
|
||||
}
|
||||
}
|
||||
encryptUtil.encrypt(updateOtherInfo, InsuranceArchivesOtherSchemePO.class);
|
||||
|
|
@ -912,15 +915,17 @@ public class SIArchivesBiz {
|
|||
.otherPaymentBaseString(paramReq.getPaymentForm())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求,
|
||||
if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("其他福利个人:" + errorMsg.toString());
|
||||
}
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
insertOtherInfo.setOtherPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("其他福利公司:" + errorMsg.toString());
|
||||
}
|
||||
}
|
||||
encryptUtil.encrypt(insertOtherInfo, InsuranceArchivesOtherSchemePO.class);
|
||||
|
|
@ -987,6 +992,7 @@ public class SIArchivesBiz {
|
|||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (oldFundInfoList.size() == 1) {
|
||||
InsuranceArchivesFundSchemePO oldFundInfo = oldFundInfoList.get(0);
|
||||
//设置福利档案基数调整记录数据
|
||||
|
|
@ -1014,15 +1020,17 @@ public class SIArchivesBiz {
|
|||
.employeeId(param.getEmployeeId())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求,
|
||||
if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("公积金个人:" + errorMsg.toString());
|
||||
}
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
updateFundInfo.setFundPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("公积金公司:" + errorMsg.toString());
|
||||
}
|
||||
}
|
||||
encryptUtil.encrypt(updateFundInfo, InsuranceArchivesFundSchemePO.class);
|
||||
|
|
@ -1061,15 +1069,17 @@ public class SIArchivesBiz {
|
|||
.employeeId(param.getEmployeeId())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求,
|
||||
if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("公积金个人:" + errorMsg.toString());
|
||||
}
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
insertFundInfo.setFundPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("公积金公司:" + errorMsg.toString());
|
||||
}
|
||||
}
|
||||
encryptUtil.encrypt(insertFundInfo, InsuranceArchivesFundSchemePO.class);
|
||||
|
|
@ -1143,6 +1153,7 @@ public class SIArchivesBiz {
|
|||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
|
||||
StringBuilder errorMsg = new StringBuilder();
|
||||
//组装新数据
|
||||
if (oldSocialInfoList.size() == 1) {
|
||||
//老数据
|
||||
|
|
@ -1172,15 +1183,17 @@ public class SIArchivesBiz {
|
|||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("社保个人:" + errorMsg.toString());
|
||||
}
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
updateSocialInfo.setSocialPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("社保公司:" + errorMsg.toString());
|
||||
}
|
||||
}
|
||||
encryptUtil.encrypt(updateSocialInfo, InsuranceArchivesSocialSchemePO.class);
|
||||
|
|
@ -1219,15 +1232,17 @@ public class SIArchivesBiz {
|
|||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("社保个人:" + errorMsg.toString());
|
||||
}
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
insertSocialInfo.setSocialPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!");
|
||||
throw new SalaryRunTimeException("社保公司:" + errorMsg.toString());
|
||||
}
|
||||
}
|
||||
encryptUtil.encrypt(insertSocialInfo, InsuranceArchivesSocialSchemePO.class);
|
||||
|
|
@ -1267,7 +1282,7 @@ public class SIArchivesBiz {
|
|||
* @param paymentBaseString
|
||||
* @return
|
||||
*/
|
||||
public Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString, Integer paymentScope) {
|
||||
public Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString, Integer paymentScope, StringBuilder errorMsg) {
|
||||
|
||||
if (primaryId ==null || paymentBaseString == null) {
|
||||
return true;
|
||||
|
|
@ -1283,6 +1298,7 @@ public class SIArchivesBiz {
|
|||
if (entry.getValue() == null || entry.getValue().length() == 0) {
|
||||
continue;
|
||||
} else if (!isNumeric(entry.getValue())) {
|
||||
errorMsg.append("福利值非数字");
|
||||
log.info("福利值非数字!");
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1291,6 +1307,7 @@ public class SIArchivesBiz {
|
|||
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOList = getInsuranceSchemeDetailMapper().getByPI(primaryId, Long.valueOf(entry.getKey()));
|
||||
log.info("福利方案id: {},, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey()));
|
||||
if (insuranceSchemeDetailPOList.size() == 0) {
|
||||
errorMsg.append("根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: " + primaryId + ", 福利明细项id:" + Long.valueOf(entry.getKey()));
|
||||
log.info("根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: {}, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey()));
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1304,11 +1321,13 @@ public class SIArchivesBiz {
|
|||
String upperLimit = "0.000".equals(insuranceSchemeDetailPO.getUpperLimit()) ? null : insuranceSchemeDetailPO.getUpperLimit();
|
||||
if (lowerLimit != null && lowerLimit.length() > 0 && Double.parseDouble(entry.getValue()) < Double.parseDouble(lowerLimit)) {
|
||||
//数值低于对应福利明细下限
|
||||
errorMsg.append("基数:"+ entry.getKey() + " 数值:" + entry.getValue() +"低于对应福利明细下限:" + lowerLimit);
|
||||
log.info("社保基数 {} 数值 {} 低于对应福利明细下限 {}!", entry.getKey(), entry.getValue(), lowerLimit);
|
||||
return false;
|
||||
}
|
||||
if (upperLimit != null && upperLimit.length() > 0 && Double.parseDouble(entry.getValue()) > Double.parseDouble(upperLimit)) {
|
||||
//数值高于对应福利明细上限
|
||||
errorMsg.append("基数:"+ entry.getKey() + " 数值:" + entry.getValue() +"高于对应福利明细上限:" + upperLimit);
|
||||
log.info("社保基数 {} 数值 {} 高于对应福利明细上限 {} !", entry.getKey(), entry.getValue(), upperLimit);
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,15 +64,6 @@ public class SalarySobItemGroupBiz {
|
|||
}
|
||||
}
|
||||
|
||||
public List<SalarySobItemGroupPO> listSomeWithItemHide(SalarySobItemGroupPO build) {
|
||||
SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession();
|
||||
try {
|
||||
SalarySobItemGroupMapper mapper = sqlSession.getMapper(SalarySobItemGroupMapper.class);
|
||||
return mapper.listSomeWithItemHide(build);
|
||||
} finally {
|
||||
sqlSession.close();
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteByIds(List<Long> ids) {
|
||||
|
||||
|
|
|
|||
|
|
@ -399,7 +399,7 @@
|
|||
"name": "IDCARD",
|
||||
"chineseName": "身份证函数",
|
||||
"description": "从身份证号码中获取相关信息,比如:生日(BD)、年龄(AGE)、籍贯(NA)、性别(GENDER)。",
|
||||
"example": "IDCARD( ‘43070319980706334X’ , ‘BD’ )",
|
||||
"example": "IDCARD( ‘******19980706****’ , ‘BD’ )",
|
||||
"result": "'1998-07-06'",
|
||||
"paramDescs": [
|
||||
"*身份证号码*(必选)",
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ public class SalaryTemplateBO {
|
|||
.build();
|
||||
}
|
||||
|
||||
public static List<SalaryTemplateSalaryItemSetListDTO> convertSalarySobItemAggregateToSalaryItemSet(SalarySobItemAggregateDTO salarySobItemAggregateDTO, Long currentEmployeeId, boolean isReplenish) {
|
||||
public static List<SalaryTemplateSalaryItemSetListDTO> convertSalarySobItemAggregateToSalaryItemSet(SalarySobItemAggregateDTO salarySobItemAggregateDTO, boolean isReplenish) {
|
||||
List<SalaryTemplateSalaryItemSetListDTO> groups = new LinkedList<>();
|
||||
if (salarySobItemAggregateDTO!=null) {
|
||||
// 1.员工信息
|
||||
|
|
|
|||
|
|
@ -0,0 +1,84 @@
|
|||
package com.engine.salary.entity.salaryacct.bo;
|
||||
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO;
|
||||
import com.engine.salary.entity.salarysob.po.*;
|
||||
import com.engine.salary.enums.sicategory.DeleteTypeEnum;
|
||||
import com.engine.salary.util.JsonUtil;
|
||||
import com.engine.salary.util.db.IdGenerator;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
public class SalaryAcctConfig {
|
||||
|
||||
private SalaryAcctRecordPO salaryAcctRecord;
|
||||
|
||||
private SalarySobPO salarySob;
|
||||
|
||||
private List<SalarySobEmpFieldPO> salarySobEmpFields;
|
||||
|
||||
private List<SalarySobItemPO> salarySobItems;
|
||||
|
||||
private List<SalarySobItemGroupPO> salarySobItemGroups;
|
||||
|
||||
private List<SalarySobBackItemPO> salarySobBackItems;
|
||||
|
||||
@Deprecated
|
||||
private List<SalarySobAdjustRulePO> salarySobAdjustRules;
|
||||
|
||||
@Deprecated
|
||||
private List<SalarySobCheckRulePO> salarySobCheckRules;
|
||||
|
||||
public SalaryAcctConfig(SalaryAcctRecordPO salaryAcctRecord,
|
||||
SalarySobPO salarySob,
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFields,
|
||||
List<SalarySobItemPO> salarySobItems,
|
||||
List<SalarySobItemGroupPO> salarySobItemGroups,
|
||||
List<SalarySobBackItemPO> salarySobBackItems,
|
||||
List<SalarySobAdjustRulePO> salarySobAdjustRules,
|
||||
List<SalarySobCheckRulePO> salarySobCheckRules) {
|
||||
this.salaryAcctRecord = salaryAcctRecord;
|
||||
this.salarySob = salarySob;
|
||||
this.salarySobEmpFields = salarySobEmpFields;
|
||||
this.salarySobItems = salarySobItems;
|
||||
this.salarySobItemGroups = salarySobItemGroups;
|
||||
this.salarySobBackItems = salarySobBackItems;
|
||||
this.salarySobAdjustRules = salarySobAdjustRules;
|
||||
this.salarySobCheckRules = salarySobCheckRules;
|
||||
}
|
||||
|
||||
public SalaryAcctSobConfigPO buildAcctSobConfig() {
|
||||
Date now = new Date();
|
||||
return SalaryAcctSobConfigPO.builder()
|
||||
.id(IdGenerator.generate())
|
||||
.salaryAcctRecordId(salaryAcctRecord.getId())
|
||||
.basicConfig(JsonUtil.toJsonString(salarySob))
|
||||
.employeeFieldConfig(JsonUtil.toJsonString(salarySobEmpFields))
|
||||
.itemConfig(JsonUtil.toJsonString(salarySobItems))
|
||||
.itemGroupConfig(JsonUtil.toJsonString(salarySobItemGroups))
|
||||
.backItemConfig(JsonUtil.toJsonString(salarySobBackItems))
|
||||
.adjustRuleConfig(JsonUtil.toJsonString(salarySobAdjustRules))
|
||||
.checkRuleConfig(JsonUtil.toJsonString(salarySobCheckRules))
|
||||
.tenantKey(salaryAcctRecord.getTenantKey())
|
||||
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
|
||||
.creator(salaryAcctRecord.getCreator())
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.build();
|
||||
}
|
||||
|
||||
public static SalaryAcctConfig parse(SalaryAcctSobConfigPO po) {
|
||||
return SalaryAcctConfig.builder()
|
||||
.salarySob(JsonUtil.parseObject(po.getBasicConfig(), SalarySobPO.class))
|
||||
.salarySobEmpFields(JsonUtil.parseList(po.getEmployeeFieldConfig(), SalarySobEmpFieldPO.class))
|
||||
.salarySobItemGroups(JsonUtil.parseList(po.getItemGroupConfig(), SalarySobItemGroupPO.class))
|
||||
.salarySobItems(JsonUtil.parseList(po.getItemConfig(), SalarySobItemPO.class))
|
||||
.salarySobBackItems(JsonUtil.parseList(po.getBackItemConfig(), SalarySobBackItemPO.class))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
package com.engine.salary.entity.salaryacct.po;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 账套快照
|
||||
* <p>Copyright: Copyright (c) 2024</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
//hrsa_salary_acct_sob_config
|
||||
public class SalaryAcctSobConfigPO {
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 薪资核算记录id
|
||||
*/
|
||||
private Long salaryAcctRecordId;
|
||||
|
||||
/**
|
||||
* 薪资账套基本信息
|
||||
*/
|
||||
private String basicConfig;
|
||||
|
||||
/**
|
||||
* 员工信息字段
|
||||
*/
|
||||
private String employeeFieldConfig;
|
||||
|
||||
/**
|
||||
* 薪资项目
|
||||
*/
|
||||
private String itemConfig;
|
||||
|
||||
/**
|
||||
* 薪资项目分类
|
||||
*/
|
||||
private String itemGroupConfig;
|
||||
|
||||
/**
|
||||
* 回算薪资项目
|
||||
*/
|
||||
private String backItemConfig;
|
||||
|
||||
/**
|
||||
* 调薪规则
|
||||
*/
|
||||
@Deprecated
|
||||
private String adjustRuleConfig;
|
||||
|
||||
/**
|
||||
* 校验规则
|
||||
*/
|
||||
@Deprecated
|
||||
private String checkRuleConfig;
|
||||
|
||||
/**
|
||||
* 租户key
|
||||
*/
|
||||
private String tenantKey;
|
||||
|
||||
/**
|
||||
* 创建人id
|
||||
*/
|
||||
private Long creator;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Integer deleteType;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
//主键id集合
|
||||
private Collection<Long> ids;
|
||||
}
|
||||
|
|
@ -8,9 +8,13 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
|
|
@ -116,4 +120,28 @@ public class SalarySobBackItemPO{
|
|||
* 薪资项目id
|
||||
*/
|
||||
private Collection<Long> salaryItemIds;
|
||||
|
||||
public String toCompareString() {
|
||||
return "SalarySobBackItemPO{" +
|
||||
"salarySobId=" + salarySobId +
|
||||
", salaryItemId=" + salaryItemId +
|
||||
", salaryItemCode='" + salaryItemCode + '\'' +
|
||||
", dataType='" + dataType + '\'' +
|
||||
", roundingMode=" + roundingMode +
|
||||
", pattern=" + pattern +
|
||||
", valueType=" + valueType +
|
||||
", formulaId=" + formulaId +
|
||||
", backCalcType=" + backCalcType +
|
||||
'}';
|
||||
}
|
||||
|
||||
public static String toCompareString(List<SalarySobBackItemPO> salarySobBackItems) {
|
||||
if (CollectionUtils.isEmpty(salarySobBackItems)) {
|
||||
return "";
|
||||
}
|
||||
return salarySobBackItems.stream()
|
||||
.sorted(Comparator.comparingLong(SalarySobBackItemPO::getSalaryItemId))
|
||||
.map(SalarySobBackItemPO::toCompareString)
|
||||
.collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
|
|
@ -5,9 +5,13 @@ import lombok.Builder;
|
|||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 薪资账套-薪资项目-员工基本信息
|
||||
|
|
@ -76,4 +80,23 @@ public class SalarySobEmpFieldPO {
|
|||
private Date updateTime;
|
||||
|
||||
Collection<Long> ids;
|
||||
|
||||
public String toCompareString() {
|
||||
return "SalarySobEmpFieldPO{" +
|
||||
"salarySobId=" + salarySobId +
|
||||
", fieldCode='" + fieldCode + '\'' +
|
||||
", sortedIndex=" + sortedIndex +
|
||||
", canDelete=" + canDelete +
|
||||
'}';
|
||||
}
|
||||
|
||||
public static String toCompareString(List<SalarySobEmpFieldPO> salarySobEmpFields) {
|
||||
if (CollectionUtils.isEmpty(salarySobEmpFields)) {
|
||||
return "";
|
||||
}
|
||||
return salarySobEmpFields.stream()
|
||||
.sorted(Comparator.comparingInt(SalarySobEmpFieldPO::getSortedIndex))
|
||||
.map(SalarySobEmpFieldPO::toCompareString)
|
||||
.collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,9 +4,13 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 薪资账套薪资项目分组
|
||||
|
|
@ -77,4 +81,22 @@ public class SalarySobItemGroupPO {
|
|||
private Long itemHide;
|
||||
|
||||
Collection<Long> ids;
|
||||
|
||||
public String toCompareString() {
|
||||
return "SalarySobItemGroupPO{" +
|
||||
"name='" + name + '\'' +
|
||||
", sortedIndex=" + sortedIndex +
|
||||
", itemHide=" + itemHide +
|
||||
'}';
|
||||
}
|
||||
|
||||
public static String toCompareString(List<SalarySobItemGroupPO> salarySobItemGroups) {
|
||||
if (CollectionUtils.isEmpty(salarySobItemGroups)) {
|
||||
return "";
|
||||
}
|
||||
return salarySobItemGroups.stream()
|
||||
.sorted(Comparator.comparing(SalarySobItemGroupPO::getSortedIndex))
|
||||
.map(SalarySobItemGroupPO::toCompareString)
|
||||
.collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,9 +7,13 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 薪资账套薪资项目
|
||||
|
|
@ -136,4 +140,30 @@ public class SalarySobItemPO {
|
|||
|
||||
Collection<Long> notInSalaryItemIds;
|
||||
|
||||
|
||||
public String toCompareString() {
|
||||
return "SalarySobItemPO{" +
|
||||
"salarySobId=" + salarySobId +
|
||||
", salaryItemId=" + salaryItemId +
|
||||
", salarySobItemGroupId=" + salarySobItemGroupId +
|
||||
", formulaId=" + formulaId +
|
||||
", sortedIndex=" + sortedIndex +
|
||||
", canDelete=" + canDelete +
|
||||
", roundingMode=" + roundingMode +
|
||||
", pattern=" + pattern +
|
||||
", valueType=" + valueType +
|
||||
", itemHide=" + itemHide +
|
||||
'}';
|
||||
}
|
||||
|
||||
public static String toCompareString(List<SalarySobItemPO> salarySobItems) {
|
||||
if (CollectionUtils.isEmpty(salarySobItems)) {
|
||||
return "";
|
||||
}
|
||||
return salarySobItems.stream()
|
||||
.sorted(Comparator.comparingLong(SalarySobItemPO::getSalaryItemId))
|
||||
.map(SalarySobItemPO::toCompareString)
|
||||
.collect(Collectors.joining(","));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.engine.salary.entity.salarysob.po;
|
|||
|
||||
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
|
||||
import com.engine.hrmelog.annotation.ElogTransform;
|
||||
import com.engine.salary.util.valid.Compare;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
|
@ -27,12 +28,14 @@ public class SalarySobPO {
|
|||
* 主键id
|
||||
*/
|
||||
@ElogTransform( name="主键" )
|
||||
@Compare
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
@ElogTransform( name="名称" )
|
||||
@Compare
|
||||
private String name;
|
||||
|
||||
/**
|
||||
|
|
@ -46,42 +49,49 @@ public class SalarySobPO {
|
|||
* @see IncomeCategoryEnum
|
||||
*/
|
||||
@ElogTransform( name="薪资类型" )
|
||||
@Compare
|
||||
private Integer incomeCategory;
|
||||
|
||||
/**
|
||||
* 薪资周期。1:上上月、2:上月、3:本月、4:下月
|
||||
*/
|
||||
@ElogTransform( name="薪资周期" )
|
||||
@Compare
|
||||
private Integer salaryCycleType;
|
||||
|
||||
/**
|
||||
* 薪资周期的起始日期
|
||||
*/
|
||||
@ElogTransform( name="薪资周期起始日期" )
|
||||
@Compare
|
||||
private Integer salaryCycleFromDay;
|
||||
|
||||
/**
|
||||
* 税款所属期。1:上上月、2:上月、3:本月、4:下月
|
||||
*/
|
||||
@ElogTransform( name="税款所属期" )
|
||||
@Compare
|
||||
private Integer taxCycleType;
|
||||
|
||||
/**
|
||||
* 考勤周期。1:上上月、2:上月、3:本月、4:下月
|
||||
*/
|
||||
@ElogTransform( name="考勤周期" )
|
||||
@Compare
|
||||
private Integer attendCycleType;
|
||||
|
||||
/**
|
||||
* 考勤周期的起始日期
|
||||
*/
|
||||
@ElogTransform( name="考勤周期起始日期" )
|
||||
@Compare
|
||||
private Integer attendCycleFromDay;
|
||||
|
||||
/**
|
||||
* 社保福利所属期。1:上上月、2:上月、3:本月、4:下月
|
||||
*/
|
||||
@ElogTransform( name="社保福利所属期" )
|
||||
@Compare
|
||||
private Integer socialSecurityCycleType;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -25,4 +25,9 @@ public class InsuranceArchivesSaveParam {
|
|||
private String paymentForm;
|
||||
|
||||
private String paymentComForm;
|
||||
|
||||
/**
|
||||
* 是否修改数据为上限或下限
|
||||
*/
|
||||
private Boolean changeData;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -404,7 +404,7 @@ public class FormluaConstant {
|
|||
" \"name\": \"IDCARD\",\n" +
|
||||
" \"chineseName\": \"身份证函数\",\n" +
|
||||
" \"description\": \"从身份证号码中获取相关信息,比如:生日(BD)、年龄(AGE)、籍贯(NA)、性别(GENDER)。\",\n" +
|
||||
" \"example\": \"IDCARD( ‘43070319980706334X’ , ‘BD’ )\",\n" +
|
||||
" \"example\": \"IDCARD( ‘******19980706****’ , ‘BD’ )\",\n" +
|
||||
" \"result\": \"'1998-07-06'\",\n" +
|
||||
" \"paramDescs\": [\n" +
|
||||
" \"*身份证号码*(必选)\",\n" +
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package com.engine.salary.formlua.entity.parameter;
|
|||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
|
@ -74,7 +73,7 @@ public class FuncDescUtil {
|
|||
funcMap.put("RIGHT", SalaryI18nUtil.getI18nLabel(97740, "从文本右侧开始,返回指定字符数的文字。示例:<br> RIGHT('大家好', 2) 结果: '家好'"));
|
||||
funcMap.put("MID", SalaryI18nUtil.getI18nLabel(97741, "从文本指定位置之后开始,返回指定字符数的文字。示例:<br> MID('大家好', 2, 1) 结果: '家'"));
|
||||
funcMap.put("ISEMPTY", SalaryI18nUtil.getI18nLabel(97742, "变量为空或未填写,则返回真。示例:<br> ISEMPTY({员工表.电话})"));
|
||||
funcMap.put("IDCARD", SalaryI18nUtil.getI18nLabel(97743, "从身份证号码中获取相关信息,比如:生日(BD)、年龄(AGE)、籍贯(NA)、性别(GENDER)。示例:<br> IDCARD( ‘43070319980706334X’ , ‘BD’ ) 结果: '1998-07-06'"));
|
||||
funcMap.put("IDCARD", SalaryI18nUtil.getI18nLabel(97743, "从身份证号码中获取相关信息,比如:生日(BD)、年龄(AGE)、籍贯(NA)、性别(GENDER)。示例:<br> IDCARD( ‘******19980706****’ , ‘BD’ ) 结果: '1998-07-06'"));
|
||||
funcMap.put("SCORE", SalaryI18nUtil.getI18nLabel(97744, "获取选项型控件(单选框、复选框、下拉菜单)分数。示例:SCORE({当前数据.单选框}) 结果:选项分数<br>注:未设置选项分数时,结果为0"));
|
||||
funcMap.put("SUBSTRING", SalaryI18nUtil.getI18nLabel(97745, "字符截取函数,用于按起始位置截取字符。<br>示例:SUBSTRING('abcdefg',2,3) <br>结果:bc"));
|
||||
funcMap.put("SUBSTITUE", SalaryI18nUtil.getI18nLabel(97746, "字符查找替换函数,替换字符中的所有关键词为新字符。<br>示例:SUBSTITUE('泛微移动办公','泛微','eteams') <br>结果:eteams移动办公"));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,80 @@
|
|||
package com.engine.salary.mapper.salaryacct;
|
||||
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public interface SalaryAcctSobConfigMapper {
|
||||
|
||||
/**
|
||||
* 查询所有记录
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<SalaryAcctSobConfigPO> listAll();
|
||||
|
||||
/**
|
||||
* 条件查询
|
||||
*
|
||||
* @return 返回集合,没有返回空List
|
||||
*/
|
||||
List<SalaryAcctSobConfigPO> listSome(SalaryAcctSobConfigPO salaryAcctSobConfig);
|
||||
|
||||
/**
|
||||
* 根据核算id查询
|
||||
* @param salaryAcctRecordId
|
||||
* @return
|
||||
*/
|
||||
SalaryAcctSobConfigPO getBySalaryAcctRecordId(Long salaryAcctRecordId);
|
||||
|
||||
/**
|
||||
* 根据主键查询
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 返回记录,没有返回null
|
||||
*/
|
||||
SalaryAcctSobConfigPO getById(Long id);
|
||||
|
||||
/**
|
||||
* 新增,忽略null字段
|
||||
*
|
||||
* @param salaryAcctSobConfig 新增的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int insertIgnoreNull(SalaryAcctSobConfigPO salaryAcctSobConfig);
|
||||
|
||||
/**
|
||||
* 修改,修改所有字段
|
||||
*
|
||||
* @param salaryAcctSobConfig 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int update(SalaryAcctSobConfigPO salaryAcctSobConfig);
|
||||
|
||||
/**
|
||||
* 修改,忽略null字段
|
||||
*
|
||||
* @param salaryAcctSobConfig 修改的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int updateIgnoreNull(SalaryAcctSobConfigPO salaryAcctSobConfig);
|
||||
|
||||
/**
|
||||
* 删除记录
|
||||
*
|
||||
* @param salaryAcctSobConfig 待删除的记录
|
||||
* @return 返回影响行数
|
||||
*/
|
||||
int delete(SalaryAcctSobConfigPO salaryAcctSobConfig);
|
||||
|
||||
/**
|
||||
* 批量删除记录
|
||||
* @param ids 主键id集合
|
||||
*/
|
||||
void deleteByIds(@Param("ids") Collection<Long> ids);
|
||||
|
||||
void deleteBySalaryAcctRecordIds(@Param("salaryAcctRecordIds") Collection<Long> salaryAcctRecordIds);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,316 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.engine.salary.mapper.salaryacct.SalaryAcctSobConfigMapper">
|
||||
<resultMap id="BaseResultMap" type="com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO">
|
||||
<result column="adjust_rule_config" property="adjustRuleConfig"/>
|
||||
<result column="back_item_config" property="backItemConfig"/>
|
||||
<result column="basic_config" property="basicConfig"/>
|
||||
<result column="check_rule_config" property="checkRuleConfig"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="creator" property="creator"/>
|
||||
<result column="delete_type" property="deleteType"/>
|
||||
<result column="employee_field_config" property="employeeFieldConfig"/>
|
||||
<result column="id" property="id"/>
|
||||
<result column="item_config" property="itemConfig"/>
|
||||
<result column="item_group_config" property="itemGroupConfig"/>
|
||||
<result column="salary_acct_record_id" property="salaryAcctRecordId"/>
|
||||
<result column="tenant_key" property="tenantKey"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 表字段 -->
|
||||
<sql id="baseColumns">
|
||||
t
|
||||
.
|
||||
adjust_rule_config
|
||||
, t.back_item_config
|
||||
, t.basic_config
|
||||
, t.check_rule_config
|
||||
, t.create_time
|
||||
, t.creator
|
||||
, t.delete_type
|
||||
, t.employee_field_config
|
||||
, t.id
|
||||
, t.item_config
|
||||
, t.item_group_config
|
||||
, t.salary_acct_record_id
|
||||
, t.tenant_key
|
||||
, t.update_time
|
||||
</sql>
|
||||
|
||||
<!-- 查询全部 -->
|
||||
<select id="listAll" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_salary_acct_sob_config t
|
||||
WHERE delete_type = 0
|
||||
</select>
|
||||
|
||||
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_salary_acct_sob_config t
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</select>
|
||||
|
||||
<!-- 根据主键获取单条记录 -->
|
||||
<select id="getBySalaryAcctRecordId" resultMap="BaseResultMap" parameterType="Long">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_salary_acct_sob_config t
|
||||
WHERE salary_acct_record_id = #{salaryAcctRecordId} AND delete_type = 0
|
||||
</select>
|
||||
|
||||
<!-- 条件查询 -->
|
||||
<select id="listSome" resultMap="BaseResultMap"
|
||||
parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_salary_acct_sob_config t
|
||||
WHERE delete_type = 0
|
||||
<if test="adjustRuleConfig != null">
|
||||
AND adjust_rule_config = #{adjustRuleConfig}
|
||||
</if>
|
||||
<if test="backItemConfig != null">
|
||||
AND back_item_config = #{backItemConfig}
|
||||
</if>
|
||||
<if test="basicConfig != null">
|
||||
AND basic_config = #{basicConfig}
|
||||
</if>
|
||||
<if test="checkRuleConfig != null">
|
||||
AND check_rule_config = #{checkRuleConfig}
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
AND create_time = #{createTime}
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
AND creator = #{creator}
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
AND delete_type = #{deleteType}
|
||||
</if>
|
||||
<if test="employeeFieldConfig != null">
|
||||
AND employee_field_config = #{employeeFieldConfig}
|
||||
</if>
|
||||
<if test="id != null">
|
||||
AND id = #{id}
|
||||
</if>
|
||||
<if test="itemConfig != null">
|
||||
AND item_config = #{itemConfig}
|
||||
</if>
|
||||
<if test="itemGroupConfig != null">
|
||||
AND item_group_config = #{itemGroupConfig}
|
||||
</if>
|
||||
<if test="salaryAcctRecordId != null">
|
||||
AND salary_acct_record_id = #{salaryAcctRecordId}
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
AND tenant_key = #{tenantKey}
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
AND update_time = #{updateTime}
|
||||
</if>
|
||||
<if test="ids != null and ids.size()>0">
|
||||
AND id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY id DESC
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 插入不为NULL的字段 -->
|
||||
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO">
|
||||
INSERT INTO hrsa_salary_acct_sob_config
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
<if test="adjustRuleConfig != null">
|
||||
adjust_rule_config,
|
||||
</if>
|
||||
<if test="backItemConfig != null">
|
||||
back_item_config,
|
||||
</if>
|
||||
<if test="basicConfig != null">
|
||||
basic_config,
|
||||
</if>
|
||||
<if test="checkRuleConfig != null">
|
||||
check_rule_config,
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
creator,
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
delete_type,
|
||||
</if>
|
||||
<if test="employeeFieldConfig != null">
|
||||
employee_field_config,
|
||||
</if>
|
||||
<if test="id != null">
|
||||
id,
|
||||
</if>
|
||||
<if test="itemConfig != null">
|
||||
item_config,
|
||||
</if>
|
||||
<if test="itemGroupConfig != null">
|
||||
item_group_config,
|
||||
</if>
|
||||
<if test="salaryAcctRecordId != null">
|
||||
salary_acct_record_id,
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
tenant_key,
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="adjustRuleConfig != null">
|
||||
#{adjustRuleConfig},
|
||||
</if>
|
||||
<if test="backItemConfig != null">
|
||||
#{backItemConfig},
|
||||
</if>
|
||||
<if test="basicConfig != null">
|
||||
#{basicConfig},
|
||||
</if>
|
||||
<if test="checkRuleConfig != null">
|
||||
#{checkRuleConfig},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
#{createTime},
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
#{creator},
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
#{deleteType},
|
||||
</if>
|
||||
<if test="employeeFieldConfig != null">
|
||||
#{employeeFieldConfig},
|
||||
</if>
|
||||
<if test="id != null">
|
||||
#{id},
|
||||
</if>
|
||||
<if test="itemConfig != null">
|
||||
#{itemConfig},
|
||||
</if>
|
||||
<if test="itemGroupConfig != null">
|
||||
#{itemGroupConfig},
|
||||
</if>
|
||||
<if test="salaryAcctRecordId != null">
|
||||
#{salaryAcctRecordId},
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
#{tenantKey},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
#{updateTime},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<!-- 更新,更新全部字段 -->
|
||||
<update id="update" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO">
|
||||
UPDATE hrsa_salary_acct_sob_config
|
||||
<set>
|
||||
adjust_rule_config=#{adjustRuleConfig},
|
||||
back_item_config=#{backItemConfig},
|
||||
basic_config=#{basicConfig},
|
||||
check_rule_config=#{checkRuleConfig},
|
||||
create_time=#{createTime},
|
||||
creator=#{creator},
|
||||
delete_type=#{deleteType},
|
||||
employee_field_config=#{employeeFieldConfig},
|
||||
item_config=#{itemConfig},
|
||||
item_group_config=#{itemGroupConfig},
|
||||
salary_acct_record_id=#{salaryAcctRecordId},
|
||||
tenant_key=#{tenantKey},
|
||||
update_time=#{updateTime},
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 更新不为NULL的字段 -->
|
||||
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO">
|
||||
UPDATE hrsa_salary_acct_sob_config
|
||||
<set>
|
||||
<if test="adjustRuleConfig != null">
|
||||
adjust_rule_config=#{adjustRuleConfig},
|
||||
</if>
|
||||
<if test="backItemConfig != null">
|
||||
back_item_config=#{backItemConfig},
|
||||
</if>
|
||||
<if test="basicConfig != null">
|
||||
basic_config=#{basicConfig},
|
||||
</if>
|
||||
<if test="checkRuleConfig != null">
|
||||
check_rule_config=#{checkRuleConfig},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time=#{createTime},
|
||||
</if>
|
||||
<if test="creator != null">
|
||||
creator=#{creator},
|
||||
</if>
|
||||
<if test="deleteType != null">
|
||||
delete_type=#{deleteType},
|
||||
</if>
|
||||
<if test="employeeFieldConfig != null">
|
||||
employee_field_config=#{employeeFieldConfig},
|
||||
</if>
|
||||
<if test="itemConfig != null">
|
||||
item_config=#{itemConfig},
|
||||
</if>
|
||||
<if test="itemGroupConfig != null">
|
||||
item_group_config=#{itemGroupConfig},
|
||||
</if>
|
||||
<if test="salaryAcctRecordId != null">
|
||||
salary_acct_record_id=#{salaryAcctRecordId},
|
||||
</if>
|
||||
<if test="tenantKey != null">
|
||||
tenant_key=#{tenantKey},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time=#{updateTime},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 根据主键删除记录 -->
|
||||
<delete id="delete">
|
||||
UPDATE hrsa_salary_acct_sob_config
|
||||
SET delete_type=1
|
||||
WHERE id = #{id}
|
||||
AND delete_type = 0
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByIds">
|
||||
UPDATE hrsa_salary_acct_sob_config
|
||||
SET delete_type = 1
|
||||
WHERE delete_type = 0
|
||||
AND id IN
|
||||
<foreach collection="ids" open="(" item="id" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<delete id="deleteBySalaryAcctRecordIds">
|
||||
UPDATE hrsa_salary_acct_sob_config
|
||||
SET delete_type = 1
|
||||
WHERE delete_type = 0
|
||||
AND salary_acct_record_id IN
|
||||
<foreach collection="salaryAcctRecordIds" open="(" item="salaryAcctRecordId" separator="," close=")">
|
||||
#{salaryAcctRecordId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
@ -22,8 +22,6 @@ public interface SalarySobItemGroupMapper {
|
|||
*/
|
||||
List<SalarySobItemGroupPO> listSome(SalarySobItemGroupPO salarySobItemGroup);
|
||||
|
||||
List<SalarySobItemGroupPO> listSomeWithItemHide(SalarySobItemGroupPO build);
|
||||
|
||||
/**
|
||||
* 根据主键查询
|
||||
*
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
, t.creator
|
||||
, t.delete_type
|
||||
, t.tenant_key
|
||||
, t.item_hide
|
||||
</sql>
|
||||
|
||||
<!-- 查询全部 -->
|
||||
|
|
@ -95,33 +96,6 @@
|
|||
|
||||
|
||||
|
||||
<select id="listSomeWithItemHide" resultMap="BaseResultMap"
|
||||
parameterType="com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO">
|
||||
SELECT
|
||||
t
|
||||
.
|
||||
id
|
||||
, t.salary_sob_id
|
||||
, t.name
|
||||
, t.sorted_index
|
||||
, t.description
|
||||
, t.create_time
|
||||
, t.update_time
|
||||
, t.creator
|
||||
, t.delete_type
|
||||
, t.tenant_key
|
||||
, h.item_hide
|
||||
from hrsa_salary_sob_item_group t LEFT JOIN hrsa_salary_item_hide h ON t.id=h.salary_item_id
|
||||
where t.delete_type=0
|
||||
<if test="id != null">
|
||||
AND t.id = #{id}
|
||||
</if>
|
||||
<if test="salarySobId != null">
|
||||
AND t.salary_sob_id = #{salarySobId}
|
||||
</if>
|
||||
ORDER BY id DESC
|
||||
</select>
|
||||
|
||||
|
||||
<!-- 插入不为NULL的字段 -->
|
||||
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO">
|
||||
|
|
@ -158,6 +132,9 @@
|
|||
<if test="tenantKey != null">
|
||||
tenant_key,
|
||||
</if>
|
||||
<if test="itemHide != null">
|
||||
item_hide,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">
|
||||
|
|
@ -190,6 +167,9 @@
|
|||
<if test="tenantKey != null">
|
||||
#{tenantKey},
|
||||
</if>
|
||||
<if test="itemHide != null">
|
||||
#{itemHide},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
|
@ -206,6 +186,7 @@
|
|||
creator=#{creator},
|
||||
delete_type=#{deleteType},
|
||||
tenant_key=#{tenantKey},
|
||||
item_hide=#{itemHide},
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
|
@ -242,6 +223,9 @@
|
|||
<if test="tenantKey != null">
|
||||
tenant_key=#{tenantKey},
|
||||
</if>
|
||||
<if test="itemHide != null">
|
||||
item_hide=#{itemHide},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
|
@ -278,7 +262,7 @@
|
|||
|
||||
<insert id="batchInsert">
|
||||
INSERT INTO hrsa_salary_sob_item_group(id, salary_sob_id, name, sorted_index, description, create_time,
|
||||
update_time, creator, tenant_key)
|
||||
update_time, creator, tenant_key,item_hide)
|
||||
VALUES
|
||||
<foreach collection="collection" item="item" separator=",">
|
||||
(
|
||||
|
|
@ -290,13 +274,14 @@
|
|||
#{item.createTime},
|
||||
#{item.updateTime},
|
||||
#{item.creator},
|
||||
#{item.tenantKey}
|
||||
#{item.tenantKey},
|
||||
#{item.itemHide}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsert" databaseId="oracle">
|
||||
INSERT INTO hrsa_salary_sob_item_group(id, salary_sob_id, name, sorted_index, description, create_time,
|
||||
update_time, creator, tenant_key)
|
||||
update_time, creator, tenant_key,item_hide)
|
||||
|
||||
<foreach collection="collection" item="item" separator="union all">
|
||||
select
|
||||
|
|
@ -308,14 +293,15 @@
|
|||
#{item.createTime,jdbcType=DATE},
|
||||
#{item.updateTime,jdbcType=DATE},
|
||||
#{item.creator,jdbcType=DOUBLE},
|
||||
#{item.tenantKey,jdbcType=VARCHAR}
|
||||
#{item.tenantKey,jdbcType=VARCHAR},
|
||||
#{item.itemHide,jdbcType=VARCHAR}
|
||||
from dual
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsert" databaseId="sqlserver">
|
||||
<foreach collection="collection" item="item" separator=";">
|
||||
INSERT INTO hrsa_salary_sob_item_group(id, salary_sob_id, name, sorted_index, description, create_time,
|
||||
update_time, creator, tenant_key)
|
||||
update_time, creator, tenant_key,item_hide)
|
||||
VALUES
|
||||
(
|
||||
#{item.id},
|
||||
|
|
@ -326,7 +312,8 @@
|
|||
#{item.createTime},
|
||||
#{item.updateTime},
|
||||
#{item.creator},
|
||||
#{item.tenantKey}
|
||||
#{item.tenantKey},
|
||||
#{item.itemHide}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
<result column="update_time" property="updateTime"/>
|
||||
<result column="can_delete" property="canDelete"/>
|
||||
<result column="salary_item_code" property="salaryItemCode"/>
|
||||
<result column="item_hide" property="itemHide"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 表字段 -->
|
||||
|
|
@ -39,6 +40,7 @@
|
|||
, t.rounding_mode
|
||||
, t.pattern
|
||||
, t.value_type
|
||||
, t.item_hide
|
||||
</sql>
|
||||
|
||||
<!-- 查询全部 -->
|
||||
|
|
@ -222,6 +224,9 @@
|
|||
<if test="canDelete != null">
|
||||
can_delete,
|
||||
</if>
|
||||
<if test="itemHide != null">
|
||||
item_hide,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
|
||||
<if test="createTime != null">
|
||||
|
|
@ -261,7 +266,10 @@
|
|||
#{updateTime},
|
||||
</if>
|
||||
<if test="canDelete != null">
|
||||
can_delete,
|
||||
#{canDelete},
|
||||
</if>
|
||||
<if test="itemHide != null">
|
||||
#{itemHide},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
|
@ -285,6 +293,7 @@
|
|||
rounding_mode=#{roundingMode},
|
||||
pattern=#{pattern},
|
||||
value_type=#{valueType},
|
||||
item_hide=#{itemHide},
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
|
@ -339,6 +348,9 @@
|
|||
<if test="valueType != null">
|
||||
value_type=#{valueType},
|
||||
</if>
|
||||
<if test="itemHide != null">
|
||||
item_hide=#{itemHide},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id} AND delete_type = 0
|
||||
</update>
|
||||
|
|
@ -385,7 +397,7 @@
|
|||
|
||||
<insert id="batchInsert">
|
||||
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)
|
||||
sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,salary_item_code,item_hide)
|
||||
VALUES
|
||||
<foreach collection="collection" item="item" separator=",">
|
||||
(
|
||||
|
|
@ -404,13 +416,14 @@
|
|||
#{item.roundingMode},
|
||||
#{item.pattern},
|
||||
#{item.valueType},
|
||||
#{item.salaryItemCode}
|
||||
#{item.salaryItemCode},
|
||||
#{item.itemHide}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsert" databaseId="oracle">
|
||||
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)
|
||||
sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,salary_item_code,item_hide)
|
||||
|
||||
<foreach collection="collection" item="item" separator="union all">
|
||||
select
|
||||
|
|
@ -429,14 +442,15 @@
|
|||
#{item.roundingMode,jdbcType=INTEGER},
|
||||
#{item.pattern,jdbcType=INTEGER},
|
||||
#{item.valueType,jdbcType=INTEGER},
|
||||
#{item.salaryItemCode,jdbcType=INTEGER}
|
||||
#{item.salaryItemCode,jdbcType=INTEGER},
|
||||
#{item.itemHide,jdbcType=DOUBLE}
|
||||
from dual
|
||||
</foreach>
|
||||
</insert>
|
||||
<insert id="batchInsert" databaseId="sqlserver">
|
||||
<foreach collection="collection" item="item" separator=";">
|
||||
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)
|
||||
sorted_index, description, create_time, update_time, creator, delete_type, tenant_key,can_delete,rounding_mode,pattern,value_type,salary_item_code,item_hide)
|
||||
VALUES
|
||||
(
|
||||
#{item.salarySobId},
|
||||
|
|
@ -454,7 +468,8 @@
|
|||
#{item.roundingMode},
|
||||
#{item.pattern},
|
||||
#{item.valueType},
|
||||
#{item.salaryItemCode}
|
||||
#{item.salaryItemCode},
|
||||
#{item.itemHide}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.salary.report.entity.bo;
|
||||
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.cloudstore.eccom.pc.table.WeaTableColumn;
|
||||
|
|
@ -259,8 +260,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] itemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : itemValues) {
|
||||
for (Map<String, String> x : nowDetail) {
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId))) {
|
||||
sumDecimal = sumDecimal.add(new BigDecimal(x.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId)) && NumberUtil.isNumber(x.get(itemId).trim())) {
|
||||
sumDecimal = sumDecimal.add(new BigDecimal(x.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -274,8 +275,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : lastDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
lastSumDecimal = lastSumDecimal.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim())) {
|
||||
lastSumDecimal = lastSumDecimal.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -289,8 +290,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : sameDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
sameSumDecimal = sameSumDecimal.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim())) {
|
||||
sameSumDecimal = sameSumDecimal.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -311,8 +312,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] itemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : itemValues) {
|
||||
for (Map<String, String> x : nowDetail) {
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId))) {
|
||||
avgDecimal = avgDecimal.add(new BigDecimal(x.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId)) && NumberUtil.isNumber(x.get(itemId).trim())) {
|
||||
avgDecimal = avgDecimal.add(new BigDecimal(x.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -327,8 +328,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : lastDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
lastAvgDecimal = lastAvgDecimal.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim())) {
|
||||
lastAvgDecimal = lastAvgDecimal.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -343,8 +344,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : sameDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
sameAvgDecimal = sameAvgDecimal.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim())) {
|
||||
sameAvgDecimal = sameAvgDecimal.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -367,8 +368,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] itemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : itemValues) {
|
||||
for (Map<String, String> x : nowDetail) {
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId))) {
|
||||
decimalList.add(new BigDecimal(x.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId)) && NumberUtil.isNumber(x.get(itemId).trim())) {
|
||||
decimalList.add(new BigDecimal(x.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -384,8 +385,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : lastDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim())) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -400,8 +401,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : sameDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim())) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -424,8 +425,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] itemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : itemValues) {
|
||||
for (Map<String, String> x : nowDetail) {
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId))) {
|
||||
decimalList.add(new BigDecimal(x.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId)) && NumberUtil.isNumber(x.get(itemId).trim())) {
|
||||
decimalList.add(new BigDecimal(x.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -441,8 +442,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : lastDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim()) ) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -457,8 +458,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : sameDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim())) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -481,8 +482,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] itemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : itemValues) {
|
||||
for (Map<String, String> x : nowDetail) {
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId))) {
|
||||
decimalList.add(new BigDecimal(x.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(x) && StringUtils.isNotBlank(x.get(itemId)) && NumberUtil.isNumber(x.get(itemId).trim())) {
|
||||
decimalList.add(new BigDecimal(x.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -498,8 +499,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : lastDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim())) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -514,8 +515,8 @@ public class SalaryStatisticsReportBO {
|
|||
String[] lastItemValues = item.getItemValue().split(COMMA);
|
||||
for (String itemId : lastItemValues) {
|
||||
for (Map<String, String> y : sameDetail) {
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId))) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId)));
|
||||
if (MapUtils.isNotEmpty(y) && StringUtils.isNotBlank(y.get(itemId)) && NumberUtil.isNumber(y.get(itemId).trim())) {
|
||||
decimalList.add(new BigDecimal(y.get(itemId).trim()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@ import com.engine.salary.entity.siarchives.param.InsuranceArchivesSaveParam;
|
|||
import com.engine.salary.entity.siarchives.param.SIArchiveBaseHistoryListParam;
|
||||
import com.engine.salary.entity.siarchives.po.*;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Author weaver_cl
|
||||
|
|
@ -144,7 +144,9 @@ public interface SIArchivesService {
|
|||
|
||||
Map<Long, InsuranceArchivesAccountPO> buildBatchAccount(List<Long> ids, Long paymentOrganization);
|
||||
|
||||
Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString, Integer paymentScope);
|
||||
Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString, Integer paymentScope, StringBuilder errorMsg);
|
||||
|
||||
String adaptWelBaseLimit(Long primaryId, String paymentBaseString, Integer paymentScope);
|
||||
|
||||
String checkAndBuildWelBaseWithLimit(Long primaryId, String paymentBaseString, Integer paymentScope);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,86 @@
|
|||
package com.engine.salary.service;
|
||||
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 薪资核算的账套副本配置
|
||||
* <p>Copyright: Copyright (c) 2024</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
public interface SalaryAcctSobConfigService{
|
||||
|
||||
/**
|
||||
* 根据薪资核算记录id查询薪资核算的账套配置
|
||||
*
|
||||
* @param salaryAcctRecordId
|
||||
* @return
|
||||
*/
|
||||
SalaryAcctSobConfigPO getBySalaryAcctRecordId(Long salaryAcctRecordId);
|
||||
|
||||
/**
|
||||
* 获取账套快照
|
||||
* @param salaryAcctRecordId
|
||||
* @return
|
||||
*/
|
||||
SalaryAcctConfig getSalaryAcctConfig(Long salaryAcctRecordId);
|
||||
|
||||
/**
|
||||
* 根据薪资核算记录id查询薪资核算的账套配置
|
||||
*
|
||||
* @param needInit 倘若当前薪资核算还没有保存账套配置,是否需要初始化一个,此处初始化不会入库
|
||||
* @param salaryAcctRecordId
|
||||
* @return
|
||||
*/
|
||||
SalaryAcctSobConfigPO getBySalaryAcctRecordId(boolean needInit, Long salaryAcctRecordId);
|
||||
|
||||
/**
|
||||
* 薪资核算的账套配置转换成薪资账套的聚合对象
|
||||
*
|
||||
* @param salaryAcctRecordId
|
||||
* @return
|
||||
*/
|
||||
SalarySobItemAggregateDTO getSalarySobItemAggregate(Long salaryAcctRecordId);
|
||||
|
||||
/**
|
||||
* 薪资核算的账套配置转换成薪资账套的聚合对象
|
||||
*
|
||||
* @param salaryAcctRecordId
|
||||
* @return
|
||||
*/
|
||||
SalarySobItemAggregateDTO getSalarySobItemAggregateNoFormula(Long salaryAcctRecordId);
|
||||
|
||||
/**
|
||||
* 初始化薪资核算的账套配置
|
||||
*
|
||||
* @param salaryAcctRecord
|
||||
*/
|
||||
SalaryAcctSobConfigPO initBySalaryAcctRecord(SalaryAcctRecordPO salaryAcctRecord);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param salaryAcctSobConfig
|
||||
*/
|
||||
void save(SalaryAcctSobConfigPO salaryAcctSobConfig);
|
||||
|
||||
/**
|
||||
* 更新薪资核算的账套配置
|
||||
*
|
||||
* @param salaryAcctRecordId
|
||||
*/
|
||||
void updateBySalaryAcctRecordId(Long salaryAcctRecordId);
|
||||
|
||||
/**
|
||||
* 删除薪资核算的账套配置
|
||||
*
|
||||
* @param salaryAcctRecordIds
|
||||
*/
|
||||
void deleteBySalaryAcctRecordIds(Collection<Long> salaryAcctRecordIds);
|
||||
}
|
||||
|
|
@ -31,14 +31,6 @@ public interface SalarySobItemGroupService {
|
|||
*/
|
||||
List<SalarySobItemGroupPO> listBySalarySobId(Long salarySobId);
|
||||
|
||||
/**
|
||||
* 根据薪资账套id查询薪资账套的薪资项目分类带上隐藏信息
|
||||
*
|
||||
* @param salarySobId 薪资账套id
|
||||
* @return
|
||||
*/
|
||||
List<SalarySobItemGroupPO> listBySalarySobIdWithItemHide(Long salarySobId);
|
||||
|
||||
/**
|
||||
* 批量保存
|
||||
*
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.engine.salary.entity.salarysob.po.SalarySobItemHidePO;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
@Deprecated
|
||||
public interface SalarySobItemHideService {
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -36,14 +36,6 @@ public interface SalarySobItemService {
|
|||
*/
|
||||
List<SalarySobItemPO> listBySalarySobId(Long salarySobId);
|
||||
|
||||
/**
|
||||
* 根据薪资账套id查询薪资账套的薪资项目副本(不包括已隐藏的薪资项目列)
|
||||
*
|
||||
* @param salarySobId 薪资账套的id
|
||||
* @return
|
||||
*/
|
||||
List<SalarySobItemPO> listBySalarySobIdWithHideItem(Long salarySobId);
|
||||
|
||||
/**
|
||||
* 根据薪资账套id和薪资项目分类查询薪资账套的薪资项目副本
|
||||
*
|
||||
|
|
@ -92,11 +84,18 @@ public interface SalarySobItemService {
|
|||
SalarySobItemAggregateDTO getAggregateBySalarySobId(Long salarySobId);
|
||||
|
||||
/**
|
||||
* 根据薪资账套id获取薪资账套的薪资项目聚合(员工信息、薪资项目副本、薪资项目分类)(不包含已设置为隐藏的)
|
||||
* @param salarySobId
|
||||
* 根据薪资核算id获取薪资账套的薪资项目聚合(员工信息、薪资项目副本、薪资项目分类)
|
||||
* @param salaryAcctRecordId 核算记录id
|
||||
* @param hideItem true过滤隐藏项目。false显示隐藏项目
|
||||
* @return
|
||||
*/
|
||||
SalarySobItemAggregateDTO getAggregateWithItemHideBySalarySobId(Long salarySobId, boolean isBackCalc);
|
||||
SalarySobItemAggregateDTO getAggregateByRecordId(Long salaryAcctRecordId, boolean hideItem);
|
||||
|
||||
/**
|
||||
* 根据薪资账套id获取薪资账套的薪资项目聚合(员工信息、薪资项目副本、薪资项目分类)(不包含已设置为隐藏的)
|
||||
* @return
|
||||
*/
|
||||
SalarySobItemAggregateDTO getAggregateWithItemHideBySalarySobId(Long salaryAcctRecordId,Long salarySobId, boolean isBackCalc);
|
||||
|
||||
/**
|
||||
* 保存
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import com.engine.core.impl.Service;
|
|||
import com.engine.hrmelog.entity.dto.LoggerContext;
|
||||
import com.engine.salary.biz.SIArchivesBiz;
|
||||
import com.engine.salary.biz.SISchemeBiz;
|
||||
import com.engine.hrmelog.entity.dto.LoggerContext;
|
||||
import com.engine.salary.cmd.siarchives.SIArchivesTipsCmd;
|
||||
import com.engine.salary.common.SalaryContext;
|
||||
import com.engine.salary.config.SalaryElogConfig;
|
||||
|
|
@ -177,6 +178,10 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
return MapperProxyFactory.getProxy(InsuranceBaseAdjustHistoryMapper.class);
|
||||
}
|
||||
|
||||
private ICategoryMapper getICategoryMapper() {
|
||||
return MapperProxyFactory.getProxy(ICategoryMapper.class);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getTips(Map<String, Object> params) {
|
||||
|
|
@ -3036,6 +3041,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
|
||||
String combineErrorMsg = "";
|
||||
if (oldOtherInfoList.size() == 1) {
|
||||
InsuranceArchivesOtherSchemePO oldOtherInfo = oldOtherInfoList.get(0);
|
||||
//设置福利档案基数调整记录数据
|
||||
|
|
@ -3063,17 +3069,40 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
.otherPaymentBaseString(paramReq.getPaymentForm())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求,
|
||||
if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String otherPaymentBaseString = adaptWelBaseLimit(updateOtherInfo.getOtherSchemeId(), updateOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
|
||||
if (otherPaymentBaseString != null) {
|
||||
updateOtherInfo.setOtherPaymentBaseString(otherPaymentBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg = "其他福利个人: " + errorMsg;
|
||||
}
|
||||
}
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
updateOtherInfo.setOtherPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String otherPaymentComBaseString = adaptWelBaseLimit(updateOtherInfo.getOtherSchemeId(), updateOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
|
||||
if (otherPaymentComBaseString != null) {
|
||||
updateOtherInfo.setOtherPaymentComBaseString(otherPaymentComBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg += "其他福利公司:" + errorMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(combineErrorMsg)) {
|
||||
throw new SalaryRunTimeException(combineErrorMsg);
|
||||
}
|
||||
encryptUtil.encrypt(updateOtherInfo, InsuranceArchivesOtherSchemePO.class);
|
||||
getOtherSchemeMapper().updateById(updateOtherInfo);
|
||||
//更新base_info表状态
|
||||
|
|
@ -3111,17 +3140,40 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
.otherPaymentBaseString(paramReq.getPaymentForm())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求,
|
||||
if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String otherPaymentBaseString = adaptWelBaseLimit(insertOtherInfo.getOtherSchemeId(), insertOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
|
||||
if (otherPaymentBaseString != null) {
|
||||
insertOtherInfo.setOtherPaymentBaseString(otherPaymentBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg = "其他福利个人:" + errorMsg;
|
||||
}
|
||||
}
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
insertOtherInfo.setOtherPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String otherPaymentComBaseString = adaptWelBaseLimit(insertOtherInfo.getOtherSchemeId(), insertOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
|
||||
if (otherPaymentComBaseString != null) {
|
||||
insertOtherInfo.setOtherPaymentComBaseString(otherPaymentComBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(insertOtherInfo.getOtherSchemeId(),insertOtherInfo.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg += "其他福利公司:" + errorMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(combineErrorMsg)) {
|
||||
throw new SalaryRunTimeException(combineErrorMsg);
|
||||
}
|
||||
encryptUtil.encrypt(insertOtherInfo, InsuranceArchivesOtherSchemePO.class);
|
||||
getOtherSchemeMapper().insert(insertOtherInfo);
|
||||
|
||||
|
|
@ -3199,6 +3251,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
|
||||
String combineErrorMsg = "";
|
||||
if (oldFundInfoList.size() == 1) {
|
||||
InsuranceArchivesFundSchemePO oldFundInfo = oldFundInfoList.get(0);
|
||||
//设置福利档案基数调整记录数据
|
||||
|
|
@ -3227,17 +3280,43 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
.employeeId(param.getEmployeeId())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求,
|
||||
if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String fundPaymentBaseString = adaptWelBaseLimit(updateFundInfo.getFundSchemeId(), updateFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
|
||||
if (fundPaymentBaseString != null) {
|
||||
updateFundInfo.setFundPaymentBaseString(fundPaymentBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg = "公积金个人" + errorMsg;
|
||||
}
|
||||
}
|
||||
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
updateFundInfo.setFundPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String fundPaymentComBaseString = adaptWelBaseLimit(updateFundInfo.getFundSchemeId(), updateFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
|
||||
if (fundPaymentComBaseString != null) {
|
||||
updateFundInfo.setFundPaymentComBaseString(fundPaymentComBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg += "公积金公司:" + errorMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(combineErrorMsg)) {
|
||||
throw new SalaryRunTimeException(combineErrorMsg);
|
||||
}
|
||||
|
||||
encryptUtil.encrypt(updateFundInfo, InsuranceArchivesFundSchemePO.class);
|
||||
getFundSchemeMapper().updateById(updateFundInfo);
|
||||
//更新base_info表状态
|
||||
|
|
@ -3277,17 +3356,41 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
.employeeId(param.getEmployeeId())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求,
|
||||
if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String fundPaymentBaseString = adaptWelBaseLimit(insertFundInfo.getFundSchemeId(), insertFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
|
||||
if (fundPaymentBaseString != null) {
|
||||
insertFundInfo.setFundPaymentBaseString(fundPaymentBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg = "公积金个人:" + errorMsg;
|
||||
}
|
||||
}
|
||||
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
insertFundInfo.setFundPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String fundPaymentComBaseString = adaptWelBaseLimit(insertFundInfo.getFundSchemeId(), insertFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
|
||||
if (fundPaymentComBaseString != null) {
|
||||
insertFundInfo.setFundPaymentComBaseString(fundPaymentComBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(insertFundInfo.getFundSchemeId(),insertFundInfo.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg += "公积金公司:" + errorMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(combineErrorMsg)) {
|
||||
throw new SalaryRunTimeException(combineErrorMsg);
|
||||
}
|
||||
encryptUtil.encrypt(insertFundInfo, InsuranceArchivesFundSchemePO.class);
|
||||
getFundSchemeMapper().insert(insertFundInfo);
|
||||
|
||||
|
|
@ -3367,6 +3470,8 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
.employeeId(param.getEmployeeId())
|
||||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
|
||||
String combineErrorMsg = "";
|
||||
//组装新数据
|
||||
if (oldSocialInfoList.size() == 1) {
|
||||
//老数据
|
||||
|
|
@ -3397,17 +3502,42 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String socialPaymentBaseString = adaptWelBaseLimit(updateSocialInfo.getSocialSchemeId(), updateSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
|
||||
if (socialPaymentBaseString != null) {
|
||||
updateSocialInfo.setSocialPaymentBaseString(socialPaymentBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg = "社保个人:" + errorMsg;
|
||||
}
|
||||
}
|
||||
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
updateSocialInfo.setSocialPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String socialPaymentComBaseString = adaptWelBaseLimit(updateSocialInfo.getSocialSchemeId(), updateSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
|
||||
if (socialPaymentComBaseString != null) {
|
||||
updateSocialInfo.setSocialPaymentComBaseString(socialPaymentComBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg += "社保公司:" + errorMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (StringUtils.isNotBlank(combineErrorMsg)) {
|
||||
throw new SalaryRunTimeException(combineErrorMsg);
|
||||
}
|
||||
encryptUtil.encrypt(updateSocialInfo, InsuranceArchivesSocialSchemePO.class);
|
||||
getSocialSchemeMapper().updateById(updateSocialInfo);
|
||||
//更新base_info表状态
|
||||
|
|
@ -3447,17 +3577,40 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
.paymentOrganization(param.getPaymentOrganization())
|
||||
.build();
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String socialPaymentBaseString = adaptWelBaseLimit(insertSocialInfo.getSocialSchemeId(), insertSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
|
||||
if (socialPaymentBaseString != null) {
|
||||
insertSocialInfo.setSocialPaymentBaseString(socialPaymentBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg)) {
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
combineErrorMsg = "社保个人:" + errorMsg;
|
||||
}
|
||||
}
|
||||
//需要拆分个人和公司福利基数时
|
||||
if (welBaseDiffSign) {
|
||||
insertSocialInfo.setSocialPaymentComBaseString(paramReq.getPaymentComForm());
|
||||
//校验福利基数是否符合上下限要求
|
||||
if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
if (paramReq.getChangeData() != null && paramReq.getChangeData()) {
|
||||
// 将不满足上下限基数修改为上限或下限
|
||||
String socialPaymentComBaseString = adaptWelBaseLimit(insertSocialInfo.getSocialSchemeId(), insertSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
|
||||
if (socialPaymentComBaseString != null) {
|
||||
insertSocialInfo.setSocialPaymentComBaseString(socialPaymentComBaseString);
|
||||
}
|
||||
} else {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
if (!checkWelBaseLimit(insertSocialInfo.getSocialSchemeId(),insertSocialInfo.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg)) {
|
||||
combineErrorMsg += "社保公司:" + errorMsg;
|
||||
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(combineErrorMsg)) {
|
||||
throw new SalaryRunTimeException(combineErrorMsg);
|
||||
}
|
||||
encryptUtil.encrypt(insertSocialInfo, InsuranceArchivesSocialSchemePO.class);
|
||||
getSocialSchemeMapper().insert(insertSocialInfo);
|
||||
|
||||
|
|
@ -3509,7 +3662,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString, Integer paymentScope) {
|
||||
public Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString, Integer paymentScope, StringBuilder errorMsg) {
|
||||
|
||||
if (primaryId ==null || paymentBaseString == null) {
|
||||
return true;
|
||||
|
|
@ -3518,23 +3671,28 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
if (paymentBaseJson == null) {
|
||||
return true;
|
||||
}
|
||||
List<ICategoryPO> iCategoryPOS = getICategoryMapper().listAll();
|
||||
Map<String, String> categoryMap = SalaryEntityUtil.convert2Map(iCategoryPOS, po -> po.getId().toString(), ICategoryPO::getInsuranceName);
|
||||
|
||||
Boolean flag = true;
|
||||
for (Map.Entry<String, String> entry : paymentBaseJson.entrySet()) {
|
||||
|
||||
//判断福利值是否为空/数字
|
||||
if (entry.getValue() == null || entry.getValue().length() == 0) {
|
||||
continue;
|
||||
} else if (!isNumeric(entry.getValue())) {
|
||||
errorMsg.append("福利值非数字");
|
||||
log.info("福利值非数字!");
|
||||
return false;
|
||||
flag = false;
|
||||
}
|
||||
|
||||
//根据福利方案id、险种id、缴纳对象、缴费状态查询明细
|
||||
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOList = getInsuranceSchemeDetailMapper().getByPI(primaryId, Long.valueOf(entry.getKey()));
|
||||
log.info("福利方案id: {},, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey()));
|
||||
if (insuranceSchemeDetailPOList.size() == 0) {
|
||||
errorMsg.append("根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: " + primaryId + ", 福利明细项id:" + Long.valueOf(entry.getKey()) + ";");
|
||||
log.info("根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: {}, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey()));
|
||||
return false;
|
||||
flag = false;
|
||||
}
|
||||
List<InsuranceSchemeDetailPO> isPaymentList = insuranceSchemeDetailPOList.stream()
|
||||
.filter(f -> f.getIsPayment().equals(IsPaymentEnum.YES.getValue()) && f.getPaymentScope().equals(paymentScope)).collect(Collectors.toList());
|
||||
|
|
@ -3546,13 +3704,15 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
String upperLimit = "0.000".equals(insuranceSchemeDetailPO.getUpperLimit()) ? null : insuranceSchemeDetailPO.getUpperLimit();
|
||||
if (lowerLimit != null && lowerLimit.length() > 0 && Double.parseDouble(entry.getValue()) < Double.parseDouble(lowerLimit)) {
|
||||
//数值低于对应福利明细下限
|
||||
errorMsg.append("【"+ categoryMap.getOrDefault(entry.getKey(), "") + "】数值: " + entry.getValue() +",低于对应福利明细下限: " + lowerLimit+ "\n");
|
||||
log.info("社保基数 {} 数值 {} 低于对应福利明细下限 {}!", entry.getKey(), entry.getValue(), lowerLimit);
|
||||
return false;
|
||||
flag = false;
|
||||
}
|
||||
if (upperLimit != null && upperLimit.length() > 0 && Double.parseDouble(entry.getValue()) > Double.parseDouble(upperLimit)) {
|
||||
//数值高于对应福利明细上限
|
||||
errorMsg.append("【"+ categoryMap.getOrDefault(entry.getKey(), "") + "】数值: " + entry.getValue() +",高于对应福利明细上限: " + upperLimit+ "\n");
|
||||
log.info("社保基数 {} 数值 {} 高于对应福利明细上限 {} !", entry.getKey(), entry.getValue(), upperLimit);
|
||||
return false;
|
||||
flag = false;
|
||||
}
|
||||
} else {
|
||||
log.info("福利明细项属于未缴费状态,不对上下限进行约束");
|
||||
|
|
@ -3560,7 +3720,67 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
|
|||
|
||||
|
||||
}
|
||||
return true;
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验福利基数是否符合上下限要求
|
||||
* @param primaryId
|
||||
* @param paymentBaseString
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String adaptWelBaseLimit(Long primaryId, String paymentBaseString, Integer paymentScope) {
|
||||
|
||||
if (primaryId ==null || paymentBaseString == null) {
|
||||
return null;
|
||||
}
|
||||
Map<String, String> paymentBaseJson = JSON.parseObject(paymentBaseString, new HashMap<String, String>().getClass());
|
||||
if (paymentBaseJson == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
for (Map.Entry<String, String> entry : paymentBaseJson.entrySet()) {
|
||||
|
||||
//判断福利值是否为空/数字
|
||||
if (entry.getValue() == null || entry.getValue().length() == 0) {
|
||||
continue;
|
||||
} else if (!isNumeric(entry.getValue())) {
|
||||
log.info("福利值非数字!");
|
||||
throw new SalaryRunTimeException("福利值非数字");
|
||||
}
|
||||
|
||||
//根据福利方案id、险种id、缴纳对象、缴费状态查询明细
|
||||
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOList = getInsuranceSchemeDetailMapper().getByPI(primaryId, Long.valueOf(entry.getKey()));
|
||||
log.info("福利方案id: {},, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey()));
|
||||
if (insuranceSchemeDetailPOList.size() == 0) {
|
||||
log.info("根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: {}, 福利明细项id:{}", primaryId, Long.valueOf(entry.getKey()));
|
||||
throw new SalaryRunTimeException("根据福利方案id、险种id、缴纳对象查询明细为null!福利方案id: "+primaryId+", 福利明细项id:{}"+ Long.valueOf(entry.getKey()));
|
||||
}
|
||||
List<InsuranceSchemeDetailPO> isPaymentList = insuranceSchemeDetailPOList.stream()
|
||||
.filter(f -> f.getIsPayment().equals(IsPaymentEnum.YES.getValue()) && f.getPaymentScope().equals(paymentScope)).collect(Collectors.toList());
|
||||
if (isPaymentList.size() > 0) {
|
||||
InsuranceSchemeDetailPO insuranceSchemeDetailPO = isPaymentList.get(0);
|
||||
|
||||
encryptUtil.decrypt(insuranceSchemeDetailPO, InsuranceSchemeDetailPO.class);
|
||||
String lowerLimit = "0.000".equals(insuranceSchemeDetailPO.getLowerLimit()) ? null : insuranceSchemeDetailPO.getLowerLimit();
|
||||
String upperLimit = "0.000".equals(insuranceSchemeDetailPO.getUpperLimit()) ? null : insuranceSchemeDetailPO.getUpperLimit();
|
||||
if (lowerLimit != null && lowerLimit.length() > 0 && Double.parseDouble(entry.getValue()) < Double.parseDouble(lowerLimit)) {
|
||||
//数值低于对应福利明细下限
|
||||
entry.setValue(lowerLimit);
|
||||
}
|
||||
if (upperLimit != null && upperLimit.length() > 0 && Double.parseDouble(entry.getValue()) > Double.parseDouble(upperLimit)) {
|
||||
//数值高于对应福利明细上限
|
||||
entry.setValue(upperLimit);
|
||||
}
|
||||
} else {
|
||||
log.info("福利明细项属于未缴费状态,不对上下限进行约束");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return JSON.toJSONString(paymentBaseJson);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1451,24 +1451,25 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
|
|||
boolean welBaseAutoAdjustSign = welBaseAutoAdjust != null && welBaseAutoAdjust.getConfValue().equals(OpenEnum.OPEN.getValue());
|
||||
|
||||
if (!isError && !welBaseAutoAdjustSign) {
|
||||
StringBuilder errorMsg = new StringBuilder("");
|
||||
insuranceArchivesAccountPO.setSocial(insuranceArchivesSocialSchemePO);
|
||||
insuranceArchivesAccountPO.setFund(insuranceArchivesFundSchemePO);
|
||||
insuranceArchivesAccountPO.setOther(insuranceArchivesOtherSchemePO);
|
||||
insuranceArchivesAccountPO.setBaseInfo(insuranceArchivesBaseInfoPO);
|
||||
//校验福利基数是否符合上下限要求,
|
||||
Boolean socialCheckBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
|
||||
Boolean socialCheckBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg);
|
||||
|
||||
Boolean fundCheckBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
|
||||
Boolean fundCheckBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg);
|
||||
|
||||
Boolean otherCheckBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
|
||||
Boolean otherCheckBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue(), errorMsg);
|
||||
|
||||
Boolean socialCheckComBase = true;
|
||||
Boolean fundCheckComBase = true;
|
||||
Boolean otherCheckComBase = true;
|
||||
if (welBaseDiffSign) {
|
||||
socialCheckComBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
|
||||
fundCheckComBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
|
||||
otherCheckComBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
|
||||
socialCheckComBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg);
|
||||
fundCheckComBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg);
|
||||
otherCheckComBase = getSIArchivesService(user).checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue(), errorMsg);
|
||||
}
|
||||
if (socialCheckBase && fundCheckBase && otherCheckBase && socialCheckComBase && fundCheckComBase && otherCheckComBase) {
|
||||
insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
|||
import com.engine.salary.constant.SalaryItemConstant;
|
||||
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
||||
import com.engine.salary.entity.report.po.SalaryAcctResultReportPO;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultLogBO;
|
||||
|
|
@ -158,13 +159,17 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
return ServiceUtil.getService(SalaryAcctResultTemplateServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XSSFWorkbook exportSalaryAcctEmployee(SalaryAcctEmployeeQueryParam queryParam) {
|
||||
ValidUtil.doValidator(queryParam);
|
||||
|
||||
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId());
|
||||
if (salaryAcctRecordPO == null) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0,"薪资核算记录不存在或已被删除"));
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "薪资核算记录不存在或已被删除"));
|
||||
}
|
||||
// 1.工作簿名称
|
||||
String sheetName = SalaryI18nUtil.getI18nLabel(85368, "核算人员范围");
|
||||
|
|
@ -431,7 +436,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
SalaryI18nUtil.getI18nLabel(0, "导出薪资核算结果"),
|
||||
SalaryI18nUtil.getI18nLabel(0, "导出薪资核算结果") + ":" + targetName,
|
||||
user
|
||||
);
|
||||
);
|
||||
|
||||
|
||||
String sheetName = "薪资核算结果";
|
||||
|
|
@ -451,7 +456,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
SalaryAcctRecordPO byId = getSalaryAcctRecordService(user).getById(salaryAcctRecordPO.getId());
|
||||
boolean isBackCalc = Objects.equals(byId.getBackCalcStatus(), 1);
|
||||
// 查询薪资账套下的薪资项目+员工信息字段
|
||||
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getSalarySobId(), isBackCalc);
|
||||
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateWithItemHideBySalarySobId(salaryAcctRecordPO.getId(),salaryAcctRecordPO.getSalarySobId(), isBackCalc);
|
||||
// 构建薪资核算结果列表表头
|
||||
List<WeaTableColumnGroup> columnList = SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO, ListUtils.emptyIfNull(salaryAcctRecordPO.getLockSalaryItemIds()));
|
||||
// 获取固定列头数
|
||||
|
|
@ -504,8 +509,11 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
if (Objects.isNull(salaryAcctRecordPO)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
|
||||
}
|
||||
|
||||
SalaryAcctConfig config = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(salaryAcctRecordId);
|
||||
|
||||
// 查询薪资核算记录所用的薪资账套的薪资项目副本
|
||||
List<SalarySobItemPO> salarySobItems = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobItemPO> salarySobItems = config.getSalarySobItems();
|
||||
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId);
|
||||
// 查询薪资项目
|
||||
List<SalaryItemPO> salaryItems = getSalaryItemService(user).listByIds(salaryItemIds);
|
||||
|
|
@ -514,7 +522,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
Map<Long, List<SalarySobItemPO>> salarySobItemPOMap = SalaryEntityUtil.group2Map(salarySobItems, SalarySobItemPO::getSalarySobItemGroupId);
|
||||
|
||||
// 查询薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = config.getSalarySobItemGroups();
|
||||
// 对分组进行排序
|
||||
salarySobItemGroupPOS = SalaryAcctResultBO.sortGroup(salarySobItemGroupPOS);
|
||||
// 对分组内薪资项目排序
|
||||
|
|
@ -595,8 +603,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
if (Objects.isNull(salaryAcctRecordPO)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
|
||||
}
|
||||
SalaryAcctConfig salaryAcctConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(salaryAcctRecordId);
|
||||
|
||||
// 查询薪资核算记录所用的薪资账套的薪资项目副本
|
||||
List<SalarySobItemPO> salarySobItems = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobItemPO> salarySobItems = salaryAcctConfig.getSalarySobItems();
|
||||
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId);
|
||||
// 查询薪资项目
|
||||
List<SalaryItemPO> salaryItems = getSalaryItemService(user).listByIds(salaryItemIds);
|
||||
|
|
@ -605,7 +615,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
Map<Long, List<SalarySobItemPO>> salarySobItemPOMap = SalaryEntityUtil.group2Map(salarySobItems, SalarySobItemPO::getSalarySobItemGroupId);
|
||||
|
||||
// 查询薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = salaryAcctConfig.getSalarySobItemGroups();
|
||||
// 对分组进行排序
|
||||
salarySobItemGroupPOS = SalaryAcctResultBO.sortGroup(salarySobItemGroupPOS);
|
||||
// 对分组内薪资项目排序
|
||||
|
|
@ -875,7 +885,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
// headerList.add("手机号");
|
||||
// headerList.add("工号");
|
||||
// 查询薪资账套下的薪资项目
|
||||
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(exportParam.getSalaryAcctRecordId(),true);
|
||||
|
||||
// // 员工信息
|
||||
// for (SalarySobEmpFieldDTO item : salarySobItemAggregateDTO.getEmpFields()) {
|
||||
|
|
@ -1352,7 +1362,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
List<SalaryAcctResultPO> list4log = new ArrayList<>();
|
||||
salaryAcctResults.stream().forEach(source -> {
|
||||
SalaryAcctResultPO target = new SalaryAcctResultPO();
|
||||
BeanUtils.copyProperties(source,target);
|
||||
BeanUtils.copyProperties(source, target);
|
||||
list4log.add(target);
|
||||
});
|
||||
getSalaryAcctResultService(user).batchSave(salaryAcctResults);
|
||||
|
|
@ -1365,8 +1375,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
loggerContext.setTargetId(param.getSalaryAcctRecordId().toString());
|
||||
loggerContext.setTargetName(targetName);
|
||||
loggerContext.setOperateType(OperateTypeEnum.EXCEL_IMPORT.getValue());
|
||||
loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "导入薪资核算数据"));
|
||||
loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "导入薪资核算数据 ") + targetName);
|
||||
loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "导入薪资核算数据"));
|
||||
loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "导入薪资核算数据 ") + targetName);
|
||||
loggerContext.setOldValueList(list4log);
|
||||
SalaryElogConfig.salaryAcctRecordLoggerTemplate.write(loggerContext);
|
||||
|
||||
|
|
@ -1442,6 +1452,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
|
||||
/**
|
||||
* 保存导出模板
|
||||
*
|
||||
* @param saveParam
|
||||
*/
|
||||
@Override
|
||||
|
|
@ -1508,7 +1519,7 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
@Override
|
||||
public Map<String, Object> exportTemplateList(SalaryAcctResultTemplateSaveParam param) {
|
||||
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId());
|
||||
if (salaryAcctRecordPO == null){
|
||||
if (salaryAcctRecordPO == null) {
|
||||
throw new SalaryRunTimeException("薪资核算记录为空");
|
||||
}
|
||||
List<SalaryAcctResultTemplatePO> salaryAcctResultTemplatePOS = getSalaryAcctResultTemplateService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ import com.engine.salary.entity.salarysob.po.*;
|
|||
import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO;
|
||||
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
||||
import com.engine.salary.enums.OperateTypeEnum;
|
||||
import com.engine.salary.enums.SalaryValueTypeEnum;
|
||||
import com.engine.salary.enums.UserStatusEnum;
|
||||
import com.engine.salary.enums.common.FilterEnum;
|
||||
import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
|
||||
|
|
@ -56,7 +55,6 @@ import com.engine.salary.util.page.SalaryPageUtil;
|
|||
import com.engine.salary.util.valid.ValidUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.weaver.util.threadPool.ThreadPoolUtil;
|
||||
import com.weaver.util.threadPool.constant.ModulePoolEnum;
|
||||
import com.weaver.util.threadPool.entity.LocalRunnable;
|
||||
|
|
@ -195,9 +193,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
return ServiceUtil.getService(TaxAgentAdminServiceImpl.class, user);
|
||||
}
|
||||
|
||||
|
||||
private SalaryCheckResultService salaryCheckResultService;
|
||||
|
||||
private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalaryAcctResultPO> listBySalaryAcctRecordIds(Collection<Long> salaryAcctRecordIds) {
|
||||
if (CollectionUtils.isEmpty(salaryAcctRecordIds)) {
|
||||
|
|
@ -253,31 +254,23 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98831, "薪资核算人员不存在或已被删除"));
|
||||
}
|
||||
// 查询是否是回算
|
||||
SalaryAcctRecordPO byId = getSalaryAcctRecordService(user).getById(salaryAcctEmployeePO.getSalaryAcctRecordId());
|
||||
boolean isBackCal = Objects.equals(byId.getBackCalcStatus(), 1);
|
||||
//----------------------------------------------
|
||||
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctEmployeePO.getSalaryAcctRecordId());
|
||||
boolean isBackCal = Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), 1);
|
||||
|
||||
SalaryAcctConfig salaryAcctConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(salaryAcctRecordPO.getId());
|
||||
// 查询薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salaryAcctEmployeePO.getSalarySobId());
|
||||
// 获取关闭显示的分类
|
||||
List<Long> hideGroupIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salaryAcctEmployeePO.getSalarySobId()).isGroup(1).build());
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = salaryAcctConfig.getSalarySobItemGroups();
|
||||
// 过滤关闭显示的薪资项目分类
|
||||
salarySobItemGroupPOS = salarySobItemGroupPOS.stream().filter(group -> !(hideGroupIDs.contains(group.getId()))).collect(Collectors.toList());
|
||||
salarySobItemGroupPOS = salarySobItemGroupPOS.stream().filter(group -> group.getItemHide() == null || group.getItemHide().equals(0L)).collect(Collectors.toList());
|
||||
// 获取薪资项目分类ID
|
||||
List<Long> salarySobItemGroupIds = salarySobItemGroupPOS.stream().map(SalarySobItemGroupPO::getId).collect(Collectors.toList());
|
||||
//加上未分类
|
||||
salarySobItemGroupIds.add(0L);
|
||||
|
||||
// 查询薪资账套的薪资项目副本(已经过滤关闭分类显示按钮的薪资项目)
|
||||
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobIdAndGroupId(salaryAcctEmployeePO.getSalarySobId(), salarySobItemGroupIds);
|
||||
//----------------------------------------------
|
||||
|
||||
// 查询薪资核算所用薪资账套的薪资项目副本
|
||||
// List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctEmployeePO.getSalarySobId());
|
||||
// 获取关闭显示的薪资项目
|
||||
List<Long> hideItemIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salaryAcctEmployeePO.getSalarySobId()).isGroup(0).build());
|
||||
List<SalarySobItemPO> salarySobItemPOS = salaryAcctConfig.getSalarySobItems();
|
||||
// 过滤薪资项目
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(item -> !(hideItemIDs.contains(item.getSalaryItemId()))).collect(Collectors.toList());
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(item -> item.getItemHide() == null || item.getItemHide().equals(0L)).collect(Collectors.toList());
|
||||
|
||||
// 查询已发补发薪资项目
|
||||
List<SalarySobBackItemPO> salarySobBackItemPOList = Collections.emptyList();
|
||||
|
|
@ -285,7 +278,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
// key:账套中回算薪资项目的薪资项目id value:账套中回算薪资项目所对应的公式内容
|
||||
Map<Long, String> salaryBackItemFormula = new HashMap<>();
|
||||
if (isBackCal) {
|
||||
salarySobBackItemPOList = getSalarySobBackItemService(user).listBySalarySobId(byId.getSalarySobId());
|
||||
salarySobBackItemPOList = salaryAcctConfig.getSalarySobBackItems();
|
||||
Set<Long> salarySobBackItemIds = SalaryEntityUtil.properties(salarySobBackItemPOList, SalarySobBackItemPO::getSalaryItemId);
|
||||
salaryBackItemPOS = getSalaryItemService(user).listByIds(salarySobBackItemIds);
|
||||
// 查询薪资账套中已发补发的公式内容
|
||||
|
|
@ -301,7 +294,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
||||
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds);
|
||||
// 查询薪资核算所用薪资账套的人员信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctEmployeePO.getSalarySobId());
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = salaryAcctConfig.getSalarySobEmpFields();
|
||||
// 查询人员信息
|
||||
DataCollectionEmployee simpleEmployee = getSalaryEmployeeService(user).getEmployeeById(salaryAcctEmployeePO.getEmployeeId());
|
||||
// 查询薪资核算结果
|
||||
|
|
@ -310,7 +303,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
TaxAgentPO taxAgent = getTaxAgentService(user).getById(salaryAcctEmployeePO.getTaxAgentId());
|
||||
// 查询公式
|
||||
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap = getSalaryAcctResultService(user).getColumnBySalaryAcctRecordId(salaryAcctEmployeePO.getSalaryAcctRecordId());
|
||||
List<Long> lockItems = byId.getLockSalaryItemIds() == null ? Collections.emptyList() : byId.getLockSalaryItemIds();
|
||||
List<Long> lockItems = salaryAcctRecordPO.getLockSalaryItemIds() == null ? Collections.emptyList() : salaryAcctRecordPO.getLockSalaryItemIds();
|
||||
|
||||
// 转换成薪资核算结果详情dto
|
||||
return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap, lockItems);
|
||||
|
|
@ -443,10 +436,13 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
|
||||
}
|
||||
boolean isBackCalc = Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), 1);
|
||||
|
||||
SalaryAcctConfig salaryAcctConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(queryParam.getSalaryAcctRecordId());
|
||||
|
||||
// 查询薪资核算所用的薪资账套的员工信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = salaryAcctConfig.getSalarySobEmpFields();
|
||||
// 查询薪资核算所用薪资账套的薪资项目
|
||||
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobItemPO> salarySobItemPOS = salaryAcctConfig.getSalarySobItems();
|
||||
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
||||
// 是否是回算
|
||||
List<SalarySobBackItemPO> salarySobBackItemPOList = Collections.emptyList();
|
||||
|
|
@ -565,7 +561,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
}
|
||||
Map<String, SalaryAcctResultListColumnDTO> resultMap = Maps.newHashMap();
|
||||
// 查询薪资核算使用的薪资账套下的薪资项目
|
||||
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateByRecordId(salaryAcctRecordId,true);
|
||||
for (SalarySobItemIncomeCategoryDTO incomeCategoryDTO : salarySobItemAggregateDTO.getIncomeCategories()) {
|
||||
for (SalarySobItemGroupDTO salarySobItemGroupDTO : incomeCategoryDTO.getItemGroups()) {
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) {
|
||||
|
|
@ -741,6 +737,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
if (Objects.isNull(salarySobPO)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资账套不存在或已被删除"));
|
||||
}
|
||||
|
||||
// 不是查询薪资账套下实时的薪资项目,而是查询发起薪资核算时存储的薪资项目快照
|
||||
SalaryAcctConfig salaryAcctSobConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(calculateParam.getSalaryAcctRecordId());
|
||||
|
||||
// 1.1、如果薪资核算记录已经归档了,就不能继续核算
|
||||
if (!Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99148, "当前薪资核算记录已归档,请重新打开后再进行核算"));
|
||||
|
|
@ -748,14 +748,14 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
// 2、查询薪资核算记录的薪资周期、考勤周期等
|
||||
SalarySobCycleDTO salarySobCycleDTO = getSalaryAcctRecordService(user).getSalarySobCycleById(calculateParam.getSalaryAcctRecordId());
|
||||
// 3、查询薪资核算记录所用薪资账套的薪资项目副本
|
||||
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobItemPO> salarySobItemPOS = salaryAcctSobConfig.getSalarySobItems();
|
||||
if (CollectionUtils.isEmpty(salarySobItemPOS)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99151, "当前所用的薪资账套未选择任何薪资项目,无法核算"));
|
||||
}
|
||||
// 回算薪资项目
|
||||
List<SalarySobBackItemPO> salarySobBackItems = Collections.emptyList();
|
||||
if (Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), 1)) {
|
||||
salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
salarySobBackItems = salaryAcctSobConfig.getSalarySobBackItems();
|
||||
}
|
||||
// 4、查询当前租户的所有薪资项目
|
||||
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listAll();
|
||||
|
|
@ -1032,18 +1032,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
if (CollectionUtils.isEmpty(salaryAcctEmployees)) {
|
||||
return;
|
||||
}
|
||||
// 查询薪资核算结果
|
||||
// List<Long> salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployees, SalaryAcctEmployeePO::getId,Collectors.toList());
|
||||
// List<SalaryAcctResultPO> salaryAcctResultValues = this.listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds);
|
||||
// Map<Long, SalaryAcctResultPO> salaryAcctResultValueMap = SalaryEntityUtil.convert2Map(salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId);
|
||||
// 值可以锁定的薪资项目
|
||||
// Set<Long> salaryItemIds = canLockSalaryItemIds(salaryAcctRecord.getSalarySobId());
|
||||
// if (Objects.nonNull(updateParam.getSalaryItemId())) {
|
||||
// if (!salaryItemIds.contains(updateParam.getSalaryItemId())) {
|
||||
// return;
|
||||
// }
|
||||
// salaryItemIds = Collections.singleton(updateParam.getSalaryItemId());
|
||||
// }
|
||||
|
||||
Set<Long> salaryItemIds;
|
||||
if (CollectionUtils.isNotEmpty(updateParam.getSalaryItemIds())) {
|
||||
|
|
@ -1123,30 +1111,6 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
return result;
|
||||
}
|
||||
|
||||
private Set<Long> canLockSalaryItemIds(Long salarySobId) {
|
||||
// 值可以锁定的薪资项目
|
||||
Set<Long> salaryItemIds = Sets.newHashSet();
|
||||
// 查询薪资核算记录所用的薪资账套的薪资项目
|
||||
List<SalarySobItemDTO> salarySobItems = Lists.newArrayList();
|
||||
SalarySobItemAggregateDTO salarySobItemAggregate = getSalarySobItemService(user).getAggregateBySalarySobId(salarySobId);
|
||||
for (SalarySobItemIncomeCategoryDTO incomeCategory : salarySobItemAggregate.getIncomeCategories()) {
|
||||
for (SalarySobItemGroupDTO itemGroup : incomeCategory.getItemGroups()) {
|
||||
salarySobItems.addAll(itemGroup.getItems());
|
||||
}
|
||||
salarySobItems.addAll(incomeCategory.getItems());
|
||||
}
|
||||
for (SalarySobItemDTO salarySobItem : salarySobItems) {
|
||||
if (Objects.equals(salarySobItem.getValueType(), SalaryValueTypeEnum.FORMULA.getValue()) && salarySobItem.isCanEdit()) {
|
||||
salaryItemIds.add(salarySobItem.getSalaryItemId());
|
||||
}
|
||||
}
|
||||
// for (SalarySobItemDTO backCalcItem : salarySobItemAggregate.getBackCalcItems()) {
|
||||
// if (Objects.equals(backCalcItem.getValueType(), SalaryValueTypeEnum.FORMULA.getValue()) && backCalcItem.isCanEdit()) {
|
||||
// salaryItemIds.add(backCalcItem.getSalaryItemId());
|
||||
// }
|
||||
// }
|
||||
return salaryItemIds;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean checkAuth(Long salaryAcctRecordId) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,188 @@
|
|||
package com.engine.salary.service.impl;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.cache.SalaryCacheKey;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO;
|
||||
import com.engine.salary.entity.salaryformula.ExpressFormula;
|
||||
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
||||
import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
||||
import com.engine.salary.entity.salarysob.po.*;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.salaryacct.SalaryAcctSobConfigMapper;
|
||||
import com.engine.salary.service.*;
|
||||
import com.engine.salary.util.JsonUtil;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.db.MapperProxyFactory;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 薪资核算的账套副本配置
|
||||
* <p>Copyright: Copyright (c) 2024</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
public class SalaryAcctSobConfigServiceImpl extends Service implements SalaryAcctSobConfigService {
|
||||
|
||||
private SalaryAcctSobConfigMapper getSalaryAcctSobConfigMapper() {
|
||||
return MapperProxyFactory.getProxy(SalaryAcctSobConfigMapper.class);
|
||||
}
|
||||
|
||||
private SalaryFormulaService getSalaryFormulaService(User user) {
|
||||
return ServiceUtil.getService(SalaryFormulaServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryItemService getSalaryItemService(User user) {
|
||||
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobService getSalarySobService(User user) {
|
||||
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) {
|
||||
return ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobItemGroupService getSalarySobItemGroupService(User user) {
|
||||
return ServiceUtil.getService(SalarySobItemGroupServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobItemService getSalarySobItemService(User user) {
|
||||
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobBackItemService getSalarySobBackItemService(User user) {
|
||||
return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobAdjustRuleService getSalarySobAdjustRuleService(User user) {
|
||||
return ServiceUtil.getService(SalarySobAdjustRuleServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobCheckRuleService salarySobCheckRuleService;
|
||||
|
||||
private SalaryCacheService getSalaryCacheService(User user) {
|
||||
return ServiceUtil.getService(SalaryCacheServiceImpl.class, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalaryAcctSobConfigPO getBySalaryAcctRecordId(Long salaryAcctRecordId) {
|
||||
return getBySalaryAcctRecordId(true, salaryAcctRecordId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalaryAcctConfig getSalaryAcctConfig(Long salaryAcctRecordId) {
|
||||
SalaryAcctSobConfigPO po = getBySalaryAcctRecordId(true, salaryAcctRecordId);
|
||||
return SalaryAcctConfig.parse(po);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalaryAcctSobConfigPO getBySalaryAcctRecordId(boolean needInit, Long salaryAcctRecordId) {
|
||||
SalaryAcctSobConfigPO salaryAcctSobConfig = getSalaryAcctSobConfigMapper().getBySalaryAcctRecordId(salaryAcctRecordId);
|
||||
if (Objects.nonNull(salaryAcctSobConfig)) {
|
||||
return salaryAcctSobConfig;
|
||||
}
|
||||
// 查询薪资核算记录
|
||||
SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryAcctRecordId);
|
||||
// 初始化薪资核算记录的列配置
|
||||
if (needInit) {
|
||||
salaryAcctSobConfig = initBySalaryAcctRecord(salaryAcctRecord);
|
||||
}
|
||||
return salaryAcctSobConfig;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalarySobItemAggregateDTO getSalarySobItemAggregate(Long salaryAcctRecordId) {
|
||||
return getSalarySobItemAggregate(true, salaryAcctRecordId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalarySobItemAggregateDTO getSalarySobItemAggregateNoFormula(Long salaryAcctRecordId) {
|
||||
return getSalarySobItemAggregate(false, salaryAcctRecordId);
|
||||
}
|
||||
|
||||
private SalarySobItemAggregateDTO getSalarySobItemAggregate(boolean needFormula, Long salaryAcctRecordId) {
|
||||
// 查询薪资核算
|
||||
SalaryAcctSobConfigPO salaryAcctSobConfig = getBySalaryAcctRecordId(salaryAcctRecordId);
|
||||
// 薪资账套的基本信息
|
||||
SalarySobPO salarySob = JsonUtil.parseObject(salaryAcctSobConfig.getBasicConfig(), SalarySobPO.class);
|
||||
// 员工信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFields = JsonUtil.parseList(salaryAcctSobConfig.getEmployeeFieldConfig(), SalarySobEmpFieldPO.class);
|
||||
// 薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroups = JsonUtil.parseList(salaryAcctSobConfig.getItemGroupConfig(), SalarySobItemGroupPO.class);
|
||||
// 薪资项目
|
||||
List<SalarySobItemPO> salarySobItems = JsonUtil.parseList(salaryAcctSobConfig.getItemConfig(), SalarySobItemPO.class);
|
||||
// 回算薪资项目
|
||||
List<SalarySobBackItemPO> salarySobBackItems = JsonUtil.parseList(salaryAcctSobConfig.getBackItemConfig(), SalarySobBackItemPO.class);
|
||||
// 查询薪资账套的薪资项目所关联的薪资项目
|
||||
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId);
|
||||
salaryItemIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getSalaryItemId));
|
||||
List<SalaryItemPO> salaryItems = getSalaryItemService(user).listByIds(salaryItemIds);
|
||||
// 函数公式
|
||||
List<ExpressFormula> expressFormulas = Collections.emptyList();
|
||||
if (needFormula) {
|
||||
Set<Long> formulaIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getFormulaId);
|
||||
formulaIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getFormulaId));
|
||||
expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
|
||||
}
|
||||
// 转换成聚合dto
|
||||
SalarySobItemAggregateBO salarySobItemAggregateBO = new SalarySobItemAggregateBO(salarySob, salarySobEmpFields,
|
||||
salarySobItemGroups, salarySobItems, expressFormulas, salaryItems, salarySobBackItems, Collections.emptyList());
|
||||
return salarySobItemAggregateBO.convert2AggregateDTO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalaryAcctSobConfigPO initBySalaryAcctRecord(SalaryAcctRecordPO salaryAcctRecord) {
|
||||
// 薪资账套的基本信息
|
||||
SalarySobPO salarySob = getSalarySobService(user).getById(salaryAcctRecord.getSalarySobId());
|
||||
// 薪资账套的员工信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFields = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecord.getSalarySobId());
|
||||
// 薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroups = getSalarySobItemGroupService(user).listBySalarySobId(salaryAcctRecord.getSalarySobId());
|
||||
// 薪资账套的薪资项目
|
||||
List<SalarySobItemPO> salarySobItems = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecord.getSalarySobId());
|
||||
// 薪资账套的回算薪资项目
|
||||
List<SalarySobBackItemPO> salarySobBackItemPOS = getSalarySobBackItemService(user).listBySalarySobId(salaryAcctRecord.getSalarySobId());
|
||||
|
||||
SalaryAcctConfig salaryAcctConfig = new SalaryAcctConfig(salaryAcctRecord, salarySob, salarySobEmpFields,
|
||||
salarySobItems, salarySobItemGroups, salarySobBackItemPOS, Collections.emptyList(), Collections.emptyList());
|
||||
return salaryAcctConfig.buildAcctSobConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(SalaryAcctSobConfigPO salaryAcctSobConfig) {
|
||||
deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctSobConfig.getSalaryAcctRecordId()));
|
||||
getSalaryAcctSobConfigMapper().insertIgnoreNull(salaryAcctSobConfig);
|
||||
String cacheIndex = salaryAcctSobConfig.getSalaryAcctRecordId().toString();
|
||||
getSalaryCacheService(user).set(SalaryCacheKey.ACCT_SOB_CONFIG + cacheIndex, "FALSE");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateBySalaryAcctRecordId(Long salaryAcctRecordId) {
|
||||
SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(salaryAcctRecordId);
|
||||
if (salaryAcctRecord == null) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156474, "参数错误,薪资核算记录不存在或已被删除"));
|
||||
}
|
||||
SalaryAcctSobConfigPO salaryAcctSobConfig = initBySalaryAcctRecord(salaryAcctRecord);
|
||||
deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId));
|
||||
getSalaryAcctSobConfigMapper().insertIgnoreNull(salaryAcctSobConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteBySalaryAcctRecordIds(Collection<Long> salaryAcctRecordIds) {
|
||||
getSalaryAcctSobConfigMapper().deleteBySalaryAcctRecordIds(salaryAcctRecordIds);
|
||||
}
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import com.engine.core.impl.Service;
|
|||
import com.engine.salary.component.WeaTableColumnGroup;
|
||||
import com.engine.salary.encrypt.EncryptUtil;
|
||||
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam;
|
||||
|
|
@ -101,6 +102,10 @@ public class SalaryComparisonResultServiceImpl extends Service implements Salary
|
|||
return ServiceUtil.getService(SalarySobItemHideServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ExcelAcctResultPO> listBySalaryAcctRecordId(Long salaryAcctRecordId) {
|
||||
List<ExcelAcctResultPO> excelAcctResultPOS = getExcelAcctResultMapper().listSome(ExcelAcctResultPO.builder().salaryAcctRecordId(salaryAcctRecordId).build());
|
||||
|
|
@ -143,18 +148,19 @@ public class SalaryComparisonResultServiceImpl extends Service implements Salary
|
|||
if (Objects.isNull(salaryAcctRecordPO)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
|
||||
}
|
||||
|
||||
SalaryAcctConfig salaryAcctConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(queryParam.getSalaryAcctRecordId());
|
||||
|
||||
// 查询薪资核算所用薪资账套
|
||||
SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecordPO.getSalarySobId());
|
||||
// 查询薪资核算所用的薪资账套的员工信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = salaryAcctConfig.getSalarySobEmpFields();
|
||||
// 查询薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = salaryAcctConfig.getSalarySobItemGroups();
|
||||
// 查询薪资核算所用薪资账套的薪资项目副本
|
||||
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
List<SalarySobItemPO> salarySobItemPOS = salaryAcctConfig.getSalarySobItems();
|
||||
// 过滤在账套中隐藏的薪资项目
|
||||
List<Long> hideItemIds = getSalarySobItemHideService(user).listSome(SalarySobItemHidePO.builder().itemHide(1L).salarySobId(salaryAcctRecordPO.getSalarySobId()).build())
|
||||
.stream().map(SalarySobItemHidePO::getSalaryItemId).collect(Collectors.toList());
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(po -> !hideItemIds.contains(po.getSalaryItemId())).collect(Collectors.toList());
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(po -> po.getItemHide()==null || po.getItemHide() == 0).collect(Collectors.toList());
|
||||
// 查询公式详情
|
||||
Set<Long> formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId);
|
||||
List<ExpressFormula> expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
|
||||
|
|
|
|||
|
|
@ -30,11 +30,6 @@ public class SalarySobItemGroupServiceImpl extends Service implements SalarySobI
|
|||
return salarySobItemGroupMapper.listSome(SalarySobItemGroupPO.builder().salarySobId(salarySobId).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalarySobItemGroupPO> listBySalarySobIdWithItemHide(Long salarySobId) {
|
||||
return salarySobItemGroupMapper.listSomeWithItemHide(SalarySobItemGroupPO.builder().salarySobId(salarySobId).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchSave(Collection<SalarySobItemGroupPO> salarySobItemGroupPOS) {
|
||||
salarySobItemGroupMapper.batchInsert(salarySobItemGroupPOS);
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant;
|
|||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctCalculatePriorityBO;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
|
||||
import com.engine.hrmelog.entity.dto.LoggerContext;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig;
|
||||
import com.engine.salary.entity.salaryformula.ExpressFormula;
|
||||
import com.engine.salary.entity.salaryformula.po.FormulaVar;
|
||||
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
||||
|
|
@ -105,6 +106,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
return MapperProxyFactory.getProxy(SalarySobDefaultItemMapper.class);
|
||||
}
|
||||
|
||||
private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctResultService getSalaryAcctResultService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user);
|
||||
}
|
||||
|
|
@ -120,11 +125,6 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
return salarySobItemMapper.listSome(SalarySobItemPO.builder().salarySobId(salarySobId).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalarySobItemPO> listBySalarySobIdWithHideItem(Long salarySobId) {
|
||||
return salarySobItemMapper.listBySalarySobIdWithHideItem(SalarySobItemPO.builder().salarySobId(salarySobId).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalarySobItemPO> listBySalarySobIdAndGroupId(Long salarySobId, Collection<Long> salarySobItemGroupIds) {
|
||||
return salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId, salarySobItemGroupIds);
|
||||
|
|
@ -170,9 +170,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
// 查询薪资账套的员工信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salarySobId);
|
||||
// 查询薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId);
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobId(salarySobId);
|
||||
// 查询薪资账套的薪资项目副本
|
||||
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobIdWithHideItem(salarySobId);
|
||||
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobId(salarySobId);
|
||||
// 薪资项目副本去重
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(SalaryEntityUtil.distinctByKey(PO -> PO.getSalarySobId() + "-" + PO.getSalaryItemId())).collect(Collectors.toList());
|
||||
// 回算薪资项目
|
||||
|
|
@ -208,38 +208,80 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
return salarySobItemAggregateBO.convert2AggregateDTO();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public SalarySobItemAggregateDTO getAggregateWithItemHideBySalarySobId(Long salarySobId, boolean isBackCalc) {
|
||||
public SalarySobItemAggregateDTO getAggregateByRecordId(Long salaryAcctRecordId, boolean hideItem) {
|
||||
SalaryAcctConfig salaryAcctConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(salaryAcctRecordId);
|
||||
// 查询薪资账套
|
||||
SalarySobPO salarySobPO = salarySobBiz.getById(salarySobId);
|
||||
SalarySobPO salarySobPO = salaryAcctConfig.getSalarySob();
|
||||
if (Objects.isNull(salarySobPO)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除"));
|
||||
}
|
||||
// 查询薪资账套的员工信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salarySobId);
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = salaryAcctConfig.getSalarySobEmpFields();
|
||||
// 查询薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = getSalarySobItemGroupService(user).listBySalarySobIdWithItemHide(salarySobId);
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = salaryAcctConfig.getSalarySobItemGroups();
|
||||
if (hideItem) {
|
||||
salarySobItemGroupPOS = salarySobItemGroupPOS.stream().filter(po -> po.getItemHide() == null || po.getItemHide().equals(0L)).collect(Collectors.toList());
|
||||
}
|
||||
// 查询薪资账套的薪资项目副本(已经过滤关闭分类显示按钮的薪资项目)
|
||||
List<SalarySobItemPO> salarySobItemPOS = salaryAcctConfig.getSalarySobItems();
|
||||
if (hideItem) {
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(po -> po.getItemHide() == null || po.getItemHide().equals(0L)).collect(Collectors.toList());
|
||||
}
|
||||
// 回算薪资项目
|
||||
List<SalarySobBackItemPO> salarySobBackItems = salaryAcctConfig.getSalarySobBackItems();
|
||||
// 薪资账套的薪资项目副本所用的公式id
|
||||
Set<Long> formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId);
|
||||
// 添加薪资回算项目的公式id
|
||||
formulaIds.addAll(SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getFormulaId));
|
||||
// 查询公式详情
|
||||
List<ExpressFormula> expressFormulas = getSalaryFormulaService(user).listExpressFormula(formulaIds);
|
||||
// 查询薪资账套的薪资项目副本+回算的薪资项目所关联的薪资项目
|
||||
Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
||||
Set<Long> backCalcItemIds = SalaryEntityUtil.properties(salarySobBackItems, SalarySobBackItemPO::getSalaryItemId);
|
||||
salaryItemIds.addAll(backCalcItemIds);
|
||||
|
||||
// 获取关闭显示的分类
|
||||
List<Long> hideGroupIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(1).build());
|
||||
// 过滤关闭显示的薪资项目分类
|
||||
salarySobItemGroupPOS = salarySobItemGroupPOS.stream().filter(group -> !(hideGroupIDs.contains(group.getId()))).collect(Collectors.toList());
|
||||
// 获取薪资项目分类ID
|
||||
List<Long> salarySobItemGroupIds = salarySobItemGroupPOS.stream().map(SalarySobItemGroupPO::getId).collect(Collectors.toList());
|
||||
salarySobItemGroupIds.add(0L);
|
||||
Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID());
|
||||
final Set<Long> ids = new HashSet<Long>();
|
||||
if (needAuth) {
|
||||
Set<Long> collect = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()).stream().map(TaxAgentPO::getId).collect(Collectors.toSet());
|
||||
ids.addAll(collect);
|
||||
}
|
||||
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds).stream().filter(po -> Boolean.FALSE.equals(needAuth) || getSalaryItemService(user).filterInRange(ids, po)).collect(Collectors.toList());
|
||||
|
||||
//获取系统值
|
||||
List<SalarySobDefaultItemPO> salarySobDefaultItemPOS = getSalarySobDefaultItemMapper().listAll();
|
||||
|
||||
// 转换成聚合dto
|
||||
SalarySobItemAggregateBO salarySobItemAggregateBO = new SalarySobItemAggregateBO(salarySobPO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, expressFormulas, salaryItemPOS, salarySobBackItems, salarySobDefaultItemPOS);
|
||||
return salarySobItemAggregateBO.convert2AggregateDTO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SalarySobItemAggregateDTO getAggregateWithItemHideBySalarySobId(Long salaryAcctRecordId, Long salarySobId, boolean isBackCalc) {
|
||||
|
||||
SalaryAcctConfig salaryAcctConfig = getSalaryAcctSobConfigService(user).getSalaryAcctConfig(salaryAcctRecordId);
|
||||
|
||||
// 查询薪资账套
|
||||
SalarySobPO salarySobPO = salaryAcctConfig.getSalarySob();
|
||||
if (Objects.isNull(salarySobPO)) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98379, "参数错误,薪资账套不存在或者已被删除"));
|
||||
}
|
||||
// 查询薪资账套的员工信息字段
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = salaryAcctConfig.getSalarySobEmpFields();
|
||||
|
||||
// 查询薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = salaryAcctConfig.getSalarySobItemGroups();
|
||||
salarySobItemGroupPOS = salarySobItemGroupPOS.stream().filter(po -> po.getItemHide() == null || po.getItemHide().equals(0L)).collect(Collectors.toList());
|
||||
|
||||
// 查询薪资账套的薪资项目副本(已经过滤关闭分类显示按钮的薪资项目)
|
||||
List<SalarySobItemPO> salarySobItemPOS = listBySalarySobIdAndGroupId(salarySobId, salarySobItemGroupIds);
|
||||
|
||||
// 获取关闭显示的薪资项目
|
||||
List<Long> hideItemIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(0).build());
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(group -> !(hideItemIDs.contains(group.getSalaryItemId()))).collect(Collectors.toList());
|
||||
List<SalarySobItemPO> salarySobItemPOS = salaryAcctConfig.getSalarySobItems();
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(po -> po.getItemHide() == null || po.getItemHide().equals(0L)).collect(Collectors.toList());
|
||||
|
||||
// 回算薪资项目
|
||||
List<SalarySobBackItemPO> salarySobBackItems = Collections.emptyList();
|
||||
if (isBackCalc) {
|
||||
salarySobBackItems = getSalarySobBackItemService(user).listBySalarySobId(salarySobId);
|
||||
salarySobBackItems = salaryAcctConfig.getSalarySobBackItems();
|
||||
}
|
||||
|
||||
// 薪资账套的薪资项目副本所用的公式id
|
||||
|
|
@ -350,47 +392,15 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
List<SalaryItemPO> allSalaryItemList = getSalaryItemService(user).listAll();
|
||||
Map<Long, SalaryItemPO> salaryItemsMap = SalaryEntityUtil.convert2Map(allSalaryItemList, SalaryItemPO::getId);
|
||||
|
||||
// 需要保存的隐藏项目
|
||||
List<SalarySobItemHidePO> needInsertItemShow = new ArrayList<>();
|
||||
|
||||
//先保存项目分类获,取分类id
|
||||
Collection<SalarySobItemPO> salarySobItems = new ArrayList<>();
|
||||
for (SalarySobItemSaveParam.SalarySobItemGroupParam itemGroupParam : needAddGroup) {
|
||||
Long salarySobItemGroupId = IdGenerator.generate();
|
||||
SalarySobItemGroupPO salarySobItemGroupPO = SalarySobItemGroupPO.builder()
|
||||
.id(salarySobItemGroupId)
|
||||
.salarySobId(salarySobId)
|
||||
.name(itemGroupParam.getName())
|
||||
.sortedIndex(itemGroupParam.getSortedIndex())
|
||||
.description(StringUtils.EMPTY)
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
SalarySobItemGroupPO salarySobItemGroupPO = SalarySobItemGroupPO.builder().id(salarySobItemGroupId).salarySobId(salarySobId).name(itemGroupParam.getName()).sortedIndex(itemGroupParam.getSortedIndex()).itemHide(itemGroupParam.getItemHide()).description(StringUtils.EMPTY).creator(employeeId).createTime(now).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build();
|
||||
//保存分类
|
||||
salarySobItemGroupBiz.insert(salarySobItemGroupPO);
|
||||
|
||||
|
||||
// 保存薪资项目分类 字段显隐
|
||||
Long salarySobGroupItemShowId = IdGenerator.generate();
|
||||
SalarySobItemHidePO salarySobGroupItemHidePO = SalarySobItemHidePO.builder()
|
||||
.id(salarySobGroupItemShowId)
|
||||
.salarySobId(salarySobId)
|
||||
.salaryItemId(salarySobItemGroupId)
|
||||
.isGroup(1)
|
||||
.itemHide(itemGroupParam.getItemHide() == null ? 0L : itemGroupParam.getItemHide())
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
needInsertItemShow.add(salarySobGroupItemHidePO);
|
||||
// salarySobItemMapper.InsertItemShow(salarySobGroupItemHidePO);
|
||||
|
||||
|
||||
for (SalarySobItemSaveParam.SalarySobItemParam itemParam : itemGroupParam.getItems()) {
|
||||
SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap);
|
||||
SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder()
|
||||
|
|
@ -410,26 +420,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
.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();
|
||||
salarySobItems.add(salarySobItemPO);
|
||||
|
||||
// 保存薪资项目是否展示
|
||||
Long salarySobItemShowId = IdGenerator.generate();
|
||||
SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder()
|
||||
.id(salarySobItemShowId)
|
||||
.salarySobId(salarySobId)
|
||||
.salaryItemId(itemParam.getSalaryItemId())
|
||||
.isGroup(0)
|
||||
.itemHide(itemParam.getItemHide())
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
// salarySobItemMapper.InsertItemShow(salarySobItemHidePO);
|
||||
needInsertItemShow.add(salarySobItemHidePO);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -437,31 +430,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
//更新分组
|
||||
for (SalarySobItemSaveParam.SalarySobItemGroupParam itemGroupParam : needUpdateGroup) {
|
||||
Long groupId = itemGroupParam.getId();
|
||||
SalarySobItemGroupPO salarySobItemGroupPO = SalarySobItemGroupPO.builder()
|
||||
.id(groupId)
|
||||
.name(itemGroupParam.getName())
|
||||
.sortedIndex(itemGroupParam.getSortedIndex())
|
||||
.build();
|
||||
SalarySobItemGroupPO salarySobItemGroupPO = SalarySobItemGroupPO.builder().id(groupId).name(itemGroupParam.getName()).sortedIndex(itemGroupParam.getSortedIndex()).itemHide(itemGroupParam.getItemHide()).build();
|
||||
//更新分类
|
||||
salarySobItemGroupBiz.update(salarySobItemGroupPO);
|
||||
|
||||
// 保存薪资项目分类 字段显隐
|
||||
Long salarySobGroupItemShowId = IdGenerator.generate();
|
||||
SalarySobItemHidePO salarySobGroupItemHidePO = SalarySobItemHidePO.builder()
|
||||
.id(salarySobGroupItemShowId)
|
||||
.salarySobId(salarySobId)
|
||||
.salaryItemId(groupId)
|
||||
.isGroup(1)
|
||||
.itemHide(itemGroupParam.getItemHide() == null ? 0L : itemGroupParam.getItemHide())
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
needInsertItemShow.add(salarySobGroupItemHidePO);
|
||||
|
||||
|
||||
List<SalarySobItemSaveParam.SalarySobItemParam> items = itemGroupParam.getItems();
|
||||
List<Long> itemIds = SalaryEntityUtil.properties(items, SalarySobItemSaveParam.SalarySobItemParam::getId, Collectors.toList());
|
||||
List<SalarySobItemPO> oldItems = salarySobItemMapper.listBySalarySobIdAndGroupId(salarySobId, Collections.singleton(groupId));
|
||||
|
|
@ -490,24 +462,9 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
.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();
|
||||
salarySobItems.add(salarySobItemPO);
|
||||
|
||||
// 保存薪资项目是否展示
|
||||
Long salarySobItemShowId = IdGenerator.generate();
|
||||
SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder()
|
||||
.id(salarySobItemShowId)
|
||||
.salarySobId(salarySobId)
|
||||
.salaryItemId(itemParam.getSalaryItemId())
|
||||
.isGroup(0)
|
||||
.itemHide(itemParam.getItemHide())
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
needInsertItemShow.add(salarySobItemHidePO);
|
||||
}
|
||||
//更新
|
||||
for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) {
|
||||
|
|
@ -525,22 +482,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
.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();
|
||||
getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO);
|
||||
// 保存薪资项目是否展示
|
||||
Long salarySobItemShowId = IdGenerator.generate();
|
||||
needInsertItemShow.add(SalarySobItemHidePO.builder()
|
||||
.id(salarySobItemShowId)
|
||||
.salarySobId(salarySobId)
|
||||
.salaryItemId(itemParam.getSalaryItemId())
|
||||
.isGroup(0)
|
||||
.itemHide(itemParam.getItemHide())
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -565,74 +510,14 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
|
||||
for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needAddItems) {
|
||||
SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap);
|
||||
SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder()
|
||||
.salarySobId(salarySobId)
|
||||
.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())
|
||||
.build();
|
||||
SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().salarySobId(salarySobId).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();
|
||||
salarySobItems.add(salarySobItemPO);
|
||||
|
||||
// 保存未分类薪资项目是否展示
|
||||
Long salarySobItemShowId = IdGenerator.generate();
|
||||
SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder()
|
||||
.id(salarySobItemShowId)
|
||||
.salarySobId(salarySobId)
|
||||
.salaryItemId(itemParam.getSalaryItemId())
|
||||
.isGroup(0)
|
||||
.itemHide(itemParam.getItemHide())
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
// salarySobItemMapper.InsertItemShow(salarySobItemHidePO);
|
||||
needInsertItemShow.add(salarySobItemHidePO);
|
||||
}
|
||||
|
||||
for (SalarySobItemSaveParam.SalarySobItemParam itemParam : needUpdateItems) {
|
||||
SalaryItemPO salaryItemPO = checkItemExists(itemParam.getSalaryItemId(), salaryItemsMap);
|
||||
SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder()
|
||||
.id(itemParam.getId())
|
||||
.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())
|
||||
.build();
|
||||
SalarySobItemPO salarySobItemPO = SalarySobItemPO.builder().id(itemParam.getId()).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();
|
||||
getSalarySobItemMapper().updateIgnoreNull(salarySobItemPO);
|
||||
|
||||
// 保存未分类薪资项目是否展示
|
||||
Long salarySobItemShowId = IdGenerator.generate();
|
||||
SalarySobItemHidePO salarySobItemHidePO = SalarySobItemHidePO.builder()
|
||||
.id(salarySobItemShowId)
|
||||
.salarySobId(salarySobId)
|
||||
.salaryItemId(itemParam.getSalaryItemId())
|
||||
.isGroup(0)
|
||||
.itemHide(itemParam.getItemHide())
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
// salarySobItemMapper.InsertItemShow(salarySobItemHidePO);
|
||||
needInsertItemShow.add(salarySobItemHidePO);
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(needDeleteItemIds)) {
|
||||
|
|
@ -644,8 +529,6 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
|
||||
// 删除原薪资项目是否显示
|
||||
deleteItemShowBySalarySobIds(Collections.singleton(salarySobId));
|
||||
// 保存薪资账套的薪资项目隐藏信息
|
||||
batchSaveShow(needInsertItemShow);
|
||||
}
|
||||
|
||||
private SalaryItemPO checkItemExists(Long salaryItemId, Map<Long, SalaryItemPO> salaryItemsMap) {
|
||||
|
|
@ -672,24 +555,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
Collection<SalarySobEmpFieldPO> needInsertSalarySobEmpFields = new ArrayList<>();
|
||||
for (SalarySobItemSaveParam.SalarySobEmpFieldParam salarySobEmpFieldParam : empFields) {
|
||||
if (salarySobEmpFieldParam.getId() == null) {
|
||||
SalarySobEmpFieldPO salarySobEmpFieldPO = SalarySobEmpFieldPO.builder()
|
||||
.salarySobId(saveParam.getSalarySobId())
|
||||
.fieldCode(salarySobEmpFieldParam.getFieldId())
|
||||
.sortedIndex(salarySobEmpFieldParam.getSortedIndex())
|
||||
.canDelete(salarySobEmpFieldParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)
|
||||
.creator(employeeId)
|
||||
.createTime(now)
|
||||
.updateTime(now)
|
||||
.deleteType(NumberUtils.INTEGER_ZERO)
|
||||
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
SalarySobEmpFieldPO salarySobEmpFieldPO = SalarySobEmpFieldPO.builder().salarySobId(saveParam.getSalarySobId()).fieldCode(salarySobEmpFieldParam.getFieldId()).sortedIndex(salarySobEmpFieldParam.getSortedIndex()).canDelete(salarySobEmpFieldParam.getCanDelete() ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO).creator(employeeId).createTime(now).updateTime(now).deleteType(NumberUtils.INTEGER_ZERO).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build();
|
||||
needInsertSalarySobEmpFields.add(salarySobEmpFieldPO);
|
||||
} else {
|
||||
SalarySobEmpFieldPO salarySobEmpFieldPO = SalarySobEmpFieldPO.builder()
|
||||
.id(salarySobEmpFieldParam.getId())
|
||||
.sortedIndex(salarySobEmpFieldParam.getSortedIndex())
|
||||
.updateTime(now)
|
||||
.build();
|
||||
SalarySobEmpFieldPO salarySobEmpFieldPO = SalarySobEmpFieldPO.builder().id(salarySobEmpFieldParam.getId()).sortedIndex(salarySobEmpFieldParam.getSortedIndex()).updateTime(now).build();
|
||||
getSalarySobEmpFieldMapper().updateIgnoreNull(salarySobEmpFieldPO);
|
||||
}
|
||||
|
||||
|
|
@ -705,23 +574,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
return;
|
||||
}
|
||||
//前端可能传重复数据,去重
|
||||
List<SalarySobItemPO> list = new ArrayList<>(salarySobItemPOS.stream()
|
||||
.collect(Collectors.toMap(SalarySobItemPO::getSalaryItemId, Function.identity(), (oldValue, newValue) -> oldValue))
|
||||
.values());
|
||||
List<SalarySobItemPO> list = new ArrayList<>(salarySobItemPOS.stream().collect(Collectors.toMap(SalarySobItemPO::getSalaryItemId, Function.identity(), (oldValue, newValue) -> oldValue)).values());
|
||||
salarySobItemMapper.batchInsert(list);
|
||||
}
|
||||
|
||||
private void batchSaveShow(List<SalarySobItemHidePO> needInsertItemShow) {
|
||||
if (CollectionUtils.isEmpty(needInsertItemShow)) {
|
||||
return;
|
||||
}
|
||||
//前端可能传重复数据,去重
|
||||
List<SalarySobItemHidePO> list = new ArrayList<>(needInsertItemShow.stream()
|
||||
.collect(Collectors.toMap(SalarySobItemHidePO::getSalaryItemId, Function.identity(), (oldValue, newValue) -> oldValue))
|
||||
.values());
|
||||
salarySobItemMapper.batchInsertItemShow(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteBySalarySobIds(Collection<Long> salarySobIds) {
|
||||
salarySobItemMapper.deleteBySalarySobIds(salarySobIds);
|
||||
|
|
@ -770,30 +626,10 @@ public class SalarySobItemServiceImpl extends Service implements SalarySobItemSe
|
|||
// 强制开启账套的公式配置
|
||||
BaseBean baseBean = new BaseBean();
|
||||
final Boolean openFormulaForcedEditing = "true".equals(baseBean.getPropValue("hrmSalary", "openFormulaForcedEditing"));
|
||||
// 获取核算时隐藏的薪资项目id
|
||||
List<Long> hideItemIds = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder()
|
||||
.salarySobId(param.getSalarySobId())
|
||||
.isGroup(new Integer(0))
|
||||
.salaryItemId(param.getSalaryItemId())
|
||||
.build());
|
||||
|
||||
String formulaContent = CollectionUtils.isEmpty(expressFormulas) ? "" : expressFormulas.get(0).getFormula();
|
||||
Integer valueType = salarySobItemPO.getValueType() == null ? salaryItemPO.getValueType() : salarySobItemPO.getValueType();
|
||||
salarySobItemFormDTO
|
||||
.setId(salarySobItemPO.getId())
|
||||
.setName(salaryItemPO.getName())
|
||||
.setItemHide(hideItemIds.contains(salaryItemPO.getId()) ? 1 : 0)
|
||||
.setDataType(salaryItemPO.getDataType())
|
||||
.setRoundingMode(salarySobItemPO.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : salarySobItemPO.getRoundingMode())
|
||||
.setPattern(salarySobItemPO.getPattern() == null ? salaryItemPO.getPattern() : salarySobItemPO.getPattern())
|
||||
.setValueType(valueType)
|
||||
.setFormulaId(salarySobItemPO.getFormulaId())
|
||||
.setFormulaContent(CollectionUtils.isNotEmpty(expressFormulas) ? formulaContent : "")
|
||||
.setOriginFormulaContent(valueType.equals(SalaryValueTypeEnum.FORMULA.getValue()) ? formulaContent : "")
|
||||
.setOriginSqlContent(valueType.equals(SalaryValueTypeEnum.SQL.getValue()) ? formulaContent : "")
|
||||
.setUseInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary())
|
||||
.setDescription(salarySobItemPO.getDescription())
|
||||
.setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0);
|
||||
salarySobItemFormDTO.setId(salarySobItemPO.getId()).setName(salaryItemPO.getName()).setItemHide(Integer.valueOf(salarySobItemPO.getItemHide().toString())).setDataType(salaryItemPO.getDataType()).setRoundingMode(salarySobItemPO.getRoundingMode() == null ? salaryItemPO.getRoundingMode() : salarySobItemPO.getRoundingMode()).setPattern(salarySobItemPO.getPattern() == null ? salaryItemPO.getPattern() : salarySobItemPO.getPattern()).setValueType(valueType).setFormulaId(salarySobItemPO.getFormulaId()).setFormulaContent(CollectionUtils.isNotEmpty(expressFormulas) ? formulaContent : "").setOriginFormulaContent(valueType.equals(SalaryValueTypeEnum.FORMULA.getValue()) ? formulaContent : "").setOriginSqlContent(valueType.equals(SalaryValueTypeEnum.SQL.getValue()) ? formulaContent : "").setUseInEmployeeSalary(salaryItemPO.getUseInEmployeeSalary()).setDescription(salarySobItemPO.getDescription()).setCanEdit((openFormulaForcedEditing || salaryItemPO.getCanEdit().equals(1)) ? 1 : 0);
|
||||
}
|
||||
return salarySobItemFormDTO;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -693,7 +693,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService {
|
|||
// 薪资项目副本去重
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(SalaryEntityUtil.distinctByKey(PO -> PO.getSalarySobId() + "-" + PO.getSalaryItemId())).collect(Collectors.toList());
|
||||
// 查询薪资账套的薪资项目分类
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = salarySobItemGroupService.listSomeWithItemHide(SalarySobItemGroupPO.builder().salarySobId(duplicateParam.getId()).build());
|
||||
List<SalarySobItemGroupPO> salarySobItemGroupPOS = salarySobItemGroupService.listSome(SalarySobItemGroupPO.builder().salarySobId(duplicateParam.getId()).build());
|
||||
// 查询薪资账套的调薪计薪规则
|
||||
List<SalarySobAdjustRulePO> salarySobAdjustRulePOS = salarySobAdjustRuleService.listBySalarySobId(duplicateParam.getId());
|
||||
// 查询薪资账套的校验规则
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@ import com.alibaba.fastjson.JSON;
|
|||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.hrmelog.entity.dto.LoggerContext;
|
||||
import com.engine.salary.biz.SalarySobBiz;
|
||||
import com.engine.salary.biz.SalaryTemplateBiz;
|
||||
import com.engine.salary.config.SalaryElogConfig;
|
||||
import com.engine.hrmelog.entity.dto.LoggerContext;
|
||||
import com.engine.salary.entity.salaryBill.bo.SalaryTemplateBO;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalaryTemplateListDTO;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalaryTemplateSalaryItemListDTO;
|
||||
|
|
@ -24,7 +24,6 @@ import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
|||
import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemHidePO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
||||
import com.engine.salary.enums.OperateTypeEnum;
|
||||
|
|
@ -127,8 +126,8 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
loggerContext.setTargetId(String.valueOf(salaryTemplateNew.getId()));
|
||||
loggerContext.setTargetName(salaryTemplateNew.getName());
|
||||
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, "设为默认使用"));
|
||||
SalaryElogConfig.salaryTemplateLoggerTemplate.write(loggerContext);
|
||||
return "";
|
||||
}
|
||||
|
|
@ -178,8 +177,8 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
loggerContext.setTargetId(String.valueOf(salaryTemplate.getId()));
|
||||
loggerContext.setTargetName(salaryTemplate.getName());
|
||||
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(salaryTemplate);
|
||||
SalaryElogConfig.salaryTemplateLoggerTemplate.write(loggerContext);
|
||||
|
||||
|
|
@ -269,8 +268,8 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
loggerContext.setTargetId(String.valueOf(salaryTemplateNew.getId()));
|
||||
loggerContext.setTargetName(salaryTemplateNew.getName());
|
||||
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(salaryTemplate);
|
||||
loggerContext.setNewValues(salaryTemplateNew);
|
||||
SalaryElogConfig.salaryTemplateLoggerTemplate.write(loggerContext);
|
||||
|
|
@ -308,7 +307,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
List<String> empFieldCodeList = salarySobEmpFieldPOS.stream().map(SalarySobEmpFieldPO::getFieldCode).collect(Collectors.toList());
|
||||
Map<String, Long> empFieldCodeWithIdMap = SalaryEntityUtil.convert2Map(salarySobEmpFieldPOS, SalarySobEmpFieldPO::getFieldCode, SalarySobEmpFieldPO::getId);
|
||||
// 查询薪资账套的薪资项目副本
|
||||
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobIdWithHideItem(copyParam.getSalarySobId());
|
||||
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(copyParam.getSalarySobId());
|
||||
List<Long> salaryItemIdList = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList());
|
||||
//拷贝数据中的薪资项目
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryItemSettingList = StrUtil.isNotBlank(salaryTemplate.getSalaryItemSetting())
|
||||
|
|
@ -325,7 +324,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
}
|
||||
}
|
||||
salaryItemSetting.setItems(newItems);
|
||||
} else if (salaryItemSetting.getItems() != null){
|
||||
} else if (salaryItemSetting.getItems() != null) {
|
||||
List<SalaryTemplateSalaryItemListDTO> newItems = new ArrayList<>();
|
||||
for (SalaryTemplateSalaryItemListDTO templateItem : salaryItemSetting.getItems()) {
|
||||
if (salaryItemIdList.contains(Long.valueOf(templateItem.getSalaryItemId()))) {
|
||||
|
|
@ -336,7 +335,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
}
|
||||
}
|
||||
List<SalaryTemplateSalaryItemSetListDTO> replenishSalaryItemSettingList = StrUtil.isNotBlank(salaryTemplate.getReplenishSalaryItemSetting())
|
||||
? JSONArray.parseArray(salaryTemplate.getReplenishSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class): new ArrayList<>();
|
||||
? JSONArray.parseArray(salaryTemplate.getReplenishSalaryItemSetting(), SalaryTemplateSalaryItemSetListDTO.class) : new ArrayList<>();
|
||||
for (SalaryTemplateSalaryItemSetListDTO salaryItemSetting : replenishSalaryItemSettingList) {
|
||||
if ("111111111111111111".equals(salaryItemSetting.getGroupId()) && salaryItemSetting.getItems() != null) {
|
||||
List<SalaryTemplateSalaryItemListDTO> newItems = new ArrayList<>();
|
||||
|
|
@ -349,7 +348,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
}
|
||||
}
|
||||
salaryItemSetting.setItems(newItems);
|
||||
} else if (!"333333333333333333".equals(salaryItemSetting.getGroupId()) && salaryItemSetting.getItems() != null){
|
||||
} else if (!"333333333333333333".equals(salaryItemSetting.getGroupId()) && salaryItemSetting.getItems() != null) {
|
||||
List<SalaryTemplateSalaryItemListDTO> newItems = new ArrayList<>();
|
||||
for (SalaryTemplateSalaryItemListDTO templateItem : salaryItemSetting.getItems()) {
|
||||
if (salaryItemIdList.contains(Long.valueOf(templateItem.getSalaryItemId()))) {
|
||||
|
|
@ -386,8 +385,8 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
loggerContext.setTargetId(String.valueOf(salaryTemplateNew.getId()));
|
||||
loggerContext.setTargetName(salaryTemplateNew.getName());
|
||||
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(salaryTemplateNew);
|
||||
SalaryElogConfig.salaryTemplateLoggerTemplate.write(loggerContext);
|
||||
|
||||
|
|
@ -414,8 +413,8 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
loggerContext.setTargetId(String.valueOf(template.getId()));
|
||||
loggerContext.setTargetName(template.getName() + ":" + template.getId());
|
||||
loggerContext.setOperateType(OperateTypeEnum.DELETE.getValue());
|
||||
loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel( 0, "删除工资单模板"));
|
||||
loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel( 0, "删除工资单模板"));
|
||||
loggerContext.setOperateTypeName(SalaryI18nUtil.getI18nLabel(0, "删除工资单模板"));
|
||||
loggerContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "删除工资单模板"));
|
||||
SalaryElogConfig.salaryTemplateLoggerTemplate.write(loggerContext);
|
||||
});
|
||||
return "";
|
||||
|
|
@ -437,25 +436,16 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
public List<SalaryTemplateSalaryItemSetListDTO> getSalaryItemSet(Long salarySobId, boolean isReplenish) {
|
||||
SalarySobItemAggregateDTO salarySobItemAggregate = getSalarySobItemService(user).getAggregateBySalarySobId(salarySobId);
|
||||
// 处理薪资账套中隐藏的分类和项目
|
||||
// 获取关闭显示的分类
|
||||
List<Long> hideGroupIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(1).build());
|
||||
// 过滤关闭显示的薪资项目分类
|
||||
List<SalarySobItemGroupDTO> itemGroupDTOS = salarySobItemAggregate.getItemGroups().stream().filter(group -> !(hideGroupIDs.contains(group.getId()))).collect(Collectors.toList());
|
||||
List<SalarySobItemGroupDTO> itemGroupDTOS = salarySobItemAggregate.getItemGroups().stream().filter(group -> group.getItemHide() == null || group.getItemHide().equals(0L)).collect(Collectors.toList());
|
||||
// 获取关闭显示的薪资项目
|
||||
List<Long> hideItemIDs = getSalarySobItemHideService(user).listHideGroupBysalarySobId(SalarySobItemHidePO.builder().salarySobId(salarySobId).isGroup(0).build());
|
||||
for (SalarySobItemGroupDTO DTO : itemGroupDTOS) {
|
||||
List<SalarySobItemDTO> items = DTO.getItems();
|
||||
DTO.setItems(items.stream().filter(item -> !(hideItemIDs.contains(item.getSalaryItemId()))).collect(Collectors.toList()));
|
||||
DTO.setItems(items.stream().filter(item -> item.getItemHide() == null || item.getItemHide().equals(0L)).collect(Collectors.toList()));
|
||||
}
|
||||
itemGroupDTOS = itemGroupDTOS.stream().filter(DTO -> CollectionUtils.isNotEmpty(DTO.getItems())).collect(Collectors.toList());
|
||||
salarySobItemAggregate.setItemGroups(itemGroupDTOS);
|
||||
if (hideGroupIDs.contains(0L)) {
|
||||
// 隐藏了未分类
|
||||
salarySobItemAggregate.setItems(Collections.emptyList());
|
||||
} else {
|
||||
salarySobItemAggregate.setItems(salarySobItemAggregate.getItems().stream().filter(item -> !(hideItemIDs.contains(item.getSalaryItemId()))).collect(Collectors.toList()));
|
||||
}
|
||||
return SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, new Long(user.getUID()), isReplenish);
|
||||
salarySobItemAggregate.setItems(salarySobItemAggregate.getItems().stream().filter(item -> item.getItemHide() == null || item.getItemHide().equals(0L)).collect(Collectors.toList()));
|
||||
return SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, isReplenish);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -472,7 +462,7 @@ public class SalaryTemplateServiceImpl extends Service implements SalaryTemplate
|
|||
|
||||
Map<Long, String> itemShowNameMap = SalaryEntityUtil.convert2Map(billItemNameList, SalaryBillItemNamePO::getSalaryItemId, SalaryBillItemNamePO::getSalaryItemShowName);
|
||||
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateSalaryItemSetListDTOS = SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, new Long(user.getUID()), isReplenish);
|
||||
List<SalaryTemplateSalaryItemSetListDTO> salaryTemplateSalaryItemSetListDTOS = SalaryTemplateBO.convertSalarySobItemAggregateToSalaryItemSet(salarySobItemAggregate, isReplenish);
|
||||
salaryTemplateSalaryItemSetListDTOS.stream()
|
||||
.filter(data -> !StringUtils.equals(data.getGroupId(), "111111111111111111"))
|
||||
.forEach(data -> {
|
||||
|
|
|
|||
|
|
@ -713,8 +713,6 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService {
|
|||
}
|
||||
|
||||
List<Long> taxAgentIds = allTaxAgents.stream().map(TaxAgentPO::getId).collect(Collectors.toList());
|
||||
List<DataCollectionEmployee> employees = getSalaryEmployeeService(user).listEmployee();
|
||||
List<TaxAgentEmployeePO> allEmployees = convert2TaxAgentEmployeePO(employees);
|
||||
if (employeeStatus != null) {
|
||||
List<String> personnelStatusList;
|
||||
// 查询人员状态
|
||||
|
|
@ -727,7 +725,7 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService {
|
|||
|
||||
// 是否开启分权
|
||||
if (!isOpenDevolution() || isChief(employeeId)) {
|
||||
return getTaxAgentEmp(allTaxAgents, taxAgentIds, allEmployees);
|
||||
return getTaxAgentEmp(allTaxAgents, taxAgentIds);
|
||||
}
|
||||
|
||||
// 1.判断自己是否是管理员, 如果是管理员,就是能够操作所属个税扣缴义务人下的所有人的数据
|
||||
|
|
@ -736,7 +734,7 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService {
|
|||
List<Long> adminTaxAgentIds = taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtils.isNotEmpty(adminTaxAgentIds)) {
|
||||
taxAgentManageRangeEmployeeList.addAll(getTaxAgentEmp(allTaxAgents, adminTaxAgentIds, allEmployees));
|
||||
taxAgentManageRangeEmployeeList.addAll(getTaxAgentEmp(allTaxAgents, adminTaxAgentIds));
|
||||
}
|
||||
|
||||
return taxAgentManageRangeEmployeeList;
|
||||
|
|
@ -752,9 +750,7 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService {
|
|||
return taxAgentManageRangeEmployeeList;
|
||||
}
|
||||
List<Long> taxAgentIds = allTaxAgents.stream().map(TaxAgentPO::getId).collect(Collectors.toList());
|
||||
List<DataCollectionEmployee> employees = getSalaryEmployeeService(user).listEmployee();
|
||||
List<TaxAgentEmployeePO> allEmployees = convert2TaxAgentEmployeePO(employees);
|
||||
taxAgentManageRangeEmployeeList.addAll(getTaxAgentEmp(allTaxAgents, taxAgentIds, allEmployees));
|
||||
taxAgentManageRangeEmployeeList.addAll(getTaxAgentEmp(allTaxAgents, taxAgentIds));
|
||||
return taxAgentManageRangeEmployeeList;
|
||||
}
|
||||
|
||||
|
|
@ -768,54 +764,17 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService {
|
|||
}
|
||||
|
||||
List<Long> taxAgentIds = allTaxAgents.stream().map(TaxAgentPO::getId).collect(Collectors.toList());
|
||||
List<DataCollectionEmployee> employees = getSalaryEmployeeService(user).listEmployee();
|
||||
List<TaxAgentEmployeePO> allEmployees = convert2TaxAgentEmployeePO(employees);
|
||||
|
||||
// 1.判断自己是否是管理员, 如果是管理员,就是能够操作所属个税扣缴义务人下的所有人的数据
|
||||
List<TaxAgentAdminPO> taxAgentAdminList = getTaxAgentAdminService(user).listByTaxAgentIdsAndEmployeeId(taxAgentIds, (long) user.getUID());
|
||||
// 是管理员的列表
|
||||
List<Long> adminTaxAgentIds = taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList());
|
||||
taxAgentManageRangeEmployeeList.addAll(getTaxAgentEmp(allTaxAgents, adminTaxAgentIds, allEmployees));
|
||||
taxAgentManageRangeEmployeeList.addAll(getTaxAgentEmp(allTaxAgents, adminTaxAgentIds));
|
||||
taxAgentManageRangeEmployeeList = taxAgentManageRangeEmployeeList.stream().distinct().collect(Collectors.toList());
|
||||
return taxAgentManageRangeEmployeeList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取分管理员的关联人员
|
||||
*
|
||||
* @param allTaxAgents
|
||||
* @param noAdminTaxAgentIds
|
||||
* @param allEmployees
|
||||
* @return
|
||||
*/
|
||||
private List<TaxAgentManageRangeEmployeeDTO> getTaxAgentSubAdminEmp(List<TaxAgentPO> allTaxAgents, List<Long> noAdminTaxAgentIds, List<TaxAgentEmployeePO> allEmployees) {
|
||||
List<TaxAgentManageRangeEmployeeDTO> taxAgentManageRangeEmployeeList = Lists.newArrayList();
|
||||
List<TaxAgentSubAdminEmpPO> taxAgentEmps = taxAgentSubAdminEmpService.listByTaxAgentIds(noAdminTaxAgentIds);
|
||||
|
||||
taxAgentEmps = taxAgentEmps.stream().filter(f -> allEmployees.stream().anyMatch(e -> e.getEmployeeId().equals(f.getEmployeeId()))).collect(Collectors.toList());
|
||||
|
||||
List<TaxAgentSubAdminEmpPO> finalTaxAgentEmps = taxAgentEmps;
|
||||
noAdminTaxAgentIds.forEach(e -> {
|
||||
Optional<TaxAgentPO> optionalTaxAgent = allTaxAgents.stream().filter(t -> t.getId().equals(e)).findFirst();
|
||||
String taxAgentName = (optionalTaxAgent.isPresent() ? optionalTaxAgent.get().getName() : "");
|
||||
List<TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee> taxAgentEmployees = finalTaxAgentEmps.stream().filter(f -> f.getTaxAgentId().equals(e)).map(m -> {
|
||||
TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee taxAgentEmployee = new TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee();
|
||||
taxAgentEmployee.setEmployeeId(m.getEmployeeId());
|
||||
taxAgentEmployee.setUsername(m.getEmployeeName());
|
||||
return taxAgentEmployee;
|
||||
}).collect(Collectors.toList());
|
||||
taxAgentManageRangeEmployeeList.add(
|
||||
TaxAgentManageRangeEmployeeDTO.builder()
|
||||
.taxAgentId(e)
|
||||
.taxAgentName(taxAgentName)
|
||||
.employeeList(taxAgentEmployees)
|
||||
.build()
|
||||
);
|
||||
});
|
||||
return taxAgentManageRangeEmployeeList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取个税口角义务人的关联人员
|
||||
*
|
||||
|
|
@ -823,17 +782,13 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService {
|
|||
* @param taxAgentIds
|
||||
* @return
|
||||
*/
|
||||
private List<TaxAgentManageRangeEmployeeDTO> getTaxAgentEmp(List<TaxAgentPO> allTaxAgents, List<Long> taxAgentIds, List<TaxAgentEmployeePO> allEmployees) {
|
||||
private List<TaxAgentManageRangeEmployeeDTO> getTaxAgentEmp(List<TaxAgentPO> allTaxAgents, List<Long> taxAgentIds) {
|
||||
List<TaxAgentManageRangeEmployeeDTO> taxAgentManageRangeEmployeeList = Lists.newArrayList();
|
||||
List<TaxAgentEmpPO> taxAgentEmps = getTaxAgentEmpService(user).listByTaxAgentIds(taxAgentIds, UseEmployeeTypeEnum.ALL);
|
||||
|
||||
taxAgentEmps = taxAgentEmps.stream().filter(f -> allEmployees.stream().anyMatch(e -> e.getEmployeeId().equals(f.getEmployeeId()))).collect(Collectors.toList());
|
||||
|
||||
List<TaxAgentEmpPO> finalTaxAgentEmps = taxAgentEmps;
|
||||
taxAgentIds.forEach(e -> {
|
||||
Optional<TaxAgentPO> optionalTaxAgent = allTaxAgents.stream().filter(t -> t.getId().equals(e)).findFirst();
|
||||
String taxAgentName = (optionalTaxAgent.isPresent() ? optionalTaxAgent.get().getName() : "");
|
||||
List<TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee> taxAgentEmployees = finalTaxAgentEmps.stream().filter(f -> f.getTaxAgentId().equals(e)).map(m -> {
|
||||
List<TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee> taxAgentEmployees = taxAgentEmps.stream().filter(f -> f.getTaxAgentId().equals(e)).map(m -> {
|
||||
TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee taxAgentEmployee = new TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee();
|
||||
taxAgentEmployee.setEmployeeId(m.getEmployeeId());
|
||||
taxAgentEmployee.setUsername(m.getEmployeeName());
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
package com.engine.salary.util.valid;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 比较,判断两个实体字段是否改变
|
||||
* <p>Copyright: Copyright (c) 2024</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface Compare {
|
||||
|
||||
/**
|
||||
* 是否提示错误
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
boolean reportError() default false;
|
||||
|
||||
/**
|
||||
* 提示信息
|
||||
* @return
|
||||
*/
|
||||
String message() default "";
|
||||
|
||||
/**
|
||||
* 值类型
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
ValueTypeEnum type() default ValueTypeEnum.STRING;
|
||||
|
||||
}
|
||||
|
|
@ -1,8 +1,12 @@
|
|||
package com.engine.salary.util.valid;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import weaver.general.Util;
|
||||
|
||||
import java.beans.BeanInfo;
|
||||
import java.beans.Introspector;
|
||||
|
|
@ -20,6 +24,7 @@ import java.util.*;
|
|||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class ValidUtil {
|
||||
|
||||
/**
|
||||
|
|
@ -135,6 +140,7 @@ public class ValidUtil {
|
|||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("获取属性值失败", e);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
|
@ -199,6 +205,12 @@ public class ValidUtil {
|
|||
return convertSuccess;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理参数值,trim,xss
|
||||
*
|
||||
* @param t
|
||||
* @param <T>
|
||||
*/
|
||||
public static <T> void modify(T t) {
|
||||
Class<?> clazz = t.getClass();
|
||||
Field[] fields = clazz.getDeclaredFields();
|
||||
|
|
@ -251,5 +263,46 @@ public class ValidUtil {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较两个对象,如果值不相等,则抛出异常
|
||||
* <p>
|
||||
* true代表相等,false代表不相等
|
||||
*
|
||||
* @param o
|
||||
* @param n
|
||||
* @param <T>
|
||||
*/
|
||||
public static <T> boolean compare(T o, T n) {
|
||||
Class<?> clazz = o.getClass();
|
||||
Field[] fields = clazz.getDeclaredFields();
|
||||
boolean result = true;
|
||||
for (Field field : fields) {
|
||||
Compare rule = field.getDeclaredAnnotation(Compare.class);
|
||||
if (null == rule) {
|
||||
continue;
|
||||
}
|
||||
boolean reportError = rule.reportError();
|
||||
String message = rule.message();
|
||||
|
||||
ValueTypeEnum valueTypeEnum = rule.type();
|
||||
Object oValue = getValue(o, field.getName());
|
||||
Object nValue = getValue(n, field.getName());
|
||||
if (valueTypeEnum == ValueTypeEnum.STRING) {
|
||||
result = result && StrUtil.equals(Util.null2String(oValue), Util.null2String(nValue));
|
||||
if (!result && reportError) {
|
||||
throw new RuntimeException(message);
|
||||
}
|
||||
} else if (valueTypeEnum == ValueTypeEnum.DATE) {
|
||||
result = result && DateUtil.compare((Date) o, (Date) n) == 0;
|
||||
if (!result && reportError) {
|
||||
throw new RuntimeException(message);
|
||||
}
|
||||
} else if (valueTypeEnum == ValueTypeEnum.OBJECT) {
|
||||
result = result && compare(oValue, nValue);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,5 +9,5 @@ package com.engine.salary.util.valid;
|
|||
* @version 1.0
|
||||
**/
|
||||
public enum ValueTypeEnum {
|
||||
STRING, OBJECT,ARRAY
|
||||
STRING, DATE, OBJECT, ARRAY
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,8 +46,6 @@ import java.util.stream.Collectors;
|
|||
@Slf4j
|
||||
public class SalaryAcctController {
|
||||
|
||||
private SalaryAcctRecordWrapper salaryAcctRecordWrapper;
|
||||
|
||||
private SalaryAcctRecordWrapper getSalaryAcctRecordWrapper(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctRecordWrapper.class, user);
|
||||
}
|
||||
|
|
@ -159,6 +157,35 @@ public class SalaryAcctController {
|
|||
return new ResponseResult<Long, String>(user).run(getSalaryAcctRecordWrapper(user)::backCalculate, param.getSalaryAcctRecordId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查薪资核算的账套配置是否发生变更
|
||||
*
|
||||
* @param id 薪资核算记录id
|
||||
* @return
|
||||
*/
|
||||
@GET
|
||||
@Path("/compareSobConfig")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String compareSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "id") Long id) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<Long, Boolean>(user).run(getSalaryAcctRecordWrapper(user)::compareSobConfig, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新薪资核算的账套配置
|
||||
*
|
||||
* @param id 薪资核算记录id
|
||||
* @return
|
||||
*/
|
||||
@GET
|
||||
@Path("/updateSobConfig")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String updateSobConfig(@Context HttpServletRequest request, @Context HttpServletResponse response,@QueryParam(value = "id") Long id) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<Long, Boolean>(user).run(getSalaryAcctRecordWrapper(user)::updateSobConfig, id);
|
||||
}
|
||||
|
||||
|
||||
/* ********************************薪资核算记录相关 end*********************************/
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@ package com.engine.salary.wrapper;
|
|||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.cache.SalaryCacheKey;
|
||||
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
||||
import com.engine.salary.entity.salaryBill.dto.SalarySendCheckDTO;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctConfig;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctEmployeeCountDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordFormDTO;
|
||||
|
|
@ -11,9 +13,11 @@ import com.engine.salary.entity.salaryacct.dto.SalaryAcctRecordListDTO;
|
|||
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
||||
import com.engine.salary.entity.salarysob.po.*;
|
||||
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
||||
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.service.*;
|
||||
import com.engine.salary.service.impl.*;
|
||||
|
|
@ -22,8 +26,10 @@ import com.engine.salary.util.SalaryEntityUtil;
|
|||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.SalarySobUtil;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.util.valid.ValidUtil;
|
||||
import com.engine.salary.wrapper.proxy.SalaryAcctRecordWrapperProxy;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import weaver.hrm.User;
|
||||
|
||||
|
|
@ -68,6 +74,15 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
|
|||
return ServiceUtil.getService(TaxAgentServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctSobConfigService getSalaryAcctSobConfigService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryCacheService getSalaryCacheService(User user) {
|
||||
return ServiceUtil.getService(SalaryCacheServiceImpl.class, user);
|
||||
}
|
||||
|
||||
|
||||
// private ComInfoCache comInfoCache;
|
||||
|
||||
public PageInfo<SalaryAcctRecordListDTO> listPage(SalaryAcctRecordQueryParam queryParam) {
|
||||
|
|
@ -246,7 +261,6 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
|
|||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 判断是否存在合并计税
|
||||
*
|
||||
|
|
@ -258,12 +272,91 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
|
|||
}
|
||||
|
||||
/**
|
||||
* @description 回算
|
||||
* @return void
|
||||
* @description 回算
|
||||
* @author Harryxzy
|
||||
* @date 2022/11/24 15:52
|
||||
*/
|
||||
public void backCalculate(Long salaryAcctRecordId){
|
||||
public void backCalculate(Long salaryAcctRecordId) {
|
||||
getSalaryAcctRecordService(user).backCalculate(salaryAcctRecordId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 薪资核算的账套配置是否已经发生变更
|
||||
*
|
||||
* @param id
|
||||
* @return true--发生了变更、false--没有发生变更
|
||||
*/
|
||||
public boolean compareSobConfig(Long id) {
|
||||
SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(id);
|
||||
if (salaryAcctRecord == null) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156474, "参数错误,薪资核算记录不存在或已被删除"));
|
||||
}
|
||||
// 查询薪资核算记录已有的账套配置
|
||||
SalaryAcctSobConfigPO salaryAcctSobConfig = getSalaryAcctSobConfigService(user).getBySalaryAcctRecordId(false, id);
|
||||
// 查询最新的账套配置
|
||||
SalaryAcctSobConfigPO newSalaryAcctSobConfig = getSalaryAcctSobConfigService(user).initBySalaryAcctRecord(salaryAcctRecord);
|
||||
if (Objects.isNull(salaryAcctSobConfig)) {
|
||||
// 为避免并发造成的事物问题,需要做一下并发处理
|
||||
String cacheIndex = id.toString();
|
||||
String acctSobConfigFlag = getSalaryCacheService(user).get(SalaryCacheKey.ACCT_SOB_CONFIG + cacheIndex);
|
||||
if (acctSobConfigFlag != null && StringUtils.equals(acctSobConfigFlag, "TRUE")) {
|
||||
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160540, "其他人员正在操作此条薪资核算记录,请稍后再试"));
|
||||
}
|
||||
getSalaryCacheService(user).set(SalaryCacheKey.ACCT_SOB_CONFIG + cacheIndex, "TRUE");
|
||||
getSalaryAcctSobConfigService(user).save(newSalaryAcctSobConfig);
|
||||
getSalaryCacheService(user).remove(SalaryCacheKey.ACCT_SOB_CONFIG + cacheIndex);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 如果薪资核算记录已经归档了,不再校验薪资核算的账套配置是否已经发生变更
|
||||
if (!Objects.equals(salaryAcctRecord.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SalaryAcctConfig config = SalaryAcctConfig.parse(salaryAcctSobConfig);
|
||||
SalaryAcctConfig newConfig = SalaryAcctConfig.parse(newSalaryAcctSobConfig);
|
||||
|
||||
// 判断账套配置是否已经变更了
|
||||
SalarySobPO salarySobPO = config.getSalarySob();
|
||||
SalarySobPO newSalarySobPO = newConfig.getSalarySob();
|
||||
if (!ValidUtil.compare(salarySobPO, newSalarySobPO)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
List<SalarySobEmpFieldPO> salarySobEmpFields = config.getSalarySobEmpFields();
|
||||
List<SalarySobEmpFieldPO> newSalarySobEmpFields = newConfig.getSalarySobEmpFields();
|
||||
if (SalarySobEmpFieldPO.toCompareString(salarySobEmpFields).compareTo(SalarySobEmpFieldPO.toCompareString(newSalarySobEmpFields)) != 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
List<SalarySobItemGroupPO> salarySobItemGroups = config.getSalarySobItemGroups();
|
||||
List<SalarySobItemGroupPO> newSalarySobItemGroups = newConfig.getSalarySobItemGroups();
|
||||
if (SalarySobItemGroupPO.toCompareString(salarySobItemGroups).compareTo(SalarySobItemGroupPO.toCompareString(newSalarySobItemGroups)) != 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
List<SalarySobItemPO> salarySobItems = config.getSalarySobItems();
|
||||
List<SalarySobItemPO> newSalarySobItems = newConfig.getSalarySobItems();
|
||||
if (SalarySobItemPO.toCompareString(salarySobItems).compareTo(SalarySobItemPO.toCompareString(newSalarySobItems)) != 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
List<SalarySobBackItemPO> salarySobBackItems = config.getSalarySobBackItems();
|
||||
List<SalarySobBackItemPO> newSalarySobBackItems = newConfig.getSalarySobBackItems();
|
||||
if (SalarySobBackItemPO.toCompareString(salarySobBackItems).compareTo(SalarySobBackItemPO.toCompareString(newSalarySobBackItems)) != 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新薪资核算的账套配置
|
||||
*
|
||||
* @param id
|
||||
*/
|
||||
public void updateSobConfig(Long id) {
|
||||
getSalaryAcctSobConfigService(user).updateBySalaryAcctRecordId(id);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ public class SalaryItemWrapper extends Service {
|
|||
List<String> usingCodes = usingItem.getUsingCodes();
|
||||
|
||||
//删除无用公式
|
||||
getSalaryFormulaService(user).deleteNotIn(usingFormulaIds);
|
||||
// getSalaryFormulaService(user).deleteNotIn(usingFormulaIds);
|
||||
|
||||
//薪资档案引用的项目转移到字段管理功能项
|
||||
searchParam.setUseInEmployeeSalary(SalaryOnOffEnum.OFF.getValue());
|
||||
|
|
|
|||
|
|
@ -66,6 +66,11 @@ public class SalarySobWrapper extends Service {
|
|||
return ServiceUtil.getService(SysSalaryItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobItemService getSalarySobItemService(User user) {
|
||||
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 薪资账套列表
|
||||
|
|
|
|||
Loading…
Reference in New Issue