fix: 导出SMSC添加result code和result cause列
This commit is contained in:
@@ -434,13 +434,14 @@ func (s BackupExportCDRProcessor) exportSMSC(query neDataModel.CDREventSMSCQuery
|
||||
"Service Type",
|
||||
"Caller",
|
||||
"Called",
|
||||
"Result",
|
||||
"Result Code",
|
||||
"Result Cause",
|
||||
"Time",
|
||||
"Tenant Name", // for multi-tenancy
|
||||
},
|
||||
}
|
||||
// 读取字典数据 CDR 原因码
|
||||
dictCDRCauseCode := s.sysDictService.SelectDictDataByType("cdr_cause_code")
|
||||
dictCDRSMSCCauseCode := s.sysDictService.SelectDictDataByType("cdr_cause_smsc")
|
||||
for _, row := range rows {
|
||||
// 解析 JSON 字符串为 map
|
||||
var cdrJSON map[string]interface{}
|
||||
@@ -470,19 +471,20 @@ func (s BackupExportCDRProcessor) exportSMSC(query neDataModel.CDREventSMSCQuery
|
||||
caller = v.(string)
|
||||
}
|
||||
// 呼叫结果 0失败,1成功
|
||||
callResult := "Fail"
|
||||
callResult := "FAILED"
|
||||
if v, ok := cdrJSON["result"]; ok && v != nil {
|
||||
resultVal := parse.Number(v)
|
||||
if resultVal == 1 {
|
||||
callResult = "Success"
|
||||
callResult = "SUCCESS"
|
||||
}
|
||||
}
|
||||
// 结果原因
|
||||
if v, ok := cdrJSON["cause"]; ok && v != nil && callResult == "Fail" {
|
||||
callCause := "UNKNOW ERROR"
|
||||
if v, ok := cdrJSON["cause"]; ok && v != nil {
|
||||
cause := fmt.Sprint(v)
|
||||
for _, v := range dictCDRCauseCode {
|
||||
for _, v := range dictCDRSMSCCauseCode {
|
||||
if cause == v.DictValue {
|
||||
callResult = fmt.Sprintf("%s, %s", callResult, i18n.TKey(language, v.DictLabel))
|
||||
callCause = i18n.TKey(language, v.DictLabel)
|
||||
break
|
||||
}
|
||||
}
|
||||
@@ -505,6 +507,7 @@ func (s BackupExportCDRProcessor) exportSMSC(query neDataModel.CDREventSMSCQuery
|
||||
caller,
|
||||
called,
|
||||
callResult,
|
||||
callCause,
|
||||
timeStr,
|
||||
row.TenantName,
|
||||
})
|
||||
@@ -525,12 +528,13 @@ func (s BackupExportCDRProcessor) exportSMSC(query neDataModel.CDREventSMSCQuery
|
||||
"D1": "Service Type",
|
||||
"E1": "Caller",
|
||||
"F1": "Called",
|
||||
"G1": "Result",
|
||||
"H1": "Time",
|
||||
"I1": "Tenant Name", // for multi-tenancy
|
||||
"G1": "Result Code",
|
||||
"H1": "Result Cause",
|
||||
"I1": "Time",
|
||||
"J1": "Tenant Name", // for multi-tenancy
|
||||
}
|
||||
// 读取字典数据 CDR 原因码
|
||||
dictCDRCauseCode := s.sysDictService.SelectDictDataByType("cdr_cause_code")
|
||||
// dictCDRCauseCode := s.sysDictService.SelectDictDataByType("cdr_cause_code")
|
||||
// 从第二行开始的数据
|
||||
dataCells := make([]map[string]any, 0)
|
||||
for i, row := range rows {
|
||||
@@ -563,23 +567,25 @@ func (s BackupExportCDRProcessor) exportSMSC(query neDataModel.CDREventSMSCQuery
|
||||
caller = v.(string)
|
||||
}
|
||||
// 呼叫结果 0失败,1成功
|
||||
callResult := "Fail"
|
||||
callResult := "500 Internal Server Error"
|
||||
callCause := "Unknown Error"
|
||||
if v, ok := cdrJSON["result"]; ok && v != nil {
|
||||
resultVal := parse.Number(v)
|
||||
if resultVal == 1 {
|
||||
callResult = "Success"
|
||||
callResult = "200 OK"
|
||||
callCause = "Normal Send"
|
||||
}
|
||||
}
|
||||
// 结果原因
|
||||
if v, ok := cdrJSON["cause"]; ok && v != nil && callResult == "Fail" {
|
||||
cause := fmt.Sprint(v)
|
||||
for _, v := range dictCDRCauseCode {
|
||||
if cause == v.DictValue {
|
||||
callResult = fmt.Sprintf("%s, %s", callResult, i18n.TKey(language, v.DictLabel))
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
// if v, ok := cdrJSON["cause"]; ok && v != nil && callResult == "Fail" {
|
||||
// cause := fmt.Sprint(v)
|
||||
// for _, v := range dictCDRCauseCode {
|
||||
// if cause == v.DictValue {
|
||||
// callResult = fmt.Sprintf("%s, %s", callResult, i18n.TKey(language, v.DictLabel))
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// 取时间
|
||||
timeStr := ""
|
||||
if v, ok := cdrJSON["updateTime"]; ok && v != nil {
|
||||
@@ -598,8 +604,9 @@ func (s BackupExportCDRProcessor) exportSMSC(query neDataModel.CDREventSMSCQuery
|
||||
"E" + idx: caller,
|
||||
"F" + idx: called,
|
||||
"G" + idx: callResult,
|
||||
"H" + idx: timeStr,
|
||||
"I" + idx: row.TenantName,
|
||||
"H" + idx: callCause,
|
||||
"I" + idx: timeStr,
|
||||
"J" + idx: row.TenantName,
|
||||
})
|
||||
}
|
||||
// 导出数据表格
|
||||
|
||||
@@ -169,7 +169,7 @@ func (s *IMSController) CDRExport(c *gin.Context) {
|
||||
"G1": "Duration",
|
||||
"H1": "Result Code",
|
||||
"I1": "Result Cause",
|
||||
"J1": "MOS Average",
|
||||
"J1": "MOS",
|
||||
"K1": "Call Connection Time",
|
||||
"L1": "Call Start Time",
|
||||
"M1": "Hangup Time",
|
||||
@@ -286,9 +286,9 @@ func (s *IMSController) CDRExport(c *gin.Context) {
|
||||
"F" + idx: called,
|
||||
"G" + idx: duration,
|
||||
"H" + idx: callResult,
|
||||
"I" + idx: mosAverage,
|
||||
"J" + idx: callConnectionTime,
|
||||
"K" + idx: callCause,
|
||||
"I" + idx: callCause,
|
||||
"J" + idx: mosAverage,
|
||||
"K" + idx: callConnectionTime,
|
||||
"L" + idx: seizureTimeStr,
|
||||
"M" + idx: releaseTimeStr,
|
||||
"N" + idx: tenantName,
|
||||
|
||||
@@ -160,12 +160,13 @@ func (s *SMSCController) CDRExport(c *gin.Context) {
|
||||
"C1": "Service Type",
|
||||
"D1": "Caller",
|
||||
"E1": "Called",
|
||||
"F1": "Result",
|
||||
"G1": "Time",
|
||||
"H1": "Tenant Name", // for multi-tenancy
|
||||
"F1": "Result Code",
|
||||
"G1": "Result Cause",
|
||||
"H1": "Time",
|
||||
"I1": "Tenant Name", // for multi-tenancy
|
||||
}
|
||||
// 读取字典数据 CDR 原因码
|
||||
dictCDRCauseCode := sysService.NewSysDictData.SelectDictDataByType("cdr_cause_code")
|
||||
dictCDRSMSCCauseCode := sysService.NewSysDictData.SelectDictDataByType("cdr_cause_smsc")
|
||||
// 从第二行开始的数据
|
||||
dataCells := make([]map[string]any, 0)
|
||||
for i, row := range rows {
|
||||
@@ -198,19 +199,20 @@ func (s *SMSCController) CDRExport(c *gin.Context) {
|
||||
caller = v.(string)
|
||||
}
|
||||
// 呼叫结果 0失败,1成功
|
||||
callResult := "Fail"
|
||||
callResult := "FAILED"
|
||||
if v, ok := cdrJSON["result"]; ok && v != nil {
|
||||
resultVal := parse.Number(v)
|
||||
if resultVal == 1 {
|
||||
callResult = "Success"
|
||||
callResult = "SUCCESS"
|
||||
}
|
||||
}
|
||||
// 结果原因
|
||||
if v, ok := cdrJSON["cause"]; ok && v != nil && callResult == "Fail" {
|
||||
callCause := "Unknown Error"
|
||||
if v, ok := cdrJSON["cause"]; ok && v != nil {
|
||||
cause := fmt.Sprint(v)
|
||||
for _, v := range dictCDRCauseCode {
|
||||
for _, v := range dictCDRSMSCCauseCode {
|
||||
if cause == v.DictValue {
|
||||
callResult = fmt.Sprintf("%s, %s", callResult, i18n.TKey(language, v.DictLabel))
|
||||
callCause = i18n.TKey(language, v.DictLabel)
|
||||
break
|
||||
}
|
||||
}
|
||||
@@ -234,8 +236,9 @@ func (s *SMSCController) CDRExport(c *gin.Context) {
|
||||
"D" + idx: caller,
|
||||
"E" + idx: called,
|
||||
"F" + idx: callResult,
|
||||
"G" + idx: timeStr,
|
||||
"H" + idx: tenantName,
|
||||
"G" + idx: callCause,
|
||||
"H" + idx: timeStr,
|
||||
"I" + idx: tenantName,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user