| | |
| | | .filter(calculateRuleVO -> ContractRule.CONTRACT_RULE_Online.getName().equals(calculateRuleVO.getRuleName())) |
| | | .collect(Collectors.toList()); |
| | | List<Integer> unitIds = ruleVos.stream().map(CalculateRuleVO::getUnitId).collect(Collectors.toList()); |
| | | List<YwPoint> ywPoints = ywPointMapper.selectList(new QueryWrapper<YwPoint>().in("unit_id", unitIds)); |
| | | List<YwPoint> ywPoints = ywPointMapper.selectList(new QueryWrapper<YwPoint>().in("unit_id", unitIds).eq("examine_status",1)); |
| | | //key是unitId value是设备编码集合 |
| | | Map<Long, List<YwPoint>> unitMap = ywPoints.stream().filter(point -> point.getUnitId() != null) |
| | | .collect(Collectors.groupingBy( |
| | |
| | | if (!CollectionUtils.isEmpty(reportNumbers) && reportNumbers.contains(point.getSerialNumber())) |
| | | continue; |
| | | totalSite++; |
| | | if (ApiConstants.UY_OnlineSite_Online.equals(point.getOnline())) { |
| | | if (ApiConstants.UY_OnlineSite_Online.equals(point.getOnline()) && ApiConstants.UY_OnlineSite_Online.equals(point.getPingOnline())) { |
| | | onlineSite++; |
| | | } |
| | | } |
| | |
| | | |
| | | //月底计算在线率分数 |
| | | public void calculateOnlineScore() { |
| | | //TODO:检查表 |
| | | log.info("开始计算合同点位在线率分数"); |
| | | //月底需要统计平均在线率然后进行积分扣除 |
| | | String mouthStart = DateUtils.getMouthStart(new Date()); |
| | |
| | | .collect(Collectors.groupingBy( |
| | | CalculateRuleVO::getRuleName, // 按规则名称分组 |
| | | Collectors.groupingBy( |
| | | CalculateRuleVO::getContractId // 每个规则名称内部再按合同ID分组,value为规则集合 |
| | | CalculateRuleVO::getContractId // 每个规则名称内部再按合同ID分组,value为规则集合(多个合同情况) |
| | | ) |
| | | )); |
| | | //前端感知源治理工作(时钟同步规则、OSD规则、一机一档规则) 获取key为合同id,value为规则的map |
| | |
| | | if (!CollectionUtils.isEmpty(reportNumbers)) { |
| | | if (reportNumbers.contains(workOrder.getSerialNumber())) continue; |
| | | } |
| | | // if(!WorkOrderStatusEnum.AUDITING_SUCCESS.equals(workOrder.getStatus())) continue; |
| | | String errorType = workOrder.getErrorType(); |
| | | //存储故障 录像或图片访问异常 (改成手动打分了) |
| | | // if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) { |
| | |
| | | // } |
| | | // } |
| | | //前端感知源治理工作(时钟同步规则、OSD规则、一机一档规则) |
| | | if (ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType) || ErrorType.CLOCK_RIGHT.getValue().equals(errorType)) { |
| | | if (ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType) || ErrorType.CLOCK_RIGHT.getValue().equals(errorType) || ErrorType.POINT_INFO_ERROR.getValue().equals(errorType)) { |
| | | if (!CollectionUtils.isEmpty(monitorRuleMap)) { |
| | | monitorRuleMap.forEach((contractId, rules) -> { |
| | | Integer unitId = rules.get(0).getUnitId(); |
| | |
| | | Date createTime = workOrder.getDistributeTime(); |
| | | Date auditTime = workOrder.getAuditTime(); |
| | | double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60); |
| | | //选择时间范围内的规则 |
| | | //找到对应规则、选择时间范围内的规则 |
| | | for (CalculateRuleVO rule : rules) { |
| | | if(ErrorType.OSD_ERROR.getValue().equals(errorType)){ |
| | | if(!rule.getRuleCondition().equals("OSD标识")) continue; |
| | | }else if(ErrorType.CLOCK_SKEW.getValue().equals(errorType)){ |
| | | if(!rule.getRuleCondition().equals("时钟同步")) continue; |
| | | }else if( ErrorType.POINT_INFO_ERROR.getValue().equals(errorType)){ |
| | | if(!rule.getRuleCondition().equals("一机一档")) continue; |
| | | } |
| | | |
| | | if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) { |
| | | double deductScore = rule.getCalcFraction(); |
| | | ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "工单编号为:" + workOrder.getWorkOrderNo() + "处理超时,扣除" + deductScore + "分"); |
| | |
| | | } |
| | | } |
| | | //点位异常情况处理(镜头异常、摄像头遮挡等) |
| | | if (ErrorType.SCREEN_OCCLUSION.getValue().equals(errorType)) { |
| | | if (ErrorType.ABNORMAL_PIC.getValue().equals(errorType)) { |
| | | if (!CollectionUtils.isEmpty(monitorRuleMap)) { |
| | | siteRuleMap.forEach((contractId, rules) -> { |
| | | Integer unitId = rules.get(0).getUnitId(); |
| | |
| | | List<ContractScore> contractScoreList = new ArrayList<>(); |
| | | //查询报备列表 |
| | | List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate()); |
| | | Date date = DateUtils.getDay(2024, 7, 13); |
| | | Date date = new Date(); |
| | | //查图片完整性规则 获取key为合同id,value为规则的map |
| | | Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream() |
| | | .filter(calculateRuleVO -> ContractRule.CONTRACT_RULE_PicComplete.getName().equals(calculateRuleVO.getRuleName())) |
| | |
| | | List<ContractScore> contractScoreList = new ArrayList<>(); |
| | | //查询报备列表 |
| | | List<String> reportNumbers = reportMapper.selectNumberList(AuditStatus_Pass, DateUtils.getDate()); |
| | | //TODO:测试日期 |
| | | Date date = DateUtils.getDay(2024, 7, 13); |
| | | Date date = new Date(); |
| | | //查图片完整性规则 获取key为合同id,value为规则的map |
| | | Map<Integer, List<CalculateRuleVO>> contractMap = contractMapper.getCalculateRule(new Date()).stream() |
| | | .filter(calculateRuleVO -> ContractRule.CONTRACT_RULE_VideoRecord.getName().equals(calculateRuleVO.getRuleName())) |