fuliqi
2024-11-18 a1969bc264f5842b87205ffc9fa77e56c51d3058
在线监测对于纯车辆人脸可以恢复在线状态
7个文件已修改
85 ■■■■■ 已修改文件
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/CheckScoreTask.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -16,6 +16,7 @@
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -175,4 +176,8 @@
     * @return 设备资产集合
     */
    public List<TMonitorResult> selectMonitorResult(VideoExportForm exportForm);
    void batchUpdateOnline(@Param("ipList")List<String> ipList,@Param("date") Date date,@Param("online")Integer online);
    List<TMonitor> selectCarOrFace();
}
ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
@@ -45,7 +45,7 @@
    public List<ContractScore> selectDefaultScoreList(ContractScore contractScore) {
        //避免搜索条件失效
        if(contractScore.getUnitId()==null) {
            //TODO:数据权限(暂时不知道要不要数据权限)
            //TODO:数据权限
            Integer unitId = SecurityUtils.getUnitId();
            Long uid = null;
            if (Objects.nonNull(unitId)) {
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -1094,7 +1094,7 @@
        Document errorFilter = new Document("$or", errorConditions);
        dList2.add(errorFilter);
        Document osdErrorFilter = new Document("$and", dList2);
        //TODO:未知数  新增0的状态
        //未知数
        List<Document> dList3 = new ArrayList<>(2);
        setTag(params,dList3);
        dList3.add(importantTagCondition);
@@ -1233,7 +1233,7 @@
        Document errorFilter = new Document("$or", errorConditions);
        dList2.add(errorFilter);
        Document osdErrorFilter = new Document("$and", dList2);
        //TODO:未知数  新增0的状态
        //未知数
        List<Document> dList3 = new ArrayList<>(2);
        setTag(params,dList3);
        dList3.add(importantTagCondition);
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -1,10 +1,6 @@
package com.ycl.platform.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -15,9 +11,6 @@
import com.ycl.config.PlatformConfig;
import com.ycl.exception.ServiceException;
import com.ycl.platform.domain.entity.*;
import com.ycl.platform.domain.excel.ErrorExport;
import com.ycl.platform.domain.excel.PointExport;
import com.ycl.platform.domain.excel.WorkOrderWhiteExport;
import com.ycl.platform.domain.form.*;
import com.ycl.platform.domain.query.*;
import com.ycl.platform.domain.vo.*;
@@ -45,7 +38,6 @@
import constant.RedisConstant;
import enumeration.ErrorType;
import enumeration.general.*;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@@ -67,8 +59,6 @@
import org.springframework.util.StringUtils;
import pojo.CascadeOption;
import java.io.IOException;
import java.io.OutputStream;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
@@ -329,6 +319,7 @@
     */
    @Override
    public Result add(WorkOrderForm form) {
        //TODO:同个国标工单增加故障类型
        //检查白名单
        List<WorkOrder> data = new ArrayList<>();
        WorkOrder workOrder = WorkOrderForm.getEntityByForm(form, null);
@@ -702,6 +693,7 @@
            return Result.error("此刻有人下发中,为避免冲突,请稍后重试");
        }
        try {
            //这是全部下发
            if (query.getWorkOrderNOList().isEmpty()) {
                query.setWorkOrderNOList(new LambdaQueryChainWrapper<>(baseMapper)
                        .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
ycl-server/src/main/java/com/ycl/task/CheckScoreTask.java
@@ -26,7 +26,6 @@
@Slf4j
@Component("checkScoreTask")
//TODO:修改score、index默认发布
public class CheckScoreTask {
    @Autowired
    private CheckTemplateMapper templateMapper;
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson2.JSONObject;
import com.mongodb.client.result.DeleteResult;
import com.ycl.feign.UYClient;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.entity.WorkOrder;
import com.ycl.platform.domain.param.UY.ImageDetectionParam;
import com.ycl.platform.domain.param.UY.MonitorQualifyParam;
@@ -262,20 +263,27 @@
                .map(CompletableFuture::join)
                .filter(Objects::nonNull)
                .collect(Collectors.toList());
        //筛选出ping离线的设备,更改数据库为离线,并且更新纯车辆或纯人脸的设备的在线状态(这部分设备不会拉流检测)
        Date now = new Date();
        List<UpdateOnlineVO> onlineUpdateList = dataList.stream().map(item -> {
            UpdateOnlineVO vo = new UpdateOnlineVO();
            if(item.getPingOnline()) {
                vo.setOnline(ApiConstants.UY_OnlineSite_Online);
            }else if(!item.getPingOnline()){
                vo.setOnline(ApiConstants.UY_OnlineSite_Offline);
        List<String> offLineList = new ArrayList<>();
        List<String> onLineList = new ArrayList<>();
        //查出数据库纯车辆或纯人脸设备
        List<String> serialNumbers = monitorMapper.selectCarOrFace().stream().map(TMonitor::getSerialNumber).collect(Collectors.toList());
        dataList.forEach(item->{
            //更新纯车辆或纯人脸的设备的在线状态(这部分设备不会拉流检测)
            if(item.getPingOnline() && !CollectionUtils.isEmpty(serialNumbers) && serialNumbers.contains(item.getNo())) {
                onLineList.add(item.getIp());
            } else if(!item.getPingOnline()) {
                //筛选出ping离线的设备,更改数据库为离线
                offLineList.add(item.getIp());
            }
            vo.setIp(item.getIp());
            vo.setUpdateTime(now);
            return vo;
        }).collect(Collectors.toList());
        monitorMapper.updateOnline(onlineUpdateList);
        });
        if(!CollectionUtils.isEmpty(offLineList)) {
            monitorMapper.batchUpdateOnline(offLineList, now, ApiConstants.UY_OnlineSite_Offline);
        }
        if(!CollectionUtils.isEmpty(onLineList)) {
            monitorMapper.batchUpdateOnline(onLineList, now, ApiConstants.UY_OnlineSite_Online);
        }
        //存放到mongo
        if (!CollectionUtils.isEmpty(dataList)) {
            //如果存在之前的数据先删除
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -695,14 +695,27 @@
            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
                <if test="online.online!=null and online.online">
                    and t_monitor.camera_fun_type = '2' or t_monitor.camera_fun_type = '3'
                </if>
            </where>
            )
            WHERE ip = #{online.ip}
            AND t_monitor.serial_number = t_yw_point.serial_number )
        </foreach>
    </update>
    <update id="batchUpdateOnline">
            UPDATE
            t_yw_point p
            LEFT JOIN t_monitor m on p.serial_number = m.serial_number
            SET
            p.online = #{online},
            p.update_time = #{date}
            WHERE m.ip in
            <foreach collection="ipList" open="(" close=")" separator="," item="ip">
                #{ip}
            </foreach>
    </update>
    <select id="selectCarOrFace" resultType="com.ycl.platform.domain.entity.TMonitor">
        select m.*
        from t_monitor m
        left join t_yw_point p
        on m.serial_number = p.serial_number
        where (m.camera_fun_type = '2' or m.camera_fun_type = '3') and p.examine_status = 1
    </select>
</mapper>