Bladeren bron

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

648540858 1 jaar geleden
bovenliggende
commit
d9c0d0637c

+ 8 - 0
src/main/java/com/genersoft/iot/vmp/gb28181/bean/CommonGBChannel.java

@@ -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);
     }

+ 0 - 6
src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceChannel.java

@@ -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;
 

+ 15 - 3
src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java

@@ -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);
+    }
 }

+ 20 - 23
src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java

@@ -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);
+
 }

+ 2 - 0
src/main/java/com/genersoft/iot/vmp/gb28181/service/IGbChannelService.java

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

+ 20 - 0
src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java

@@ -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());
+    }
 }

+ 47 - 7
web_src/src/components/ChannelEdit.vue

@@ -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 () {

+ 7 - 1
web_src/src/components/channelList.vue

@@ -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>