You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.2 KiB
PHP
120 lines
3.2 KiB
PHP
<?php
|
|
|
|
include('config.inc.php');
|
|
|
|
$db = new PDO('mysql:host=' . $config['host'] . ';dbname=' . $config['database'], $config['dbuser'], $config['password'], [
|
|
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
|
|
\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'"
|
|
]);
|
|
// $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE , PDO::FETCH_ASSOC );
|
|
|
|
$filter = isset($_GET['filter']) ? $_GET['filter'] : '';
|
|
|
|
$dy_mapper = array();
|
|
$line_mapper = array();
|
|
$line_dy_mapper = array();
|
|
$tower_mapper = array();
|
|
$tower_line_mapper = array();
|
|
|
|
$stmt = $db->query("SELECT * FROM dy_level WHERE status=1");
|
|
$rows = $stmt->fetchAll();
|
|
$stmt = null;
|
|
$result = array();
|
|
foreach ($rows as $row)
|
|
{
|
|
$dy_mapper[$row['id']] = count($result);
|
|
$row['lines'] = array();
|
|
array_push($result, $row);
|
|
}
|
|
|
|
$stmt = $db->query("SELECT * FROM `lines` WHERE status=1");
|
|
$rows = $stmt->fetchAll();
|
|
$stmt = null;
|
|
foreach ($rows as $row)
|
|
{
|
|
$dy_id = intval($row['dy_level_id']);
|
|
if (!isset($dy_mapper[$dy_id]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
|
|
$line_id = intval($row['id']);
|
|
$dy_idx = $dy_mapper[$dy_id];
|
|
|
|
$line_mapper[$line_id] = count($result[$dy_idx]['lines']);
|
|
$line_dy_mapper[$line_id] = $dy_id;
|
|
|
|
$row['towers'] = array();
|
|
array_push($result[$dy_idx]['lines'], $row);
|
|
}
|
|
|
|
$stmt = $db->query("SELECT * FROM towers WHERE status=1");
|
|
$rows = $stmt->fetchAll();
|
|
$stmt = null;
|
|
|
|
$towers = array();
|
|
foreach ($rows as $row)
|
|
{
|
|
$line_id = intval($row['line_id']);
|
|
if (!isset($line_mapper[$line_id]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
$tower_id = intval($row['id']);
|
|
$tower_line_mapper[$tower_id] = $line_id;
|
|
$dy_id = intval($line_dy_mapper[$line_id]);
|
|
$dy_idx = $dy_mapper[$dy_id];
|
|
$line_idx = $line_mapper[$line_id];
|
|
|
|
$tower_mapper[$tower_id] = count($result[$dy_idx]['lines'][$line_idx]['towers']);
|
|
|
|
$row['terminals'] = array();
|
|
array_push($result[$dy_idx]['lines'][$line_idx]['towers'], $row);
|
|
}
|
|
|
|
$sql = "SELECT * FROM terminals WHERE status=1";
|
|
if ($filter == 'ws')
|
|
{
|
|
$sql = "SELECT t1.* FROM terminals AS t1 JOIN terminal_status AS t2 ON t1.id=t2.term_id WHERE t1.status=1 AND t2.ws_update_time <>0";
|
|
}
|
|
else if ($filter == 'rs')
|
|
{
|
|
$sql = "SELECT t1.* FROM terminals AS t1 JOIN terminal_status AS t2 ON t1.id=t2.term_id WHERE t1.status=1 AND t2.rs_update_time <>0";
|
|
}
|
|
else if ($filter == 'bi')
|
|
{
|
|
$sql = "SELECT * FROM terminals WHERE id IN (SELECT distinct term_id FROM terminal_basic_info_history) AND status=1";
|
|
}
|
|
else if ($filter == 'gps')
|
|
{
|
|
$sql = "SELECT * FROM terminals WHERE id IN (SELECT distinct term_id FROM terminal_position_history) AND status=1";
|
|
}
|
|
$stmt = $db->query($sql);
|
|
$rows = $stmt->fetchAll();
|
|
$stmt = null;
|
|
|
|
foreach ($rows as $row)
|
|
{
|
|
$tower_id = intval($row['tower_id']);
|
|
if (!isset($tower_mapper[$tower_id]))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
$tower_idx = $tower_mapper[$tower_id];
|
|
$line_id = $tower_line_mapper[$tower_id];
|
|
$line_idx = $line_mapper[$line_id];
|
|
$dy_id = $line_dy_mapper[$line_id];
|
|
$dy_idx = $dy_mapper[$dy_id];
|
|
|
|
|
|
array_push($result[$dy_idx]['lines'][$line_idx]['towers'][$tower_idx]['terminals'], $row);
|
|
}
|
|
|
|
|
|
|
|
header ('Content-type: application/json; charset=utf-8');
|
|
echo json_encode($result, JSON_UNESCAPED_UNICODE);
|