南昌市物联网技防平台-后台
Administrator
2021-04-07 eb3440d7c0c7baef5e6fc888fd0076b1787643d9
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/alarm/service/impl/AlarmServiceImpl.java
@@ -17,16 +17,21 @@
package org.springblade.jfpt.alarm.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
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;
import org.springblade.jfpt.alarm.vo.AlarmVO;
import org.springblade.jfpt.parcel.util.DateUtils;
import org.springblade.jfpt.parcel.vo.ConditionVo;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 *  服务实现类
@@ -93,8 +98,253 @@
   }
   @Override
   public void updateJtype(String id,String czTime,String bz) {
      baseMapper.updateJtype(id,czTime,bz);
   public void updateJtype(String id,String jtype,String bz) {
      baseMapper.updateJtype(id,jtype,bz);
   }
   @Override
   public void updateVaddress(String vaddress, String jid) {
      baseMapper.updateVaddress(vaddress, jid);
   }
   @Override
   public void updatePoliceStatus(String id,String status) {
      baseMapper.updatePoliceStatus(id,status);
   }
   @Override
   public void updateAaddress(String aaddress, String jid) {
      baseMapper.updateAaddress(aaddress, jid);
   }
   @Override
   public List<Map<String, Object>> selectEq(String time) {
      return baseMapper.selectEq(time);
   }
   /**
    * 查询警情总数
    * @param conditionVo status  0:本日   1:本周   2:本月
    * @return
    */
   @Override
   public Integer selectAlarmCount(ConditionVo conditionVo) {
      return baseMapper.selectAlarmCount(conditionVo);
   }
   /**
    * 查询7天内主动报警(紧急求助)每天的数量
    * @return
    */
   @Override
   public Map<String, Object> selectAlarmData() {
      Map<String, Object> map = new HashMap<>();
      //查询数据
      List<Integer> list = baseMapper.selectAlarmData();
      //封装数据
      map.put("alarmData",list);
      //返回数据
      return map;
   }
   /**
    * 主动报警统计   饼图展示
    * @param conditionVo status 0:本日   1:本月  2:本月
    * @return
    */
   @Override
   public List<Map<String, Object>> selectAlarmSum(ConditionVo conditionVo) {
      //status 不为空时
      if (null!=conditionVo.getStatus()){
         return baseMapper.selectAlarmSum(conditionVo);
      }
      //返回数据
      return null;
   }
   @Override
   public List<Map<String, Object>> queryPolice() {
      return baseMapper.queryPolice();
   }
   @Override
   public List<Map<String, Object>> queryPoliceTime(List policeIdArr) {
      return baseMapper.queryPoliceTime(policeIdArr);
   }
   @Override
   public List<Map<String, Object>> queryBa() {
      return baseMapper.queryBa();
   }
   /**
    * 查询当前时间段一键求助报警总次数
    * @param conditionVo
    * @return
    */
   @Override
   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_TIME){
                  count05+=1;
               }
               //5-10分钟
               if (czTime-alarmTime>=AlarmTimeConstant.FIVE_TIME && czTime-alarmTime<AlarmTimeConstant.TEN_TIME){
                  count0510+=1;
               }
               //10-30分钟
               if (czTime-alarmTime>=AlarmTimeConstant.TEN_TIME && czTime-alarmTime<AlarmTimeConstant.THIRTY_TIME){
                  count1030+=1;
               }
               //30分钟以上
               if (czTime-alarmTime>=AlarmTimeConstant.THIRTY_TIME){
                  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_TIME){
                  count05+=1;
               }
               //5-10分钟
               if (nowTime-alarmTime>=AlarmTimeConstant.FIVE_TIME && nowTime-alarmTime<AlarmTimeConstant.TEN_TIME){
                  count0510+=1;
               }
               //10-30分钟
               if (nowTime-alarmTime>=AlarmTimeConstant.TEN_TIME && nowTime-alarmTime<AlarmTimeConstant.THIRTY_TIME){
                  count1030+=1;
               }
               //30分钟以上
               if (nowTime-alarmTime>=AlarmTimeConstant.THIRTY_TIME){
                  count30+=1;
               }
            } catch (ParseException e) {
               e.printStackTrace();
            }
         }
      }
      //封装数据
      list.add(count05);
      list.add(count0510);
      list.add(count1030);
      list.add(count30);
      //返回数据
      return list;
   }
   /**
    * 查询当前时间段区间时间一键求助报警个数
    * @param conditionVo
    * @return
    */
   @Override
   public List<Integer> selAlarmTimeDis(ConditionVo conditionVo) {
      //查询当前时间段内一键求助报警的数据集合
      List<Alarm> alarmList = baseMapper.selectAlarmList(conditionVo);
      if (alarmList.size()>0) {
         List<Integer> list = new ArrayList<>();
         int count02 = 0;
         int count0204 = 0;
         int count0406 = 0;
         int count0608 = 0;
         int count0810 = 0;
         int count1012 = 0;
         int count1214 = 0;
         int count1416 = 0;
         int count1618 = 0;
         int count1820 = 0;
         int count2022 = 0;
         int count2224 = 0;
         //遍历集合
         for (Alarm alarm : alarmList) {
            try {
               int hours = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(alarm.getAlarmTime()).getHours();
               if (hours > 0 && hours < AlarmTimeConstant.TWO) {
                  count02 += 1;
               }
               if (hours >= AlarmTimeConstant.TWO && hours < AlarmTimeConstant.FOUR) {
                  count0204 += 1;
               }
               if (hours >= AlarmTimeConstant.FOUR && hours < AlarmTimeConstant.SIX) {
                  count0406 += 1;
               }
               if (hours >= AlarmTimeConstant.SIX && hours < AlarmTimeConstant.EIGHT) {
                  count0608 += 1;
               }
               if (hours >= AlarmTimeConstant.EIGHT && hours < AlarmTimeConstant.TEN) {
                  count0810 += 1;
               }
               if (hours >= AlarmTimeConstant.TEN && hours < AlarmTimeConstant.TWEKVE) {
                  count1012 += 1;
               }
               if (hours >= AlarmTimeConstant.TWEKVE && hours < AlarmTimeConstant.FOURTEEN) {
                  count1214 += 1;
               }
               if (hours >= AlarmTimeConstant.FOURTEEN && hours < AlarmTimeConstant.SIXTEEN) {
                  count1416 += 1;
               }
               if (hours >= AlarmTimeConstant.SIXTEEN && hours < AlarmTimeConstant.EIGHTEEN) {
                  count1618 += 1;
               }
               if (hours >= AlarmTimeConstant.EIGHTEEN && hours < AlarmTimeConstant.TWENTY) {
                  count1820 += 1;
               }
               if (hours >= AlarmTimeConstant.TWENTY && hours < AlarmTimeConstant.TWENTY_TWO) {
                  count2022 += 1;
               }
               if (hours >= AlarmTimeConstant.TWENTY_TWO && hours < AlarmTimeConstant.TWENTY_FOUR) {
                  count2224 += 1;
               }
            } catch (ParseException e) {
               e.printStackTrace();
            }
         }
         //封装数据
         list.add(count02);
         list.add(count0204);
         list.add(count0406);
         list.add(count0608);
         list.add(count0810);
         list.add(count1012);
         list.add(count1214);
         list.add(count1416);
         list.add(count1618);
         list.add(count1820);
         list.add(count2022);
         list.add(count2224);
         //返回数据
         return list;
      }
      return Arrays.asList(0,0,0,0,0,0,0,0,0,0,0,0);
   }
}