增加通道编辑以及通道重置功能

pull/1642/head
648540858 2024-07-15 17:39:47 +08:00
parent 92c6a10083
commit d9c0d0637c
8 changed files with 119 additions and 40 deletions

View File

@ -211,6 +211,14 @@ public class CommonGBChannel {
@Schema(description = "关联的拉流代理Id流来源是拉流代理时有效")
private Integer streamProxyId;
@Schema(description = "创建时间")
private String createTime;
@Schema(description = "更新时间")
private String updateTime;
public String encode(){
return encode(null);
}

View File

@ -171,12 +171,6 @@ public class DeviceChannel extends CommonGBChannel {
@Schema(description = "云台类型描述字符串")
private String ptzTypeText;
@Schema(description = "创建时间")
private String createTime;
@Schema(description = "更新时间")
private String updateTime;
@Schema(description = "子设备数")
private int subCount;

View File

@ -15,9 +15,7 @@ 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;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -66,4 +64,18 @@ public class CommonChannelController {
public List<NetworkIdentificationType> getNetworkIdentificationTypeList(){
return channelService.getNetworkIdentificationTypeList();
}
@Operation(summary = "更新通道", security = @SecurityRequirement(name = JwtUtils.HEADER))
@ResponseBody
@PostMapping("/update")
public void update(@RequestBody CommonGBChannel channel){
channelService.update(channel);
}
@Operation(summary = "重置国标通道", security = @SecurityRequirement(name = JwtUtils.HEADER))
@ResponseBody
@PostMapping("/reset")
public void reset(Integer id){
channelService.reset(id);
}
}

View File

@ -155,17 +155,11 @@ public interface CommonGBChannelMapper {
@Select(" select\n" +
" id as gb_id,\n" +
" device_db_id,\n" +
" device_db_id as gb_device_db_id,\n" +
" stream_push_id,\n" +
" stream_proxy_id,\n" +
" create_time,\n" +
" update_time,\n" +
" sub_count,\n" +
" stream_id,\n" +
" has_audio,\n" +
" gps_time,\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_name, name) as gb_name,\n" +
" coalesce(gb_manufacturer, manufacturer) as gb_manufacturer,\n" +
@ -210,20 +204,6 @@ public interface CommonGBChannelMapper {
@Update(value = {" <script>" +
"UPDATE wvp_device_channel " +
"SET update_time=#{updateTime}" +
"<if test='streamPushId != null'>, stream_push_id = #{streamPushId}</if>" +
"<if test='streamPushId == null'>, stream_push_id = null</if>" +
"<if test='streamProxyId != null'>, stream_proxy_id = #{streamProxyId}</if>" +
"<if test='streamProxyId == null'>, stream_proxy_id = null</if>" +
"<if test='subCount != null'>, sub_count = #{subCount}</if>" +
"<if test='subCount == null'>, sub_count = null</if>" +
"<if test='streamId != null'>, stream_id = #{streamId}</if>" +
"<if test='streamId == null'>, stream_id = null</if>" +
"<if test='hasAudio != null'>, has_audio = #{hasAudio}</if>" +
"<if test='hasAudio == null'>, has_audio = null</if>" +
"<if test='gpsTime != null'>, gps_time = #{gpsTime}</if>" +
"<if test='gpsTime == null'>, gps_time = null</if>" +
"<if test='streamIdentification != null'>, stream_identification = #{streamIdentification}</if>" +
"<if test='streamIdentification == null'>, stream_identification = null</if>" +
"<if test='gbDeviceId != null'>, gb_device_id = #{gbDeviceId}</if>" +
"<if test='gbDeviceId == null'>, gb_device_id = null</if>" +
"<if test='gbName != null'>, gb_name = #{gbName}</if>" +
@ -234,8 +214,8 @@ public interface CommonGBChannelMapper {
"<if test='gbModel == null'>, gb_model = null</if>" +
"<if test='gbOwner != null' >, gb_owner = #{gbOwner}</if>" +
"<if test='gbOwner == null'>, gb_owner = null</if>" +
"<if test='gbCivilCode, != null' >, gb_civil_code = #{gbCivilCode}</if>" +
"<if test='gbCivilCode, == null'>, gb_civil_code = null</if>" +
"<if test='gbCivilCode != null' >, gb_civil_code = #{gbCivilCode}</if>" +
"<if test='gbCivilCode == null'>, gb_civil_code = null</if>" +
"<if test='gbBlock != null' >, gb_block = #{gbBlock}</if>" +
"<if test='gbBlock == null'>, gb_block = null</if>" +
"<if test='gbAddress != null' >, gb_address = #{gbAddress}</if>" +
@ -476,4 +456,21 @@ public interface CommonGBChannelMapper {
"from wvp_device_channel wdc left join wvp_platform_gb_channel wpgc on wdc.id = wpgc.device_channel_id\n" +
"where wpgc.platform_id = #{platformId}"})
List<CommonGBChannel> queryByPlatformId(@Param("platformId") Integer platformId);
@Update(value = {" <script>" +
" UPDATE wvp_device_channel " +
" SET update_time=#{updateTime}, gb_device_id = null, gb_name = null, gb_manufacturer = null," +
" gb_model = null, gb_owner = null, gb_civil_code = null, gb_block = null, gb_address = null," +
" gb_parental = null, gb_parent_id = null, gb_safety_way = null, gb_register_way = null, gb_cert_num = null," +
" gb_certifiable = null, gb_err_code = null, gb_end_time = null, gb_secrecy = null, gb_ip_address = null, " +
" gb_port = null, gb_password = null, gb_status = null, gb_longitude = null, gb_latitude = null, " +
" gb_ptz_type = null, gb_position_type = null, gb_room_type = null, gb_use_type = null, gb_supply_light_type = null, " +
" gb_direction_type = null, gb_resolution = null, gb_business_group_id = null, gb_download_speed = null, gb_svc_space_support_mod = null, " +
" gb_direction_type = null, gb_resolution = null, gb_business_group_id = null, gb_download_speed = null, gb_svc_space_support_mod = null, " +
" gb_svc_time_support_mode = null" +
" WHERE id = #{id} and device_db_id = #{gbDeviceDbId}"+
" </script>"})
void reset(@Param("id") int id, @Param("gbDeviceDbId") int gbDeviceDbId, @Param("updateTime") String updateTime);
}

View File

@ -38,4 +38,6 @@ public interface IGbChannelService {
List<DeviceType> getDeviceTypeList();
List<NetworkIdentificationType> getNetworkIdentificationTypeList();
void reset(int id);
}

View File

@ -1,10 +1,13 @@
package com.genersoft.iot.vmp.gb28181.service.impl;
import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.gb28181.bean.*;
import com.genersoft.iot.vmp.gb28181.dao.CommonGBChannelMapper;
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
import com.genersoft.iot.vmp.gb28181.service.IGbChannelService;
import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -51,6 +54,7 @@ public class GbChannelServiceImpl implements IGbChannelService {
@Override
public int update(CommonGBChannel commonGBChannel) {
log.warn("[更新通道] 通道ID: {}, ", commonGBChannel.getGbId());
if (commonGBChannel.getGbId() <= 0) {
log.warn("[更新通道] 未找到数据库ID更新失败 {}", commonGBChannel.getGbDeviceDbId());
return 0;
@ -267,4 +271,20 @@ public class GbChannelServiceImpl implements IGbChannelService {
Collections.sort(result);
return result;
}
@Override
public void reset(int id) {
log.info("[重置国标通道] id: {}", id);
CommonGBChannel channel = getOne(id);
if (channel == null ) {
log.warn("[重置国标通道] 未找到对应Id的通道: id: {}", id);
throw new ControllerException(ErrorCode.ERROR400);
}
if (channel.getGbDeviceDbId() <= 0) {
log.warn("[重置国标通道] 非国标下级通道无法重置: id: {}", id);
throw new ControllerException(ErrorCode.ERROR100.getCode(), "非国标下级通道无法重置");
}
// 这个多加一个参数,为了防止将非国标的通道通过此方法清空内容,导致意外发生
commonGBChannelMapper.reset(id, channel.getGbDeviceDbId(), DateUtil.getNow());
}
}

View File

@ -1,14 +1,14 @@
<template>
<div id="ChannelEdit" v-loading="locading" style="width: 100%">
<div v-if="!form.gbId" class="page-header">
<div v-if="form.gbId" class="page-header">
<div class="page-title">
<el-button icon="el-icon-back" size="mini" style="font-size: 20px; color: #000;" type="text" @click="showDevice" ></el-button>
<el-button icon="el-icon-back" size="mini" style="font-size: 20px; color: #000;" type="text" @click="close" ></el-button>
<el-divider direction="vertical"></el-divider>
编辑通道
</div>
<div class="page-header-btn">
<div style="display: inline;">
<el-button icon="el-icon-close" size="mini" style="font-size: 20px; color: #000;" type="text" @click="showDevice" ></el-button>
<el-button icon="el-icon-close" size="mini" style="font-size: 20px; color: #000;" type="text" @click="close" ></el-button>
</div>
</div>
</div>
@ -208,6 +208,7 @@
<div style="float: right;">
<el-button type="primary" @click="onSubmit"></el-button>
<el-button @click="close"></el-button>
<el-button v-if="form.gbDeviceDbId" @click="reset"></el-button>
</div>
</div>
@ -221,7 +222,7 @@ import channelCode from './dialog/channelCode'
export default {
name: "channelEdit",
props: [ 'id',],
props: [ 'id', 'closeEdit'],
components: {
channelCode,
},
@ -237,12 +238,51 @@ export default {
},
methods: {
onSubmit: function () {
this.form.gbDownloadSpeed = this.form.gbDownloadSpeedArray.join("/")
this.$axios({
method: 'post',
url: "/api/common/channel/update",
data: this.form
}).then((res) => {
if (res.data.code === 0) {
this.$message.success("保存成功");
this.close()
}
}).catch((error) => {
console.error(error)
}).finally(()=>[
this.locading = false
])
},
close: function () {
this.closeEdit()
},
showDevice: function () {
reset: function () {
this.$confirm("确定重置为默认内容?", '提示', {
dangerouslyUseHTMLString: true,
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$axios({
method: 'post',
url: "/api/common/channel/reset",
params: {
id: this.form.gbId
}
}).then((res) => {
if (res.data.code === 0) {
this.$message.success("重置成功 已保存");
this.getCommonChannel()
}
}).catch((error) => {
console.error(error)
}).finally(()=>[
this.locading = false
])
}).catch(() => {
});
},
test: function () {

View File

@ -161,7 +161,7 @@
</el-pagination>
</el-main>
</el-container>
<channel-edit v-if="editId" :id="editId"></channel-edit>
<channel-edit v-if="editId" :id="editId" :closeEdit="closeEdit"></channel-edit>
<!--设备列表-->
</div>
@ -549,7 +549,13 @@ export default {
//
handleEdit(row) {
this.editId = row.id
},
//
closeEdit: function (){
this.editId = null
this.getDeviceChannelList()
}
}
};
</script>