From db75b45e9a7ce347162b8d3a36e4a7f46cfe199e Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 10 二月 2025 15:30:18 +0800 Subject: [PATCH] 核算导出单独对录像扣分的数量做处理 --- ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 123 ++++++++++++++++++++++++++++++++++------ 1 files changed, 104 insertions(+), 19 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java index 9ea32fa..5d2b201 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java @@ -9,6 +9,7 @@ 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; @@ -26,9 +27,11 @@ 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; @@ -86,8 +89,12 @@ if (params.getOption() != null) { query.addCriteria(Criteria.where("online").is(params.getOption())); } + Sort sort = Sort.by( + Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭 + Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭 + ); // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈� - query.with(Sort.by(Sort.Order.asc("pingOnline"))); + query.with(sort); //鍒嗛〉鏁伴噺 long total = mongoTemplate.count(query, TMonitorResult.class); MongoUtil.setPage(query, params, TIME_FIELD); @@ -107,19 +114,12 @@ } else { item.setOnlineStr("鏈煡"); } - List<Date> offLineTime = item.getOffLineTime(); + List<String> offLineTime = item.getOffLineTimeStr(); if(!CollectionUtils.isEmpty(offLineTime)) { - //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟) - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (offLineTime.size() > 1) { - offLineTime = offLineTime.subList(0, 2); + offLineTime = offLineTime.subList(offLineTime.size() - 2, offLineTime.size()); } - List<String> dateStr = new ArrayList<>(); - for (Date date : offLineTime) { - String formatDate = format.format(date); - dateStr.add(formatDate); - } - item.setOffLineTimeStr(dateStr); + item.setOffLineTimeStr(offLineTime); } }); params.setDeptTag(-1); @@ -229,6 +229,7 @@ // 娣诲姞鍥哄畾鏉′欢 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)); @@ -1062,7 +1063,7 @@ 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(); @@ -1096,7 +1097,7 @@ Document errorFilter = new Document("$or", errorConditions); dList2.add(errorFilter); Document osdErrorFilter = new Document("$and", dList2); - //TODO锛氭湭鐭ユ暟 鏂板0鐨勭姸鎬� + //鏈煡鏁� List<Document> dList3 = new ArrayList<>(2); setTag(params,dList3); dList3.add(importantTagCondition); @@ -1149,6 +1150,66 @@ 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); + } + /** * 瑙嗛锛氭牎鏃舵纭巼 * @@ -1184,7 +1245,7 @@ @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) { @@ -1201,7 +1262,7 @@ List<OsdCheckResult> resultList = mongoTemplate.find(query, OsdCheckResult.class); for (OsdCheckResult osdCheckResult : resultList) { - OsdCheckResult.getText(osdCheckResult); + OsdCheckResult.getError(osdCheckResult); } // 缁熻鏁伴噺 MongoDatabase database = mongoTemplate.getDb(); @@ -1235,7 +1296,7 @@ Document errorFilter = new Document("$or", errorConditions); dList2.add(errorFilter); Document osdErrorFilter = new Document("$and", dList2); - //TODO锛氭湭鐭ユ暟 鏂板0鐨勭姸鎬� + //鏈煡鏁� List<Document> dList3 = new ArrayList<>(2); setTag(params,dList3); dList3.add(importantTagCondition); @@ -1400,8 +1461,12 @@ if (params.getOption() != null) { query.addCriteria(Criteria.where("online").is(params.getOption())); } + Sort sort = Sort.by( + Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭 + Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭 + ); // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈� - query.with(Sort.by(Sort.Order.asc("pingOnline"))); + query.with(sort); //鍒嗛〉鏁伴噺 long total = mongoTemplate.count(query, TMonitorResult.class); MongoUtil.setPage(query, params, TIME_FIELD); @@ -1423,6 +1488,14 @@ item.setOnlineStr("绂荤嚎"); } else { item.setOnlineStr("鏈煡"); + } + List<String> offLineTime = item.getOffLineTimeStr(); + if(!CollectionUtils.isEmpty(offLineTime)) { + //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟) + if (offLineTime.size() > 1) { + offLineTime = offLineTime.subList(0, 2); + } + item.setOffLineTimeStr(offLineTime); } }); @@ -2208,8 +2281,12 @@ if (params.getOption() != null) { query.addCriteria(Criteria.where("online").is(params.getOption())); } + Sort sort = Sort.by( + Sort.Order.asc("pingOnline"), // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭 + Sort.Order.desc("offLineCount") // 棣栧厛鎸夌収 pingOnline 鍗囧簭鎺掑簭 + ); // 閫氳繃pingOnline瀛楁鎺掑簭锛屼负false鐨勬帓鍦ㄥ墠闈� - query.with(Sort.by(Sort.Order.asc("pingOnline"))); + query.with(sort); //鍒嗛〉鏁伴噺 long total = mongoTemplate.count(query, TMonitorResult.class); MongoUtil.setPage(query, params, TIME_FIELD); @@ -2229,11 +2306,19 @@ } else { item.setOnlineStr("鏈煡"); } + List<String> offLineTime = item.getOffLineTimeStr(); + if(!CollectionUtils.isEmpty(offLineTime)) { + //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟) + if (offLineTime.size() > 1) { + offLineTime = offLineTime.subList(0, 2); + } + item.setOffLineTimeStr(offLineTime); + } }); params.setDeptTag(-1); params.setDeviceType(3); -// 缁熻璁惧鏁伴噺 + // 缁熻璁惧鏁伴噺 //鍗$墖缁熻 int totalCount = 0; int onlineCount = 0; -- Gitblit v1.8.0