From 8980f61b1cae7eaf4c8e85cee61111cd9f7734d2 Mon Sep 17 00:00:00 2001 From: wangliwen Date: Fri, 12 Aug 2022 10:41:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ResourceServiceImpl.java | 57 +++++++++++++------ 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java index c44fbe85..7dcb5fa8 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java @@ -46,6 +46,7 @@ import io.renren.modules.sys.dao.SysDeptDao; import io.renren.modules.sys.dto.SysUserDTO; import io.renren.modules.sys.service.SysDeptService; import io.renren.modules.sys.service.SysUserService; +import lombok.SneakyThrows; import okhttp3.*; import org.activiti.engine.HistoryService; import org.activiti.engine.history.HistoricProcessInstance; @@ -408,7 +409,7 @@ public class ResourceServiceImpl extends CrudServiceImpl common(Page resultPage, List selectDTOPageSpecilTotal, ResourceDTO resourceDTO, String orderField, String orderType, Integer pageNum, Integer pageSize) { if (resourceDTO.getInfoList().isEmpty()) { List resourceDTOS; if (orderField.equals("total")) { // 对总体评价特殊处理 List ids = new CopyOnWriteArrayList<>(); + ForkJoinPool customThreadPool = new ForkJoinPool(CPU_NUM * 3); switch (orderType.toUpperCase()) { case "DESC": // total 倒序 - ids = selectDTOPageSpecilTotal.parallelStream().map(Map.class::cast).sorted(Comparator.comparing(x -> { - Map index = (Map) x; - String string = (index.get("total") == null) ? "0" : index.get("total").toString(); - return Long.valueOf(string); - } - ).reversed()).skip((long) (pageNum - 1) * pageSize).limit(pageSize).map(x -> - Long.valueOf(x.get("id").toString()) - ).limit(pageSize).collect(Collectors.toList()); + ids = customThreadPool.submit(() -> { + List temp = selectDTOPageSpecilTotal.parallelStream().map(Map.class::cast).sorted(Comparator.comparing(x -> { + Map index = (Map) x; + String string = (index.get("total") == null) ? "0" : index.get("total").toString(); + return Long.valueOf(string); + } + ).reversed()).skip((long) (pageNum - 1) * pageSize).limit(pageSize).map(x -> + Long.valueOf(x.get("id").toString()) + ).limit(pageSize).collect(Collectors.toList()); + return temp; + }).get(); +// ids = selectDTOPageSpecilTotal.parallelStream().map(Map.class::cast).sorted(Comparator.comparing(x -> { +// Map index = (Map) x; +// String string = (index.get("total") == null) ? "0" : index.get("total").toString(); +// return Long.valueOf(string); +// } +// ).reversed()).skip((long) (pageNum - 1) * pageSize).limit(pageSize).map(x -> +// Long.valueOf(x.get("id").toString()) +// ).limit(pageSize).collect(Collectors.toList()); break; case "ASC": // total 升序 - ids = selectDTOPageSpecilTotal.parallelStream().map(Map.class::cast).sorted(Comparator.comparing(x -> { - String string = (x.get("total") == null) ? "0" : x.get("total").toString(); - return Long.valueOf(string); - } - )).skip((pageNum - 1) * pageSize).limit(pageSize).map(x -> - Long.valueOf(x.get("id").toString()) - ).limit(pageSize).collect(Collectors.toList()); + ids = customThreadPool.submit(() -> { + List temp = selectDTOPageSpecilTotal.parallelStream().map(Map.class::cast).sorted(Comparator.comparing(x -> { + String string = (x.get("total") == null) ? "0" : x.get("total").toString(); + return Long.valueOf(string); + } + )).skip((pageNum - 1) * pageSize).limit(pageSize).map(x -> + Long.valueOf(x.get("id").toString()) + ).limit(pageSize).collect(Collectors.toList()); + return temp; + }).get(); +// ids = selectDTOPageSpecilTotal.parallelStream().map(Map.class::cast).sorted(Comparator.comparing(x -> { +// String string = (x.get("total") == null) ? "0" : x.get("total").toString(); +// return Long.valueOf(string); +// } +// )).skip((pageNum - 1) * pageSize).limit(pageSize).map(x -> +// Long.valueOf(x.get("id").toString()) +// ).limit(pageSize).collect(Collectors.toList()); break; } resourceDTOS = resourceDao.selectDTOPage(resourceDTO, null, null, null, null, ids); @@ -491,6 +515,7 @@ public class ResourceServiceImpl extends CrudServiceImpl