From eb8fd19985147d5ccbdfee95c77e0bb0c6278a6d Mon Sep 17 00:00:00 2001 From: liquanyu Date: Sat, 31 Mar 2018 18:44:10 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E9=99=86=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operate/web/facade/AccessPermissionFacade.java | 74 ++++++++++++++++++++-- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AccessPermissionFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AccessPermissionFacade.java index 44b6aad..d61f1fc 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AccessPermissionFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AccessPermissionFacade.java @@ -4,14 +4,22 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.Future; import com.lyms.platform.common.enums.OptActionEnums; import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.operate.web.result.BabyManageListResult; +import com.lyms.platform.operate.web.utils.BabyListTask; import com.lyms.platform.permission.model.OrganizationQuery; +import com.lyms.platform.pojo.BabyModel; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import com.lyms.platform.biz.service.DataPermissionService; @@ -48,6 +56,10 @@ public class AccessPermissionFacade { private DataPermissionService dataPermissionService; @Autowired + @Qualifier("commonThreadPool") + private ThreadPoolTaskExecutor commonThreadPool; + + @Autowired private OrganizationService organizationService; @@ -104,18 +116,68 @@ public class AccessPermissionFacade { public List getOrganization(List data) { List dataList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(data)) { + + List list = new ArrayList<>(); + Set set = data.get(0).getData().keySet(); Iterator it = set.iterator(); while (it.hasNext()) { - String id = it.next(); - try { - Organization organization = organizationService.getOrganization(Integer.valueOf(id)); - if (null != organization) { - dataList.add(organization); + list.add(it.next()); + } + + int batchSize = 20; + int end = 0; + List futures = new ArrayList<>(); + for (int i = 0; i < list.size(); i += batchSize) { + end = (end + batchSize); + if (end > list.size()) { + end = list.size(); + } + final List ms = list.subList(i, end); + Callable c = new Callable() { + @Override + public List call() throws Exception { + List tempdataList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(ms)) + { + for (String id : ms) + { + Organization organization = organizationService.getOrganization(Integer.valueOf(id)); + if (null != organization) { + tempdataList.add(organization); + } + } + } + return tempdataList; + } + }; + Future f = commonThreadPool.submit(c); + futures.add(f); + } + if (CollectionUtils.isNotEmpty(futures)) + { + for (Future f : futures) + { + try { + dataList.addAll((List) f.get()); + } catch (Exception e) { + ExceptionUtils.catchException(e, "get organization error."); } - } catch (Exception e) { } } + +// Set set = data.get(0).getData().keySet(); +// Iterator it = set.iterator(); +// while (it.hasNext()) { +// String id = it.next(); +// try { +// Organization organization = organizationService.getOrganization(Integer.valueOf(id)); +// if (null != organization) { +// dataList.add(organization); +// } +// } catch (Exception e) { +// } +// } } return dataList; } -- 1.8.3.1