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

This commit is contained in:
TsMask
2025-04-29 11:56:44 +08:00
parent f1d9596e94
commit bd94b906a0
8 changed files with 316 additions and 53 deletions

View File

@@ -472,9 +472,9 @@ func (s BarProcessor) exportIMS(hour int, columns []string, filePath string) (in
}
// 呼叫类型
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)
@@ -509,16 +509,21 @@ func (s BarProcessor) exportIMS(hour int, columns []string, filePath string) (in
}
// 呼叫结果 非短信都有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"
} else {
callResult := "Other"
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
}
}
}
arr[i] = fmt.Sprintf("%v", callResult)
arr[i] = 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")
// 从第二行开始的数据
@@ -108,13 +111,25 @@ 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" {
cause := fmt.Sprint(v)
for _, v := range dictCDRSipCode {
if cause == v.DataValue {
callResult = i18n.TKey(language, v.DataLabel)
break
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.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,
})
}