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