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