From cfa51aecbe48666d3251ad04cfc327266b4fca98 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 13 十一月 2024 09:46:31 +0800 Subject: [PATCH] 11 --- src/main/java/com/se/simu/service/GedbService.java | 2 src/main/java/com/se/simu/service/DbService.java | 116 ++++++++++++++++++++++++++------------ src/main/java/com/se/simu/domain/vo/QueryVo.java | 11 +++ src/main/java/com/se/simu/controller/DbController.java | 18 +++++ 4 files changed, 107 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/se/simu/controller/DbController.java b/src/main/java/com/se/simu/controller/DbController.java index b9861be..01eb067 100644 --- a/src/main/java/com/se/simu/controller/DbController.java +++ b/src/main/java/com/se/simu/controller/DbController.java @@ -1,6 +1,8 @@ package com.se.simu.controller; import com.se.simu.domain.vo.QueryVo; +import com.se.simu.domain.vo.R; +import com.se.simu.helper.CaffeineHelper; import com.se.simu.helper.StringHelper; import com.se.simu.helper.WebHelper; import com.se.simu.service.DbService; @@ -27,7 +29,9 @@ @GetMapping(value = "/info") public void info(HttpServletRequest req, HttpServletResponse res) { try { - dbService.info(req, res); + String rs = dbService.info(); + + WebHelper.writeStr2Page(res, HttpStatus.OK, rs); } catch (Exception ex) { WebHelper.writeJson2Page(res, HttpStatus.BAD_REQUEST, ex.getMessage()); } @@ -37,7 +41,9 @@ @GetMapping(value = "/config") public void config(HttpServletRequest req, HttpServletResponse res) { try { - dbService.config(req, res); + String rs = dbService.getConfig(); + + WebHelper.writeStr2Page(res, HttpStatus.OK, rs); } catch (Exception ex) { WebHelper.writeJson2Page(res, HttpStatus.BAD_REQUEST, ex.getMessage()); } @@ -56,4 +62,12 @@ WebHelper.writeJson2Page(res, HttpStatus.BAD_REQUEST, ex.getMessage()); } } + + @ApiOperation(value = "clearCache") + @GetMapping(value = "/clearCache") + public R<Object> clearCache() { + CaffeineHelper.clear(); + + return success("ok"); + } } diff --git a/src/main/java/com/se/simu/domain/vo/QueryVo.java b/src/main/java/com/se/simu/domain/vo/QueryVo.java index 850728c..d902342 100644 --- a/src/main/java/com/se/simu/domain/vo/QueryVo.java +++ b/src/main/java/com/se/simu/domain/vo/QueryVo.java @@ -16,6 +16,8 @@ private Double buffer; + private Boolean returnGeom; + public QueryVo() { } @@ -24,6 +26,7 @@ if (null == count || count < 0) count = 10; if (count > 10000) count = 10000; if (null == containCount) containCount = false; + if (null == returnGeom) returnGeom = false; } public int getCount() { @@ -93,4 +96,12 @@ public void setBuffer(Double buffer) { this.buffer = buffer; } + + public Boolean getReturnGeom() { + return returnGeom; + } + + public void setReturnGeom(Boolean returnGeom) { + this.returnGeom = returnGeom; + } } diff --git a/src/main/java/com/se/simu/service/DbService.java b/src/main/java/com/se/simu/service/DbService.java index c4bdc3c..d8cca6e 100644 --- a/src/main/java/com/se/simu/service/DbService.java +++ b/src/main/java/com/se/simu/service/DbService.java @@ -1,6 +1,8 @@ package com.se.simu.service; +import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.se.simu.config.PropertiesConfig; import com.se.simu.domain.dto.GeDb; import com.se.simu.domain.vo.QueryVo; @@ -31,29 +33,84 @@ @Resource GedbService gedbService; - private final static String PUBLIC_KEY = "where_public_key"; + private final static String INFO_KEY = "db_info_key"; + + private final static String CONFIG_KEY = "db_config_key"; + + private final static String PUBLIC_KEY = "db_public_key"; private final static long ONE_DAY = 24 * 60 * 60 * 1000; - public void info(HttpServletRequest req, HttpServletResponse res) throws Exception { + // helper.service(req, res, uri); + public String info() throws Exception { + Object obj = CaffeineHelper.get(INFO_KEY); + if (obj instanceof String) { + return (String) obj; + } + String token = gedbService.getToken(); GeDb db = gedbService.getGeDb(token); String date = StringHelper.YMD_FORMAT.format(new Date(System.currentTimeMillis() - ONE_DAY)); + String url = String.format("%sgeo-service/statis/layer/data/info?dbid=%s&token=%s&caldate=%s", config.getHost(), db.getDbid(), token, date); - String uri = String.format("%sgeo-service/statis/layer/data/info?dbid=%s&token=%s&caldate=%s", config.getHost(), db.getDbid(), token, date); + String rs = restTemplate.getForObject(url, String.class); + if (!StringHelper.isEmpty(rs)) { + CaffeineHelper.put(INFO_KEY, rs); + } - HttpHelper helper = new HttpHelper(); - helper.service(req, res, uri); + return rs; } - public void config(HttpServletRequest req, HttpServletResponse res) throws Exception { + public String getConfig() throws Exception { + Object obj = CaffeineHelper.get(CONFIG_KEY); + if (obj instanceof String) { + return (String) obj; + } + String token = gedbService.getToken(); GeDb db = gedbService.getGeDb(token); + String url = String.format("%sgeo-service/entitydb/map/getConfig?dbid=%s&token=%s", config.getHost(), db.getDbid(), token); - String uri = String.format("%sgeo-service/entitydb/map/config?dbid=%s&token=%s", config.getHost(), db.getDbid(), token); + String rs = restTemplate.getForObject(url, String.class); + if (!StringHelper.isEmpty(rs)) { + CaffeineHelper.put(CONFIG_KEY, rs); + } - HttpHelper helper = new HttpHelper(); - helper.service(req, res, uri); + return rs; + } + + public void query(QueryVo vo, HttpServletRequest req, HttpServletResponse res) throws Exception { + String token = gedbService.getToken(); + GeDb db = gedbService.getGeDb(token); + String url = config.getHost() + "geo-service/entitydbdata/layer/query"; + + Map<String, Object> map = new HashMap<>(6); + map.put("token", token); + map.put("dbid", db.getDbid()); + map.put("layerid", vo.getLayerid()); + //map.put("returnCountOnly", true); + //map.put("inSR", 4326); + map.put("containCount", vo.getContainCount()); + map.put("count", vo.getCount()); + map.put("start", vo.getStart()); + map.put("querytype", vo.getReturnGeom() ? getQueryType(vo.getLayerid()) : "entity"); + if (!StringHelper.isEmpty(vo.getWhere())) { + String where = RsaHelper.encrypt(getPublicKey(), vo.getWhere()); + map.put("where", where); + } + if (!StringHelper.isEmpty(vo.getGeometry())) { + Geometry g = Geometry.CreateFromWkt(vo.getGeometry()); + if (null != vo.getBuffer()) { + // 鍒棶杩欎釜鏁版�庝箞鏉ョ殑锛屽嚟鏈簨鐚滅殑 + g = g.Buffer(vo.getBuffer() * 0.00000899928); + } + + map.put("geometry", g.ExportToWkt()); + map.put("inSR", 4326); + } + + String rs = restTemplate.postForObject(url, map, String.class); + WebHelper.writeStr2Page(res, HttpStatus.OK, rs); } private String getPublicKey() { @@ -72,37 +129,22 @@ return key; } - public void query(QueryVo vo, HttpServletRequest req, HttpServletResponse res) throws Exception { - String token = gedbService.getToken(); - GeDb db = gedbService.getGeDb(token); - String url = config.getHost() + "geo-service/entitydbdata/layer/query"; + private String getQueryType(String layerid) { + try { + String json = getConfig(); + JSONObject obj = JSONUtil.parseObj(json); - Map<String, Object> map = new HashMap<>(6); - map.put("token", token); - map.put("dbid", db.getDbid()); - map.put("layerid", vo.getLayerid()); - //map.put("returnCountOnly", true); - //map.put("inSR", 4326); - map.put("containCount", vo.getContainCount()); - map.put("count", vo.getCount()); - map.put("start", vo.getStart()); - map.put("querytype", "entity"); - if (!StringHelper.isEmpty(vo.getWhere())) { - String where = RsaHelper.encrypt(getPublicKey(), vo.getWhere()); - map.put("where", where); - } - if (!StringHelper.isEmpty(vo.getGeometry())) { - Geometry g = Geometry.CreateFromWkt(vo.getGeometry()); - if (null != vo.getBuffer()) { - // 鍒棶杩欎釜鏁版�庝箞鏉ョ殑锛屽嚟鏈簨鐚滅殑 - g = g.Buffer(vo.getBuffer() * 0.00000899928); + JSONArray layers = obj.getJSONObject("data").getJSONArray("layers"); + for (int i = 0, c = layers.size(); i < c; i++) { + JSONObject layer = layers.getJSONObject(i); + if (layerid.equals(layer.getStr("id"))) { + return GedbService.getQueryType(layer); + } } - - map.put("geometry", g.ExportToWkt()); - map.put("inSR", 4326); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); } - String rs = restTemplate.postForObject(url, map, String.class); - WebHelper.writeStr2Page(res, HttpStatus.OK, rs); + return "entity"; } } diff --git a/src/main/java/com/se/simu/service/GedbService.java b/src/main/java/com/se/simu/service/GedbService.java index fa83539..9a82084 100644 --- a/src/main/java/com/se/simu/service/GedbService.java +++ b/src/main/java/com/se/simu/service/GedbService.java @@ -171,7 +171,7 @@ return layers; } - private String getQueryType(JSONObject jb) { + public static String getQueryType(JSONObject jb) { String qt = jb.getStr("pointlod"); if (!StringHelper.isEmpty(qt)) { return "point"; -- Gitblit v1.9.3