临时提交

pull/1642/head
648540858 2024-07-11 18:25:16 +08:00
parent 84dcd4d8b8
commit 6619c5c53d
41 changed files with 248 additions and 144 deletions

View File

@ -2,7 +2,7 @@ package com.genersoft.iot.vmp.gb28181.bean;
import com.genersoft.iot.vmp.media.bean.MediaServer; import com.genersoft.iot.vmp.media.bean.MediaServer;
import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.AudioBroadcastEvent; import com.genersoft.iot.vmp.gb28181.controller.bean.AudioBroadcastEvent;
import gov.nist.javax.sip.message.SIPResponse; import gov.nist.javax.sip.message.SIPResponse;
/** /**

View File

@ -82,7 +82,7 @@ public class CommonGBChannel {
private String gbPassword; private String gbPassword;
@Schema(description = "国标-设备状态") @Schema(description = "国标-设备状态")
private Integer gbStatus; private String gbStatus;
@Schema(description = "国标-经度 WGS-84坐标系") @Schema(description = "国标-经度 WGS-84坐标系")
private Double gbLongitude; private Double gbLongitude;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.alarm; package com.genersoft.iot.vmp.gb28181.controller;
import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.conf.security.JwtUtils; import com.genersoft.iot.vmp.conf.security.JwtUtils;

View File

@ -0,0 +1,43 @@
package com.genersoft.iot.vmp.gb28181.controller;
import com.genersoft.iot.vmp.conf.security.JwtUtils;
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
import com.genersoft.iot.vmp.gb28181.service.IGbChannelService;
import com.genersoft.iot.vmp.media.service.IMediaServerService;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Tag(name = "全局通道管理")
@Controller
@Slf4j
@RequestMapping(value = "/api/common/channel")
public class CommonChannelController {
@Autowired
private IRedisCatchStorage redisCatchStorage;
@Autowired
private IGbChannelService channelService;
@Autowired
private IMediaServerService mediaServerService;
@Operation(summary = "查询通道信息", security = @SecurityRequirement(name = JwtUtils.HEADER))
@Parameter(name = "id", description = "通道的数据库自增Id", required = true)
@GetMapping(value = "/one")
@ResponseBody
public CommonGBChannel getOne(int id){
return channelService.getOne(id);
}
}

View File

@ -5,7 +5,7 @@
* @date 202122 * @date 202122
*/ */
package com.genersoft.iot.vmp.vmanager.gb28181.device; package com.genersoft.iot.vmp.gb28181.controller;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.exception.ControllerException;

View File

@ -5,7 +5,7 @@
* @date 202121 * @date 202121
*/ */
package com.genersoft.iot.vmp.vmanager.gb28181.device; package com.genersoft.iot.vmp.gb28181.controller;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.exception.ControllerException;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.device; package com.genersoft.iot.vmp.gb28181.controller;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.conf.DynamicTask; import com.genersoft.iot.vmp.conf.DynamicTask;
@ -116,15 +116,6 @@ public class DeviceQuery {
/** /**
* *
*
* @param deviceId id
* @param page
* @param count
* @param query
* @param online 线 线 true / 线 false
* @param channelType false/ true
* @param catalogUnderDevice
* @return
*/ */
@GetMapping("/devices/{deviceId}/channels") @GetMapping("/devices/{deviceId}/channels")
@Operation(summary = "分页查询通道", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Operation(summary = "分页查询通道", security = @SecurityRequirement(name = JwtUtils.HEADER))
@ -148,8 +139,6 @@ public class DeviceQuery {
/** /**
* *
* @param deviceId id
* @return
*/ */
@Operation(summary = "同步设备通道", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Operation(summary = "同步设备通道", security = @SecurityRequirement(name = JwtUtils.HEADER))
@Parameter(name = "deviceId", description = "设备国标编号", required = true) @Parameter(name = "deviceId", description = "设备国标编号", required = true)
@ -494,4 +483,11 @@ public class DeviceQuery {
resp.setStatus(HttpServletResponse.SC_NOT_FOUND); resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
} }
} }
@GetMapping("/channel/raw")
@Operation(summary = "国标通道编辑时的数据回显")
@Parameter(name = "id", description = "通道的Id", required = true)
public DeviceChannel getRawChannel(int id) {
return deviceChannelService.getRawChannel(id);
}
} }

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.record; package com.genersoft.iot.vmp.gb28181.controller;
import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.UserSetting; import com.genersoft.iot.vmp.conf.UserSetting;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.media; package com.genersoft.iot.vmp.gb28181.controller;
import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.exception.ControllerException;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.MobilePosition; package com.genersoft.iot.vmp.gb28181.controller;
import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.conf.security.JwtUtils; import com.genersoft.iot.vmp.conf.security.JwtUtils;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.platform; package com.genersoft.iot.vmp.gb28181.controller;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
@ -12,6 +12,8 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch; import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog; import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog;
import com.genersoft.iot.vmp.gb28181.bean.SubscribeHolder; import com.genersoft.iot.vmp.gb28181.bean.SubscribeHolder;
import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelReduce;
import com.genersoft.iot.vmp.gb28181.controller.bean.UpdateChannelParam;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
import com.genersoft.iot.vmp.service.IDeviceChannelService; import com.genersoft.iot.vmp.service.IDeviceChannelService;
import com.genersoft.iot.vmp.service.IPlatformChannelService; import com.genersoft.iot.vmp.service.IPlatformChannelService;
@ -20,8 +22,6 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.storager.IVideoManagerStorage; import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.UpdateChannelParam;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.play; package com.genersoft.iot.vmp.gb28181.controller;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.playback; package com.genersoft.iot.vmp.gb28181.controller;
import com.genersoft.iot.vmp.common.InviteInfo; import com.genersoft.iot.vmp.common.InviteInfo;
import com.genersoft.iot.vmp.common.InviteSessionType; import com.genersoft.iot.vmp.common.InviteSessionType;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.ptz; package com.genersoft.iot.vmp.gb28181.controller;
import com.genersoft.iot.vmp.conf.exception.ControllerException; import com.genersoft.iot.vmp.conf.exception.ControllerException;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.sse; package com.genersoft.iot.vmp.gb28181.controller;
import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEventListener; import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEventListener;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.play.bean; package com.genersoft.iot.vmp.gb28181.controller.bean;
/** /**

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.platform.bean; package com.genersoft.iot.vmp.gb28181.controller.bean;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -1,9 +1,8 @@
package com.genersoft.iot.vmp.vmanager.gb28181.play.bean; package com.genersoft.iot.vmp.gb28181.controller.bean;
import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult; import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import org.springframework.http.ResponseEntity;
import org.springframework.web.context.request.async.DeferredResult; import org.springframework.web.context.request.async.DeferredResult;
public class PlayResult { public class PlayResult {

View File

@ -1,4 +1,4 @@
package com.genersoft.iot.vmp.vmanager.gb28181.platform.bean; package com.genersoft.iot.vmp.gb28181.controller.bean;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;

View File

@ -165,6 +165,7 @@ public interface CommonGBChannelMapper {
" has_audio,\n" + " has_audio,\n" +
" gps_time,\n" + " gps_time,\n" +
" stream_identification,\n" + " stream_identification,\n" +
" device_db_id as gb_device_db_id,\n" +
" coalesce(gb_device_id, device_id) as gb_device_id,\n" + " coalesce(gb_device_id, device_id) as gb_device_id,\n" +
" coalesce(gb_name, name) as gb_name,\n" + " coalesce(gb_name, name) as gb_name,\n" +
" coalesce(gb_manufacturer, manufacturer) as gb_manufacturer,\n" + " coalesce(gb_manufacturer, manufacturer) as gb_manufacturer,\n" +

View File

@ -2,8 +2,7 @@ package com.genersoft.iot.vmp.gb28181.dao;
import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannelInPlatform; import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelReduce;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce;
import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend; import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend;
import org.apache.ibatis.annotations.*; import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;

View File

@ -1,6 +1,7 @@
package com.genersoft.iot.vmp.gb28181.dao; package com.genersoft.iot.vmp.gb28181.dao;
import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.*; import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -342,4 +343,7 @@ public interface DeviceMapper {
" order by create_time desc "+ " order by create_time desc "+
" </script>") " </script>")
List<Device> getDeviceList(@Param("query") String query, @Param("status") Boolean status); List<Device> getDeviceList(@Param("query") String query, @Param("status") Boolean status);
@Select("select * from wvp_device_channel where id = #{id}")
DeviceChannel getRawChannel(@Param("id") int id);
} }

View File

@ -1,7 +1,7 @@
package com.genersoft.iot.vmp.gb28181.dao; package com.genersoft.iot.vmp.gb28181.dao;
import com.genersoft.iot.vmp.gb28181.bean.*; import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelReduce;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;

View File

@ -27,4 +27,6 @@ public interface IGbChannelService {
void updateStatus(List<CommonGBChannel> channelList); void updateStatus(List<CommonGBChannel> channelList);
List<CommonGBChannel> queryByPlatformId(Integer platformId); List<CommonGBChannel> queryByPlatformId(Integer platformId);
CommonGBChannel getOne(int id);
} }

View File

@ -227,4 +227,9 @@ public class GbChannelServiceImpl implements IGbChannelService {
return commonGBChannelMapper.queryByPlatformId(platformId); return commonGBChannelMapper.queryByPlatformId(platformId);
} }
@Override
public CommonGBChannel getOne(int id) {
return commonGBChannelMapper.queryById(id);
}
} }

View File

@ -4,7 +4,7 @@ import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
import com.genersoft.iot.vmp.gb28181.bean.MobilePosition; import com.genersoft.iot.vmp.gb28181.bean.MobilePosition;
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo; import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelReduce;
import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend; import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@ -115,4 +115,7 @@ public interface IDeviceChannelService {
List<Device> queryDeviceWithAsMessageChannel(); List<Device> queryDeviceWithAsMessageChannel();
DeviceChannel getRawChannel(int id);
} }

View File

@ -1,6 +1,6 @@
package com.genersoft.iot.vmp.service; package com.genersoft.iot.vmp.service;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelReduce;
import java.util.List; import java.util.List;

View File

@ -1,6 +1,5 @@
package com.genersoft.iot.vmp.service; package com.genersoft.iot.vmp.service;
import com.alibaba.fastjson2.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo; import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.conf.exception.ServiceException; import com.genersoft.iot.vmp.conf.exception.ServiceException;
import com.genersoft.iot.vmp.gb28181.bean.Device; import com.genersoft.iot.vmp.gb28181.bean.Device;
@ -12,14 +11,13 @@ import com.genersoft.iot.vmp.media.bean.MediaServer;
import com.genersoft.iot.vmp.service.bean.ErrorCallback; import com.genersoft.iot.vmp.service.bean.ErrorCallback;
import com.genersoft.iot.vmp.service.bean.SSRCInfo; import com.genersoft.iot.vmp.service.bean.SSRCInfo;
import com.genersoft.iot.vmp.vmanager.bean.AudioBroadcastResult; import com.genersoft.iot.vmp.vmanager.bean.AudioBroadcastResult;
import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.AudioBroadcastEvent; import com.genersoft.iot.vmp.gb28181.controller.bean.AudioBroadcastEvent;
import gov.nist.javax.sip.message.SIPResponse; import gov.nist.javax.sip.message.SIPResponse;
import javax.sip.InvalidArgumentException; import javax.sip.InvalidArgumentException;
import javax.sip.SipException; import javax.sip.SipException;
import javax.sip.header.CallIdHeader; import javax.sip.header.CallIdHeader;
import java.text.ParseException; import java.text.ParseException;
import java.util.Map;
/** /**
* *

View File

@ -2,11 +2,13 @@ package com.genersoft.iot.vmp.service.bean;
import com.genersoft.iot.vmp.gb28181.bean.MobilePosition; import com.genersoft.iot.vmp.gb28181.bean.MobilePosition;
import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.DateUtil;
import lombok.Data;
@Data
public class GPSMsgInfo { public class GPSMsgInfo {
/** /**
* * ID
*/ */
private String id; private String id;
@ -53,69 +55,4 @@ public class GPSMsgInfo {
gpsMsgInfo.setTime(DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(mobilePosition.getTime())); gpsMsgInfo.setTime(DateUtil.yyyy_MM_dd_HH_mm_ssToISO8601(mobilePosition.getTime()));
return gpsMsgInfo; return gpsMsgInfo;
} }
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getLng() {
return lng;
}
public void setLng(double lng) {
this.lng = lng;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getSpeed() {
return speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getDirection() {
return direction;
}
public void setDirection(String direction) {
this.direction = direction;
}
public String getAltitude() {
return altitude;
}
public void setAltitude(String altitude) {
this.altitude = altitude;
}
public boolean isStored() {
return stored;
}
public void setStored(boolean stored) {
this.stored = stored;
}
} }

View File

@ -21,7 +21,7 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo; import com.genersoft.iot.vmp.vmanager.bean.ResourceBaseInfo;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelReduce;
import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend; import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@ -580,4 +580,9 @@ public class DeviceChannelServiceImpl implements IDeviceChannelService {
public List<Device> queryDeviceWithAsMessageChannel() { public List<Device> queryDeviceWithAsMessageChannel() {
return deviceMapper.queryDeviceWithAsMessageChannel(); return deviceMapper.queryDeviceWithAsMessageChannel();
} }
@Override
public DeviceChannel getRawChannel(int id) {
return deviceMapper.getRawChannel(id);
}
} }

View File

@ -9,7 +9,7 @@ import com.genersoft.iot.vmp.gb28181.dao.DeviceChannelMapper;
import com.genersoft.iot.vmp.gb28181.dao.ParentPlatformMapper; import com.genersoft.iot.vmp.gb28181.dao.ParentPlatformMapper;
import com.genersoft.iot.vmp.gb28181.dao.PlatformCatalogMapper; import com.genersoft.iot.vmp.gb28181.dao.PlatformCatalogMapper;
import com.genersoft.iot.vmp.gb28181.dao.PlatformChannelMapper; import com.genersoft.iot.vmp.gb28181.dao.PlatformChannelMapper;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelReduce;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.datasource.DataSourceTransactionManager;

View File

@ -41,7 +41,7 @@ import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.AudioBroadcastResult; import com.genersoft.iot.vmp.vmanager.bean.AudioBroadcastResult;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import com.genersoft.iot.vmp.vmanager.bean.StreamContent; import com.genersoft.iot.vmp.vmanager.bean.StreamContent;
import com.genersoft.iot.vmp.vmanager.gb28181.play.bean.AudioBroadcastEvent; import com.genersoft.iot.vmp.gb28181.controller.bean.AudioBroadcastEvent;
import gov.nist.javax.sip.message.SIPResponse; import gov.nist.javax.sip.message.SIPResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -3,7 +3,7 @@ package com.genersoft.iot.vmp.storager;
import com.genersoft.iot.vmp.gb28181.bean.*; import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; import com.genersoft.iot.vmp.service.bean.GPSMsgInfo;
import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo; import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelReduce;
import java.util.List; import java.util.List;

View File

@ -12,7 +12,7 @@ import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
import com.genersoft.iot.vmp.storager.dao.GbStreamMapper; import com.genersoft.iot.vmp.storager.dao.GbStreamMapper;
import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo; import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo;
import com.genersoft.iot.vmp.utils.DateUtil; import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.genersoft.iot.vmp.gb28181.controller.bean.ChannelReduce;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.datasource.DataSourceTransactionManager;

View File

@ -301,8 +301,8 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
|| streamInfo.getOriginType() == OriginType.FFMPEG_PULL.ordinal() ) { || streamInfo.getOriginType() == OriginType.FFMPEG_PULL.ordinal() ) {
if (streamProxyMapForDb.get(key) != null) { if (streamProxyMapForDb.get(key) != null) {
redisCatchStorage.addStream(mediaServer, "pull", streamInfo.getApp(), streamInfo.getStream(), streamInfo.getMediaInfo()); redisCatchStorage.addStream(mediaServer, "pull", streamInfo.getApp(), streamInfo.getStream(), streamInfo.getMediaInfo());
if (streamProxy.getGbStatus() == 1 && streamProxy.getGbId() > 0) { if ("OFF".equalsIgnoreCase(streamProxy.getGbStatus()) && streamProxy.getGbId() > 0) {
streamProxy.setGbStatus(1); streamProxy.setGbStatus("ON");
channelListForOnline.add(streamProxy.getCommonGBChannel()); channelListForOnline.add(streamProxy.getCommonGBChannel());
} }
streamProxyMapForDb.remove(key); streamProxyMapForDb.remove(key);
@ -317,8 +317,8 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
List<StreamProxy> streamProxiesForRemove = new ArrayList<>(); List<StreamProxy> streamProxiesForRemove = new ArrayList<>();
if (!streamProxyMapForDb.isEmpty()) { if (!streamProxyMapForDb.isEmpty()) {
for (StreamProxy streamProxy : streamProxyMapForDb.values()) { for (StreamProxy streamProxy : streamProxyMapForDb.values()) {
if (streamProxy.getGbStatus() == 0 && streamProxy.getGbId() > 0) { if ("ON".equalsIgnoreCase(streamProxy.getGbStatus()) && streamProxy.getGbId() > 0) {
streamProxy.setGbStatus(0); streamProxy.setGbStatus("OFF");
channelListForOffline.add(streamProxy.getCommonGBChannel()); channelListForOffline.add(streamProxy.getCommonGBChannel());
} }
// 移除开启了无人观看自动移除的流 // 移除开启了无人观看自动移除的流
@ -359,13 +359,13 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
List<CommonGBChannel> channelListForOffline = new ArrayList<>(); List<CommonGBChannel> channelListForOffline = new ArrayList<>();
for (StreamProxy streamProxy : streamProxies) { for (StreamProxy streamProxy : streamProxies) {
if (streamProxy.getGbId() > 0 && streamProxy.getGbStatus() == 1) { if (streamProxy.getGbId() > 0 && "ON".equalsIgnoreCase(streamProxy.getGbStatus())) {
channelListForOffline.add(streamProxy.getCommonGBChannel()); channelListForOffline.add(streamProxy.getCommonGBChannel());
} }
if (streamProxy.getGbId() == 0 && streamProxy.isEnableRemoveNoneReader()) { if (streamProxy.getGbId() == 0 && streamProxy.isEnableRemoveNoneReader()) {
streamProxiesForRemove.add(streamProxy); streamProxiesForRemove.add(streamProxy);
} }
if (streamProxy.getGbStatus() == 1) { if ("ON".equalsIgnoreCase(streamProxy.getGbStatus())) {
streamProxiesForSendMessage.add(streamProxy); streamProxiesForSendMessage.add(streamProxy);
} }
} }
@ -397,7 +397,7 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
} }
streamProxy.setStatus(true); streamProxy.setStatus(true);
streamProxyMapper.online(streamProxy.getId()); streamProxyMapper.online(streamProxy.getId());
streamProxy.setGbStatus(status?1:0); streamProxy.setGbStatus(status?"ON":"OFF");
if (streamProxy.getGbId() > 0) { if (streamProxy.getGbId() > 0) {
if (status) { if (status) {
gbChannelService.online(streamProxy.getCommonGBChannel()); gbChannelService.online(streamProxy.getCommonGBChannel());

View File

@ -239,7 +239,7 @@ public class StreamPushController {
if (ObjectUtils.isEmpty(stream.getApp()) && ObjectUtils.isEmpty(stream.getStream())) { if (ObjectUtils.isEmpty(stream.getApp()) && ObjectUtils.isEmpty(stream.getStream())) {
throw new ControllerException(ErrorCode.ERROR400.getCode(), "app或stream不可为空"); throw new ControllerException(ErrorCode.ERROR400.getCode(), "app或stream不可为空");
} }
stream.setGbStatus(0); stream.setGbStatus("OFF");
stream.setPushIng(false); stream.setPushIng(false);
if (!streamPushService.add(stream)) { if (!streamPushService.add(stream)) {
throw new ControllerException(ErrorCode.ERROR100); throw new ControllerException(ErrorCode.ERROR100);

View File

@ -104,7 +104,7 @@ public class StreamPushUploadFileHandler extends AnalysisEventListener<StreamPus
streamPush.setApp(streamPushExcelDto.getApp()); streamPush.setApp(streamPushExcelDto.getApp());
streamPush.setStream(streamPushExcelDto.getStream()); streamPush.setStream(streamPushExcelDto.getStream());
streamPush.setGbDeviceId(streamPushExcelDto.getGbId()); streamPush.setGbDeviceId(streamPushExcelDto.getGbId());
streamPush.setGbStatus(streamPushExcelDto.isStatus()?1:0); streamPush.setGbStatus(streamPushExcelDto.isStatus()?"ON":"OFF");
streamPush.setCreateTime(DateUtil.getNow()); streamPush.setCreateTime(DateUtil.getNow());
streamPush.setMediaServerId(defaultMediaServerId); streamPush.setMediaServerId(defaultMediaServerId);
streamPush.setGbName(streamPushExcelDto.getName()); streamPush.setGbName(streamPushExcelDto.getName());

View File

@ -153,7 +153,7 @@ public class StreamPushServiceImpl implements IStreamPushService {
push.setPushIng(false); push.setPushIng(false);
if (push.getGbDeviceId() != null) { if (push.getGbDeviceId() != null) {
if (userSetting.isUsePushingAsStatus()) { if (userSetting.isUsePushingAsStatus()) {
push.setGbStatus(0); push.setGbStatus("OFF");
updateStatus(push); updateStatus(push);
// streamPushMapper.updatePushStatus(event.getApp(), event.getStream(), false); // streamPushMapper.updatePushStatus(event.getApp(), event.getStream(), false);
// eventPublisher.catalogEventPublishForStream(null, gbStream, CatalogEvent.OFF); // eventPublisher.catalogEventPublishForStream(null, gbStream, CatalogEvent.OFF);
@ -511,7 +511,7 @@ public class StreamPushServiceImpl implements IStreamPushService {
if (push.getGbDeviceId() != null) { if (push.getGbDeviceId() != null) {
return; return;
} }
if (push.getGbStatus() == 1) { if ("ON".equalsIgnoreCase(push.getGbStatus())) {
gbChannelService.online(push.getCommonGBChannel()); gbChannelService.online(push.getCommonGBChannel());
}else { }else {
gbChannelService.offline(push.getCommonGBChannel()); gbChannelService.offline(push.getCommonGBChannel());
@ -525,7 +525,7 @@ public class StreamPushServiceImpl implements IStreamPushService {
StreamPush streamPushInDb = streamPushMapper.select(streamPushId); StreamPush streamPushInDb = streamPushMapper.select(streamPushId);
streamPushInDb.setPushIng(pushIng); streamPushInDb.setPushIng(pushIng);
if (userSetting.isUsePushingAsStatus()) { if (userSetting.isUsePushingAsStatus()) {
streamPushInDb.setGbStatus(pushIng?1:0); streamPushInDb.setGbStatus(pushIng?"ON":"OFF");
} }
streamPushInDb.setPushTime(DateUtil.getNow()); streamPushInDb.setPushTime(DateUtil.getNow());
updateStatus(streamPushInDb); updateStatus(streamPushInDb);

View File

@ -1,16 +1,89 @@
<template> <template>
<div id="ChannelEdit" v-loading="isLoging" style="width: 100%"> <div id="ChannelEdit" v-loading="locading" style="width: 100%">
<el-form ref="passwordForm" :rules="rules" status-icon label-width="80px"> <el-form ref="passwordForm" status-icon label-width="160px" style="padding-top: 1rem">
<!-- <el-form-item label="gbName" prop="gbName">--> <el-form-item label="名称" >
<!-- <el-input v-model="form.gbName"></el-input>--> <el-input v-if="form.name" v-model="form.gbName" :placeholder="form.name"></el-input>
<!-- </el-form-item>--> <el-input v-if="!form.name" v-model="form.gbName" placeholder="请输入通道名称"></el-input>
<el-form-item>
<div style="float: right;">
<el-button type="primary" @click="onSubmit"></el-button>
<el-button @click="close"></el-button>
</div>
</el-form-item> </el-form-item>
<el-form-item label="编码" >
<el-input v-if="form.deviceId" v-model="form.gbDeviceId" :placeholder="form.deviceId"></el-input>
<el-input v-if="!form.deviceId" v-model="form.gbDeviceId" placeholder="请输入通道编码"></el-input>
</el-form-item>
<el-form-item label="设备厂商" >
<el-input v-if="form.manufacturer" v-model="form.gbManufacturer" :placeholder="form.manufacturer"></el-input>
<el-input v-if="!form.manufacturer" v-model="form.gbManufacturer" placeholder="请输入设备厂商"></el-input>
</el-form-item>
<el-form-item label="设备型号" >
<el-input v-if="form.model" v-model="form.gbModel" :placeholder="form.model"></el-input>
<el-input v-if="!form.model" v-model="form.gbModel" placeholder="请输入设备型号"></el-input>
</el-form-item>
<el-form-item label="设备归属" >
<el-input v-if="form.owner" v-model="form.gbOwner" :placeholder="form.owner"></el-input>
<el-input v-if="!form.owner" v-model="form.gbOwner" placeholder="请输入设备归属"></el-input>
</el-form-item>
<el-form-item label="行政区域" >
<el-input v-if="form.civilCode" v-model="form.gbCivilCode" :placeholder="form.civilCode"></el-input>
<el-input v-if="!form.civilCode" v-model="form.gbCivilCode" placeholder="请输入行政区域"></el-input>
</el-form-item>
<el-form-item label="警区" >
<el-input v-if="form.block" v-model="form.gbBlock" :placeholder="form.block"></el-input>
<el-input v-if="!form.block" v-model="form.gbBlock" placeholder="请输入警区"></el-input>
</el-form-item>
<el-form-item label="安装地址" >
<el-input v-if="form.address" v-model="form.gbAddress" :placeholder="form.address"></el-input>
<el-input v-if="!form.address" v-model="form.gbAddress" placeholder="请输入安装地址"></el-input>
</el-form-item>
<el-form-item label="子设备" >
<el-select v-model="form.gbParental" style="width: 100%" placeholder="请选择">
<el-option label="有" :value="1"></el-option>
<el-option label="无" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="父节点编码" >
<el-input v-if="form.parentId" v-model="form.gbParentId" :placeholder="form.parentId"></el-input>
<el-input v-if="!form.parentId" v-model="form.gbParentId" placeholder="请输入父节点编码"></el-input>
</el-form-item>
<el-form-item label="信令安全模式" >
<el-select v-model="form.gbSafetyWay" style="width: 100%" placeholder="请选择">
<el-option label="不采用" :value="0"></el-option>
<el-option label="S/MIME签名" :value="2"></el-option>
<el-option label="S/MIME加密签名同时采用" :value="3"></el-option>
<el-option label="数字摘要" :value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item label="注册方式" >
<el-select v-model="form.gbRegisterWay" style="width: 100%" placeholder="请选择">
<el-option label="IETFRFC3261标准" :value="1"></el-option>
<el-option label="基于口令的双向认证" :value="2"></el-option>
<el-option label="基于数字证书的双向认证注册" :value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="证书序列号" >
<el-input type="number" v-if="form.certNum" v-model="form.gbCertNum" :placeholder="form.certNum"></el-input>
<el-input type="number" v-if="!form.certNum" v-model="form.gbCertNum" placeholder="请输入证书序列号"></el-input>
</el-form-item>
<el-form-item label="证书有效标识" >
<el-select v-model="form.gbCertifiable" style="width: 100%" placeholder="请选择">
<el-option label="有效" :value="1"></el-option>
<el-option label="无效" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="无效原因码" >
<el-input type="errCode" v-if="form.gbErrCode" v-model="form.gbCertNum" :placeholder="form.errCode"></el-input>
<el-input type="errCode" v-if="!form.gbErrCode" v-model="form.gbCertNum" placeholder="请输入无效原因码"></el-input>
</el-form-item>
<el-form-item label="证书终止有效期" >
<el-date-picker
v-model="form.gbEndTime"
type="datetime"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item>
<div style="float: right;">
<el-button type="primary" size="mini" @click="onSubmit"></el-button>
<el-button size="mini" @click="close"></el-button>
</div>
</el-form> </el-form>
</div> </div>
</template> </template>
@ -23,12 +96,26 @@ export default {
computed: {}, computed: {},
created() { created() {
// //
// this.getCommonChannel(data=>{
if (data.gbDeviceDbId) {
//
this.getDeviceChannel(chanel=>{
this.form = chanel;
console.log(chanel)
})
}else {
this.form = data;
console.log(data)
}
})
}, },
data() { data() {
return { return {
form: {}, locading: true,
form: {
gbName: "测试",
gbNameLabel: "测试"
},
}; };
}, },
methods: { methods: {
@ -38,18 +125,43 @@ export default {
close: function () { close: function () {
}, },
getChannel:function () { getCommonChannel:function (callback) {
this.$axios({ this.$axios({
method: 'get', method: 'get',
url: "/api/role/all" url: "/api/common/channel/one",
params: {
id: this.id
}
}).then((res) => { }).then((res) => {
this.loading = true;
if (res.data.code === 0) { if (res.data.code === 0) {
this.options=res.data.data if(callback) {
callback(res.data.data)
}
} }
}).catch((error) => { }).catch((error) => {
console.error(error) console.error(error)
}); }).finally(()=>[
this.locading = false
])
},
getDeviceChannel:function (callback) {
this.$axios({
method: 'get',
url: "/api/device/query/channel/raw",
params: {
id: this.id
}
}).then((res) => {
if (res.data.code === 0) {
if(callback) {
callback(res.data.data)
}
}
}).catch((error) => {
console.error(error)
}).finally(()=>[
this.locading = false
])
} }
}, },
}; };

View File

@ -161,7 +161,7 @@
</el-pagination> </el-pagination>
</el-main> </el-main>
</el-container> </el-container>
<channel-edit v-if="editId" id="editId"></channel-edit> <channel-edit v-if="editId" :id="editId"></channel-edit>
<!--设备列表--> <!--设备列表-->
</div> </div>

View File

@ -160,7 +160,7 @@ create table wvp_device_channel (
gb_ip_address character varying(50), gb_ip_address character varying(50),
gb_port integer, gb_port integer,
gb_password character varying(50), gb_password character varying(50),
gb_status integer, gb_status character varying(50) default 'OFF',
gb_longitude double, gb_longitude double,
gb_latitude double, gb_latitude double,
gb_business_group_id character varying(50), gb_business_group_id character varying(50),