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.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") public class XzController { @Autowired WebSocketController webSocketController; @Autowired private XzService xzService; @Autowired private XzConfig xzConfig; @PostMapping("/poiMap") @Operation(summary = "显示地点") public R poiMap(@RequestParam Map allParams) throws Exception { String place = allParams.get("place"); String mid = allParams.get("mid"); if (place == null || mid == null) { return R.error("数据传递错误"); } HashMap 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); } @PostMapping("/aroundPoi") @Operation(summary = "周边属性查询") public R aroundPoi(@RequestParam Map 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 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 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); } @PostMapping("/queryMeta") @Operation(summary = "元信息查询") public R queryMeta(@RequestParam Map allParams) { String mid = allParams.get("mid"); System.out.println("rec queryMeta:" + " mid:" + mid); if (mid == null) { return R.error("数据传递错误"); } HashMap 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 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); } }