Browse Source

数据不存在自动赋值为0

master
wanghongjun 3 years ago
parent
commit
dff9603a99
  1. 61
      source/application/common/logic/PassFlow.php

61
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;
}
}
Loading…
Cancel
Save