2024-09-27 | suerprisePlus | ![]() |
2024-09-27 | suerprisePlus | ![]() |
src/main/java/com/yb/controller/agentController.java
@@ -78,6 +78,12 @@ } // 意图函数匹配 HashMap<String, Object> mapObj = intentionService.getFunctionMatch(orderString, allParams); // hashMap.put("place",place) String args = JSONObject.parseObject(orderString).getString("args"); if(args!= null){ String place = JSONObject.parseObject(args).getString("place"); mapObj.put("place",place); } hashMap.put("content", mapObj); return R.ok(hashMap); src/main/java/com/yb/helper/RsaHelper.java
@@ -3,6 +3,7 @@ import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import java.io.IOException; import java.security.KeyFactory; import java.security.interfaces.RSAPublicKey; import java.security.spec.X509EncodedKeySpec; @@ -10,18 +11,24 @@ public class RsaHelper { // RsA秘钥加密 public static String encrypt(String key, String str) throws Exception { try { byte[] decoded = Base64.decodeBase64(key + ""); RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded)); // RSA加密:RSA/ECB/NoPadding Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, pubKey); String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8"))); return outStr; } catch (IOException e) { System.out.println(e.getMessage()); return null; } // Base64编码的公钥 byte[] decoded = Base64.decodeBase64(key + ""); RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded)); // RSA加密:RSA/ECB/NoPadding Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, pubKey); String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8"))); return outStr; } } src/main/java/com/yb/service/AgentService.java
@@ -61,13 +61,11 @@ 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; } 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); @@ -142,11 +140,11 @@ String markDown = "| 数据类型 | 数据量 |\n|------|------|\n"; for (int i = 0; i < arrayList.size(); i++) { String name = arrayList.get(i).getName(); int count = arrayList.get(i).getCount(); int count = arrayList.get(i).getCount(); markDown += "| " + name + " | " + count + " |\n"; } traiMap.put("msg",markDown); traiMap.put("msg", markDown); } System.out.println("rec getQueryRelationship:" + traiMap); src/main/java/com/yb/service/IntentionService.java
@@ -59,10 +59,9 @@ private HashMap<String, Object> getBatEnv(JSONObject orderObject, String func, Map<String, String> allParams) throws Exception { HashMap<String, Object> hashMap = new HashMap<String, Object>(); hashMap.put("func", func); // List list = orderObject.get("history"); System.out.println("rec history1:" + allParams); String history = allParams.get("history"); System.out.println("rec history1:" + history); String val = entityHttpUtil.postAgentMessage(xzConfig.battleReport, allParams); JSONObject js = JSONObject.parseObject(val); if (js == null) { @@ -85,7 +84,11 @@ String key = "msg"; String msg = (String) poiMap.get(key); hashMap.put("msg", msg); hashMap.put("data", poiMap); String center = (String) poiMap.get("center"); if(center != null){ hashMap.put("data", poiMap); } return hashMap; } @@ -96,6 +99,7 @@ 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"; ArrayList<HashMap<String, Object>> list = new ArrayList<>(); for (int i = 0; i < dataArray.size(); i++) { @@ -116,6 +120,7 @@ } // 关键字查询分类查询数据量 private ArrayList getQueryByFiledList(String name) throws Exception { String obj = xzConfig.typeFiled + " = '" + name + "'" + ""; @@ -127,8 +132,6 @@ System.out.println("rec queryMeta:" + fObj); if (fObj != null) { JSONArray fArray = JSONArray.parseArray(JSONObject.parseObject(fObj).getString("items")); System.out.println("rec queryMeta:" + fArray); System.out.println("rec queryMeta:" + fArray.size()); if (fArray.size() > 0) { for (int i = 0; i < fArray.size(); i++) { String sid = JSONObject.parseObject(fArray.get(i).toString()).getString("seid"); @@ -156,10 +159,15 @@ dis = dis.replace("m", ""); radius = Integer.parseInt(dis); } if (dis != null && dis.contains("千米")) { dis = dis.replace("千米", ""); radius = Integer.parseInt(dis) * 1000; } if (dis != null && dis.contains("米")) { dis = dis.replace("米", ""); radius = Integer.parseInt(dis); } String aroundPoi = agentService.getAgentAroundPoi(place, type, radius, xzConfig.queryFiled, xzConfig.typeFiled); if (aroundPoi == "" || aroundPoi.isEmpty()) { aroundPoi = agentService.getAgentAroundPoi(getTraditional(place), type, radius, xzConfig.queryFiled, xzConfig.typeFiled); @@ -171,12 +179,73 @@ } JSONArray dataArray = JSONArray.parseArray(aroundPoi); System.out.println("aroundPoi: " + dataArray); hashMap.put("data", dataArray); if (type.contains("全部目标")) { if (dataArray.size() == 0) { hashMap.put("data", dataArray); String msg = "已查询到" + place + "内的" + type + "相关数据。共查询到" + dataArray.size() + "条数据。"; hashMap.put("msg", msg); return hashMap; } ArrayList<HashMap<String, Object>> listArray = new ArrayList<>(); String markDown = "| 数据类型 | 数据量 |\n|------|------|\n"; ArrayList<HashMap<String, Object>> list = new ArrayList<>(); List<String> cName = new ArrayList<>(); List<Integer> cNum = new ArrayList<>(); for (int i = 0; i < dataArray.size(); i++) { JSONObject dataObj = dataArray.getJSONObject(i); String fclass1 = dataObj.getString("fclass_1"); String ids = dataObj.getString("seid"); if (cName.contains(fclass1)) { for (int j = 0; j < cName.size(); j++) { String name = cName.get(j); if (name.equals(fclass1)) { System.out.println("目标统计 = " + cName.get(j) + fclass1); int num = cNum.get(j) + 1; cNum.set(j, num); HashMap<String, Object> itemObj = list.get(j); for (String key : itemObj.keySet()) { if (key.contains("ids")) { ArrayList list_ids = (ArrayList) itemObj.get(key); list_ids.add(ids); itemObj.put(key,list_ids); } } } } } else { cName.add(fclass1); cNum.add(1); HashMap<String, Object> listhash = new HashMap<>(); ArrayList listId = new ArrayList(); listId.add(ids); listhash.put("name", fclass1); listhash.put("ids", listId); list.add(listhash); } } for (int i = 0; i < cName.size(); i++) { markDown += "| " + cName.get(i) + " | " + cNum.get(i) + " |\n"; } hashMap.put("ids", list); hashMap.put("data", markDown); hashMap.put("func", "queryMeta"); return hashMap; } String msg = "已查询到" + place + "内的" + type + "相关数据。共查询到" + dataArray.size() + "条数据。"; hashMap.put("msg", msg); return hashMap; } public String getTraditional(String place) { src/main/java/com/yb/service/XzService.java
@@ -7,6 +7,7 @@ import com.yb.helper.RsaHelper; import com.yb.util.EntityHttpUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.locationtech.jts.geom.*; @@ -24,6 +25,7 @@ import org.locationtech.proj4j.CoordinateTransform; import org.locationtech.proj4j.CoordinateTransformFactory; import org.locationtech.proj4j.ProjCoordinate; import java.util.HashMap; @Service @@ -34,28 +36,28 @@ private EntityHttpUtil entityHttpUtil; @Autowired private AgentService agentService; int num = 40; // 关键字查询 public String getQueryFiled(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception { String query = ""; String querySQL = ""; String valSql = " like '%" + place + "%'"; String key = getPublickey(); if (filed.indexOf(",") > -1) { String[] fileds = filed.split(","); for (int i = 0; i < fileds.length; i++) { String name = fileds[i]; if (i > 0) { query += " or "; String query = getQuerySql(valSql, filed); // int num = 40; if (query.length() > num) { String[] sbuString = getSqlSubStr(query, num); for (int w = 0; w < sbuString.length; w++) { if (w > 0) { querySQL += ","; } query += name + valSql; querySQL += RsaHelper.encrypt(key, sbuString[w]); } } else { query += filed + valSql; querySQL += RsaHelper.encrypt(key, query); } query += ""; System.out.println("rec getQueryFiled:" + query); String encrypt = RsaHelper.encrypt(key, query); HashMap formData = getHashMap(layerId, dbId, "1", "0", encrypt, null); System.out.println("rec getQueryFiled:" + querySQL); HashMap formData = getHashMap(layerId, dbId, "1", "0", querySQL, null); String jsonString = entityHttpUtil.getPostMessage(queryEntity, formData); System.out.println("rec getQueryFiled:" + jsonString); JSONObject jsonObject = JSON.parseObject(jsonString); @@ -67,11 +69,19 @@ return ""; } // 关键字查询 public String getQueryEntity(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception { public String[] getSqlSubStr(String str, int chunkSize) { int numChunks = (str.length() + chunkSize - 1) / chunkSize; String[] chunks = new String[numChunks]; for (int i = 0; i < numChunks; i++) { int start = i * chunkSize; int end = Math.min(start + chunkSize, str.length()); chunks[i] = str.substring(start, end); } return chunks; } public String getQuerySql(String valSql, String filed) { String query = ""; String valSql = " like '%" + place + "%'"; String key = getPublickey(); if (filed.indexOf(",") > -1) { String[] fileds = filed.split(","); for (int i = 0; i < fileds.length; i++) { @@ -81,12 +91,32 @@ } query += name + valSql; } query += ""; } else { query += filed + valSql; query = filed + valSql + ""; } query += ""; String encrypt = RsaHelper.encrypt(key, query); HashMap formData = getHashMap(layerId, dbId, "1", "100", encrypt, null); return query; } // 关键字查询 public String getQueryEntity(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception { String valSql = " like '%" + place + "%'"; String key = getPublickey(); String query = getQuerySql(valSql, filed); String querySQL = ""; // int num = 40; if (query.length() > num) { String[] sbuString = getSqlSubStr(query, num); for (int w = 0; w < sbuString.length; w++) { if (w > 0) { querySQL += ","; } querySQL += RsaHelper.encrypt(key, sbuString[w]); } } else { querySQL += RsaHelper.encrypt(key, query); } HashMap formData = getHashMap(layerId, dbId, "1", "100", querySQL, null); formData.put("querytype", "entity"); String jsonString1 = entityHttpUtil.getPostMessage(queryEntity, formData); System.out.println("rec getQueryFiled:" + jsonString1); @@ -104,9 +134,12 @@ // 范围查询 public String getQueryAround(String type, String wkt, String filed, String layerId, String dbid, String entity) throws Exception { String query = filed + " like '%" + type + "%'" + ""; if (type.contains("全部目标")) { query = filed + " like '%目标%'" + ""; } String encrypt = RsaHelper.encrypt(getPublickey(), query); HashMap formData = getHashMap(layerId, dbid, "1", "0", encrypt, wkt); formData.put("querytype","entity"); formData.put("querytype", "entity"); String jsonString = entityHttpUtil.getPostMessage(entity, formData); JSONObject jsonObject = JSON.parseObject(jsonString); JSONObject dataObj = jsonObject.getJSONObject("data"); @@ -170,7 +203,6 @@ } //生成WKT public String getWKt(double lon, double lat, int radius) throws Exception { // 创建一个坐标点 @@ -182,9 +214,9 @@ // 创建BufferOp实例,用于生成缓冲区 BufferOp bufferOp = new BufferOp(point); int dis = 500; // if (radius != 0) { // dis = radius; // } if (radius != 0) { dis = radius; } // 设置缓冲区距离为500米 Geometry bufferedGeometry = bufferOp.getResultGeometry(dis / 111319.9); // 创建WKTWriter实例,用于将Geometry转换为WKT格式 @@ -226,15 +258,16 @@ CoordinateTransform transform = ctFactory.createTransform(src, dest); // 定义一个源坐标点(经度,纬度) ProjCoordinate srcgetMin = new ProjCoordinate( envelope.getMinX(), envelope.getMinY()); // 例如:北京的经纬度 ProjCoordinate srcgetMax = new ProjCoordinate( envelope.getMaxX(), envelope.getMaxY()); // 例如:北京的经纬度 ProjCoordinate srcgetMin = new ProjCoordinate(envelope.getMinX(), envelope.getMinY(), 0); // 例如:北京的经纬度 ProjCoordinate srcgetMax = new ProjCoordinate(envelope.getMaxX(), envelope.getMaxY(), 0); // 例如:北京的经纬度 // 执行转换 ProjCoordinate destgetMin = new ProjCoordinate(); ProjCoordinate destgetMax = new ProjCoordinate(); System.out.println("转换后的坐标:X = " + srcgetMin); transform.transform(srcgetMin, destgetMin); transform.transform(srcgetMax, destgetMax); String wkt =destgetMin.x+","+destgetMin.y+","+destgetMax.x+","+destgetMax.y; System.out.println("转换后的坐标:X = " +wkt); String wkt = destgetMin.x + "," + destgetMin.y + "," + destgetMax.x + "," + destgetMax.y; System.out.println("转换后的坐标:X = " + wkt); return wkt; } src/main/java/com/yb/util/EntityHttpUtil.java
@@ -40,8 +40,9 @@ return response.body().string(); } catch (IOException e) { System.out.println(e.getMessage()); return null; } return null; } public String getAgentMessage(String aurl) { @@ -58,8 +59,9 @@ return response.body().string(); } catch (IOException e) { System.out.println(e.getMessage()); return null; } return null; } @@ -85,8 +87,9 @@ return response.body().string(); } catch (IOException e) { System.out.println(e.getMessage()); return null; } return null; // return null; } public String postAgentMessage(String aurl, Map<String, String> parms) { @@ -116,8 +119,9 @@ return response.body().string(); } catch (IOException e) { System.out.println(e.getMessage()); return null; } return null; // return null; target/classes/com/yb/controller/agentController.classBinary files differ
target/classes/com/yb/helper/RsaHelper.classBinary files differ
target/classes/com/yb/service/AgentService.classBinary files differ
target/classes/com/yb/service/IntentionService.classBinary files differ
target/classes/com/yb/service/XzService.classBinary files differ
target/classes/com/yb/util/EntityHttpUtil.classBinary files differ
target/ollama-ai-0.0.1-SNAPSHOT.jarBinary files differ
target/ollama-ai-0.0.1-SNAPSHOT.jar.originalBinary files differ