From d49b037cd6d42cff6e8a15b3590a3edac2c4568b Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 06 九月 2024 16:38:55 +0800
Subject: [PATCH] 点位在线监测
---
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml | 85 +++++++++
ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java | 6
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/PointDetailVO.java | 167 ++++++++++++++++++
ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java | 10 +
ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 234 ++++++--------------------
5 files changed, 322 insertions(+), 180 deletions(-)
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java
index 293fe40..b3f2239 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java
@@ -35,6 +35,12 @@
/** 鏁版嵁绫诲瀷锛�0 鍏ㄩ儴 1鐪佸巺 */
private Integer dataType = 0;
+ /** 鏍囩锛�1 閮ㄧ骇 2 鐪佸巺 3 閲嶇偣 4 閲嶇偣鎸囨尌鍥惧儚 5 鏂拌澶� */
+ private Integer deptTag;
+
+ /** 1 瑙嗛 2 杞﹁締 3 浜鸿劯 */
+ private Integer deviceType;
+
public void setTime() {
if (Objects.nonNull(this.startTime)) {
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/PointDetailVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/PointDetailVO.java
new file mode 100644
index 0000000..301ffb3
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/PointDetailVO.java
@@ -0,0 +1,167 @@
+package com.ycl.platform.domain.vo;
+
+import annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/9/6 15:18
+ */
+@Data
+public class PointDetailVO {
+
+ /**
+ * 璁惧缂栫爜
+ */
+ private String serialNumber;
+
+ /**
+ * 璁惧鍚嶇О
+ */
+ private String name;
+
+ /**
+ * 鐩戞帶鐐逛綅绫诲瀷 [1.涓�绫昏棰戠洃鎺х偣;2.浜岀被瑙嗛鐩戞帶鐐�;3.涓夌被瑙嗛鐩戞帶鐐�;4.鍏畨鍐呴儴瑙嗛鐩戞帶鐐�;9.鍏朵粬鐐逛綅;]
+ */
+ private Long siteType;
+
+ /**
+ * 鎽勫儚鏈篗ac鍦板潃
+ */
+ private String macAddr;
+
+ /**
+ * 鎽勫儚鏈篒PV4鎴朓PV6鍦板潃
+ */
+ private String ip;
+
+ /**
+ * 鎽勫儚鏈哄姛鑳界被鍨媅1.瑙嗛鐩戞帶;2.杞﹁締璇嗗埆;3.浜哄憳璇嗗埆;] 鏁版嵁鏍煎紡[濉叆澶氫釜鍊煎苟浠�/闅斿紑銆備緥濡� 1/2]
+ */
+ private String cameraFunType;
+
+ /**
+ * 璁惧缁忓害锛岃嚦灏戜繚鐣欏叚浣嶅皬鏁�
+ */
+ private String longitude;
+
+ /**
+ * 璁惧缁村害锛岃嚦灏戜繚鐣欏叚浣嶅皬鏁�
+ */
+ private String latitude;
+
+ /**
+ * 鎽勫儚鏈洪噰闆嗗尯鍩熷弬鑰冨瓧鍏歌〃锛屾暟鎹閫変互/闅斿紑
+ */
+ private String cameraCaptureArea;
+
+ /**
+ * 璁惧鐘舵�� 1/2 鍙敤/涓嶅彲鐢�
+ */
+ private Long onState;
+
+ /**
+ * 琛屾斂鍖哄煙
+ */
+ private String civilCode;
+
+ /**
+ * 鏄惁闆嗘垚璁惧锛�0/1 涓嶆槸/鏄�
+ */
+ private Long integratedDevice;
+
+ /**
+ * 鎽勫儚鏈哄搧鐗� [1.娴峰悍濞佽;2.澶у崕;3.澶╁湴浼熶笟;4.绉戣揪;5.瀹夎澹�;6.鍗氫笘;7.浜氬畨;8.鑻遍鎷�;9.瀹囪;10.娴蜂俊;11.涓槦鐢靛瓙;12.鏄庢櫙;13.鑱旀兂;14.涓叴;15.绱㈠凹;16.涓夋槦;99.鍏跺畠;
+ */
+ private Long cameraBrand;
+
+ /**
+ * 瀹夎鍦板潃
+ */
+ private String address;
+
+ /**
+ * 鑱旂綉灞炴�� 0/1 宸茶仈缃�/鏈仈缃�
+ */
+ private Long netWorking;
+
+ /**
+ * 鎵�灞炶緰鍖哄叕瀹夋満鍏�
+ */
+ private String publicSecurity;
+
+ /**
+ * 瀹夎鏃堕棿 yyyy-MM-dd HH:mm:ss
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date installedTime;
+
+ /**
+ * 绠$悊鍗曚綅
+ */
+ private String managementUnit;
+
+ /**
+ * 绠$悊鍗曚綅鑱旂郴鏂瑰紡
+ */
+ private String muContactInfo;
+
+ /**
+ * 褰曡薄淇濆瓨澶╂暟 0 - 2147483647
+ */
+ private Long storageDays;
+
+ /**
+ * 鐩戣鏂逛綅 [1.涓�;2.瑗�;3.鍗�;4.鍖�;5.涓滃崡;6.涓滃寳;7.瑗垮崡;8.瑗垮寳;9.鍏ㄥ悜;]
+ */
+ private Long monitorAzimuth;
+
+ /**
+ * 鎽勫儚鏈哄満鏅璁剧収鐗嘦RL
+ */
+ private String scenePhotoAddr;
+
+ /**
+ * 璁惧鍨嬪彿
+ */
+ private String model;
+
+ /**
+ * 鐐逛綅淇楃О
+ */
+ private String siteVulgo;
+
+ /**
+ * 鎽勫儚鏈虹被鍨� [1.鐞冩満;2.鍗婄悆;3.鍥哄畾鏋満;4.閬ユ帶鏋満;5.鍗″彛鏋満;99.鏈煡;
+ */
+ private Long cameraType;
+
+ /**
+ * 琛ュ厜灞炴�1.鏃犺ˉ鍏�;2.绾㈠琛ュ厜;3.鐧藉厜琛ュ厜;9.鍏朵粬琛ュ厜;]
+ */
+ private Long cameraLightType;
+
+ /**
+ * 鎽勫儚鏈虹紪鐮佹牸寮� [1.MPEG-4;2.H.264;3.SVAC;4.H.265;]
+ */
+ private Long encodedFormat;
+
+ /**
+ * 鎵�灞為儴闂�/琛屼笟 鍙栧�艰寖鍥�(澶氶��) : [1.鍏畨鏈哄叧;2.鐜繚閮ㄩ棬;3.鏂囧崥閮ㄩ棬;4.鍖荤枟閮ㄩ棬;5.鏃呮父绠$悊;6.鏂伴椈骞跨數;7.椋熷搧鍖昏嵂鐩戠潱绠$悊閮ㄩ棬;8.鏁欒偛绠$悊閮ㄩ棬;9.妫�瀵熼櫌;10.娉曢櫌;11.閲戣瀺閮ㄩ棬;12.浜ら�氶儴闂�;13.浣忔埧鍜屽煄涔″缓璁鹃儴闂�;14.姘村埄閮ㄩ棬;15.鏋椾笟閮ㄩ棬;16.瀹夊叏鐢熶骇鐩戠潱閮ㄩ棬;17.甯傛斂甯傚濮�;18.鍥藉湡灞�;] 鏁版嵁鏍煎紡[濉叆澶氫釜鍊煎苟浠�/闅斿紑銆備緥濡� 1/2]
+ */
+ private String cameraDept;
+
+ /**
+ * 琛屼笟缂栫爜 [00.绀句細娌诲畨璺潰鎺ュ叆;01.绀句細娌诲畨绀惧尯鎺ュ叆;02.绀句細娌诲畨鍐呴儴鎺ュ叆;03.绀句細娌诲畨鍏朵粬鎺ュ叆;04.浜ら�氳矾闈㈡帴鍏�;05.浜ら�氬崱鍙f帴鍏�;06.浜ら�氬唴閮ㄦ帴鍏�;07.浜ら�氬叾浠栨帴鍏�;08.鍩庡競绠$悊鎺ュ叆;09.鍗敓鐜繚鎺ュ叆;10.鍟嗘娴峰叧鎺ュ叆;11.鏁欒偛閮ㄩ棬鎺ュ叆;]
+ */
+ private String hybm;
+
+ /**
+ * 绫诲瀷缂栫爜 : [131.鎽勫儚鏈虹紪鐮�;132.缃戠粶鎽勫儚鏈虹紪鐮�;]
+ */
+ private Long lxbm;
+
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
index 9ec669c..bc2ce19 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
@@ -5,8 +5,10 @@
import com.ycl.platform.base.BaseSelect;
import com.ycl.platform.domain.entity.ReportAuditingRecord;
import com.ycl.platform.domain.entity.YwPoint;
+import com.ycl.platform.domain.query.DataCenterQuery;
import com.ycl.platform.domain.query.YwPointQuery;
import com.ycl.platform.domain.vo.CheckTagVO;
+import com.ycl.platform.domain.vo.PointDetailVO;
import com.ycl.platform.domain.vo.ReportAuditingRecordVO;
import com.ycl.platform.domain.vo.YwPointVO;
import com.ycl.platform.domain.excel.PointExport;
@@ -33,6 +35,8 @@
List<BaseSelect> selectData(@Param("keyword") String keyword, @Param("unitId") Integer unitId);
IPage page(IPage<YwPointVO> page, @Param("query") YwPointQuery query);
+
+ IPage dataCenterPage(IPage<PointDetailVO> page, @Param("query") DataCenterQuery query);
/**
* 棣栭〉鍒版湡棰勮
@@ -113,4 +117,10 @@
* @return
*/
List<CheckTagVO> getTagsByGB(@Param("gbList") List<String> gbList);
+
+ /**
+ * 鏌ヨ璁惧鎬绘暟
+ * @return
+ */
+ Integer distinctCount(@Param("query") DataCenterQuery query);
}
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 f7b2e36..7d463d4 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
@@ -11,6 +11,7 @@
import com.ycl.platform.domain.query.DataCenterQuery;
import com.ycl.platform.domain.result.HK.*;
import com.ycl.platform.domain.result.UY.*;
+import com.ycl.platform.domain.vo.PointDetailVO;
import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.platform.service.*;
@@ -65,19 +66,14 @@
*/
@Override
public Result videoPointOnlineRate(DataCenterQuery params) {
- // 鐢熸垚鏌ヨ
- List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ params.setDeptTag(-1);
+ params.setDeviceType(1);
+ IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class);
+ pointMapper.dataCenterPage(page, params);
- // 鍏堟煡鎬绘暟鍐嶅垎椤�
- long total = mongoTemplate.count(query, VideoOnlineResult.class);
- MongoUtil.setPage(query, params, TIME_FIELD);
- List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
+ // 缁熻璁惧鏁伴噺
+ Integer distinctCount = pointMapper.distinctCount(params);
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("uy_online");
- long distinctCount = collection.distinct("deviceId", String.class).into(new ArrayList<>()).size();
Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getSiteOnline)
@@ -91,8 +87,8 @@
}
HashMap<String, Object> map = new HashMap<>();
map.put("count", Arrays.asList(distinctCount + "",this.remove0(onlineRate)));
- map.put("list", resultList);
- return Result.ok().data(map).total(total);
+ map.put("list", page.getRecords());
+ return Result.ok().data(map).total(page.getTotal());
}
/**
@@ -103,40 +99,14 @@
*/
@Override
public Result deptVideoPointOnlineRate(DataCenterQuery params) {
+ params.setDeptTag(1);
+ params.setDeviceType(1);
+ IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class);
+ pointMapper.dataCenterPage(page, params);
- List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
- // 鐢熸垚鏌ヨ
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 1);
+ // 缁熻璁惧鏁伴噺
+ Integer distinctCount = pointMapper.distinctCount(params);
- // 鍏堟煡鎬绘暟鍐嶅垎椤�
- long total = mongoTemplate.count(query, VideoOnlineResult.class);
- MongoUtil.setPage(query, params, TIME_FIELD);
- List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
-
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("uy_online");
- List<Document> dList = new ArrayList<>(2);
- dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE)));
- if (params.getDataType().equals(1)) {
- dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
- }
- Document filter = new Document("$and", dList);
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- // 鍙閮ㄧ骇鐨�
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$deviceId")),
- new Document("$count", "uniqueDeviceIds")
- );
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
- }
Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
.select(CheckIndexVideo::getMinistrySiteOnline)
@@ -150,9 +120,9 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(uniqueDeviceIdCount + "", this.remove0(onlineRate)));
- map.put("list", resultList);
- return Result.ok().data(map).total(total);
+ map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
+ map.put("list", page.getRecords());
+ return Result.ok().data(map).total(page.getTotal());
}
/**
@@ -163,37 +133,13 @@
*/
@Override
public Result videoImportantPointOnlineRate(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 3);
+ params.setDeptTag(3);
+ params.setDeviceType(1);
+ IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class);
+ pointMapper.dataCenterPage(page, params);
- long total = mongoTemplate.count(query, VideoOnlineResult.class);
- MongoUtil.setPage(query, params, TIME_FIELD);
- List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
-
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("uy_online");
-
- List<Document> dList = new ArrayList<>(2);
- dList.add(new Document("importantTag", new Document("$eq", Boolean.TRUE)));
- if (params.getDataType().equals(1)) {
- dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
- }
- Document filter = new Document("$and", dList);
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$deviceId")),
- new Document("$count", "uniqueDeviceIds")
- );
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
- }
+ // 缁熻璁惧鏁伴噺
+ Integer distinctCount = pointMapper.distinctCount(params);
Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
@@ -208,9 +154,9 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(uniqueDeviceIdCount + "", this.remove0(onlineRate)));
- map.put("list", resultList);
- return Result.ok().data(map).total(total);
+ map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
+ map.put("list", page.getRecords());
+ return Result.ok().data(map).total(page.getTotal());
}
/**
@@ -221,37 +167,13 @@
*/
@Override
public Result videoImportantPointImageOnlineRate(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("arealayerName", "ipAddr", "deviceName", "deviceId");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, 4);
+ params.setDeptTag(4);
+ params.setDeviceType(1);
+ IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class);
+ pointMapper.dataCenterPage(page, params);
- long total = mongoTemplate.count(query, VideoOnlineResult.class);
- MongoUtil.setPage(query, params, TIME_FIELD);
- List<VideoOnlineResult> resultList = mongoTemplate.find(query, VideoOnlineResult.class);
-
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("uy_online");
-
- List<Document> dList = new ArrayList<>(2);
- dList.add(new Document("importantCommandImageTag", new Document("$eq", Boolean.TRUE)));
- if (params.getDataType().equals(1)) {
- dList.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
- }
- Document filter = new Document("$and", dList);
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$deviceId")),
- new Document("$count", "uniqueDeviceIds")
- );
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
- }
+ // 缁熻璁惧鏁伴噺
+ Integer distinctCount = pointMapper.distinctCount(params);
Date now = new Date();
List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper())
@@ -266,9 +188,9 @@
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
HashMap<String, Object> map = new HashMap<>();
- map.put("count", Arrays.asList(uniqueDeviceIdCount + "", this.remove0(onlineRate)));
- map.put("list", resultList);
- return Result.ok().data(map).total(total);
+ map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
+ map.put("list", page.getRecords());
+ return Result.ok().data(map).total(page.getTotal());
}
/**
@@ -996,17 +918,13 @@
*/
@Override
public Result vehiclePointOnlineRate(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ params.setDeptTag(-1);
+ params.setDeviceType(2);
+ IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class);
+ pointMapper.dataCenterPage(page, params);
- long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
- MongoUtil.setPage(query, params, TIME_FIELD);
- List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
- long distinctCount = collection.distinct("externalIndexCode", String.class).into(new ArrayList<>()).size();
+ // 缁熻璁惧鏁伴噺
+ Integer distinctCount = pointMapper.distinctCount(params);
Date now = new Date();
List<CheckIndexCar> videoList = new LambdaQueryChainWrapper<>(checkIndexCarService.getBaseMapper())
@@ -1022,8 +940,8 @@
}
HashMap<String, Object> map = new HashMap<>();
map.put("count", Arrays.asList(distinctCount + "", this.remove0(onlineRate)));
- map.put("list", resultList);
- return Result.ok().data(map).total(total);
+ map.put("list", page.getRecords());
+ return Result.ok().data(map).total(page.getTotal());
}
/**
@@ -1528,59 +1446,13 @@
*/
@Override
public Result facePointOnlineRate(DataCenterQuery params) {
- List<String> likeFileds = Arrays.asList("externalIndexCode", "deviceName");
- Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null);
+ params.setDeptTag(-1);
+ params.setDeviceType(3);
+ IPage<PointDetailVO> page = PageUtil.getPage(params, PointDetailVO.class);
+ pointMapper.dataCenterPage(page, params);
- long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
- MongoUtil.setPage(query, params, TIME_FIELD);
- List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-
- // 缁熻鏁伴噺
- MongoDatabase database = mongoTemplate.getDb();
- MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
-
- List<Document> dList1 = new ArrayList<>(2);
- dList1.add(new Document("resultType", new Document("$eq", 1)));
- if (params.getDataType().equals(1)) {
- dList1.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
- }
- List<Document> dList2 = new ArrayList<>(2);
- dList2.add(new Document("resultType", new Document("$eq", 2)));
- if (params.getDataType().equals(1)) {
- dList2.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
- }
- List<Document> dList3 = new ArrayList<>(2);
- dList3.add(new Document("resultType", new Document("$eq", 3)));
- if (params.getDataType().equals(1)) {
- dList3.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
- }
- List<Document> dList4 = new ArrayList<>(2);
- dList4.add(new Document("resultType", new Document("$eq", 4)));
- if (params.getDataType().equals(1)) {
- dList4.add(new Document("provinceTag", new Document("$eq", Boolean.TRUE)));
- }
- Document normalFilter = new Document("$and", dList1);
- Document noDataFilter = new Document("$and", dList2);
- Document trFilter = new Document("$and", dList3);
- Document littleFilter = new Document("$and", dList4);
- List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter);
- List<String> rList = lists.stream().map(filter -> {
- // 鏋勫缓鑱氬悎绠¢亾
- List<Document> pipeline = Arrays.asList(
- new Document("$match", filter),
- // $group 鍘婚噸
- new Document("$group", new Document("_id", "$externalIndexCode")),
- new Document("$count", "uniqueDeviceIds")
- );
- // 鎵ц鑱氬悎鏌ヨ骞惰幏鍙栫粨鏋�
- AggregateIterable<Document> result = collection.aggregate(pipeline);
- Integer uniqueDeviceIdCount = 0;
- for (Document doc : result) {
- uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds");
- break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋�
- }
- return uniqueDeviceIdCount + "";
- }).collect(Collectors.toList());
+ // 缁熻璁惧鏁伴噺
+ Integer distinctCount = pointMapper.distinctCount(params);
Date now = new Date();
List<CheckIndexFace> videoList = new LambdaQueryChainWrapper<>(checkIndexFaceService.getBaseMapper())
@@ -1594,11 +1466,13 @@
BigDecimal count = BigDecimal.valueOf(videoList.size());
onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
}
+ List<String> rList = new ArrayList<>(2);
+ rList.add(distinctCount + "");
rList.add(this.remove0(onlineRate));
HashMap<String, Object> map = new HashMap<>();
map.put("count", rList);
- map.put("list", resultList);
- return Result.ok().data(map).total(total);
+ map.put("list", page.getRecords());
+ return Result.ok().data(map).total(page.getTotal());
}
/**
diff --git a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
index e5dfe33..34b5f19 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
@@ -55,6 +55,90 @@
</where>
</select>
+ <select id="dataCenterPage">
+ SELECT
+ m.*
+ FROM
+ t_yw_point p INNER JOIN t_monitor m ON p.serial_number = m.serial_number
+ <where>
+ AND p.create_time between #{query.startTime} and #{query.endTime}
+ <if test="query.keyword != null and query.keyword != ''">
+ AND (m.name like concat('%', #{query.keyword}, '%') OR m.serial_number like concat('%', #{query.keyword}, '%'))
+ </if>
+ <if test="query.dataType == 1">
+ AND p.province_tag = 1
+ </if>
+ <choose>
+ <when test="query.deptTag == 1">
+ AND p.dept_tag = 1
+ </when>
+ <when test="query.deptTag == 2">
+ AND p.province_tag = 1
+ </when>
+ <when test="query.deptTag == 3">
+ AND p.important_tag = 1
+ </when>
+ <when test="query.deptTag == 4">
+ AND p.important_command_image_tag = 1
+ </when>
+ <when test="query.deptTag == 5">
+ AND p.new_device = 1
+ </when>
+ </choose>
+ <choose>
+ <when test="query.deviceType == 1">
+ AND m.camera_fun_type like '%1%'
+ </when>
+ <when test="query.deviceType == 2">
+ AND m.camera_fun_type like '%2%'
+ </when>
+ <when test="query.deviceType == 3">
+ AND m.camera_fun_type like '%3%'
+ </when>
+ </choose>
+ </where>
+ </select>
+
+ <select id="distinctCount" resultType="integer">
+ SELECT
+ count(DISTINCT m.serial_number)
+ FROM
+ t_yw_point p INNER JOIN t_monitor m ON p.serial_number = m.serial_number
+ <where>
+ <if test="query.dataType == 1">
+ AND p.province_tag = 1
+ </if>
+ <choose>
+ <when test="query.deptTag == 1">
+ AND dept_tag = 1
+ </when>
+ <when test="query.deptTag == 2">
+ AND province_tag = 1
+ </when>
+ <when test="query.deptTag == 3">
+ AND important_tag = 1
+ </when>
+ <when test="query.deptTag == 4">
+ AND important_command_image_tag = 1
+ </when>
+ <when test="query.deptTag == 5">
+ AND new_device = 1
+ </when>
+ </choose>
+ <choose>
+ <when test="query.deviceType == 1">
+ AND m.camera_fun_type like '%1%'
+ </when>
+ <when test="query.deviceType == 2">
+ AND m.camera_fun_type like '%2%'
+ </when>
+ <when test="query.deviceType == 3">
+ AND m.camera_fun_type like '%3%'
+ </when>
+ </choose>
+ </where>
+ </select>
+
<select id="home" resultType="com.ycl.platform.domain.entity.YwPoint">
<![CDATA[
SELECT t_yw_point.id, point_name, start_time, end_time, status, unit_name AS remark
@@ -225,4 +309,5 @@
serial_number, province_tag, important_tag, important_command_image_tag, dept_tag
</select>
+
</mapper>
--
Gitblit v1.8.0