src/main/java/com/whyc/controller/BattStationTempAlarmController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/listener/ApplicationListener.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/mapper/BattCameraMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/db_alarm/BattStationTempAlarm.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/db_batt/BattCamera.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/db_power_rt/BattStationTemp.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/schedule/BattStationTempScheduleService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BattCameraService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BattStationTempAlarmService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/util/HikTempUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/controller/BattStationTempAlarmController.java
@@ -7,7 +7,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; src/main/java/com/whyc/listener/ApplicationListener.java
@@ -3,6 +3,8 @@ import com.whyc.constant.YamlProperties; import com.whyc.dto.IpInfo; import com.whyc.dto.Response; import com.whyc.pojo.db_batt.BattCamera; import com.whyc.service.BattCameraService; import com.whyc.service.VideoService; import com.whyc.util.HikTempUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -24,7 +26,7 @@ public class ApplicationListener implements ServletContextListener { @Autowired private VideoService videoService; private BattCameraService cameraService; /** * 1.初始化,开启视频流并启动录像存储 @@ -34,7 +36,8 @@ public void contextInitialized(ServletContextEvent servletContextEvent) { ServletContext application = servletContextEvent.getServletContext(); //初始化hik sdk HikTempUtil.init(); List<BattCamera> list = cameraService.getList(); HikTempUtil.init(list); } src/main/java/com/whyc/mapper/BattCameraMapper.java
New file @@ -0,0 +1,6 @@ package com.whyc.mapper; import com.whyc.pojo.db_batt.BattCamera; public interface BattCameraMapper extends CustomMapper<BattCamera> { } src/main/java/com/whyc/pojo/db_alarm/BattStationTempAlarm.java
@@ -29,14 +29,16 @@ private Float temp; @ApiModelProperty("温度坐标") private Integer level; /*@ApiModelProperty("温度坐标") private String point; @ApiModelProperty("分辨率,格式示例:384*288") private String pixel; @ApiModelProperty("单体编号") private Integer monNum; private Integer monNum;*/ private Date startTime; src/main/java/com/whyc/pojo/db_batt/BattCamera.java
New file @@ -0,0 +1,21 @@ package com.whyc.pojo.db_batt; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.ToString; /** * 电池机房的摄像头 */ @TableName(schema = "db_batt",value = "tb_batt_camera") @ToString @Data public class BattCamera { private Integer id; private String cameraId; private String cameraIp; private Integer battGroupId; private Integer stationId; } src/main/java/com/whyc/pojo/db_power_rt/BattStationTemp.java
@@ -32,6 +32,8 @@ private String minTempPoint; private String maxTempPoint; private String cameraId; private Integer battGroupId; private Integer stationId; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date recordTime; src/main/java/com/whyc/schedule/BattStationTempScheduleService.java
@@ -1,13 +1,16 @@ package com.whyc.schedule; import com.whyc.constant.YamlProperties; import com.whyc.dto.*; import com.whyc.dto.Point; import com.whyc.dto.Response; import com.whyc.dto.TempPoint; import com.whyc.factory.ThreadPoolExecutorFactory; import com.whyc.pojo.db_alarm.BattStationTempAlarm; import com.whyc.pojo.db_batt.BattCamera; import com.whyc.pojo.db_param.PageParam; import com.whyc.pojo.db_power_rt.BattStationTemp; import com.whyc.service.BattStationTempAlarmService; import com.whyc.service.BattStationTempService; import com.whyc.service.VideoService; import com.whyc.util.DateUtil; import com.whyc.util.FileUtil; import com.whyc.service.PageParamService; import com.whyc.util.HikTempUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -15,8 +18,9 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.File; import java.util.*; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @EnableScheduling @@ -27,17 +31,28 @@ @Autowired private BattStationTempService service; @Autowired private BattStationTempAlarmService alarmService; @Autowired private PageParamService paramService; /** * 温度实时 * */ @Scheduled(fixedRate = 4000,initialDelay = 2000) public void startRecordAndCheck(){ List<IpInfo> ipInfoList = HikTempUtil.ipInfoList; List<BattCamera> ipInfoList = HikTempUtil.cameraInfoList; List<PageParam> tempParmList = paramService.getTempParmList(); Integer level2AlarmTemp = tempParmList.get(0).getValue(); Integer level1AlarmTemp = tempParmList.get(1).getValue(); for (int i = 0; i < ipInfoList.size(); i++) { IpInfo ipInfo = ipInfoList.get(i); BattCamera cameraInfo = ipInfoList.get(i); ThreadPoolExecutorFactory.getPoolExecutor().execute(()-> { String ip = ipInfo.getIp(); String cameraId = ipInfo.getCameraId(); String ip = cameraInfo.getCameraIp(); String cameraId = cameraInfo.getCameraId(); Integer battGroupId = cameraInfo.getBattGroupId(); Integer stationId = cameraInfo.getStationId(); Response response = HikTempUtil.getTempPoint(ip); if ((Boolean) response.getData()){ @@ -68,8 +83,70 @@ battStationTemp.setCameraId(cameraId); Date date = new Date(); battStationTemp.setRecordTime(date); battStationTemp.setBattGroupId(battGroupId); battStationTemp.setStationId(stationId); service.addOrUpdate(battStationTemp); //温度历史-TODO //温度告警判断 //查询温度告警表,如果存在 BattStationTempAlarm alarmInDB = alarmService.getByBattGroupId(battGroupId); if(alarmInDB != null){ //如果存在,同时当前温度大于2级,则更新温度和告警等级 if(battStationTemp.getMaxTemp()>=level2AlarmTemp){ //温度相同,查看下告警等级是否一样 if(alarmInDB.getTemp().floatValue() == battStationTemp.getMaxTemp()){ if((alarmInDB.getTemp().floatValue() == level2AlarmTemp && alarmInDB.getLevel() == 2) || (alarmInDB.getTemp().floatValue() == level1AlarmTemp && alarmInDB.getLevel() == 1) ){ }else{ //告警等级不同,调整告警等级 BattStationTempAlarm alarm = new BattStationTempAlarm(); alarm.setLevel(alarmInDB.getLevel()==1?2:1); alarm.setId(alarmInDB.getId()); alarmService.updateById(alarm); } } //温度不同 else { BattStationTempAlarm alarm = new BattStationTempAlarm(); alarm.setId(alarmInDB.getId()); alarm.setTemp(battStationTemp.getMaxTemp()); if (battStationTemp.getMaxTemp() >= level1AlarmTemp) { //温度大于1级报警温度 alarm.setLevel(1); } else { alarm.setLevel(2); } alarmService.updateById(alarm); } }else { //如果不存在了,表明告警结束,更新结束时间 BattStationTempAlarm alarm = new BattStationTempAlarm(); alarm.setId(alarmInDB.getId()); alarm.setEndTime(date); alarmService.updateById(alarm); } } // 告警表内不存在当前电池组的告警,如果超过报警温度,则生成告警 else if(battStationTemp.getMaxTemp()>=level2AlarmTemp){ //温度大于2级报警温度 BattStationTempAlarm alarm = new BattStationTempAlarm(); alarm.setBattGroupId(battGroupId); alarm.setStationId(stationId); alarm.setTemp(battStationTemp.getMaxTemp()); alarm.setStartTime(date); if (battStationTemp.getMaxTemp()>=level1AlarmTemp){ //温度大于1级报警温度 alarm.setLevel(1); }else{ alarm.setLevel(2); } alarmService.add(alarm); } }else{ String msg = response.getMsg(); src/main/java/com/whyc/service/BattCameraService.java
New file @@ -0,0 +1,24 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.whyc.mapper.BattCameraMapper; import com.whyc.pojo.db_batt.BattCamera; import com.whyc.util.ActionUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Service public class BattCameraService { @Autowired private BattCameraMapper mapper; public List<BattCamera> getList(){ return mapper.selectList((Wrapper<BattCamera>) ActionUtil.objeNull); } } src/main/java/com/whyc/service/BattStationTempAlarmService.java
@@ -1,5 +1,7 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; @@ -29,4 +31,18 @@ PageInfo<BattStationTempAlarm> pageInfo = new PageInfo<>(list); return new Response<PageInfo<BattStationTempAlarm>>().set(1,pageInfo); } public BattStationTempAlarm getByBattGroupId(int battGroupId) { QueryWrapper<BattStationTempAlarm> query = Wrappers.query(); query.eq("batt_group_id",battGroupId); return mapper.selectOne(query); } public void updateById(BattStationTempAlarm alarm) { mapper.updateById(alarm); } public void add(BattStationTempAlarm alarm) { mapper.insert(alarm); } } src/main/java/com/whyc/util/HikTempUtil.java
@@ -8,6 +8,7 @@ import com.whyc.dto.TempPoint; import com.whyc.hik.Commom.osSelect; import com.whyc.hik.NetSDKDemo.HCNetSDK; import com.whyc.pojo.db_batt.BattCamera; import org.springframework.stereotype.Service; import java.io.FileOutputStream; @@ -30,19 +31,7 @@ public static List<Integer> lUserIDs = new LinkedList<>(); public static Map<String,Integer> ipLUserIdMap = new HashMap<>(); public static FExceptionCallBack_Imp fExceptionCallBack; public static List<IpInfo> ipInfoList = new LinkedList<>(); static { //TODO 暂时定义,后续要改成对应的 ipInfoList.add(new IpInfo("192.168.10.11","1")); ipInfoList.add(new IpInfo("192.168.10.12","2")); ipInfoList.add(new IpInfo("192.168.10.13","3")); ipInfoList.add(new IpInfo("192.168.10.14","4")); ipInfoList.add(new IpInfo("192.168.10.15","5")); ipInfoList.add(new IpInfo("192.168.10.16","6")); ipInfoList.add(new IpInfo("192.168.10.17","7")); ipInfoList.add(new IpInfo("192.168.10.18","8")); } public static List<BattCamera> cameraInfoList = new LinkedList<>(); public static Response getTempPoint(String ip){ Integer lUserID = ipLUserIdMap.get(ip); @@ -207,7 +196,8 @@ return new Response().setII(1,true,tempPointMap,null); } public static void init(){ public static void init(List<BattCamera> list){ cameraInfoList = list; if (hCNetSDK == null) { if (!createSDKInstance()) { System.out.println("Load SDK fail"); @@ -251,8 +241,8 @@ //登录设备,每一台设备只需要登录一次 //lUserID = TestDemo.loginDevice("10.9.137.21", (short) 8000, "admin", "Cpfwb518+"); //int lUserID = HikTempUtil.loginDevice("192.168.10.16", (short) 8000, "admin", "fg001@hdw"); for (int i = 0; i < ipInfoList.size(); i++) { String ip = ipInfoList.get(i).getIp(); for (int i = 0; i < cameraInfoList.size(); i++) { String ip = cameraInfoList.get(i).getCameraIp(); int lUserID = HikTempUtil.loginDevice(ip, (short) 8000, "admin", "fg001@hdw"); lUserIDs.add(lUserID); ipLUserIdMap.put(ip,lUserID);