suerprisePlus
2024-09-05 cc3a00f52f356c893d9f21798e9e941bb9533d10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
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.config.XzConfig;
import com.yb.entity.ReqEntity;
import com.yb.service.XzService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.*;
 
 
@Tag(name = "新智接口")
@RestController
@RequestMapping("/api/v1")
@Api(tags = "三个意图")
public class XzController {
    @Autowired
    WebSocketController webSocketController;
    @Autowired
    private XzService xzService;
    @Autowired
    private XzConfig xzConfig;
 
 
    @ApiOperation("显示地点")
    @PostMapping("/poiMap")
    @Operation(summary = "显示地点")
    public R poiMap(@RequestParam Map<String, String> allParams) throws Exception {
        String place = allParams.get("place");
        String mid = allParams.get("mid");
        if (place == null || mid == null) {
            return R.error("数据传递错误");
        }
        HashMap<String, Object> hash = xzService.getFuncMap("poiMap", mid);
        ReqEntity reqEntity = new ReqEntity();
        String filed = "enti_name";
        String item = xzService.getQueryFiled(place, filed, xzConfig.layerId, xzConfig.dbid, xzConfig.queryEntity);
        System.out.println("rec poiMap:" + reqEntity);
        JSONObject obj = JSONObject.parseObject(item);
        reqEntity.setX(obj.getString("lon"));
        reqEntity.setY(obj.getString("lat"));
        reqEntity.setPlace(obj.getString(filed));
        hash.put("poi", reqEntity);
        String message = JSON.toJSONString(hash);
        webSocketController.sendAllMessage(message);
        return R.ok(hash);
    }
    @ApiOperation("周边属性查询")
    @PostMapping("/aroundPoi")
    @Operation(summary = "周边属性查询")
    public R aroundPoi(@RequestParam Map<String, String> allParams) throws Exception {
        String place = allParams.get("place");
        String mid = allParams.get("mid");
        String type = allParams.get("type");
        String dis = allParams.get("radius");
        int radius = 0;
        if (dis != null) {
            radius = Integer.parseInt(dis);
        }
        System.out.println("rec aroundPoi:" + place + "  mid:" + mid + "  type:" + type + "  radius:" + radius);
        if (type == null || place == null || mid == null) {
            return R.error("数据传递错误");
        }
        HashMap<String, Object> hash = xzService.getFuncMap("aroundPoi", mid);
        String filed = "enti_name";
        String typeFiled = "sjnr";
        String item = xzService.getQueryFiled(place, filed, xzConfig.layerId, xzConfig.dbid, xzConfig.queryEntity);
        JSONObject obj = JSONObject.parseObject(item);
        Double lon = Double.parseDouble(obj.getString("lon"));
        Double lat = Double.parseDouble(obj.getString("lat"));
        String wkt = xzService.getWKt(lon, lat, radius);
        String itemList = xzService.getQueryAround(type, wkt, typeFiled, xzConfig.layerId, xzConfig.dbid, xzConfig.queryEntity);
        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(filed));
                arrayList.add(reqEntity);
            }
        }
        System.out.println("rec aroundPoi:" + arrayList);
        hash.put("poi", arrayList);
        String message = JSON.toJSONString(hash);
        webSocketController.sendAllMessage(message);
        return R.ok(hash);
    }
    @ApiOperation("元信息查询")
    @PostMapping("/queryMeta")
    @Operation(summary = "元信息查询")
    public R queryMeta(@RequestParam Map<String, String> allParams) {
        String mid = allParams.get("mid");
        System.out.println("rec queryMeta:" + "  mid:" + mid);
        if (mid == null) {
            return R.error("数据传递错误");
        }
        HashMap<String, Object> hash = xzService.getFuncMap("queryMeta", mid);
//        统计查询接口拼接
        String filed = "sjnr";
        String filedString= xzService.getQueryMeta(xzConfig.layerId, xzConfig.dbid,filed,xzConfig.queryEntity);
        System.out.println("rec queryMeta:" + 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 queryMeta:" + 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 queryMeta:" + hash);
        String message = JSON.toJSONString(hash);
        webSocketController.sendAllMessage(message);
        return R.ok(hash);
    }
 
 
}