From 711221e4b28157efc1762508e73e07311aa57a1e Mon Sep 17 00:00:00 2001
From: sgj <1442489573@qq.com>
Date: 星期三, 17 十二月 2025 15:49:38 +0800
Subject: [PATCH] AI事件管理修改
---
fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/EventInfo.java | 4 +
fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo-style.css | 2
fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/EventInfoController.java | 30 ++++++
fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/common/CommonManager.java | 18 +++-
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/EventInfoService.java | 13 ++
fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo.js | 89 ++++++++++++++++-----
fzzy-igdss-web/src/main/resources/templates/security/eventInfo/eventInfo.html | 63 ++++++++++-----
7 files changed, 165 insertions(+), 54 deletions(-)
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/EventInfo.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/EventInfo.java
index 40af33b..d6b87aa 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/EventInfo.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/EventInfo.java
@@ -91,6 +91,10 @@
@TableField("complete_time")
private Date completeTime;
+ @Column(name = "tags", columnDefinition = "varchar(100) COMMENT '鏍囩'")
+ @TableField("tags")
+ private String tags ;
+
@Column(name = "remark", columnDefinition = "varchar(200) COMMENT '澶囨敞璇存槑'")
@TableField("remark")
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/EventInfoService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/EventInfoService.java
index a4980e9..c4c092e 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/EventInfoService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/EventInfoService.java
@@ -43,14 +43,23 @@
param.setCompanyId(ContextUtil.getCompanyId());
queryWrapper.eq("company_id", param.getCompanyId());
- //搴撳尯
+ //搴撳尯妫�绱�
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.apply("dept_id IN (SELECT dept_id FROM sys_dept WHERE parent_id = {0})", param.getKey());
+ }
+ //鎶撴媿鏃堕棿妫�绱�
+ if (param.getStart() != null && param.getEnd() != null) {
+ queryWrapper.between("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/EventInfoController.java b/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/EventInfoController.java
index 3faa02d..35d6269 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/EventInfoController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/sys/controller/security/EventInfoController.java
@@ -2,9 +2,11 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fzzy.igds.constant.RespCodeEnum;
+import com.fzzy.igds.constant.WarnType;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.data.PageResponse;
import com.fzzy.igds.domain.EventInfo;
+import com.fzzy.sys.manager.common.CommonManager;
import com.fzzy.sys.manager.security.EventInfoManager;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
@@ -15,6 +17,10 @@
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
@Slf4j
@Controller
@@ -25,6 +31,9 @@
@Resource
private EventInfoManager eventInfoManager;
+
+ @Resource
+ private CommonManager commonManager;
/**
* AI浜嬩欢绠$悊椤甸潰
@@ -46,6 +55,21 @@
model.addAttribute("currentPage", events.getCurrent());
model.addAttribute("totalItems", events.getTotal());
model.addAttribute("pageSize", events.getSize());
+ //璁惧鏁版嵁
+ model.addAttribute("cameraList", commonManager.listCameraData());
+ //搴撳尯鏁版嵁
+ model.addAttribute("deptList", commonManager.listDeptData());
+ //涓氬姟绫诲瀷鏁版嵁
+ List<Map<String, String>> bizTypeList = new ArrayList<>();
+ for (WarnType type : WarnType.values()) {
+ Map<String, String> item = new HashMap<>();
+ item.put("code", type.getCode());
+ item.put("msg", type.getMsg());
+ bizTypeList.add(item);
+ }
+ model.addAttribute("bizTypeList", bizTypeList);
+ //鍏徃鏁版嵁
+ model.addAttribute("companyList", commonManager.listCompanyData());
return prefix + "/eventInfo";
}
@@ -59,9 +83,9 @@
@ResponseBody
public PageResponse<Page<EventInfo>> pageData(@RequestBody IgdsBaseParam param) {
Page<EventInfo> eventInfoPage = eventInfoManager.pageData(param);
- if (null == eventInfoPage.getRecords() || eventInfoPage.getRecords().isEmpty()) {
- return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "鑾峰彇鍒版暟鎹俊鎭负绌�");
- }
+// if (null == eventInfoPage.getRecords() || eventInfoPage.getRecords().isEmpty()) {
+// return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "鑾峰彇鍒版暟鎹俊鎭负绌�");
+// }
return new PageResponse<>(RespCodeEnum.CODE_0000, eventInfoPage);
}
}
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 ec7ca40..366f99f 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
@@ -2,12 +2,10 @@
import com.fzzy.igds.constant.DepotType;
import com.fzzy.igds.domain.Camera;
+import com.fzzy.igds.domain.Company;
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.service.*;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysDictData;
@@ -44,6 +42,8 @@
@Resource
private ISysDeptService iSysDeptService;
+ @Resource
+ private CoreCompanyService coreCompanyService;
/**
* 鏍规嵁搴撳尯缂栫爜鑾峰彇搴撳尯涓嬫墍鏈変粨搴撳垪琛�
*
@@ -154,4 +154,14 @@
public List<Camera> listCameraData() {
return secCameraService.listCamera(ContextUtil.getCompanyId(),ContextUtil.subDeptId(null));
}
+
+ /**
+ * 鑾峰彇鏀跺偍鍏徃鍒楄〃
+ *
+ * @author sgj
+ * @date 2025/12/17
+ */
+ public List<Company> listCompanyData() {
+ SysUser user = ContextUtil.getLoginUser();
+ return coreCompanyService.listCompany(null, null, user.getDeptId() + ""); }
}
diff --git a/fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo-style.css b/fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo-style.css
index 268a484..f661cb2 100644
--- a/fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo-style.css
+++ b/fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo-style.css
@@ -70,7 +70,7 @@
.gallery-img {
width: 100%;
- height: 240px;
+ height: 229px;
object-fit: cover;
cursor: pointer;
transition: all 0.3s ease;
diff --git a/fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo.js b/fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo.js
index 24a1a58..1a05e30 100644
--- a/fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo.js
+++ b/fzzy-igdss-web/src/main/resources/static/security/eventInfo/eventInfo.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('eventInfo-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,6 +141,20 @@
// 鐢熸垚浜嬩欢鍗$墖
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}"
@@ -144,37 +163,25 @@
<div class="gallery-info">
<div class="gallery-header">
<h3 class="gallery-title">${record.name || 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 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>${record.serId || ''}</span>
+ <span>${getCameraName(record.serId) || record.serId || ''}</span>
</div>
<div class="meta-item" style="width: 50%">
<i class="layui-icon layui-icon-date"></i>
<span>${formatDate(record.time)}</span>
</div>
</div>
- <div class="meta-item" >
- <i class="layui-icon layui-icon-home"></i>
- <span>${record.deptId || ''}</span>
+ <div class="meta-item">
+ <i class="layui-icon layui-icon-component"></i>
+ <span>${getTypeName(record.bizType) || record.bizType || ''}</span>
</div>
-
</div>
</div>
</div>
@@ -183,6 +190,42 @@
container.innerHTML = html;
}
+
+/**
+ * 鏍规嵁鎽勫儚澶碔D鑾峰彇鎽勫儚澶村悕绉�
+ * @param {string} serId - 鎽勫儚澶碔D
+ * @returns {string|null} 鎽勫儚澶村悕绉版垨null
+ */
+function getCameraName(serId) {
+ // 纭繚cameraList瀛樺湪涓斾负鏁扮粍
+ if (typeof cameraList !== 'undefined' && Array.isArray(cameraList) && serId) {
+ // 鏌ユ壘鍖归厤鐨勬憚鍍忓ご瀵硅薄
+ var camera = cameraList.find(function(item) {
+ return item.id === serId;
+ });
+ // 杩斿洖鎽勫儚澶村悕绉帮紝濡傛灉鎵句笉鍒板垯杩斿洖null
+ return camera ? camera.name : null;
+ }
+ return null;
+}
+
+/**
+ * 鏍规嵁涓氬姟绫诲瀷缂栫爜鑾峰彇涓氬姟绫诲瀷鍚嶇О
+ * @param {string} bizType - 涓氬姟绫诲瀷缂栫爜
+ * @returns {string|null} 涓氬姟绫诲瀷鍚嶇О鎴杗ull
+ */
+function getTypeName(bizType) {
+ if (typeof bizTypeList !== 'undefined' && Array.isArray(bizTypeList) && bizType) {
+ // 鏌ユ壘鍖归厤鐨勪笟鍔$被鍨嬪璞�
+ var type = bizTypeList.find(function(item) {
+ return item.code === bizType;
+ });
+ // 杩斿洖涓氬姟绫诲瀷鍚嶇О锛屽鏋滄壘涓嶅埌鍒欒繑鍥瀗ull
+ return type ? type.msg : null;
+ }
+ return null;
+}
+
/**
* 鏍煎紡鍖栨棩鏈�
@@ -195,7 +238,7 @@
String(d.getMonth() + 1).padStart(2, '0') + '-' +
String(d.getDate()).padStart(2, '0') + ' ' +
String(d.getHours()).padStart(2, '0') + ':' +
- String(d.getMinutes()).padStart(2, '0') ;
+ String(d.getMinutes()).padStart(2, '0');
}
/**
@@ -254,7 +297,7 @@
/**
* 璇诲彇浜嬩欢璁板綍
*/
-function searchRecord(page , size) {
+function searchRecord(page, size) {
var pageNumber = 1;
var sizeNumber = 6;
if (pageSize && pageSize > 0){
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/eventInfo/eventInfo.html b/fzzy-igdss-web/src/main/resources/templates/security/eventInfo/eventInfo.html
index e939ae9..3879d24 100644
--- a/fzzy-igdss-web/src/main/resources/templates/security/eventInfo/eventInfo.html
+++ b/fzzy-igdss-web/src/main/resources/templates/security/eventInfo/eventInfo.html
@@ -6,8 +6,9 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<th:block th:include="include :: header('AI浜嬩欢绠$悊')"/>
- <link rel="stylesheet" type="text/css" th:href="@{/ajax/libs/layui-ruoyi/css/layui.css}"/>
+ <link rel="stylesheet" type="text/css" th:href="@{/ajax/libs/layui/css/layui.css}"/>
<link rel="stylesheet" th:href="@{/security/eventInfo/eventInfo-style.css}">
+ <th:block th:include="include :: select2-css" />
</head>
<body class="gray-bg">
<div class="container-div">
@@ -18,20 +19,24 @@
<div class="select-list">
<ul>
<li>
- 鏀跺偍鍏徃锛�<select name="companyId">
- <option value="all">鎵�鏈�</option>
+ 鏀跺偍鍏徃锛�<select class="form-control" name="key">
+ <option value="">鎵�鏈�</option>
+ <option th:each="company : ${companyList}" th:value="${company.id}" th:text="${company.dwmc}">
+ </option>
</select>
</li>
<li>
- 鎵�閫夊簱鍖猴細<select name="deptId">
+ 鎵�閫夊簱鍖猴細<select class="form-control" name="deptId">
<option value="">鎵�鏈�</option>
+ <option th:each="dept : ${deptList}" th:value="${dept.id}" th:text="${dept.kqmc}">
+ </option>
</select>
</li>
<li class="select-time">
<label>浜嬩欢鏃堕棿锛� </label>
- <input type="text" class="time-input" style="width: 120px;" id="start" placeholder="寮�濮嬫椂闂�" name="params[begin]"/>
+ <input type="text" class="time-input" style="width: 120px;" id="start" placeholder="寮�濮嬫椂闂�" name="start"/>
<span>-</span>
- <input type="text" class="time-input" style="width: 120px;" id="end" placeholder="缁撴潫鏃堕棿" name="params[end]"/>
+ <input type="text" class="time-input" style="width: 120px;" id="end" placeholder="缁撴潫鏃堕棿" name="end"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="searchRecord()"><i
@@ -67,17 +72,9 @@
<div class="gallery-header">
<h3 class="gallery-title" th:text="${eventInfo.name}"></h3>
<div class="gallery-tags">
- <span class="tag-person">
+ <span th:each="tag : ${#strings.arraySplit(eventInfo.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>
@@ -86,16 +83,34 @@
<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="${eventInfo.serId}"></span>
+ <th:block th:with="matchedCameras=${cameraList.?[id == #root.eventInfo.serId]}">
+ <!-- 濡傛灉鏈夊尮閰嶉」锛屾樉绀虹涓�涓尮閰嶇殑鎽勫儚澶村悕绉� -->
+ <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="${eventInfo.serId}"></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(eventInfo.time, 'yyyy-MM-dd HH:mm')}"></span>
+ <span th:text="${eventInfo.time != null ? #dates.format(eventInfo.time, 'yyyy-MM-dd HH:mm') : '鏃犳椂闂�'}"></span>
</div>
</div>
<div class="meta-item">
- <i class="layui-icon layui-icon-home"></i>
- <span th:text="${eventInfo.deptId}"></span>
+ <i class="layui-icon layui-icon-component"></i>
+ <th:block th:with="matchedTypes=${bizTypeList.?[code == #root.eventInfo.bizType]}">
+ <!-- 濡傛灉鏈夊尮閰嶉」锛屾樉绀虹涓�涓尮閰嶇殑鎽勫儚澶村悕绉� -->
+ <th:block th:if="${!#lists.isEmpty(matchedTypes)}">
+ <span th:text="${matchedTypes[0].msg}"></span>
+ </th:block>
+ <!-- 濡傛灉娌℃湁鍖归厤椤癸紝鏄剧ず鍘熷ID -->
+ <th:block th:if="${#lists.isEmpty(matchedTypes)}">
+ <span th:text="${eventInfo.bizType}"></span>
+ </th:block>
+ </th:block>
</div>
</div>
</div>
@@ -119,9 +134,15 @@
</div>
</div>
<th:block th:include="include :: footer"/>
-<script th:src="@{/ajax/libs/layui-ruoyi/layui.js}"></script>
+<script th:src="@{/ajax/libs/layui/layui.js}"></script>
+<th:block th:include="include :: select2-js" />
<script th:src="@{/security/eventInfo/eventInfo.js}"></script>
<script th:inline="javascript">
+ var cameraList = [[${cameraList}]];
+ var deptList = [[${deptList}]];
+ var bizTypeList = [[${bizTypeList}]];
+ var companyList = [[${companyList}]];
+
var currentPage = [[${currentPage}]];
var totalItems = [[${totalItems}]];
var pageSize = [[${pageSize}]];
--
Gitblit v1.9.3