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);
|
}
|
|
|
}
|