组织领域查询优化

This commit is contained in:
Boolean
2023-06-23 12:15:18 +08:00
parent 413d071420
commit 555039fbcf
4 changed files with 46 additions and 14 deletions

View File

@@ -1,5 +1,6 @@
package com.xboe.module.boecase.api;
import cn.hutool.core.collection.CollUtil;
import com.xboe.common.PageList;
import com.xboe.common.Pagination;
import com.xboe.common.utils.StringUtil;
@@ -105,9 +106,9 @@ public class CasesApi extends ApiBaseController {
}
@PostMapping("/queryListV2")
public JsonResponse<PageList<Cases>> queryCaseBreV2(@Validated CasePageVo req){
public JsonResponse<PageList<Cases>> queryCaseBreV2(@Validated @RequestBody CasePageVo req){
String type = req.getType();
PageList<Cases> views = null;
PageList<Cases> views;
if (type.equals("recommend")) {
views = casesService.queryRecommendPageCasesV2(req);
} else {
@@ -115,8 +116,9 @@ public class CasesApi extends ApiBaseController {
}
if(views!=null){
if(views.getList()!=null && !views.getList().isEmpty()){
for (Cases c:views.getList()) {
List<Cases> cases = views.getList();
if(CollUtil.isNotEmpty(cases)){
for (Cases c: cases) {
StringBuffer stringBuffer = new StringBuffer();
List<CasesMajorType> caseId = casesMajorTypeDao.findList(FieldFilters.eq("caseId", c.getId()));
if(caseId!=null && !caseId.isEmpty()){

View File

@@ -62,21 +62,21 @@ public class CasePageVo extends PageDto {
public List<String> getOrg1() {
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
return orgDomainDtos.stream().map(OrgDomainDto::getOrgDomainParent).filter(StrUtil::isNotBlank).collect(Collectors.toList());
return orgDomainDtos.stream().map(OrgDomainDto::getParent).filter(StrUtil::isNotBlank).collect(Collectors.toList());
}
return null;
}
public List<String> getOrg2() {
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
return orgDomainDtos.stream().map(OrgDomainDto::getOrgDomainParent2).filter(StrUtil::isNotBlank).collect(Collectors.toList());
return orgDomainDtos.stream().flatMap(it->it.getChildren().stream()).map(OrgDomainDto::getParent).filter(StrUtil::isNotBlank).collect(Collectors.toList());
}
return null;
}
public List<String> getOrg3() {
if (CollectionUtils.isNotEmpty(this.orgDomainDtos)) {
return orgDomainDtos.stream().map(OrgDomainDto::getOrgDomainParent3).filter(StrUtil::isNotBlank).collect(Collectors.toList());
return orgDomainDtos.stream().flatMap(it->it.getChildren().stream().flatMap(i->i.getChildren().stream())).map(OrgDomainDto::getParent).filter(StrUtil::isNotBlank).collect(Collectors.toList());
}
return null;
}

View File

@@ -2,19 +2,17 @@ package com.xboe.module.boecase.dto;
import lombok.Data;
import java.util.List;
@Data
public class OrgDomainDto {
/**
* 组织领域1级
*/
private String orgDomainParent;
private String parent;
/**
* 组织领域2
* 组织领域
*/
private String orgDomainParent2;
/**
* 组织领域3级
*/
private String orgDomainParent3;
private List<OrgDomainDto> children;
}

View File

@@ -219,6 +219,38 @@ public class CasesServiceImpl implements ICasesService {
return page;
}
}
List<OrgDomainDto> orgDomainDtos = caseVo.getOrgDomainDtos();
IFieldFilter orgDomain = null;
if(CollUtil.isNotEmpty(orgDomainDtos)){
for (int i = 0; i < orgDomainDtos.size(); i++) {
OrgDomainDto domainDto = orgDomainDtos.get(i);
String orgDomainParent = domainDto.getParent();
IFieldFilter itemFilter = FieldFilters.eq("orgDomainParent",orgDomainParent);
List<OrgDomainDto> orgDomainParent2 = domainDto.getChildren();
if (CollUtil.isNotEmpty(orgDomainParent2)) {
List<String> seconds = orgDomainParent2.stream().map(OrgDomainDto::getParent).collect(Collectors.toList());
IFieldFilter orgDomainParentFilter = FieldFilters.in("orgDomainParent2", seconds);
itemFilter = FieldFilters.and(itemFilter, orgDomainParentFilter);
}
for (OrgDomainDto orgDomainDto : orgDomainParent2) {
List<OrgDomainDto> orgDomainParent3 = orgDomainDto.getChildren();
if (CollUtil.isNotEmpty(orgDomainParent3)) {
List<String> thirds = orgDomainParent3.stream().map(OrgDomainDto::getParent).collect(Collectors.toList());
IFieldFilter orgDomainParent3Filter = FieldFilters.eq("orgDomainParent3", thirds);
itemFilter = FieldFilters.and(itemFilter, orgDomainParent3Filter);
}
}
if (i==0) {
orgDomain = itemFilter;
} else {
orgDomain = FieldFilters.or(orgDomain, itemFilter);
}
}
}
if (Objects.nonNull(orgDomain)) {
filters.add(orgDomain);
}
if(StringUtils.isNotBlank(caseVo.getCaseType())){
filters.add(FieldFilters.eq("caseType",caseVo.getCaseType()));