fix: 导出SMSC添加result code和result cause列

This commit is contained in:
TsMask
2025-09-28 18:10:35 +08:00
parent 0d0f10eda7
commit bc55dfb9d5
11 changed files with 121 additions and 39 deletions

View File

@@ -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,

View File

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