add export ussd alarm smpp

This commit is contained in:
root
2025-07-30 17:30:36 +08:00
parent 54339f4273
commit b24a4bfe72
8 changed files with 458 additions and 73 deletions

View File

@@ -9,79 +9,114 @@ $page_id=$_GET['page_id'];
$sel_date_from=$_GET['sel_date_from'];
$sel_date_to=$_GET['sel_date_to'];
$show_type=$_GET['show_type'];
$keyTwo=$_REQUEST['keyTwo'];
$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
// $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}'";
if($keyTwo==="999"){
$smppWhere="";
}else{
$smppWhere="AND smppId=$keyTwo";
}
$sumSql="SELECT
DATE(csta_datetime) AS report_date,
key_sys_id,
smppId,
SUM(SMPP_to_SMSC_attempt) AS total_SMPP_to_SMSC_attempt,
SUM(SMPP_to_SMSC_success) AS total_SMPP_to_SMSC_success,
SUM(SMSC_to_SMPP_attempt) AS total_SMSC_to_SMPP_attempt,
SUM(SMSC_to_SMPP_success) AS total_SMSC_to_SMPP_success
FROM
smscSmppData
WHERE csta_datetime >= '{$startTime}'
AND csta_datetime <= '{$endTime}'";
// echo "sumSql=$sumSql";
AND csta_datetime <= '{$endTime}'
$smppWhere
GROUP BY
DATE(csta_datetime),smppId;";
//echo "sumSql=$sumSql";
$res=mysqli_query($cstaDbConn,$sumSql);
echo mysqli_error($cstaDbConn);
$num=mysqli_num_rows($res);
$row=@mysqli_fetch_array($res,MYSQLI_ASSOC);
// $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;
$allRows = [];
$title = [];
while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC)) {
if (empty($title)) {
foreach ($row as $key => $value) {
$title[] = $key;
}
}
$allRows[] = $row;
}
$uniqueTitle=array_unique($title);
// $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;
if (empty($title)) {
echo "SMPP Statistic is null";
}
fputcsv($file, $nowData);
}
$file = fopen($file_name, 'w');
fputcsv($file, $title);
foreach ($allRows as $index => $record) {
fputcsv($file, $record);
}
// 关闭文件
@@ -96,6 +131,7 @@ $endTime=date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-$sel_date_to,dat
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
unlink($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
@@ -189,6 +225,7 @@ $endTime=date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-$sel_date_to,dat
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
unlink($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
@@ -316,6 +353,7 @@ GROUP BY
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
unlink($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
@@ -450,6 +488,7 @@ if (file_exists($file_name)) {
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
unlink($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
@@ -578,6 +617,7 @@ if (file_exists($file_name)) {
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
unlink($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";

View File

@@ -60,8 +60,45 @@ function openFieldConf(sysTypeNo,pageId,showType)
var urll='./general_csta_index.php?sysTypeNo='+sysTypeNo+'&show_type='+showType+'&page_id='+pageId+'&sel_date_from='+down_date_from+'&sel_date_to='+down_date_to+'&isExport=1';
console.log("Constructed URL:", urll); // 打印构造的 URL
window.location.href=urll;
console.log(sysTypeNo,pageId)
}
function updateExportLink() {
var form = document.myform;
var keyTwo = form.keyTwo ? form.keyTwo.value : '';
var sysTypeNo = form.sysTypeNo.value;
var show_type = form.show_type.value;
var page_id = form.page_id.value;
var sel_date_from = form.sel_date_from.value;
var sel_date_to = form.sel_date_to.value;
var url = "./downCDR.php?keyTwo=" + encodeURIComponent(keyTwo)
+ "&sysTypeNo=" + encodeURIComponent(sysTypeNo)
+ "&show_type=" + encodeURIComponent(show_type)
+ "&page_id=" + encodeURIComponent(page_id)
+ "&sel_date_from=" + encodeURIComponent(sel_date_from)
+ "&sel_date_to=" + encodeURIComponent(sel_date_to)
+ "&isExport=1";
document.getElementById('exportBtn').href = url;
}
function updateExportLinkAll() {
var form = document.myform;
var keyTwo = form.keyTwo ? form.keyTwo.value : '';
var sysTypeNo = form.sysTypeNo.value;
var show_type = form.show_type.value;
var page_id = form.page_id.value;
var sel_date_from = form.sel_date_from.value;
var sel_date_to = form.sel_date_to.value;
var url = "./downCDR.php?keyTwo=999"
+ "&sysTypeNo=" + encodeURIComponent(sysTypeNo)
+ "&show_type=" + encodeURIComponent(show_type)
+ "&page_id=" + encodeURIComponent(page_id)
+ "&sel_date_from=" + encodeURIComponent(sel_date_from)
+ "&sel_date_to=" + encodeURIComponent(sel_date_to)
+ "&isExport=1";
document.getElementById('exportBtnAll').href = url;
}
</script>
<base target="general_csta_down">
@@ -316,11 +353,21 @@ echo "</span>";
echo "</td>";
echo "<td align=\"right\">";
//export
if($sysTypeNo=="320"||$sysTypeNo=="350"){
if($sysTypeNo=="320"){
echo "<a href=\"./downCDR.php?sysTypeNo=$sysTypeNo&show_type=$show_type&page_id=$page_id&sel_date_from=$sel_date_from&sel_date_to=$sel_date_to&isExport=1\">";
echo "<img border=0 src=\"../../images/list.gif\" width=16 height=16>";
echo "</a>&nbsp;&nbsp;&nbsp;&nbsp;";
}
if($sysTypeNo=="350"){
echo "<a id=\"exportBtn\" href=\"#\" onclick=\"javascript:updateExportLink();\">";
echo "<img border=0 src=\"../../images/list.gif\" width=16 height=16 title='Export Designated IP'>";
echo "</a>&nbsp;&nbsp;&nbsp;&nbsp;";
echo "<a id=\"exportBtnAll\" href=\"#\" onclick=\"javascript:updateExportLinkAll();\">";
echo "<img border=0 src=\"../../images/page.gif\" width=16 height=16 title='Export All'>";
echo "</a>&nbsp;&nbsp;&nbsp;&nbsp;";
}
if($show_type == "hour")
{
echo "<a target=\"_parent\" href=\"../../performance/generalCsta/general_csta_index.php?sysTypeNo=$sysTypeNo&show_type=day&page_id=$page_id&sel_date_from=$sel_date_from&sel_date_to=$sel_date_to&keyOne=$keyOne&keyTwo=$keyTwo\"><img src=\"../../images/left.gif\" border=0></img>back</a>";
@@ -330,6 +377,7 @@ if($show_type == "hour")
<span onClick="window.print();" style="cursor:hand">
<img border=0 src="../../images/printer.gif" width="16" height="16">
</span>
<?php
echo "</td>";
@@ -346,3 +394,4 @@ adjust_title_tail_frame("up");
adjust_content_head_frame("up");
adjust_content_tail_frame("up");
?>

View File

@@ -13,8 +13,9 @@ $objDbConn=mysqli_connect($OMC_server[0]['host'],$OMC_server[0]['user'],$OMC_ser
$query_year=$_REQUEST['query_year'];
$query_month=$_REQUEST['query_month'];
$query_day=$_REQUEST['query_day'];
$bgnDay=$_REQUEST['bgnDay'];
$endDay=$_REQUEST['endDay'];
$flag=$_REQUEST['flag'];
if(!$query_year){
$query_year=date("Y",mktime(0,0,0,date("m"),date("d")-1,date("Y")));
$query_month=date("m",mktime(0,0,0,date("m"),date("d")-1,date("Y")));
@@ -25,8 +26,9 @@ $selectedDate=$_REQUEST['selectedDate']?$_REQUEST['selectedDate']:$defaultDate;
switch($sysTypeNo){
case '360':
$title = ['Index','USSD Code','Session Num','Session Duration','Error Timeout','Error System','Error Message','Average Duration','TPS']; // 获取字段名
$sumSql="SELECT
$sumSql="SELECT
ussd_code_1,
session_num_1,
session_duration_1,
@@ -77,9 +79,94 @@ $selectedDate=$_REQUEST['selectedDate']?$_REQUEST['selectedDate']:$defaultDate;
error_message_8
FROM
PPS_DB.daily_report
WHERE date = '$selectedDate' ";
//echo "sumSql=$sumSql";
$res=mysqli_query($pssDbConn,$sumSql);
WHERE ";
if($flag=='month'){
$result = $sumSql." date >='$bgnDay' and date<= '$endDay' order by date ASC";
//echo "sumSql=$sumSql";
$res=mysqli_query($pssDbConn,$result);
//echo mysqli_error($pssDbConn);
$num=mysqli_num_rows($res);
$allUssdCodes = []; // 用于存储所有记录的 ussd_code
do{
if(!count($allUssdCodes)){ // 代表是第一条记录
// 初始化数组
for ($i = 1; $i <= 8; $i++) {
$allUssdCodes[$i] = $selRow['ussd_code_' . $i];
$thisMonthTotalSessionNum[$i] = $selRow['session_num_' . $i];
$thisMonthTotalSessionDuration[$i] = $selRow['session_duration_'. $i];
$thisMonthTotalErrorTimeout[$i] = $selRow['error_timeout_'. $i];
$thisMonthTotalErrorSystem[$i] = $selRow['error_system_'. $i];
$thisMonthTotalErrorMessage[$i] = $selRow['error_message_'. $i];
}
} else { // 剩余记录
// 创建USSD索引的映射
$codeToIndexMap = array_flip(array_filter($allUssdCodes));
for ($j = 1; $j <= 8; $j++) {
$currentCode = $selRow['ussd_code_' . $j];
if (!$currentCode) continue; // 跳过空代码
echo "currentCode===$currentCode";
if (isset($codeToIndexMap[$currentCode])) {
// 已存在的代码,累加统计数据
$index = $codeToIndexMap[$currentCode];
$thisMonthTotalSessionNum[$index] += $selRow['session_num_' . $j];
$thisMonthTotalSessionDuration[$index] += $selRow['session_duration_'. $j];
$thisMonthTotalErrorTimeout[$index] += $selRow['error_timeout_'. $j];
$thisMonthTotalErrorSystem[$index] += $selRow['error_system_'. $j];
$thisMonthTotalErrorMessage[$index] += $selRow['error_message_'. $j];
} else {
//找一个空位存放
foreach ($allUssdCodes as $key => $value) {
if (!$value) {
$allUssdCodes[$key] = $currentCode;
$codeToIndexMap[$currentCode] = $key;
$thisMonthTotalSessionNum[$key] = $selRow['session_num_' . $j];
$thisMonthTotalSessionDuration[$key] = $selRow['session_duration_'. $j];
$thisMonthTotalErrorTimeout[$key] = $selRow['error_timeout_'. $j];
$thisMonthTotalErrorSystem[$key] = $selRow['error_system_'. $j];
$thisMonthTotalErrorMessage[$key] = $selRow['error_message_'. $j];
break;
}
}
}
}
}
}while($selRow=mysqli_fetch_array($res));
$file_name = 'PPS-USSD-Month.csv';
$file = fopen($file_name, 'w');
fputcsv($file, $title); // 写入标题行
for ($i = 1; $i <= 8; $i++) {
$average=$thisMonthTotalSessionNum[$i]?$thisMonthTotalSessionDuration[$i]/$thisMonthTotalSessionNum[$i]:0;
$tps=$thisMonthTotalSessionNum[$i]/(3600*24);
fputcsv($file, [$i,$allUssdCodes[$i],$thisMonthTotalSessionNum[$i], $thisMonthTotalSessionDuration[$i],$thisMonthTotalErrorTimeout[$i], $thisMonthTotalErrorSystem[$i] ,$thisMonthTotalErrorMessage[$i],$average,$tps]);
}
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);
unlink($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
}
}
else{
$result= $sumSql." date = '$selectedDate'";
//echo "sumSql=$sumSql";
$res=mysqli_query($pssDbConn,$result);
echo mysqli_error($pssDbConn);
$num=mysqli_num_rows($res);
@@ -89,12 +176,11 @@ $selectedDate=$_REQUEST['selectedDate']?$_REQUEST['selectedDate']:$defaultDate;
$row = mysqli_fetch_array($res, MYSQLI_ASSOC);
// 处理标题
$title = ['Index','USSD Code','Session Num','Session Duration','Error Timeout','Error System','Error Message','Average Duration','TPS']; // 获取字段名
$file_name = 'PPS-USSD.csv';
$file = fopen($file_name, 'w');
fputcsv($file, $title); // 写入标题行
for ($i = 1; $i <= 8; $i++) {
for ($i = 1; $i <= 8; $i++) {
$average=$row['session_num_' . $i]?$row['session_duration_' . $i]/$row['session_num_' . $i]:0;
$tps=$row['session_num_' . $i]/(3600*24);
fputcsv($file, [$i,$row['ussd_code_' . $i],$row['session_num_' . $i],$row['session_duration_' . $i],$row['error_timeout_' . $i],$row['error_system_' . $i],$row['error_message_' . $i],$average,$tps]);
@@ -111,11 +197,15 @@ $selectedDate=$_REQUEST['selectedDate']?$_REQUEST['selectedDate']:$defaultDate;
header('Cache-Control: public');
header("Content-Disposition: attachment; filename=$file_name");
readfile($file_name);
unlink($file_name);
} else {
// 文件不存在时的处理
echo "Error: File does not exist.";
}
}
}
break;
default:
break;

View File

@@ -501,7 +501,13 @@ for($i=1;$i<=12;$i++){
<?php echo "$strMonth PPS report ($bgnDay ~ $endDay)";?>
</b>
</td>
<td width="20%" align="right">
<td width="5%" align="right">
<a href="./downCSTA.php?sysTypeNo=360&flag=month&bgnDay=<?php echo "$bgnDay";?>&endDay=<?php echo "$endDay";?> ">
<img align=absBottom border=0 src="../../images/list.gif" width="16" height="16"><?php echo "&nbsp;Export";?>
</a>
<td width="5%" align="right">
<div onClick="window.print();" style="cursor:hand">
<img align=absBottom border=0 src="../../images/printer.gif" width="16" height="16"><?php echo "&nbsp;$strDailyBtnPrint";?>
</div>