| | |
| | | if (param.getStart() != null && param.getEnd() != null) { |
| | | queryWrapper.between("time", param.getStart(), param.getEnd()); |
| | | } |
| | | //事件名称 |
| | | if (StringUtils.isNotBlank(param.getName())) { |
| | | queryWrapper.like("name", param.getName()); |
| | | } |
| | | |
| | | queryWrapper.orderByDesc("create_time"); |
| | | |
| | |
| | | if (param.getStart() != null && param.getEnd() != null) { |
| | | queryWrapper.between("snap_time", param.getStart(), param.getEnd()); |
| | | } |
| | | //标签检索 |
| | | if (StringUtils.isNotBlank(param.getName())) { |
| | | queryWrapper.like("tags", param.getName()); |
| | | } |
| | | |
| | | queryWrapper.orderByDesc("create_time"); |
| | | |
| | |
| | | package com.fzzy.security; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.fzzy.common.manager.CommonManager; |
| | | 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.common.manager.CommonManager; |
| | | import com.fzzy.security.manager.EventInfoManager; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | |
| | | /** |
| | | * AI事件管理页面 |
| | | * |
| | | * @param model |
| | | * @author sgj |
| | | * @date 2025/12/10 |
| | | * @param model |
| | | |
| | | */ |
| | | @GetMapping |
| | | public String getEventInfo( |
| | | Model model) { |
| | | public String getEventInfo(@RequestParam(value = "viewType", required = false) String viewType, Model model) { |
| | | |
| | | IgdsBaseParam param = new IgdsBaseParam(); |
| | | param.setPage(1); |
| | |
| | | model.addAttribute("currentPage", events.getCurrent()); |
| | | model.addAttribute("totalItems", events.getTotal()); |
| | | model.addAttribute("pageSize", events.getSize()); |
| | | if (StringUtils.isEmpty(viewType)) { |
| | | // 1 安防页面 2 监管页面 |
| | | viewType = "1"; |
| | | } |
| | | //页面展示类型 |
| | | model.addAttribute("viewType", viewType); |
| | | //设备数据 |
| | | model.addAttribute("cameraList", commonManager.listCameraData()); |
| | | //库区数据 |
| | |
| | | package com.fzzy.security; |
| | | |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.fzzy.common.manager.CommonManager; |
| | | import com.fzzy.igds.constant.RespCodeEnum; |
| | | import com.fzzy.igds.data.IgdsBaseParam; |
| | | import com.fzzy.igds.data.PageResponse; |
| | | import com.fzzy.igds.domain.SnapRecord; |
| | | import com.fzzy.common.manager.CommonManager; |
| | | import com.fzzy.security.manager.SnapRecordManager; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.ui.Model; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | |
| | | * 获取智能抓拍页面 |
| | | */ |
| | | @GetMapping |
| | | public String getSnapRecord( |
| | | Model model) { |
| | | public String getSnapRecord(@RequestParam(value = "viewType", required = false) String viewType, Model model) { |
| | | |
| | | IgdsBaseParam param = new IgdsBaseParam(); |
| | | param.setPage(1); |
| | |
| | | model.addAttribute("currentPage", images.getCurrent()); |
| | | model.addAttribute("totalItems", images.getTotal()); |
| | | model.addAttribute("pageSize", images.getSize()); |
| | | if (StringUtils.isEmpty(viewType)) { |
| | | // 1 安防页面 2 监管页面 |
| | | viewType = "1"; |
| | | } |
| | | //页面展示类型 |
| | | model.addAttribute("viewType", viewType); |
| | | //设备数据 |
| | | model.addAttribute("cameraList", commonManager.listCameraData()); |
| | | //库区数据 |
| | |
| | | count: typeof totalItems !== 'undefined' ? totalItems : 0, |
| | | limit: typeof pageSize !== 'undefined' ? pageSize : 6, |
| | | curr: typeof currentPage !== 'undefined' ? currentPage : 1, |
| | | layout: ['prev', 'next'], |
| | | prev: '<i class="layui-icon layui-icon-left"></i>', |
| | | next: '<i class="layui-icon layui-icon-right"></i>', |
| | | layout: ['prev','page', '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) |
| | |
| | | count: totalCount, |
| | | limit: pageSize, |
| | | curr: currentPage, |
| | | layout: ['prev', 'next'], |
| | | prev: '<i class="layui-icon layui-icon-left"></i>', |
| | | next: '<i class="layui-icon layui-icon-right"></i>', |
| | | layout: ['prev', 'page','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) |
| | |
| | | count: typeof totalItems !== 'undefined' ? totalItems : 0, |
| | | limit: typeof pageSize !== 'undefined' ? pageSize : 6, |
| | | curr: typeof currentPage !== 'undefined' ? currentPage : 1, |
| | | layout: [ 'prev', 'next', ], |
| | | prev: '<i class="layui-icon layui-icon-left"></i>', |
| | | next: '<i class="layui-icon layui-icon-right"></i>', |
| | | layout: ['prev', 'page', '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) |
| | |
| | | count: totalCount, |
| | | limit: pageSize, |
| | | curr: currentPage, |
| | | layout: ['prev', 'next', ], |
| | | prev: '<i class="layui-icon layui-icon-left"></i>', |
| | | next: '<i class="layui-icon layui-icon-right"></i>', |
| | | layout: ['prev', 'page', '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) |
| | |
| | | </option> |
| | | </select> |
| | | </li> |
| | | <li th:if="${viewType == '1'}" style="display: flex"> |
| | | <label>事件名称:</label> |
| | | <input class="form-control" type="text" name="name" placeholder="请输入事件名称"> |
| | | </li> |
| | | <li class="select-time"> |
| | | <label>事件时间: </label> |
| | | <input type="text" class="time-input" style="width: 120px;" id="start" placeholder="开始时间" name="start"/> |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="zh" xmlns:th="http://www.thymeleaf.org" > |
| | | <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"> |
| | |
| | | <th:block th:include="include :: header('智能抓拍')"/> |
| | | <link rel="stylesheet" type="text/css" th:href="@{/ajax/libs/layui/css/layui.css}"/> |
| | | <link rel="stylesheet" th:href="@{/security/snap/snapRecord-style.css}"> |
| | | <th:block th:include="include :: select2-css" /> |
| | | <th:block th:include="include :: select2-css"/> |
| | | </head> |
| | | <body class="gray-bg"> |
| | | <div class="container-div"> |
| | |
| | | <div class="select-list"> |
| | | <ul> |
| | | <li> |
| | | 收储公司:<select class="form-control" name="key"> |
| | | 收储公司:<select class="form-control" name="key"> |
| | | <option value="">所有</option> |
| | | <option th:each="company : ${companyList}" th:value="${company.id}" th:text="${company.dwmc}"> |
| | | <option th:each="company : ${companyList}" th:value="${company.id}" |
| | | th:text="${company.dwmc}"> |
| | | </option> |
| | | </select> |
| | | </li> |
| | |
| | | </option> |
| | | </select> |
| | | </li> |
| | | <li th:if="${viewType == '1'}"> |
| | | 标签:<input type="text" name="name" placeholder="请输入标签"> |
| | | </li> |
| | | <li class="select-time"> |
| | | <label style="width: 100px">抓拍时间:</label> |
| | | <input type="text" class="time-input" style="width: 120px;" id="start" placeholder="开始时间" name="start"/> |
| | | <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="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 |
| | |
| | | |
| | | <div class="meta-item" style="width: 50%"> |
| | | <i class="layui-icon layui-icon-date"></i> |
| | | <span th:text="${snapRecord.snapTime != null ? #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>--> |
| | | <!-- <span th:text="${snapRecord.deptId}"></span>--> |
| | | <th:block th:with="matchedDept=${deptList.?[id == #root.snapRecord.deptId]}"> |
| | | <!-- 如果有匹配项,显示第一个匹配的摄像头名称 --> |
| | | <th:block th:if="${!#lists.isEmpty(matchedDept)}"> |
| | |
| | | </div> |
| | | <th:block th:include="include :: footer"/> |
| | | <script th:src="@{/ajax/libs/layui/layui.js}"></script> |
| | | <th:block th:include="include :: select2-js" /> |
| | | <th:block th:include="include :: select2-js"/> |
| | | <script th:src="@{/security/snap/snapRecord.js}"></script> |
| | | <script th:inline="javascript"> |
| | | var viewType = [[${viewType}]]; |
| | | var cameraList = [[${cameraList}]]; |
| | | var deptList = [[${deptList}]]; |
| | | var companyList = [[${companyList}]]; |