| | |
| | | import com.mongodb.client.MongoCollection; |
| | | import com.mongodb.client.MongoDatabase; |
| | | import com.ycl.platform.domain.entity.*; |
| | | import com.ycl.platform.domain.excel.TMonitorExp; |
| | | import com.ycl.platform.domain.query.DataCenterQuery; |
| | | import com.ycl.platform.domain.result.HK.*; |
| | | import com.ycl.platform.domain.result.SYS.TMonitorResult; |
| | |
| | | import com.ycl.utils.DateUtils; |
| | | import com.ycl.utils.MongoUtil; |
| | | import com.ycl.utils.bean.BeanUtils; |
| | | import com.ycl.utils.poi.ExcelUtil; |
| | | import constant.ApiConstants; |
| | | import constant.CheckConstants; |
| | | import enumeration.general.AreaDeptEnum; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.apache.commons.collections.CollectionUtils; |
| | | import org.bson.Document; |
| | |
| | | } |
| | | List<String> offLineTime = item.getOffLineTimeStr(); |
| | | if(!CollectionUtils.isEmpty(offLineTime)) { |
| | | //后续可以改成配置的离线次数(提取前n次,n为配置的离线次数) |
| | | if (offLineTime.size() > 1) { |
| | | offLineTime = offLineTime.subList(0, 2); |
| | | offLineTime = offLineTime.subList(offLineTime.size() - 2, offLineTime.size()); |
| | | } |
| | | item.setOffLineTimeStr(offLineTime); |
| | | } |
| | |
| | | // 添加固定条件 |
| | | criteriaList.add(Criteria.where("monitorType").regex(".*" + CheckConstants.Rule_Category_Video + ".*")); |
| | | criteriaList.add(Criteria.where("mongoCreateTime").gte(params.getStartTime()).lte(params.getEndTime())); |
| | | criteriaList.add(Criteria.where("deptTag").is(Boolean.TRUE)); |
| | | // 根据dataType动态添加条件 |
| | | if (params.getDataType() == 1) { |
| | | criteriaList.add(Criteria.where("provinceTag").is(Boolean.TRUE)); |
| | |
| | | MongoUtil.setPage(query, params, "checkTime"); |
| | | List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class); |
| | | for (OsdCheckResult osdCheckResult : resultList) { |
| | | OsdCheckResult.getText(osdCheckResult); |
| | | OsdCheckResult.getError(osdCheckResult); |
| | | } |
| | | // 统计数量 |
| | | MongoDatabase database = mongoTemplate.getDb(); |
| | |
| | | return Result.ok().data(map).total(total); |
| | | } |
| | | |
| | | @Override |
| | | public void videoImportantPointLabelingAccuracyExport(HttpServletResponse response, DataCenterQuery params) { |
| | | List<String> likeFileds = Arrays.asList("deviceNo", "osdName"); |
| | | List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, null); |
| | | Query query = new Query(); |
| | | Criteria and = new Criteria(); |
| | | and.andOperator(andCriteria); |
| | | query = Query.query(and); |
| | | //下拉框标注正确查询条件 |
| | | if (params.getOption() != null) { |
| | | if(params.getOption()==1) { |
| | | andCriteria.add(Criteria.where("osdNameCorrect").is(1)); |
| | | andCriteria.add(Criteria.where("osdTimeCorrect").is(1)); |
| | | andCriteria.add(Criteria.where("osdProvinceCorrect").is(1)); |
| | | andCriteria.add(Criteria.where("osdCityCorrect").is(1)); |
| | | andCriteria.add(Criteria.where("osdPartCorrect").is(1)); |
| | | Criteria and2 = new Criteria(); |
| | | and2.andOperator(andCriteria); |
| | | query = Query.query(and2); |
| | | }else if(params.getOption()==-1){ |
| | | // 使用$or条件连接多个字段检查,每个字段检查是否等于-1 |
| | | Criteria c1 = Criteria.where("osdNameCorrect").is(-1); |
| | | Criteria c2 = Criteria.where("osdTimeCorrect").is(-1); |
| | | Criteria c3 = Criteria.where("osdProvinceCorrect").is(-1); |
| | | Criteria c4 = Criteria.where("osdCityCorrect").is(-1); |
| | | Criteria c5 = Criteria.where("osdPartCorrect").is(-1); |
| | | Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5); |
| | | orOperator.andOperator(andCriteria); |
| | | query = Query.query(orOperator); |
| | | }else { |
| | | Criteria c1 = Criteria.where("osdNameCorrect").is(0); |
| | | Criteria c2 = Criteria.where("osdTimeCorrect").is(0); |
| | | Criteria c3 = Criteria.where("osdProvinceCorrect").is(0); |
| | | Criteria c4 = Criteria.where("osdCityCorrect").is(0); |
| | | Criteria c5 = Criteria.where("osdPartCorrect").is(0); |
| | | Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5); |
| | | orOperator.andOperator(andCriteria); |
| | | query = Query.query(orOperator); |
| | | } |
| | | } |
| | | List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class); |
| | | for (OsdCheckResult osdCheckResult : resultList) { |
| | | OsdCheckResult.getError(osdCheckResult); |
| | | StringBuilder tag = new StringBuilder("" + |
| | | (osdCheckResult.getProvinceTag() ? "省厅、" : "") + |
| | | (osdCheckResult.getImportantTag() ? "重点点位、" : "") + |
| | | (osdCheckResult.getImportantCommandImageTag() ? "重点指挥图像、" : "") + |
| | | (osdCheckResult.getDeptTag() ? "部级、" : "")); |
| | | // 删除字符串末尾的"、" |
| | | if (tag.toString().endsWith("、")) { |
| | | tag = new StringBuilder(tag.substring(0, tag.length() - 1)); |
| | | } |
| | | osdCheckResult.setTagStr(tag.toString()); |
| | | } |
| | | ExcelUtil<OsdCheckResult> util = new ExcelUtil<>(OsdCheckResult.class); |
| | | String sheetName = "OSD标注"; |
| | | |
| | | util.exportExcel(response, resultList, sheetName); |
| | | } |
| | | |
| | | /** |
| | | * 视频:校时正确率 |
| | | * |
| | |
| | | @Override |
| | | public Result videoImportantPointCheckTimeAccuracy(DataCenterQuery params) { |
| | | List<String> likeFileds = Arrays.asList("deviceNo", "osdName"); |
| | | Query query = MongoUtil.getQuery(params, "checkTime", likeFileds, 3); |
| | | Query query = MongoUtil.getQuery(params, "checkTime", likeFileds, null); |
| | | //下拉框标注正确查询条件 |
| | | if (params.getOption() != null) { |
| | | if(params.getOption()==1) { |
| | |
| | | List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class); |
| | | |
| | | for (OsdCheckResult osdCheckResult : resultList) { |
| | | OsdCheckResult.getText(osdCheckResult); |
| | | OsdCheckResult.getError(osdCheckResult); |
| | | } |
| | | // 统计数量 |
| | | MongoDatabase database = mongoTemplate.getDb(); |