ycl-server/src/main/java/com/ycl/task/UYTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -175,7 +175,6 @@ /** * 点位在线PING检测 */ //TODO:点位在线(修改逻辑只针对工单) public void pointOnline() throws ExecutionException, InterruptedException { log.info("开始检测点位在线"); Integer times = 2; @@ -263,16 +262,20 @@ .map(CompletableFuture::join) .filter(Objects::nonNull) .collect(Collectors.toList()); //筛选出ping离线的设备,更改数据库为离线 //筛选出ping离线的设备,更改数据库为离线,并且更新纯车辆或纯人脸的设备的在线状态(这部分设备不会拉流检测) Date now = new Date(); List<UpdateOnlineVO> willUpdateList = dataList.stream().filter(result->!result.getPingOnline()).map(item -> { List<UpdateOnlineVO> onlineUpdateList = dataList.stream().map(item -> { UpdateOnlineVO vo = new UpdateOnlineVO(); vo.setOnline(ApiConstants.UY_OnlineSite_Offline); if(item.getPingOnline()) { vo.setOnline(ApiConstants.UY_OnlineSite_Online); }else if(!item.getPingOnline()){ vo.setOnline(ApiConstants.UY_OnlineSite_Offline); } vo.setIp(item.getIp()); vo.setUpdateTime(now); return vo; }).collect(Collectors.toList()); monitorMapper.updateOnline(willUpdateList); monitorMapper.updateOnline(onlineUpdateList); //存放到mongo if (!CollectionUtils.isEmpty(dataList)) { //如果存在之前的数据先删除 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -689,12 +689,20 @@ <update id="updateOnline"> <foreach collection="onlineList" item="online" separator=";"> UPDATE t_yw_point t_yw_point SET online = #{online.online}, update_time = #{online.updateTime} online = #{online.online}, update_time = #{online.updateTime} WHERE EXISTS (SELECT 1 FROM t_monitor WHERE ip = #{online.ip} AND t_monitor.serial_number = t_yw_point.serial_number ) EXISTS (SELECT 1 FROM t_monitor <where> ip = #{online.ip} AND t_monitor.serial_number = t_yw_point.serial_number <if test="online.online!=null and online.online"> and t_monitor.camera_fun_type = '2' or t_monitor.camera_fun_type = '3' </if> </where> ) </foreach> </update> </mapper>