From d68ba69e9f4d8edb7b62da57749de052f203c9f0 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期五, 13 九月 2024 10:58:57 +0800 Subject: [PATCH] 获取图层和字段信息 --- src/main/java/com/se/simu/service/SedbService.java | 109 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 91 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/se/simu/service/SedbService.java b/src/main/java/com/se/simu/service/SedbService.java index 9ab320f..081e0db 100644 --- a/src/main/java/com/se/simu/service/SedbService.java +++ b/src/main/java/com/se/simu/service/SedbService.java @@ -2,14 +2,17 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; +import com.se.simu.domain.SedbLayer; +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; +import org.springframework.util.StringUtils; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * SDDB鏈嶅姟绫� @@ -19,6 +22,7 @@ */ @Slf4j @Service +@SuppressWarnings("ALL") public class SedbService { @Value("${sedb.host}") String host; @@ -29,16 +33,44 @@ @Value("${sedb.pwd}") String pwd; + @Value("#{'${sedb.layerNames}'}") + List<String> layerNames; + + String password; + @Resource RestTemplate restTemplate; - public String test() { + public String test() throws Exception { String token = getToken(); + String dbid = getDbId(token); - System.out.println(dbid); + List<SedbLayer> layers = getLayers(token, dbid); return dbid; + } + + public String getToken() throws Exception { + Map<String, Object> map = new HashMap<>(2); + map.put("userid", user); + map.put("password", getPassword()); + + JSONObject obj = restTemplate.postForObject(host + "account-service/security/login", map, JSONObject.class); + + JSONObject data = obj.getJSONObject("data"); + + return data.getStr("token"); + } + + public String getPassword() throws Exception { + if (StringUtils.isEmpty(password)) { + String key = getPublicKey(); + RsaHelper.setPublicKey(key); + password = RsaHelper.encrypt(pwd); + } + + return password; } public String getPublicKey() { @@ -46,20 +78,6 @@ JSONObject obj = restTemplate.getForObject(host + "account-service/security/publickey", JSONObject.class); return obj.getStr("data"); - } - - public String getToken() { - String key = getPublicKey(); - - Map<String, Object> map = new HashMap<>(2); - map.put("userid", user); - map.put("password", pwd); - - JSONObject obj = restTemplate.postForObject(host + "account-service/security/login", map, JSONObject.class); - - JSONObject data = obj.getJSONObject("data"); - - return data.getStr("token"); } public String getDbId(String token) { @@ -77,4 +95,59 @@ return dbObj.getStr("dbid"); } + + public List<SedbLayer> getLayers(String token, String dbid) { + String uri = String.format("%sgeo-service/entitydb/map/config?dbid=%s&token=%s", host, dbid, token); + JSONObject obj = restTemplate.getForObject(uri, JSONObject.class); + + JSONObject data = obj.getJSONObject("data"); + JSONArray arr = data.getJSONArray("layers"); + if (null == arr || arr.size() == 0) { + return null; + } + + List<SedbLayer> layers = new ArrayList<>(); + for (int i = 0, c = arr.size(); i < c; i++) { + JSONObject jb = arr.getJSONObject(i); + + String name = jb.getStr("name"); + if (layerNames.contains(name)) { + String id = jb.getStr("id"); + Integer dataType = jb.getInt("_data_type"); + JSONArray fields = jb.getJSONArray("fields"); + + layers.add(new SedbLayer(id, name, dataType, fields)); + } + } + + return layers; + } + + public List<SedbLayer> getLayers2(String token, String dbid) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.DAY_OF_MONTH, -1); + + String date = StringHelper.YMD_FORMAT.format(calendar.getTime()); + String uri = String.format("%sgeo-service/statis/layer/data/info?dbid=%s&token=%s&caldate=%s", host, dbid, token, date); + JSONObject obj = restTemplate.getForObject(uri, JSONObject.class); + + JSONArray arr = obj.getJSONArray("data"); + if (null == arr || arr.size() == 0) { + return null; + } + + List<SedbLayer> layers = new ArrayList<>(); + for (int i = 0, c = arr.size(); i < c; i++) { + JSONObject jb = arr.getJSONObject(i); + + String name = jb.getStr("name"); + if (layerNames.contains(name)) { + String id = jb.getStr("layerid"); + layers.add(new SedbLayer(id, name)); + } + } + + return layers; + } } -- Gitblit v1.9.3