fuliqi
2024-12-05 918b26794c7d3b3faa2c57e6a6cb0c11ea4e73e8
省厅标签拆分2
5个文件已修改
75 ■■■■ 已修改文件
ycl-common/src/main/java/constant/CheckConstants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/result/BaseResult.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/constant/CheckConstants.java
@@ -4,6 +4,8 @@
 * 考核常量
 */
public class CheckConstants {
    //视频或车辆或人脸
    public static final Short Rule_Category_Or = 0;
    //视频规则
    public static final Short Rule_Category_Video = 1;
    //车辆规则
ycl-pojo/src/main/java/com/ycl/platform/domain/result/BaseResult.java
@@ -26,6 +26,10 @@
     * 省厅
     */
    private Boolean provinceTag;
    //接收mysql数据用
    private Boolean provinceTagVideo;
    private Boolean provinceTagCar;
    private Boolean provinceTagFace;
    /**
     * 部级
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
@@ -517,6 +517,12 @@
                    data.setProvinceTag(tag.getProvinceTagCar());
                }else if(CheckConstants.Rule_Category_Face.equals(category)){
                    data.setProvinceTag(tag.getProvinceTagFace());
                }else if(CheckConstants.Rule_Category_Or.equals(category)){
                    if(tag.getProvinceTagVideo() || tag.getProvinceTagCar() || tag.getProvinceTagFace()) {
                        data.setProvinceTag(Boolean.TRUE);
                    }else {
                        data.setProvinceTag(Boolean.FALSE);
                    }
                }
            }
        }
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -31,6 +31,8 @@
import enumeration.general.WorkOrderStatusEnum;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
@@ -152,8 +154,7 @@
                                item.setNo(item.getSerialNumber().getShowValue());
                            }
                        });
                        //TODO:优云的一机一档包含了视频、车辆、人脸 是有一种是省厅就算省厅吗
                        pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Video);
                        pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Or);
                        pointService.setNew(records);
                        //存放在mongo中
                        mongoTemplate.insertAll(records);
@@ -193,7 +194,6 @@
        }
        // 先查出设备IP集合,剔除掉在线情况是未知的,并且只检测正在考核的设备避免多余工单
        //TODO:需要把海康和优云的任务的时间调到ping之前
        //TODO:这里需要存三个标签吗
        List<TMonitorResult> monitorList = monitorMapper.getDistinctIP();
        //补充错误时间点
        Query onlineQuery = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
@@ -220,36 +220,6 @@
                                ex.printStackTrace();
                            }
                            return null;
//                            int checkTimes = 1;
//                            int offLineTimes = 1;
//                            Map<String, Object> map = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstant.ONLINE_KEY, monitor.getNo());
//                            if (!CollectionUtils.isEmpty(map)) {
//                                checkTimes = (Integer) map.get("checkTimes") + 1;
//                                offLineTimes = (Integer) map.get("offLineTimes");
//                            }else {
//                                map = new HashMap<>();
//                            }
//                            monitor.setPingOnline(Boolean.FALSE);
//                            monitor.setCheckCount(checkTimes);
//                            monitor.setOffLineCount(offLineTimes);
//                            List<Date> offLineTime = monitor.getOffLineTime();
//                            if(CollectionUtils.isEmpty(offLineTime)) offLineTime = new ArrayList<>();
//                            offLineTime.add(new Date());
//                            monitor.setOffLineTime(offLineTime);
//                            if (monitor.getOffLineCount() >= time) {
//                                WorkOrder workOrder = new WorkOrder();
//                                workOrder.setSerialNumber(monitor.getNo());
//                                List<String> errList = new ArrayList<>();
//                                errList.add(ErrorType.DEVICE_OFFLINE.getValue());
//                                workOrder.setErrorTypeList(errList);
//                                workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
//                                monitor.setWorkOrder(workOrder);
//                            }
//                            map.put("checkTimes", checkTimes);
//                            map.put("offLineTimes", offLineTimes);
//                            redisTemplate.opsForHash().put(RedisConstant.ONLINE_KEY, monitor.getNo(), map);
//                            return monitor; // 返回失败的结果
                        }))
                .collect(Collectors.toList());
@@ -292,11 +262,32 @@
        }
        //存放到mongo
        if (!CollectionUtils.isEmpty(dataList)) {
            List<TMonitorResult> mongoList = new ArrayList<>();
            dataList.forEach(item->{
                String monitorType = item.getMonitorType();
                //同一个设备多个类型每个类型存一条数据,以此在保留数据的情况下区分省厅标签
                if(StringUtils.isNotEmpty(monitorType)){
                    String[] monitors = monitorType.split("/");
                    for (String type : monitors) {
                        TMonitorResult mongoData = new TMonitorResult();
                        BeanUtils.copyProperties(item,mongoData);
                        mongoData.setMonitorType(type);
                        if("1".equals(type)){
                            mongoData.setProvinceTag(mongoData.getProvinceTagVideo());
                        }else if("2".equals(type)){
                            mongoData.setProvinceTag(mongoData.getProvinceTagCar());
                        }else if("3".equals(type)){
                            mongoData.setProvinceTag(mongoData.getProvinceTagFace());
                        }
                        mongoList.add(mongoData);
                    }
                }
            });
            //如果存在之前的数据先删除
            Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
            DeleteResult result = mongoTemplate.remove(query, TMonitorResult.class);
            //存放在mongo中
            mongoTemplate.insertAll(dataList);
            mongoTemplate.insertAll(mongoList);
        }
        //工单(同一IP只生成一个工单)
        List<WorkOrder> workOrderList = dataList.stream()
@@ -344,6 +335,7 @@
                                item.setNo(item.getDeviceId());
                            }
                        });
                        //貌似这里可以忽略省厅标签因为项目展示的后面ping的时候存的数据
                        pointService.setDeviceTagByGB(records,CheckConstants.Rule_Category_Video);
                        //存放在mongo中
                        mongoTemplate.insertAll(records);
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -712,10 +712,9 @@
        WHERE
              serial_number in <foreach collection="gbList" open="(" separator="," close=")" item="no">#{no}</foreach>
    </select>
    <!-- TODO -->
    <select id="getDistinctIP" resultType="com.ycl.platform.domain.result.SYS.TMonitorResult">
        select DISTINCT m.id, m.ip,m.serial_number as no,m.name,m.camera_fun_type as monitorType,d.dept_id,
        p.province_tag,
        p.province_tag_video, p.province_tag_car, p.province_tag_face,
        p.important_tag,p.important_command_image_tag,p.dept_tag,p.online
        from t_monitor m
            left join t_yw_point p on m.serial_number = p.serial_number