From 1cbb3ed5c0c412cd407b7d32e7978f491857d670 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期一, 31 七月 2023 14:43:52 +0800
Subject: [PATCH] 1

---
 src/main/java/com/yssh/service/WarningAnalyseService.java |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/yssh/service/WarningAnalyseService.java b/src/main/java/com/yssh/service/WarningAnalyseService.java
index 2557340..5fc3490 100644
--- a/src/main/java/com/yssh/service/WarningAnalyseService.java
+++ b/src/main/java/com/yssh/service/WarningAnalyseService.java
@@ -46,7 +46,7 @@
     @Resource
     private VocValsService vocValsService;
 
-    private SimpleDateFormat ym = new SimpleDateFormat("yyyyMM%");
+    private static HashMap<String, String> filterMap = new HashMap<>();
 
     @Async("threadPoolTaskExecutor")
     public void insertWarningDetails(List<WarningDetail> warning) throws Exception {
@@ -168,8 +168,12 @@
 
             WarningDetail wd = new WarningDetail(0L, tab, suYuanId, qxsh.getName(), null, 0, qxsh.getValue());
             DistanceSuYuan suYuan = suYuanMapper.getSuYuanById(tab, suYuanId);
-            List<String> ids3d = CalculateUtils.aloneCrosswiseExtend(point, 50);
-            DistanceSuYuan suMax = suYuanMapper.getSuYuan500Max(tab, ids3d);
+            //List<String> ids3d = CalculateUtils.aloneCrosswiseExtend(point, 50);
+            //DistanceSuYuan suMax = suYuanMapper.getSuYuan500Max(tab, ids3d);
+
+            //String filter = CalculateUtils.getFilterByExtend(point, 50);
+            String filter = getFilterByPoint(point, 50);
+            DistanceSuYuan suMax = suYuanMapper.getSuYuan500MaxByFilter(tab, filter);
             suMax.setAddr(getAddr(suMax.getId()));
 
             Report report = Report.calcReport(wd, suYuan, suMax);
@@ -184,6 +188,25 @@
         return list;
     }
 
+    public static String getFilterByPoint(MonitorPointPosition point, int range) {
+        String key = String.format("%d_%d_%d", point.getX(), point.getY(), range);
+        if (filterMap.containsKey(key)) {
+            return filterMap.get(key);
+        }
+
+        List<String> ids = CalculateUtils.aloneCrosswiseExtend(point, range);
+        for (int i = 0, c = ids.size(); i < c; i++) {
+            ids.set(i, "'" + ids.get(i) + "'");
+        }
+
+        String filter = "id in (" + StringUtils.join(ids, ",") + ")";
+        if (!filterMap.containsKey(key)) {
+            filterMap.put(key, filter);
+        }
+
+        return filter;
+    }
+
     private Hashtable<String, Boolean> getExistTabDict(List<Qxsh> rsList) {
         Hashtable<String, Boolean> dict = new Hashtable<>();
         for (Qxsh qxsh : rsList) {

--
Gitblit v1.9.3