Merge branch 'release/2.9.6.2310.01' into release/个税版本

This commit is contained in:
钱涛 2023-10-08 16:21:12 +08:00
commit d5f5cb07ba
6 changed files with 176 additions and 5 deletions

View File

@ -46,4 +46,9 @@ public class SalarySendBaseInfoDTO {
// 能否发送
private Boolean canSend;
/**
* 是否支持导出工资单pdf
*/
private Boolean showPdfBtn;
}

View File

@ -2,6 +2,7 @@ package com.engine.salary.entity.salaryacct.param;
import com.engine.salary.common.BaseQueryParam;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.enums.common.FilterEnum;
import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum;
import com.engine.salary.util.valid.DataCheck;
import lombok.AllArgsConstructor;
@ -27,7 +28,7 @@ import java.util.List;
public class SalaryAcctResultQueryParam extends BaseQueryParam {
//薪资核算记录id
@DataCheck(require = true,message = "参数错误薪资核算记录ID不能为空")
@DataCheck(require = true, message = "参数错误薪资核算记录ID不能为空")
private Long salaryAcctRecordId;
//人员姓名
@ -63,4 +64,17 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam {
//薪资项目id
private Collection<Long> salaryItemIds;
//其他条件
private List<OtherCondition> otherConditions;
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class OtherCondition {
private Long itemId;
private FilterEnum filter;
private List<String> params;
}
}

View File

@ -60,6 +60,7 @@ public class SalaryFormulaEmployeeDTO {
private String dissmissdate;
//状态
@SalaryFormulaVar(defaultLabel = "状态", labelId = 98621, dataType = "string")
private String status;
@SalaryFormulaVar(defaultLabel = "状态", labelId = 98622, dataType = "string")

View File

@ -0,0 +1,120 @@
package com.engine.salary.enums.common;
import com.engine.salary.enums.BaseEnum;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import java.math.BigDecimal;
import java.util.List;
import java.util.function.Predicate;
public enum FilterEnum implements BaseEnum<String> {
BT("BT", "包含", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> a.contentEquals(params.get(0));
}
},
EQ("EQ", "等于", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> a.equals(params.get(0));
}
},
NE("NE", "不等于", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> !a.equals(params.get(0));
}
},
GT("GT", "大于", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> {
if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) {
return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) > 0;
}
return false;
};
}
},
LT("LT", "小于", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> {
if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) {
return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) < 0;
}
return false;
};
}
},
GE("GE", "大于等于", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> {
if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) {
return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) >= 0;
}
return false;
};
}
},
LE("LE", "小于等于", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return a -> {
if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) {
return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) <= 0;
}
return false;
};
}
},
ISEMPTY("ISEMPTY", "为空", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return StringUtils::isEmpty;
}
},
ISNOTEMPTY("ISNOTEMPTY", "包含", 1) {
@Override
public Predicate<String> filter(List<String> params) {
return StringUtils::isNotEmpty;
}
};
FilterEnum(String value, String defaultLabel, int labelId) {
this.value = value;
this.defaultLabel = defaultLabel;
this.labelId = labelId;
}
private String value;
private String defaultLabel;
private int labelId;
public abstract Predicate<String> filter(List<String> params);
@Override
public String getValue() {
return value;
}
@Override
public Integer getLabelId() {
return labelId;
}
@Override
public String getDefaultLabel() {
return defaultLabel;
}
}

View File

@ -24,6 +24,7 @@ import com.engine.salary.entity.salarysob.po.*;
import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.SalaryValueTypeEnum;
import com.engine.salary.enums.common.FilterEnum;
import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
@ -46,6 +47,7 @@ import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@ -310,8 +312,35 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
@Override
public PageInfo<Map<String, Object>> listPageByParam(SalaryAcctResultQueryParam queryParam) {
// 查询薪资核算人员分页
PageInfo<SalaryAcctEmployeePO> page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam);
PageInfo<SalaryAcctEmployeePO> page = null;
//其他条件
List<SalaryAcctResultQueryParam.OtherCondition> otherConditions = queryParam.getOtherConditions();
if (CollectionUtils.isNotEmpty(otherConditions)) {
List<Long> items = SalaryEntityUtil.properties(otherConditions, SalaryAcctResultQueryParam.OtherCondition::getItemId, Collectors.toList());
List<SalaryAcctResultPO> list = listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), items);
for (int i = 0; i < otherConditions.size(); i++) {
SalaryAcctResultQueryParam.OtherCondition otherCondition = otherConditions.get(i);
Long itemId = otherCondition.getItemId();
FilterEnum filter = otherCondition.getFilter();
List<String> params = otherCondition.getParams();
list = list.stream().filter(a -> Objects.equals(a.getSalaryItemId(), itemId)).filter(a -> filter.filter(params).test(a.getResultValue())).collect(Collectors.toList());
}
List<Long> salaryAcctEmpId = SalaryEntityUtil.properties(list, SalaryAcctResultPO::getSalaryAcctEmpId, Collectors.toList());
if (CollectionUtils.isEmpty(salaryAcctEmpId)) {
//条件不满足直接返回空列表
page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), new ArrayList<>(), SalaryAcctEmployeePO.class);
} else {
queryParam.setIds(salaryAcctEmpId);
// 查询薪资核算人员分页
page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam);
}
} else {
// 查询薪资核算人员分页
page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam);
}
// 查询薪资核算结果
List<Map<String, Object>> data = listBySalaryAcctEmployees(page.getList(), queryParam);
// 薪资核算结果的分页结果
@ -404,9 +433,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
// 查询人员信息
List<Long> employeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getEmployeeId, Collectors.toList());
List<DataCollectionEmployee> simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds);
simpleEmployees.forEach(e->{
simpleEmployees.forEach(e -> {
UserStatusEnum userStatusEnum = UserStatusEnum.parseByValue(Integer.parseInt(e.getStatus()));
if(userStatusEnum != null){
if (userStatusEnum != null) {
e.setStatusName(userStatusEnum.getDefaultLabel());
}
});

View File

@ -87,6 +87,7 @@ import java.util.*;
import java.util.stream.Collectors;
import static com.engine.salary.cache.SalaryCacheKey.SALARY_CACHE_SMS_CODE;
import static com.engine.salary.constant.HrmSalaryPayrollConf.GEN_PDF;
/**
* @Description: 工资单发放
@ -455,6 +456,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
.sendNum(salarySend.getSendNum())
.sendTotal(salarySend.getSendTotal())
.canSend(canSend)
.showPdfBtn(GEN_PDF)
// .salaryAcctType(salarySend.getSalaryAcctType().toString())
// .haveBackCalc(haveBackCalc ? NumberUtils.INTEGER_ONE : NumberUtils.INTEGER_ZERO)
.build();