Files
web.ems/wxc2_omc/performance/generalCsta/downCDR.php
2024-10-22 10:34:29 +08:00

591 lines
21 KiB
PHP
Executable File

<?php
require("../../inc/lib.inc");
global $OMC_server;
$sysTypeNo=$_GET['sysTypeNo'];
$cstaDbConn=mysqli_connect($OMC_server[0]['host'],$OMC_server[0]['user'],$OMC_server[0]['password'], 'CSTA_DB');
$objDbConn=mysqli_connect($OMC_server[0]['host'],$OMC_server[0]['user'],$OMC_server[0]['password'], 'OBJ_'.$sysTypeNo);
$page_id=$_GET['page_id'];
$sel_date_from=$_GET['sel_date_from'];
$sel_date_to=$_GET['sel_date_to'];
$show_type=$_GET['show_type'];
$startTime=date("Y-m-d H:i:s",mktime(0,0,0,date("m"),date("d")-$sel_date_from,date("Y")));
$endTime=date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-$sel_date_to,date("Y")));
switch($sysTypeNo){
case '350':
$sumSql="SELECT SUM(MS_to_SMSC_attempt) AS total_MS_to_SMSC_attempt,SUM(MS_to_SMSC_success) AS total_MS_to_SMSC_success,
SUM(MS_to_SMSC_sysfail+MS_to_SMSC_userfail+MS_to_SMSC_smfail) AS total_MS_to_SMSC_Failure,
SUM(MS_to_SMSC_byte) AS total_MS_to_SMSC_byte,
SUM(PPS_to_SMSC_attempt) AS total_PPS_to_SMSC_attempt,
SUM(PPS_to_SMSC_success) AS total_PPS_to_SMSC_success,
SUM(PPS_to_SMSC_sysfail+PPS_to_SMSC_userfail+PPS_to_SMSC_smfail) AS total_PPS_to_SMSC_Failure,
SUM(PPS_to_SMSC_byte) AS total_PPS_to_SMSC_byte,
SUM(VMS_to_SMSC_attempt) AS total_VMS_to_SMSC_attempt,
SUM(VMS_to_SMSC_success) AS total_VMS_to_SMSC_success,
SUM(VMS_to_SMSC_sysfail+VMS_to_SMSC_userfail+VMS_to_SMSC_smfail) AS total_VMS_to_SMSC_Failure,
SUM(VMS_to_SMSC_byte) AS total_VMS_to_SMSC_byte,
SUM(SMPP_to_SMSC_attempt) AS total_SMPP_to_SMSC_attempt,
SUM(SMPP_to_SMSC_success) AS total_SMPP_to_SMSC_success,
SUM(SMPP_to_SMSC_sysfail+SMPP_to_SMSC_userfail+SMPP_to_SMSC_smfail) AS total_SMPP_to_SMSC_Failure,
SUM(SMPP_to_SMSC_byte) AS total_SMPP_to_SMSC_byte,
SUM(SMSC_to_MS_attempt) AS total_SMSC_to_MS_attempt,
SUM(SMSC_to_MS_success) AS total_SMSC_to_MS_success,
SUM(SMSC_to_MS_sysfail+SMSC_to_MS_userfail+SMSC_to_MS_smfail) AS total_SMSC_to_MS_Failure,
SUM(SMSC_to_MS_byte) AS total_SMSC_to_MS_byte,
SUM(SMSC_to_PPS_attempt) AS total_SMSC_to_PPS_attempt,
SUM(SMSC_to_PPS_success) AS total_SMSC_to_PPS_success,
SUM(SMSC_to_PPS_sysfail+SMSC_to_PPS_smfail+SMSC_to_PPS_userfail) AS total_SMSC_to_PPS_Failure,
SUM(SMSC_to_PPS_byte) AS total_SMSC_to_PPS_byte,
SUM(SMSC_to_VMS_attempt) AS total_SMSC_to_VMS_attempt,
SUM(SMSC_to_VMS_success) AS total_SMSC_to_VMS_success,
SUM(SMSC_to_VMS_sysfail+SMSC_to_VMS_userfail+SMSC_to_VMS_smfail) AS total_SMSC_to_VMS_Failure,
SUM(SMSC_to_VMS_byte) AS total_SMSC_to_VMS_byte,
SUM(SMSC_to_SMPP_attempt) AS total_SMSC_to_SMPP_attempt,
SUM(SMSC_to_SMPP_success) AS total_SMSC_to_SMPP_success,
SUM(SMSC_to_SMPP_sysfail+SMSC_to_SMPP_userfail+SMSC_to_SMPP_smfail) AS total_SMSC_to_SMPP_Failure,
SUM(SMSC_to_SMPP_byte) AS total_SMSC_to_SMPP_byte
FROM CSTA_DB.smscDetailData
WHERE csta_datetime >= '{$startTime}'
AND csta_datetime <= '{$endTime}'";
// echo "sumSql=$sumSql";
$res=mysqli_query($cstaDbConn,$sumSql);
echo mysqli_error($cstaDbConn);
$num=mysqli_num_rows($res);
$row=@mysqli_fetch_array($res,MYSQLI_ASSOC);
$title=array('Type');
$valueArr=array();
foreach ($row as $key => $value) {
///echo "Key: $key, Value: $value\n<br>";
if(!$value) $value=0;
$parts = explode('_', $key);
$title[]= $parts[1].'_' .$parts[2]."\n".$parts[3];
$hang=$parts[4];
$lie=$parts[1].'_' .$parts[2].'_'.$parts[3];
$valueArr[$hang][$lie]=$value;
}
$uniqueTitle=array_unique($title);
// var_dump($uniqueTitle);
$file_name = 'SMSC-CDR.csv';
$file = fopen($file_name, 'w');
fputcsv($file, $uniqueTitle);
foreach ($valueArr as $one => $two) {
//塞入每行数据
$nowData=array("$one");
foreach ($two as $key => $value) {
$nowData[]=$value;
}
fputcsv($file, $nowData);
}
// 关闭文件
fclose($file);
// 检查文件是否存在
if (file_exists($file_name)) {
header("Content-type: application/csv");
//use for download csv in https
header('Expires: 0');
header('Pragma: public');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
}
break;
case '320':
//Service
if($page_id == 0)
{
$file_name = 'MSC-Service.csv';
$file = fopen($file_name, 'w');
//没有hour 20240920
$hang= [
"Subs to sbus-GSM" => 5,
"Subs to trunk-GSM" => 6,
"Trunk to subs-GSM" => 7,
"Trunk to trunk" => 8,
"Intraconnection" => 9,
"Subs to IP-GSM" => 10,
"Trunk to IP" => 11,
"Mobile originated-GSM" => 12,
"Mobile terminated-GSM" => 13,
"In trunk" => 14,
"Out trunk" => 15,
"IP terminated"=>16,
"Subs to sbus-UMTS" => 17,
"Subs to trunk-UMTS" => 18,
"Trunk to subs-UMTS" => 19,
"Subs to IP-UMTS" => 20,
"Mobile originated-UMTS" => 21,
"Mobile terminated-UMTS" => 22,
];
$lie=array("Type","Attempt","Success","CallDeny","NetBusy","CallerClear","SubBusy","NoAnswer","SignalErr","Duration");
fputcsv($file, $lie);
foreach ($hang as $key => $value) {
//echo "Key: $key, Value: $value\n<br>";
if($value<17){
$database="mscSumData";
}else{
$database="mscSum3gData";
}
$sql="SELECT
SUM( Attempt ) AS TotalAttempts,
SUM( Success ) AS TotalSuccess,
SUM( CallDeny ) AS TotalCallDeny,
SUM( NetBusy ) AS TotalNetBusy,
SUM( CallerClear ) AS TotalCallerClear,
SUM( SubBusy ) AS TotalSubBusy,
SUM( NoAnswer ) AS TotalNoAnswer,
SUM( SignalErr ) AS TotalSignalErr,
SUM( Duration ) AS TotalDuration
FROM
CSTA_DB.{$database}
WHERE csta_datetime >= '{$startTime}'
AND csta_datetime <= '{$endTime}'
AND key_type = '{$value}'";
//echo "sql=$sql<br>";
$res=mysqli_query($cstaDbConn,$sql);
echo mysqli_error($cstaDbConn);
$num=mysqli_num_rows($res);
// if (!$num){
// echo "<script>alert('MSC-Service Data is null');
// window.location.href='./general_csta_down.php?sysTypeNo=$sysTypeNo&show_type=$show_type&page_id=$page_id&sel_date_from=$sel_date_from&sel_date_to=$sel_date_to&keyOne=$keyOne&keyTwo=$keyTwo';
// </script>";
// fclose($file);
// return false;
// }
$row=@mysqli_fetch_array($res,MYSQLI_ASSOC);
// echo "<pre>";
// print_r($row);
// echo "</pre>";
$valueArr=array($key);
foreach ($row as $rowKey => $rowValue) {
if(!$rowValue) $rowValue=0;
// echo "Key: $rowKey, Value: $rowValue\n<br>";
$valueArr[]=$rowValue;
}
fputcsv($file, $valueArr);
}
// 关闭文件
fclose($file);
// 检查文件是否存在
if (file_exists($file_name)) {
header("Content-type: application/csv");
//use for download csv in https
header('Expires: 0');
header('Pragma: public');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
}
}
//Trunk Group
else if($page_id == 1)
{
$titleSql="
SELECT
T1.*
FROM
OBJ_320.param_99 AS T1,
paramConf AS T2
WHERE
T1.level_1 = T2.level_1
AND T1.level_2 = T2.level_2
AND T1.level_3 = T2.level_3
AND T1.level_4 = T2.level_4
AND T1.level_5 = T2.level_5
AND T1.level_6 = T2.level_6
AND T1.level_7 = T2.level_7
AND T1.level_8 = T2.level_8
AND T1.level_9 = T2.level_9
AND T1.level_10 = T2.level_10
AND T2.name_2 = 'tgTitle'
";
$result=@mysqli_query($objDbConn,$titleSql);
$TrunkGroupCount=mysqli_num_rows($result);
// $rows = @mysqli_fetch_array($result,MYSQLI_ASSOC);
if($TrunkGroupCount>0)
{
while($rows = @mysqli_fetch_array($result))
{
//get the instanceNo of the tg
$trunk_no=$rows[instanceNo]+0;
$trunk_status[$trunk_no]=1;
$trunk_element_title[$trunk_no]=$rows[initValue];
}
}
// echo "<pre>";
// echo print_r($trunk_element_title);
// echo "</pre>";
$dataSql="
SELECT
key_e1_tg,
SUM(Attempt) AS Total_Attempt,
SUM(Success) AS Total_Success,
SUM(Duration) AS Total_Duration,
SUM(SignalErr) AS Total_SignalErr,
SUM(CallDeny) AS Total_CallDeny,
SUM(NetBusy) AS Total_NetBusy,
SUM(CallerClear) AS Total_CallerClear,
SUM(SubBusy) AS Total_SubBusy,
SUM(NoAnswer) AS Total_NoAnswer
FROM
(
SELECT
Attempt, Success, Duration, SignalErr, CallDeny, NetBusy, CallerClear, SubBusy, NoAnswer, key_type, key_e1_tg
FROM
CSTA_DB.mscSumData
WHERE
csta_datetime >= '{$startTime}'
AND csta_datetime <= '{$endTime}'
AND key_type IN ('3', '4')
) AS combined
GROUP BY
key_e1_tg;
";
$data=@mysqli_query($cstaDbConn,$dataSql);
echo mysqli_error($cstaDbConn);
$dataNum=mysqli_num_rows($data);
if (!$dataNum){
echo "<script>alert('MSC-Trunk Group Data is null');
window.location.href='./general_csta_down.php?sysTypeNo=$sysTypeNo&show_type=$show_type&page_id=$page_id&sel_date_from=$sel_date_from&sel_date_to=$sel_date_to&keyOne=$keyOne&keyTwo=$keyTwo';
</script>";
return false;
}
// $dataRow=@mysqli_fetch_array($data,MYSQLI_ASSOC);
$columnTitle=array(
"TG No.",
"Element Title",
"Attempt",
"Success",
"Call Deny",
"Net Busy",
"Caller Clear",
"Sub Busy",
"No Answer",
"Signal Error",
"Total Call Duration",
);
$file_name = 'MSC-Trunk Group.csv';
$file = fopen($file_name, 'w');
fputcsv($file, $columnTitle);
if($dataNum>0)
{
while($dataRow = @mysqli_fetch_array($data,MYSQLI_ASSOC))
{
// echo "<pre>";
// print_r($dataRow);
// echo "</pre>";
if($trunk_element_title[$dataRow['key_e1_tg']])
{
fputcsv($file,[$dataRow['key_e1_tg'],$trunk_element_title[$dataRow['key_e1_tg']],$dataRow['Total_Attempt'],
$dataRow['Total_Success'],$dataRow['Total_CallDeny'],$dataRow['Total_NetBusy'],$dataRow['Total_CallerClear'],
$dataRow['Total_SubBusy'],$dataRow['Total_NoAnswer'],$dataRow['Total_SignalErr'],$dataRow['Total_Duration']]);
}
}
}
// 关闭文件
fclose($file);
// 检查文件是否存在
if (file_exists($file_name)) {
header("Content-type: application/csv");
//use for download csv in https
header('Expires: 0');
header('Pragma: public');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
}
}
else if($page_id == 2)
{
$service_label=array(
1=>"SUB SUB",
2=>"SUB TRK",
3=>"TRK SUB",
4=>"TRK TRK",
5=>"INTRA",
6=>"SUB IP",
7=>"TRK IP",
8=>"MO",
9=>"MT",
10=>"IN TRK",
11=>"OUT TRK",
);
$service_num=sizeof($service_label);
$service_labelobj=array(
"SUB SUB"=>"5,17",
"SUB TRK"=>"6,18",
"TRK SUB"=>"7,19",
"TRK TRK"=>"8",
"INTRA"=>"9",
"SUB IP"=>"10,20",
"TRK IP"=>"11",
"MO"=>"12,21",
"MT"=>"13,22",
"IN TRK"=>"14",
"OUT TRK"=>"15",
);
$file_name = 'MSC-Erlang.csv';
$file = fopen($file_name, 'w');
for($i=1;$i<=$service_num;$i++){
fputcsv($file, [$service_label[$i].":"]);
$keyType= explode(",", $service_labelobj["".$service_label[$i]]);
$hourSql="
SELECT
DATE_FORMAT(csta_datetime, '%m-%d %H:00:00') AS hour,
SUM(Duration) AS Total_Duration
FROM
CSTA_DB.mscSumData
WHERE
csta_datetime >= '{$startTime}'
AND csta_datetime <= '{$endTime}'
AND key_type = '".$keyType[0]."'
GROUP BY
hour
ORDER BY
hour;
";
//echo "$=$hourSql<br>";
$hourData=@mysqli_query($cstaDbConn,$hourSql);
echo mysqli_error($cstaDbConn);
$hourDataNum=mysqli_num_rows($hourData);
//echo "hourDataNum=$hourDataNum";
$timeArr=array('','');
$valueArr=array('','GSM');
//GSM
while($hourDataRow = @mysqli_fetch_array($hourData,MYSQLI_ASSOC))
{
// echo "<pre>";
// print_r($hourDataRow);
// echo "</pre>";
$timeArr[]= str_replace(" ", "\r\n", $hourDataRow['hour']);
if($hourDataRow['Total_Duration']){
$valueArr[]=change2point($hourDataRow['Total_Duration']/3600);
}else{
$valueArr[]="0";
}
}
fputcsv($file, $timeArr);
fputcsv($file, $valueArr);
if(count($keyType)==2){
$hour3GSql="
SELECT
DATE_FORMAT(csta_datetime, '%m-%d %H:00:00') AS hour,
SUM(Duration) AS Total_Duration
FROM
CSTA_DB.mscSum3gData
WHERE
csta_datetime >= '{$startTime}'
AND csta_datetime <= '{$endTime}'
AND key_type = '".$keyType[1]."'
GROUP BY
hour
ORDER BY
hour;
";
$hour3GData=@mysqli_query($cstaDbConn,$hour3GSql);
echo mysqli_error($cstaDbConn);
$hour3GDataNum=mysqli_num_rows($hour3GData);
if (!$hourDataNum &&!$hour3GDataNum){
echo "<script>alert('MSC-Erlang Data is null');
window.location.href='./general_csta_down.php?sysTypeNo=$sysTypeNo&show_type=$show_type&page_id=$page_id&sel_date_from=$sel_date_from&sel_date_to=$sel_date_to&keyOne=$keyOne&keyTwo=$keyTwo';
</script>";
fclose($file);
return false;
}
$value3GArr=array('',"UMTS");
//UMTS
while($hour3GDataRow = @mysqli_fetch_array($hour3GData,MYSQLI_ASSOC))
{
$value3GArr[]=$hour3GDataRow['Total_Duration'];
}
fputcsv($file, $value3GArr);
}
// echo "<pre>";
// print_r($value3GArr);
// echo "</pre>";
//fputcsv($file, []);
//fputcsv($file, []);
}
// 关闭文件
fclose($file);
// 检查文件是否存在
if (file_exists($file_name)) {
header("Content-type: application/csv");
//use for download csv in https
header('Expires: 0');
header('Pragma: public');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
}
}
else if($page_id == 3)
{
$service_label=array(
1=>"SUB SUB",
2=>"SUB TRK",
3=>"TRK SUB",
4=>"TRK TRK",
5=>"INTRA",
6=>"SUB IP",
7=>"TRK IP",
8=>"MO",
9=>"MT",
10=>"IN TRK",
11=>"OUT TRK",
);
$service_num=sizeof($service_label);
$service_labelobj=array(
"SUB SUB"=>"5,17",
"SUB TRK"=>"6,18",
"TRK SUB"=>"7,19",
"TRK TRK"=>"8",
"INTRA"=>"9",
"SUB IP"=>"10,20",
"TRK IP"=>"11",
"MO"=>"12,21",
"MT"=>"13,22",
"IN TRK"=>"14",
"OUT TRK"=>"15",
);
$file_name = 'MSC-BHCA.csv';
$file = fopen($file_name, 'w');
for($i=1;$i<=$service_num;$i++){
fputcsv($file, [$service_label[$i].":"]);
$keyType= explode(",", $service_labelobj["".$service_label[$i]]);
$hourSql="
SELECT
DATE_FORMAT(csta_datetime, '%m-%d %H:00:00') AS hour,
SUM(Success) AS Total_Success
FROM
CSTA_DB.mscSumData
WHERE
csta_datetime >= '{$startTime}'
AND csta_datetime <= '{$endTime}'
AND key_type = '".$keyType[0]."'
GROUP BY
hour
ORDER BY
hour;
";
$hourData=@mysqli_query($cstaDbConn,$hourSql);
echo mysqli_error($cstaDbConn);
$hourDataNum=mysqli_num_rows($hourData);
$timeArr=array('','');
$valueArr=array('','GSM');
//GSM
while($hourDataRow = @mysqli_fetch_array($hourData,MYSQLI_ASSOC))
{
// echo "<pre>";
// print_r($hourDataRow);
// echo "</pre>";
$timeArr[]= str_replace(" ", "\r\n", $hourDataRow['hour']);
$valueArr[]=$hourDataRow['Total_Success'];
}
fputcsv($file, $timeArr);
fputcsv($file, $valueArr);
if(count($keyType)==2){
$hour3GSql="
SELECT
DATE_FORMAT(csta_datetime, '%m-%d %H:00:00') AS hour,
SUM(Success) AS Total_Success
FROM
CSTA_DB.mscSum3gData
WHERE
csta_datetime >= '{$startTime}'
AND csta_datetime <= '{$endTime}'
AND key_type = '".$keyType[1]."'
GROUP BY
hour
ORDER BY
hour;
";
$hour3GData=@mysqli_query($cstaDbConn,$hour3GSql);
echo mysqli_error($cstaDbConn);
$hour3GDataNum=mysqli_num_rows($hour3GData);
if (!$hourDataNum &&!$hour3GDataNum){
echo "<script>alert('MSC-BHCA Data is null');
window.location.href='./general_csta_down.php?sysTypeNo=$sysTypeNo&show_type=$show_type&page_id=$page_id&sel_date_from=$sel_date_from&sel_date_to=$sel_date_to&keyOne=$keyOne&keyTwo=$keyTwo';
</script>";
fclose($file);
return false;
}
$value3GArr=array('',"UMTS");
//UMTS
while($hour3GDataRow = @mysqli_fetch_array($hour3GData,MYSQLI_ASSOC))
{
$value3GArr[]=$hour3GDataRow['Total_Success'];
}
fputcsv($file, $value3GArr);
}
// echo "<pre>";
// print_r($value3GArr);
// echo "</pre>";
fputcsv($file, []);
fputcsv($file, []);
}
// 关闭文件
fclose($file);
// 检查文件是否存在
if (file_exists($file_name)) {
header("Content-type: application/csv");
//use for download csv in https
header('Expires: 0');
header('Pragma: public');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
}
}
break;
default:
break;
}
?>