From 34296b1e1960e49ab8b3a34f9bb49b59e2e22c9e Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期五, 13 九月 2024 15:34:11 +0800
Subject: [PATCH] 查询空间数据

---
 src/main/java/com/se/simu/service/SedbService.java |   54 +++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 39 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/se/simu/service/SedbService.java b/src/main/java/com/se/simu/service/SedbService.java
index 9f2f866..a750f1b 100644
--- a/src/main/java/com/se/simu/service/SedbService.java
+++ b/src/main/java/com/se/simu/service/SedbService.java
@@ -7,7 +7,6 @@
 import com.se.simu.domain.SeField;
 import com.se.simu.domain.SeLayer;
 import com.se.simu.helper.RsaHelper;
-import com.se.simu.helper.StringHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -41,6 +40,9 @@
     @Value("${sedb.dbName}")
     String dbName;
 
+    @Value("${sedb.pageSize}")
+    Integer pageSize;
+
     @Value("#{'${sedb.layerNames}'}")
     List<String> layerNames;
 
@@ -48,6 +50,7 @@
     List<String> sysFields;
 
     String password;
+
 
     @Resource
     RestTemplate restTemplate;
@@ -61,6 +64,7 @@
         db.setBbox(bbox);
 
         List<SeLayer> layers = getLayers(token, db.getDbid());
+        queryData(token, db, layers);
 
         return db.getDbid();
     }
@@ -132,30 +136,50 @@
         return layers;
     }
 
-    public JSONArray query(String token, String dbid, String layerId, String bbox) {
-        int start = 1, count = 1000, total = 0;
+    public void queryData(String token, SeDb db, List<SeLayer> layers) throws Exception {
+        for (SeLayer layer : layers) {
+            int count = getCount(token, db, layer);
+            if (0 == count) throw new Exception(layer.getName() + "锛屽浘灞傛暟鎹负绌�");
 
+            int pageCount = (count - 1) / pageSize + 1;
+            for (int i = 0; i < pageCount; i++) {
+                JSONArray data = query(token, db, layer, i + 1, pageSize);
+                if (null != data && data.size() > 0) {
+                    layer.addData(data);
+                }
+            }
+        }
+    }
+
+    public int getCount(String token, SeDb db, SeLayer layer) {
+        Map<String, Object> map = new HashMap<>(4);
+        map.put("token", token);
+        map.put("dbid", db.getDbid());
+        map.put("bbox", db.getBbox());
+        map.put("layerid", layer.getId());
+
+        JSONObject obj = restTemplate.postForObject(host + "geo-service/entitydbdata/layer/query", map, JSONObject.class);
+        if (null == obj || 200 != obj.getInt("code")) return 0;
+
+        return obj.getInt("data");
+    }
+
+    public JSONArray query(String token, SeDb db, SeLayer layer, int start, int count) {
         Map<String, Object> map = new HashMap<>(8);
         map.put("token", token);
         map.put("start", start);
         map.put("count", count);
-        map.put("dbid", dbid);
-        map.put("layerid", layerId);
-        map.put("containCount", true);
-        map.put("bbox", bbox);
-        map.put("querytype", "entity");
+        map.put("dbid", db.getDbid());
+        map.put("bbox", db.getBbox());
+        map.put("containCount", false);
+        map.put("layerid", layer.getId());
+        map.put("querytype", layer.getQueryType());
 
         JSONObject obj = restTemplate.postForObject(host + "geo-service/entitydbdata/layer/query", map, JSONObject.class);
         if (null == obj || 200 != obj.getInt("code")) return null;
 
         JSONObject data = obj.getJSONObject("data");
-        total = data.getInt("data");
-        if (0 == total) return null;
 
-        JSONArray arr = new JSONArray();
-        JSONArray items = data.getJSONArray("items");
-        arr.addAll(items);
-
-        return arr;
+        return data.getJSONArray("items");
     }
 }

--
Gitblit v1.9.3