package com.yb.service;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.yb.config.XzConfig;
|
import com.yb.entity.RelaEntity;
|
import com.yb.util.EntityHttpUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
|
@Service
|
public class AgentService {
|
@Autowired
|
private EntityHttpUtil entityHttpUtil;
|
@Autowired
|
private XzService xzService;
|
@Autowired
|
private XzConfig xzConfig;
|
|
// Agent_Rag服务调用
|
public String getAgentRag(String url, String api, String sessionId, String libId, String msg) throws Exception {
|
String http = url + api + "?session_id=" + sessionId + "&lib_id=" + libId + "&message=" + msg;
|
System.out.println("rec getAgentRag:" + http);
|
String obj = entityHttpUtil.getAgentMessage(http);
|
System.out.println("rec getAgentRag:" + obj);
|
return obj;
|
}
|
|
public String getAgentIntention(String url, String api, String msg, String sessionid, String libid) throws Exception {
|
String http = url + api + "?session_id=" + sessionid + "&lib_id=" + libid + "&message=" + msg;
|
System.out.println("rec getMessage:" + http);
|
String obj = entityHttpUtil.getAgentMessage(http);
|
System.out.println("rec getMessage:" + obj);
|
return obj;
|
}
|
|
//
|
public String getAgentPoiMap(String func, String filed) throws Exception {
|
String poiObj = xzService.getQueryFiled(func, filed, xzConfig.layerId, xzConfig.dbid, xzConfig.queryEntity);
|
System.out.println("rec poiMap:" + poiObj);
|
return poiObj;
|
}
|
|
|
public String getAgentAroundPoi(String place, String type, int dis, String filed, String typeFiled) throws Exception {
|
String item = xzService.getQueryFiled(place, filed, xzConfig.layerId, xzConfig.dbid, xzConfig.queryEntity);
|
JSONObject obj = JSONObject.parseObject(item);
|
if (obj == null) {
|
return "";
|
}
|
Double lon = Double.parseDouble(obj.getString("lon"));
|
Double lat = Double.parseDouble(obj.getString("lat"));
|
String wkt = xzService.getWKt(lon, lat, dis);
|
return xzService.getQueryAround(type, wkt, typeFiled, xzConfig.layerId, xzConfig.dbid, xzConfig.queryEntity);
|
|
}
|
|
public HashMap<String, Object> getQueryRelationship(String place, String filed) throws Exception {
|
String poiObj = xzService.getQueryEntity(place, filed, xzConfig.layerId, xzConfig.dbid, xzConfig.layerQuery);
|
|
if (poiObj == null) {
|
HashMap<String, Object> hashMap = new HashMap<>();
|
hashMap.put("msg", "未查询到" + place + "相关数据");
|
return hashMap;
|
}
|
HashMap<String, String> hashMap = new HashMap<String, String>();
|
hashMap.put("token", xzConfig.token);
|
hashMap.put("dbid", xzConfig.dbid);
|
hashMap.put("groupid", "");
|
String relationList = entityHttpUtil.getPostMessage(xzConfig.relationList, hashMap);
|
JSONObject relattionObj = JSONObject.parseObject(relationList);
|
String data = relattionObj.getString("data");
|
JSONArray relationArry = JSONArray.parseArray(data);
|
JSONObject itemObj = new JSONObject();
|
for (int i = 0; i < relationArry.size(); i++) {
|
JSONObject relationtem = relationArry.getJSONObject(i);
|
String name = relationtem.getString("name");
|
// if (name.equals("包含")) {
|
// itemObj = relationtem;
|
// }
|
if (name.contains(String.valueOf("包含"))) {
|
itemObj = relationtem;
|
}
|
}
|
// String distanceUrl = xzConfig.relationDistinct + "?dbid=" + xzConfig.dbid + "&token=" + xzConfig.token + "&relationid=" + itemObj.getString("code");
|
// String relationDistance = entityHttpUtil.getMessage(distanceUrl);
|
// JSONObject distanceObj = JSONObject.parseObject(relationList);
|
// String distanceData = relattionObj.getString("data");
|
// System.out.println("rec getQueryRelationship:" + distanceData);
|
|
String relateddataeUrl = xzConfig.relationRelateddata + "?start=1&count=1000000&&a_like=&b_like=&dbid=" + xzConfig.dbid + "&token=" + xzConfig.token + "&relationid=" + itemObj.getString("code");
|
String relationRelateddata = entityHttpUtil.getMessage(relateddataeUrl);
|
JSONObject relateddataeObj = JSONObject.parseObject(relationRelateddata);
|
String relateddataeData = relateddataeObj.getString("data");
|
JSONArray relateddataeArray = JSONArray.parseArray(JSONObject.parseObject(relateddataeData).getString("items"));
|
System.out.println("rec getQueryRelationship:" + relateddataeArray);
|
ArrayList<String> list = new ArrayList<>();
|
for (int k = 0; k < relateddataeArray.size(); k++) {
|
JSONObject reitem = relateddataeArray.getJSONObject(k);
|
list.add(reitem.getString("a_objectid"));
|
list.add(reitem.getString("b_objectid"));
|
}
|
HashMap<String, String> reMap = new HashMap<String, String>();
|
reMap.put("token", xzConfig.token);
|
reMap.put("dbid", xzConfig.dbid);
|
reMap.put("ids", list.toString());
|
reMap.put("layerid", xzConfig.layerId);
|
reMap.put("querylatest", "true");
|
String reMapList = entityHttpUtil.getPostMessage(xzConfig.layerQuery, reMap);
|
JSONArray reArray = JSONArray.parseArray(JSONObject.parseObject(reMapList).getString("data"));
|
System.out.println("rec getQueryRelationship:" + reArray);
|
HashMap<String, Object> traiMap = new HashMap<>();
|
traiMap.put("center", JSONObject.parseObject(poiObj));
|
traiMap.put("positions", reArray);
|
if (reArray.size() > 0) {
|
ArrayList<RelaEntity> arrayList = new ArrayList<>();
|
for (int i = 0; i < reArray.size(); i++) {
|
|
String name = JSONObject.parseObject(reArray.getString(i)).getString(xzConfig.typeFiled);
|
// System.out.println("rec getQueryRelationship:" + name);
|
if (name == null || name.isEmpty()) {
|
continue;
|
} else {
|
|
if (name.equals(place)) {
|
continue;
|
}
|
boolean contains = false;
|
for (int j = 0; j < arrayList.size(); j++) {
|
RelaEntity firstElement = arrayList.get(j);
|
if (firstElement.getName().equals(name)) {
|
int flag = firstElement.getCount();
|
flag++;
|
firstElement.setCount(flag);
|
contains = true;
|
}
|
}
|
if (contains == false) {
|
RelaEntity relaEntity = new RelaEntity();
|
relaEntity.setName(name);
|
relaEntity.setCount(1);
|
arrayList.add(relaEntity);
|
}
|
}
|
}
|
String markDown = "| 数据类型 | 数据量 |\n|------|------|\n";
|
for (int i = 0; i < arrayList.size(); i++) {
|
String name = arrayList.get(i).getName();
|
int count = arrayList.get(i).getCount();
|
markDown += "| " + name + " | " + count + " |\n";
|
|
}
|
traiMap.put("msg", markDown);
|
}
|
|
// System.out.println("rec traiMap:" + traiMap);
|
return traiMap;
|
|
}
|
}
|