ycl-common/src/main/java/enumeration/ErrorType.java
New file @@ -0,0 +1,36 @@ package enumeration; import com.baomidou.mybatisplus.annotation.EnumValue; import lombok.Getter; /** * @author:xp * @date:2024/8/19 11:39 */ @Getter public enum ErrorType { PLATFORM_OFFLINE("PLATFORM_OFFLINE", "平台离线"), DEVICE_OFFLINE("DEVICE_OFFLINE", "设备离线"), VIDEO_LOSS("VIDEO_LOSS", "录像缺失"), VIDEO_NONE("VIDEO_NONE", "无录像"), POINT_INFO_ERROR("POINT_INFO_ERROR", "点位信息错误"), SIGNAL_LOSS("SIGNAL_LOSS", "信号缺失"), SCREEN_COLOR_DEVIATION("SCREEN_COLOR_DEVIATION", "画面偏色"), SNOW_STORM("SNOW_STORM", "雪花干扰"), STRIPE_INTERFERENCE("STRIPE_INTERFERENCE", "条纹干扰"), SCREEN_OCCLUSION("SCREEN_OCCLUSION", "画面遮挡"), ABNORMAL_CLARITY("ABNORMAL_CLARITY", "清晰度异常"), ABNORMAL_BRIGHTNESS("ABNORMAL_BRIGHTNESS", "亮度异常"), UNKNOWN("UNKNOWN", "未知"), ; private String value; private String desc; ErrorType(String value, String desc) { this.value = value; this.desc = desc; } } ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/MonitorQualifyResult.java
@@ -59,6 +59,7 @@ * 租户id */ private QualifyResult tenantId; @Data public static class QualifyResult { /** @@ -70,6 +71,9 @@ * 展示值 * */ private String showValue; /** * 数据原始值,如国标码等 */ private String value; } } ycl-pojo/src/main/java/com/ycl/platform/domain/vo/PlatformVO.java
@@ -22,6 +22,8 @@ /** 平台IP */ private String platformIP; private Integer parentId; /** 平台联系人 */ private String platformContact; @@ -43,6 +45,9 @@ /** 修改时间 */ private Date updateTime; /** 子级数量 */ private Integer childNum; public static PlatformVO getVoByEntity(@NonNull Platform entity, PlatformVO vo) { if(vo == null) { vo = new PlatformVO(); ycl-server/src/main/java/com/ycl/platform/mapper/PlatformMapper.java
@@ -9,6 +9,8 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * 平台运行监控 Mapper 接口 * @@ -28,6 +30,6 @@ /** * 分页 */ IPage getPage(IPage page, @Param("query") PlatformQuery query); List<PlatformVO> getPage(@Param("query") PlatformQuery query); } ycl-server/src/main/java/com/ycl/platform/service/IYwThresholdService.java
@@ -78,4 +78,9 @@ * 判断视频阈值条件 */ public void videoCheck(List list); /** * 阈值无法判断的,校验故障类型生成工单。优云 */ public void errorTypeCheckUY(List list); } ycl-server/src/main/java/com/ycl/platform/service/UYErrorTypeCheckService.java
New file @@ -0,0 +1,39 @@ package com.ycl.platform.service; import com.ycl.platform.domain.result.UY.*; import java.util.List; /** * 优云故障检测 * * @author:xp * @date:2024/8/19 13:41 */ public interface UYErrorTypeCheckService { /** * 图像检测 */ void imageDetectionCheck(List<ImageDetectionResult> dataList); /** * 一机一档合格率、一机一档注册率 */ void monitorQualifyCheck(List<MonitorQualifyResult> dataList); /** * 点位在线率 */ void videoOnlineCheck(List<VideoOnlineResult> dataList); /** * 录像可用 */ void recordMetaDSumCheck(List<RecordMetaDSumResult> dataList); // /** // * 视频标注 // */ // void osdMonitorCheck(List<OsdMonitorResult> dataList); } ycl-server/src/main/java/com/ycl/platform/service/impl/PlatformServiceImpl.java
@@ -1,6 +1,7 @@ package com.ycl.platform.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.entity.Platform; import com.ycl.platform.domain.form.PlatformForm; @@ -18,6 +19,7 @@ import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -107,9 +109,18 @@ */ @Override public Result page(PlatformQuery query) { IPage<PlatformVO> page = PageUtil.getPage(query, PlatformVO.class); baseMapper.getPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); List<PlatformVO> list = baseMapper.getPage(query); List<PlatformVO> parentList = list.stream().filter(item -> item.getParentId() == 0).collect(Collectors.toList()); List<PlatformVO> resultList = new ArrayList<>(4); for (PlatformVO parent : parentList) { List<PlatformVO> childList = list.stream().filter(item -> item.getParentId().equals(parent.getId())).collect(Collectors.toList()); parent.setChildNum(childList.size()); resultList.add(parent); resultList.addAll(childList); } // 前端不用展示分页 return Result.ok().data(resultList).total(0); } /** ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
New file @@ -0,0 +1,138 @@ package com.ycl.platform.service.impl; import com.ycl.platform.domain.entity.WorkOrder; import com.ycl.platform.domain.result.UY.*; import com.ycl.platform.service.UYErrorTypeCheckService; import com.ycl.platform.service.WorkOrderService; import com.ycl.utils.uuid.IdUtils; import enumeration.ErrorType; import enumeration.general.WorkOrderStatusEnum; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; /** * @author:xp * @date:2024/8/19 13:46 */ @Service @RequiredArgsConstructor public class UYErrorTypeCheckServiceImpl implements UYErrorTypeCheckService { private final WorkOrderService workOrderService; /** * 图像检测生成工单 * * @param dataList */ @Override public void imageDetectionCheck(List<ImageDetectionResult> dataList) { List<WorkOrder> workOrderList = dataList.stream().map(item -> { WorkOrder workOrder = new WorkOrder(); // 信号缺失 if (0 == item.getSigna1()) { this.genWorkOrder(workOrder, ErrorType.SIGNAL_LOSS, item.getDeviceId()); } // 画面偏色 if (0 == item.getColor()) { this.genWorkOrder(workOrder, ErrorType.SCREEN_COLOR_DEVIATION, item.getDeviceId()); } // 雪花干扰 if (0 == item.getSnow()) { this.genWorkOrder(workOrder, ErrorType.SNOW_STORM, item.getDeviceId()); } // 条纹干扰 if (0 == item.getStripe()) { this.genWorkOrder(workOrder, ErrorType.STRIPE_INTERFERENCE, item.getDeviceId()); } // 画面遮挡 if (0 == item.getShade()) { this.genWorkOrder(workOrder, ErrorType.SCREEN_OCCLUSION, item.getDeviceId()); } // 清晰度异常 if (0 == item.getBlur()) { this.genWorkOrder(workOrder, ErrorType.ABNORMAL_CLARITY, item.getDeviceId()); } // 亮度异常 if (0 == item.getLight()) { this.genWorkOrder(workOrder, ErrorType.ABNORMAL_BRIGHTNESS, item.getDeviceId()); } return workOrder; }).collect(Collectors.toList()); workOrderService.innerAddWorkOrder(workOrderList); } /** * 点位信息异常 * * @param dataList */ @Override public void monitorQualifyCheck(List<MonitorQualifyResult> dataList) { List<WorkOrder> workOrderList = dataList.stream().map(item -> { WorkOrder workOrder = new WorkOrder(); if (item.getSerialNumber().getError() || item.getCivilCode().getError() || item.getIntegrated_device().getError() || item.getIp().getError() || item.getJkdwlx().getError() || item.getLatitude().getError() || item.getLongitude().getError() || item.getMacdz().getError() || item.getSbzt().getError() || item.getName().getError() || item.getSxjcjqy().getError() || item.getSxjgnlx().getError()) { this.genWorkOrder(workOrder, ErrorType.POINT_INFO_ERROR, item.getSerialNumber().getValue()); } return workOrder; }).collect(Collectors.toList()); workOrderService.innerAddWorkOrder(workOrderList); } @Override public void videoOnlineCheck(List<VideoOnlineResult> dataList) { List<WorkOrder> workOrderList = dataList.stream().map(item -> { WorkOrder workOrder = new WorkOrder(); if (-1 == item.getStatus()) { this.genWorkOrder(workOrder, ErrorType.DEVICE_OFFLINE, item.getDeviceId()); } else if (0 == item.getStatus()) { this.genWorkOrder(workOrder, ErrorType.UNKNOWN, item.getDeviceId()); } return workOrder; }).collect(Collectors.toList()); workOrderService.innerAddWorkOrder(workOrderList); } @Override public void recordMetaDSumCheck(List<RecordMetaDSumResult> dataList) { List<WorkOrder> workOrderList = dataList.stream().map(item -> { WorkOrder workOrder = new WorkOrder(); if (0 == item.getRecordStatus()) { this.genWorkOrder(workOrder, ErrorType.VIDEO_LOSS, item.getDeviceId()); } else if (-1 == item.getRecordStatus()) { this.genWorkOrder(workOrder, ErrorType.VIDEO_NONE, item.getDeviceId()); } return workOrder; }).collect(Collectors.toList()); workOrderService.innerAddWorkOrder(workOrderList); } /** * 工单信息 * * @param workOrder * @param errorType 故障类型 * @param serialNumber 国标码 */ private void genWorkOrder(WorkOrder workOrder, ErrorType errorType, String serialNumber) { workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5)); workOrder.setErrorType(errorType.getValue()); workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED); workOrder.setSerialNumber(serialNumber); } } ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -93,6 +93,7 @@ Map<String, WorkOrder> mapping = inDatabaseWorkOrderList.stream().collect((Collectors.toMap(WorkOrder::getSerialNumber, workOrder -> workOrder))); List<WorkOrder> waitAddList = new ArrayList<>(48); Integer updateNum = 0; // TODO 查询是否报备过,更新故障类型 for (WorkOrder workOrder : workOrderList) { WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber()); if (Objects.nonNull(databaseWorkOrder)) { @@ -112,6 +113,8 @@ // 同时新增一个运维处理信息,表明此工单被调整 TODO } } else { workOrder.setCreateTime(new Date()); workOrder.setUpdateTime(new Date()); waitAddList.add(workOrder); } } ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
@@ -9,6 +9,7 @@ import com.ycl.platform.mapper.YwThresholdMapper; import com.ycl.platform.service.IYwThresholdService; import com.ycl.platform.service.WorkOrderService; import com.ycl.utils.ip.PingUtil; import constant.YwThreadConstants; import enumeration.CompareType; import enumeration.general.BusinessTypeEnum; @@ -16,6 +17,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import utils.DateUtils; import java.util.*; @@ -117,6 +119,32 @@ } @Override public void errorTypeCheckUY(List list) { // 平台离线故障检测 if (CollectionUtils.isEmpty(list)) { Boolean ping = PingUtil.ping("", 5); if (! ping) { } } // 设备离线故障检测 // 信号缺失故障检测 // 画面偏色故障检测 // 雪花干扰故障检测 // 条纹干扰故障检测 // 画面遮挡故障检测 // 清晰度异常检测 // 亮度异常故障检测 } /** * 判断人脸阈值是否满足下发条件 * ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -43,42 +43,46 @@ //车辆设备全检指标监测结果 public void vehicleDeviceInspectionTask() { log.info("开始执行车辆设备全检指标监测结果数据同步"); VehicleDeviceInspectionParam param = new VehicleDeviceInspectionParam(); param.setPageNo(ApiConstants.PageNo); param.setPageSize(ApiConstants.HKPageSize); param.setDate(DateUtils.getDate()); param.setDataType(ApiConstants.HK_DataType_CAR); List<VehicleDeviceInspectionResult> list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/vehFullAmount/query", param, VehicleDeviceInspectionResult.class); if (!CollectionUtils.isEmpty(list)) { //如果存在之前的数据先删除 Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, VehicleDeviceInspectionResult.class); //存放在mongo中 mongoTemplate.insertAll(list); //同步的数据进行工单阈值处理 ywThresholdService.carCheck(list); } // VehicleDeviceInspectionParam param = new VehicleDeviceInspectionParam(); // param.setPageNo(ApiConstants.PageNo); // param.setPageSize(ApiConstants.HKPageSize); // param.setDate(DateUtils.getDate()); // param.setDataType(ApiConstants.HK_DataType_CAR); // List<VehicleDeviceInspectionResult> list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/vehFullAmount/query", param, VehicleDeviceInspectionResult.class); // if (!CollectionUtils.isEmpty(list)) { // //如果存在之前的数据先删除 // Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); // DeleteResult result = mongoTemplate.remove(query, VehicleDeviceInspectionResult.class); // //存放在mongo中 // mongoTemplate.insertAll(list); // //同步的数据进行工单阈值处理 // ywThresholdService.carCheck(list); // } Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); ywThresholdService.carCheck(mongoTemplate.find(query, VehicleDeviceInspectionResult.class)); log.info("结束车辆设备全检指标监测结果数据同步"); } //人脸设备全检指标监测结果 public void faceDeviceInspectionTask() { log.info("开始执行人脸设备全检指标监测结果数据同步"); FaceDeviceInspectionParam param = new FaceDeviceInspectionParam(); param.setPageNo(ApiConstants.PageNo); param.setPageSize(ApiConstants.HKPageSize); param.setDate(DateUtils.getDate()); List<FaceDeviceInspectionResult> list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/faceFullAmount/query", param, FaceDeviceInspectionResult.class); if (!CollectionUtils.isEmpty(list)) { //如果存在之前的数据先删除 Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, FaceDeviceInspectionResult.class); //存放在mongo中 mongoTemplate.insertAll(list); //同步的数据进行工单阈值处理 //TODO:可能有重复工单 ywThresholdService.faceCheck(list); } // FaceDeviceInspectionParam param = new FaceDeviceInspectionParam(); // param.setPageNo(ApiConstants.PageNo); // param.setPageSize(ApiConstants.HKPageSize); // param.setDate(DateUtils.getDate()); // List<FaceDeviceInspectionResult> list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/faceFullAmount/query", param, FaceDeviceInspectionResult.class); // if (!CollectionUtils.isEmpty(list)) { // //如果存在之前的数据先删除 // Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); // DeleteResult result = mongoTemplate.remove(query, FaceDeviceInspectionResult.class); // //存放在mongo中 // mongoTemplate.insertAll(list); // //同步的数据进行工单阈值处理 // //TODO:可能有重复工单 // ywThresholdService.faceCheck(list); // } Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); ywThresholdService.faceCheck(mongoTemplate.find(query, FaceDeviceInspectionResult.class)); log.info("结束人脸设备全检指标监测结果数据同步"); } ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -4,12 +4,14 @@ import com.mongodb.client.result.DeleteResult; import com.ycl.feign.UYClient; import com.ycl.platform.domain.param.UY.*; import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult; import com.ycl.platform.domain.result.UY.OneMachineFileResult; import com.ycl.platform.domain.result.UY.OsdMonitorResult; import com.ycl.platform.domain.result.UY.RecordMetaDSumResult; import com.ycl.platform.domain.result.UY.*; import com.ycl.platform.service.ITMonitorService; import com.ycl.platform.service.IYwThresholdService; import com.ycl.platform.service.UYErrorTypeCheckService; import com.ycl.utils.DateUtils; import constant.ApiConstants; import lombok.extern.slf4j.Slf4j; @@ -43,6 +45,9 @@ private IYwThresholdService ywThresholdService; @Autowired private ITMonitorService monitorService; @Autowired private UYErrorTypeCheckService uyErrorTypeCheckService; @Value("${youYun.tenantId}") private String tenantId; @Value("${youYun.apikey}") @@ -57,37 +62,41 @@ // 图像检测 public void imageDetection() { log.info("开始执行图像检测数据同步"); ImageDetectionParam param = new ImageDetectionParam(); param.setPageNum(ApiConstants.PageNo); param.setPageSize(ApiConstants.PageSize); param.setArealayerno(ApiConstants.AreaNo); JSONObject jsonObject = uyClient.imageDetection(param); if (jsonObject != null) { log.info("数据格式" + jsonObject); Integer statusCode = jsonObject.getInteger("statusCode"); if (ApiConstants.UYSuccessCode.equals(statusCode)) { JSONObject data = jsonObject.getJSONObject("data"); if (data != null) { List<ImageDetectionResult> records = data.getList("records", ImageDetectionResult.class); if (!CollectionUtils.isEmpty(records)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, QueryVqdResult.class); //存放在mongo中 mongoTemplate.insertAll(records); } else { log.error("图像监测数据为空{}", data); } } else { log.error("图像监测数据为空{}", jsonObject); } } else { log.error("图像监测请求失败{}", jsonObject); } } else { log.error("图像监测数据为空"); } // ImageDetectionParam param = new ImageDetectionParam(); // param.setPageNum(ApiConstants.PageNo); // param.setPageSize(ApiConstants.PageSize); // param.setArealayerno(ApiConstants.AreaNo); // JSONObject jsonObject = uyClient.imageDetection(param); // if (jsonObject != null) { // log.info("数据格式" + jsonObject); // Integer statusCode = jsonObject.getInteger("statusCode"); // if (ApiConstants.UYSuccessCode.equals(statusCode)) { // JSONObject data = jsonObject.getJSONObject("data"); // if (data != null) { // List<ImageDetectionResult> records = data.getList("records", ImageDetectionResult.class); // if (!CollectionUtils.isEmpty(records)) { // //如果今天存在之前的数据先删除 // Query query = new Query(Criteria // .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); // DeleteResult result = mongoTemplate.remove(query, ImageDetectionResult.class); // //存放在mongo中 // mongoTemplate.insertAll(records); // // 工单生成 // uyErrorTypeCheckService.imageDetectionCheck(records); // } else { // log.error("图像监测数据为空{}", data); // } // } else { // log.error("图像监测数据为空{}", jsonObject); // } // } else { // log.error("图像监测请求失败{}", jsonObject); // } // } else { // log.error("图像监测数据为空"); // } Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); uyErrorTypeCheckService.imageDetectionCheck(mongoTemplate.find(query, ImageDetectionResult.class)); log.info("结束执行图像监测数据同步"); } @@ -97,33 +106,37 @@ // 一机一档注册率 // 档案考核比 log.info("开始执行一机一档合格率数据同步"); MonitorQualifyParam param = new MonitorQualifyParam(); param.setPageNum(ApiConstants.PageNo); param.setPageSize(ApiConstants.PageSize); JSONObject jsonObject = uyClient.monitorQualify(param); if (jsonObject != null) { String code = jsonObject.getString("code"); if (ApiConstants.UYSuccessCodeStr.equals(code)) { JSONObject data = jsonObject.getJSONObject("data"); if (data != null) { List<MonitorQualifyResult> records = data.getList("records", MonitorQualifyResult.class); if (!CollectionUtils.isEmpty(records)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, MonitorQualifyResult.class); //存放在mongo中 mongoTemplate.insertAll(records); } else { log.error("一机一档合格率数据为空{}", data); } } } else { log.error("一机一档合格率数据为空{}", jsonObject); } } else { log.error("一机一档合格率数据为空"); } // MonitorQualifyParam param = new MonitorQualifyParam(); // param.setPageNum(ApiConstants.PageNo); // param.setPageSize(ApiConstants.PageSize); // JSONObject jsonObject = uyClient.monitorQualify(param); // if (jsonObject != null) { // String code = jsonObject.getString("code"); // if (ApiConstants.UYSuccessCodeStr.equals(code)) { // JSONObject data = jsonObject.getJSONObject("data"); // if (data != null) { // List<MonitorQualifyResult> records = data.getList("records", MonitorQualifyResult.class); // if (!CollectionUtils.isEmpty(records)) { // //如果今天存在之前的数据先删除 // Query query = new Query(Criteria // .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); // DeleteResult result = mongoTemplate.remove(query, MonitorQualifyResult.class); // //存放在mongo中 // mongoTemplate.insertAll(records); // // 工单生成 // uyErrorTypeCheckService.monitorQualifyCheck(records); // } else { // log.error("一机一档合格率数据为空{}", data); // } // } // } else { // log.error("一机一档合格率数据为空{}", jsonObject); // } // } else { // log.error("一机一档合格率数据为空"); // } Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); uyErrorTypeCheckService.monitorQualifyCheck(mongoTemplate.find(query, MonitorQualifyResult.class)); log.info("结束一机一档合格率数据同步"); } @@ -151,6 +164,8 @@ DeleteResult result = mongoTemplate.remove(query, VideoOnlineResult.class); //存放在mongo中 mongoTemplate.insertAll(records); // 工单生成 uyErrorTypeCheckService.videoOnlineCheck(records); } else { log.error("点位在线结果数据为空{}", data); } @@ -163,6 +178,8 @@ } else { log.error("点位在线结果数据为空"); } Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); uyErrorTypeCheckService.videoOnlineCheck(mongoTemplate.find(query, VideoOnlineResult.class)); log.info("结束执行点位在线数据同步"); } @@ -170,30 +187,34 @@ public void recordMetaDSumTask() { //录像可用率 log.info("开始执行录像可用数据同步"); RecordMetaDSumParam param = new RecordMetaDSumParam(); param.setTenantId(tenantId); Calendar instance = Calendar.getInstance(); instance.setTime(new Date()); instance.add(Calendar.DAY_OF_MONTH, -1); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String yesterday = format.format(instance.getTime()); param.setStatTime(yesterday); JSONObject jsonObject = uyClient.recordMetaDSumList(param); if (jsonObject != null) { if (ApiConstants.UYSuccessCodeStr.equals(jsonObject.getString("code"))) { List<RecordMetaDSumResult> records = jsonObject.getList("data", RecordMetaDSumResult.class); if (!CollectionUtils.isEmpty(records)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, RecordMetaDSumResult.class); //存放在mongo中 mongoTemplate.insertAll(records); } } else { log.error("录像可用数据为空{}", jsonObject); } } // RecordMetaDSumParam param = new RecordMetaDSumParam(); // param.setTenantId(tenantId); // Calendar instance = Calendar.getInstance(); // instance.setTime(new Date()); // instance.add(Calendar.DAY_OF_MONTH, -1); // SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); // String yesterday = format.format(instance.getTime()); // param.setStatTime(yesterday); // JSONObject jsonObject = uyClient.recordMetaDSumList(param); // if (jsonObject != null) { // if (ApiConstants.UYSuccessCodeStr.equals(jsonObject.getString("code"))) { // List<RecordMetaDSumResult> records = jsonObject.getList("data", RecordMetaDSumResult.class); // if (!CollectionUtils.isEmpty(records)) { // //如果今天存在之前的数据先删除 // Query query = new Query(Criteria // .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); // DeleteResult result = mongoTemplate.remove(query, RecordMetaDSumResult.class); // //存放在mongo中 // mongoTemplate.insertAll(records); // // 工单生成 // uyErrorTypeCheckService.recordMetaDSumCheck(records); // } // } else { // log.error("录像可用数据为空{}", jsonObject); // } // } Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); uyErrorTypeCheckService.recordMetaDSumCheck(mongoTemplate.find(query, RecordMetaDSumResult.class)); log.info("结束执行录像可用数据同步"); } ycl-server/src/main/java/com/ycl/utils/ip/PingUtil.java
New file @@ -0,0 +1,33 @@ package com.ycl.utils.ip; import lombok.extern.slf4j.Slf4j; import java.io.IOException; import java.net.InetAddress; /** * ping * * @author:xp * @date:2024/8/19 11:11 */ @Slf4j public class PingUtil { /** * ping * * @param ip 目标ip地址 * @param timeoutSed 超时时间 * @return 是否在线 */ public static Boolean ping(String ip, Integer timeoutSed) { try { return InetAddress.getByName(ip).isReachable(timeoutSed * 1000); } catch (IOException e) { log.error("未知的IP地址"); return Boolean.FALSE; } } } ycl-server/src/main/resources/mapper/zgyw/PlatformMapper.xml
@@ -44,7 +44,8 @@ TP.remark, TP.create_time, TP.update_time, TP.id TP.id, TP.parent_id FROM t_platform TP WHERE