feat: 更新IMS导出功能,增加呼叫结果和原因字段

This commit is contained in:
TsMask
2025-04-28 14:52:36 +08:00
parent eaf0add76c
commit 9b97890e33
2 changed files with 63 additions and 32 deletions

View File

@@ -166,14 +166,16 @@ func (s *IMSController) CDRExport(c *gin.Context) {
"C1": "Type",
"D1": "Caller",
"E1": "Called",
"F1": "Result",
"G1": "Duration",
"H1": "Call Start Time",
"I1": "Hangup Time",
"J1": "Tenant Name", // for multi-tenancy
"F1": "Duration",
"G1": "Result Code",
"H1": "Result Cause",
"I1": "Call Start Time",
"J1": "Hangup Time",
"K1": "Tenant Name", // for multi-tenancy
}
// 读取字典数据 CDR SIP响应代码类别类型
dictCDRSipCode := sysService.NewSysDictData.SelectDictDataByType("cdr_sip_code")
dictCDRSipCodeCause := sysService.NewSysDictData.SelectDictDataByType("cdr_sip_code_cause")
// 读取字典数据 CDR 呼叫类型
dictCDRCallType := sysService.NewSysDictData.SelectDictDataByType("cdr_call_type")
// 从第二行开始的数据
@@ -220,8 +222,13 @@ func (s *IMSController) CDRExport(c *gin.Context) {
duration = fmt.Sprintf("%ds", parse.Number(v))
}
// 呼叫结果 非短信都有code作为结果 sms短信都ok
callResult := "Success"
if v, ok := cdrJSON["cause"]; ok && v != nil && callType != "sms" {
callResult := "Other"
callCause := "Call failure for other reason"
if callType == "sms" {
callResult = "Success"
callCause = "Normal Send"
} else {
if v, ok := cdrJSON["cause"]; ok && v != nil {
cause := fmt.Sprint(v)
for _, v := range dictCDRSipCode {
if cause == v.DictValue {
@@ -229,6 +236,13 @@ func (s *IMSController) CDRExport(c *gin.Context) {
break
}
}
for _, v := range dictCDRSipCodeCause {
if cause == v.DictValue {
callCause = i18n.TKey(language, v.DictLabel)
break
}
}
}
}
// 呼叫时间
seizureTimeStr := ""
@@ -257,11 +271,12 @@ func (s *IMSController) CDRExport(c *gin.Context) {
"C" + idx: callTypeLable,
"D" + idx: caller,
"E" + idx: called,
"F" + idx: callResult,
"G" + idx: duration,
"H" + idx: seizureTimeStr,
"I" + idx: releaseTimeStr,
"J" + idx: tenantName,
"F" + idx: duration,
"G" + idx: callResult,
"H" + idx: callCause,
"I" + idx: seizureTimeStr,
"J" + idx: releaseTimeStr,
"K" + idx: tenantName,
})
}

View File

@@ -60,13 +60,15 @@ func (r CDREventIMS) ExportXlsx(rows []model.CDREventIMS, fileName, language str
"C1": "Type",
"D1": "Caller",
"E1": "Called",
"F1": "Result",
"G1": "Duration",
"H1": "Call Start Time",
"I1": "Hangup Time",
"F1": "Duration",
"G1": "Result Code",
"H1": "Result Cause",
"I1": "Call Start Time",
"J1": "Hangup Time",
}
// 读取字典数据 CDR SIP响应代码类别类型
dictCDRSipCode := sysService.NewSysDictData.SelectDictDataByType("cdr_sip_code")
dictCDRSipCodeCause := sysService.NewSysDictData.SelectDictDataByType("cdr_sip_code_cause")
// 读取字典数据 CDR 呼叫类型
dictCDRCallType := sysService.NewSysDictData.SelectDictDataByType("cdr_call_type")
// 从第二行开始的数据
@@ -113,8 +115,14 @@ func (r CDREventIMS) ExportXlsx(rows []model.CDREventIMS, fileName, language str
duration = fmt.Sprintf("%ds", parse.Number(v))
}
// 呼叫结果 非短信都有code作为结果 sms短信都ok
callResult := "Success"
if v, ok := cdrJSON["cause"]; ok && v != nil && callType != "sms" {
// 呼叫结果 非短信都有code作为结果 sms短信都ok
callResult := "Other"
callCause := "Call failure for other reason"
if callType == "sms" {
callResult = "Success"
callCause = "Normal Send"
} else {
if v, ok := cdrJSON["cause"]; ok && v != nil {
cause := fmt.Sprint(v)
for _, v := range dictCDRSipCode {
if cause == v.DictValue {
@@ -122,6 +130,13 @@ func (r CDREventIMS) ExportXlsx(rows []model.CDREventIMS, fileName, language str
break
}
}
for _, v := range dictCDRSipCodeCause {
if cause == v.DictValue {
callCause = i18n.TKey(language, v.DictLabel)
break
}
}
}
}
// 呼叫时间
seizureTimeStr := ""
@@ -148,10 +163,11 @@ func (r CDREventIMS) ExportXlsx(rows []model.CDREventIMS, fileName, language str
"C" + idx: callTypeLable,
"D" + idx: caller,
"E" + idx: called,
"F" + idx: callResult,
"G" + idx: duration,
"H" + idx: seizureTimeStr,
"I" + idx: releaseTimeStr,
"F" + idx: duration,
"G" + idx: callResult,
"H" + idx: callCause,
"I" + idx: seizureTimeStr,
"J" + idx: releaseTimeStr,
})
}