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 ) < 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 ) < 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="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; } }