From 0c8d20900c14651cb50180ade4ccd0e2074796b4 Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期三, 07 一月 2026 18:38:01 +0800
Subject: [PATCH] 质押监管接口解析

---
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/ApiV1Resp.java           |   59 +++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GatewaySerService.java       |   61 +--
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/EventInfoService.java        |   20 +
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/ApiV1Controller.java          |   97 +++++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapConfService.java         |   39 +-
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java             |  117 ++++--
 fzzy-igdss-web/src/main/java/com/fzzy/security/SnapRecordController.java         |    2 
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3020.java |   44 ++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/Base64Util.java                |   88 +++++
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/ApiV1Req.java            |   26 +
 fzzy-igdss-web/src/main/java/com/fzzy/security/EventInfoController.java          |    2 
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapRecordService.java       |   18 
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/util/ApiV1Constant.java       |   30 +
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3031.java           |   26 +
 fzzy-igdss-web/src/main/java/com/fzzy/grain/manager/GrainExportBuilder.java      |    4 
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3031.java |   95 +++++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/GatewaySer.java               |   17 
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3021.java |   44 ++
 fzzy-igdss-web/src/main/java/com/fzzy/common/manager/ExportManager.java          |    4 
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3030.java           |   21 +
 /dev/null                                                                        |    4 
 fzzy-igdss-web/src/main/resources/templates/security/snapRecord.html             |    0 
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3030.java |   84 ++++
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java        |   25 +
 fzzy-igdss-web/src/main/resources/templates/security/eventInfo.html              |    0 
 fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3010.java |   58 +++
 26 files changed, 864 insertions(+), 121 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/GatewaySer.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/GatewaySer.java
index a624e5c..fe0c363 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/GatewaySer.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/domain/GatewaySer.java
@@ -2,14 +2,15 @@
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fzzy.igds.constant.Constant;
+import com.ruoyi.common.annotation.Excel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+
+import javax.persistence.*;
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * @Description 缃戝叧閰嶇疆
@@ -29,7 +30,7 @@
     private static final long serialVersionUID = 1L;
 
     @Id
-    @Column(name = "id", columnDefinition = "varchar(40) COMMENT '缃戝叧ID'")
+    @Column(name = "id", columnDefinition = "varchar(40) COMMENT '缃戝叧ID,鍚孲N'")
     @TableField("id")
     private String id;
 
@@ -81,4 +82,10 @@
     @TableField("remark")
     private String remark;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @Column(name = "heartbeat_time", columnDefinition = "DATETIME COMMENT '蹇冭烦鏃堕棿'")
+    @Temporal(TemporalType.TIMESTAMP)
+    @TableField("heartbeat_time")
+    private Date heartbeatTime;
+
 }
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 296e8b1..a5f6be8 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
@@ -5,6 +5,7 @@
 import com.fzzy.igds.data.BaseResp;
 import com.fzzy.igds.data.IgdsBaseParam;
 import com.fzzy.igds.domain.EventInfo;
+import com.fzzy.igds.domain.SnapRecord;
 import com.fzzy.igds.mapper.EventInfoMapper;
 import com.fzzy.igds.utils.ContextUtil;
 import com.fzzy.igds.utils.DateUtil;
@@ -101,4 +102,23 @@
         return eventInfoMapper.selectList(queryWrapper);
     }
 
+    /**
+     * 鎸佷箙鍖栦繚瀛�
+     * @param info
+     */
+    public void addData(EventInfo info) {
+        if(StringUtils.isBlank(info.getId())){
+            info.setId(ContextUtil.generateId());
+        }
+        if(StringUtils.isBlank(info.getCompanyId())){
+            info.setCompanyId(ContextUtil.getCompanyId());
+        }
+
+        info.setUpdateBy(ContextUtil.getLoginUserName());
+        info.setUpdateTime(new Date());
+        info.setCreateBy(ContextUtil.getLoginUserName());
+        info.setCreateTime(new Date());
+        eventInfoMapper.insert(info);
+    }
+
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
index 7ed02f2..5c3c073 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fzzy.igds.domain.FileInfo;
 import com.fzzy.igds.mapper.FileMapper;
+import com.fzzy.igds.utils.Base64Util;
 import com.fzzy.igds.utils.ContextUtil;
 import com.ruoyi.common.config.FrameworkConfig;
 import org.apache.commons.lang3.time.DateFormatUtils;
@@ -98,15 +99,7 @@
     }
 
     /**
-     *
-     * @param id
-     */
-    public void delFile(String id) {
-        fileMapper.deleteById(id);
-    }
-
-    /**
-     * 鑾峰彇鍑哄叆搴撴枃浠惰矾寰�
+     * 鏍规嵁绫诲瀷鑾峰彇鏂囦欢璺緞
      * @param pathTag
      * @return
      */
@@ -114,19 +107,51 @@
         if(StringUtils.isBlank(pathTag)){
             pathTag = "COMMON";
         }
+        if("EVENT".equals(pathTag)) return getEventFilePath();
+        if("SNAP".equals(pathTag)) return getSnapFilePath();
         if("INOUT".equals(pathTag)) return getInoutFilePath();
         if("PATROL".equals(pathTag)) return getPatrolFilePath();
         if("DEPT".equals(pathTag)) return getDeptFilePath();
+        if("TEMP".equals(pathTag)) return getTempFilePath();
+        if("CONF".equals(pathTag)) return getConfPath();
+        if("TEMPLATE".equals(pathTag)) return getTemplateFilePath();
+        if("WORD".equals(pathTag)) return getWordPath();
 
         return getCommonFilePath();
     }
 
     /**
-     * 鑾峰彇鍑哄叆搴撴枃浠惰矾寰�
+     * 鑾峰彇浜嬩欢鏂囦欢璺緞
+     * @return
+     */
+    public String getEventFilePath() {
+        String basePath = FrameworkConfig.getProfile() + "EVENT/" + DateFormatUtils.format(new Date(), "yyyyMM") + "/";
+        File file = new File(basePath);
+        if (!file.exists()) {
+            file.mkdirs();
+        }
+        return basePath;
+    }
+
+    /**
+     * 鑾峰彇鎶撴媿鏂囦欢璺緞
+     * @return
+     */
+    public String getSnapFilePath() {
+        String basePath = FrameworkConfig.getProfile() + "SNAP/" + DateFormatUtils.format(new Date(), "yyyyMM") + "/";
+        File file = new File(basePath);
+        if (!file.exists()) {
+            file.mkdirs();
+        }
+        return basePath;
+    }
+
+    /**
+     * 鑾峰彇宸℃鏂囦欢璺緞
      * @return
      */
     public String getPatrolFilePath() {
-        String basePath = FrameworkConfig.getProfile() + "INOUT/" + DateFormatUtils.format(new Date(), "yyyyMM") + "/";
+        String basePath = FrameworkConfig.getProfile() + "PATROL/" + DateFormatUtils.format(new Date(), "yyyyMM") + "/";
         File file = new File(basePath);
         if (!file.exists()) {
             file.mkdirs();
@@ -179,15 +204,11 @@
 
     /**
      * 鑾峰彇涓存椂璺緞
-     * @param companyId
      * @return
      */
-    public String getTempFilePath(String companyId) {
+    public String getTempFilePath() {
 
         String basePath = FrameworkConfig.getProfile() + "TEMP/";
-        if (org.apache.commons.lang3.StringUtils.isNotEmpty(companyId)) {
-            basePath += companyId + "/";
-        }
         File file = new File(basePath);
         if (!file.exists()) {
             file.mkdirs();
@@ -207,6 +228,42 @@
             file.mkdirs();
         }
         return basePath;
+    }
+
+    /**
+     * 鑾峰彇妯℃澘璺緞锛氭墍鏈夋ā鏉跨粺涓�鏀惧湪TEMPLATE/鐩綍涓�
+     * @return
+     */
+    public String getTemplateFilePath() {
+        String basePath = FrameworkConfig.getProfile() + "TEMPLATE/";
+        File file = new File(basePath);
+        if (!file.exists()) {
+            file.mkdirs();
+        }
+        return basePath;
+    }
+
+    /**
+     * 鑾峰彇word璺緞
+     * @return
+     */
+    public String getWordPath() {
+
+        String basePath = FrameworkConfig.getProfile()  + "WORD/";
+        File file = new File(basePath);
+        if (!file.exists()) {
+            file.mkdirs();
+        }
+        return basePath;
+    }
+
+    /**
+     * base64杞浘鐗囦繚瀛�
+     * @param filePath
+     * @param imgData
+     */
+    public void baseImg2Disk(String filePath, String imgData) {
+        Base64Util.generateImage(imgData, filePath);
     }
 
     /**
@@ -252,33 +309,5 @@
         return path;
     }
 
-    /**
-     * 鑾峰彇妯℃澘璺緞锛氭墍鏈夋ā鏉跨粺涓�鏀惧湪TEMPLATE/鐩綍涓�
-     * @return
-     */
-    public String getTemplateFilePath() {
-        String basePath = FrameworkConfig.getProfile() + "TEMPLATE/";
-        File file = new File(basePath);
-        if (!file.exists()) {
-            file.mkdirs();
-        }
-        return basePath;
-    }
 
-    /**
-     * 鑾峰彇word璺緞
-     * @param deptId
-     * @return
-     */
-    public String getWordPath(String deptId) {
-        if(StringUtils.isBlank(deptId)){
-            deptId = "0000";
-        }
-        String basePath = FrameworkConfig.getProfile() + deptId + "/WORD/";
-        File file = new File(basePath);
-        if (!file.exists()) {
-            file.mkdirs();
-        }
-        return basePath;
-    }
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GatewaySerService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GatewaySerService.java
index 0c67c5d..d39fea2 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GatewaySerService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/GatewaySerService.java
@@ -12,6 +12,7 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysDeptService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.util.*;
@@ -102,19 +103,40 @@
         if (StringUtils.isEmpty(ser.getDeptId())) {
             ser.setDeptId(ContextUtil.subDeptId(null));
         }
-        if (StringUtils.isBlank(ser.getUpdateBy())) {
+
+        ser.setUpdateBy(ContextUtil.getLoginUserName());
+        ser.setUpdateTime(new Date());
+        if (StringUtils.isBlank(ser.getCreateBy())) {
+            ser.setHeartbeatTime(new Date());
             ser.setCreateBy(ContextUtil.getLoginUserName());
             ser.setCreateTime(new Date());
-            ser.setUpdateBy(ContextUtil.getLoginUserName());
-            ser.setUpdateTime(new Date());
             gatewaySerMapper.insert(ser);
         } else {
-            ser.setUpdateBy(ContextUtil.getLoginUserName());
-            ser.setUpdateTime(new Date());
             gatewaySerMapper.updateById(ser);
         }
 
         refreshCache(ser.getCompanyId());
+    }
+
+    /**
+     * 寮傛鏇存柊缃戝叧鐘舵��
+     * @param ser  淇℃伅
+     * @param status  鐘舵��
+     * @param isUpdateTime  鏄惁鏇存柊蹇冭烦鏃堕棿
+     */
+    @Async
+    public void updateStatus(GatewaySer ser, String status, boolean isUpdateTime) {
+
+        if(isUpdateTime){
+            //蹇冭烦鏃堕棿
+            ser.setHeartbeatTime(new Date());
+        }
+
+        ser.setUpdateTime(new Date());
+        ser.setStatus(status);
+        gatewaySerMapper.updateById(ser);
+
+        setCacheSer(ser);
     }
 
     /**
@@ -128,34 +150,6 @@
         //鍒犻櫎缂撳瓨
         delCache(ser);
 
-    }
-
-    /**
-     * 鏍规嵁鍒嗘満ID鑾峰彇鍒嗘満淇℃伅
-     *
-     * @param companyId
-     * @param deptId
-     * @return
-     */
-    public List<GatewaySer> getCacheSerByDeptId(String companyId, String deptId) {
-        if (StringUtils.isEmpty(deptId)) {
-            return null;
-        }
-        if (StringUtils.isEmpty(companyId)) {
-            companyId = ContextUtil.getCompanyId();
-        }
-        String patten = RedisConst.buildKey(companyId, RedisConst.KEY_DEVICE_SER_LIST, deptId) + "*";
-        Collection<String> keys = redisCache.keys(patten);
-        if (null == keys) {
-            return null;
-        }
-
-        List<GatewaySer> list = new ArrayList<>();
-        for (String key : keys) {
-            list.add((GatewaySer) redisCache.getCacheObject(key));
-        }
-
-        return list;
     }
 
     /**
@@ -178,7 +172,6 @@
             return null;
         }
 
-        List<GatewaySer> list = new ArrayList<>();
         GatewaySer ser = null;
         for (String key : keys) {
             ser = (GatewaySer) redisCache.getCacheObject(key);
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java
index ae72ad5..cfb1b9c 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SecCameraService.java
@@ -6,6 +6,7 @@
 import com.fzzy.igds.domain.Camera;
 import com.fzzy.igds.mapper.CameraMapper;
 import com.fzzy.igds.utils.ContextUtil;
+import com.fzzy.igds.utils.DateUtil;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -73,6 +74,30 @@
     }
 
     /**
+     * 鑾峰彇鏇存柊鐩戞帶鏁伴噺
+     * @param deptId
+     * @param start
+     * @param end
+     * @return
+     */
+    public int getUpdateCount(String deptId, Date start, Date end) {
+
+        QueryWrapper<Camera> queryWrapper = new QueryWrapper<>();
+
+        if(StringUtils.isNotBlank(deptId)){
+            queryWrapper.eq("dept_id", deptId);
+        }
+        if (null != start) {
+            queryWrapper.ge("update_time", start);
+        }
+        if (null != end) {
+            queryWrapper.le("update_time", end);
+        }
+
+        return cameraMapper.selectCount(queryWrapper);
+    }
+
+    /**
      * 淇濆瓨鏁版嵁
      * @param data
      */
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapConfService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapConfService.java
index 2447654..ac7a622 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapConfService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SnapConfService.java
@@ -2,15 +2,12 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fzzy.igds.data.BaseResp;
-import com.fzzy.igds.data.IgdsBaseParam;
 import com.fzzy.igds.domain.SnapConf;
 import com.fzzy.igds.mapper.SnapConfMapper;
 import com.fzzy.igds.utils.ContextUtil;
-import com.ruoyi.common.core.text.Convert;
 import com.ruoyi.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
-
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
@@ -39,13 +36,26 @@
     }
 
     /**
-     * 鏍规嵁ID鏌ヨ璇︽儏
-     *
-     * @param id 涓婚敭ID
-     * @return 瀹炰綋瀵硅薄
+     * 鑾峰彇鏇存柊閰嶇疆鏁伴噺
+     * @param deptId
+     * @param start
+     * @param end
+     * @return
      */
-    public SnapConf selectById(String id) {
-        return snapConfMapper.selectById(id);
+    public int getUpdateCount(String deptId, Date start, Date end) {
+
+        QueryWrapper<SnapConf> queryWrapper = new QueryWrapper<>();
+
+        if(StringUtils.isNotBlank(deptId)){
+            queryWrapper.eq("dept_id", deptId);
+        }
+        if (null != start) {
+            queryWrapper.ge("update_time", start);
+        }
+        if (null != end) {
+            queryWrapper.le("update_time", end);
+        }
+        return snapConfMapper.selectCount(queryWrapper);
     }
 
     /**
@@ -87,17 +97,6 @@
             return BaseResp.error("鏇存柊澶辫触锛�" + e.getMessage());
         }
     }
-
-    /**
-     * 鍒犻櫎鎸囧畾ID鐨勬暟鎹�
-     *
-     * @param param 瑕佸垹闄ょ殑璁板綍
-     * @return 鎿嶄綔缁撴灉
-     */
-    public BaseResp deleteData(SnapConf param) {
-        return snapConfMapper.deleteById(param) > 0 ? BaseResp.success() : BaseResp.error("鍒犻櫎澶辫触");
-    }
-
 
     /**
      * 鏇存柊鎵ц鏃堕棿
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 73b5df0..507d246 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
@@ -97,20 +97,22 @@
     }
 
     /**
-     * 鏂板鏁版嵁
-     *
+     * 鎸佷箙鍖栦繚瀛�
      * @param snapRecord
-     * @author sgj
-     * @date 2025/12/10
      */
-    public BaseResp addData(SnapRecord snapRecord) {
-        snapRecord.setId(ContextUtil.generateId());
-        snapRecord.setCompanyId(ContextUtil.getCompanyId());
+    public void addData(SnapRecord snapRecord) {
+        if(StringUtils.isBlank(snapRecord.getId())){
+            snapRecord.setId(ContextUtil.generateId());
+        }
+        if(StringUtils.isBlank(snapRecord.getCompanyId())){
+            snapRecord.setCompanyId(ContextUtil.getCompanyId());
+        }
+
         snapRecord.setUpdateBy(ContextUtil.getLoginUserName());
         snapRecord.setUpdateTime(new Date());
         snapRecord.setCreateBy(ContextUtil.getLoginUserName());
         snapRecord.setCreateTime(new Date());
-        return snapRecordMapper.insert(snapRecord) > 0 ? BaseResp.success() : BaseResp.error("娣诲姞澶辫触");
+        snapRecordMapper.insert(snapRecord);
     }
 
     /**
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/Base64Util.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/Base64Util.java
new file mode 100644
index 0000000..47f7052
--- /dev/null
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/utils/Base64Util.java
@@ -0,0 +1,88 @@
+package com.fzzy.igds.utils;
+
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+import java.io.*;
+
+/**
+ * @Description 鍥剧墖Base澶勭悊
+ * @Author CZT
+ * @Date 2026/1/7 11:07
+ */
+public class Base64Util {
+
+	public static String BASE_IMG_START = "data:image/jpg;base64,";
+
+	/**
+	 * 鏍规嵁鍦板潃锛屾妸鍥剧墖杞崲涓築ase64瀛楃涓�
+	 * <p>
+	 * data:image/jpg;base64,
+	 *
+	 * @param diskFile
+	 * @return
+	 */
+	public static String getImageStr(String diskFile) {
+		InputStream in = null;
+		byte[] data = null;
+		// 璇诲彇鍥剧墖瀛楄妭鏁扮粍
+		try {
+			in = new FileInputStream(diskFile);
+			data = new byte[in.available()];
+			in.read(data);
+			// in.close();
+		} catch (IOException e) {
+			e.printStackTrace();
+		} finally {
+			try {
+				if (null != in)
+					in.close();
+			} catch (Exception e) {
+			}
+		}
+		BASE64Encoder encoder = new BASE64Encoder();
+		return BASE_IMG_START + encoder.encode(data);
+	}
+
+	/**
+	 * 瀵瑰瓧鑺傛暟缁勫瓧绗︿覆杩涜Base64瑙g爜骞剁敓鎴愬浘鐗�
+	 *
+	 * @param imgStr
+	 * @return
+	 */
+	public static boolean generateImage(String imgStr, String diskFile) {
+		if (imgStr == null)
+			return false;
+
+		if (imgStr.startsWith("data:")) {
+			imgStr = imgStr.substring(BASE_IMG_START.length());
+		}
+		BASE64Decoder decoder = new BASE64Decoder();
+		OutputStream out = null;
+		try {
+			// Base64瑙g爜
+			byte[] b = decoder.decodeBuffer(imgStr);
+			for (int i = 0; i < b.length; ++i) {
+				if (b[i] < 0) {
+					b[i] += 256;
+				}
+			}
+			// 鐢熸垚jpeg鍥剧墖
+			out = new FileOutputStream(diskFile);
+			out.write(b);
+			out.flush();
+			// out.close();
+			return true;
+		} catch (Exception e) {
+			return false;
+		} finally {
+			try {
+				if (null != out)
+					out.close();
+			} catch (Exception e) {
+
+			}
+		}
+	}
+
+}
\ No newline at end of file
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/ApiV1Controller.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/ApiV1Controller.java
new file mode 100644
index 0000000..9309e97
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/ApiV1Controller.java
@@ -0,0 +1,97 @@
+package com.fzzy.igds.api.v1;
+
+import com.fzzy.igds.api.v1.data.ApiV1Req;
+import com.fzzy.igds.api.v1.data.ApiV1Resp;
+import com.fzzy.igds.api.v1.service.*;
+import com.fzzy.igds.api.v1.util.ApiV1Constant;
+import com.fzzy.igds.constant.Constant;
+import com.fzzy.igds.domain.GatewaySer;
+import com.fzzy.igds.service.GatewaySerService;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+
+/**
+ * @Description 鐩戠鎺ュ彛瑙f瀽鍏ュ彛
+ * @Author CZT
+ * @Date 2026/1/7 10:25
+ */
+@Slf4j
+@Controller
+@RequestMapping("api/igdss/v1")
+public class ApiV1Controller {
+
+    @Resource
+    private GatewaySerService gatewaySerService;
+    @Resource
+    private ApiV1Service3010 apiV1Service3010;
+    @Resource
+    private ApiV1Service3020 apiV1Service3020;
+    @Resource
+    private ApiV1Service3021 apiV1Service3021;
+    @Resource
+    private ApiV1Service3030 apiV1Service3030;
+    @Resource
+    private ApiV1Service3031 apiV1Service3031;
+
+
+    @PostMapping
+    @ResponseBody
+    public ApiV1Resp<Object> gateway(@RequestBody ApiV1Req<JSONObject> req) {
+
+        log.info("璐ㄦ娂鐩戠鎺ュ彛V1锛屾敹鍒板簱鍖虹綉鍏充俊鎭�={}", req);
+        try {
+
+            //鍙傛暟鏍¢獙
+            if (req == null) {
+                return ApiV1Resp.error("鍙傛暟鏈夎锛�", req);
+            }
+
+            //鏍¢獙鎺ュ彛缂栫爜鍜岀綉鍏砈N
+            if (StringUtils.isEmpty(req.getFunctionId()) || StringUtils.isEmpty(req.getSn())) {
+                return ApiV1Resp.error("鍙傛暟鏈夎锛�", req);
+            }
+
+            //鏍¢獙缃戝叧鏄惁瀛樺湪
+            GatewaySer gatewaySer = gatewaySerService.getCacheSerById(null, req.getSn());
+            if (null == gatewaySer) {
+                return ApiV1Resp.error("褰撳墠缃戝叧<SN=" + req.getSn() + ">鏆傛湭娣诲姞锛岃鏍告煡锛�", req);
+            }
+
+            //寮傛鏇存柊缃戝叧鐘舵��
+            gatewaySerService.updateStatus(gatewaySer, Constant.YN_Y, ApiV1Constant.API_FUNCTION_3010.equals(req.getFunctionId()));
+
+            //瑙f瀽
+            String functionId = req.getFunctionId();
+            switch (functionId) {
+                case ApiV1Constant.API_FUNCTION_3010:
+                    return apiV1Service3010.analysis(req, gatewaySer);
+                case ApiV1Constant.API_FUNCTION_3020:
+                    return apiV1Service3020.analysis(req, gatewaySer);
+                case ApiV1Constant.API_FUNCTION_3021:
+                    return apiV1Service3021.analysis(req, gatewaySer);
+                case ApiV1Constant.API_FUNCTION_3030:
+                    return apiV1Service3030.analysis(req, gatewaySer);
+                case ApiV1Constant.API_FUNCTION_3031:
+                    return apiV1Service3031.analysis(req, gatewaySer);
+            }
+
+            return ApiV1Resp.error("鎺ュ彛缂栫爜<" + functionId + ">涓嶅瓨鍦紝璇锋牳鏌ワ紒", req);
+
+        } catch (Exception e) {
+
+            log.info("璐ㄦ娂鐩戠鎺ュ彛V1锛屾帴鍙hВ鏋愬紓甯�={}", e.toString());
+
+            return ApiV1Resp.error("瑙f瀽寮傚父锛�", req);
+        }
+
+    }
+
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/ApiV1Req.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/ApiV1Req.java
new file mode 100644
index 0000000..a22e8f1
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/ApiV1Req.java
@@ -0,0 +1,26 @@
+package com.fzzy.igds.api.v1.data;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description   鎺ュ彛璇锋眰灏佽绫�
+ * @Author CZT
+ * @Date 2026/1/7 9:59
+ */
+@Data
+public class ApiV1Req<T> implements Serializable {
+
+    /*-----娑堟伅澶�-----*/
+    private String sn;         //璁惧銆佺郴缁熺紪鐮�
+    private String auth;       //鏉冮檺鏍囪瘑
+    private String sign;       //鏉冮檺绛惧悕
+    private String outId;      //鑷畾涔夌紪鐮�
+    private String functionId; //鍔熻兘鐮�
+    private Long timestamp;    //鏃堕棿鎴�
+
+    /*-----娑堟伅浣�-----*/
+    private T data;
+
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/ApiV1Resp.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/ApiV1Resp.java
new file mode 100644
index 0000000..c607b6a
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/ApiV1Resp.java
@@ -0,0 +1,59 @@
+package com.fzzy.igds.api.v1.data;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * @Description 鎺ュ彛鍥炲灏佽绫�
+ * @Author CZT
+ * @Date 2026/1/7 10:02
+ */
+@Data
+public class ApiV1Resp<T> implements Serializable {
+
+    /**
+     * 杩斿洖鐮�
+     */
+    public static final String CODE_SUCCESS = "200";
+    public static final String CODE_ERROR = "400";
+
+    /*-----娑堟伅澶�-----*/
+    private String sn;         //璁惧銆佺郴缁熺紪鐮�
+    private String auth;       //鏉冮檺鏍囪瘑
+    private String sign;       //鏉冮檺绛惧悕
+    private String outId;      //鑷畾涔夌紪鐮�
+    private String functionId; //鍔熻兘鐮�
+    private Long timestamp;    //鏃堕棿鎴�
+    private String respCode;     //杩斿洖鐮�
+    private String respMsg;      //杩斿洖璇存槑
+
+    /*-----娑堟伅浣�-----*/
+    private T data;
+
+
+    public ApiV1Resp() {
+        super();
+    }
+
+    public ApiV1Resp(String respCode, String respMsg, T data, ApiV1Req<JSONObject> req) {
+        this.data = data;
+        this.sn = req.getSn();
+        this.auth = req.getAuth();
+        this.sign = req.getSign();
+        this.outId = req.getOutId();
+        this.functionId = req.getFunctionId();
+        this.timestamp = System.currentTimeMillis();
+        this.respCode = respCode;
+        this.respMsg = respMsg;
+    }
+
+    public static ApiV1Resp<Object> success(Object data, ApiV1Req<JSONObject> req) {
+        return new ApiV1Resp<>(CODE_SUCCESS, null, data, req);
+    }
+
+    public static ApiV1Resp<Object> error(String respMsg, ApiV1Req<JSONObject> req) {
+        return new ApiV1Resp<>(CODE_ERROR, respMsg, null, req);
+    }
+
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3030.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3030.java
new file mode 100644
index 0000000..3e16fa0
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3030.java
@@ -0,0 +1,21 @@
+package com.fzzy.igds.api.v1.data;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description 鎶撴媿淇℃伅灏佽绫�
+ * @Author CZT
+ * @Date 2026/1/7 10:20
+ */
+@Data
+public class Param3030 implements Serializable {
+
+    private String cameraId;
+    private String cameraName;
+    private String result;
+    private String tags;
+    private String snapTime;
+    private String imgBase64;
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3031.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3031.java
new file mode 100644
index 0000000..40e341c
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/Param3031.java
@@ -0,0 +1,26 @@
+package com.fzzy.igds.api.v1.data;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description
+ * @Author CZT
+ * @Date 2026/1/7 10:21
+ */
+@Data
+public class Param3031 implements Serializable {
+
+    private String cameraId;
+    private String cameraName;
+    private String name;
+    private String bizType;
+    private String type;
+    private String level;
+    private String info;
+    private String time;
+    private String tags;
+    private String imgBase64;
+
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/package-info.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/package-info.java
deleted file mode 100644
index 15c8a09..0000000
--- a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/data/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * 璐ㄦ娂鐩戠鎺ュ彛鍖�
- */
-package com.fzzy.igds.api.v1.data;
\ No newline at end of file
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3010.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3010.java
new file mode 100644
index 0000000..b0728b8
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3010.java
@@ -0,0 +1,58 @@
+package com.fzzy.igds.api.v1.service;
+
+import com.fzzy.igds.api.v1.data.ApiV1Req;
+import com.fzzy.igds.api.v1.data.ApiV1Resp;
+import com.fzzy.igds.api.v1.util.ApiV1Constant;
+import com.fzzy.igds.domain.GatewaySer;
+import com.fzzy.igds.service.SecCameraService;
+import com.fzzy.igds.service.SnapConfService;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.utils.StringUtils;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * @Description 蹇冭烦瑙f瀽
+ * @Author CZT
+ * @Date 2026/1/7 11:01
+ */
+@Component
+public class ApiV1Service3010 {
+
+    @Resource
+    private SecCameraService cameraService;
+    @Resource
+    private SnapConfService snapConfService;
+
+    /**
+     *
+     * @param req
+     * @param gatewaySer
+     * @return
+     */
+    public ApiV1Resp<Object> analysis(ApiV1Req<JSONObject> req, GatewaySer gatewaySer) {
+
+        Date end = new Date();
+        Date start = gatewaySer.getHeartbeatTime();
+        String functionId = "";
+
+        //鍒ゆ柇鎶撴媿閰嶇疆鏄惁鏈夋洿鏂�
+        int snapConfCount = snapConfService.getUpdateCount(gatewaySer.getDeptId(), start, end);
+        if (snapConfCount > 0) {
+            functionId += ApiV1Constant.API_FUNCTION_3020 + ",";
+        }
+
+        //鍒ゆ柇鐩戞帶鏄湁鏇存柊
+        int cameraCount = cameraService.getUpdateCount(gatewaySer.getDeptId(), start, end);
+        if (cameraCount > 0) {
+            functionId += ApiV1Constant.API_FUNCTION_3021 + ",";
+        }
+
+        if (StringUtils.isNotBlank(functionId)) {
+            req.setFunctionId(functionId);
+        }
+
+        return ApiV1Resp.success(null, req);
+    }
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3020.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3020.java
new file mode 100644
index 0000000..655a1a8
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3020.java
@@ -0,0 +1,44 @@
+package com.fzzy.igds.api.v1.service;
+
+import com.fzzy.igds.api.v1.data.ApiV1Req;
+import com.fzzy.igds.api.v1.data.ApiV1Resp;
+import com.fzzy.igds.domain.GatewaySer;
+import com.fzzy.igds.domain.SnapConf;
+import com.fzzy.igds.service.SnapConfService;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description 鎶撴媿閰嶇疆瑙f瀽
+ * @Author CZT
+ * @Date 2026/1/7 11:03
+ */
+@Component
+public class ApiV1Service3020 {
+
+    @Resource
+    private SnapConfService snapConfService;
+
+    /**
+     *
+     * @param req
+     * @param gatewaySer
+     * @return
+     */
+    public ApiV1Resp<Object> analysis(ApiV1Req<JSONObject> req, GatewaySer gatewaySer) {
+
+        //鑾峰彇搴撳尯涓嬫墍鏈夋姄鎷嶉厤缃�
+        List<SnapConf> list = snapConfService.selectList(gatewaySer.getDeptId());
+
+        if(null == list || list.isEmpty()){
+            return ApiV1Resp.error("鏈幏鍙栧埌鎶撴媿閰嶇疆淇℃伅锛�", req);
+        }
+
+        return ApiV1Resp.success(list, req);
+
+    }
+
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3021.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3021.java
new file mode 100644
index 0000000..95eb356
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3021.java
@@ -0,0 +1,44 @@
+package com.fzzy.igds.api.v1.service;
+
+import com.fzzy.igds.api.v1.data.ApiV1Req;
+import com.fzzy.igds.api.v1.data.ApiV1Resp;
+import com.fzzy.igds.domain.Camera;
+import com.fzzy.igds.domain.GatewaySer;
+import com.fzzy.igds.service.SecCameraService;
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description 鐩戞帶閰嶇疆瑙f瀽
+ * @Author CZT
+ * @Date 2026/1/7 11:05
+ */
+@Component
+public class ApiV1Service3021 {
+
+    @Resource
+    private SecCameraService cameraService;
+
+    /**
+     *
+     * @param req
+     * @param gatewaySer
+     * @return
+     */
+    public ApiV1Resp<Object> analysis(ApiV1Req<JSONObject> req, GatewaySer gatewaySer) {
+
+        //鑾峰彇搴撳尯涓嬫墍鏈夌洃鎺т俊鎭�
+        List<Camera> list = cameraService.getCameraByDeptId(gatewaySer.getCompanyId(), gatewaySer.getDeptId());
+
+        if(null == list || list.isEmpty()){
+            return ApiV1Resp.error("鏈幏鍙栧埌鐩戞帶淇℃伅锛�", req);
+        }
+
+        return ApiV1Resp.success(list, req);
+
+    }
+
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3030.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3030.java
new file mode 100644
index 0000000..428f874
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3030.java
@@ -0,0 +1,84 @@
+package com.fzzy.igds.api.v1.service;
+
+import com.fzzy.igds.api.v1.data.ApiV1Req;
+import com.fzzy.igds.api.v1.data.ApiV1Resp;
+import com.fzzy.igds.api.v1.data.Param3030;
+import com.fzzy.igds.domain.GatewaySer;
+import com.alibaba.fastjson.JSONObject;
+import com.fzzy.igds.domain.SnapRecord;
+import com.fzzy.igds.service.FileService;
+import com.fzzy.igds.service.SnapRecordService;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.config.FrameworkConfig;
+import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description 鎶撴媿瑙f瀽
+ * @Author CZT
+ * @Date 2026/1/7 11:07
+ */
+@Component
+public class ApiV1Service3030 {
+
+    @Resource
+    private SnapRecordService snapRecordService;
+    @Resource
+    private FileService fileService;
+
+    /**
+     *
+     * @param req
+     * @param gatewaySer
+     * @return
+     */
+    public ApiV1Resp<Object> analysis(ApiV1Req<JSONObject> req, GatewaySer gatewaySer) throws Exception{
+
+        //杞寲涓哄璞�
+        List<Param3030> list = JSONObject.parseArray(req.getData().toString(), Param3030.class);
+
+        if(null == list || list.isEmpty()){
+            return ApiV1Resp.error("鎶撴媿淇℃伅涓虹┖锛屼笉瑙f瀽锛�", req);
+        }
+
+        step1(list, gatewaySer);
+
+        return ApiV1Resp.success(null, req);
+    }
+
+    /**
+     * 寮傛瑙f瀽
+     * @param list
+     */
+    @Async
+    public void step1(List<Param3030> list, GatewaySer gatewaySer) throws Exception {
+
+        SnapRecord snapRecord;
+        for (Param3030 param3030 : list) {
+            snapRecord = new SnapRecord();
+            snapRecord.setId(ContextUtil.generateId());
+            snapRecord.setCompanyId(gatewaySer.getCompanyId());
+            snapRecord.setDeptId(gatewaySer.getDeptId());
+            snapRecord.setCameraId(param3030.getCameraId());
+            snapRecord.setResult(param3030.getResult());
+            snapRecord.setTags(param3030.getTags());
+            snapRecord.setSnapTime(DateUtils.parseDate(param3030.getSnapTime(),"yyyy-MM-dd HH:mm:ss"));
+
+            //base64杞寲涓哄浘鐗囦繚瀛�
+            String savePath = fileService.getFileSavePath("SNAP");
+            String fileName = ContextUtil.UUID() + ".jpg";
+            String filePath = savePath+fileName;
+            fileService.baseImg2Disk(filePath, param3030.getImgBase64());
+
+            //璁剧疆淇濆瓨鍥剧墖璺緞
+            snapRecord.setImgName(filePath.replace(FrameworkConfig.getProfile(), "/profile/"));
+
+            snapRecordService.addData(snapRecord);
+        }
+
+    }
+
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3031.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3031.java
new file mode 100644
index 0000000..5758f58
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/service/ApiV1Service3031.java
@@ -0,0 +1,95 @@
+package com.fzzy.igds.api.v1.service;
+
+import com.fzzy.igds.api.v1.data.ApiV1Req;
+import com.fzzy.igds.api.v1.data.ApiV1Resp;
+import com.fzzy.igds.api.v1.data.Param3030;
+import com.fzzy.igds.api.v1.data.Param3031;
+import com.fzzy.igds.constant.WarnStatus;
+import com.fzzy.igds.domain.EventInfo;
+import com.fzzy.igds.domain.GatewaySer;
+import com.alibaba.fastjson.JSONObject;
+import com.fzzy.igds.domain.SnapRecord;
+import com.fzzy.igds.service.EventInfoService;
+import com.fzzy.igds.service.FileService;
+import com.fzzy.igds.utils.ContextUtil;
+import com.ruoyi.common.config.FrameworkConfig;
+import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Description AI浜嬩欢瑙f瀽
+ * @Author CZT
+ * @Date 2026/1/7 11:09
+ */
+@Component
+public class ApiV1Service3031 {
+
+    @Resource
+    private EventInfoService eventInfoService;
+    @Resource
+    private FileService fileService;
+
+    /**
+     *
+     * @param req
+     * @param gatewaySer
+     * @return
+     */
+    public ApiV1Resp<Object> analysis(ApiV1Req<JSONObject> req, GatewaySer gatewaySer) throws Exception {
+
+        //杞寲涓哄璞�
+        List<Param3031> list = JSONObject.parseArray(req.getData().toString(), Param3031.class);
+
+        if(null == list || list.isEmpty()){
+            return ApiV1Resp.error("鎶撴媿淇℃伅涓虹┖锛屼笉瑙f瀽锛�", req);
+        }
+
+        step1(list, gatewaySer);
+
+        return ApiV1Resp.success(null, req);
+
+    }
+
+    /**
+     * 寮傛瑙f瀽
+     * @param list
+     */
+    @Async
+    public void step1(List<Param3031> list, GatewaySer gatewaySer) throws Exception {
+
+        EventInfo info;
+        for (Param3031 param : list) {
+
+            info = new EventInfo();
+            info.setId(ContextUtil.generateId());
+            info.setCompanyId(gatewaySer.getCompanyId());
+            info.setDeptId(gatewaySer.getDeptId());
+            info.setSerId(param.getCameraId());
+            info.setName(param.getName());
+            info.setBizType(param.getBizType());
+            info.setType(param.getType());
+            info.setLevel(param.getLevel());
+            info.setInfo(param.getInfo());
+            info.setTime(DateUtils.parseDate(param.getTime(),"yyyy-MM-dd HH:mm:ss"));
+            info.setTags(param.getTags());
+
+
+            //base64杞寲涓哄浘鐗囦繚瀛�
+            String savePath = fileService.getFileSavePath("EVENT");
+            String fileName = ContextUtil.UUID() + ".jpg";
+            String filePath = savePath+fileName;
+            fileService.baseImg2Disk(filePath, param.getImgBase64());
+
+            //璁剧疆淇濆瓨鍥剧墖璺緞
+            info.setImgName(filePath.replace(FrameworkConfig.getProfile(), "/profile/"));
+
+            eventInfoService.addData(info);
+        }
+
+    }
+
+}
diff --git a/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/util/ApiV1Constant.java b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/util/ApiV1Constant.java
new file mode 100644
index 0000000..2fa3236
--- /dev/null
+++ b/fzzy-igdss-inte/src/main/java/com/fzzy/igds/api/v1/util/ApiV1Constant.java
@@ -0,0 +1,30 @@
+package com.fzzy.igds.api.v1.util;
+
+/**
+ * @Description  鎺ュ彛甯搁噺绫�
+ * @Author CZT
+ * @Date 2026/1/7 10:03
+ */
+public class ApiV1Constant {
+
+    /*----------鎺ュ彛缂栫爜----------*/
+    /**
+     * 蹇冭烦鎺ュ彛缂栫爜
+     */
+    public static final String API_FUNCTION_3010 = "3010";
+    /**
+     * 鍚屾鎶撴媿閰嶇疆鎺ュ彛缂栫爜
+     */
+    public static final String API_FUNCTION_3020 = "3020";
+    /**
+     * 鍚屾鐩戞帶閰嶇疆鎺ュ彛缂栫爜
+     */
+    public static final String API_FUNCTION_3021 = "3021";
+    /**
+     * 鎺ㄩ�佹姄鎷嶄俊鎭帴鍙g紪鐮�
+     */
+    public static final String API_FUNCTION_3030 = "3030";
+    public static final String API_FUNCTION_3031 = "3031";
+
+
+}
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/common/manager/ExportManager.java b/fzzy-igdss-web/src/main/java/com/fzzy/common/manager/ExportManager.java
index a348d5a..3159036 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/common/manager/ExportManager.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/common/manager/ExportManager.java
@@ -52,7 +52,7 @@
             }
 
             //鑾峰彇妯℃澘璺緞
-            String templatePath = fileService.getTemplateFilePath();
+            String templatePath = fileService.getFileSavePath("TEMPLATE");
             File file = new File(templatePath + templateName);
             if (!file.exists()) {
                 log.error("妯℃澘鏂囦欢涓嶅瓨鍦紝涓嶆墽琛屽鍑猴紒");
@@ -60,7 +60,7 @@
             }
 
             //鑾峰彇鏂囦欢淇濆瓨璺緞,浠ュ簱鍖哄垎寮�
-            String savePath = fileService.getWordPath(null);
+            String savePath = fileService.getFileSavePath(null);
 
             param.setTemplatePath(templatePath);
             param.setTemplateName(templateName);
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/grain/manager/GrainExportBuilder.java b/fzzy-igdss-web/src/main/java/com/fzzy/grain/manager/GrainExportBuilder.java
index cb5cb57..0879a2d 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/grain/manager/GrainExportBuilder.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/grain/manager/GrainExportBuilder.java
@@ -88,7 +88,7 @@
             }
 
             result = ContextUtil.getTimeId() + ".xls";
-            String tempPath = fileService.getTempFilePath(depot == null ? ContextUtil.getCompanyId() : depot.getCompanyId());
+            String tempPath = fileService.getFileSavePath("TEMP");
             FileOutputStream fos = new FileOutputStream(tempPath + "/" + result);
             toWorkbook.write(fos);
             if (null != fos) fos.close();
@@ -104,7 +104,7 @@
     private HSSFWorkbook getFromWorkBook(GrainData data, Depot depot) throws Exception {
         FileInputStream fis = null;
 
-        String filePath = fileService.getConfPath();
+        String filePath = fileService.getFileSavePath("CONF");
         try {
             //鑾峰彇妯$増鐨勫悕绉帮紝娉ㄦ剰绛掍粨鍚嶇О閰嶇疆瑙勫垯
             if (StringUtils.isEmpty(data.getCableCir())) {
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/security/EventInfoController.java b/fzzy-igdss-web/src/main/java/com/fzzy/security/EventInfoController.java
index 79acef5..257f8ca 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/security/EventInfoController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/security/EventInfoController.java
@@ -26,7 +26,7 @@
 @RequestMapping("/security/eventInfo")
 public class EventInfoController {
 
-    private static final String prefix = "security/eventInfo";
+    private static final String prefix = "security";
 
     @Resource
     private EventInfoManager eventInfoManager;
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/security/SnapRecordController.java b/fzzy-igdss-web/src/main/java/com/fzzy/security/SnapRecordController.java
index 81928d3..a3d2368 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/security/SnapRecordController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/security/SnapRecordController.java
@@ -23,7 +23,7 @@
 @RequestMapping("/security/snap/snapRecord")
 public class SnapRecordController {
 
-    private static final String prefix = "security/snap/snapRecord";
+    private static final String prefix = "security";
 
     @Resource
     private SnapRecordManager snapRecordManager;
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/eventInfo/eventInfo.html b/fzzy-igdss-web/src/main/resources/templates/security/eventInfo.html
similarity index 100%
rename from fzzy-igdss-web/src/main/resources/templates/security/eventInfo/eventInfo.html
rename to fzzy-igdss-web/src/main/resources/templates/security/eventInfo.html
diff --git a/fzzy-igdss-web/src/main/resources/templates/security/snap/snapRecord/snapRecord.html b/fzzy-igdss-web/src/main/resources/templates/security/snapRecord.html
similarity index 100%
rename from fzzy-igdss-web/src/main/resources/templates/security/snap/snapRecord/snapRecord.html
rename to fzzy-igdss-web/src/main/resources/templates/security/snapRecord.html

--
Gitblit v1.9.3