From 53ae0215de46b9bb68d9aa5d5a3e83dde7cb3986 Mon Sep 17 00:00:00 2001 From: suerprisePlus <15810472099@163.com> Date: 星期五, 27 九月 2024 15:20:11 +0800 Subject: [PATCH] 接口优化 --- src/main/java/com/yb/service/XzService.java | 65 +++++++++++++++++++++++++------- 1 files changed, 51 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/yb/service/XzService.java b/src/main/java/com/yb/service/XzService.java index 6b8b6a2..090f973 100644 --- a/src/main/java/com/yb/service/XzService.java +++ b/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.*; @@ -35,12 +36,27 @@ 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 querySQL = ""; String valSql = " like '%" + place + "%'"; - String querySQL = getQuerySql(valSql, filed); + String key = getPublickey(); + 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 += ","; + } + querySQL += RsaHelper.encrypt(key, sbuString[w]); + } + } else { + querySQL += RsaHelper.encrypt(key, query); + } + 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); @@ -53,32 +69,53 @@ return ""; } - private String getQuerySql(String valSql, String filed) throws Exception { - String key = getPublickey(); - String querySQL = ""; + 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 = ""; if (filed.indexOf(",") > -1) { String[] fileds = filed.split(","); for (int i = 0; i < fileds.length; i++) { String name = fileds[i]; if (i > 0) { - querySQL += ";"; + query += " or "; } - String Sql = name + valSql + ""; - querySQL += RsaHelper.encrypt(key, Sql); + query += name + valSql; } + query += ""; } else { - String Sql = filed + valSql + ""; - querySQL = RsaHelper.encrypt(key, Sql); + query = filed + valSql + ""; } - return querySQL; - + return query; } - // 鍏抽敭瀛楁煡璇� public String getQueryEntity(String place, String filed, String layerId, String dbId, String queryEntity) throws Exception { String valSql = " like '%" + place + "%'"; - String querySQL = getQuerySql(valSql, filed); + 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); -- Gitblit v1.9.3