From dff9603a99314a6ad2a445dec537c4ad7fb8e9e1 Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq,com> Date: Sat, 29 Jul 2023 11:22:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8D=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=B5=8B=E5=80=BC=E4=B8=BA0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/application/common/logic/PassFlow.php | 61 +++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) 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