fix: 优化定时备份CDR文件名称标记neId

This commit is contained in:
TsMask
2025-09-17 15:09:07 +08:00
parent 9dbe5a19f1
commit 3a3d4fb43b
5 changed files with 68 additions and 88 deletions

View File

@@ -68,26 +68,58 @@ func (s *BackupExportCDRProcessor) Execute(data any) (any, error) {
}
for _, v := range params.DataType {
// 前 hour 小时
now := time.Now()
end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
start := end.Add(-time.Duration(params.Hour) * time.Hour)
switch v {
case "ims":
neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "IMS"}, false, false)
for _, ne := range neList {
result[ne.NeName] = s.exportIMS(params.Hour, ne.RmUID, params.FileType)
query := neDataModel.CDREventIMSQuery{
NeType: ne.NeType,
NeID: ne.NeId,
RmUID: ne.RmUID,
StartTime: start.UnixMilli(),
EndTime: end.UnixMilli(),
}
result[ne.NeName] = s.exportIMS(query, params.FileType)
}
case "smsc":
neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "SMSC"}, false, false)
for _, ne := range neList {
result[ne.NeName] = s.exportSMSC(params.Hour, ne.RmUID, params.FileType)
query := neDataModel.CDREventSMSCQuery{
NeType: ne.NeType,
NeID: ne.NeId,
RmUID: ne.RmUID,
StartTime: start.UnixMilli(),
EndTime: end.UnixMilli(),
}
result[ne.NeName] = s.exportSMSC(query, params.FileType)
}
case "smf":
neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "SMF"}, false, false)
for _, ne := range neList {
result[ne.NeName] = s.exportSMF(params.Hour, ne.RmUID, params.FileType)
query := neDataModel.CDREventSMFQuery{
NeType: ne.NeType,
NeID: ne.NeId,
RmUID: ne.RmUID,
StartTime: start.UnixMilli(),
EndTime: end.UnixMilli(),
}
result[ne.NeName] = s.exportSMF(query, params.FileType)
}
case "sgwc":
neList := s.neInfoService.SelectList(neModel.NeInfo{NeType: "SGWC"}, false, false)
for _, ne := range neList {
result[ne.NeName] = s.exportSGWC(params.Hour, ne.RmUID, params.FileType)
query := neDataModel.CDREventSGWCQuery{
NeType: ne.NeType,
NeID: ne.NeId,
RmUID: ne.RmUID,
StartTime: start.UnixMilli(),
EndTime: end.UnixMilli(),
}
result[ne.NeName] = s.exportSGWC(query, params.FileType)
}
}
}
@@ -97,30 +129,17 @@ func (s *BackupExportCDRProcessor) Execute(data any) (any, error) {
}
// exportIMS 导出IMS-CDR会话事件数据
func (s BackupExportCDRProcessor) exportIMS(hour int, rmUID, fileType string) string {
// 前 hour 小时
now := time.Now()
end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
start := end.Add(-time.Duration(hour) * time.Hour)
func (s BackupExportCDRProcessor) exportIMS(query neDataModel.CDREventIMSQuery, fileType string) string {
language := "en"
query := neDataModel.CDREventIMSQuery{
SortField: "timestamp",
SortOrder: "asc",
RmUID: rmUID,
StartTime: start.UnixMilli(),
EndTime: end.UnixMilli(),
PageNum: 1,
PageSize: 1000_0000,
}
rows, total := s.imsCDREventService.SelectPage(query)
if total == 0 {
return "no data"
}
// 导出文件名称
fileName := fmt.Sprintf("ims_cdr_event_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType)
filePath := filepath.Join(s.backupService.BACKUP_DIR, "/ims_cdr", fileName)
dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS)
fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType)
filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_cdr", strings.ToLower(query.NeType)), fileName)
if runtime.GOOS == "windows" {
filePath = fmt.Sprintf("C:%s", filePath)
}
@@ -390,30 +409,17 @@ func (s BackupExportCDRProcessor) exportIMS(hour int, rmUID, fileType string) st
}
// exportSMSC 导出SMSC-CDR会话事件数据
func (s BackupExportCDRProcessor) exportSMSC(hour int, rmUID, fileType string) string {
// 前 hour 小时
now := time.Now()
end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
start := end.Add(-time.Duration(hour) * time.Hour)
func (s BackupExportCDRProcessor) exportSMSC(query neDataModel.CDREventSMSCQuery, fileType string) string {
language := "en"
query := neDataModel.CDREventSMSCQuery{
SortField: "timestamp",
SortOrder: "asc",
RmUID: rmUID,
StartTime: start.UnixMilli(),
EndTime: end.UnixMilli(),
PageNum: 1,
PageSize: 1000_0000,
}
rows, total := s.smscCDREventService.SelectPage(query)
if total == 0 {
return "no data"
}
// 导出文件名称
fileName := fmt.Sprintf("smsc_cdr_event_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType)
filePath := filepath.Join(s.backupService.BACKUP_DIR, "/smsc_cdr", fileName)
dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS)
fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType)
filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_cdr", strings.ToLower(query.NeType)), fileName)
if runtime.GOOS == "windows" {
filePath = fmt.Sprintf("C:%s", filePath)
}
@@ -611,29 +617,16 @@ func (s BackupExportCDRProcessor) exportSMSC(hour int, rmUID, fileType string) s
}
// exportSMF 导出SMF-CDR会话事件数据
func (s BackupExportCDRProcessor) exportSMF(hour int, rmUID, fileType string) string {
// 前 hour 小时
now := time.Now()
end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
start := end.Add(-time.Duration(hour) * time.Hour)
query := neDataModel.CDREventSMFQuery{
SortField: "timestamp",
SortOrder: "asc",
RmUID: rmUID,
StartTime: start.UnixMilli(),
EndTime: end.UnixMilli(),
PageNum: 1,
PageSize: 1000_0000,
}
func (s BackupExportCDRProcessor) exportSMF(query neDataModel.CDREventSMFQuery, fileType string) string {
rows, total := s.smfCDREventService.SelectPage(query)
if total == 0 {
return "no data"
}
// 导出文件名称
fileName := fmt.Sprintf("smf_cdr_event_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType)
filePath := filepath.Join(s.backupService.BACKUP_DIR, "/smf_cdr", fileName)
dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS)
fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType)
filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_cdr", strings.ToLower(query.NeType)), fileName)
if runtime.GOOS == "windows" {
filePath = fmt.Sprintf("C:%s", filePath)
}
@@ -1023,29 +1016,16 @@ func (s BackupExportCDRProcessor) exportSMF(hour int, rmUID, fileType string) st
}
// exportSGWC 导出SGWC-CDR会话事件数据
func (s BackupExportCDRProcessor) exportSGWC(hour int, rmUID, fileType string) string {
// 前 hour 小时
now := time.Now()
end := time.Date(now.Year(), now.Month(), now.Day(), now.Hour(), 0, 0, 0, now.Location())
start := end.Add(-time.Duration(hour) * time.Hour)
query := neDataModel.CDREventSGWCQuery{
SortField: "timestamp",
SortOrder: "asc",
RmUID: rmUID,
StartTime: start.UnixMilli(),
EndTime: end.UnixMilli(),
PageNum: 1,
PageSize: 1000_0000,
}
func (s BackupExportCDRProcessor) exportSGWC(query neDataModel.CDREventSGWCQuery, fileType string) string {
rows, total := s.sgwcCDREventService.SelectPage(query)
if total == 0 {
return "no data"
}
// 导出文件名称
fileName := fmt.Sprintf("sgwc_cdr_event_export_%d_%s.%s", len(rows), date.ParseDateToStr(end, date.YYYYMMDDHHMMSS), fileType)
filePath := filepath.Join(s.backupService.BACKUP_DIR, "/sgwc_cdr", fileName)
dateStr := date.ParseDateToStr(parse.Number(query.EndTime), date.YYYYMMDDHHMMSS)
fileName := fmt.Sprintf("%s_%s_cdr_export_%d_%s.%s", strings.ToLower(query.NeType), query.NeID, len(rows), dateStr, fileType)
filePath := filepath.Join(s.backupService.BACKUP_DIR, fmt.Sprintf("/%s_cdr", strings.ToLower(query.NeType)), fileName)
if runtime.GOOS == "windows" {
filePath = fmt.Sprintf("C:%s", filePath)
}

View File

@@ -273,11 +273,11 @@ func (r CDREventIMS) SelectByPage(querys model.CDREventIMSQuery) ([]model.CDREve
}
// 查询数据分页
pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
if pageNum == 0 && pageSize > int(total) {
pageSize = int(total)
if querys.PageNum != 0 && querys.PageSize != 0 {
pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
}
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
err := tx.Find(&rows).Error
if err != nil {
logger.Errorf("query find err => %v", err.Error())

View File

@@ -56,11 +56,11 @@ func (r CDREventSGWC) SelectByPage(querys model.CDREventSGWCQuery) ([]model.CDRE
}
// 查询数据分页
pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
if pageNum == 0 && pageSize > int(total) {
pageSize = int(total)
if querys.PageNum != 0 && querys.PageSize != 0 {
pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
}
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
err := tx.Find(&rows).Error
if err != nil {
logger.Errorf("query find err => %v", err.Error())

View File

@@ -254,11 +254,11 @@ func (r CDREventSMF) SelectByPage(querys model.CDREventSMFQuery) ([]model.CDREve
}
// 查询数据分页
pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
if pageNum == 0 && pageSize > int(total) {
pageSize = int(total)
if querys.PageNum != 0 && querys.PageSize != 0 {
pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
}
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
err := tx.Find(&rows).Error
if err != nil {
logger.Errorf("query find err => %v", err.Error())

View File

@@ -277,11 +277,11 @@ func (r CDREventSMSC) SelectByPage(querys model.CDREventSMSCQuery) ([]model.CDRE
}
// 查询数据分页
pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
if pageNum == 0 && pageSize > int(total) {
pageSize = int(total)
if querys.PageNum != 0 && querys.PageSize != 0 {
pageNum, pageSize := datasource.PageNumSize(querys.PageNum, querys.PageSize)
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
}
tx = tx.Limit(pageSize).Offset(pageSize * pageNum)
err := tx.Find(&rows).Error
if err != nil {
logger.Errorf("query find err => %v", err.Error())