From 555039fbcfac446c2648af38a30575b86b1a68f9 Mon Sep 17 00:00:00 2001 From: Boolean Date: Fri, 23 Jun 2023 12:15:18 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=BB=84=E7=BB=87=E9=A2=86=E5=9F=9F?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/boecase/api/CasesApi.java | 10 +++--- .../xboe/module/boecase/dto/CasePageVo.java | 6 ++-- .../xboe/module/boecase/dto/OrgDomainDto.java | 12 +++---- .../service/impl/CasesServiceImpl.java | 32 +++++++++++++++++++ 4 files changed, 46 insertions(+), 14 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java index e7d7160d..6e813b6c 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java @@ -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> queryCaseBreV2(@Validated CasePageVo req){ + public JsonResponse> queryCaseBreV2(@Validated @RequestBody CasePageVo req){ String type = req.getType(); - PageList views = null; + PageList 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 = views.getList(); + if(CollUtil.isNotEmpty(cases)){ + for (Cases c: cases) { StringBuffer stringBuffer = new StringBuffer(); List caseId = casesMajorTypeDao.findList(FieldFilters.eq("caseId", c.getId())); if(caseId!=null && !caseId.isEmpty()){ diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasePageVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasePageVo.java index 5e2024fe..085919c5 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasePageVo.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/CasePageVo.java @@ -62,21 +62,21 @@ public class CasePageVo extends PageDto { public List 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 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 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; } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/OrgDomainDto.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/OrgDomainDto.java index ee7f58c5..1036b47e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/OrgDomainDto.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dto/OrgDomainDto.java @@ -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 children; } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index b1893848..2308008e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -219,6 +219,38 @@ public class CasesServiceImpl implements ICasesService { return page; } } + List 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 orgDomainParent2 = domainDto.getChildren(); + if (CollUtil.isNotEmpty(orgDomainParent2)) { + List 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 orgDomainParent3 = orgDomainDto.getChildren(); + if (CollUtil.isNotEmpty(orgDomainParent3)) { + List 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())); From c77f32b11e6cd5e0486eeb9ced920270d835d8ee Mon Sep 17 00:00:00 2001 From: wangwenchao Date: Fri, 23 Jun 2023 16:59:57 +0800 Subject: [PATCH 2/4] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B?= =?UTF-8?q?=E6=8E=A8=E8=8D=90=E8=A1=A8=E4=BF=A1=E6=81=AF=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98=EF=BC=9B2.=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=A1=88=E4=BE=8B=E6=8E=A8=E8=8D=90=E8=A1=A8=E6=92=A4?= =?UTF-8?q?=E5=9B=9E=E6=93=8D=E4=BD=9C=E4=B8=AD=E6=9C=AA=E5=AF=B9=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E4=B8=AD=E7=9A=84=E8=AE=B0=E5=BD=95=E8=B5=B7=E4=BD=9C?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=9B3.=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=A1=88=E4=BE=8B=E6=8E=A8=E8=8D=90=E8=A1=A8=E4=B8=AD?= =?UTF-8?q?=E5=A4=9A=E4=BD=99=E7=9A=84=E6=8E=A8=E8=8D=90=E7=BB=84=E7=BB=87?= =?UTF-8?q?ID=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xboe/module/boecase/api/CasesRecommendApi.java | 6 +++--- .../java/com/xboe/module/boecase/entity/CasesRecommend.java | 3 --- .../boecase/service/impl/CasesRecommendServiceImpl.java | 5 ++++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java index 0d26a02a..a36e15ce 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -197,7 +197,7 @@ public class CasesRecommendApi extends ApiBaseController { }).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(rows)) { // 通过工具类创建writer - try (ExcelWriter writer = ExcelUtil.getWriter(true); + try (ExcelWriter writer = ExcelUtil.getWriter(); // 输出流 ServletOutputStream servletOutputStream = response.getOutputStream() ) { @@ -212,9 +212,9 @@ public class CasesRecommendApi extends ApiBaseController { writer.setColumnWidth(5, 20); writer.setColumnWidth(6, 20); // 此处的response.setContentType 和教程里的不同 - response.setContentType("application/octet-stream"); + response.setContentType("application/vnd.ms-excel;charset=utf-8"); // filename就是表格的名字,这个无所谓,反正前端还会重命名 - response.setHeader("Content-Disposition", "attachment;filename=推荐信息.xlsx"); + response.setHeader("Content-Disposition", "attachment;filename=推荐信息.xls"); writer.flush(servletOutputStream, true); } catch (Exception e) { diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommend.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommend.java index bc4816e1..7d536917 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommend.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommend.java @@ -46,9 +46,6 @@ public class CasesRecommend extends BaseEntity { /**查看率*/ @Column(name = "view_rate", length = 255) private String viewRate; - /**推荐组织ID*/ - @Column(name = "recommend_org_id", length = 20) - private String recommendOrgId; /**推荐组织名称*/ @Column(name = "recommend_org_name", length = 255) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java index 69a6715b..a3fa701f 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java @@ -61,7 +61,10 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService { public void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo) { // 查询 CasesRecommend db = casesRecommendDao.get(casesRecommendPushVo.getCasesRecommendId()); - if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress())){ + if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress()) + || CasesPushStatusEnum.WAIT_PUSH.getStatus().equals(db.getPushProgress()) + || CasesPushStatusEnum.PUSH_ING.getStatus().equals(db.getPushProgress()) + ){ // 当为推送成功时为 iCasesRecommendPushRecordService.rePushOrWithdraw(true, casesRecommendPushVo.getCasesRecommendId()); db.setPushProgress(CasesPushStatusEnum.PUSH_REVOKE.getStatus()); From 989f8ec11382abfcbe582918050d4a34dd06b3da Mon Sep 17 00:00:00 2001 From: Boolean Date: Fri, 23 Jun 2023 17:20:16 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/boecase/api/CasesApi.java | 1 + .../com/xboe/module/boecase/entity/Cases.java | 3 + .../entity/CasesRecommendPushRecord.java | 6 + .../service/impl/CasesServiceImpl.java | 137 +++++++++++------- 4 files changed, 96 insertions(+), 51 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java index 6e813b6c..edbfb3f1 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java @@ -109,6 +109,7 @@ public class CasesApi extends ApiBaseController { public JsonResponse> queryCaseBreV2(@Validated @RequestBody CasePageVo req){ String type = req.getType(); PageList views; + req.setUserId(getCurrent().getAccountId()); if (type.equals("recommend")) { views = casesService.queryRecommendPageCasesV2(req); } else { diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java index 05039700..3c1e367b 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java @@ -261,6 +261,9 @@ public class Cases extends BaseEntity { @Transient private List majorIds; + @Transient + private String recommendOrgName; + public Cases() { diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java index 8761d514..49b83179 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java @@ -91,5 +91,11 @@ public class CasesRecommendPushRecord extends BaseEntity { @Column(name = "remark") private String remark; + public CasesRecommendPushRecord() { + } + public CasesRecommendPushRecord(String recommendId,String caseId) { + this.recommendId = recommendId; + this.caseId = caseId; + } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 2308008e..2b70a315 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -4,17 +4,17 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.text.split.SplitIter; import cn.hutool.core.util.StrUtil; import com.xboe.common.OrderCondition; +import com.xboe.common.OrderDirection; import com.xboe.common.PageList; import com.xboe.common.utils.IDGenerator; import com.xboe.common.utils.StringUtil; import com.xboe.core.orm.*; -import com.xboe.module.boecase.dao.CasesDao; -import com.xboe.module.boecase.dao.CasesMajorTypeDao; -import com.xboe.module.boecase.dao.CasesMajorTypeRepoDao; -import com.xboe.module.boecase.dao.CasesRecordDao; +import com.xboe.module.boecase.dao.*; import com.xboe.module.boecase.dto.*; import com.xboe.module.boecase.entity.Cases; import com.xboe.module.boecase.entity.CasesMajorType; +import com.xboe.module.boecase.entity.CasesRecommend; +import com.xboe.module.boecase.entity.CasesRecommendPushRecord; import com.xboe.module.boecase.service.ICasesService; import com.xboe.module.dict.dao.SysDictionaryDao; import com.xboe.module.dict.entity.DictItem; @@ -22,6 +22,7 @@ import com.xboe.orm.CustomFieldInFilter; import com.xboe.school.vo.CasesVo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; @@ -31,10 +32,8 @@ import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.transaction.Transactional; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; @Slf4j @@ -57,8 +56,11 @@ public class CasesServiceImpl implements ICasesService { @Resource private CasesMajorTypeRepoDao casesMajorTypeRepoDao; - @PersistenceContext - private EntityManager entityManager; + @Autowired + private CasesRecommendPushRecordDao casesRecommendPushRecordDao; + + @Autowired + private CasesRecommendDao casesRecommendDao; /** * 案例分页查询,用于门户的查询 @@ -178,11 +180,11 @@ public class CasesServiceImpl implements ICasesService { public PageList queryPageCasesV2(CasePageVo caseVo) { String keyword = caseVo.getKeyWord(); - QueryBuilder query=QueryBuilder.from(Cases.class); - PageList page=null; + QueryBuilder query = QueryBuilder.from(Cases.class); + PageList page = null; List filters = new ArrayList<>(); - filters.add(FieldFilters.eq("deleted",false)); - List likes=new ArrayList(); + filters.add(FieldFilters.eq("deleted", false)); + List likes = new ArrayList(); likes.add(FieldFilters.like("title", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); likes.add(FieldFilters.like("authorName", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); likes.add(FieldFilters.like("keyword1", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); @@ -195,37 +197,37 @@ public class CasesServiceImpl implements ICasesService { filters.add(FieldFilters.notIn("id", notInIds)); } - if(StringUtil.isNotBlank(caseVo.getKeyWord())) { + if (StringUtil.isNotBlank(caseVo.getKeyWord())) { filters.add(FieldFilters.or(likes)); } //创建时间过滤 List years = caseVo.getYears(); if (CollUtil.isNotEmpty(years)) { - filters.add(new CustomFieldInFilter("YEAR(sysCreateTime)","sysCreateTime",years)); + filters.add(new CustomFieldInFilter("YEAR(sysCreateTime)", "sysCreateTime", years)); } //增加只是查询有附件的 filters.add(FieldFilters.isNotNull("filePath")); - filters.add(FieldFilters.ne("filePath","")); + filters.add(FieldFilters.ne("filePath", "")); String majorType = caseVo.getMajorType(); - if(StringUtil.isNotBlank(majorType)){ + if (StringUtil.isNotBlank(majorType)) { List casesTypes = casesMajorTypeRepoDao.findCasesBy(StrUtil.split(majorType, ",")); - if(CollUtil.isNotEmpty(casesTypes)){ + if (CollUtil.isNotEmpty(casesTypes)) { List caseIds = casesTypes.stream().map(CasesMajorType::getCaseId).collect(Collectors.toList()); - query.addFilter(FieldFilters.in("id",caseIds)); - }else { + query.addFilter(FieldFilters.in("id", caseIds)); + } else { return page; } } List orgDomainDtos = caseVo.getOrgDomainDtos(); IFieldFilter orgDomain = null; - if(CollUtil.isNotEmpty(orgDomainDtos)){ + 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); + IFieldFilter itemFilter = FieldFilters.eq("orgDomainParent", orgDomainParent); List orgDomainParent2 = domainDto.getChildren(); if (CollUtil.isNotEmpty(orgDomainParent2)) { List seconds = orgDomainParent2.stream().map(OrgDomainDto::getParent).collect(Collectors.toList()); @@ -241,7 +243,7 @@ public class CasesServiceImpl implements ICasesService { } } - if (i==0) { + if (i == 0) { orgDomain = itemFilter; } else { orgDomain = FieldFilters.or(orgDomain, itemFilter); @@ -252,33 +254,26 @@ public class CasesServiceImpl implements ICasesService { filters.add(orgDomain); } - if(StringUtils.isNotBlank(caseVo.getCaseType())){ - filters.add(FieldFilters.eq("caseType",caseVo.getCaseType())); + if (StringUtils.isNotBlank(caseVo.getCaseType())) { + filters.add(FieldFilters.eq("caseType", caseVo.getCaseType())); } - if(caseVo.getBreCommend()!=null){ - if(!caseVo.getBreCommend()){ - filters.add(FieldFilters.eq("breCommend",0)); - }else { - filters.add(FieldFilters.eq("breCommend", 1)); - } - } - if(caseVo.getIsTop()!=null && caseVo.getIsTop()) { + if (caseVo.getIsTop() != null && caseVo.getIsTop()) { query.addOrder(OrderCondition.desc("isTop")); query.addOrder(OrderCondition.desc("topTime")); } //如果选择的是优秀案例,那么这里就按优秀案例的试试排序 - if(caseVo.getExcellent()!=null){ - filters.add(FieldFilters.eq("excellent",caseVo.getExcellent())); + if (caseVo.getExcellent() != null) { + filters.add(FieldFilters.eq("excellent", caseVo.getExcellent())); } - OrderCondition order=null; - if(StringUtils.isNotBlank(caseVo.getOrderField())) { - if(caseVo.getOrderAsc()==null || caseVo.getOrderAsc()) { - order=OrderCondition.asc(caseVo.getOrderField()); - }else { - order=OrderCondition.desc(caseVo.getOrderField()); + OrderCondition order = null; + if (StringUtils.isNotBlank(caseVo.getOrderField())) { + if (caseVo.getOrderAsc() == null || caseVo.getOrderAsc()) { + order = OrderCondition.asc(caseVo.getOrderField()); + } else { + order = OrderCondition.desc(caseVo.getOrderField()); } - }else { - order=OrderCondition.desc("sysCreateTime"); + } else { + order = OrderCondition.desc("sysCreateTime"); } query.addFilters(filters); @@ -287,19 +282,59 @@ public class CasesServiceImpl implements ICasesService { query.setPageIndex(caseVo.getPageIndex()); query.setPageSize(caseVo.getPageSize()); page = casesDao.findPage(query.builder()); + List list = page.getList(); + if (CollUtil.isNotEmpty(list)) { + List caseIds = list.stream().map(Cases::getId).collect(Collectors.toList()); + QueryBuilder recommendCasesQuery = QueryBuilder.from(CasesRecommendPushRecord.class); + recommendCasesQuery.addField("new CasesRecommendPushRecord(recommendId,caseId)"); + List subFilters = new ArrayList<>(); + subFilters.add(FieldFilters.eq("pushUserId", caseVo.getUserId())); + subFilters.add(FieldFilters.in("caseId", caseIds)); + subFilters.add(FieldFilters.eq("pushStatus", 4)); + subFilters.add(FieldFilters.eq("deleted", Boolean.FALSE)); + + QueryBuilder queryBuilder = recommendCasesQuery.addFilters(subFilters) + .addOrder("sysCreateTime", OrderDirection.DESC) + .addGroupBy("recommendId"); + List pushRecords = casesRecommendPushRecordDao.findList(queryBuilder.builder()); + if (CollUtil.isNotEmpty(pushRecords)) { + List rIds = pushRecords.stream().map(CasesRecommendPushRecord::getRecommendId).collect(Collectors.toList()); + QueryBuilder builder = QueryBuilder.from(CasesRecommend.class); + builder.addField("new CasesRecommend(id,recommendOrgName)"); + List recommendFilters = new ArrayList<>(); + recommendFilters.add(FieldFilters.eq("deleted", Boolean.FALSE)); + recommendFilters.add(FieldFilters.in("id", rIds)); + builder.addFilters(recommendFilters); + List recommands = casesRecommendDao.findList(builder.builder()); + if (CollUtil.isNotEmpty(recommands)) { + Map collect = recommands.stream().collect(Collectors.toMap(k -> k.getId(), v -> v.getRecommendOrgName())); + list.forEach(it -> { + CasesRecommendPushRecord one = CollUtil.findOne(pushRecords, (a) -> StrUtil.equals(a.getCaseId(), it.getId())); + if (Objects.nonNull(one)) { + String recommendOrgName = collect.get(one.getRecommendId()); + it.setBreCommend(1); + it.setRecommendOrgName(recommendOrgName); + } else { + it.setBreCommend(0); + } + }); + } + } + + } return page; } @Override public PageList queryRecommendPageCasesV2(CasePageVo caseVo) { - PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex(), caseVo.getPageSize()); - Page cases = casesRecordDao.queryList(pageRequest, caseVo); - PageList pageList = new PageList<>(); - pageList.setCount((int) cases.getTotalElements()); - pageList.setPageSize(cases.getSize()); - pageList.setList(cases.getContent()); - return pageList; + PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex(), caseVo.getPageSize()); + Page cases = casesRecordDao.queryList(pageRequest, caseVo); + PageList pageList = new PageList<>(); + pageList.setCount((int) cases.getTotalElements()); + pageList.setPageSize(cases.getSize()); + pageList.setList(cases.getContent()); + return pageList; } /** From 9832a70982fafaa0334f32696db200814b3f43e6 Mon Sep 17 00:00:00 2001 From: Boolean Date: Fri, 23 Jun 2023 17:34:04 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E7=BB=84=E7=BB=87?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=B8=BA=E7=A9=BA=E9=97=AE=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/module/boecase/service/impl/CasesServiceImplTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/servers/boe-server-all/src/test/java/com/xboe/module/boecase/service/impl/CasesServiceImplTest.java b/servers/boe-server-all/src/test/java/com/xboe/module/boecase/service/impl/CasesServiceImplTest.java index 83a6610e..099018d4 100644 --- a/servers/boe-server-all/src/test/java/com/xboe/module/boecase/service/impl/CasesServiceImplTest.java +++ b/servers/boe-server-all/src/test/java/com/xboe/module/boecase/service/impl/CasesServiceImplTest.java @@ -25,6 +25,7 @@ class CasesServiceImplTest { // pageVo.setYears(ListUtil.toList(2023)); pageVo.setPageIndex(1); pageVo.setPageSize(10); + pageVo.setUserId("199"); pageVo.setExcellent(Boolean.TRUE); PageList casesV2 = casesService.queryPageCasesV2(pageVo); System.out.println(casesV2);