From 87ba91cc982d089cb8993753de049d0d638c8228 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 07 Apr 2021 11:14:54 +0800
Subject: [PATCH] 主动报警警情确认时间接口新增

---
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/constant/AlarmTimeConstant.java    |   12 ++++
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java         |    9 +++
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml             |   43 ++++++++------
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java            |    7 ++
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java |   82 ++++++++++++++++++++++++++-
 blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/controller/AlarmController.java    |   19 ++++++
 6 files changed, 150 insertions(+), 22 deletions(-)

diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/constant/AlarmTimeConstant.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/constant/AlarmTimeConstant.java
new file mode 100644
index 0000000..7cf9440
--- /dev/null
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/constant/AlarmTimeConstant.java
@@ -0,0 +1,12 @@
+package org.springblade.jfpt.alarm.constant;
+
+/**
+ * 警情处理时间常量
+ */
+public interface AlarmTimeConstant {
+	int ZERO = 0;
+	int FIVE = 5*60;
+	int TEN = 10*60;
+	int THIRTY = 30*60;
+
+}
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/controller/AlarmController.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/controller/AlarmController.java
index 7a541d6..0e6c787 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/controller/AlarmController.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/controller/AlarmController.java
@@ -547,4 +547,23 @@
 		return null;
 	}
 
+
+	/**
+	 * 一键求助报警确认时间占比
+	 * @param response 跨域配置
+	 * @param conditionVo 条件
+	 * @return
+	 */
+	@GetMapping("/selConfirmTimePro")
+	public R selConfirmTimePro(HttpServletResponse response,ConditionVo conditionVo){
+		response.setHeader("Access-Control-Allow-Origin", "*");
+		response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
+		response.setHeader("Access-Control-Allow-Credentials","true");
+		if (null!= conditionVo.getStartTime() && conditionVo.getStartTime()!=""
+			&& null!=conditionVo.getEndTime() && conditionVo.getEndTime()!="") {
+			return R.data(alarmService.selConfirmTimePro(conditionVo));
+		}
+		return null;
+	}
+
 }
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java
index 29bbdc0..d6fd45e 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java
@@ -91,4 +91,11 @@
 	 * @return
 	 */
 	Integer selAlarmTimeCount(@Param("conditionVo") ConditionVo conditionVo);
+
+	/**
+	 * 查询当前时间段内一键求助报警的数据集合
+	 * @param conditionVo
+	 * @return
+	 */
+	List<Alarm> selectAlarmList(@Param("conditionVo")ConditionVo conditionVo);
 }
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml
index 1ae2085..7d50353 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml
@@ -333,24 +333,24 @@
     </select>
 
     <!--查询警情当前时间段内每天的数据-->
-<!--    <select id="selectTimeAlarmData" resultType="java.lang.Integer">-->
-<!--       select a.days, ifnull(count,0) count from-->
-<!--            (-->
-<!--                SELECT @date := DATE_ADD( @date, INTERVAL + 1 DAY ) days FROM-->
-<!--                (-->
-<!--                    SELECT @date := DATE_ADD( #{conditionVo.startTime}, INTERVAL - 1 DAY ) FROM sys_date-->
-<!--                ) time-->
-<!--                    WHERE to_days( @date ) &lt; to_days( #{conditionVo.endTime} )-->
-<!--            ) a-->
-<!--            left join-->
-<!--            (-->
-<!--            select DATE_FORMAT(alarmTime,'%Y-%m-%d') as datetime, count(*) as count from sys_alarm-->
-<!--            where waringType = '紧急求救'-->
-<!--            group by DATE_FORMAT(alarmTime,'%Y-%m-%d')-->
-<!--            ) b-->
-<!--            on-->
-<!--            a.days = b.datetime-->
-<!--    </select>-->
+    <select id="selectTimeAlarmData" resultType="java.lang.Integer">
+       select a.days, ifnull(count,0) count from
+            (
+                SELECT @date := DATE_ADD( @date, INTERVAL + 1 DAY ) days FROM
+                (
+                    SELECT @date := DATE_ADD( #{conditionVo.startTime}, INTERVAL - 1 DAY ) FROM sys_date
+                ) time
+                    WHERE to_days( @date ) &lt; to_days( #{conditionVo.endTime} )
+            ) a
+            left join
+            (
+            select DATE_FORMAT(alarmTime,'%Y-%m-%d') as datetime, count(*) as count from sys_alarm
+            where waringType = '紧急求救'
+            group by DATE_FORMAT(alarmTime,'%Y-%m-%d')
+            ) b
+            on
+            a.days = b.datetime
+    </select>
 
 <!--    &lt;!&ndash;查询本日,本周,本月 主动报警的数量&ndash;&gt;-->
 <!--    <select id="selectAlarmSum" resultType="java.util.HashMap">-->
@@ -467,4 +467,11 @@
             and alarmTime between #{conditionVo.startTime} and #{conditionVo.endTime}
         </if>
     </select>
+
+    <!--查询当前时间段内一键求助报警的数据集合-->
+    <select id="selectAlarmList" resultType="org.springblade.jfpt.alarm.entity.Alarm">
+        SELECT waringType,alarmTime,alarmId,alarmPeople,jtype,czTime FROM `sys_alarm`
+        where waringType='紧急求救'
+        and alarmTime between #{conditionVo.startTime} and #{conditionVo.endTime}
+    </select>
 </mapper>
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java
index c124c49..837497d 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java
@@ -89,4 +89,13 @@
 	 * @return
 	 */
 	Integer selAlarmTimeCount(ConditionVo conditionVo);
+
+
+	/**
+	 * 一键求助报警确认时间占比
+	 * @param response 跨域配置
+	 * @param conditionVo 条件
+	 * @return
+	 */
+    Object selConfirmTimePro(ConditionVo conditionVo);
 }
diff --git a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java
index 7c6aaf3..8e75ddd 100644
--- a/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java
+++ b/blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java
@@ -20,6 +20,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.jfpt.alarm.constant.AlarmTimeConstant;
 import org.springblade.jfpt.alarm.entity.Alarm;
 import org.springblade.jfpt.alarm.mapper.AlarmMapper;
 import org.springblade.jfpt.alarm.service.IAlarmService;
@@ -28,11 +29,9 @@
 import org.springblade.jfpt.parcel.vo.ConditionVo;
 import org.springframework.stereotype.Service;
 
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  *  服务实现类
@@ -187,4 +186,79 @@
 	public Integer selAlarmTimeCount(ConditionVo conditionVo) {
 		return baseMapper.selAlarmTimeCount(conditionVo);
 	}
+
+	/**
+	 * 一键求助报警确认时间占比
+	 * @param conditionVo 条件
+	 * @return
+	 */
+	@Override
+	public Object selConfirmTimePro(ConditionVo conditionVo) {
+		//查询当前时间段内一键求助报警的数据集合
+		List<Alarm> alarmList = baseMapper.selectAlarmList(conditionVo);
+		List<Integer> list = new ArrayList<>();
+		//一键求助报警总数
+		int count = alarmList.size();
+		int count05 = 0;
+		int count0510 = 0;
+		int count1030 = 0;
+		int count30 = 0;
+		//遍历集合
+		for (Alarm alarm:alarmList) {
+			if (null!=alarm.getCzTime() && alarm.getCzTime()!=""){
+				try {
+					long czTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(alarm.getCzTime()).getTime();
+					long alarmTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(alarm.getAlarmTime()).getTime();
+					//0-5分钟
+					if (czTime-alarmTime>0 && czTime-alarmTime<AlarmTimeConstant.FIVE){
+						count05+=1;
+					}
+					//5-10分钟
+					if (czTime-alarmTime>=AlarmTimeConstant.FIVE && czTime-alarmTime<AlarmTimeConstant.TEN){
+						count0510+=1;
+					}
+					//10-30分钟
+					if (czTime-alarmTime>=AlarmTimeConstant.TEN && czTime-alarmTime<AlarmTimeConstant.THIRTY){
+						count1030+=1;
+					}
+					//30分钟以上
+					if (czTime-alarmTime>=AlarmTimeConstant.THIRTY){
+						count30+=1;
+					}
+				} catch (ParseException e) {
+					e.printStackTrace();
+				}
+			}else {
+				long nowTime = new Date().getTime();
+				try {
+					long alarmTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(alarm.getAlarmTime()).getTime();
+					//0-5分钟
+					if (nowTime-alarmTime>0 && nowTime-alarmTime<AlarmTimeConstant.FIVE){
+						count05+=1;
+					}
+					//5-10分钟
+					if (nowTime-alarmTime>=AlarmTimeConstant.FIVE && nowTime-alarmTime<AlarmTimeConstant.TEN){
+						count0510+=1;
+					}
+					//10-30分钟
+					if (nowTime-alarmTime>=AlarmTimeConstant.TEN && nowTime-alarmTime<AlarmTimeConstant.THIRTY){
+						count1030+=1;
+					}
+					//30分钟以上
+					if (nowTime-alarmTime>=AlarmTimeConstant.THIRTY){
+						count30+=1;
+					}
+				} catch (ParseException e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		//封装数据
+		list.add(count05);
+		list.add(count0510);
+		list.add(count1030);
+		list.add(count30);
+		//返回数据
+		return list;
+	}
 }

--
Gitblit v1.9.3