自定义搜索

This commit is contained in:
钱涛 2023-09-25 16:53:01 +08:00
parent faeafbe5ad
commit 5d203b0783
3 changed files with 55 additions and 40 deletions

View File

@ -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<Long> salaryItemIds;
//其他条件
private Collection<OtherCondition> otherConditions;
private List<OtherCondition> 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<String> params;
}
}

View File

@ -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<String> {
BT("BT", "包含", 1) {
@Override
public Predicate<String> filter(String... params) {
return a -> a.contentEquals(params[0]);
public Predicate<String> filter(List<String> params) {
return a -> a.contentEquals(params.get(0));
}
},
EQ("EQ", "等于", 1) {
@Override
public Predicate<String> filter(String... params) {
return a -> a.equals(params[0]);
public Predicate<String> filter(List<String> params) {
return a -> a.equals(params.get(0));
}
},
NE("NE", "不等于", 1) {
@Override
public Predicate<String> filter(String... params) {
return a -> !a.equals(params[0]);
public Predicate<String> filter(List<String> params) {
return a -> !a.equals(params.get(0));
}
},
GT("GT", "大于", 1) {
@Override
public Predicate<String> filter(String... params) {
public Predicate<String> filter(List<String> 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<String> {
},
LT("LT", "小于", 1) {
@Override
public Predicate<String> filter(String... params) {
public Predicate<String> filter(List<String> 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<String> {
},
GE("GE", "大于等于", 1) {
@Override
public Predicate<String> filter(String... params) {
public Predicate<String> filter(List<String> 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<String> {
},
LE("LE", "小于等于", 1) {
@Override
public Predicate<String> filter(String... params) {
public Predicate<String> filter(List<String> 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<String> {
},
ISEMPTY("ISEMPTY", "为空", 1) {
@Override
public Predicate<String> filter(String... params) {
public Predicate<String> filter(List<String> params) {
return StringUtils::isEmpty;
}
},
ISNOTEMPTY("ISNOTEMPTY", "包含", 1) {
@Override
public Predicate<String> filter(String... params) {
public Predicate<String> filter(List<String> params) {
return StringUtils::isNotEmpty;
}
};
@ -97,7 +98,7 @@ public enum FilterEnum implements BaseEnum<String> {
private int labelId;
public abstract Predicate<String> filter(String... params);
public abstract Predicate<String> filter(List<String> params);
@Override

View File

@ -302,23 +302,37 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
@Override
public PageInfo<Map<String, Object>> listPageByParam(SalaryAcctResultQueryParam queryParam) {
// // 查询薪资核算人员分页
// PageInfo<SalaryAcctEmployeePO> page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam);
// // 查询薪资核算结果
// List<Map<String, Object>> data = listBySalaryAcctEmployees(page.getList(), queryParam);
// // 薪资核算结果的分页结果
// PageInfo<Map<String, Object>> resultPage = new PageInfo<>();
// resultPage.setList(data);
// resultPage.setTotal(page.getTotal());
// resultPage.setPageNum(page.getPageNum());
// resultPage.setPageSize(page.getPageSize());
Collection<SalaryAcctResultQueryParam.OtherCondition> otherConditions = queryParam.getOtherConditions();
//其他条件
List<SalaryAcctResultQueryParam.OtherCondition> otherConditions = queryParam.getOtherConditions();
otherConditions = new ArrayList<>();
otherConditions.add(new SalaryAcctResultQueryParam.OtherCondition(1695204436145L, FilterEnum.LE, Arrays.asList("5000")));
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());
queryParam.setIds(salaryAcctEmpId);
}
List<SalaryAcctResultPO> 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<SalaryAcctEmployeePO> page = getSalaryAcctEmployeeService(user).listPageByResultQueryParam(queryParam);
// 查询薪资核算结果
List<Map<String, Object>> data = listBySalaryAcctEmployees(page.getList(), queryParam);
// 薪资核算结果的分页结果
PageInfo<Map<String, Object>> resultPage = new PageInfo<>();
resultPage.setList(data);
resultPage.setTotal(page.getTotal());
resultPage.setPageNum(page.getPageNum());
resultPage.setPageSize(page.getPageSize());
return null;
return resultPage;
}
@Override