EasyGBS在接入设备过多的情况下如何实现通道信息批量导出/导入?
EasyGBS流媒体平台广泛应用于智慧城市、智慧园区、智慧交通等各领域,通过GB/T28181协议接入,接收设备推流并输出RTMP、RTSP、HLS、FLV直播流分发,其统一的视频监控联网标准及架构,对全面构建安防互联网平台和共享平台起到至关重要的作用。
在部分大型项目中,会碰到EasyGBS现场接入设备数量过多的问题,在网络上,我们要确保如此多设备的承载能力,在管理上,我们也需要对巨大的设备有更加便捷的管理方式,比如对所有接入的通道信息做汇总记录。该功能的实现需要提供完整且准确的通道接入信息,因此我们要设计一个批量将接入通道信息导出的功能。
该功能根据用户需求,可以按照条件导出已录入经纬度信息的通道、未录入经纬度的通道,或者所有的接入通道。
Web按钮:
导出通道信息:
功能实现的参考代码如下:
func createExportChannelXlsx(demo, option string) (string, error) {
file, err := xlsx.OpenFile(demo)
if err != nil {
err = fmt.Errorf("模板文件打开错误, %v", err)
return "", err
}
var channels []models.Channel
switch option {
case "all":
db.SQLite.Table("t_channels").Find(&channels)
case "position":
db.SQLite.Table("t_channels").Where("longitude != ?", 0).Or("latitude != ?", 0).Find(&channels)
case "noposition":
db.SQLite.Table("t_channels").Where("longitude = ? and latitude = ?", 0, 0).Find(&channels)
default:
err := fmt.Errorf("请求通道信息参数错误 %s", option)
return "", err
}
downloadFile := xlsx.NewFile()
var cell *xlsx.Cell
channelsSheet := file.Sheets[0]
for _,v:=range channels{
row := channelsSheet.AddRow()
row.SetHeightCM(1)
cell = row.AddCell()
cell.Value = fmt.Sprintf("%v",v.DeviceID)
cell = row.AddCell()
cell.Value = fmt.Sprintf("%v",v.ID)
cell = row.AddCell()
cell.Value = fmt.Sprintf("%v",v.Name)
cell = row.AddCell()
cell.Value = fmt.Sprintf("%v",v.Manufacturer)
cell = row.AddCell()
if v.Status == "ON"{
cell.Value = "在线"
}else{
cell.Value = "离线"
}
cell = row.AddCell()
cell.Value = fmt.Sprintf("%v",v.Longitude)
cell = row.AddCell()
cell.Value = fmt.Sprintf("%v",v.Latitude)
cell = row.AddCell()
if v.Record == 0{
cell.Value = "关闭"
}else{
cell.Value = "开启"
}
cell = row.AddCell()
if v.Ondemand{
cell.Value = "开启"
}else{
cell.Value = "未开启"
}
}
_, _ = downloadFile.AppendSheet(*channelsSheet, channelsSheet.Name)
tmpFilename := fmt.Sprintf("EasyGBS%sChannels.xlsx",option)
tmpFile := filepath.Join(utils.DataDir(), tmpFilename)
err = downloadFile.Save(tmpFile)
if err != nil {
err = fmt.Errorf("保存导出文件错误, %v", err)
return "",err
}
return tmpFile, nil
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
2020-08-19 国标GB28181客户端EasyGBS视频平台新增用户管理功能如何使用?
2020-08-19 AI养猪,国标GB28181协议视频平台EasyGBS流媒体服务器携手RTMP流媒体服务器EasyDSS协同打造智慧养殖生态圈