suerprisePlus
2024-08-28 ccc0c29ff83aafea87a6d3f3bca3ef9e0aa8268a
src/main/java/com/yb/controller/XzController.java
@@ -19,6 +19,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.stringtemplate.v4.ST;
import java.util.ArrayList;
@@ -49,10 +50,7 @@
    String publickey;
    @Value("${spring.geographical.token}")
    String token;
    private JSONObject jsonObject;
    private JSONObject dataObjject;
    private Coordinate coord;
    private Object filObj;
    @PostMapping("/poiMap")
    @Operation(summary = "显示地点")
@@ -66,9 +64,8 @@
        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);
        System.out.println("rec message:" + reqEntity);
        hash.put("poi", reqEntity);
        String message = JSON.toJSONString(hash);
        webSocketController.sendAllMessage(message);
@@ -76,36 +73,88 @@
    }
    @PostMapping("/aroundPoi")
    @Operation(summary = "显示地点")
    @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("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);
        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++ ){
        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 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);
        System.out.println("rec message:" + arrayList);
        hash.put("poi", arrayList);
        String message = JSON.toJSONString(hash);
        webSocketController.sendAllMessage(message);
        return R.ok(hash);
    }
    @PostMapping("/queryMeta")
    @Operation(summary = "元信息查询")
    public R queryMeta(@Parameter String mid) {
        System.out.println("queryMeta");
        HashMap<String, Object> hash = new HashMap<>();
        hash.put("func", "queryMeta");
        hash.put("mid", mid);
//        统计查询接口拼接
        JSONArray jsonArray = new JSONArray();
        HashMap<String, Object> staticField = new HashMap<>();
        String filed = "sjnr";
        staticField.put("type", "count");
        staticField.put("field", "sjnr");
        staticField.put("outfield", "count_" + filed);
        jsonArray.add(staticField);
        HashMap<String, String> formData = new HashMap<>();
        formData.put("token", token);
        formData.put("containCount", "true");
        formData.put("layerid", layerId);
        formData.put("dbid", dbid);
        formData.put("statistics", jsonArray.toString());
        formData.put("groupby", filed);
        String filedString = entityHttpUtil.getPostMessage(queryEntity, formData);
        System.out.println("rec message:" + filedString);
        JSONObject jsonObject = JSON.parseObject(filedString);
        JSONArray dataArray = jsonObject.getJSONArray("data");
        HashMap<String, Object> markMap = new HashMap<>();
        JSONArray markArray= new JSONArray();
        String markDown = "| 数据类型 | 数据量 |\\n|------|------|\\n";
        for (int i = 0; i < dataArray.size(); i++) {
            JSONObject dataObj = dataArray.getJSONObject(i);
            System.out.println("rec message:" + dataObj);
            String[] filedValue = new String[2];
            for (String key : dataObj.keySet()) {
                if (key == filed) {
                    filedValue[0]= dataObj.getString(key);
                } else {
                    filedValue[1]= dataObj.getString(key);
                }
            }
            markDown+="| "+  filedValue[0]+" | "+filedValue[1]+" |\n";
        }
        markMap.put("markdown",markDown);
        markArray.add(markMap);
        hash.put("markdown",markArray);
        hash.put("content","地理实体数据库");
        System.out.println("rec message:" + hash);
        String message = JSON.toJSONString(hash);
        webSocketController.sendAllMessage(message);
        return R.ok(hash);
@@ -134,17 +183,17 @@
        // 输出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();
        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 {
    public String getQueryAround(String type, String wkt) throws Exception {
        String query = "sjnr  like '%" + type + "%'" + "";
        String key = getPublickey();
        String encrypt = RsaHelper.encrypt(key, query);
@@ -163,6 +212,7 @@
        JSONArray dataArray = dataObjject.getJSONArray("items");
        return dataArray.toString();
    }
    //关键字查询
    public String getQueryFiled(String place) throws Exception {
        String query = "enti_name like '%" + place + "%'" + "";
@@ -213,6 +263,7 @@
        return R.ok(hash);
    }
    /*@GetMapping("/queryPath/{start_point}/{end_point}")
    @Operation(summary = "路线查询")
    public R queryPath(@PathVariable("start_point")String start_point,@PathVariable("end_point")String end_point){
@@ -230,9 +281,9 @@
        return R.ok(hash);
    }
*/
    @PostMapping("/queryMeta")
    @PostMapping("/queryMeta2")
    @Operation(summary = "元信息查询")
    public R queryMeta(@Parameter String mid) {
    public R queryMeta2(@Parameter String mid) {
        System.out.println("queryMeta ");
        HashMap<String, Object> hash = new HashMap<>();
        hash.put("func", "queryMeta");