Files
2025-07-30 17:30:36 +08:00

214 lines
8.8 KiB
PHP

<?php
require("../../inc/lib.inc");
global $OMC_server;
$sysTypeNo=$_GET['sysTypeNo'];
$pssDbConn=mysqli_connect($OMC_server[0]['host'],$OMC_server[0]['user'],$OMC_server[0]['password'], 'PPS_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'];
$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")));
$query_day=date("d",mktime(0,0,0,date("m"),date("d")-1,date("Y")));
}
$defaultDate="$query_year-$query_month-$query_day";
$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
ussd_code_1,
session_num_1,
session_duration_1,
error_timeout_1,
error_system_1,
error_message_1,
ussd_code_2,
session_num_2,
session_duration_2,
error_timeout_2,
error_system_2,
error_message_2,
ussd_code_3,
session_num_3,
session_duration_3,
error_timeout_3,
error_system_3,
error_message_3,
ussd_code_4,
session_num_4,
session_duration_4,
error_timeout_4,
error_system_4,
error_message_4,
ussd_code_5,
session_num_5,
session_duration_5,
error_timeout_5,
error_system_5,
error_message_5,
ussd_code_6,
session_num_6,
session_duration_6,
error_timeout_6,
error_system_6,
error_message_6,
ussd_code_7,
session_num_7,
session_duration_7,
error_timeout_7,
error_system_7,
error_message_7,
ussd_code_8,
session_num_8,
session_duration_8,
error_timeout_8,
error_system_8,
error_message_8
FROM
PPS_DB.daily_report
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);
// 检查是否有记录
if ($num > 0) {
// 读取第一条记录
$row = mysqli_fetch_array($res, MYSQLI_ASSOC);
// 处理标题
$file_name = 'PPS-USSD.csv';
$file = fopen($file_name, 'w');
fputcsv($file, $title); // 写入标题行
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]);
}
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.";
}
}
}
break;
default:
break;
}
?>