From f8f64936d6181c326aa5b899d49e544c74e844ab Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 04 九月 2024 03:35:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                          |    7 
 ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java       |    2 
 ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java   |   16 +-
 ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml                    |    3 
 ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java      |  290 ++++++++++++++++++++++++++++++++++++++++--------
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java               |    5 
 ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml                          |    3 
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java                |    2 
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java |    2 
 ycl-server/src/main/java/com/ycl/platform/service/impl/ContractResultServiceImpl.java  |   10 +
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java       |    1 
 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml                           |    3 
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java         |    2 
 13 files changed, 281 insertions(+), 65 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java
index 90fc639..c96a6a5 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java
@@ -21,5 +21,7 @@
 
     private String unitName;
 
+    private Integer unitId;
+
 }
 
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java
index 09eea5f..85af2e9 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/ContractQuery.java
@@ -21,4 +21,6 @@
     @ApiModelProperty("鐘舵��")
     private String status;
 
+    private Integer unitId;
+
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
index a6c123a..1712e99 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
@@ -47,5 +47,10 @@
      * 鐘舵��
      */
     private String status;
+
+    /**
+     * 鍗曚綅id
+     */
+    private Integer unitId;
 }
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java
index eab4a39..10c8a12 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java
@@ -22,6 +22,7 @@
 import com.ycl.platform.service.ICalculateRuleService;
 import com.ycl.system.Result;
 import com.ycl.system.page.PageUtil;
+import com.ycl.utils.SecurityUtils;
 import enumeration.general.CalculateReportStatusEnum;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
@@ -124,6 +125,7 @@
     @Override
     public Result page(CalculateReportQuery query) {
         IPage<CalculateReportVO> page = PageUtil.getPage(query, CalculateReportVO.class);
+        query.setUnitId(SecurityUtils.getUnitId());
         baseMapper.page(query, page);
         page.getRecords().stream().forEach(item -> {
             if (Objects.isNull(item)) {
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractResultServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractResultServiceImpl.java
index 17c9481..3a38040 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractResultServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractResultServiceImpl.java
@@ -9,6 +9,7 @@
 import com.ycl.platform.mapper.ContractResultRecordMapper;
 import com.ycl.platform.service.IContractResultService;
 import com.ycl.utils.SecurityUtils;
+import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import utils.DateUtils;
@@ -23,11 +24,11 @@
  * @date 2024-04-01
  */
 @Service
+@RequiredArgsConstructor
 public class ContractResultServiceImpl extends ServiceImpl<ContractResultMapper, ContractResult> implements IContractResultService {
-    @Autowired
-    private ContractResultMapper checkResultMapper;
-    @Autowired
-    private ContractResultRecordMapper contractResultRecordMapper;
+
+    private final ContractResultMapper checkResultMapper;
+    private final ContractResultRecordMapper contractResultRecordMapper;
 
 
     /**
@@ -49,6 +50,7 @@
      */
     @Override
     public List<ContractResultVO> selectCheckResultList(ContractResultVO contractResult) {
+        contractResult.setUnitId(Long.valueOf(SecurityUtils.getUnitId()));
         return checkResultMapper.selectCheckResultList(contractResult);
     }
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
index 1c0ae2e..c01af46 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/ContractScoreServiceImpl.java
@@ -11,6 +11,7 @@
 import com.ycl.system.entity.SysUser;
 import com.ycl.utils.SecurityUtils;
 import enumeration.general.AuditingStatus;
+import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -28,15 +29,13 @@
  * @date 2024-04-01
  */
 @Service
+@RequiredArgsConstructor
 public class ContractScoreServiceImpl extends ServiceImpl<ContractScoreMapper, ContractScore> implements IContractScoreService {
-    @Autowired
-    private ContractScoreMapper contractScoreMapper;
-    @Autowired
-    private YwUnitMapper ywunitMapper;
-    @Autowired
-    private TContractMapper contractMapper;
-    @Autowired
-    private CalculateRuleMapper calculateRuleMapper;
+
+    private final ContractScoreMapper contractScoreMapper;
+    private final YwUnitMapper ywunitMapper;
+    private final TContractMapper contractMapper;
+    private final CalculateRuleMapper calculateRuleMapper;
 
     /**
      * 鏌ヨ鍚堝悓鎵撳垎鍒楄〃
@@ -46,6 +45,7 @@
      */
     @Override
     public List<ContractScore> selectDefaultScoreList(ContractScore contractScore) {
+        contractScore.setUnitId(Long.valueOf(SecurityUtils.getUnitId()));
         return contractScoreMapper.selectDefaultScoreList(contractScore);
     }
 
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 9038beb..0f70896 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
@@ -841,7 +841,11 @@
         long total = mongoTemplate.count(query, DataIntegrityMonitoringResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<DataIntegrityMonitoringResult> resultList = mongoTemplate.find(query, DataIntegrityMonitoringResult.class);
-        // 缁熻鏁�
+
+        // 缁熻鏁伴噺
+        MongoDatabase database = mongoTemplate.getDb();
+        MongoCollection<Document> collection = database.getCollection("hk_data_integrity_monitoring");
+
         HashMap<String, Object> map = new HashMap<>();
         map.put("count", CollectionUtils.EMPTY_COLLECTION);
         map.put("list", resultList);
@@ -883,12 +887,37 @@
         long total = mongoTemplate.count(query, VehicleDeviceInspectionResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<VehicleDeviceInspectionResult> resultList = mongoTemplate.find(query, VehicleDeviceInspectionResult.class);
-        // 缁熻鏁�
-        long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("1")), VehicleDeviceInspectionResult.class);
-        long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("2")), VehicleDeviceInspectionResult.class);
-        long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("4")), VehicleDeviceInspectionResult.class);
+
+
+        // 缁熻鏁伴噺
+        MongoDatabase database = mongoTemplate.getDb();
+        MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
+
+        Document ipErrFilter = new Document("snapResult", 1);
+        Document macdzErrFilter = new Document("snapResult", 2);
+        Document longitudeErrFilter = new Document("snapResult", 4);
+
+        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
+        List<Integer> 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());
+
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(one, two, four));
+        map.put("count", rList);
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
@@ -970,13 +999,36 @@
         long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-        // 缁熻鏁�
-        long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("1")), SnapshotDataMonitorResult.class);
-        long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("2")), SnapshotDataMonitorResult.class);
-        long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("3")), SnapshotDataMonitorResult.class);
-        long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("4")), SnapshotDataMonitorResult.class);
+
+        // 缁熻鏁伴噺
+        MongoDatabase database = mongoTemplate.getDb();
+        MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
+
+        Document normalFilter = new Document("resultType", 1);
+        Document noDataFilter = new Document("resultType", 2);
+        Document trFilter = new Document("resultType", 3);
+        Document littleFilter = new Document("resultType", 4);
+        List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter);
+        List<Integer> 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());
+
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(one, two, three, four));
+        map.put("count", rList);
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
@@ -995,13 +1047,36 @@
         long total = mongoTemplate.count(query, SnapshotDataMonitorResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<SnapshotDataMonitorResult> resultList = mongoTemplate.find(query, SnapshotDataMonitorResult.class);
-        // 缁熻鏁�
-        long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("1")), SnapshotDataMonitorResult.class);
-        long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("2")), SnapshotDataMonitorResult.class);
-        long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("3")), SnapshotDataMonitorResult.class);
-        long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("resultType").is("4")), SnapshotDataMonitorResult.class);
+
+        // 缁熻鏁伴噺
+        MongoDatabase database = mongoTemplate.getDb();
+        MongoCollection<Document> collection = database.getCollection("hk_snapshot_data_monitor");
+
+        Document normalFilter = new Document("resultType", 1);
+        Document noDataFilter = new Document("resultType", 2);
+        Document trFilter = new Document("resultType", 3);
+        Document littleFilter = new Document("resultType", 4);
+        List<Document> lists = Arrays.asList(normalFilter, noDataFilter, trFilter, littleFilter);
+        List<Integer> 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());
+
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(one, two, three, four));
+        map.put("count", rList);
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
@@ -1020,14 +1095,37 @@
         long total = mongoTemplate.count(query, MonitorQualifyResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class);
-        // 缁熻鏁�
-        long nonNetwork = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("0")), MonitorQualifyResult.class);
-        long network = mongoTemplate.count(new Query().addCriteria(Criteria.where("LWSX").is("1")), MonitorQualifyResult.class);
-        long video = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*1.*")), MonitorQualifyResult.class);
-        long car = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*2.*")), MonitorQualifyResult.class);
-        long face = mongoTemplate.count(new Query().addCriteria(Criteria.where("SXJGNLX").regex(".*3.*")), MonitorQualifyResult.class);
+
+// 缁熻鏁伴噺
+        MongoDatabase database = mongoTemplate.getDb();
+        MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify");
+
+        Document ipErrFilter = new Document("ip.error", true);
+        Document macdzErrFilter = new Document("macdz.error", true);
+        Document latitudeErrFilter = new Document("latitude.error", true);
+        Document longitudeErrFilter = new Document("longitude.error", true);
+
+        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+        List<Integer> rList = lists.stream().map(filter -> {
+            // 鏋勫缓鑱氬悎绠¢亾
+            List<Document> pipeline = Arrays.asList(
+                    new Document("$match", filter),
+                    // $group 鍘婚噸
+                    new Document("$group", new Document("_id", "$serialNumber.showValue")),
+                    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());
+
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(nonNetwork, network, video, car, face));
+        map.put("count", rList);
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
@@ -1046,13 +1144,37 @@
         long total = mongoTemplate.count(query, CrossDetailResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<CrossDetailResult> resultList = mongoTemplate.find(query, CrossDetailResult.class);
-        // 缁熻鏁�
-        long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("1")), CrossDetailResult.class);
-        long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("2")), CrossDetailResult.class);
-        long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("3")), CrossDetailResult.class);
-        long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("4")), CrossDetailResult.class);
+
+        // 缁熻鏁伴噺
+        MongoDatabase database = mongoTemplate.getDb();
+        MongoCollection<Document> collection = database.getCollection("hk_cross_detail");
+
+        Document ipErrFilter = new Document("lalType", 1);
+        Document macdzErrFilter = new Document("lalType", 2);
+        Document latitudeErrFilter = new Document("lalType", 3);
+        Document longitudeErrFilter = new Document("lalType", 4);
+
+        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+        List<Integer> 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());
+
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(one, two, three, four));
+        map.put("count", rList);
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
@@ -1066,18 +1188,42 @@
     @Override
     public Result faceImgQualification(DataCenterQuery params) {
 
-        Query query = MongoUtil.getQuery(params, "deviceId", TIME_FIELD, null);
+        Query query = MongoUtil.getQuery(params, "externalIndexCode", TIME_FIELD, null);
 
         long total = mongoTemplate.count(query, MonitoringDetailResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<MonitoringDetailResult> resultList = mongoTemplate.find(query, MonitoringDetailResult.class);
-        // 缁熻鏁�
-        long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("1")), MonitoringDetailResult.class);
-        long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("2")), MonitoringDetailResult.class);
-        long three = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("3")), MonitoringDetailResult.class);
-        long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("lalType").is("4")), MonitoringDetailResult.class);
+
+        // 缁熻鏁伴噺
+        MongoDatabase database = mongoTemplate.getDb();
+        MongoCollection<Document> collection = database.getCollection("hk_monitoring_detail");
+
+        Document ipErrFilter = new Document("lalType", 1);
+        Document macdzErrFilter = new Document("lalType", 2);
+        Document latitudeErrFilter = new Document("lalType", 3);
+        Document longitudeErrFilter = new Document("lalType", 4);
+
+        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter);
+        List<Integer> 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());
+
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(one, two, three, four));
+        map.put("count", rList);
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
@@ -1096,12 +1242,36 @@
         long total = mongoTemplate.count(query, FaceDeviceInspectionResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<FaceDeviceInspectionResult> resultList = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
-        // 缁熻鏁�
-        long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("1")), FaceDeviceInspectionResult.class);
-        long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("2")), FaceDeviceInspectionResult.class);
-        long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("4")), FaceDeviceInspectionResult.class);
+
+        // 缁熻鏁伴噺
+        MongoDatabase database = mongoTemplate.getDb();
+        MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
+
+        Document ipErrFilter = new Document("snapResult", 1);
+        Document macdzErrFilter = new Document("snapResult", 2);
+        Document longitudeErrFilter = new Document("snapResult", 4);
+
+        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
+        List<Integer> 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());
+
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(one, two, four));
+        map.put("count", rList);
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
@@ -1120,12 +1290,36 @@
         long total = mongoTemplate.count(query, FaceDeviceInspectionResult.class);
         MongoUtil.setPage(query, params, TIME_FIELD);
         List<FaceDeviceInspectionResult> resultList = mongoTemplate.find(query, FaceDeviceInspectionResult.class);
-        // 缁熻鏁�
-        long one = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("1")), FaceDeviceInspectionResult.class);
-        long two = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("2")), FaceDeviceInspectionResult.class);
-        long four = mongoTemplate.count(new Query().addCriteria(Criteria.where("snapResult").is("4")), FaceDeviceInspectionResult.class);
+
+        // 缁熻鏁伴噺
+        MongoDatabase database = mongoTemplate.getDb();
+        MongoCollection<Document> collection = database.getCollection("hk_vehicle_device_inspection");
+
+        Document ipErrFilter = new Document("snapResult", 1);
+        Document macdzErrFilter = new Document("snapResult", 2);
+        Document longitudeErrFilter = new Document("snapResult", 4);
+
+        List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, longitudeErrFilter);
+        List<Integer> 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());
+
         HashMap<String, Object> map = new HashMap<>();
-        map.put("count", Arrays.asList(one, two, four));
+        map.put("count", rList);
         map.put("list", resultList);
         return Result.ok().data(map).total(total);
     }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
index 7f6b6f0..bc872f6 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TContractServiceImpl.java
@@ -22,6 +22,7 @@
 import com.ycl.system.Result;
 import com.ycl.system.page.PageUtil;
 import com.ycl.utils.DateUtils;
+import com.ycl.utils.SecurityUtils;
 import com.ycl.utils.StringUtils;
 import enumeration.ContractStatus;
 import enumeration.general.RuleDeductCategoryEnum;
@@ -164,6 +165,7 @@
     @Override
     public Result selectAll(ContractQuery query) {
         IPage<ContractVO> page = PageUtil.getPage(query, ContractVO.class);
+        query.setUnitId(SecurityUtils.getUnitId());
         baseMapper.getPage(page, query);
         page.getRecords().stream().forEach(contract -> {
             Date now = new Date();
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index 8b4cfe0..14ddb2e 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -464,6 +464,7 @@
     @Override
     public Result page(WorkOrderQuery query) {
         IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
+        query.setUnitId(SecurityUtils.getUnitId());
         baseMapper.page(page, query);
         if (! CollectionUtils.isEmpty(page.getRecords())) {
             page.getRecords().stream().forEach(item -> {
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
index 85e8d77..2f3ec80 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
@@ -40,6 +40,9 @@
             <if test="query.unitName != null and query.unitName != '' ">
                 AND tyu.unit_name like concat('%', #{query.unitName}, '%')
             </if>
+            <if test="query.unitId != null">
+                AND tyu.id = #{query.unitId}
+            </if>
         </where>
     </select>
 
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
index 215d217..1620c03 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TContractMapper.xml
@@ -17,6 +17,9 @@
         from t_contract a
         left join t_yw_unit b on a.unit_id = b.id and b.deleted = 0
         where a.deleted = 0
+        <if test="query.unitId != null">
+            and a.unit_id = #{query.unitId}
+        </if>
         <if test="query.name != null and query.name != ''">
             and a.name like concat('%', #{query.name}, '%')
         </if>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index c52b4b0..0242e06 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -300,12 +300,9 @@
         IFNULL(SUM(IF(on_state = 2, 1, 0)), 0) AS postsPercentage,
         IFNULL(ROUND(SUM(IF(on_state = 1, 1, 0)) / count(*) * 100, 2), 0) as viewsPercentage
         FROM t_monitor m
-        left join t_yw_point p on m.serial_number = p.serial_number
-        left join sys_dept d on p.dept_id = d.dept_id
         <where>
             camera_fun_type like concat('%', #{cameraFunType}, '%')
         </where>
-        ${params.dataScope}
     </select>
 
     <select id="recoveryException" resultType="java.util.Map">
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index caddc95..fd1eae9 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -42,13 +42,16 @@
         t_work_order wo
         INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
         INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
+        INNER JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
         INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type' <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach
             collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> </if>
         LEFT JOIN t_work_order_check_img ci ON ci.work_order_no = wo.work_order_no
-        LEFT JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
         LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id AND p.deleted = 0
         WHERE
         wo.deleted = 0
+        <if test="query.unitId != null">
+            AND wo.unit_id = #{query.unitId}
+        </if>
         <if test="query.workOrderNo != null and query.workOrderNo != ''">
             AND wo.work_order_no = #{query.workOrderNo}
         </if>
@@ -87,7 +90,7 @@
                 INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
                 INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type' <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">AND da.dict_value in <foreach
                     collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach> </if>
-                LEFT JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
+                INNER JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
                 LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0
                 LEFT JOIN t_work_order_distribute_record odr ON odr.work_order_no = wo.work_order_no AND odr.deleted = 0
                 LEFT JOIN sys_user su ON su.user_id = odr.user_id

--
Gitblit v1.8.0