From 00135bb6a8477a574aeb6ec6c7883f5c8e770e21 Mon Sep 17 00:00:00 2001
From: sgj <1442489573@qq.com>
Date: 星期一, 15 十二月 2025 21:06:11 +0800
Subject: [PATCH] 智能抓拍修改提交

---
 fzzy-igdss-web/src/main/resources/templates/security/snap/snapRecord/snapRecord.html    |   51 ++++++++----
 fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SnapRecordController.java |    9 +
 fzzy-igdss-web/src/main/resources/static/security/snap/snapRecord.js                    |  115 ++++++++++++++++++----------
 fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/common/CommonManager.java             |   16 ++++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapRecordService.java              |   13 +++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/SnapRecord.java                      |    4 +
 6 files changed, 144 insertions(+), 64 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/SnapRecord.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/SnapRecord.java
index 75098cc..5c2eecb 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/SnapRecord.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/SnapRecord.java
@@ -43,6 +43,10 @@
     @TableField("result")
     private String result = "SUCCESS";
 
+    @Column(name = "tags", columnDefinition = "varchar(100) COMMENT '鏍囩'")
+    @TableField("tags")
+    private String tags ;
+
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @Column(name = "snap_time", columnDefinition = "datetime COMMENT '鎶撴媿鏃堕棿'")
     @TableField("snap_time")
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapRecordService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapRecordService.java
index 98eac26..2a4acd5 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapRecordService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapRecordService.java
@@ -47,6 +47,19 @@
         if (StringUtils.isNotBlank(param.getDeptId())) {
             queryWrapper.eq("dept_id", param.getDeptId());
         }
+
+        if (StringUtils.isNotBlank(param.getDepotId())) {
+            queryWrapper.eq("depot_id", param.getDepotId());
+        }
+        //鏍囩妫�绱�
+        if (StringUtils.isNotBlank(param.getKey())) {
+            queryWrapper.like("tags", param.getKey());
+        }
+        //鎶撴媿鏃堕棿妫�绱�
+        if (param.getStart() != null && param.getEnd() != null) {
+            queryWrapper.between("snap_time", param.getStart(), param.getEnd());
+        }
+
         queryWrapper.orderByDesc("create_time");
 
         return queryWrapper;
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SnapRecordController.java b/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SnapRecordController.java
index 27e195f..9c38404 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SnapRecordController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/SnapRecordController.java
@@ -5,6 +5,7 @@
 import com.fzzy.igds.data.IgdsBaseParam;
 import com.fzzy.igds.data.PageResponse;
 import com.fzzy.igds.domain.SnapRecord;
+import com.fzzy.sys.manager.common.CommonManager;
 import com.fzzy.sys.manager.security.SnapRecordManager;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
@@ -27,6 +28,9 @@
     @Resource
     private SnapRecordManager snapRecordManager;
 
+    @Resource
+    private CommonManager commonManager;
+
     /**
      * 鑾峰彇鏅鸿兘鎶撴媿椤甸潰
      */
@@ -42,6 +46,7 @@
         model.addAttribute("currentPage", images.getCurrent());
         model.addAttribute("totalItems", images.getTotal());
         model.addAttribute("pageSize", images.getSize());
+        model.addAttribute("cameraList", commonManager.listCameraData());
         return prefix + "/snapRecord";
     }
 
@@ -55,9 +60,7 @@
     @ResponseBody
     public PageResponse<Page<SnapRecord>> pageData(@RequestBody IgdsBaseParam param) {
         Page<SnapRecord> snapRecordPage = snapRecordManager.pageData(param);
-        if (null == snapRecordPage.getRecords() || snapRecordPage.getRecords().isEmpty()) {
-            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "鑾峰彇鍒版暟鎹俊鎭负绌�");
-        }
+        //            return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "鑾峰彇鍒版暟鎹俊鎭负绌�");
         return new PageResponse<>(RespCodeEnum.CODE_0000, snapRecordPage);
     }
 }
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/common/CommonManager.java b/fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/common/CommonManager.java
index 680627d..e472c5b 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/common/CommonManager.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/common/CommonManager.java
@@ -1,11 +1,13 @@
 package com.fzzy.sys.manager.common;
 
 import com.fzzy.igds.constant.DepotType;
+import com.fzzy.igds.domain.Camera;
 import com.fzzy.igds.domain.Depot;
 import com.fzzy.igds.domain.Dept;
 import com.fzzy.igds.service.CoreDeptService;
 import com.fzzy.igds.service.DepotService;
 import com.fzzy.igds.service.DicService;
+import com.fzzy.igds.service.SecCameraService;
 import com.fzzy.igds.utils.ContextUtil;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.domain.entity.SysUser;
@@ -33,6 +35,9 @@
     private DicService dicService;
     @Resource
     private CoreDeptService coreDeptService;
+
+    @Autowired
+    private SecCameraService secCameraService;
 
     @Autowired
     private ISysUserService userService;
@@ -110,4 +115,15 @@
         user.setDeptId(Long.valueOf(ContextUtil.subDeptId(null)));
         return userService.selectUserList(user);
     }
+
+
+    /**
+     * 鑾峰彇璁惧鍒楄〃
+     *
+     * @author sgj
+     * @date 2025/12/12
+     */
+    public  List<Camera>  listCameraData() {
+        return secCameraService.listCamera(ContextUtil.getCompanyId(),ContextUtil.subDeptId(null));
+    }
 }
diff --git a/fzzy-igdss-web/src/main/resources/static/security/snap/snapRecord.js b/fzzy-igdss-web/src/main/resources/static/security/snap/snapRecord.js
index 1e7983c..51c2bdb 100644
--- a/fzzy-igdss-web/src/main/resources/static/security/snap/snapRecord.js
+++ b/fzzy-igdss-web/src/main/resources/static/security/snap/snapRecord.js
@@ -24,7 +24,9 @@
         count: typeof totalItems !== 'undefined' ? totalItems : 0,
         limit: typeof pageSize !== 'undefined' ? pageSize : 6,
         curr: typeof currentPage !== 'undefined' ? currentPage : 1,
-        layout: [ 'prev', 'page', 'next', 'refresh', 'skip'],
+        layout: [ 'prev',  'next', ],
+        prev: '<i class="layui-icon layui-icon-left"></i>',
+        next: '<i class="layui-icon layui-icon-right"></i>',
         jump: function (obj, first) {
             if (!first) {
                 searchRecord(obj.curr, obj.limit)
@@ -45,7 +47,9 @@
         count: totalCount,
         limit: pageSize,
         curr: currentPage,
-        layout: ['prev', 'page', 'next', 'refresh', 'skip'],
+        layout: ['prev',  'next', ],
+        prev: '<i class="layui-icon layui-icon-left"></i>',
+        next: '<i class="layui-icon layui-icon-right"></i>',
         jump: function (obj, first) {
             if (!first) {
                 searchRecord(obj.curr, obj.limit)
@@ -94,7 +98,8 @@
     // 娣诲姞琛ㄥ崟鏌ヨ鏉′欢
     var form = document.getElementById('snapRecord-form');
     if (form) {
-        var inputs = form.querySelectorAll('input[name], select[name]');
+        // 澶勭悊鏅�氳緭鍏ユ鍜岄�夋嫨妗�
+        var inputs = form.querySelectorAll('input[name]:not([type="hidden"]), select[name]');
         inputs.forEach(function(input) {
             if (input.value) { // 鍙坊鍔犻潪绌哄��
                 params[input.name] = input.value;
@@ -136,53 +141,79 @@
     // 鐢熸垚鍥剧墖鍗$墖
     var html = '';
     records.forEach(function(record) {
+        //鏍囩灞曠ず
+        var tagsHtml = '';
+        if (record.tags) {
+            var tags = record.tags.split(',');
+            tags.forEach(function(tag) {
+                tagsHtml += `
+            <span class="tag-person">
+                <i class="layui-icon layui-icon-note"></i>
+                <span>${tag.trim()}</span>
+            </span>
+        `;
+            });
+        }
+
         html += `
-            <div class="gallery-item">
-                <img  src="${record.imgName || '/logo-sm.png'}" alt="${record.id}"
-                     data-url="${record.imgName || '/logo-sm.png'}" data-id="${record.id}"
-                     class="gallery-img" onclick="showSnapRecordPreview(this.getAttribute('data-url'))">
-                <div class="gallery-info">
-                    <div class="gallery-header">
-<!--                        <h3 class="gallery-title">${record.id}</h3>-->
-                        <div class="gallery-tags">
-                            <span class="tag-person">
-                                <i class="layui-icon layui-icon-note"></i>
-                                <span>姹借溅</span>
-                            </span>
-                            <span class="tag-person">
-                                <i class="layui-icon layui-icon-note"></i>
-                                <span>鍗¤溅</span>
-                            </span>
-                            <span class="tag-person">
-                                <i class="layui-icon layui-icon-note"></i>
-                                <span>缈绘枟杞�</span>
-                            </span>
-                        </div>
-                    </div>
-                    <div class="gallery-meta">
-                         <div style="display: flex; align-items: center; gap: 15px;width: 100%">
-                             <div class="meta-item" style="width: 50%">
-                                <i class="layui-icon layui-icon-video"></i>
-                                <span>${record.cameraId || ''}</span>
-                            </div>
-                            <div class="meta-item" style="width: 50%">
-                                <i class="layui-icon layui-icon-date"></i>
-                                <span>${formatDate(record.snapTime)}</span>
-                            </div>
-                         </div>
-                        <div class="meta-item">
-                            <i class="layui-icon layui-icon-home"></i>
-                            <span>${record.deptId || ''}</span>
-                        </div>                     
-                    </div>        
+    <div class="gallery-item">
+        <img  src="${record.imgName || '/logo-sm.png'}" alt="${record.id}"
+             data-url="${record.imgName || '/logo-sm.png'}" data-id="${record.id}"
+             class="gallery-img" onclick="showSnapRecordPreview(this.getAttribute('data-url'))">
+        <div class="gallery-info">
+            <div class="gallery-header">
+                <div class="gallery-tags">
+                    ${tagsHtml}
                 </div>
             </div>
-        `;
+            <div class="gallery-meta">
+                 <div style="display: flex; align-items: center; gap: 15px;width: 100%">
+                     <div class="meta-item" style="width: 50%">
+                        <i class="layui-icon layui-icon-video"></i>
+                        <span>${getCameraName(record.cameraId) || record.cameraId || ''}</span>
+                    </div>
+                    <div class="meta-item" style="width: 50%">
+                        <i class="layui-icon layui-icon-date"></i>
+                        <span>${formatDate(record.snapTime)}</span>
+                    </div>
+                 </div>
+<!--                
+  <div class="meta-item">
+                    <i class="layui-icon layui-icon-home"></i>
+                    <span>${record.deptId || ''}</span>
+                 </div>  
+ -->
+                                   
+            </div>        
+        </div>
+    </div>
+`;
+
     });
 
     container.innerHTML = html;
 }
 
+
+/**
+ * 鏍规嵁鎽勫儚澶碔D鑾峰彇鎽勫儚澶村悕绉�
+ * @param {string} cameraId - 鎽勫儚澶碔D
+ * @returns {string|null} 鎽勫儚澶村悕绉版垨null
+ */
+function getCameraName(cameraId) {
+    // 纭繚cameraList瀛樺湪涓斾负鏁扮粍
+    if (typeof cameraList !== 'undefined' && Array.isArray(cameraList) && cameraId) {
+        // 鏌ユ壘鍖归厤鐨勬憚鍍忓ご瀵硅薄
+        var camera = cameraList.find(function(item) {
+            return item.id === cameraId;
+        });
+        // 杩斿洖鎽勫儚澶村悕绉帮紝濡傛灉鎵句笉鍒板垯杩斿洖null
+        return camera ? camera.name : null;
+    }
+    return null;
+}
+
+
 /**
  * 鏍煎紡鍖栨棩鏈�
  * @param {string|number} date - 鏃ユ湡瀛楃涓叉垨鏃堕棿鎴�
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/snap/snapRecord/snapRecord.html b/fzzy-igdss-web/src/main/resources/templates/security/snap/snapRecord/snapRecord.html
index 28689e1..476216d 100644
--- a/fzzy-igdss-web/src/main/resources/templates/security/snap/snapRecord/snapRecord.html
+++ b/fzzy-igdss-web/src/main/resources/templates/security/snap/snapRecord/snapRecord.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<html lang="zh" xmlns:th="http://www.thymeleaf.org">
 <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
@@ -17,8 +17,14 @@
             <form id="snapRecord-form">
                 <div class="select-list">
                     <ul>
+                        <li class="select-time">
+                            <label style="width: 100px">鎶撴媿鏃堕棿锛� </label>
+                            <input type="text" class="time-input" id="start" placeholder="寮�濮嬫椂闂�" name="start"/>
+                            <span>-</span>
+                            <input type="text" class="time-input" id="end" placeholder="缁撴潫鏃堕棿" name="end"/>
+                        </li>
                         <li>
-                            鎵�灞炲簱鍖猴細<input type="text" name="deptId"/>
+                            鏍囩锛�<input type="text" name="key"/>
                         </li>
                         <li>
                             <a class="btn btn-primary btn-rounded btn-sm" onclick="searchRecord()"><i
@@ -56,17 +62,9 @@
                             <!--                            <h3 class="gallery-title" th:text="${snapRecord.id}"></h3>-->
                             <!-- 鏍囩鍒楄〃 -->
                             <div class="gallery-tags">
-                                <span class="tag-person">
+                                <span th:each="tag : ${#strings.arraySplit(snapRecord.tags, ',')}" class="tag-person">
                                     <i class="layui-icon layui-icon-note"></i>
-                                    <span>姹借溅</span>
-                                </span>
-                                <span class="tag-person">
-                                    <i class="layui-icon layui-icon-note"></i>
-                                    <span>鍗¤溅</span>
-                                </span>
-                                <span class="tag-person">
-                                    <i class="layui-icon layui-icon-note"></i>
-                                    <span>缈绘枟杞�</span>
+                                    <span th:text="${tag}"></span>
                                 </span>
                             </div>
                         </div>
@@ -75,17 +73,30 @@
                             <div style="display: flex; align-items: center; gap: 15px;width: 100%">
                                 <div class="meta-item" style="width: 50%">
                                     <i class="layui-icon layui-icon-video"></i>
-                                    <span th:text="${snapRecord.cameraId}"></span>
+                                    <!-- 浣跨敤鏍囧織鍙橀噺璁板綍鏄惁宸插尮閰� -->
+                                    <th:block th:with="matchedCameras=${cameraList.?[id == #root.snapRecord.cameraId]}">
+                                        <!-- 濡傛灉鏈夊尮閰嶉」锛屾樉绀虹涓�涓尮閰嶇殑鎽勫儚澶村悕绉� -->
+                                        <th:block th:if="${!#lists.isEmpty(matchedCameras)}">
+                                            <span th:text="${matchedCameras[0].name}"></span>
+                                        </th:block>
+                                        <!-- 濡傛灉娌℃湁鍖归厤椤癸紝鏄剧ず鍘熷ID -->
+                                        <th:block th:if="${#lists.isEmpty(matchedCameras)}">
+                                            <span th:text="${snapRecord.cameraId}"></span>
+                                        </th:block>
+                                    </th:block>
                                 </div>
+
+
+
+
                                 <div class="meta-item" style="width: 50%">
                                     <i class="layui-icon layui-icon-date"></i>
-                                    <span th:text="${#dates.format(snapRecord.snapTime, 'yyyy-MM-dd HH:mm')}"></span>
-                                </div>
+                                    <span th:text="${snapRecord.snapTime != null ? #dates.format(snapRecord.snapTime, 'yyyy-MM-dd HH:mm') : '鏃犳椂闂�'}"></span>                                </div>
                             </div>
-                            <div class="meta-item">
-                                <i class="layui-icon layui-icon-home"></i>
-                                <span th:text="${snapRecord.deptId}"></span>
-                            </div>
+                            <!--                            <div class="meta-item">-->
+                            <!--                                <i class="layui-icon layui-icon-home"></i>-->
+                            <!--                                <span th:text="${snapRecord.deptId}"></span>-->
+                            <!--                            </div>-->
                         </div>
                     </div>
                 </div>
@@ -112,9 +123,11 @@
 <script th:src="@{/ajax/libs/layui-ruoyi/layui.js}"></script>
 <script th:src="@{/security/snap/snapRecord.js}"></script>
 <script th:inline="javascript">
+    var cameraList = [[${cameraList}]];
     var currentPage = [[${currentPage}]];
     var totalItems = [[${totalItems}]];
     var pageSize = [[${pageSize}]];
+
 </script>
 
 </body>

--
Gitblit v1.9.3