Merge branch 'release/2.17.1.2411.01' into feature/权限

# Conflicts:
#	src/com/engine/salary/report/service/impl/SalaryStatisticsEmployeeServiceImpl.java
#	src/com/engine/salary/service/impl/SalarySobServiceImpl.java
#	src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java
This commit is contained in:
钱涛 2024-12-03 12:14:25 +08:00
commit 583f3fa85a
80 changed files with 2287 additions and 196 deletions

View File

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

View File

@ -0,0 +1,19 @@
CREATE TABLE hrsa_salary_approval_rule (
id NUMBER(38,0) primary key,
salary_sob_id NUMBER(38,0),
open_approval NUMBER,
approval_group_setting clob,
workflow_url varchar2(500) DEFAULT NULL,
delete_type NUMBER,
create_time DATE default sysdate,
update_time DATE default sysdate,
creator NUMBER(38,0)
);
/
alter table hrsa_salary_acct_record add approval_id varchar2(50);
/
alter table hrsa_salary_acct_record add approval_status varchar2(50);
/

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_page_list_setting add (
default_setting number
);
/

View File

@ -0,0 +1,19 @@
CREATE TABLE hrsa_salary_approval_rule (
id NUMBER(38,0) primary key,
salary_sob_id NUMBER(38,0),
open_approval NUMBER,
approval_group_setting clob,
workflow_url varchar2(500) DEFAULT NULL,
delete_type NUMBER,
create_time DATE default sysdate,
update_time DATE default sysdate,
creator NUMBER(38,0)
);
/
alter table hrsa_salary_acct_record add approval_id varchar2(50);
/
alter table hrsa_salary_acct_record add approval_status varchar2(50);
/

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_page_list_setting add (
default_setting number
);
/

View File

@ -0,0 +1,19 @@
CREATE TABLE hrsa_salary_approval_rule (
id NUMBER(38,0) primary key,
salary_sob_id NUMBER(38,0),
open_approval NUMBER,
approval_group_setting clob,
workflow_url varchar2(500) DEFAULT NULL,
delete_type NUMBER,
create_time DATE default sysdate,
update_time DATE default sysdate,
creator NUMBER(38,0)
);
/
alter table hrsa_salary_acct_record add approval_id varchar2(50);
/
alter table hrsa_salary_acct_record add approval_status varchar2(50);
/

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_page_list_setting add (
default_setting number
);
/

View File

@ -0,0 +1,16 @@
CREATE TABLE hrsa_salary_approval_rule (
id bigint NOT NULL,
salary_sob_id bigint NOT NULL,
open_approval int NOT NULL,
approval_group_setting text NULL,
workflow_url varchar(500) NULL DEFAULT NULL,
delete_type int NOT NULL,
create_time datetime NOT NULL ,
update_time datetime NOT NULL,
creator bigint NOT NULL,
PRIMARY KEY (id)
);
alter table hrsa_salary_acct_record add approval_id varchar(50);
alter table hrsa_salary_acct_record add approval_status varchar(50);

View File

@ -0,0 +1 @@
ALTER TABLE hrsa_page_list_setting ADD COLUMN default_setting int;

View File

@ -0,0 +1,18 @@
CREATE TABLE hrsa_salary_approval_rule (
id NUMBER(38,0) primary key,
salary_sob_id NUMBER(38,0),
open_approval NUMBER,
approval_group_setting clob,
workflow_url varchar2(500) DEFAULT NULL,
delete_type NUMBER,
create_time DATE default sysdate,
update_time DATE default sysdate,
creator NUMBER(38,0)
)
/
alter table hrsa_salary_acct_record add approval_id varchar2(50)
/
alter table hrsa_salary_acct_record add approval_status varchar2(50)
/

View File

@ -0,0 +1,4 @@
ALTER TABLE hrsa_page_list_setting add (
default_setting number
)
/

View File

@ -0,0 +1,18 @@
CREATE TABLE hrsa_salary_approval_rule (
id bigint primary key,
salary_sob_id bigint,
open_approval int,
approval_group_setting text,
workflow_url varchar(500) DEFAULT NULL,
delete_type int,
create_time timestamp,
update_time timestamp,
creator bigint
)
/
alter table hrsa_salary_acct_record add approval_id varchar(50)
/
alter table hrsa_salary_acct_record add approval_status varchar(50)
/

View File

@ -0,0 +1 @@
ALTER TABLE hrsa_page_list_setting ADD COLUMN default_setting int ;

View File

@ -0,0 +1,19 @@
CREATE TABLE hrsa_salary_approval_rule (
id bigint NOT NULL,
salary_sob_id bigint NOT NULL,
open_approval int NOT NULL,
approval_group_setting text NULL,
workflow_url varchar(500)NULL DEFAULT NULL,
delete_type int NOT NULL,
create_time datetime NOT NULL ,
update_time datetime NOT NULL,
creator bigint NOT NULL,
PRIMARY KEY (id)
)
GO
alter table hrsa_salary_acct_record add approval_id varchar(50)
GO
alter table hrsa_salary_acct_record add approval_status varchar(50)
GO

View File

@ -0,0 +1,2 @@
ALTER TABLE hrsa_page_list_setting ADD default_setting int NULL
GO

View File

@ -0,0 +1,19 @@
CREATE TABLE hrsa_salary_approval_rule (
id NUMBER(38,0) primary key,
salary_sob_id NUMBER(38,0),
open_approval NUMBER,
approval_group_setting clob,
workflow_url varchar2(500) DEFAULT NULL,
delete_type NUMBER,
create_time DATE default sysdate,
update_time DATE default sysdate,
creator NUMBER(38,0)
);
/
alter table hrsa_salary_acct_record add approval_id varchar2(50);
/
alter table hrsa_salary_acct_record add approval_status varchar2(50);
/

View File

@ -0,0 +1,5 @@
ALTER TABLE hrsa_page_list_setting add (
default_setting number
);
/

View File

@ -7,6 +7,7 @@ import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum;
import com.engine.salary.service.SalaryArchiveExcelService;
import com.engine.salary.service.impl.SalaryArchiveExcelServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -45,6 +46,17 @@ public class BatEditSalaryExcelAction implements Action {
this.operatorField = operatorField;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -53,6 +65,11 @@ public class BatEditSalaryExcelAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
String docId = fieldMap.get(batSalaryExcelField);
RecordSet rs = new RecordSet();

View File

@ -7,6 +7,7 @@ import com.engine.salary.enums.salaryarchive.SalaryArchiveListTypeEnum;
import com.engine.salary.service.SalaryArchiveExcelService;
import com.engine.salary.service.impl.SalaryArchiveExcelServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -46,6 +47,17 @@ public class CheckBatEditSalaryExcelAction implements Action {
this.operatorField = operatorField;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -53,6 +65,11 @@ public class CheckBatEditSalaryExcelAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
String docId = fieldMap.get(batSalaryExcelField);
RecordSet rs = new RecordSet();

View File

@ -7,6 +7,7 @@ import com.engine.salary.service.impl.SISchemeServiceImpl;
import com.engine.salary.util.SalaryEntityUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -42,6 +43,17 @@ public class CheckEditSIArchiveAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -49,6 +61,11 @@ public class CheckEditSIArchiveAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -6,6 +6,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.wrapper.SalaryArchiveWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -38,6 +39,17 @@ public class CheckEditSalaryAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -46,7 +58,11 @@ public class CheckEditSalaryAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -60,6 +60,17 @@ public class CheckInitSalaryAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -68,6 +79,11 @@ public class CheckInitSalaryAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();

View File

@ -9,6 +9,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -49,6 +50,17 @@ public class CheckStayAddToPaySIArchiveAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -57,6 +69,12 @@ public class CheckStayAddToPaySIArchiveAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -9,6 +9,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -49,6 +50,17 @@ public class CheckStayDelToStopSIArchiveAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -57,6 +69,11 @@ public class CheckStayDelToStopSIArchiveAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -54,6 +54,17 @@ public class CheckStopSalaryAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -62,6 +73,11 @@ public class CheckStopSalaryAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -11,6 +11,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -18,7 +19,10 @@ import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -47,6 +51,17 @@ public class CopyToPaySIArchiveAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -54,6 +69,11 @@ public class CopyToPaySIArchiveAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -7,6 +7,7 @@ import com.engine.salary.service.impl.SISchemeServiceImpl;
import com.engine.salary.util.SalaryEntityUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -41,6 +42,17 @@ public class EditSIArchiveAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -48,6 +60,11 @@ public class EditSIArchiveAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -6,6 +6,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.wrapper.SalaryArchiveWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -38,6 +39,17 @@ public class EditSalaryAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -46,7 +58,11 @@ public class EditSalaryAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -15,6 +15,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -59,6 +60,17 @@ public class EditToPaySIArchiveAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -66,6 +78,11 @@ public class EditToPaySIArchiveAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -15,6 +15,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -59,6 +60,17 @@ public class EditToStopSIArchiveAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -66,6 +78,11 @@ public class EditToStopSIArchiveAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -63,6 +63,17 @@ public class InitSalaryAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -70,6 +81,11 @@ public class InitSalaryAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -70,6 +70,17 @@ public class RehireAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -78,6 +89,12 @@ public class RehireAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -65,12 +65,30 @@ public class SendSalaryAction implements Action {
*/
private String sendBy;
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
Property[] properties = requestInfo.getMainTableInfo().getProperty();
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
String idStr = fieldMap.get(idFieldName);
if (StringUtils.isBlank(idStr)) {
requestInfo.getRequestManager().setMessage("核算记录id或工资单id不能为空");

View File

@ -12,6 +12,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -54,6 +55,17 @@ public class StayAddToPaySIArchiveAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -62,6 +74,11 @@ public class StayAddToPaySIArchiveAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -14,6 +14,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.User;
@ -55,6 +56,17 @@ public class StayDelToStopSIArchiveAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -63,6 +75,11 @@ public class StayDelToStopSIArchiveAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();
String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?";

View File

@ -60,6 +60,17 @@ public class StopSalaryAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
@ -68,6 +79,11 @@ public class StopSalaryAction implements Action {
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
RecordSet rs = new RecordSet();

View File

@ -55,12 +55,32 @@ public class UpdateSISchemeDetailAction implements Action {
this.tableName = tableName;
}
// 是否执行action的字段, 0代表不执行其余代表执行
private String enableField;
public String getEnableField() {
return enableField;
}
public void setEnableField(String enableField) {
this.enableField = enableField;
}
@Override
public String execute(RequestInfo requestInfo) {
try {
RequestManager requestManager = requestInfo.getRequestManager();
User user = requestManager.getUser();
Property[] properties = requestInfo.getMainTableInfo().getProperty();
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String enable = fieldMap.get(enableField);
if (StringUtils.isNotBlank(enable) && enable.equals("0")) {
// 不执行action
return SUCCESS;
}
DetailTable[] detailTables = requestInfo.getDetailTableInfo().getDetailTable();
List<Map<String, String>> detailList = new ArrayList<>();
if (detailTables.length > 0) {

View File

@ -0,0 +1,78 @@
package com.engine.salary.action;
import cn.hutool.core.util.NumberUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper;
import com.engine.salary.service.SalaryAcctRecordService;
import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName updateSalaryApprovalStatusAction
* @author Harryxzy
* @date 2024/4/24 15:44
* @description 跟新薪资核算审批状态
*/
@Slf4j
public class updateSalaryApprovalStatusAction implements Action {
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}
private SalaryAcctRecordMapper getSalaryAcctRecordMapper() {
return MapperProxyFactory.getProxy(SalaryAcctRecordMapper.class);
}
// 记录薪资核算记录id的字段
private String salaryAcctRecordIdField;
// 修改为对应的状态
private String status;
@Override
public String execute(RequestInfo requestInfo) {
try {
if (StringUtils.isEmpty(salaryAcctRecordIdField)) {
requestInfo.getRequestManager().setMessage("薪资核算记录id字段不能为空");
return FAILURE_AND_CONTINUE;
}
Property[] properties = requestInfo.getMainTableInfo().getProperty();
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String salaryAcctRecordId = fieldMap.get(salaryAcctRecordIdField);
if (!NumberUtil.isNumber(salaryAcctRecordId)) {
requestInfo.getRequestManager().setMessage("核算记录id不为数字");
return FAILURE_AND_CONTINUE;
}
User user = new User();
user.setUid(1);
user.setLoginid("sysadmin");
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(Long.valueOf(salaryAcctRecordId));
if (salaryAcctRecordPO == null) {
requestInfo.getRequestManager().setMessage("核算记录不存在或已被删除");
return FAILURE_AND_CONTINUE;
}
salaryAcctRecordPO.setApprovalStatus(status);
getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO);
} catch (Exception e) {
log.error("审批状态更新失败", e);
requestInfo.getRequestManager().setMessage(e.getMessage());
return FAILURE_AND_CONTINUE;
}
return SUCCESS;
}
}

View File

@ -47,7 +47,10 @@ public class SalaryAcctRecordBO {
List<DataCollectionEmployee> employeeComInfos,
List<SalaryAcctEmployeeCountDTO> salaryAcctEmployeeCountDTOS,
List<SalarySendCheckDTO> salarySendCheckResult,
List<TaxAgentPO> taxAgentPOS) {
List<TaxAgentPO> taxAgentPOS,
List<Long> needApprovalSalarySobIds,
boolean approvalCanFile,
boolean approvalCanReCalc) {
if (CollectionUtils.isEmpty(salaryAcctRecordPOS)) {
return Collections.emptyList();
}
@ -69,16 +72,22 @@ public class SalaryAcctRecordBO {
if(!Objects.equals(salaryAcctRecordPO.getBackCalcStatus(),NumberUtils.INTEGER_ONE)){
btnList.add(new WeaTableOperate("删除", null, "1"));
}
btnList.add(new WeaTableOperate("归档", null, "2"));
if (approvalCanFile || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) {
btnList.add(new WeaTableOperate("归档", null, "2"));
}
} else if (SalaryAcctRecordStatusEnum.ARCHIVED == salaryAcctRecordStatusEnum && ( salarySendMap.get(salaryAcctRecordPO.getId()) ==Boolean.TRUE ) ){
btnList.add(new WeaTableOperate("查看", null, "3"));
btnList.add(new WeaTableOperate("重新核算", null, "4"));
if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) {
btnList.add(new WeaTableOperate("重新核算", null, "4"));
}
if(salaryAcctRecordPO.getBackCalcStatus() == null || salaryAcctRecordPO.getBackCalcStatus() == NumberUtils.INTEGER_ZERO) {
btnList.add(new WeaTableOperate("回算", null, "5"));
}
} else {
btnList.add(new WeaTableOperate("查看", null, "3"));
btnList.add(new WeaTableOperate("重新核算", null, "4"));
if (approvalCanReCalc || !needApprovalSalarySobIds.contains(salaryAcctRecordPO.getSalarySobId())) {
btnList.add(new WeaTableOperate("重新核算", null, "4"));
}
}
String taxAgentName = salarySobPO.getTaxAgentIds().stream().map(id -> taxAgentMap.getOrDefault(id, "")).collect(Collectors.joining(","));
return SalaryAcctRecordListDTO.builder()
@ -97,6 +106,7 @@ public class SalaryAcctRecordBO {
.accountantName(usernameMap.getOrDefault(salaryAcctRecordPO.getCreator(), StringUtils.EMPTY))
.updateTime(SalaryDateUtil.getFormatLocalDateTime(salaryAcctRecordPO.getUpdateTime()))
.description(salaryAcctRecordPO.getDescription())
.approvalStatus(salaryAcctRecordPO.getApprovalStatus())
.operate(btnList)
.opts(salaryAcctRecordPO.getOpts())
.build();

View File

@ -64,6 +64,9 @@ public class SalaryAcctRecordListDTO {
@TableTitle(title = "备注", dataIndex = "description", key = "description")
private String description;
@TableTitle(title = "审批状态", dataIndex = "approvalStatus", key = "approvalStatus")
private String approvalStatus;
@TableTitle(title = "操作", dataIndex = "operate", key = "operate")
private List<WeaTableOperate> operate;

View File

@ -129,6 +129,16 @@ public class SalaryAcctRecordPO {
private Long taxAgentId;
/**
* 审批流程id
*/
private String approvalId;
/**
* 审批状态
*/
private String approvalStatus;
/**
* 锁定的薪资项目
*/

View File

@ -25,6 +25,9 @@ import java.util.Collection;
@AllArgsConstructor
public class SalaryItemSearchParam extends BaseQueryParam {
// 账套id
private Long salarySobId;
//名称
private String name;

View File

@ -0,0 +1,91 @@
package com.engine.salary.entity.salarysob.bo;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemGroupDTO;
import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.SalaryEntityUtil;
import org.apache.commons.lang.StringUtils;
import weaver.hrm.User;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @author Harryxzy
* @ClassName SalaryApprovalBO
* @date 2024/04/23 17:47
* @description 薪资账套的薪资审批
*/
public class SalaryApprovalBO {
public static SalaryApprovalDTO convert2DTO(SalaryApprovalRulePO salaryApprovalRulePO, List<SalaryItemPO> salaryItemList) {
if (salaryApprovalRulePO == null) {
return new SalaryApprovalDTO();
}
Map<Long, String> salaryItemNameMap = SalaryEntityUtil.convert2Map(salaryItemList, SalaryItemPO::getId, SalaryItemPO::getName);
List<SalaryApprovalDTO.approvalItemGroup> approvalItemGroups = JsonUtil.parseList(salaryApprovalRulePO.getApprovalGroupSetting(), SalaryApprovalDTO.approvalItemGroup.class);
for (SalaryApprovalDTO.approvalItemGroup group : approvalItemGroups) {
for(SalaryApprovalDTO.approvalItem item : group.getApprovalItems()) {
item.setSalaryItemName(salaryItemNameMap.getOrDefault(item.getSalaryItemId(), ""));
}
}
return SalaryApprovalDTO.builder()
.id(salaryApprovalRulePO.getId())
.salarySobId(salaryApprovalRulePO.getSalarySobId())
.isOpenApproval(salaryApprovalRulePO.getOpenApproval().equals(1))
.approvalWorkflowUrl(StringUtils.isBlank(salaryApprovalRulePO.getWorkflowUrl()) ? "" : salaryApprovalRulePO.getWorkflowUrl())
.approvalItemGroup(approvalItemGroups)
.build();
}
/**
* 将账套薪资项目设置转换成审批中的项目设置信息
* @param aggregateBySalarySobId
*/
public static String sobItemAggregate2approvalGroupSetting(SalarySobItemAggregateDTO aggregateBySalarySobId) {
List<SalaryApprovalDTO.approvalItemGroup> groupList = new ArrayList<>();
// 薪资项目分组
List<SalarySobItemGroupDTO> itemGroups = aggregateBySalarySobId.getItemGroups();
for (SalarySobItemGroupDTO sobItemGroupDTO: itemGroups) {
SalaryApprovalDTO.approvalItemGroup approvalGroup = new SalaryApprovalDTO.approvalItemGroup();
approvalGroup.setGroupName(sobItemGroupDTO.getName());
approvalGroup.setSorted(sobItemGroupDTO.getSortedIndex());
List<SalaryApprovalDTO.approvalItem> approvalItemList = new ArrayList<>();
for (SalarySobItemDTO groupItem : sobItemGroupDTO.getItems()) {
SalaryApprovalDTO.approvalItem approvalItem = new SalaryApprovalDTO.approvalItem();
approvalItem.setSalaryItemId(groupItem.getSalaryItemId());
approvalItem.setSalaryItemName(groupItem.getName());
approvalItem.setSorted(groupItem.getSortedIndex());
approvalItemList.add(approvalItem);
}
approvalGroup.setApprovalItems(approvalItemList);
groupList.add(approvalGroup);
}
// 未分类
List<SalarySobItemDTO> items = aggregateBySalarySobId.getItems();
List<SalaryApprovalDTO.approvalItem> approvalItemList2 = new ArrayList<>();
for (SalarySobItemDTO groupItem : items) {
SalaryApprovalDTO.approvalItem approvalItem = new SalaryApprovalDTO.approvalItem();
approvalItem.setSalaryItemId(groupItem.getSalaryItemId());
approvalItem.setSalaryItemName(groupItem.getName());
approvalItem.setSorted(groupItem.getSortedIndex());
approvalItemList2.add(approvalItem);
}
SalaryApprovalDTO.approvalItemGroup approvalGroup = new SalaryApprovalDTO.approvalItemGroup();
approvalGroup.setGroupName("未分类");
approvalGroup.setSorted(groupList.size());
approvalGroup.setApprovalItems(approvalItemList2);
groupList.add(approvalGroup);
return JsonUtil.toJsonString(groupList);
}
}

View File

@ -0,0 +1,78 @@
package com.engine.salary.entity.salarysob.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 薪资审批设置列表
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @author xuzhuoyan
* @version 1.0
**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalaryApprovalDTO {
// 主键id
private Long id;
// 薪资账套id
private Long salarySobId;
// 是否开启审批
private Boolean isOpenApproval;
// 审批流程地址
private String approvalWorkflowUrl;
// 审批项目信息
private List<approvalItemGroup> approvalItemGroup;
private Boolean canEdit;
/**
* 审批项目信息分组形式
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class approvalItemGroup {
// 分组名称
private String groupName;
// 项目信息
private List<approvalItem> approvalItems;
// 排序
private Integer sorted;
}
/**
* 审批薪资项目
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class approvalItem {
// 薪资项目id
private Long salaryItemId;
// 薪资项目名称
private String salaryItemName;
// 排序
private Integer sorted;
}
}

View File

@ -0,0 +1,27 @@
package com.engine.salary.entity.salarysob.param;
import com.engine.salary.util.valid.DataCheck;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName SalaryApprovalQueryParam
* @author Harryxzy
* @date 2024/4/23 15:05
* @description 薪资审批流程id保存参数
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApprovalRequestSaveParam {
// 流程id
@DataCheck(require = true, message = "流程id不能为空")
private String requestId;
// 核算记录id
private Long salaryAcctRecordId;
}

View File

@ -0,0 +1,24 @@
package com.engine.salary.entity.salarysob.param;
import com.engine.salary.util.valid.DataCheck;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName SalaryApprovalQueryParam
* @author Harryxzy
* @date 2024/4/23 15:05
* @description 薪资审批设置查询参数
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalaryApprovalQueryParam {
// 薪资账套id
@DataCheck(require = true, message = "薪资账套的ID不允许为空")
private Long salarySobId;
}

View File

@ -0,0 +1,70 @@
package com.engine.salary.entity.salarysob.po;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Collection;
import java.util.Date;
/**
* @author Harryxzy
* @ClassName SalaryApprovalRulePO
* @date 2024/04/23 17:31
* @description 薪资核算审批规则
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalaryApprovalRulePO {
/**
* 主键id
*/
private Long id;
/**
* 薪资账套id
*/
private Long salarySobId;
/**
* 是否开启工资单审批
*/
private Integer openApproval;
/**
* 审批薪资项目设置
*/
private String approvalGroupSetting;
/**
* 审批流程地址
*/
private String workflowUrl;
/**
* 创建时间
*/
private Date createTime;
/**
* 创建人id
*/
private Long creator;
private Integer deleteType;
/**
* 修改时间
*/
private Date updateTime;
//主键id集合
private Collection<Long> ids;
//薪资账套id集合
private Collection<Long> salarySobIds;
}

View File

@ -19,4 +19,6 @@ public class PageListSettingQueryParam {
private String page;
private String name;
private Integer defaultSetting;
}

View File

@ -0,0 +1,22 @@
package com.engine.salary.entity.setting.param;
import com.engine.salary.util.valid.DataCheck;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 恢复默认值
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PageListSettingResetParam {
/**
* 页面0薪资明细
*/
@DataCheck(require = true,message = "请选择页面")
private String page;
}

View File

@ -17,6 +17,12 @@ import java.util.List;
@AllArgsConstructor
public class PageListSettingSaveParam {
/**
* 默认设置
*/
@DataCheck(require = true,message = "是否为默认设置")
private Integer defaultSetting;
/**
* 页面0薪资明细
*/
@ -27,5 +33,5 @@ public class PageListSettingSaveParam {
* 设置
*/
@DataCheck(require = true,message = "请选择设置")
private List<Long> setting;
private List<String> setting;
}

View File

@ -10,13 +10,11 @@ import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
* 薪资帐套表
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
//hrsa_page_list_setting
public class PageListSettingPO {
@ElogTransform(name = "id")
@ -32,7 +30,12 @@ public class PageListSettingPO {
* 设置
*/
@ElogTransform(name = "设置")
private List<Long> setting;
private List<String> setting;
/**
* 默认设置
*/
private Integer defaultSetting;
/**

View File

@ -0,0 +1,49 @@
package com.engine.salary.handle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* 集合的转换
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
@Slf4j
public class LongListTypeHandler extends BaseTypeHandler<List<Long>> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, List<Long> list, JdbcType jdbcType) throws SQLException {
preparedStatement.setString(i, JSON.toJSONString(list));
}
@Override
public List<Long> getNullableResult(ResultSet resultSet, String s) throws SQLException {
List jsonArray = JSONArray.parseArray(resultSet.getString(s), Long.class);
return jsonArray == null ? new ArrayList<>() : jsonArray;
}
@Override
public List<Long> getNullableResult(ResultSet resultSet, int i) throws SQLException {
List jsonArray = JSONArray.parseArray(resultSet.getString(i), Long.class);
return jsonArray == null ? new ArrayList<>() : jsonArray;
}
@Override
public List<Long> getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
List jsonArray = JSONArray.parseArray(callableStatement.getString(i), Long.class);
return jsonArray == null ? new ArrayList<>() : jsonArray;
}
}

View File

@ -53,7 +53,9 @@
, t.delete_type
, t.tenant_key
, t.back_calc_status
,t.lock_salary_item_ids
, t.lock_salary_item_ids
, t.approval_status
, t.approval_id
</sql>
<!-- 查询全部 -->
@ -408,6 +410,12 @@
<if test="backCalcStatus != null">
back_calc_status=#{backCalcStatus},
</if>
<if test="approvalId != null">
approval_id=#{approvalId},
</if>
<if test="approvalStatus != null">
approval_status=#{approvalStatus},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>

View File

@ -0,0 +1,72 @@
package com.engine.salary.mapper.salarysob;
import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Harryxzy
* @ClassName SalaryApprovalRuleMapper
* @date 2024/04/23 17:36
* @description
*/
public interface SalaryApprovalRuleMapper {
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<SalaryApprovalRulePO> listAll();
/**
* 条件查询
*
* @return 返回集合没有返回空List
*/
List<SalaryApprovalRulePO> listSome(SalaryApprovalRulePO salaryApprovalRule);
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
SalaryApprovalRulePO getById(Long id);
/**
* 新增忽略null字段
*
* @param salaryApprovalRule 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(SalaryApprovalRulePO salaryApprovalRule);
/**
* 修改修改所有字段
*
* @param salaryApprovalRule 修改的记录
* @return 返回影响行数
*/
int update(SalaryApprovalRulePO salaryApprovalRule);
/**
* 修改忽略null字段
*
* @param salaryApprovalRule 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule);
/**
* 删除记录
*
* @param salaryApprovalRule 待删除的记录
* @return 返回影响行数
*/
int delete(SalaryApprovalRulePO salaryApprovalRule);
void deleteBySalarySobId(@Param("salarySobId") Long salarySobId);
}

View File

@ -0,0 +1,222 @@
<?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.salarysob.SalaryApprovalRuleMapper">
<resultMap id="BaseResultMap" type="com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO">
<result column="approval_group_setting" property="approvalGroupSetting" />
<result column="create_time" property="createTime" />
<result column="creator" property="creator" />
<result column="delete_type" property="deleteType" />
<result column="id" property="id" />
<result column="open_approval" property="openApproval" />
<result column="salary_sob_id" property="salarySobId" />
<result column="update_time" property="updateTime" />
<result column="workflow_url" property="workflowUrl" />
</resultMap>
<!-- 表字段 -->
<sql id="baseColumns">
t.approval_group_setting
, t.create_time
, t.creator
, t.delete_type
, t.id
, t.open_approval
, t.salary_sob_id
, t.update_time
, t.workflow_url
</sql>
<!-- 查询全部 -->
<select id="listAll" resultMap="BaseResultMap">
SELECT
<include refid="baseColumns" />
FROM hrsa_salary_approval_rule t
WHERE delete_type = 0
</select>
<!-- 根据主键获取单条记录 -->
<select id="getById" resultMap="BaseResultMap" parameterType="Long">
SELECT
<include refid="baseColumns" />
FROM hrsa_salary_approval_rule t
WHERE id = #{id} AND delete_type = 0
</select>
<!-- 条件查询 -->
<select id="listSome" resultMap="BaseResultMap" parameterType="com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO">
SELECT
<include refid="baseColumns" />
FROM hrsa_salary_approval_rule t
WHERE delete_type = 0
<if test="approvalGroupSetting != null">
AND approval_group_setting = #{approvalGroupSetting}
</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="id != null">
AND id = #{id}
</if>
<if test="openApproval != null">
AND open_approval = #{openApproval}
</if>
<if test="salarySobId != null">
AND salary_sob_id = #{salarySobId}
</if>
<if test="updateTime != null">
AND update_time = #{updateTime}
</if>
<if test="workflowUrl != null">
AND workflow_url = #{workflowUrl}
</if>
<if test="ids != null and ids.size()>0">
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
#{id}
</foreach>
</if>
<if test="salarySobIds != null and salarySobIds.size()>0">
AND salary_sob_id IN
<foreach collection="salarySobIds" open="(" item="salarySobId" separator="," close=")">
#{salarySobId}
</foreach>
</if>
ORDER BY id DESC
</select>
<!-- 插入不为NULL的字段 -->
<insert id="insertIgnoreNull" parameterType="com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO">
INSERT INTO hrsa_salary_approval_rule
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="approvalGroupSetting != null">
approval_group_setting,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="creator != null">
creator,
</if>
<if test="deleteType != null">
delete_type,
</if>
<if test="id != null">
id,
</if>
<if test="openApproval != null">
open_approval,
</if>
<if test="salarySobId != null">
salary_sob_id,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="workflowUrl != null">
workflow_url,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="approvalGroupSetting != null" >
#{approvalGroupSetting},
</if>
<if test="createTime != null" >
#{createTime},
</if>
<if test="creator != null" >
#{creator},
</if>
<if test="deleteType != null" >
#{deleteType},
</if>
<if test="id != null" >
#{id},
</if>
<if test="openApproval != null" >
#{openApproval},
</if>
<if test="salarySobId != null" >
#{salarySobId},
</if>
<if test="updateTime != null" >
#{updateTime},
</if>
<if test="workflowUrl != null" >
#{workflowUrl},
</if>
</trim>
</insert>
<!-- 更新,更新全部字段 -->
<update id="update" parameterType="com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO">
UPDATE hrsa_salary_approval_rule
<set>
approval_group_setting=#{approvalGroupSetting},
create_time=#{createTime},
creator=#{creator},
delete_type=#{deleteType},
open_approval=#{openApproval},
salary_sob_id=#{salarySobId},
update_time=#{updateTime},
workflow_url=#{workflowUrl},
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 更新不为NULL的字段 -->
<update id="updateIgnoreNull" parameterType="com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO">
UPDATE hrsa_salary_approval_rule
<set>
<if test="approvalGroupSetting != null" >
approval_group_setting=#{approvalGroupSetting},
</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="openApproval != null" >
open_approval=#{openApproval},
</if>
<if test="salarySobId != null" >
salary_sob_id=#{salarySobId},
</if>
<if test="updateTime != null" >
update_time=#{updateTime},
</if>
<if test="workflowUrl != null" >
workflow_url=#{workflowUrl},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>
<!-- 根据主键删除记录 -->
<delete id="delete" parameterType="com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO">
UPDATE hrsa_salary_approval_rule
SET delete_type=1
WHERE id = #{id} AND delete_type = 0
</delete>
<delete id="deleteBySalarySobId">
UPDATE hrsa_salary_approval_rule
SET delete_type=1
WHERE salary_sob_id = #{salarySobId} AND delete_type = 0
</delete>
</mapper>

View File

@ -8,70 +8,71 @@ import java.util.List;
public interface PageListSettingMapper {
/**
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<PageListSettingPO> listAll();
List<PageListSettingPO> listAll();
/**
* 条件查询
*
* @return 返回集合没有返回空List
*/
List<PageListSettingPO> listSome(PageListSettingPO pageListSetting);
/**
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
PageListSettingPO getById(Long id);
/**
PageListSettingPO getById(Long id);
/**
* 新增忽略null字段
*
* @param pageListSetting 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(PageListSettingPO pageListSetting);
/**
int insertIgnoreNull(PageListSettingPO pageListSetting);
/**
* 修改修改所有字段
*
* @param pageListSetting 修改的记录
* @return 返回影响行数
*/
int update(PageListSettingPO pageListSetting);
/**
int update(PageListSettingPO pageListSetting);
/**
* 修改忽略null字段
*
* @param pageListSetting 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(PageListSettingPO pageListSetting);
/**
int updateIgnoreNull(PageListSettingPO pageListSetting);
/**
* 删除记录
*
* @param pageListSetting 待删除的记录
* @return 返回影响行数
*/
int delete(PageListSettingPO pageListSetting);
int delete(PageListSettingPO pageListSetting);
/**
* 批量删除记录
*
* @param ids 主键id集合
*/
void deleteByIds(@Param("ids") Collection<Long> ids);
//获取页面默认配置
PageListSettingPO getByPage(String page);
//获取页面默认配置
PageListSettingPO getByPage(@Param("page") String page, @Param("defaultSetting") Integer defaultSetting, @Param("creator") Long creator);
//获取页面配置模板
List<PageListSettingPO> getTemplatesByPage(String page);
//获取页面配置模板
List<PageListSettingPO> getTemplatesByPage(String page);
}

View File

@ -10,6 +10,7 @@
<result column="update_time" property="updateTime"/>
<result column="delete_type" property="deleteType"/>
<result column="tenant_key" property="tenantKey"/>
<result column="default_setting" property="defaultSetting"/>
</resultMap>
<!-- 表字段 -->
@ -24,6 +25,7 @@
, t.setting
, t.tenant_key
, t.update_time
, t.default_setting
</sql>
<!-- 查询全部 -->
@ -70,6 +72,9 @@
<if test="updateTime != null">
AND update_time = #{updateTime}
</if>
<if test="defaultSetting != null">
AND default_setting = #{defaultSetting}
</if>
<if test="ids != null and ids.size()>0">
AND id IN
<foreach collection="ids" open="(" item="id" separator="," close=")">
@ -109,6 +114,9 @@
<if test="updateTime != null">
update_time,
</if>
<if test="defaultSetting != null">
default_setting,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="createTime != null">
@ -135,6 +143,9 @@
<if test="updateTime != null">
#{updateTime},
</if>
<if test="defaultSetting != null">
#{defaultSetting},
</if>
</trim>
</insert>
@ -150,6 +161,7 @@
setting=#{setting, jdbcType=ARRAY, typeHandler=com.engine.salary.handle.SalaryListTypeHandler},
tenant_key=#{tenantKey},
update_time=#{updateTime},
default_setting=#{defaultSetting},
</set>
WHERE id = #{id} AND delete_type = 0
</update>
@ -180,6 +192,9 @@
<if test="updateTime != null">
update_time=#{updateTime},
</if>
<if test="defaultSetting != null">
default_setting=#{defaultSetting},
</if>
</set>
WHERE id = #{id} AND delete_type = 0
</update>
@ -209,6 +224,10 @@
FROM hrsa_page_list_setting t
WHERE delete_type = 0
and page = #{page}
and default_setting = #{defaultSetting}
<if test="creator != null">
AND creator = #{creator}
</if>
</select>
<select id="getTemplatesByPage" resultMap="BaseResultMap">

View File

@ -6,7 +6,7 @@
<result column="creator" property="creator"/>
<result column="delete_type" property="deleteType"/>
<result column="id" property="id"/>
<result column="limit_ids" property="limitIds" typeHandler="com.engine.salary.handle.SalaryListTypeHandler"/>
<result column="limit_ids" property="limitIds" typeHandler="com.engine.salary.handle.LongListTypeHandler"/>
<result column="name" property="name"/>
<result column="page" property="page"/>
<result column="setting" property="setting" typeHandler="com.engine.salary.handle.SalaryListTypeHandler" />

View File

@ -30,7 +30,10 @@ import com.engine.salary.service.*;
import com.engine.salary.service.auth.AuthService;
import com.engine.salary.service.auth.AuthServiceImpl;
import com.engine.salary.service.impl.*;
import com.engine.salary.util.*;
import com.engine.salary.util.SalaryAssert;
import com.engine.salary.util.SalaryDateUtil;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
@ -45,8 +48,6 @@ import weaver.hrm.User;
import java.util.*;
import java.util.stream.Collectors;
import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT;
/**
* 薪酬统计员工明细
* <p>Copyright: Copyright (c) 2022</p>
@ -301,7 +302,7 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala
// 根据关键词过滤
if (StringUtils.isNotBlank(queryParam.getKeyword())) {
employeeList = employeeList.stream()
.filter(e -> (e.getUsername().contains(queryParam.getKeyword()) || (StringUtils.isNotEmpty(e.getWorkcode()) && e.getWorkcode().contains(queryParam.getKeyword()))))
.filter(e -> (StringUtils.isNotEmpty(e.getUsername()) && e.getUsername().contains(queryParam.getKeyword()) || (StringUtils.isNotEmpty(e.getWorkcode()) && e.getWorkcode().contains(queryParam.getKeyword()))))
.collect(Collectors.toList());
}
List<Long> employeeIds = employeeList.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList());
@ -326,10 +327,23 @@ public class SalaryStatisticsEmployeeServiceImpl extends Service implements Sala
@Override
public SalaryStatisticsEmployeeDetailResultDTO getDetailSalaryAcctResultByAcctEmp(List<SalaryAcctEmployeePO> salaryAcctEmployeeList) {
// 3.获取薪资项目
PageListSettingQueryParam param = PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).build();
Map setting = getSettingService(user).getPageListSetting(param);
List<Long> checked = setting.get("checked") != null ? JsonUtil.parseList(setting.get("checked"), Long.class) : new ArrayList<>();
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listByIds(checked);
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
salaryItemList = salaryItemList.stream()
.sorted(new Comparator<SalaryItemPO>() {
@Override
public int compare(SalaryItemPO o1, SalaryItemPO o2) {
if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) {
Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType();
Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType();
return systemType1.compareTo(systemType2);
} else {
Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex();
Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex();
return sortedIndex2.compareTo(sortedIndex1);
}
}
})
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) {
return SalaryStatisticsEmployeeDetailResultDTO.builder()
.salaryAcctEmployeeList(Collections.emptyList())

View File

@ -1,7 +1,6 @@
package com.engine.salary.report.wrapper;
import com.cloudstore.eccom.constant.WeaBoolAttr;
import com.cloudstore.eccom.pc.table.WeaTable;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.cloudstore.eccom.result.WeaResultMsg;
import com.engine.common.util.ServiceUtil;
@ -11,6 +10,8 @@ import com.engine.salary.component.WeaTableColumnGroup;
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.setting.dto.PageListTemplateDTO;
import com.engine.salary.entity.setting.param.PageListSettingQueryParam;
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
import com.engine.salary.report.common.constant.SalaryConstant;
import com.engine.salary.report.entity.bo.SalaryStatisticsReportBO;
@ -39,7 +40,6 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import weaver.general.PageIdConst;
import weaver.general.Util;
import weaver.hrm.User;
@ -189,12 +189,14 @@ public class SalaryStatisticsEmployeeWrapper extends Service {
if (templateShow) {
weaTableColumns = getSettingService(user).getPageListColumns(SALARY_DETAILS_REPORT.getValue());
} else {
// 显示方案0显示定制列,默认方式
weaTableColumns = buildDetailTableColumns(salaryStatisticsEmployeeDetailResult, true);
PageListSettingQueryParam param = PageListSettingQueryParam.builder().page(SALARY_DETAILS_REPORT.getValue()).defaultSetting(0).build();
PageListTemplateDTO pageListSetting = getSettingService(user).getPageListSetting(param);
weaTableColumns = pageListSetting.getChecked();
}
// 结果
resultMap.put("columns", weaTableColumns);
resultMap.put("pageInfo", pageInfo);
if (queryParam.isExport()) {
Map<String, Object> countResultMap = Maps.newHashMap();
List<SalaryItemPO> salaryItems = salaryStatisticsEmployeeDetailResult.getSalaryItemList();
@ -212,21 +214,7 @@ public class SalaryStatisticsEmployeeWrapper extends Service {
}
resultMap.put("salaryItems", salaryStatisticsEmployeeDetailResult.getSalaryItemList());
resultMap.put("countResult", countResultMap);
} else {
WeaTable table = new WeaTable();
String pageId = "b72ed4bb-725e-45de-aea1-4eb4c9184af7";
table.setPageID(pageId);
table.setPageUID(pageId + user.getUID());
table.setPagesize(PageIdConst.getPageSize(pageId, user.getUID()));
table.setBackfields("");
table.setColumns(weaTableColumns);
WeaResultMsg result = new WeaResultMsg(false);
result.putAll(table.makeDataResult());
result.success();
resultMap.put("dataKey", result.getResultMap());
}
resultMap.put("pageInfo", pageInfo);
return resultMap;
}

View File

@ -0,0 +1,117 @@
package com.engine.salary.service;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO;
import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam;
import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam;
import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO;
import java.util.Collection;
import java.util.List;
/**
* @author Harryxzy
* @ClassName SalaryApprovalRuleService
* @date 2024/04/23 17:33
* @description 薪资核算审批规则
*/
public interface SalaryApprovalRuleService {
/**
* 查询所有记录
*
* @return 返回集合没有返回空List
*/
List<SalaryApprovalRulePO> listAll();
/**
* 根据主键查询
*
* @param id 主键
* @return 返回记录没有返回null
*/
SalaryApprovalRulePO getById(Long id);
/**
* 新增忽略null字段
*
* @param salaryApprovalRule 新增的记录
* @return 返回影响行数
*/
int insertIgnoreNull(SalaryApprovalRulePO salaryApprovalRule);
/**
* 修改修改所有字段
*
* @param salaryApprovalRule 修改的记录
* @return 返回影响行数
*/
int update(SalaryApprovalRulePO salaryApprovalRule);
/**
* 修改忽略null字段
*
* @param salaryApprovalRule 修改的记录
* @return 返回影响行数
*/
int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule);
/**
* 删除记录
*
* @param salaryApprovalRule 待删除的记录
* @return 返回影响行数
*/
int delete(SalaryApprovalRulePO salaryApprovalRule);
/**
* 根据账套id查询审批设置
* @param salarySobId
* @return
*/
SalaryApprovalRulePO getBySalarySobId(Long salarySobId);
/**
* 根据薪资账套id删除
* @param salarySobId
*/
void deleteBySalarySobId(Long salarySobId);
/**
* 薪资账套的薪资审批规则
* @param queryParam
* @return
*/
SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam);
/**
* 保存薪资账套的薪资审批规则
* @param salaryApprovalDTO
*/
void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO);
List<SalaryItemPO> listSalaryApprovalItem(SalaryItemSearchParam queryParam);
SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId);
/**
* 获取该核算记录是否可以编辑核算
* @param salaryAcctRecordPO
* @return
*/
boolean getRecordIsCanEdit(SalaryAcctRecordPO salaryAcctRecordPO);
/**
* 保存审批流程id
* @param saveParam
*/
void saveApprovalRequestId(ApprovalRequestSaveParam saveParam);
void deleteBySalarySobIds(Collection<Long> ids);
List<SalaryApprovalRulePO> listBySalarySobIds(Collection<Long> salarySobIds);
}

View File

@ -6,12 +6,13 @@ import com.engine.salary.entity.setting.param.*;
import com.engine.salary.entity.setting.po.PageListTemplatePO;
import java.util.List;
import java.util.Map;
public interface SettingService {
void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam);
Map getPageListSetting(PageListSettingQueryParam param);
PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param);
void resetPageListSetting(PageListSettingResetParam param);
PageListTemplateDTO getPageListTemplate(PageListTemplateQueryParam param);
@ -22,4 +23,5 @@ public interface SettingService {
void changePageListTemplate(PageListTemplateChangeParam param);
List<WeaTableColumn> getPageListColumns(String page);
}

View File

@ -166,6 +166,10 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
return ServiceUtil.getService(SalaryAcctSobConfigServiceImpl.class, user);
}
private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) {
return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user);
}
@Override
public XSSFWorkbook exportSalaryAcctEmployee(SalaryAcctEmployeeQueryParam queryParam) {
ValidUtil.doValidator(queryParam);
@ -1055,6 +1059,12 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
}
stopWatch.stop();
// 校验是否可以编辑
boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO);
if (StringUtils.equals("importSalaryAcctResult", importType) && !recordIsCanEdit) {
throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程");
}
// 薪资账套下的薪资项目副本
stopWatch.start("薪资账套下的薪资项目副本");
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());

View File

@ -192,6 +192,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
private VariableItemService getVariableItemService(User user) {
return ServiceUtil.getService(VariableItemServiceImpl.class, user);
}
private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) {
return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user);
}
private SalaryCheckResultService salaryCheckResultService;
@ -637,6 +641,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
});
getSalaryAcctEmployeeService(user).updateIgnoreNull(salaryAcctEmployeePO);
// 校验是否可以编辑
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctEmployeePO.getSalaryAcctRecordId());
boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO);
if (!recordIsCanEdit) {
throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程");
}
// 查询原来的薪资核算结果
List<SalaryAcctResultPO> salaryAcctResultPOSOld = getSalaryAcctResultMapper().listSome(SalaryAcctResultPO.builder().salaryAcctEmpId(saveParam.getSalaryAcctEmpId()).build());
// 解密

View File

@ -0,0 +1,248 @@
package com.engine.salary.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.bo.SalaryApprovalBO;
import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam;
import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam;
import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper;
import com.engine.salary.mapper.salarysob.SalaryApprovalRuleMapper;
import com.engine.salary.service.*;
import com.engine.salary.sys.constant.SalarySysConstant;
import com.engine.salary.sys.entity.po.SalarySysConfPO;
import com.engine.salary.sys.service.SalarySysConfService;
import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
import com.engine.salary.util.JsonUtil;
import com.engine.salary.util.db.IdGenerator;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.valid.ValidUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.hrm.User;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Harryxzy
* @ClassName SalaryApprovalRuleServiceImpl
* @date 2024/04/23 17:35
* @description
*/
public class SalaryApprovalRuleServiceImpl extends Service implements SalaryApprovalRuleService {
private SalaryApprovalRuleMapper getSalaryApprovalRuleMapper() {
return MapperProxyFactory.getProxy(SalaryApprovalRuleMapper.class);
}
private SalaryAcctRecordMapper getSalaryAcctRecordMapper() {
return MapperProxyFactory.getProxy(SalaryAcctRecordMapper.class);
}
private SalaryItemService getSalaryItemService(User user) {
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
}
private SalarySobItemService getSalarySobItemService(User user) {
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
}
private SalarySobService getSalarySobService(User user) {
return ServiceUtil.getService(SalarySobServiceImpl.class, user);
}
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}
private SalarySysConfService getSalarySysConfService(User user) {
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
}
@Override
public List<SalaryApprovalRulePO> listAll() {
return getSalaryApprovalRuleMapper().listAll();
}
@Override
public SalaryApprovalRulePO getById(Long id) {
return getSalaryApprovalRuleMapper().getById(id);
}
@Override
public int insertIgnoreNull(SalaryApprovalRulePO po) {
return getSalaryApprovalRuleMapper().insertIgnoreNull(po);
}
@Override
public int update(SalaryApprovalRulePO salaryApprovalRule) {
return getSalaryApprovalRuleMapper().update(salaryApprovalRule);
}
@Override
public int updateIgnoreNull(SalaryApprovalRulePO salaryApprovalRule) {
return getSalaryApprovalRuleMapper().updateIgnoreNull(salaryApprovalRule);
}
@Override
public int delete(SalaryApprovalRulePO salaryApprovalRule) {
return getSalaryApprovalRuleMapper().delete(salaryApprovalRule);
}
@Override
public SalaryApprovalRulePO getBySalarySobId(Long salarySobId) {
if(salarySobId == null) {
return null;
}
List<SalaryApprovalRulePO> salaryApprovalRulePOS = getSalaryApprovalRuleMapper().listSome(SalaryApprovalRulePO.builder().salarySobId(salarySobId).build());
if (CollectionUtils.isNotEmpty(salaryApprovalRulePOS) && salaryApprovalRulePOS.size() == 1) {
return salaryApprovalRulePOS.get(0);
}
return null;
}
@Override
public void deleteBySalarySobId(Long salarySobId) {
if (salarySobId == null) {
return;
}
getSalaryApprovalRuleMapper().deleteBySalarySobId(salarySobId);
}
@Override
public SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam) {
// 查询薪资审批设置
SalaryApprovalRulePO approvalRulePO = getBySalarySobId(queryParam.getSalarySobId());
if (approvalRulePO == null) {
// 没有审批设置信息创建默认设置信息
Date now = new Date();
approvalRulePO = SalaryApprovalRulePO.builder()
.id(IdGenerator.generate())
.salarySobId(queryParam.getSalarySobId())
.openApproval(0)
.createTime(now)
.updateTime(now)
.creator(Long.valueOf(user.getUID()))
.deleteType(0)
.build();
// 获取账套的薪资项目设置信息
SalarySobItemAggregateDTO aggregateBySalarySobId = getSalarySobItemService(user).getAggregateBySalarySobId(queryParam.getSalarySobId());
String setting = SalaryApprovalBO.sobItemAggregate2approvalGroupSetting(aggregateBySalarySobId);
approvalRulePO.setApprovalGroupSetting(setting);
insertIgnoreNull(approvalRulePO);
}
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
return SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList);
}
@Override
public void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO) {
SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryApprovalDTO.getSalarySobId());
if (salarySobPO == null) {
throw new RuntimeException("薪资账套不存在");
}
// 删除原来的
deleteBySalarySobId(salaryApprovalDTO.getSalarySobId());
// 保存最新的
Date now = new Date();
SalaryApprovalRulePO po = SalaryApprovalRulePO.builder()
.id(IdGenerator.generate())
.salarySobId(salaryApprovalDTO.getSalarySobId())
.openApproval(salaryApprovalDTO.getIsOpenApproval() ? 1 : 0)
.approvalGroupSetting(JsonUtil.toJsonString(salaryApprovalDTO.getApprovalItemGroup()))
.workflowUrl(salaryApprovalDTO.getApprovalWorkflowUrl())
.createTime(now)
.updateTime(now)
.creator(Long.valueOf(user.getUID()))
.deleteType(0)
.build();
insertIgnoreNull(po);
}
@Override
public List<SalaryItemPO> listSalaryApprovalItem(SalaryItemSearchParam queryParam) {
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(queryParam.getSalarySobId());
List<Long> salaryItemIds = salarySobItemPOS.stream()
.filter(po -> !queryParam.getExcludeIds().contains(po.getSalaryItemId()))
.map(SalarySobItemPO::getSalaryItemId)
.collect(Collectors.toList());
List<SalaryItemPO> salaryItemPOList = getSalaryItemService(user).listByIds(salaryItemIds);
return salaryItemPOList;
}
@Override
public SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId) {
SalaryAcctRecordPO acctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId);
if (acctRecordPO == null) {
throw new SalaryRunTimeException("薪资核算记录不存在或已被删除");
}
SalaryApprovalRulePO approvalRulePO = getBySalarySobId(acctRecordPO.getSalarySobId());
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
SalaryApprovalDTO salaryApprovalDTO = SalaryApprovalBO.convert2DTO(approvalRulePO, salaryItemList);
// 查询是否可以核算编辑(默认开启)
salaryApprovalDTO.setCanEdit(getRecordIsCanEdit(acctRecordPO));
return salaryApprovalDTO;
}
public boolean getRecordIsCanEdit(SalaryAcctRecordPO acctRecordPO) {
// 审批总开关默认关闭
SalarySysConfPO approvalStatus = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_APPROVAL_STATUS);
if (approvalStatus == null || approvalStatus.getConfValue().equals("0")) {
return true;
}
// 查询是否可以核算编辑(默认开启)
SalarySysConfPO canEdit = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_EDIT_RESULT_STATUS);
if (canEdit == null || canEdit.getConfValue().equals("1")) {
return true;
} else {
// 发起审批后不能核损判断流程id是否存在
if (StringUtils.isBlank(acctRecordPO.getApprovalId())) {
return true;
} else {
RecordSet rs = new RecordSet();
rs.execute("SELECT * FROM workflow_requestbase where REQUESTID =" + acctRecordPO.getApprovalId());
return !rs.next();
}
}
}
@Override
public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) {
ValidUtil.doValidator(saveParam);
// 获取核算记录信息
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(saveParam.getSalaryAcctRecordId());
if (salaryAcctRecordPO == null) {
throw new SalaryRunTimeException("薪资核素记录不存在或已被删除");
}
salaryAcctRecordPO.setApprovalId(saveParam.getRequestId());
getSalaryAcctRecordMapper().updateIgnoreNull(salaryAcctRecordPO);
}
@Override
public void deleteBySalarySobIds(Collection<Long> ids) {
ids.stream().forEach(this::deleteBySalarySobId);
}
@Override
public List<SalaryApprovalRulePO> listBySalarySobIds(Collection<Long> salarySobIds) {
if (CollectionUtils.isEmpty(salarySobIds)) {
return Collections.emptyList();
}
return getSalaryApprovalRuleMapper().listSome(SalaryApprovalRulePO.builder().salarySobIds(salarySobIds).build());
}
}

View File

@ -1507,6 +1507,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
@Override
public XSSFWorkbook exportInfoList(SalarySendInfoQueryParam queryParam) {
// 校验
SalarySendInfoQueryParam.checkParam(queryParam);
// 1.工作簿名称
String sheetName = SalaryI18nUtil.getI18nLabel(100528, "工资单发放信息");
List<Object> header = new ArrayList<>();
@ -1516,14 +1519,24 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
header.add(SalaryI18nUtil.getI18nLabel(86186, "手机号"));
header.add(SalaryI18nUtil.getI18nLabel(86317, "工号"));
header.add(SalaryI18nUtil.getI18nLabel(86317, "发送状态"));
SalarySendPO salarySendPO = getById(queryParam.getSalarySendId());
if (salarySendPO == null) {
throw new SalaryRunTimeException("工资单不存在");
}
List<SalaryTemplatePO> salaryTemplates = getSalaryTemplateService(user).getDefaultTemplates(Collections.singletonList(salarySendPO.getSalarySobId()));
if (CollectionUtils.isEmpty(salaryTemplates)) {
throw new SalaryRunTimeException("请先设置工资单模板");
}
Integer ackFeedbackStatus = salaryTemplates.get(0).getAckFeedbackStatus();
Integer feedbackStatus = salaryTemplates.get(0).getFeedbackStatus();
if ((ackFeedbackStatus != null && NumberUtils.compare(ackFeedbackStatus, 1) == 0)
|| (feedbackStatus != null && NumberUtils.compare(feedbackStatus, 1) == 0)) {
header.add(SalaryI18nUtil.getI18nLabel(0, "查看状态"));
header.add(SalaryI18nUtil.getI18nLabel(0, "确认状态"));
}
List<List<Object>> rows = new ArrayList<>();
// 2.表头
rows.add(header);
// 校验
SalarySendInfoQueryParam.checkParam(queryParam);
// 获取行数据
//排序配置
OrderRuleVO orderRule = getSalarySysConfService(user).orderRule();
@ -1534,7 +1547,10 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
list.forEach(e -> {
// 发放状态
e.setSendStatus(SalarySendStatusEnum.getDefaultLabelByValue(Integer.valueOf(e.getSendStatus())));
// 查看状态
e.setBillReadStatus(NumberUtils.isCreatable(e.getBillReadStatus()) ? BillReadStatusEnum.getDefaultLabelByValue(Integer.valueOf(e.getBillReadStatus())) : "");
// 确认状态
e.setBillConfirmStatus(NumberUtils.isCreatable(e.getBillConfirmStatus()) ? BillConfimStatusEnum.getDefaultLabelByValue(Integer.valueOf(e.getBillConfirmStatus())) : "");
//外部人员
if (Objects.equals(e.getEmployeeType(), 1)) {
List<DataCollectionEmployee> employees = idEmpMap.getOrDefault(e.getEmployeeId(), new ArrayList<>());
@ -1558,6 +1574,11 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
row.add(dto.getMobile());
row.add(dto.getJobNum());
row.add(dto.getSendStatus());
if ((ackFeedbackStatus != null && NumberUtils.compare(ackFeedbackStatus, 1) == 0)
|| (feedbackStatus != null && NumberUtils.compare(feedbackStatus, 1) == 0)) {
row.add(dto.getBillReadStatus());
row.add(dto.getBillConfirmStatus());
}
rows.add(row);
}

View File

@ -169,6 +169,10 @@ public class SalarySobServiceImpl extends Service implements SalarySobService {
return ServiceUtil.getService(AuthServiceImpl.class, user);
}
private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) {
return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user);
}
@Override
public SalarySobPO getById(Long id) {
handleHistory();
@ -659,7 +663,9 @@ public class SalarySobServiceImpl extends Service implements SalarySobService {
getSalarySobBackItemService(user).deleteBySalarySobIds(ids);
// 删除薪资账套的校验规则
getSalarySobCheckRuleService(user).deleteBySalarySobIds(ids);
// 记录日志
// 删除薪资审批规则
getSalaryApprovalRuleService(user).deleteBySalarySobIds(ids);
// 记录日志
salarySobPOS.forEach(salarySobPO -> {
LoggerContext<SalarySobPO> loggerContext = new LoggerContext<>();
loggerContext.setUser(user);

View File

@ -36,7 +36,7 @@ import static com.engine.salary.constant.SalaryDefaultTenantConstant.DEFAULT_TEN
import static com.engine.salary.enums.setting.PageListSettingPageEnum.SALARY_DETAILS_REPORT;
/**
* 薪资核算
* 页面显示
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
@ -67,64 +67,111 @@ public class SettingServiceImpl extends Service implements SettingService {
@Override
public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) {
ValidUtil.doValidator(pageListSettingSaveParam);
Date now = new Date();
PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage());
//是否保存默认设置
Integer defaultSetting = pageListSettingSaveParam.getDefaultSetting();
PageListSettingPO pageListSettingPO;
if (defaultSetting == 0) {
pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage(), defaultSetting, (long) user.getUID());
} else {
pageListSettingPO = getPageListSettingMapper().getByPage(pageListSettingSaveParam.getPage(), defaultSetting, null);
}
List<String> checked = pageListSettingSaveParam.getSetting().stream().distinct().collect(Collectors.toList());
if (pageListSettingPO != null) {
pageListSettingPO.setSetting(pageListSettingSaveParam.getSetting());
pageListSettingPO.setSetting(checked);
pageListSettingPO.setUpdateTime(now);
getPageListSettingMapper().updateIgnoreNull(pageListSettingPO);
} else {
pageListSettingPO = PageListSettingPO.builder()
.id(IdGenerator.generate())
.page(pageListSettingSaveParam.getPage())
.setting(pageListSettingSaveParam.getSetting())
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(0)
.tenantKey(DEFAULT_TENANT_KEY)
.build();
pageListSettingPO = PageListSettingPO.builder().id(IdGenerator.generate()).page(pageListSettingSaveParam.getPage()).setting(checked).defaultSetting(defaultSetting).creator((long) user.getUID()).createTime(now).updateTime(now).deleteType(0).tenantKey(DEFAULT_TENANT_KEY).build();
getPageListSettingMapper().insertIgnoreNull(pageListSettingPO);
}
}
@Override
public Map getPageListSetting(PageListSettingQueryParam param) {
public PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param) {
String page = param.getPage();
Map result = new HashMap();
PageListSettingPO pageListSettingPO = getPageListSettingMapper().getByPage(page);
if (SALARY_DETAILS_REPORT.getValue().equals(page)) {
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
salaryItemList = salaryItemList.stream()
.filter(po -> {
String name = param.getName();
if (StrUtil.isNotEmpty(name)) {
return po.getName() != null && po.getName().contains(name);
}
return true;
})
.sorted((o1, o2) -> {
if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) {
Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType();
Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType();
return systemType1.compareTo(systemType2);
} else {
Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex();
Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex();
return sortedIndex2.compareTo(sortedIndex1);
}
})
.collect(Collectors.toList());
result.put("setting", salaryItemList);
if (pageListSettingPO != null && CollUtil.isNotEmpty(pageListSettingPO.getSetting())) {
result.put("checked", pageListSettingPO.getSetting());
} else {
List<Long> collect = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
result.put("checked", collect);
List<WeaTableColumn> columns = new ArrayList<>();
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(87614, "薪资所属月"), "salaryMonth"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), "taxAgent"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "账套"), "salarySob"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "姓名"), "userName"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "分部"), "subCompany"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "部门"), "department"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "岗位"), "jobTitle"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "员工状态"), "status"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "workCode"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "入职日期"), "companystartdate"));
columns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(86184, "次数"), "acctTimes").setDisplay(WeaBoolAttr.FALSE));
if (StrUtil.isNotBlank(param.getName())) {
columns = columns.stream().filter(column -> column.getText().contains(param.getName())).collect(Collectors.toList());
}
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
List<WeaTableColumn> collect = salaryItemList.stream().filter(po -> {
String name = param.getName();
if (StrUtil.isNotEmpty(name)) {
return po.getName() != null && po.getName().contains(name);
}
return true;
}).sorted((o1, o2) -> {
if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) {
Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType();
Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType();
return systemType1.compareTo(systemType2);
} else {
Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex();
Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex();
return sortedIndex2.compareTo(sortedIndex1);
}
}).map(item -> new WeaTableColumn("100px", item.getName(), item.getId() + SalaryConstant.DYNAMIC_SUFFIX)).collect(Collectors.toList());
columns.addAll(collect);
Integer defaultSetting = param.getDefaultSetting();
Map<String, WeaTableColumn> columnMap = SalaryEntityUtil.convert2Map(columns, WeaTableColumn::getColumn);
List<WeaTableColumn> checkedList = new ArrayList<>();
//是否查询默认设置
PageListSettingPO pageListSettingPO;
if (defaultSetting == 0) {
pageListSettingPO = getPageListSettingMapper().getByPage(page, 0, (long) user.getUID());
//查不到个人查默认
if (pageListSettingPO == null) {
pageListSettingPO = getPageListSettingMapper().getByPage(page, 1, null);
}
} else {
pageListSettingPO = getPageListSettingMapper().getByPage(page, 1, null);
}
//查询选中的项目
if (pageListSettingPO != null) {
checkedList = Optional.ofNullable(pageListSettingPO.getSetting()).orElse(new ArrayList<>()).stream().map(s -> columnMap.getOrDefault(s, new WeaTableColumn())).collect(Collectors.toList());
} else {
checkedList = columns;
}
return PageListTemplateDTO.builder().setting(columns).checked(checkedList).build();
}
return PageListTemplateDTO.builder().setting(new ArrayList<>()).checked(new ArrayList<>()).build();
}
@Override
public void resetPageListSetting(PageListSettingResetParam param) {
ValidUtil.doValidator(param);
String page = param.getPage();
//个人设置
PageListSettingPO selfSetting = getPageListSettingMapper().getByPage(page, 0, (long) user.getUID());
if (selfSetting != null) {
getPageListSettingMapper().delete(selfSetting);
}
return result;
}
@Override
@ -149,27 +196,23 @@ public class SettingServiceImpl extends Service implements SettingService {
}
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listAll();
List<WeaTableColumn> collect = salaryItemList.stream()
.filter(po -> {
String name = param.getName();
if (StrUtil.isNotEmpty(name)) {
return po.getName() != null && po.getName().contains(name);
}
return true;
})
.sorted((o1, o2) -> {
if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) {
Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType();
Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType();
return systemType1.compareTo(systemType2);
} else {
Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex();
Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex();
return sortedIndex2.compareTo(sortedIndex1);
}
})
.map(item -> new WeaTableColumn("100px", item.getName(), item.getId() + SalaryConstant.DYNAMIC_SUFFIX))
.collect(Collectors.toList());
List<WeaTableColumn> collect = salaryItemList.stream().filter(po -> {
String name = param.getName();
if (StrUtil.isNotEmpty(name)) {
return po.getName() != null && po.getName().contains(name);
}
return true;
}).sorted((o1, o2) -> {
if (o1.getSortedIndex() == null && o2.getSortedIndex() == null) {
Integer systemType1 = o1.getSystemType() == null ? 0 : o1.getSystemType();
Integer systemType2 = o2.getSystemType() == null ? 0 : o2.getSystemType();
return systemType1.compareTo(systemType2);
} else {
Integer sortedIndex1 = o1.getSortedIndex() == null ? 0 : o1.getSortedIndex();
Integer sortedIndex2 = o2.getSortedIndex() == null ? 0 : o2.getSortedIndex();
return sortedIndex2.compareTo(sortedIndex1);
}
}).map(item -> new WeaTableColumn("100px", item.getName(), item.getId() + SalaryConstant.DYNAMIC_SUFFIX)).collect(Collectors.toList());
columns.addAll(collect);
@ -178,10 +221,7 @@ public class SettingServiceImpl extends Service implements SettingService {
if (id != null) {
PageListTemplatePO po = getPageListTemplateMapper().getById(id);
if (po != null) {
checkedList = Optional.ofNullable(po.getSetting()).orElse(new ArrayList<>())
.stream()
.map(s -> columnMap.getOrDefault(s, new WeaTableColumn()))
.collect(Collectors.toList());
checkedList = Optional.ofNullable(po.getSetting()).orElse(new ArrayList<>()).stream().map(s -> columnMap.getOrDefault(s, new WeaTableColumn())).collect(Collectors.toList());
}
}
@ -205,23 +245,16 @@ public class SettingServiceImpl extends Service implements SettingService {
PageLinkPO link = getPageLinkMapper().getLink((long) user.getUID(), SALARY_DETAILS_REPORT.getValue());
Collection<TaxAgentPO> taxAgentPOS = getTaxAgentService().listAllTaxAgents((long) user.getUID());
List<String> taxIds = SalaryEntityUtil.properties(taxAgentPOS, po -> po.getId().toString(), Collectors.toList());
pos = pos.stream()
.filter(po -> {
if (po.getSharedType() == 1) {
List limitIds = po.getLimitIds();
List<String> collect = new ArrayList<>();
for (int i = 0; i < limitIds.size(); i++) {
collect.add(limitIds.get(i).toString());
}
return CollectionUtil.isNotEmpty(limitIds) && CollectionUtil.intersection(collect, taxIds).size() != 0;
}
return true;
})
.peek(po -> {
po.setChecked(link != null && po.getId().equals(link.getTemplateId()));
})
.collect(Collectors.toList());
List<Long> taxIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList());
pos = pos.stream().filter(po -> {
if (po.getSharedType() == 1) {
List<Long> limitIds = po.getLimitIds();
return CollectionUtil.isNotEmpty(limitIds) && CollectionUtil.intersection(limitIds, taxIds).size() != 0;
}
return true;
}).peek(po -> {
po.setChecked(link != null && po.getId().equals(link.getTemplateId()));
}).collect(Collectors.toList());
return pos;
}
@ -233,19 +266,7 @@ public class SettingServiceImpl extends Service implements SettingService {
PageListTemplatePO po;
if (id == null) {
po = PageListTemplatePO.builder()
.id(IdGenerator.generate())
.page(param.getPage())
.name(param.getName())
.sharedType(param.getSharedType())
.limitIds(param.getLimitIds())
.setting(param.getSetting())
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(0)
.tenantKey(DEFAULT_TENANT_KEY)
.build();
po = PageListTemplatePO.builder().id(IdGenerator.generate()).page(param.getPage()).name(param.getName()).sharedType(param.getSharedType()).limitIds(param.getLimitIds()).setting(param.getSetting()).creator((long) user.getUID()).createTime(now).updateTime(now).deleteType(0).tenantKey(DEFAULT_TENANT_KEY).build();
getPageListTemplateMapper().insertIgnoreNull(po);
} else {
po = getPageListTemplateMapper().getById(id);
@ -273,17 +294,7 @@ public class SettingServiceImpl extends Service implements SettingService {
Set<Long> ids = SalaryEntityUtil.properties(pageLinkPOS, PageLinkPO::getId);
getPageLinkMapper().deleteByIds(ids);
}
PageLinkPO pageLinkPO = PageLinkPO.builder()
.id(IdGenerator.generate())
.employeeId((long) user.getUID())
.page(param.getPage())
.templateId(param.getTemplateId())
.tenantKey(DEFAULT_TENANT_KEY)
.createTime(new Date())
.updateTime(new Date())
.creator((long) user.getUID())
.deleteType(0)
.build();
PageLinkPO pageLinkPO = PageLinkPO.builder().id(IdGenerator.generate()).employeeId((long) user.getUID()).page(param.getPage()).templateId(param.getTemplateId()).tenantKey(DEFAULT_TENANT_KEY).createTime(new Date()).updateTime(new Date()).creator((long) user.getUID()).deleteType(0).build();
getPageLinkMapper().insertIgnoreNull(pageLinkPO);
}

View File

@ -21,6 +21,7 @@ import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.auth.AuthFilterTypeEnum;
import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum;
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.datacollection.VariableArchiveMapper;
import com.engine.salary.service.*;
@ -262,8 +263,6 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi
//动态列组装
List<WeaTableColumn> columns = VariableArchiveBO.buildVariableArchiveTable(variableItems);
columns.add(0, new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(85429, "薪资所属月"), "salaryMonth"));
Map<String, Object> datas = new HashMap<>();
datas.put("data", resultMap);
datas.put("column", columns);
@ -277,6 +276,7 @@ public class VariableArchiveServiceImpl extends Service implements VariableArchi
.map(po -> VariableItemListDTO.builder()
.id(po.getId())
.name(po.getName())
.dataType(SalaryDataTypeEnum.parseByValue(po.getDataType()).getValue())
.build())
.collect(Collectors.toList());
return variableItemDTOList;

View File

@ -176,4 +176,32 @@ public class SalarySysConstant {
* 主次账号开启标识 1开启
*/
public static final String OPEN_SECONDARY_ACCOUNT = "openSecondaryAccount";
/**
* 展示薪资核算审批设置按钮
*/
public static final String SHOW_SALARY_ACCT_APPROVAL = "SHOW_SALARY_ACCT_APPROVAL";
/**
* 开启核算记录审批功能
*/
public static final String SALARY_APPROVAL_STATUS = "SALARY_APPROVAL_STATUS";
/**
* 开启审批的核算记录允许手动归档
*/
public static final String APPROVAL_CAN_MANUAL_FILE_STATUS = "APPROVAL_CAN_MANUAL_FILE_STATUS";
/**
* 开启审批的核算记录允许重新核算
*/
public static final String APPROVAL_CAN_RE_CALC_STATUS = "APPROVAL_CAN_RE_CALC_STATUS";
/**
* 审批流程发起后允许修改核算数据
*/
public static final String APPROVAL_CAN_EDIT_RESULT_STATUS = "APPROVAL_CAN_EDIT_RESULT_STATUS";
}

View File

@ -95,6 +95,9 @@ public class SalaryTokenUtil {
// 获取appid的id
String appidId = baseBean.getPropValue("hrmSalaryBillToken", "appid_id");
if (StringUtils.isBlank(appidId)) {
return resultMap;
}
String ip = baseBean.getPropValue("hrmSalaryBillToken", "ip");
rs.execute("select APPID from ECOLOGY_BIZ_EC where id =" + appidId);
// 获取appid

View File

@ -17,6 +17,11 @@ public class PageInfo<T> extends com.engine.salary.component.PageInfo<T> {
this.columns.addAll(columns);
}
public void clearAndSetColumns(List<Column> columns) {
this.columns.clear();
this.columns.addAll(columns);
}
List<Column> columns = new ArrayList<>();
List<DataSource> dataSource = new ArrayList<>();

View File

@ -68,6 +68,14 @@ public class SalaryCommonController {
return new ResponseResult<PageListSettingSaveParam, String>(user).run(getSalaryCommonWrapper(user)::savePageListSetting, param);
}
@POST
@Path("/pageList/reset/setting")
@Produces(MediaType.APPLICATION_JSON)
public String resetPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody PageListSettingResetParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<PageListSettingResetParam, String>(user).run(getSalaryCommonWrapper(user)::resetPageListSetting, param);
}
/**
* 页面默认值
* @param request
@ -80,7 +88,7 @@ public class SalaryCommonController {
@Produces(MediaType.APPLICATION_JSON)
public String getPageListSetting(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody PageListSettingQueryParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<PageListSettingQueryParam, Map>(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param);
return new ResponseResult<PageListSettingQueryParam, PageListTemplateDTO>(user).run(getSalaryCommonWrapper(user)::getPageListSetting, param);
}
/**

View File

@ -2,8 +2,10 @@ package com.engine.salary.web;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.SalarySobExtRangePO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
import com.engine.salary.entity.salaryitem.dto.SalaryItemSobListDTO;
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.*;
import com.engine.salary.entity.salarysob.param.*;
import com.engine.salary.entity.salarysob.po.SalarySobItemGroupPO;
@ -74,6 +76,10 @@ public class SalarySobController {
return ServiceUtil.getService(SalarySobBackItemWrapper.class, user);
}
private SalaryApprovalWrapper getSalaryApprovalWrapper(User user) {
return ServiceUtil.getService(SalaryApprovalWrapper.class, user);
}
/**********************************薪资账套 start*********************************/
/**
@ -591,4 +597,82 @@ public class SalarySobController {
/**********************************校验规则 end*********************************/
/**********************************薪资审批规则 start*********************************/
/**
* 薪资审批规则表单
*/
@POST
@Path("/salaryApproval/getForm")
@Produces(MediaType.APPLICATION_JSON)
public String salaryApprovalForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryApprovalQueryParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryApprovalQueryParam, SalaryApprovalDTO>(user).run(getSalaryApprovalWrapper(user)::salaryApprovalForm, queryParam);
}
/**
* 保存薪资审批规则表单
*/
@POST
@Path("/salaryApproval/saveForm")
@Produces(MediaType.APPLICATION_JSON)
public String saveSalaryApprovalForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryApprovalDTO saveParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryApprovalDTO, String>(user).run(getSalaryApprovalWrapper(user)::saveSalaryApprovalForm, saveParam);
}
/**
* 薪资审批可选薪资项目
*/
@POST
@Path("/salaryApproval/listSalaryItem")
@Produces(MediaType.APPLICATION_JSON)
public String listSalaryApprovalItem(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemSearchParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryItemSearchParam, List<SalaryItemPO>>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalItem, queryParam);
}
/**
* 根据核算记录id获取审批信息
*/
@GET
@Path("/salaryApproval/getApprovalInfoByRecordId")
@Produces(MediaType.APPLICATION_JSON)
public String getApprovalInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "salaryAcctRecordId")Long salaryAcctRecordId ) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, SalaryApprovalDTO>(user).run(getSalaryApprovalWrapper(user)::getApprovalInfoByRecordId, salaryAcctRecordId);
}
/**
* 获取审批时薪资核算结果
* @param request
* @param response
* @param param
* @return
*/
@POST
@Path("/salaryApproval/acctresult/list")
@Produces(MediaType.APPLICATION_JSON)
public String listSalaryApprovalAcctResult(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryAcctResultQueryParam, Map<String, Object>>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalAcctResult, param);
}
/**
* 保存审批流程id
* @param request
* @param response
* @param param
* @return
*/
@POST
@Path("/salaryApproval/saveRequestId")
@Produces(MediaType.APPLICATION_JSON)
public String saveApprovalRequestId(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody ApprovalRequestSaveParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<ApprovalRequestSaveParam, String>(user).run(getSalaryApprovalWrapper(user)::saveApprovalRequestId, param);
}
/**********************************薪资审批规则 start*********************************/
}

View File

@ -15,16 +15,22 @@ import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctSobConfigPO;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO;
import com.engine.salary.entity.salarysob.po.*;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.*;
import com.engine.salary.service.impl.*;
import com.engine.salary.sys.constant.SalarySysConstant;
import com.engine.salary.sys.entity.po.SalarySysConfPO;
import com.engine.salary.sys.service.SalarySysConfService;
import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
import com.engine.salary.util.SalaryDateUtil;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.SalarySobUtil;
import com.engine.salary.util.page.Column;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.valid.ValidUtil;
import com.engine.salary.wrapper.proxy.SalaryAcctRecordWrapperProxy;
@ -83,6 +89,16 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
}
private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) {
return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user);
}
private SalarySysConfService getSalarySysConfService(User user) {
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
}
// private ComInfoCache comInfoCache;
public PageInfo<SalaryAcctRecordListDTO> listPage(SalaryAcctRecordQueryParam queryParam) {
// 处理历史数据将薪资账套中将关联人员状态转换为List
@ -102,6 +118,24 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
// 查询薪资账套
Set<Long> salarySobIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getSalarySobId);
List<SalarySobPO> salarySobPOS = getSalarySobService(user).listByIds(salarySobIds);
// 规则设置中是否开启薪资审批按钮默认关闭
SalarySysConfPO salaryApprovalStatusConf = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_APPROVAL_STATUS);
List<Long> needApprovalSalarySobIds = new ArrayList<>();
// 默认可以重新核算可以手动归档
boolean approvalCanReCalc = true;
boolean approvalCanFile = true;
if (salaryApprovalStatusConf != null && salaryApprovalStatusConf.getConfValue().equals("1")) {
// 开启了薪资审批获取这开启审批的账套id
List<SalaryApprovalRulePO> salaryApprovalRules = getSalaryApprovalRuleService(user).listBySalarySobIds(salarySobIds);
needApprovalSalarySobIds = salaryApprovalRules.stream().filter(po -> po.getOpenApproval().equals(1)).map(SalaryApprovalRulePO::getSalarySobId).collect(Collectors.toList());
// 获取 开启审批的核算记录允许重新核算设置默认开启
SalarySysConfPO approvalCanReCalcFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_RE_CALC_STATUS);
approvalCanReCalc = approvalCanReCalcFileStatusPO == null ? true : approvalCanReCalcFileStatusPO.getConfValue().equals("1");
// 获取 开启审批的核算记录允许手动归档默认开启
SalarySysConfPO approvalCanManualFileStatusPO = getSalarySysConfService(user).getOneByCode(SalarySysConstant.APPROVAL_CAN_MANUAL_FILE_STATUS);
approvalCanFile = approvalCanManualFileStatusPO == null ? true : approvalCanManualFileStatusPO.getConfValue().equals("1");
}
// 查询薪资核算记录的创建人员的人员信息
List<Long> employeeIds = SalaryEntityUtil.properties(list, SalaryAcctRecordPO::getCreator, Collectors.toList());
List<DataCollectionEmployee> employeeComInfos = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds);
@ -114,8 +148,14 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord
List<TaxAgentPO> taxAgentPOS = getTaxAgentService(user).listAll();
// 转换成列表dto
List<SalaryAcctRecordListDTO> salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS);
List<SalaryAcctRecordListDTO> salaryAcctRecordListDTOS = SalaryAcctRecordBO.convert2ListDTO(list, salarySobPOS, employeeComInfos, salaryAcctEmployeeCountDTOS, salarySendCheckResult, taxAgentPOS, needApprovalSalarySobIds, approvalCanFile, approvalCanReCalc);
dtoPage.setList(salaryAcctRecordListDTOS);
// 规则设置中是否开启审批功能默认关闭
if (CollectionUtils.isEmpty(needApprovalSalarySobIds)) {
// 没有开启审批的
List<Column> columnList = dtoPage.getColumns().stream().filter(col -> !col.getKey().equals("approvalStatus")).collect(Collectors.toList());
dtoPage.clearAndSetColumns(columnList);
}
}
return dtoPage;
}

View File

@ -74,6 +74,10 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
}
private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) {
return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user);
}
/**
* 薪资核算列表
*
@ -211,6 +215,13 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult
public void calculate(SalaryAcctCalculateParam calculateParam) {
log.info("开始核算V1{}", calculateParam);
// 校验是否可以编辑
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(calculateParam.getSalaryAcctRecordId());
boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO);
if (!recordIsCanEdit) {
throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程");
}
//当前登陆人员
DataCollectionEmployee simpleEmployee = new DataCollectionEmployee();
simpleEmployee.setEmployeeId((long) user.getUID());

View File

@ -0,0 +1,168 @@
package com.engine.salary.wrapper;
import com.api.formmode.mybatis.util.SqlProxyHandle;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.component.WeaTableColumnGroup;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.bo.SalarySobItemAggregateBO;
import com.engine.salary.entity.salarysob.dto.SalaryApprovalDTO;
import com.engine.salary.entity.salarysob.dto.SalarySobEmpFieldDTO;
import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam;
import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam;
import com.engine.salary.entity.salarysob.po.SalarySobEmpFieldPO;
import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.sys.SalarySysConfMapper;
import com.engine.salary.service.*;
import com.engine.salary.service.impl.*;
import com.engine.salary.sys.entity.po.SalarySysConfPO;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.engine.salary.util.valid.ValidUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.math.NumberUtils;
import weaver.hrm.User;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import static com.engine.salary.sys.constant.SalarySysConstant.SALARY_ACCT_FIXED_COLUMNS;
/**
* 薪资账套的薪资审批
* <p>Copyright: Copyright (c) 2024</p>
* <p>Company: 泛微软件</p>
*
* @author qiantao
* @version 1.0
**/
public class SalaryApprovalWrapper extends Service {
private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) {
return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user);
}
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}
private SalaryAcctResultService getSalaryAcctResultService(User user) {
return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user);
}
private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) {
return ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user);
}
private SalaryItemService getSalaryItemService(User user) {
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
}
private SalarySysConfMapper getSalarySysConfMapper() {
return SqlProxyHandle.getProxy(SalarySysConfMapper.class);
}
/**
* 薪资账套的薪资审批规则
*
* @param queryParam 查询参数
* @return
*/
public SalaryApprovalDTO salaryApprovalForm(SalaryApprovalQueryParam queryParam) {
ValidUtil.doValidator(queryParam);
return getSalaryApprovalRuleService(user).salaryApprovalForm(queryParam);
}
/**
* 保存薪资账套的薪资审批规则
*
* @param salaryApprovalDTO
*
*/
public void saveSalaryApprovalForm(SalaryApprovalDTO salaryApprovalDTO) {
getSalaryApprovalRuleService(user).saveSalaryApprovalForm(salaryApprovalDTO);
}
public List<SalaryItemPO> listSalaryApprovalItem(SalaryItemSearchParam queryParam) {
return getSalaryApprovalRuleService(user).listSalaryApprovalItem(queryParam);
}
public SalaryApprovalDTO getApprovalInfoByRecordId(Long salaryAcctRecordId) {
return getSalaryApprovalRuleService(user).getApprovalInfoByRecordId(salaryAcctRecordId);
}
public Map<String, Object> listSalaryApprovalAcctResult(SalaryAcctResultQueryParam queryParam) {
ValidUtil.doValidator(queryParam);
// 审批信息
SalaryApprovalDTO approvalInfoByRecordId = getSalaryApprovalRuleService(user).getApprovalInfoByRecordId(queryParam.getSalaryAcctRecordId());
// 查询薪资核算记录
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId());
if (Objects.isNull(salaryAcctRecordPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
}
// 查询薪资核算结果分页
PageInfo<Map<String, Object>> page = getSalaryAcctResultService(user).listPageByParam(queryParam);
// 构建薪资核算结果审批列表的表头
List<WeaTableColumnGroup> columns = Lists.newArrayList();
// 查询薪资账套的员工信息字段
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
List<SalarySobEmpFieldDTO> salarySobEmpFieldDTOS = new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS);
// 获取薪资项目信息
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listAll();
Map<Long, Integer> salaryItemWidthMap = SalaryEntityUtil.convert2Map(salaryItemPOS, SalaryItemPO::getId, SalaryItemPO::getWidth);
// 员工信息字段
for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobEmpFieldDTOS) {
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName(), 0), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId()));
}
// 薪资项目分组下的薪资项目
for (SalaryApprovalDTO.approvalItemGroup groupDTO : approvalInfoByRecordId.getApprovalItemGroup()) {
if (CollectionUtils.isEmpty(groupDTO.getApprovalItems())) {
continue;
}
List<WeaTableColumnGroup> childrenColumns = Lists.newArrayList();
for (SalaryApprovalDTO.approvalItem approvalItemDTO : groupDTO.getApprovalItems()) {
childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(approvalItemDTO.getSalaryItemName(), salaryItemWidthMap.getOrDefault(approvalItemDTO.getSalaryItemId(), 0) == null ? 0 : salaryItemWidthMap.getOrDefault(approvalItemDTO.getSalaryItemId(), 0)), approvalItemDTO.getSalaryItemName(), "" + approvalItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue().toString()));
}
WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(groupDTO.getGroupName(), 0), groupDTO.getGroupName(), groupDTO.getGroupName(), childrenColumns);
columns.add(weaTableColumnWapper);
}
// 获取固定列头数
SalarySysConfPO salaryAcctFixedColumns = getSalarySysConfMapper().getOneByCode(SALARY_ACCT_FIXED_COLUMNS);
if (salaryAcctFixedColumns != null) {
int fixedNum = NumberUtils.isCreatable(salaryAcctFixedColumns.getConfValue()) ? Integer.valueOf(salaryAcctFixedColumns.getConfValue()) : 3;
if (fixedNum == 0) {
fixedNum = 3;
}
for (int i = 0; i < fixedNum; i++) {
columns.get(i).setFixed("left");
}
}
Map<String, Object> datas = new HashMap<>();
datas.put("pageInfo", page);
datas.put("columns", columns);
return datas;
}
/**
* 保存审批流程id
* @param saveParam
*/
public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) {
getSalaryApprovalRuleService(user).saveApprovalRequestId(saveParam);
}
}

View File

@ -12,7 +12,6 @@ import com.engine.salary.service.impl.SettingServiceImpl;
import weaver.hrm.User;
import java.util.List;
import java.util.Map;
public class SalaryCommonWrapper extends Service {
@ -33,12 +32,16 @@ public class SalaryCommonWrapper extends Service {
getSalaryCacheService(user).remove(key);
}
public void savePageListSetting(PageListSettingSaveParam pageListSettingSaveParam) {
getSettingService(user).savePageListSetting(pageListSettingSaveParam);
public void savePageListSetting(PageListSettingSaveParam param) {
getSettingService(user).savePageListSetting(param);
}
public void resetPageListSetting(PageListSettingResetParam param) {
getSettingService(user).resetPageListSetting(param);
}
public Map getPageListSetting(PageListSettingQueryParam param) {
public PageListTemplateDTO getPageListSetting(PageListSettingQueryParam param) {
return getSettingService(user).getPageListSetting(param);
}
@ -59,4 +62,5 @@ public class SalaryCommonWrapper extends Service {
getSettingService(user).changePageListTemplate(param);
}
}

View File

@ -75,9 +75,6 @@ public class SalarySobItemWrapper extends Service {
Integer searchPageSize = queryParam.getPageSize();
Integer searchCurrent = queryParam.getCurrent();
// 分页查询薪资项目
queryParam.setPageSize(10000000);
queryParam.setCurrent(1);
PageInfo<SalaryItemPO> page = getSalaryItemService(user).listPageByParam(queryParam);
List<SalaryItemPO> salaryItemList = page.getList();
@ -177,4 +174,5 @@ public class SalarySobItemWrapper extends Service {
public SalarySobItemFormDTO getSalaryItemForm(SalarySobItemPO param) {
return getSalarySobItemService(user).getSalaryItemForm(param);
}
}

View File

@ -50,14 +50,14 @@ public class VariableArchiveWrapper extends Service {
*/
public Map<String, Object> list(VariableArchiveQueryParam queryParam) {
//薪资档案列表
// 薪资档案列表
PageInfo<VariableArchiveListDTO> pageInfo = getVariableArchiveService(user).listPage(queryParam);
List<VariableArchiveListDTO> salaryArchives = pageInfo.getList();
// 获取所有浮动薪酬项目
List<VariableItemPO> variableItems = getVariableItemService(user).listAll();
//整合所有的显示列固定列+薪资项目动态列
// 整合所有的显示列固定列+薪资项目动态列
List<Map<String, Object>> listMaps = getVariableArchiveService(user).buildVariableArchiveData(salaryArchives);
PageInfo<Map<String, Object>> pageInfos = new PageInfo<Map<String, Object>>(listMaps);