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

This commit is contained in:
TsMask
2025-04-28 19:25:22 +08:00
parent 2a0f0c46ca
commit 2a7baeb0b4
8 changed files with 254 additions and 145 deletions

View File

@@ -480,9 +480,9 @@ func (s BackupExportTableProcessor) exportIMS(hour int, columns []string, filePa
}
// 呼叫类型
callType := "sms"
if col == "callType" || col == "call_type" {
if v, ok := cdrJSON["callType"]; ok && v != nil {
callType := "sms"
callTypeLable := "SMS"
if v, ok := cdrJSON["callType"]; ok && v != nil {
callType = v.(string)
@@ -517,16 +517,21 @@ func (s BackupExportTableProcessor) exportIMS(hour int, columns []string, filePa
}
// 呼叫结果 非短信都有code作为结果 sms短信都ok
if col == "cause" {
if v, ok := cdrJSON["cause"]; ok && v != nil {
cause := fmt.Sprint(v)
callResult := "Success"
for _, v := range dictCDRSipCode {
if cause == v.DataValue {
callResult = i18n.TKey(language, v.DataLabel)
break
if callType == "sms" {
arr[i] = "Success"
continue
} else {
if v, ok := cdrJSON["cause"]; ok && v != nil {
callResult := "Other"
cause := fmt.Sprint(v)
for _, v := range dictCDRSipCode {
if cause == v.DataValue {
callResult = i18n.TKey(language, v.DataLabel)
break
}
}
arr[i] = callResult
}
arr[i] = fmt.Sprintf("%v", callResult)
}
}
// 呼叫时间

View File

@@ -55,13 +55,16 @@ 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.FindByType("cdr_sip_code")
// 读取字典数据 CDR SIP响应代码类别类型原因
dictCDRSipCodeCause := sysService.NewSysDictData.FindByType("cdr_sip_code_cause")
// 读取字典数据 CDR 呼叫类型
dictCDRCallType := sysService.NewSysDictData.FindByType("cdr_call_type")
// 从第二行开始的数据
@@ -109,12 +112,24 @@ func (r CDREventIMS) ExportXlsx(rows []model.CDREventIMS, fileName, language str
}
// 呼叫结果 非短信都有code作为结果 sms短信都ok
callResult := "Other"
if v, ok := cdrJSON["cause"]; ok && v != nil && callType != "sms" {
cause := fmt.Sprint(v)
for _, v := range dictCDRSipCode {
if cause == v.DataValue {
callResult = i18n.TKey(language, v.DataLabel)
break
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.DataValue {
callResult = i18n.TKey(language, v.DataLabel)
break
}
}
for _, v := range dictCDRSipCodeCause {
if cause == v.DataValue {
callCause = i18n.TKey(language, v.DataLabel)
break
}
}
}
}
@@ -143,10 +158,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,
})
}