From 4842fb12fcb26c714768dab0e47d7e9012ffa87e Mon Sep 17 00:00:00 2001 From: suerprisePlus <15810472099@163.com> Date: 星期五, 27 九月 2024 09:56:45 +0800 Subject: [PATCH] 当问到库中不存在的数据时,直接卡死,如问题:查看台湾花莲机场之间的关系、战场环境总结报告 --- src/main/java/com/yb/helper/RsaHelper.java | 27 ++++-- target/classes/com/yb/helper/RsaHelper.class | 0 target/ollama-ai-0.0.1-SNAPSHOT.jar | 0 src/main/java/com/yb/service/IntentionService.java | 78 ++++++++++++++++++- target/classes/com/yb/controller/agentController.class | 0 target/classes/com/yb/util/EntityHttpUtil.class | 0 src/main/java/com/yb/controller/agentController.java | 6 + src/main/java/com/yb/util/EntityHttpUtil.java | 12 ++- target/classes/com/yb/service/XzService.class | 0 src/main/java/com/yb/service/XzService.java | 70 ++++++++--------- target/ollama-ai-0.0.1-SNAPSHOT.jar.original | 0 target/classes/com/yb/service/IntentionService.class | 0 12 files changed, 138 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/yb/controller/agentController.java b/src/main/java/com/yb/controller/agentController.java index 6c17668..3b81df3 100644 --- a/src/main/java/com/yb/controller/agentController.java +++ b/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); diff --git a/src/main/java/com/yb/helper/RsaHelper.java b/src/main/java/com/yb/helper/RsaHelper.java index b224ca7..79a4dc5 100644 --- a/src/main/java/com/yb/helper/RsaHelper.java +++ b/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鍔犲瘑锛歊SA/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鍔犲瘑锛歊SA/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; } } diff --git a/src/main/java/com/yb/service/IntentionService.java b/src/main/java/com/yb/service/IntentionService.java index 111301b..6aaa81c 100644 --- a/src/main/java/com/yb/service/IntentionService.java +++ b/src/main/java/com/yb/service/IntentionService.java @@ -85,7 +85,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 +100,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 +121,7 @@ } + // 鍏抽敭瀛楁煡璇㈠垎绫绘煡璇㈡暟鎹噺 private ArrayList getQueryByFiledList(String name) throws Exception { String obj = xzConfig.typeFiled + " = '" + name + "'" + ""; @@ -127,8 +133,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 +160,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 +180,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) { diff --git a/src/main/java/com/yb/service/XzService.java b/src/main/java/com/yb/service/XzService.java index d2b0313..6b8b6a2 100644 --- a/src/main/java/com/yb/service/XzService.java +++ b/src/main/java/com/yb/service/XzService.java @@ -24,6 +24,7 @@ import org.locationtech.proj4j.CoordinateTransform; import org.locationtech.proj4j.CoordinateTransformFactory; import org.locationtech.proj4j.ProjCoordinate; + import java.util.HashMap; @Service @@ -37,25 +38,10 @@ // 鍏抽敭瀛楁煡璇� public String getQueryFiled(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception { - 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++) { - String name = fileds[i]; - if (i > 0) { - query += " or "; - } - query += name + valSql; - } - } else { - query += filed + valSql; - } - query += ""; - System.out.println("rec getQueryFiled:" + query); - String encrypt = RsaHelper.encrypt(key, query); - HashMap formData = getHashMap(layerId, dbId, "1", "0", encrypt, null); + String querySQL = getQuerySql(valSql, filed); + 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,26 +53,33 @@ return ""; } - // 鍏抽敭瀛楁煡璇� - public String getQueryEntity(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception { - String query = ""; - String valSql = " like '%" + place + "%'"; + private String getQuerySql(String valSql, String filed) throws Exception { String key = getPublickey(); + String querySQL = ""; 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 "; + querySQL += ";"; } - query += name + valSql; + String Sql = name + valSql + ""; + querySQL += RsaHelper.encrypt(key, Sql); } } else { - query += filed + valSql; + String Sql = filed + valSql + ""; + querySQL = RsaHelper.encrypt(key, Sql); } - query += ""; - String encrypt = RsaHelper.encrypt(key, query); - HashMap formData = getHashMap(layerId, dbId, "1", "100", encrypt, null); + return querySQL; + + } + + + // 鍏抽敭瀛楁煡璇� + public String getQueryEntity(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception { + String valSql = " like '%" + place + "%'"; + String querySQL = getQuerySql(valSql, filed); + 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 +97,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 +166,6 @@ } - //鐢熸垚WKT public String getWKt(double lon, double lat, int radius) throws Exception { // 鍒涘缓涓�涓潗鏍囩偣 @@ -182,9 +177,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杞崲涓篧KT鏍煎紡 @@ -226,15 +221,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("杞崲鍚庣殑鍧愭爣锛歑 = " + srcgetMin); transform.transform(srcgetMin, destgetMin); transform.transform(srcgetMax, destgetMax); - String wkt =destgetMin.x+","+destgetMin.y+","+destgetMax.x+","+destgetMax.y; - System.out.println("杞崲鍚庣殑鍧愭爣锛歑 = " +wkt); + String wkt = destgetMin.x + "," + destgetMin.y + "," + destgetMax.x + "," + destgetMax.y; + System.out.println("杞崲鍚庣殑鍧愭爣锛歑 = " + wkt); return wkt; } diff --git a/src/main/java/com/yb/util/EntityHttpUtil.java b/src/main/java/com/yb/util/EntityHttpUtil.java index cc65d33..1846e44 100644 --- a/src/main/java/com/yb/util/EntityHttpUtil.java +++ b/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; diff --git a/target/classes/com/yb/controller/agentController.class b/target/classes/com/yb/controller/agentController.class index e3a44b2..8b68a86 100644 --- a/target/classes/com/yb/controller/agentController.class +++ b/target/classes/com/yb/controller/agentController.class Binary files differ diff --git a/target/classes/com/yb/helper/RsaHelper.class b/target/classes/com/yb/helper/RsaHelper.class index c6188ae..89e2a16 100644 --- a/target/classes/com/yb/helper/RsaHelper.class +++ b/target/classes/com/yb/helper/RsaHelper.class Binary files differ diff --git a/target/classes/com/yb/service/IntentionService.class b/target/classes/com/yb/service/IntentionService.class index ee6eb43..e641078 100644 --- a/target/classes/com/yb/service/IntentionService.class +++ b/target/classes/com/yb/service/IntentionService.class Binary files differ diff --git a/target/classes/com/yb/service/XzService.class b/target/classes/com/yb/service/XzService.class index c614138..c62f9c1 100644 --- a/target/classes/com/yb/service/XzService.class +++ b/target/classes/com/yb/service/XzService.class Binary files differ diff --git a/target/classes/com/yb/util/EntityHttpUtil.class b/target/classes/com/yb/util/EntityHttpUtil.class index d3857e8..f811455 100644 --- a/target/classes/com/yb/util/EntityHttpUtil.class +++ b/target/classes/com/yb/util/EntityHttpUtil.class Binary files differ diff --git a/target/ollama-ai-0.0.1-SNAPSHOT.jar b/target/ollama-ai-0.0.1-SNAPSHOT.jar index 5916bc5..3136b07 100644 --- a/target/ollama-ai-0.0.1-SNAPSHOT.jar +++ b/target/ollama-ai-0.0.1-SNAPSHOT.jar Binary files differ diff --git a/target/ollama-ai-0.0.1-SNAPSHOT.jar.original b/target/ollama-ai-0.0.1-SNAPSHOT.jar.original index e72beee..ac07856 100644 --- a/target/ollama-ai-0.0.1-SNAPSHOT.jar.original +++ b/target/ollama-ai-0.0.1-SNAPSHOT.jar.original Binary files differ -- Gitblit v1.9.3