From a9f99d3f074472e1e16ec6109e5d819ca8dcf4d0 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期二, 31 十月 2023 15:51:15 +0800
Subject: [PATCH] 添加判断是否含有污染源的接口

---
 src/main/java/com/yssh/entity/Qxsh.java                   |   12 ++++++
 src/main/java/com/yssh/mapper/QxshMapper.java             |    2 +
 src/main/java/com/yssh/service/SuYuanService.java         |   19 ++++++++-
 src/main/java/com/yssh/service/WarningAnalyseService.java |   63 ++++++++++++++++++++++++++-----
 src/main/resources/mapper/QxshMapper.xml                  |    4 ++
 5 files changed, 87 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/yssh/entity/Qxsh.java b/src/main/java/com/yssh/entity/Qxsh.java
index 8fcf7b2..bfd262a 100644
--- a/src/main/java/com/yssh/entity/Qxsh.java
+++ b/src/main/java/com/yssh/entity/Qxsh.java
@@ -30,7 +30,11 @@
     @ApiModelProperty(value = "鏃堕棿")
     private String time;
 
+    @ApiModelProperty(value = "鏄惁瀛樺湪婧簮")
+    private Integer isSuYuan;
+
     public Qxsh() {
+        this.isSuYuan = 0;
     }
 
     public Integer getId() {
@@ -80,4 +84,12 @@
     public void setTime(String time) {
         this.time = time;
     }
+
+    public Integer getIsSuYuan() {
+        return isSuYuan;
+    }
+
+    public void setIsSuYuan(Integer isSuYuan) {
+        this.isSuYuan = isSuYuan;
+    }
 }
diff --git a/src/main/java/com/yssh/mapper/QxshMapper.java b/src/main/java/com/yssh/mapper/QxshMapper.java
index 4c828f9..116cbf4 100644
--- a/src/main/java/com/yssh/mapper/QxshMapper.java
+++ b/src/main/java/com/yssh/mapper/QxshMapper.java
@@ -34,6 +34,8 @@
 
     public List<Map<String, Object>> count7DayForAlarm(@Param("start") Integer start, @Param("end") Integer end);
 
+    public Integer hasSuYuan(@Param("suYuanId") String suYuanId, @Param("createTime") String createTime);
+
     public List<Qxsh> select3Hours(@Param("start") Integer start, @Param("end") Integer end);
 
     public Qxsh selectByTimeAndName(@Param("time") Integer time, @Param("name") String name);
diff --git a/src/main/java/com/yssh/service/SuYuanService.java b/src/main/java/com/yssh/service/SuYuanService.java
index 889fd13..8ddd0e5 100644
--- a/src/main/java/com/yssh/service/SuYuanService.java
+++ b/src/main/java/com/yssh/service/SuYuanService.java
@@ -47,6 +47,8 @@
 	@Resource
 	private LocationService locService;
 
+	private static HashMap<String, String> sites = new HashMap<>();
+
 	//@Transactional
 	@Async("threadPoolTaskExecutor")
 	public void insertSuYuanDatasAsync(List<SuYuan> lists, String time) throws Exception {
@@ -321,9 +323,20 @@
 	}
 
 	public String selectSuYuanIdByName(String name) {
-		MonitorPointPosition mpp = commonService.select3dCheckPointByName(name);
-		if (null == mpp) return null;
+		if (sites.containsKey(name)) {
+			return sites.get(name);
+		}
 
-		return mpp.getId().substring(0, mpp.getId().lastIndexOf("_") + 1) + "0";
+		MonitorPointPosition mpp = commonService.select3dCheckPointByName(name);
+		if (null == mpp) {
+			return null;
+		}
+
+		String suYuanId = mpp.getId().substring(0, mpp.getId().lastIndexOf("_") + 1) + "0";
+		if (!sites.containsKey(name)) {
+			sites.put(name, suYuanId);
+		}
+
+		return suYuanId;
 	}
 }
diff --git a/src/main/java/com/yssh/service/WarningAnalyseService.java b/src/main/java/com/yssh/service/WarningAnalyseService.java
index 5c524c1..9ff78a9 100644
--- a/src/main/java/com/yssh/service/WarningAnalyseService.java
+++ b/src/main/java/com/yssh/service/WarningAnalyseService.java
@@ -1,6 +1,5 @@
 package com.yssh.service;
 
-import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
 
@@ -26,25 +25,28 @@
     protected final Logger logger = LoggerFactory.getLogger(this.getClass());
 
     @Resource
-    private WarningDetailMapper warningDetailMapper;
+    WarningDetailMapper warningDetailMapper;
 
     @Resource
-    private CommonService commonService;
+    CommonService commonService;
 
     @Resource
-    private SuYuanMapper suYuanMapper;
+    SuYuanMapper suYuanMapper;
 
     @Resource
-    private DictRecordMapper dictRecordMapper;
+    DictRecordMapper dictRecordMapper;
 
     @Resource
-    private AsyncService asyncService;
+    AsyncService asyncService;
 
     @Resource
-    private QxshMapper qxshMapper;
+    QxshMapper qxshMapper;
 
     @Resource
-    private VocValsService vocValsService;
+    VocValsService vocValsService;
+
+    @Resource
+    SuYuanService suYuanService;
 
     private static HashMap<String, String> filterMap = new HashMap<>();
 
@@ -63,14 +65,18 @@
      * 鑾峰彇瀹炴椂鎶ヨ
      */
     public List<Qxsh> getRunTimeAlarmAnalyse(Integer start, Integer end) {
-        return qxshMapper.selectAlarmByBeginAndEnd(start, end);
+        List<Qxsh> list = qxshMapper.selectAlarmByBeginAndEnd(start, end);
+
+        return copeHasSuYuan(list);
     }
 
     /**
      * 鑾峰彇瀹炴椂棰勮
      */
     public List<Qxsh> getRunTimeWarningAnalyse(Integer start, Integer end) {
-        return qxshMapper.selectWarnByBeginAndEnd(start, end);
+        List<Qxsh> list = qxshMapper.selectWarnByBeginAndEnd(start, end);
+
+        return copeHasSuYuan(list);
     }
 
     /**
@@ -317,4 +323,41 @@
 
         return result;
     }
+
+    /**
+     * 澶勭悊鏄惁鍚湁婧簮淇℃伅
+     */
+    private List<Qxsh> copeHasSuYuan(List<Qxsh> list) {
+        if (null == list || list.isEmpty()) {
+            return null;
+        }
+
+        Map<String, Integer> tabs = new HashMap<>();
+        for (Qxsh qxsh : list) {
+            String tab = "su_yuan_" + qxsh.getTime();
+            if (!tabs.containsKey(tab)) {
+                tabs.put(tab, suYuanMapper.isTableExists(tab));
+            }
+
+            int rows = tabs.get(tab);
+            if (0 == rows) {
+                continue;
+            }
+
+            int isSuYuan = hasSuYuan(qxsh);
+            qxsh.setIsSuYuan(isSuYuan);
+        }
+
+        return list;
+    }
+
+    /**
+     * 鏌ヨ婧簮
+     */
+    private Integer hasSuYuan(Qxsh qxsh) {
+        String suYuanId = suYuanService.selectSuYuanIdByName(qxsh.getName());
+        String createTime = qxsh.getTime().substring(0, 4) + "-" + qxsh.getTime().substring(4, 6) + "-" + qxsh.getTime().substring(6, 8) + " " + qxsh.getTime().substring(8, 10) + ":00:00";
+
+        return qxshMapper.hasSuYuan(suYuanId, createTime);
+    }
 }
diff --git a/src/main/resources/mapper/QxshMapper.xml b/src/main/resources/mapper/QxshMapper.xml
index ee872f3..9520544 100644
--- a/src/main/resources/mapper/QxshMapper.xml
+++ b/src/main/resources/mapper/QxshMapper.xml
@@ -91,6 +91,10 @@
         select createTime, count(*) "num" from rs group by createTime order by createTime;
     </select>
 
+    <select id="hasSuYuan" resultType="java.lang.Integer">
+        select count(*) from suyuan_46 where su_yuan_id=#{suYuanId} and create_time=#{createTime};
+    </select>
+
     <select id="select3Hours" resultType="com.yssh.entity.Qxsh">
         select id, name, lon, lat, format(value, 2) "value", time
         from yssh_qxsh

--
Gitblit v1.9.3