From 5985afa7fd58bf6b4efb3c890e41b90864da7831 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 20 八月 2024 17:17:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-pojo/src/main/java/com/ycl/platform/base/AbsQuery.java                      |    8 +-
 ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java            |    2 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java               |   42 ++++++++++++++
 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml                    |   42 ++++++++-----
 ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java |   80 ++++++++++++++++++++++++--
 5 files changed, 147 insertions(+), 27 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsQuery.java
index 09bf614..c0213c9 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/base/AbsQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/base/AbsQuery.java
@@ -13,17 +13,19 @@
 public class AbsQuery {
 
     @ApiModelProperty(value = "褰撳墠椤�", required = true)
-    private Long pageNum = 1L;
+    private Integer pageNum = 1;
 
     @ApiModelProperty(value = "姣忛〉鏉℃暟", required = true)
-    private Long pageSize = 10L;
+    private Integer pageSize = 10;
+
+    private Integer startNum;
 
     /**
      * 鑾峰彇mongo鍒嗛〉skip璺宠繃鐨勬潯鏁�
      *
      * @return
      */
-    public Long getSkipNum() {
+    public Integer getSkipNum() {
         return (pageNum - 1) * pageSize;
     }
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
index a916997..45c0ba3 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
@@ -5,6 +5,7 @@
 import com.ycl.system.entity.BaseEntity;
 import lombok.Data;
 
+import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
 
@@ -220,6 +221,47 @@
 
     private Long deptId;
     private String deptName;
+    private Integer provinceTag;
+    private String area;
+    private String error;
+    private String unitName;
+    private LocalDate mongoCreateTime;
+    /**
+     * 褰撴棩鎺ユ敹鍒扮殑褰撴棩鎶撴媿閲�
+     */
+    private Integer dataCount;
+    /**
+     * 鏃堕挓鍑嗙‘鐜�
+     */
+    private Float clockPercent;
+    /**
+     * 澶у浘鍙敤鐜�
+     */
+    private Float bigUsefulPercent;
+    /**
+     * 涓昏灞炴�т竴鑷寸巼
+     */
+    private Float majorConPercent;
+    /**
+     * 閲嶈灞炴�т竴鑷寸巼
+     */
+    private Float importantConPercent;
+    /**
+     * 浜鸿劯鍚堟牸鐜�
+     */
+    private Float faceEligPercent;
+    /**
+     * 鍏抽敭甯ф椂寤�
+     */
+    private Integer ifmDelay;
+    /**
+     * 淇′护鏃跺欢
+     */
+    private Integer sipDelay;
+    /**
+     * 瑙嗛娴佹椂寤�
+     */
+    private Integer videoDelay;
 
     /**
      * 鍔ㄦ�佸垪
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
index 2a6592c..6e66a2a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorMapper.java
@@ -124,11 +124,11 @@
     /**
      * 鏁版嵁涓績-璧勪骇绠$悊
      *
-     * @param page
      * @param query
      */
     IPage assetManagement(IPage<TMonitorVO> page, @Param("query") DataCenterQuery query);
 
+
     void deleteAll();
 
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
index 3a6d860..b91b2b4 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -2,23 +2,30 @@
 
 import annotation.DataScope;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.platform.domain.entity.TMonitor;
 import com.ycl.platform.domain.query.DashboardQuery;
 import com.ycl.platform.domain.query.DataCenterQuery;
 import com.ycl.platform.domain.query.HomeQuery;
+import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult;
+import com.ycl.platform.domain.result.HK.FaceDeviceSamplingResult;
+import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult;
+import com.ycl.platform.domain.result.HK.VehicleDeviceSamplingResult;
+import com.ycl.platform.domain.result.UY.VideoOnlineResult;
 import com.ycl.platform.domain.vo.TMonitorVO;
 import com.ycl.platform.domain.vo.screen.MonitorRateVO;
 import com.ycl.platform.domain.vo.screen.MonitorTotalVO;
 import com.ycl.platform.mapper.TMonitorMapper;
 import com.ycl.platform.service.ITMonitorService;
 import com.ycl.system.Result;
+import com.ycl.system.page.PageUtil;
 import com.ycl.system.service.ISysConfigService;
 import com.ycl.utils.StringUtils;
-import com.ycl.utils.redis.RedisCache;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
@@ -40,7 +47,7 @@
     @Autowired
     private ISysConfigService configService;
     @Autowired
-    private RedisCache redisCache;
+    private MongoTemplate mongoTemplate;
 
     /**
      * 鏌ヨ璁惧璧勪骇
@@ -62,16 +69,75 @@
      */
     @Override
     @DataScope(deptAlias = "d",userAlias = "u")
-    public List<TMonitorVO> selectTMonitorList(TMonitorVO tMonitor)
-    {
+    public List<TMonitorVO> selectTMonitorList(TMonitorVO tMonitor) {
         List<TMonitorVO> monitors = tMonitorMapper.selectTMonitorList(tMonitor);
-        if (Objects.equals(tMonitor.getRecovery(), 1)) {
+        // 寮傚父璁惧
+        if (Objects.equals(tMonitor.getRecovery(), 1L)) {
             String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time");
             if (StringUtils.isBlank(time)) {
                 throw new RuntimeException("璇烽厤缃紓甯歌澶囪繛缁叧娉ㄦ椂闂�");
             }
             List<TMonitorVO> recoveryMonitors = tMonitorMapper.selectRecoveryMonitor(time);
             monitors.addAll(recoveryMonitors);
+        }
+        // 瑙嗛鐩戞帶璁惧
+        if (Objects.equals(tMonitor.getCameraFunType(), "1")) {
+            monitors.forEach(monitor -> {
+                Query query = new Query();
+                query.addCriteria(Criteria.where("deviceId").is(monitor.getSerialNumber())
+                        // .and("mongoCreateTime").is(LocalDate.now())
+                );
+                VideoOnlineResult one = mongoTemplate.findOne(query, VideoOnlineResult.class);
+                if (one != null) {
+                    monitor.setIfmDelay(one.getIfmDelay());
+                    monitor.setSipDelay(one.getSipDelay());
+                    monitor.setVideoDelay(one.getVideoDelay());
+                    monitor.setMongoCreateTime(one.getMongoCreateTime());
+                }
+            });
+        }
+        // 杞﹁締鐩戞帶璁惧
+        if (Objects.equals(tMonitor.getCameraFunType(), "2")) {
+            monitors.forEach(monitor -> {
+                Query query = new Query();
+                query.addCriteria(Criteria.where("externalIndexCode").is(monitor.getSerialNumber())
+                        // .and("mongoCreateTime").is(LocalDate.now())
+                );
+                VehicleDeviceInspectionResult one = mongoTemplate.findOne(query, VehicleDeviceInspectionResult.class);
+                VehicleDeviceSamplingResult two = mongoTemplate.findOne(query, VehicleDeviceSamplingResult.class);
+                if (one != null) {
+                    monitor.setDataCount(one.getDataCount());
+                    monitor.setClockPercent(Objects.nonNull(one.getSnapClock()) ? one.getSnapClock().getClockPercent() : null);
+                    monitor.setMongoCreateTime(one.getMongoCreateTime());
+                }
+                if (two != null) {
+                    monitor.setBigUsefulPercent(Objects.nonNull(two.getBigUseful()) ? two.getBigUseful().getBigUsefulPercent() : null);
+                    monitor.setMajorConPercent(Objects.nonNull(two.getVehDiff()) ? two.getVehDiff().getMajorConPercent() : null);
+                    monitor.setImportantConPercent(Objects.nonNull(two.getVehDiff()) ? two.getVehDiff().getImportantConPercent() : null);
+                    monitor.setMongoCreateTime(two.getMongoCreateTime());
+                }
+            });
+        }
+        // 浜鸿劯鐩戞帶璁惧
+        if (Objects.equals(tMonitor.getCameraFunType(), "3")) {
+            monitors.forEach(monitor -> {
+                Query query = new Query();
+                query.addCriteria(Criteria.where("externalIndexCode").is(monitor.getSerialNumber())
+                        // .and("mongoCreateTime").is(LocalDate.now())
+                );
+                FaceDeviceInspectionResult one = mongoTemplate.findOne(query, FaceDeviceInspectionResult.class);
+                FaceDeviceSamplingResult two = mongoTemplate.findOne(query, FaceDeviceSamplingResult.class);
+                if (one != null) {
+                    monitor.setDataCount(one.getDataCount());
+                    monitor.setClockPercent(Objects.nonNull(one.getSnapClock()) ? one.getSnapClock().getClockPercent() : null);
+                    monitor.setMongoCreateTime(one.getMongoCreateTime());
+                }
+                if (two != null) {
+                    monitor.setBigUsefulPercent(Objects.nonNull(two.getBigUseful())? two.getBigUseful().getBigUsefulPercent() : null);
+                    monitor.setFaceEligPercent(Objects.nonNull(two.getFaceEligibility()) ? two.getFaceEligibility().getFaceEligPercent() : null);
+                    monitor.setMongoCreateTime(two.getMongoCreateTime());
+                }
+            });
         }
         return monitors;
     }
@@ -168,7 +234,7 @@
 
     @Override
     public Result assetManagement(DataCenterQuery query) {
-        IPage<TMonitorVO> page = new Page<>(query.getPageNum(), query.getPageSize());
+        IPage<TMonitorVO> page = PageUtil.getPage(query, TMonitorVO.class);
         baseMapper.assetManagement(page, query);
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index 8c11119..62aac3b 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -89,12 +89,12 @@
 
     <select id="selectTMonitorList" resultType="com.ycl.platform.domain.vo.TMonitorVO">
         select m.id, m.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude,
-        camera_capture_area, on_state, civil_code, integrated_device, camera_brand, address, net_working,
-        public_security, installed_time, management_unit, mu_contact_info, storage_days
-        , monitor_azimuth, scene_photo_addr, model, site_vulgo, camera_type, camera_light_type, encoded_format,
-        camera_dept, hybm, lxbm,d.dept_id, d.dept_name 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
+        camera_capture_area, on_state, civil_code, d.dept_id, d.dept_name, d.area, p.province_tag,
+        IF(COUNT(w.id) OVER() > 0, '鏄�', '鍚�') AS error, u.unit_name from t_monitor m
+        left join t_yw_point p on m.serial_number = p.serial_number and p.deleted = 0
+        left join sys_dept d on p.dept_id = d.dept_id and d.del_flag = 0
+        left join t_work_order w on m.serial_number = w.serial_number and w.deleted = 0
+        left join t_yw_unit u on p.unit_id = u.id and u.deleted = 0
         <where>
             <if test="serialNumber != null  and serialNumber != ''">and m.serial_number = #{serialNumber}</if>
             <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
@@ -488,23 +488,29 @@
                tm.camera_dept,
                tm.hybm,
                tm.lxbm,
-               dc.prop_name,
-               dc.label_value,
-               dcv.column_value
+               't_monitor' as tableName,
+               #{query.keyword} as keyword
         FROM
             t_monitor tm
-                LEFT JOIN t_dynamic_column_value dcv ON tm.id = dcv.ref_id
-                LEFT JOIN t_dynamic_column dc ON dc.id = dcv.dynamic_column_id AND dc.table_name = #{query.tableName}
         <where>
             <if test="query.keyword != null and query.keyword != ''">
-                AND (tm.name like concat('%', #{query.keyword}, '%') OR dcv.column_value like concat('%', #{query.keyword}, '%'))
+                AND tm.name like concat('%', #{query.keyword}, '%')
             </if>
         </where>
     </select>
 
-    <delete id="deleteAll">
-        delete from t_monitor
-    </delete>
+    <select id="getDyColumns" resultMap="dynamicColumnMap">
+        SELECT
+               *
+        FROM
+             t_dynamic_column_value dcv
+                 LEFT JOIN t_dynamic_column dc ON dc.id = dcv.dynamic_column_id AND dc.table_name = #{tableName}
+        WHERE
+            dcv.ref_id = #{id}
+            <if test="keyword != null and keyword != ''">
+                and dcv.column_value like concat('%', #{keyword}, '%')
+            </if>
+    </select>
 
     <resultMap id="dyMap" type="com.ycl.platform.domain.vo.TMonitorVO">
         <id column="id" property="id"/>
@@ -537,7 +543,7 @@
         <result column="camera_dept" property="cameraDept"/>
         <result column="hybm" property="hybm"/>
         <result column="lxbm" property="lxbm"/>
-        <collection property="dynamicColumnList" ofType="com.ycl.platform.domain.vo.DynamicColumnVO" resultMap="dynamicColumnMap"/>
+        <collection property="dynamicColumnList" select="getDyColumns" column="{id=id,tableName=tableName,keyword=keyword}" ofType="com.ycl.platform.domain.vo.DynamicColumnVO"/>
     </resultMap>
 
     <resultMap id="dynamicColumnMap" type="com.ycl.platform.domain.vo.DynamicColumnVO">
@@ -546,4 +552,8 @@
         <result column="column_value" property="columnValue"/>
     </resultMap>
 
+
+    <delete id="deleteAll">
+        delete from t_monitor
+    </delete>
 </mapper>

--
Gitblit v1.8.0