From 5b14811aaeb72e828d948068e899c65877aaca9a Mon Sep 17 00:00:00 2001 From: suerprisePlus <15810472099@163.com> Date: 星期三, 28 八月 2024 11:32:43 +0800 Subject: [PATCH] API名称:[周边属性查询] 接口添加 --- src/main/java/com/yb/controller/XzController.java | 213 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 185 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/yb/controller/XzController.java b/src/main/java/com/yb/controller/XzController.java index 017e48c..61ec0f8 100644 --- a/src/main/java/com/yb/controller/XzController.java +++ b/src/main/java/com/yb/controller/XzController.java @@ -1,54 +1,211 @@ package com.yb.controller; import com.alibaba.fastjson.JSON; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + import com.yb.config.R; import com.yb.entity.ReqEntity; +import com.yb.helper.RsaHelper; +import com.yb.util.EntityHttpUtil; + import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import org.locationtech.jts.geom.*; +import org.locationtech.jts.io.WKTWriter; +import org.locationtech.jts.operation.buffer.BufferOp; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; + import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; -@Tag(name="鏂版櫤鎺ュ彛") + +@Tag(name = "鏂版櫤鎺ュ彛") @RestController @RequestMapping("/api/v1") public class XzController { @Autowired WebSocketController webSocketController; + @Autowired + private EntityHttpUtil entityHttpUtil; + @Value("${spring.geographical.canview}") + String canview; + @Value("${spring.geographical.entityName}") + String entityName; + @Value("${spring.geographical.dbid}") + String dbid; + @Value("${spring.geographical.layerId}") + String layerId; + @Value("${spring.geographical.queryEntity}") + String queryEntity; + @Value("${spring.geographical.publickey}") + String publickey; + @Value("${spring.geographical.token}") + String token; + private JSONObject jsonObject; + private JSONObject dataObjject; + private Coordinate coord; + private Object filObj; - @GetMapping("/poiMap/{place}") + @PostMapping("/poiMap") @Operation(summary = "鏄剧ず鍦扮偣") - public R poiMap(@PathVariable("place")String place){ - System.out.println("rec message:"+place); - HashMap<String,Object> hash = new HashMap<>(); - hash.put("func","poiMap"); + public R poiMap(@Parameter String place, @Parameter String mid) throws Exception { + System.out.println("rec message:" + place + " mid:" + mid); + HashMap<String, Object> hash = new HashMap<>(); + hash.put("func", "poiMap"); + hash.put("mid", mid); ReqEntity reqEntity = new ReqEntity(); - reqEntity.setPlace(place); - reqEntity.setX("120.9671"); - reqEntity.setY("13.5748"); - hash.put("poi",reqEntity); - + String item = getQueryFiled(place); + JSONObject obj = JSONObject.parseObject(item); + reqEntity.setX(obj.getString("lon")); + reqEntity.setY(obj.getString("lat")); +// System.out.print(obj); + reqEntity.setPlace(obj.getString("enti_name")); + System.out.println("rec message:" +reqEntity); + hash.put("poi", reqEntity); String message = JSON.toJSONString(hash); webSocketController.sendAllMessage(message); - return R.ok(hash); } @PostMapping("/aroundPoi") + @Operation(summary = "鏄剧ず鍦扮偣") + public R aroundPoi(@Parameter String place, @Parameter String mid, @Parameter String type, @Parameter int radius) throws Exception { + + System.out.println("rec message:" + place + " mid:" + mid + " type:" + type + " radius:" + radius); + HashMap<String, Object> hash = new HashMap<>(); + hash.put("func", "aroundpoi"); + hash.put("mid", mid); + String item = getQueryFiled(place); + JSONObject obj = JSONObject.parseObject(item); + Double lon = Double.parseDouble(obj.getString("lon")); + Double lat = Double.parseDouble(obj.getString("lat")); + String wkt = getWKt(lon,lat,radius); + String itemList = getQueryAround(type,wkt); +// System.out.print("ces: "+itemList); + JSONArray dataArray =JSONArray.parseArray(itemList); + ArrayList<ReqEntity> arrayList= new ArrayList<>(); + for(int i =0;i< dataArray.size();i++ ){ + + Object element = dataArray.get(i); + if (element instanceof JSONObject) { + JSONObject jsonObject = (JSONObject) element; + ReqEntity reqEntity= new ReqEntity(); + reqEntity.setX(jsonObject.getString("lon")); + reqEntity.setY(jsonObject.getString("lat")); + reqEntity.setPlace(jsonObject.getString("enti_name")); + arrayList.add(reqEntity); + } + } + System.out.println("rec message:" +arrayList); + hash.put("poi", arrayList); + String message = JSON.toJSONString(hash); + webSocketController.sendAllMessage(message); + return R.ok(hash); + } + + public String getWKt(double lon, double lat, int radius) { + // 鍒涘缓涓�涓潗鏍囩偣 + Coordinate coord = new Coordinate(lon, lat); + // 鍒涘缓GeometryFactory瀹炰緥锛屽苟鎸囧畾鍧愭爣鍙傝�冪郴缁熶负WGS84 + GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326); + // 浣跨敤鍧愭爣鍒涘缓涓�涓偣 + Point point = geometryFactory.createPoint(coord); + // 鍒涘缓BufferOp瀹炰緥锛岀敤浜庣敓鎴愮紦鍐插尯 + BufferOp bufferOp = new BufferOp(point); + int dis = 500; + if (radius != 0) { + dis = radius; + } + // 璁剧疆缂撳啿鍖鸿窛绂讳负500绫� + Geometry bufferedGeometry = bufferOp.getResultGeometry(dis); + // 鍒涘缓WKTWriter瀹炰緥锛岀敤浜庡皢Geometry杞崲涓篧KT鏍煎紡 +// WKTWriter wktWriter = new WKTWriter(); + + // 灏嗙紦鍐插尯Geometry杞崲涓篧KT鏍煎紡 +// String wkt = wktWriter.write(bufferedGeometry); + // 杈撳嚭WKT +// System.out.println("WKT: " + wkt); + Envelope envelope = bufferedGeometry.getEnvelopeInternal(); + double [] wkt = new double[4]; + wkt[0]=envelope.getMinX(); + wkt[1]=envelope.getMinY(); + wkt[2]=envelope.getMaxX(); + wkt[3]=envelope.getMaxY(); + String arrayAsString = Arrays.toString(wkt); + System.out.println("arrayAsString: " + arrayAsString); + return arrayAsString; + } + + public String getQueryAround(String type,String wkt) throws Exception { + String query = "sjnr like '%" + type + "%'" + ""; + String key = getPublickey(); + String encrypt = RsaHelper.encrypt(key, query); + HashMap formData = new HashMap<>(); + formData.put("token", token); + formData.put("start", "1"); + formData.put("count", "0"); + formData.put("containCount", "true"); + formData.put("layerid", layerId); + formData.put("dbid", dbid); + formData.put("where", encrypt); + formData.put("box", wkt); + String jsonString = entityHttpUtil.getPostMessage(queryEntity, formData); + JSONObject jsonObject = JSON.parseObject(jsonString); + JSONObject dataObjject = jsonObject.getJSONObject("data"); + JSONArray dataArray = dataObjject.getJSONArray("items"); + return dataArray.toString(); + } + //鍏抽敭瀛楁煡璇� + public String getQueryFiled(String place) throws Exception { + String query = "enti_name like '%" + place + "%'" + ""; + String key = getPublickey(); + String encrypt = RsaHelper.encrypt(key, query); + HashMap formData = new HashMap<>(); + formData.put("token", token); + formData.put("start", "1"); + formData.put("count", "0"); + formData.put("containCount", "true"); + formData.put("layerid", layerId); + formData.put("dbid", dbid); + formData.put("where", encrypt); + String jsonString = entityHttpUtil.getPostMessage(queryEntity, formData); + JSONObject jsonObject = JSON.parseObject(jsonString); + JSONObject dataObjject = jsonObject.getJSONObject("data"); + JSONArray dataArray = dataObjject.getJSONArray("items"); + return dataArray.getJSONObject(0).toString(); + } + + //鑾峰彇绉橀挜鎺ュ彛 + public String getPublickey() { + HashMap<String, String> map = new HashMap<>(); + map.put("token", token); + String jsonString = entityHttpUtil.getPostMessage(publickey, map); + JSONObject jsonObject = JSON.parseObject(jsonString); + return jsonObject.getString("data"); + } + + + @PostMapping("/aroundPoi2") @Operation(summary = "鍛ㄨ竟鏌ヨ") - public R aroundPoi(@RequestBody ReqEntity reqEntity){ - System.out.println("rec message:"+reqEntity); - HashMap<String,Object> hash = new HashMap<>(); - hash.put("func","aroundPoi"); + public R aroundPoi2(@RequestBody ReqEntity reqEntity) { + System.out.println("rec message:" + reqEntity); + HashMap<String, Object> hash = new HashMap<>(); + hash.put("func", "aroundPoi"); + hash.put("mid", "mid"); List<ReqEntity> list = new ArrayList<>(); - reqEntity.setX("120.9671"); - reqEntity.setY("13.5748"); +// reqEntity.setX("120.9671"); +// reqEntity.setY("13.5748"); list.add(reqEntity); list.add(reqEntity); - hash.put("poi",list); + hash.put("poi", list); String message = JSON.toJSONString(hash); webSocketController.sendAllMessage(message); @@ -56,11 +213,12 @@ return R.ok(hash); } - @GetMapping("/queryPath/{start_point}/{end_point}") + /*@GetMapping("/queryPath/{start_point}/{end_point}") @Operation(summary = "璺嚎鏌ヨ") public R queryPath(@PathVariable("start_point")String start_point,@PathVariable("end_point")String end_point){ System.out.println("rec start_point: "+start_point+" end_point: "+end_point); HashMap<String,Object> hash = new HashMap<>(); + hash.put("func","searchPath"); List<ReqEntity> list = new ArrayList<>(); @@ -71,17 +229,16 @@ return R.ok(hash); } - - @GetMapping("/queryMeta") +*/ + @PostMapping("/queryMeta") @Operation(summary = "鍏冧俊鎭煡璇�") - public R queryMeta(){ + public R queryMeta(@Parameter String mid) { System.out.println("queryMeta "); - HashMap<String,Object> hash = new HashMap<>(); - hash.put("func","queryMeta"); + HashMap<String, Object> hash = new HashMap<>(); + hash.put("func", "queryMeta"); + hash.put("mid", mid); List<ReqEntity> list = new ArrayList<>(); - - hash.put("meta",list); - + hash.put("meta", list); String message = JSON.toJSONString(hash); webSocketController.sendAllMessage(message); -- Gitblit v1.9.3