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