feat: 更新IMS导出功能,增加呼叫结果和原因字段
This commit is contained in:
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user