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