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