zxl
2025-03-28 d384786ab5868cd4d856691372eee5359e7d9b2c
导出新增 连个列,以及同步数据库时点位名修改未成功问题
3个文件已修改
43 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/MonitorTask.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
@@ -101,8 +101,14 @@
    /** 运维处理时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "运维处理时间",sort = 10,dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime ywHandleTime;
    /** 审核通过时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审核时间",sort = 11,dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime passTime;
    /** 运维结果 */
    private String ywResult;
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -1166,6 +1166,9 @@
        return Result.ok().data(workOrder);
    }
    @Autowired
    private WorkOrderMapper workOrderMapper;
    /**
     * 工单导出的逻辑
     * 标签:同一个ip标签合在一起,针对离线工单(ip相同就不会生成工单),方便运维处理
@@ -1195,6 +1198,30 @@
            query.setErrorTypeList(errorTypeList);
        }
        List<WorkOrderVO> export = baseMapper.export(query);
        List<String> workOrderNos = export.stream().map(WorkOrderVO::getWorkOrderNo).collect(Collectors.toList());
        List<WorkOrderVO> auditTimeList = workOrderMapper.getAuditTimeList(workOrderNos);
        Map<String, List<Date>> auditTimeMap = auditTimeList.stream()
                .collect(Collectors.groupingBy(
                        WorkOrderVO::getWorkOrderNo, // 分组的键
                        Collectors.mapping(WorkOrderVO::getAuditTime, Collectors.toList())));
        if (!CollectionUtils.isEmpty(workOrderNos)){
           export.forEach(workOrderVO -> {
               List<Date> auditTimes = auditTimeMap.get(workOrderVO.getWorkOrderNo());
               if (!CollectionUtils.isEmpty(auditTimes)){
                   //审核通过时间
                   Date passTime = Collections.max(auditTimes);
                   ZoneId zoneId = ZoneId.systemDefault();
                   workOrderVO.setPassTime(passTime.toInstant().atZone(zoneId).toLocalDateTime());
               }
           });
        }
        if (CollectionUtils.isEmpty(export)) return new ArrayList<WorkOrderVO>();
        List<String> ips = export.stream().map(WorkOrderVO::getIp).collect(Collectors.toList());
        //查出相同ip的设备、并查出标签
ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -115,6 +115,7 @@
                monitorList.add(monitor);
                ywPointList.add(point);
            }
            log.error("同步mongo新ywpoint数据{}",ywPointList);
            //添加老数据
            List<String> numbers = CollectionUtils.isEmpty(monitorList) ? new ArrayList<>() : monitorList.stream().map(TMonitor::getSerialNumber).collect(Collectors.toList());
            monitorVOMap.forEach((key, value) -> {
@@ -126,11 +127,12 @@
                    if (osdCheckResult != null) {
                        monitor.setDeviceType(osdCheckResult.getDeviceBrand());
                    }
                    monitorList.add(monitor);
                }
            });
            //转换
            List<String> points = CollectionUtils.isEmpty(ywPointList) ? new ArrayList<>() : ywPointList.stream().map(YwPoint::getSerialNumber).collect(Collectors.toList());
            //pointMap点位旧数据 设备码map
            pointMap.forEach((key, value) -> {
                //老设备状态改为不参与考核
                if (!points.contains(key)) {
@@ -140,7 +142,7 @@
                    ywPointList.add(value);
                }
            });
            log.error("同步mongo新加旧ywpoint数据{}",ywPointList);
            log.info("result集合{},设备集合{},点位集合{}", oneMachineFileResults.size(), monitorList.size(), ywPointList.size());
            //插入数据库
            if (!CollectionUtils.isEmpty(monitorList)) {
@@ -161,6 +163,10 @@
        YwPoint ywPoint = new YwPoint();
        if (pointMap.containsKey(result.getSerialNumber().getValue())) {
            ywPoint = pointMap.get(result.getSerialNumber().getValue());
            //更新定位名
            if (ywPoint != null) {
                ywPoint.setPointName(result.getName().getValue());
            }
        } else {
            ywPoint.setPointName(result.getName().getValue());
            ywPoint.setStatus(PointStatus.WAIT.getDesc());