fuliqi
2024-11-15 2150b0b87de4ec80a9d3f968c6de947f361ca19f
在线监测对于纯车辆人脸可以恢复在线状态
2个文件已修改
29 ■■■■■ 已修改文件
ycl-server/src/main/java/com/ycl/task/UYTask.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 16 ●●●● 补丁 | 查看 | 原始文档 | 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>