已修改14个文件
237 ■■■■ 文件已修改
src/main/java/com/yb/controller/agentController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/helper/RsaHelper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/service/AgentService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/service/IntentionService.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/service/XzService.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yb/util/EntityHttpUtil.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/controller/agentController.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/helper/RsaHelper.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/service/AgentService.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/service/IntentionService.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/service/XzService.class 补丁 | 查看 | 原始文档 | blame | 历史
target/classes/com/yb/util/EntityHttpUtil.class 补丁 | 查看 | 原始文档 | blame | 历史
target/ollama-ai-0.0.1-SNAPSHOT.jar 补丁 | 查看 | 原始文档 | blame | 历史
target/ollama-ai-0.0.1-SNAPSHOT.jar.original 补丁 | 查看 | 原始文档 | blame | 历史
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.class
Binary files differ
target/classes/com/yb/helper/RsaHelper.class
Binary files differ
target/classes/com/yb/service/AgentService.class
Binary files differ
target/classes/com/yb/service/IntentionService.class
Binary files differ
target/classes/com/yb/service/XzService.class
Binary files differ
target/classes/com/yb/util/EntityHttpUtil.class
Binary files differ
target/ollama-ai-0.0.1-SNAPSHOT.jar
Binary files differ
target/ollama-ai-0.0.1-SNAPSHOT.jar.original
Binary files differ