diff --git a/designer-base/src/main/java/com/fr/design/dialog/BasicScrollPane.java b/designer-base/src/main/java/com/fr/design/dialog/BasicScrollPane.java index 5434e71ce9..99c60479dd 100644 --- a/designer-base/src/main/java/com/fr/design/dialog/BasicScrollPane.java +++ b/designer-base/src/main/java/com/fr/design/dialog/BasicScrollPane.java @@ -113,12 +113,12 @@ public abstract class BasicScrollPane extends BasicBeanPane{ } /** - * 插入图表后单元格元素使用cardLayout布局,需要滚动效果获取高度在子类中重新计算 + * 插入图表后单元格元素使用cardLayout布局,获取可视窗口高度用于判断面板是否需要滚动效果 * - * @return height + * @return 可见区域的高度 */ protected int getMaxHeight(){ - return getHeight(); + return getVisibleRect().height; } protected class BarLayout implements LayoutManager { diff --git a/designer-chart/src/main/java/com/fanruan/map/DesignGEOJSONHelper.java b/designer-chart/src/main/java/com/fanruan/map/DesignGEOJSONHelper.java index 740ccd72b2..4c42f1cf5e 100644 --- a/designer-chart/src/main/java/com/fanruan/map/DesignGEOJSONHelper.java +++ b/designer-chart/src/main/java/com/fanruan/map/DesignGEOJSONHelper.java @@ -1,12 +1,22 @@ package com.fanruan.map; +import com.fr.concurrent.NamedThreadFactory; import com.fr.decision.webservice.v10.map.geojson.MapDataType; +import com.fr.decision.webservice.v10.map.geojson.bean.GeoJSONFactory; import com.fr.decision.webservice.v10.map.geojson.helper.GEOJSONHelper; import com.fr.decision.webservice.v10.map.geojson.helper.GEOJSONUtils; import com.fr.log.FineLoggerFactory; import com.fr.third.org.apache.commons.lang3.time.StopWatch; import com.fr.workspace.server.repository.map.MapRepository; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + /** * 设计器地图资源Helper * @@ -22,9 +32,21 @@ public class DesignGEOJSONHelper extends GEOJSONHelper { StopWatch watch = new StopWatch(); watch.start(); - URL_JSON_MAP.putAll(MapRepository.getInstance().getMapResource(GEOJSONUtils.getMapDataTypePath(MapDataType.GEOGRAPHIC))); - URL_JSON_MAP.putAll(MapRepository.getInstance().getMapResource(GEOJSONUtils.getMapDataTypePath(MapDataType.IMAGE))); - + ExecutorService executorService = Executors.newFixedThreadPool(2, new NamedThreadFactory("[design-map] initGeoJSON")); + List> tasks = new ArrayList<>(); + tasks.add(() -> { + updateGeographic(); + return null; + }); + tasks.add(() -> { + updateImage(); + return null; + }); + List> resultList = executorService.invokeAll(tasks); + for (Future result : resultList) { + result.get(); + } + executorService.shutdown(); FineLoggerFactory.getLogger().info("Load chart map resources spend time {} ms", watch.getTime()); watch.stop(); @@ -33,4 +55,25 @@ public class DesignGEOJSONHelper extends GEOJSONHelper { } } + private void updateGeographic() { + try { + Map geographic = MapRepository.getInstance().getMapResource(GEOJSONUtils.getMapDataTypePath(MapDataType.GEOGRAPHIC)); + for (Map.Entry entry : geographic.entrySet()) { + URL_JSON_MAP.put(entry.getKey(), GeoJSONFactory.create(entry.getValue(), entry.getKey())); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + private void updateImage() { + try { + Map image = MapRepository.getInstance().getMapResource(GEOJSONUtils.getMapDataTypePath(MapDataType.IMAGE)); + for (Map.Entry entry : image.entrySet()) { + URL_JSON_MAP.put(entry.getKey(), GeoJSONFactory.create(entry.getValue(), entry.getKey())); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + } } diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/AbstractVanChartScrollPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/AbstractVanChartScrollPane.java index 01458cb612..4513bf6a95 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/AbstractVanChartScrollPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/AbstractVanChartScrollPane.java @@ -19,13 +19,4 @@ public abstract class AbstractVanChartScrollPane extends BasicScrollPane { super.reloaPane(pane); leftcontentPane.setBorder(BorderFactory.createEmptyBorder()); } - - /** - * 获取可视窗口高度 - * @return height - */ - @Override - protected int getMaxHeight() { - return getVisibleRect().height; - } } diff --git a/designer-realize/src/main/java/com/fanruan/boot/env/function/DesignChartBaseComponent.java b/designer-realize/src/main/java/com/fanruan/boot/env/function/DesignChartBaseComponent.java index 3a41a04c13..145c195809 100644 --- a/designer-realize/src/main/java/com/fanruan/boot/env/function/DesignChartBaseComponent.java +++ b/designer-realize/src/main/java/com/fanruan/boot/env/function/DesignChartBaseComponent.java @@ -1,11 +1,14 @@ package com.fanruan.boot.env.function; import com.fanruan.boot.ChartBaseComponent; +import com.fanruan.carina.Carina; import com.fanruan.carina.annotions.DependsOn; import com.fanruan.carina.annotions.FineComponent; import com.fanruan.carina.annotions.Start; import com.fanruan.carina.annotions.Stop; import com.fanruan.carina.annotions.Supplemental; +import com.fanruan.map.DesignGEOJSONHelper; +import com.fr.decision.webservice.v10.map.geojson.helper.GEOJSONHelperShell; /** @@ -41,6 +44,7 @@ public class DesignChartBaseComponent extends ChartBaseComponent { */ @Supplemental public void prepare() { + Carina.getApplicationContext().singleton(GEOJSONHelperShell.class).set(DesignGEOJSONHelper.class); super.prepare(); }