From f2d6b0cce92f91270aa774a13f9284dd1954687a Mon Sep 17 00:00:00 2001 From: yang <1175@qq.com> Date: Thu, 12 Sep 2024 13:48:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=88=E4=BE=8B=E8=90=83=E5=8F=96=EF=BC=8Cbu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/boecase/dao/CasesRankDao.java | 13 ++++++++----- .../boecase/service/impl/CasesServiceImpl.java | 14 +++++++++++++- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRankDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRankDao.java index f7571a8e..98c5b576 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRankDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRankDao.java @@ -63,20 +63,23 @@ public class CasesRankDao extends BaseDao { } - public List findPopularityOfMajor(Integer pageSize, LocalDateTime startTime, LocalDateTime endTime, Long majorId) { + public List> findPopularityOfMajor(Integer pageSize, LocalDateTime startTime, LocalDateTime endTime, Long majorId) { String sql = - "SELECT bcr.case_id\n" + + "SELECT bcr.case_id,bcr.rank\n" + "FROM boe_cases_rank bcr\n" + "JOIN boe_cases bc on bcr.case_id = bc.id\n" + "WHERE bcr.deleted=0 AND bc.deleted=0 AND bcr.rise_rank_time BETWEEN ?1 and ?2 AND major_id=?3\n" + "ORDER BY rank\n" + "LIMIT ?4"; - List listFields = this.sqlFindList(sql, startTime, endTime,majorId,pageSize); + List listFields = this.sqlFindList(sql, startTime, endTime,majorId,pageSize); - List collect = listFields.stream().map(item -> { - return item.toString(); + List> collect = listFields.stream().map(item -> { + HashMap map = new HashMap<>(); + map.put("caseId", item[0].toString()); + map.put("rank", item[1].toString()); + return map; }).collect(Collectors.toList()); return collect; 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 1909acd8..7a0d304a 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 @@ -1260,7 +1260,11 @@ public class CasesServiceImpl implements ICasesService { LocalDateTime startTime = month.withDayOfMonth(1); LocalDateTime endTime = month.plusMonths(1).withDayOfMonth(1).withMinute(0); - List caseIdList = casesRankDao.findPopularityOfMajor(pageSize, startTime, endTime,majorId); + List> popularityOfMajor = casesRankDao.findPopularityOfMajor(pageSize, startTime, endTime, majorId); + List caseIdList = popularityOfMajor.stream().map(map -> map.get("caseId").toString()).collect(Collectors.toList()); + + Map collect = popularityOfMajor.stream().collect(Collectors.toMap(map -> map.get("caseId").toString(), map -> Integer.valueOf(map.get("rank").toString()))); + QueryBuilder query = QueryBuilder.from(Cases.class); query.addFilter(FieldFilters.in("id",caseIdList)); query.addFilter(FieldFilters.eq("deleted",false)); @@ -1268,6 +1272,14 @@ public class CasesServiceImpl implements ICasesService { List casesList = casesDao.findList(query.builder()); casesList = caseListCommonHandle(casesList, accountId); + Collections.sort(casesList, new Comparator() { + @Override + public int compare(Cases c1, Cases c2) { + Integer order1 = collect.get(c1.getId()); + Integer order2 = collect.get(c2.getId()); + return Integer.compare(order1, order2); + } + }); return casesList; }