diff --git a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java index eeb09a7cb..8ebe19131 100644 --- a/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java +++ b/src/com/engine/salary/entity/salaryacct/param/SalaryAcctResultQueryParam.java @@ -28,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; //人员姓名 @@ -66,15 +66,15 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam { private Collection salaryItemIds; //其他条件 - private Collection otherConditions; + private List otherConditions; @Data @NoArgsConstructor @AllArgsConstructor - public class OtherCondition{ - private Long itemIds; + public static class OtherCondition { + private Long itemId; private FilterEnum filter; - private String params; + private List params; } } diff --git a/src/com/engine/salary/enums/common/FilterEnum.java b/src/com/engine/salary/enums/common/FilterEnum.java index 5db5aca9e..7d7c6b58e 100644 --- a/src/com/engine/salary/enums/common/FilterEnum.java +++ b/src/com/engine/salary/enums/common/FilterEnum.java @@ -5,34 +5,35 @@ 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 { BT("BT", "包含", 1) { @Override - public Predicate filter(String... params) { - return a -> a.contentEquals(params[0]); + public Predicate filter(List params) { + return a -> a.contentEquals(params.get(0)); } }, EQ("EQ", "等于", 1) { @Override - public Predicate filter(String... params) { - return a -> a.equals(params[0]); + public Predicate filter(List params) { + return a -> a.equals(params.get(0)); } }, NE("NE", "不等于", 1) { @Override - public Predicate filter(String... params) { - return a -> !a.equals(params[0]); + public Predicate filter(List params) { + return a -> !a.equals(params.get(0)); } }, GT("GT", "大于", 1) { @Override - public Predicate filter(String... params) { + public Predicate filter(List params) { return a -> { - if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params[0])) { - return new BigDecimal(a).compareTo(new BigDecimal(params[0])) > 0; + if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) { + return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) > 0; } return false; }; @@ -40,10 +41,10 @@ public enum FilterEnum implements BaseEnum { }, LT("LT", "小于", 1) { @Override - public Predicate filter(String... params) { + public Predicate filter(List params) { return a -> { - if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params[0])) { - return new BigDecimal(a).compareTo(new BigDecimal(params[0])) < 0; + if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) { + return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) < 0; } return false; }; @@ -51,10 +52,10 @@ public enum FilterEnum implements BaseEnum { }, GE("GE", "大于等于", 1) { @Override - public Predicate filter(String... params) { + public Predicate filter(List params) { return a -> { - if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params[0])) { - return new BigDecimal(a).compareTo(new BigDecimal(params[0])) >= 0; + if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) { + return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) >= 0; } return false; }; @@ -62,10 +63,10 @@ public enum FilterEnum implements BaseEnum { }, LE("LE", "小于等于", 1) { @Override - public Predicate filter(String... params) { + public Predicate filter(List params) { return a -> { - if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params[0])) { - return new BigDecimal(a).compareTo(new BigDecimal(params[0])) <= 0; + if (NumberUtils.isCreatable(a) && NumberUtils.isCreatable(params.get(0))) { + return new BigDecimal(a).compareTo(new BigDecimal(params.get(0))) <= 0; } return false; }; @@ -73,13 +74,13 @@ public enum FilterEnum implements BaseEnum { }, ISEMPTY("ISEMPTY", "为空", 1) { @Override - public Predicate filter(String... params) { + public Predicate filter(List params) { return StringUtils::isEmpty; } }, ISNOTEMPTY("ISNOTEMPTY", "包含", 1) { @Override - public Predicate filter(String... params) { + public Predicate filter(List params) { return StringUtils::isNotEmpty; } }; @@ -97,7 +98,7 @@ public enum FilterEnum implements BaseEnum { private int labelId; - public abstract Predicate filter(String... params); + public abstract Predicate filter(List params); @Override diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index cee8c3a63..d883e8cd0 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -302,23 +302,37 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe @Override public PageInfo> listPageByParam(SalaryAcctResultQueryParam queryParam) { -// // 查询薪资核算人员(分页) -// PageInfo page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam); -// // 查询薪资核算结果 -// List> data = listBySalaryAcctEmployees(page.getList(), queryParam); -// // 薪资核算结果的分页结果 -// PageInfo> resultPage = new PageInfo<>(); -// resultPage.setList(data); -// resultPage.setTotal(page.getTotal()); -// resultPage.setPageNum(page.getPageNum()); -// resultPage.setPageSize(page.getPageSize()); - Collection otherConditions = queryParam.getOtherConditions(); + //其他条件 + List otherConditions = queryParam.getOtherConditions(); + otherConditions = new ArrayList<>(); + otherConditions.add(new SalaryAcctResultQueryParam.OtherCondition(1695204436145L, FilterEnum.LE, Arrays.asList("5000"))); + if (CollectionUtils.isNotEmpty(otherConditions)) { + List items = SalaryEntityUtil.properties(otherConditions, SalaryAcctResultQueryParam.OtherCondition::getItemId, Collectors.toList()); + List 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 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 salaryAcctEmpId = SalaryEntityUtil.properties(list, SalaryAcctResultPO::getSalaryAcctEmpId, Collectors.toList()); + queryParam.setIds(salaryAcctEmpId); + } - List list = listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), Collections.singletonList(1695204436145L)); - list = list.stream().filter(a -> FilterEnum.LT.filter("5000").test(a.getResultValue())).collect(Collectors.toList()); + // 查询薪资核算人员(分页) + PageInfo page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam); + // 查询薪资核算结果 + List> data = listBySalaryAcctEmployees(page.getList(), queryParam); + // 薪资核算结果的分页结果 + PageInfo> resultPage = new PageInfo<>(); + resultPage.setList(data); + resultPage.setTotal(page.getTotal()); + resultPage.setPageNum(page.getPageNum()); + resultPage.setPageSize(page.getPageSize()); - return null; + return resultPage; } @Override