南昌市物联网技防平台-后台
Administrator
2021-04-07 87ba91cc982d089cb8993753de049d0d638c8228
主动报警警情确认时间接口新增
5 files modified
1 files added
172 ■■■■ changed files
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/constant/AlarmTimeConstant.java 12 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/controller/AlarmController.java 19 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.java 7 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/mapper/AlarmMapper.xml 43 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/IAlarmService.java 9 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java 82 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/constant/AlarmTimeConstant.java
New file
@@ -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;
}
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;
    }
}
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);
}
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>
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);
}
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;
    }
}