package com.yb.service; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.yb.config.XzConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashMap; @Service public class IntentionService { @Autowired private XzConfig xzConfig; @Autowired private AgentService agentService; @Autowired private XzService xzService; public HashMap getFunctionMatch(String orderString) throws Exception { HashMap mapObj = new HashMap(); JSONObject orderObject = JSON.parseObject(orderString); String func = orderObject.getString("name"); if (func.equals(xzConfig.funcName[0])) { mapObj = getPoiMap(orderObject, xzConfig.funcName[0]); } else if (func.equals(xzConfig.funcName[1])) { mapObj = getAroundPoi(orderObject, xzConfig.funcName[1]); } else if (func.equals(xzConfig.funcName[2])) { mapObj = getQueryMeta(orderObject, xzConfig.funcName[2]); } else if (func.equals(xzConfig.funcName[2])) { mapObj = getQueryMeta(orderObject, xzConfig.funcName[2]); } else if (func.equals(xzConfig.funcName[3])) { mapObj = getQueryRelationship(orderObject, xzConfig.funcName[3]); } return mapObj; } //查看某个区域内各个实体/对象之间的关系 private HashMap getQueryRelationship(JSONObject orderObject, String func) throws Exception { HashMap hashMap = new HashMap(); hashMap.put("func", func); JSONObject argsObject = JSON.parseObject(orderObject.getString("args")); String place = argsObject.getString("place"); HashMap poiMap = agentService.getQueryRelationship(place, xzConfig.queryFiled); hashMap.put("data", poiMap); return hashMap; } //查询数据统计 private HashMap getQueryMeta(JSONObject orderObject, String func) throws Exception { HashMap hashMap = new HashMap(); hashMap.put("func", func); String filedString = xzService.getQueryMeta(xzConfig.layerId, xzConfig.dbid, xzConfig.typeFiled, xzConfig.queryEntity); JSONObject metaObject = JSON.parseObject(filedString); JSONArray dataArray = metaObject.getJSONArray("data"); 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()) { System.out.println("rec 1:" + key+":"+xzConfig.typeFiled); String itemObj = dataObj.getString(key); System.out.println("rec 2:" +itemObj); if (key.equals(xzConfig.typeFiled) ) { filedValue[0] = dataObj.getString(key); }else{ filedValue[1] = dataObj.getString(key); } } markDown += "| " + filedValue[0] + " | " + filedValue[1] + " |\n"; } hashMap.put("data", markDown); return hashMap; } //根据范围查询数据 private HashMap getAroundPoi(JSONObject orderString, String func) throws Exception { HashMap hashMap = new HashMap(); hashMap.put("func", func); JSONObject argsObject = JSON.parseObject(orderString.getString("args")); String place = argsObject.getString("place"); String type = argsObject.getString("attris"); String dis = argsObject.getString("redius"); int radius = 5000; if (dis != null) { dis = dis.replace("m", ""); radius = Integer.parseInt(dis); } String aroundPoi = agentService.getAgentAroundPoi(place, type, radius, xzConfig.queryFiled, xzConfig.typeFiled); JSONArray dataArray = JSONArray.parseArray(aroundPoi); System.out.println("aroundPoi: " + dataArray); hashMap.put("data", dataArray); return hashMap; } //查询点位 public HashMap getPoiMap(JSONObject orderString, String func) throws Exception { HashMap hashMap = new HashMap(); JSONObject argsObject = JSON.parseObject(orderString.getString("args")); String place = argsObject.getString("place"); String poiMap = agentService.getAgentPoiMap(place, xzConfig.queryFiled); System.out.println("poiMap: " + poiMap); JSONObject poiObj = JSONObject.parseObject(poiMap); System.out.println("poiMap: " + poiObj); hashMap.put("func", func); hashMap.put("data", poiObj); return hashMap; } }