/* * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the dreamlu.net developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: Chill 庄骞 (smallchill@163.com) */ package org.springblade.jfpt.alarm.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.common.entity.ReportReturnData; 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.common.entity.AlarmExcel; import org.springblade.jfpt.alarm.vo.AlarmVO; import org.springblade.jfpt.parcel.vo.ConditionVo; import org.springblade.system.user.entity.User; import org.springframework.stereotype.Service; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * 服务实现类 * * @author BladeX * @since 2020-07-04 */ @Service public class AlarmServiceImpl extends ServiceImpl implements IAlarmService { @Override public IPage selectAlarmPage(IPage page, AlarmVO alarm) { return page.setRecords(baseMapper.selectAlarmPage(page, alarm)); } @Override public List listAll() { return baseMapper.listAll(); } @Override public List selectList(String jtype,String district,String waringType,String beginTime,String endTime) { return baseMapper.selectList(jtype,district,waringType,beginTime,endTime); } @Override public List getLimit() { return baseMapper.getLimit(); } @Override public List selectInfo(String id) { return baseMapper.selectInfo(id); } @Override public List selecttx(String id) { return baseMapper.selecttx(id); } @Override public void deletejj(String id) { baseMapper.deletejj(id); } @Override public void s(Alarm alarm) { baseMapper.s(alarm); } @Override public void updateOne(Alarm alarm) { baseMapper.updateOne(alarm); } @Override public List> selectScount(String time) { return baseMapper.selectScount(time); } @Override public List selectListSe(String beginTime, String endTime) { return baseMapper.selectListSe(beginTime, endTime); } @Override public void updateJtype(String id,String jtype,String bz,String securityArr) { baseMapper.updateJtype(id,jtype,bz,securityArr); } @Override public void updateVaddress(String vaddress,String uids, String jid) { baseMapper.updateVaddress(vaddress,uids ,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> 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 selectAlarmData() { Map map = new HashMap<>(); //查询数据 List list = baseMapper.selectAlarmData(); //封装数据 map.put("alarmData",list); //返回数据 return map; } /** * 主动报警统计 饼图展示 * @param conditionVo status 0:本日 1:本月 2:本月 * @return */ @Override public List> selectAlarmSum(ConditionVo conditionVo) { //status 不为空时 if (null!=conditionVo.getStatus()){ return baseMapper.selectAlarmSum(conditionVo); } //返回数据 return null; } @Override public List queryPolice() { return baseMapper.queryPolice(); } @Override public List queryPoliceTime(List policeIdArr) { return baseMapper.queryPoliceTime(policeIdArr); } @Override public List> queryBa() { return baseMapper.queryBa(); } @Override public List getAlarm(AlarmVO alarmVO) { return baseMapper.getAlarm(alarmVO); } @Override public List getAlarming(AlarmVO alarmVO) { return baseMapper.getAlarming(alarmVO); } @Override public boolean setAlarm(AlarmVO alarmVO) { return baseMapper.setAlarm(alarmVO); } /** * 查询当前时间段一键求助报警总次数 * @param conditionVo * @return */ @Override public Integer selAlarmTimeCount(ConditionVo conditionVo) { return baseMapper.selAlarmTimeCount(conditionVo); } /** * 一键求助报警确认时间占比 * @param conditionVo 条件 * @return */ @Override public Object selConfirmTimePro(ConditionVo conditionVo) { //查询当前时间段内一键求助报警的数据集合 List alarmList = baseMapper.selectAlarmList(conditionVo); List 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 && czTime-alarmTime=AlarmTimeConstant.TEN_TIME && 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 && nowTime-alarmTime=AlarmTimeConstant.TEN_TIME && 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 selAlarmTimeDis(ConditionVo conditionVo) { //查询当前时间段内一键求助报警的数据集合 List alarmList = baseMapper.selectAlarmList(conditionVo); if (alarmList.size()>0) { List 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); } /** * 统计时间段内一键求助警情数量数据 * @param conditionVo * @return */ @Override public Map selectAlarmTimeData(ConditionVo conditionVo) { conditionVo.setStartTime(conditionVo.getStartTime().substring(0,10)); conditionVo.setEndTime(conditionVo.getEndTime().substring(0,10)); Map map = new HashMap<>(); //查询数据 List list = baseMapper.selectAlarmTimeData(conditionVo); //封装数据 map.put("alarmData",list); //返回数据 return map; } @Override public List> queryYearAlarm(String deviceNumber) { List childList = new ArrayList(); for (int i = 1; i <= 12; i++) { childList.add(i); } return baseMapper.queryYearAlarm(deviceNumber,childList); } /** * 导出主动报警数据表格 * @param alarmVO 查询条件 */ @Override public List exportAlarm(AlarmVO alarmVO) { return baseMapper.exportAlarm(alarmVO); } /** * 获取实时警情数据集合 * @param alarmVO * @return */ @Override public List getAlarmPie(AlarmVO alarmVO) { return baseMapper.getAlarmPie(alarmVO); } /** * 查询未处理及处理中的警情总数量 * @param deviceNumber 设备编号 * @return */ @Override public Integer selectEqCount(String deviceNumber) { return baseMapper.selectEqCount(deviceNumber); } /** * 查询所有在线的接警员信息 * @param province 省 * @param city 市 * @return */ @Override public List selOnlinePolice(Integer province,Integer city) { return baseMapper.selOnlinePolice(province,city); } /** * 当web端点击办结,推送110,派送保安是 更新警情的接警员信息 * @param alarm 警情信息 * @return */ @Override public boolean updateReceivingAlarmPoliceInfo(Alarm alarm) { int i = baseMapper.updateReceivingAlarmPoliceInfo(alarm); if (i>0){ return true; } return false; } /** * 查询当前保安需要处理和未处理的警情信息 * @param alarmVO 需包含保安人员id,状态 status 1 查当前保安收到的警情和已接收的警情,已处理完成的 2:未接收的 3:处理完成的 * @return */ @Override public List getAlarmList(AlarmVO alarmVO) { return alarmVO.getStatus()==1?baseMapper.getAllAlarmList(alarmVO):baseMapper.getAlarmList(alarmVO); } /** * 获取警情数量的集合,全部,未处理,已处理的数量 * @param alarmVO 需包含保安人员id * @return */ @Override public List getAlarmNumber(AlarmVO alarmVO) { return baseMapper.getAlarmNumber(alarmVO); } }