| | |
| | | import com.ycl.platform.domain.entity.YwPoint; |
| | | import com.ycl.platform.domain.result.HK.PicAccessResult; |
| | | import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult; |
| | | import com.ycl.platform.domain.result.SYS.TMonitorResult; |
| | | import com.ycl.platform.domain.result.UY.RecordMetaDSumResult; |
| | | import com.ycl.platform.domain.result.UY.VideoOnlineResult; |
| | | import com.ycl.platform.domain.vo.CalculateRuleVO; |
| | |
| | | ) |
| | | )); |
| | | Map<String, Integer> onlineStatusMap = new HashMap<>(); |
| | | //TODO 在线率修改,查mongo获取设备在线情况 |
| | | Date date = DateUtils.getDay(2024, 7, 13); |
| | | Date date = new Date(); |
| | | //车辆、人脸 |
| | | Query query = new Query(); |
| | | query.addCriteria(Criteria |
| | | .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); |
| | | List<SnapshotDataMonitorResult> results = mongoTemplate.find(query, SnapshotDataMonitorResult.class); |
| | | for (SnapshotDataMonitorResult result : results) { |
| | | if (ApiConstants.HK_SnapCount_ResultType_Null != result.getResultType()) { |
| | | onlineStatusMap.put(result.getExternalIndexCode(), Online); |
| | | } else { |
| | | onlineStatusMap.put(result.getExternalIndexCode(), Offline); |
| | | List<TMonitorResult> tMonitorResults = mongoTemplate.find(query, TMonitorResult.class); |
| | | for (TMonitorResult result : tMonitorResults) { |
| | | if(result.getPingOnline()){ |
| | | onlineStatusMap.put(result.getNo(), Online); |
| | | }else { |
| | | onlineStatusMap.put(result.getNo(), Offline); |
| | | } |
| | | } |
| | | //视频 |
| | | Query videoQuery = new Query(Criteria |
| | | .where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); |
| | | List<VideoOnlineResult> videoOnlineResults = mongoTemplate.find(videoQuery, VideoOnlineResult.class); |
| | | for (VideoOnlineResult videoOnlineResult : videoOnlineResults) { |
| | | onlineStatusMap.put(videoOnlineResult.getDeviceId(), videoOnlineResult.getStatus()); |
| | | } |
| | | |
| | | //查询报备列表 |
| | | List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate()); |
| | | //计算每个公司的点位在线率 |
| | |
| | | |
| | | //月底计算在线率分数 |
| | | public void calculateOnlineScore() { |
| | | //TODO:检查表 |
| | | log.info("开始计算合同点位在线率分数"); |
| | | //如果是月底,需要统计平均在线率然后进行积分扣除 |
| | | // String now = DateUtils.getDate(); |
| | |
| | | } |
| | | String errorType = workOrder.getErrorType(); |
| | | //存储故障 录像或图片访问异常 |
| | | if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) { |
| | | if (!CollectionUtils.isEmpty(storeRuleMap)) { |
| | | storeRuleMap.forEach((contractId, rules) -> { |
| | | Integer unitId = rules.get(0).getUnitId(); |
| | | //找到对应的规则 |
| | | if (workOrder.getUnitId().equals(unitId)) { |
| | | //工单下发时间 |
| | | Date createTime = workOrder.getDistributeTime(); |
| | | Date auditTime = workOrder.getAuditTime(); |
| | | double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60); |
| | | //选择时间范围内的规则 |
| | | for (CalculateRuleVO rule : rules) { |
| | | if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { |
| | | double deductScore = rule.getCalcFraction() * Math.ceil(diffTime); |
| | | ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "工单编号为:" + workOrder.getWorkOrderNo() + "处理超时,扣除" + deductScore + "分"); |
| | | contractScoreList.add(contractScore); |
| | | workOrderList.add(workOrder.getWorkOrderNo()); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | // if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) { |
| | | // if (!CollectionUtils.isEmpty(storeRuleMap)) { |
| | | // storeRuleMap.forEach((contractId, rules) -> { |
| | | // Integer unitId = rules.get(0).getUnitId(); |
| | | // //找到对应的规则 |
| | | // if (workOrder.getUnitId().equals(unitId)) { |
| | | // //工单下发时间 |
| | | // Date createTime = workOrder.getDistributeTime(); |
| | | // Date auditTime = workOrder.getAuditTime(); |
| | | // double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60); |
| | | // //选择时间范围内的规则 |
| | | // for (CalculateRuleVO rule : rules) { |
| | | // if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { |
| | | // double deductScore = rule.getCalcFraction() * Math.ceil(diffTime); |
| | | // ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "工单编号为:" + workOrder.getWorkOrderNo() + "处理超时,扣除" + deductScore + "分"); |
| | | // contractScoreList.add(contractScore); |
| | | // workOrderList.add(workOrder.getWorkOrderNo()); |
| | | // } |
| | | // } |
| | | // } |
| | | // }); |
| | | // } |
| | | // } |
| | | //前端感知源治理工作(时钟同步规则、OSD规则、一机一档规则) |
| | | if (ErrorType.MONITOR_UNQUALIFY.getValue().equals(errorType) || ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType)) { |
| | | if (ErrorType.POINT_INFO_ERROR.getValue().equals(errorType) || ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType)) { |
| | | if (!CollectionUtils.isEmpty(monitorRuleMap)) { |
| | | monitorRuleMap.forEach((contractId, rules) -> { |
| | | Integer unitId = rules.get(0).getUnitId(); |
| | |
| | | queryWrapper.in("serial_number", serialNumbers); |
| | | //获取公司所运维的设备集合,key为unitId value为设备国标码集合 |
| | | Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream() |
| | | .filter(ywPoint -> ywPoint.getUnitId()!=null).collect(Collectors.groupingBy(YwPoint::getUnitId, |
| | | .filter(ywPoint -> ywPoint.getUnitId() != null).collect(Collectors.groupingBy(YwPoint::getUnitId, |
| | | Collectors.mapping( |
| | | YwPoint::getSerialNumber, |
| | | Collectors.toList()))); |
| | |
| | | queryWrapper.in("serial_number", serialNumbers); |
| | | //获取公司所运维的设备集合,key为unitId value为设备国标码集合 |
| | | Map<Long, List<String>> unitMonitorMap = ywPointMapper.selectList(queryWrapper).stream() |
| | | .filter(ywPoint -> ywPoint.getUnitId()!=null).collect(Collectors.groupingBy(YwPoint::getUnitId, |
| | | .filter(ywPoint -> ywPoint.getUnitId() != null).collect(Collectors.groupingBy(YwPoint::getUnitId, |
| | | Collectors.mapping( |
| | | YwPoint::getSerialNumber, |
| | | Collectors.toList()))); |