| | |
| | | package com.ycl.task; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.mongodb.client.result.DeleteResult; |
| | | import com.ycl.feign.HkApiUtil; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.param.HK.*; |
| | | import com.ycl.platform.domain.result.HK.*; |
| | | import com.ycl.platform.domain.result.UY.VideoOnlineResult; |
| | | import com.ycl.platform.domain.vo.UpdateOnlineVO; |
| | | import com.ycl.platform.mapper.TMonitorMapper; |
| | | import com.ycl.platform.mapper.WorkOrderMapper; |
| | | import com.ycl.platform.service.*; |
| | | import com.ycl.utils.DateUtils; |
| | | import constant.ApiConstants; |
| | |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | //海康对接数据任务 |
| | | @Slf4j |
| | |
| | | private IYwThresholdService ywThresholdService; |
| | | @Autowired |
| | | private YwPointService pointService; |
| | | |
| | | @Autowired |
| | | private TMonitorMapper monitorMapper; |
| | | @Autowired |
| | | private UYErrorTypeCheckService uyErrorTypeCheckService; |
| | | //车辆设备全检指标监测结果 |
| | | public void vehicleDeviceInspectionTask() { |
| | | log.info("开始执行车辆设备全检指标监测结果数据同步"); |
| | |
| | | //存放在mongo中 |
| | | carList.forEach(item -> item.setDataType(ApiConstants.HK_DataType_CAR)); |
| | | mongoTemplate.insertAll(carList); |
| | | //TODO:更新point表在线状态(有抓拍量视作在线) |
| | | //工单 |
| | | } |
| | | |
| | | /** 人脸数据 */ |
| | |
| | | //存放在mongo中 |
| | | faceList.forEach(item -> item.setDataType(ApiConstants.HK_DataType_FACE)); |
| | | mongoTemplate.insertAll(faceList); |
| | | //TODO:更新point表在线状态(有抓拍量视作在线) |
| | | //工单 |
| | | } |
| | | |
| | | //修改online状态以及生成工单 |
| | | List<SnapshotDataMonitorResult> totalResult =new ArrayList<>(); |
| | | totalResult.addAll(carList); |
| | | totalResult.addAll(faceList); |
| | | if(!CollectionUtils.isEmpty(totalResult)) { |
| | | List<String> numbers = totalResult.stream().map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList()); |
| | | Map<String, TMonitor> map = monitorMapper.selectList(new QueryWrapper<TMonitor>().in("serial_number", numbers)) |
| | | .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity())); |
| | | Date now = new Date(); |
| | | //过滤 |
| | | totalResult = totalResult.stream().filter(item -> map.get(item.getExternalIndexCode()) != null).collect(Collectors.toList()); |
| | | totalResult.forEach(item->{ |
| | | TMonitor monitor = map.get(item.getExternalIndexCode()); |
| | | item.setIp(monitor.getIp()); |
| | | }); |
| | | List<UpdateOnlineVO> willUpdateList = totalResult.stream().map(item -> { |
| | | UpdateOnlineVO vo = new UpdateOnlineVO(); |
| | | vo.setOnline(item.getDataCount()>0?1:-1); |
| | | vo.setIp(map.get(item.getExternalIndexCode()).getIp()); |
| | | vo.setUpdateTime(now); |
| | | return vo; |
| | | }).collect(Collectors.toList()); |
| | | monitorMapper.updateOnlineFromUyOrHk(willUpdateList); |
| | | //离线生成工单,一个ip只生成一个工单 |
| | | List<SnapshotDataMonitorResult> workOrders = new ArrayList<>(totalResult.stream() |
| | | .filter(item -> ApiConstants.UY_OnlineSite_Offline.equals(item.getDataCount()>0?1:-1)) |
| | | .collect(Collectors.toMap( |
| | | SnapshotDataMonitorResult::getIp, |
| | | Function.identity(), |
| | | (existing, replacement) -> existing // 如果遇到相同的 IP,保留第一个(existing) |
| | | )).values()); |
| | | uyErrorTypeCheckService.hkOnlineCheck(workOrders); |
| | | } |
| | | log.info("结束抓拍数据量检测结果数据同步"); |
| | | } |
| | | |
| | |
| | | log.info("结束业务树数据"); |
| | | } |
| | | |
| | | //考核成绩 |
| | | public void HkScoreTask() { |
| | | log.info("开始执行海康考核成绩数据"); |
| | | ScoreParam param = new ScoreParam(); |
| | | param.setStartDate("2024-12-06"); |
| | | param.setEndDate("2024-12-06"); |
| | | List<HKScoreResult> dataList = HkApiUtil.sendGetAPI(host,appKey,appSecret,"/api/third/score/get", param, HKScoreResult.class); |
| | | // if (!CollectionUtils.isEmpty(faceList)) { |
| | | // //如果今天存在之前的数据先删除 |
| | | // Query query = new Query(Criteria |
| | | // .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); |
| | | // DeleteResult result = mongoTemplate.remove(query, FaceDeviceSamplingResult.class); |
| | | // faceList.stream().forEach(item -> { |
| | | // if (Objects.nonNull(item.getExternalIndexCode())) { |
| | | // item.setNo(item.getExternalIndexCode()); |
| | | // } |
| | | // }); |
| | | // pointService.setDeviceTagByGB(faceList,CheckConstants.Rule_Category_Face); |
| | | // //存放在mongo中 |
| | | // mongoTemplate.insertAll(faceList); |
| | | // } |
| | | log.info("结束海康考核成绩数据"); |
| | | } |
| | | |
| | | //解析数据 |
| | | private <T> List<T> getDataList(JSONObject jsonObject, Class<T> resultClass, String message) { |
| | | if (jsonObject != null && ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))) { |