From cc56ed335547eab219cfd23faad973aaf2176744 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: Wed, 27 Nov 2024 22:44:22 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../iot/vmp/service/bean/RecordPlanItem.java | 8 +--
.../service/impl/RecordPlanServiceImpl.java | 55 ++++++++++++++++++-
.../vmp/storager/dao/RecordPlanMapper.java | 6 +-
.../src/components/dialog/editRecordPlan.vue | 47 +++++++++-------
数据库/2.7.3/初始化-mysql-2.7.3.sql | 6 +-
.../2.7.3/初始化-postgresql-kingbase-2.7.3.sql | 4 +-
6 files changed, 91 insertions(+), 35 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/bean/RecordPlanItem.java b/src/main/java/com/genersoft/iot/vmp/service/bean/RecordPlanItem.java
index 14383cb1..31fa3214 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/bean/RecordPlanItem.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/bean/RecordPlanItem.java
@@ -10,11 +10,11 @@ public class RecordPlanItem {
@Schema(description = "计划项数据库ID")
private int id;
- @Schema(description = "计划开始时间")
- private Long startTime;
+ @Schema(description = "计划开始时间的序号, 从0点开始,每半个小时增加1")
+ private Integer start;
- @Schema(description = "计划结束时间")
- private Long stopTime;
+ @Schema(description = "计划结束时间的序号, 从0点开始,每半个小时增加1")
+ private Integer stop;
@Schema(description = "计划周几执行")
private Integer weekDay;
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/RecordPlanServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/RecordPlanServiceImpl.java
index 44b49ddd..dc3de683 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/RecordPlanServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/RecordPlanServiceImpl.java
@@ -1,8 +1,14 @@
package com.genersoft.iot.vmp.service.impl;
+import com.genersoft.iot.vmp.common.InviteInfo;
+import com.genersoft.iot.vmp.common.InviteSessionStatus;
import com.genersoft.iot.vmp.conf.exception.ControllerException;
-import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
+import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
+import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.dao.CommonGBChannelMapper;
+import com.genersoft.iot.vmp.gb28181.service.IGbChannelService;
+import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
+import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent;
import com.genersoft.iot.vmp.service.IRecordPlanService;
import com.genersoft.iot.vmp.service.bean.RecordPlan;
import com.genersoft.iot.vmp.service.bean.RecordPlanItem;
@@ -13,9 +19,15 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.event.EventListener;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import javax.sip.InvalidArgumentException;
+import javax.sip.SipException;
+import java.text.ParseException;
import java.util.List;
@Service
@@ -28,6 +40,43 @@ public class RecordPlanServiceImpl implements IRecordPlanService {
@Autowired
private CommonGBChannelMapper channelMapper;
+ @Autowired
+ private IGbChannelService channelService;
+
+
+ /**
+ * 流到来的处理
+ */
+ @Async("taskExecutor")
+ @org.springframework.context.event.EventListener
+ public void onApplicationEvent(MediaArrivalEvent event) {
+
+ }
+
+ /**
+ * 流离开的处理
+ */
+ @Async("taskExecutor")
+ @EventListener
+ public void onApplicationEvent(MediaDepartureEvent event) {
+ // 流断开,检查是否还处于录像状态, 如果是则继续录像
+
+ }
+
+ @Scheduled(cron = "0 */30 * * * *")
+ public void execution() {
+ // 执行计划
+ // 查询startTime等于现在的, 开始录像
+
+ // 查询stopTime等于现在的,结束录像
+ // 查询处于中间的,验证录像是否正在进行
+
+
+ // TODO 无人观看要确保处于录像状态的通道不被移除
+ }
+
+ // 系统启动时
+
@Override
@Transactional
public void add(RecordPlan plan) {
@@ -61,8 +110,8 @@ public class RecordPlanServiceImpl implements IRecordPlanService {
public void update(RecordPlan plan) {
plan.setUpdateTime(DateUtil.getNow());
recordPlanMapper.update(plan);
- recordPlanMapper.cleanItems(plan.getId());
- if (plan.getPlanItemList() != null){
+ if (plan.getPlanItemList() != null && !plan.getPlanItemList().isEmpty()){
+ recordPlanMapper.cleanItems(plan.getId());
recordPlanMapper.batchAddItem(plan.getId(), plan.getPlanItemList());
}
// TODO 更新录像队列
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/RecordPlanMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/RecordPlanMapper.java
index 705e59aa..2cdc6468 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/RecordPlanMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/RecordPlanMapper.java
@@ -26,13 +26,13 @@ public interface RecordPlanMapper {
@Insert(" ")
void batchAddItem(@Param("planId") int planId, List planItemList);
diff --git a/web_src/src/components/dialog/editRecordPlan.vue b/web_src/src/components/dialog/editRecordPlan.vue
index 3772c490..5ae900c3 100644
--- a/web_src/src/components/dialog/editRecordPlan.vue
+++ b/web_src/src/components/dialog/editRecordPlan.vue
@@ -157,7 +157,6 @@ export default {
// 把 336长度的 list 分成 7 组,每组 48 个
for (let i = 0; i < this.byteTime.length; i += DayTimes) {
let planArray = this.byteTime2Plan(this.byteTime.slice(i, i + DayTimes));
- console.log(planArray)
if(!planArray || planArray.length === 0) {
week ++;
continue
@@ -165,8 +164,8 @@ export default {
for (let j = 0; j < planArray.length; j++) {
planList.push({
id: this.id,
- startTime: planArray[j].startTime,
- stopTime: planArray[j].stopTime,
+ start: planArray[j].start,
+ stop: planArray[j].stop,
weekDay: week
})
}
@@ -175,44 +174,52 @@ export default {
return planList
},
byteTime2Plan(weekItem){
- let startTime = 0;
- let endTime = 0;
+ let start = null;
+ let stop = null;
let result = []
for (let i = 0; i < weekItem.length; i++) {
let item = weekItem[i]
- if (item === '1') {
- endTime = 30*i
- if (startTime === 0 ) {
- startTime = 30*i
+ if (item === '1') { // 表示选中
+ stop = i
+ if (start === null ) {
+ start = i
+ }
+ if (i === weekItem.length - 1) {
+ result.push({
+ start: start,
+ stop: stop,
+ })
}
} else {
- if (endTime !== 0){
+ if (stop !== 0){
result.push({
- startTime: startTime * 60 * 1000,
- stopTime: endTime * 60 * 1000,
+ start: start,
+ stop: stop,
})
- startTime = 0
- endTime = 0
+ start = 0
+ stop = 0
}
}
}
return result;
},
plan2Byte(planList) {
- console.log(planList);
let byte = ""
let indexArray = {}
for (let i = 0; i < planList.length; i++) {
- let index = planList[i].startTime/1000/60/30
- let endIndex = planList[i].stopTime/1000/60/30
+
+ let weekDay = planList[i].weekDay
+ let index = planList[i].start
+ let endIndex = planList[i].stop
+ console.log(index + "===" + endIndex)
for (let j = index; j <= endIndex; j++) {
- indexArray[j + (planList[i].weekDay - 1 )*48] = j + i*48
+ indexArray["key_" + (j + (weekDay - 1 )*48)] = 1
+ console.log("key_" + (j + (weekDay - 1 )*48))
}
}
- console.log(indexArray)
for (let i = 0; i < 336; i++) {
- if (indexArray[i]){
+ if (indexArray["key_" + i]){
byte += "1"
}else {
byte += "0"
diff --git a/数据库/2.7.3/初始化-mysql-2.7.3.sql b/数据库/2.7.3/初始化-mysql-2.7.3.sql
index faada9cd..e12677da 100644
--- a/数据库/2.7.3/初始化-mysql-2.7.3.sql
+++ b/数据库/2.7.3/初始化-mysql-2.7.3.sql
@@ -440,10 +440,10 @@ create table wvp_record_plan
create table wvp_record_plan_item
(
id serial primary key,
- start_time bigint,
- stop_time bigint,
+ start int,
+ stop int,
week_day int,
- plan_id int,
+ plan_id int,
create_time character varying(50),
update_time character varying(50)
);
diff --git a/数据库/2.7.3/初始化-postgresql-kingbase-2.7.3.sql b/数据库/2.7.3/初始化-postgresql-kingbase-2.7.3.sql
index 9ef3e926..c632f9a8 100644
--- a/数据库/2.7.3/初始化-postgresql-kingbase-2.7.3.sql
+++ b/数据库/2.7.3/初始化-postgresql-kingbase-2.7.3.sql
@@ -457,8 +457,8 @@ create table wvp_record_plan
create table wvp_record_plan_item
(
id serial primary key,
- start_time int8,
- stop_time int8,
+ start int,
+ stop int,
week_day int,
plan_id int,
create_time character varying(50),