|
|
|
@ -142,7 +142,9 @@ class PassFlow |
|
|
|
} |
|
|
|
} |
|
|
|
$sumNoRepeatInNum = 0; |
|
|
|
$groupsIdArr = []; |
|
|
|
foreach ($list as $value) { |
|
|
|
$groupsIdArr[] = $value['groupId']; |
|
|
|
$sumNoRepeatInNum += $value['flowInNum']; // 进馆总人数 |
|
|
|
if (!isset($groupsData[$value['groupName']]['noRepeatInNum'])) $groupsData[$value['groupName']]['noRepeatInNum'] = 0; |
|
|
|
$groupsData[$value['groupName']]['noRepeatInNum'] += $value['flowInNum']; // 分租进馆人数 |
|
|
|
@ -152,6 +154,7 @@ class PassFlow |
|
|
|
} |
|
|
|
ksort($allTimeData); |
|
|
|
|
|
|
|
$groupsIdParamArr = []; |
|
|
|
if (empty($groupsId)) { |
|
|
|
$res = $dm->select('bt_library',['group_id' => ['baz001','BAF055']]); |
|
|
|
foreach ($res as $row) { |
|
|
|
@ -166,7 +169,29 @@ class PassFlow |
|
|
|
$groupsData[$row['group_name']]['noRepeatInNum'] = $row['year_incount']; |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
$groupsIdParamArr = explode("|",$groupsId); |
|
|
|
} |
|
|
|
// ------------------ 组数据不存在赋值为0 ------------------ // |
|
|
|
# 去重存在的统计组id |
|
|
|
$groupsIdArr = array_unique($groupsIdArr); |
|
|
|
# type 1-体育 2-文化 |
|
|
|
$type = [1,2]; |
|
|
|
if ($groupsIdParamArr) { |
|
|
|
$type = [1]; |
|
|
|
# 和传值参数 分组取相同值 |
|
|
|
$groupsIdArr = array_intersect($groupsIdArr,$groupsIdParamArr); |
|
|
|
} |
|
|
|
# 如果为空 |
|
|
|
$groupsIdArr = $groupsIdArr ?: [0]; |
|
|
|
# 查询分组中没有数据的统计组 |
|
|
|
$groupWhere = ' "groupId" not in (' . "'" . implode("','",$groupsIdArr) ."')"; |
|
|
|
$groupWhere .= ' and "type" in (' ."'" . implode("','",$type) . "')"; |
|
|
|
$groupRes = $dm->select("bt_passenger_monitor_group",$groupWhere); |
|
|
|
foreach ($groupRes as $groupRow) { |
|
|
|
$groupsData[$groupRow['groupName']]['noRepeatInNum'] = 0; |
|
|
|
} |
|
|
|
// ------------------ 组数据不存在赋值 ------------------ // |
|
|
|
// 计算各组占比 |
|
|
|
foreach ($groupsData as &$val) { |
|
|
|
$val['proportion'] = $val['noRepeatInNum'] > 0 ? (round($val['noRepeatInNum']/$sumNoRepeatInNum,2) * 100) ."%" : '0%'; |
|
|
|
@ -455,17 +480,20 @@ class PassFlow |
|
|
|
$where .= ' and "groupId" in (' . "'" . implode("','",$groupsId) . "')"; |
|
|
|
} |
|
|
|
} |
|
|
|
$date = self::getDateData('day'); |
|
|
|
$start_time = $date['day']['start_time']; |
|
|
|
$end_time = $date['day']['end_time']; |
|
|
|
|
|
|
|
#$date = self::getDateData('day'); |
|
|
|
$start_time = date("Y-m-d\TH",strtotime('-23 hours')) . ':00:00.000+08:00'; |
|
|
|
$end_time = date("Y-m-d\TH") . ':59:59.000+08:00'; |
|
|
|
|
|
|
|
$where .= ' and "statTime" >= ' . "'{$start_time}'" . ' and "statTime" <= ' . "'{$end_time}'"; |
|
|
|
$list = $dm->select('bt_passenger_flow',$where); |
|
|
|
$allTimeData = []; |
|
|
|
$returnData = []; |
|
|
|
for ($i = 0; $i <= 23; $i++) { |
|
|
|
$str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00'; |
|
|
|
$allTimeData[$str] = 0; |
|
|
|
if (!isset($returnData[$str])) $returnData[$str] = 0; |
|
|
|
|
|
|
|
$hoursArr = self::getHoursArr(); |
|
|
|
foreach ($hoursArr as $hoursVal) { |
|
|
|
$allTimeData[$hoursVal] = 0; |
|
|
|
if (!isset($returnData[$hoursVal])) $returnData[$hoursVal] = 0; |
|
|
|
} |
|
|
|
foreach ($list as $value) { |
|
|
|
$date = date('H:00',strtotime($value['statTime'])); // 各时间端进馆人数 |
|
|
|
@ -481,4 +509,23 @@ class PassFlow |
|
|
|
} |
|
|
|
return $data; |
|
|
|
} |
|
|
|
|
|
|
|
protected static function getHoursArr() { |
|
|
|
$hours = array(); // 创建空数组 |
|
|
|
|
|
|
|
// 获取当前时间戳和当前小时数 |
|
|
|
$current_time = time(); |
|
|
|
$current_hour = date('H', $current_time); |
|
|
|
|
|
|
|
// 循环向前获取23个小时的小时数,并添加到数组中 |
|
|
|
for ($i = 23; $i >= 1; $i--) { |
|
|
|
$hour = date('H', strtotime("-{$i} hour", $current_time)); |
|
|
|
array_push($hours, $hour); |
|
|
|
} |
|
|
|
|
|
|
|
// 将当前小时数添加到数组末尾 |
|
|
|
array_push($hours, $current_hour); |
|
|
|
|
|
|
|
return $hours; |
|
|
|
} |
|
|
|
} |