diff --git a/source/application/common/logic/PassFlow.php b/source/application/common/logic/PassFlow.php index 84ac55d..0293565 100644 --- a/source/application/common/logic/PassFlow.php +++ b/source/application/common/logic/PassFlow.php @@ -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; + } } \ No newline at end of file