From daac0010b16fc03ef72b6b0712b5ba38dde2801d Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 19 十月 2023 17:52:19 +0800
Subject: [PATCH] 优化云端录像定时清理

---
 src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java |   74 +++++++++++++++++++++++++++++++++++--
 1 files changed, 70 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
index 5af3d64..1a8adb1 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/CloudRecordServiceImpl.java
@@ -3,8 +3,6 @@
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.genersoft.iot.vmp.conf.exception.ControllerException;
-import com.genersoft.iot.vmp.gb28181.bean.GbStream;
-import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
 import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
 import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils;
 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
@@ -19,14 +17,13 @@
 import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import org.apache.commons.lang3.ObjectUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.unit.DataUnit;
 
 import java.time.*;
-import java.time.temporal.TemporalAccessor;
 import java.util.*;
 
 @Service
@@ -167,4 +164,73 @@
         }
         return result.getJSONArray("data");
     }
+
+    @Override
+    public void changeCollect(String type, boolean result, String app, String stream, String mediaServerId, String startTime, String endTime, String callId, String collectType) {
+        // 寮�濮嬫椂闂村拰缁撴潫鏃堕棿鍦ㄦ暟鎹簱涓兘鏄互绉掍负鍗曚綅鐨�
+        Long startTimeStamp = null;
+        Long endTimeStamp = null;
+        if (startTime != null ) {
+            if (!DateUtil.verification(startTime, DateUtil.formatter)) {
+                throw new ControllerException(ErrorCode.ERROR100.getCode(), "寮�濮嬫椂闂存牸寮忛敊璇紝姝g‘鏍煎紡涓猴細 " + DateUtil.formatter);
+            }
+            startTimeStamp = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime);
+
+        }
+        if (endTime != null ) {
+            if (!DateUtil.verification(endTime, DateUtil.formatter)) {
+                throw new ControllerException(ErrorCode.ERROR100.getCode(), "缁撴潫鏃堕棿鏍煎紡閿欒锛屾纭牸寮忎负锛� " + DateUtil.formatter);
+            }
+            endTimeStamp = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime);
+
+        }
+
+        List<MediaServerItem> mediaServerItems;
+        if (!ObjectUtils.isEmpty(mediaServerId)) {
+            mediaServerItems = new ArrayList<>();
+            MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId);
+            if (mediaServerItem == null) {
+                throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒版祦濯掍綋: " + mediaServerId);
+            }
+            mediaServerItems.add(mediaServerItem);
+        } else {
+            mediaServerItems = null;
+        }
+
+        List<CloudRecordItem> all = cloudRecordServiceMapper.getList(null, app, stream, startTimeStamp, endTimeStamp,
+                callId, mediaServerItems);
+        if (all.isEmpty()) {
+            throw new ControllerException(ErrorCode.ERROR100.getCode(), "鏈壘鍒板緟鏀惰棌鐨勮棰�");
+        }
+        int limitCount = 50;
+        if (all.size() > limitCount) {
+            for (int i = 0; i < all.size(); i += limitCount) {
+                int toIndex = i + limitCount;
+                if (i + limitCount > all.size()) {
+                    toIndex = all.size();
+                }
+                if ("collect".equals(collectType)) {
+                    cloudRecordServiceMapper.updateCollectList(result, all.subList(i, toIndex));
+                }else  if ("reserve".equals(collectType)) {
+                    cloudRecordServiceMapper.updateReserveList(result, all.subList(i, toIndex));
+                }
+
+            }
+        }else {
+            if ("collect".equals(collectType)) {
+                cloudRecordServiceMapper.updateCollectList(result, all);
+            }else  if ("reserve".equals(collectType)) {
+                cloudRecordServiceMapper.updateReserveList(result, all);
+            }
+        }
+    }
+
+    @Override
+    public void changeCollectById(Integer recordId, String collectType, boolean result) {
+        if ("collect".equals(collectType)) {
+            cloudRecordServiceMapper.changeCollectById(result, recordId);
+        }else  if ("reserve".equals(collectType)) {
+            cloudRecordServiceMapper.changeReserveById(result, recordId);
+        }
+    }
 }

--
Gitblit v1.8.0