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