feat: 基站状态记录上报和导出功能
This commit is contained in:
86
src/modules/network_data/service/all_nb_state.go
Normal file
86
src/modules/network_data/service/all_nb_state.go
Normal file
@@ -0,0 +1,86 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"be.ems/src/framework/i18n"
|
||||
"be.ems/src/framework/utils/file"
|
||||
"be.ems/src/modules/network_data/model"
|
||||
"be.ems/src/modules/network_data/repository"
|
||||
)
|
||||
|
||||
// 实例化数据层 NBState 结构体
|
||||
var NewNBState = &NBState{
|
||||
nbStateRepository: repository.NewNBState,
|
||||
}
|
||||
|
||||
// NBState 基站状态记录表 服务层处理
|
||||
type NBState struct {
|
||||
nbStateRepository *repository.NBState // 基站状态记录信息
|
||||
}
|
||||
|
||||
// SelectPage 根据条件分页查询
|
||||
func (r NBState) SelectPage(query model.NBStateQuery) ([]model.NBState, int64) {
|
||||
return r.nbStateRepository.SelectByPage(query)
|
||||
}
|
||||
|
||||
// Insert 插入数据
|
||||
func (r NBState) Insert(item model.NBState) int64 {
|
||||
return r.nbStateRepository.Insert(item)
|
||||
}
|
||||
|
||||
// DeleteByIds 批量删除信息
|
||||
func (r NBState) DeleteByIds(ids []string) (int64, error) {
|
||||
// 检查是否存在
|
||||
arr := r.nbStateRepository.SelectByIds(ids)
|
||||
if len(arr) <= 0 {
|
||||
return 0, fmt.Errorf("not data")
|
||||
}
|
||||
|
||||
if len(arr) == len(ids) {
|
||||
rows := r.nbStateRepository.DeleteByIds(ids)
|
||||
return rows, nil
|
||||
}
|
||||
// 删除信息失败!
|
||||
return 0, fmt.Errorf("delete fail")
|
||||
}
|
||||
|
||||
// ExportXlsx 导出数据到 xlsx 文件
|
||||
func (r NBState) ExportXlsx(rows []model.NBState, fileName, language string) (string, error) {
|
||||
// 第一行表头标题
|
||||
headerCells := map[string]string{
|
||||
"A1": i18n.TKey(language, "nbState.export.id"),
|
||||
"B1": i18n.TKey(language, "nbState.export.name"),
|
||||
"C1": i18n.TKey(language, "nbState.export.position"),
|
||||
"D1": i18n.TKey(language, "nbState.export.address"),
|
||||
"E1": i18n.TKey(language, "nbState.export.nbName"),
|
||||
"F1": i18n.TKey(language, "nbState.export.ueNum"),
|
||||
"G1": i18n.TKey(language, "nbState.export.state"),
|
||||
"H1": i18n.TKey(language, "nbState.export.time"),
|
||||
}
|
||||
|
||||
// 从第二行开始的数据
|
||||
dataCells := make([]map[string]any, 0)
|
||||
for i, row := range rows {
|
||||
idx := strconv.Itoa(i + 2)
|
||||
// 角色状态
|
||||
statusValue := i18n.TKey(language, "dictData.offline")
|
||||
if row.State == "ON" {
|
||||
statusValue = i18n.TKey(language, "dictData.online")
|
||||
}
|
||||
dataCells = append(dataCells, map[string]any{
|
||||
"A" + idx: row.ID,
|
||||
"B" + idx: row.Name,
|
||||
"C" + idx: row.Position,
|
||||
"D" + idx: row.Address,
|
||||
"E" + idx: row.NbName,
|
||||
"F" + idx: row.UeNum,
|
||||
"G" + idx: statusValue,
|
||||
"H" + idx: row.Time,
|
||||
})
|
||||
}
|
||||
|
||||
// 导出数据表格
|
||||
return file.WriteSheet(headerCells, dataCells, fileName, "Sheet1")
|
||||
}
|
||||
Reference in New Issue
Block a user