suerprisePlus
2024-09-05 cc3a00f52f356c893d9f21798e9e941bb9533d10
src/main/java/com/yb/controller/XzController.java
@@ -1,95 +1,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.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.*;
@Tag(name="新智接口")
@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(@Parameter String place,@Parameter String mid){
        System.out.println("rec message:"+place+"  mid:"+mid);
        HashMap<String,Object> hash = new HashMap<>();
        hash.put("func","poiMap");
        hash.put("mid","mid");
    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();
        reqEntity.setPlace(place);
        reqEntity.setX("120.9671");
        reqEntity.setY("13.5748");
        hash.put("poi",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(@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");
        list.add(reqEntity);
        list.add(reqEntity);
        hash.put("poi",list);
    @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);
    }
    /*@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<>();
        hash.put("path",list);
        String message = JSON.toJSONString(hash);
        webSocketController.sendAllMessage(message);
        return R.ok(hash);
    }
*/
    @ApiOperation("元信息查询")
    @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);
        List<ReqEntity> list = new ArrayList<>();
    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];
        hash.put("meta",list);
            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);
    }
}