Browse Source

统计时间查询

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

109
source/application/common/logic/PassFlow.php

@ -13,50 +13,98 @@ class PassFlow
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public static function allGroupTimeNum($param,$dm = null) {
public static function allGroupTimeNum($param, $dm = null)
{
$granularity = $param['granularity'];
$groupsId = $param['groupsId'];
$groupsId = $param['groupsId'];
if (empty($granularity)) return ['code' => 0,'msg' => '缺少参数:granularity'];
if (empty($granularity)) return ['code' => 0, 'msg' => '缺少参数:granularity'];
$where = '';
if(!empty($groupsId)){
$garr = explode("|",$groupsId);
$where .= ' "groupId" in(' . "'" . implode("','",$garr) . "')";
if (!empty($groupsId)) {
$garr = explode("|", $groupsId);
$where .= ' "groupId" in(' . "'" . implode("','", $garr) . "')";
}
$allTimeData = [];
$groupsData = [];
$dkeys=[];
$groupsData = [];
$dkeys = [];
if (empty($dm)) $dm = new Dm();
if ($granularity == 'daily') {
$where .= $where ? ' and "granularity" = ' . "'hourly'" : ' "granularity" = ' . "'hourly'";
$list = $dm->select('bt_passenger_flow',$where);
$data = self::handleGroupData($list);
$date = self::getDateData('day');
$start_time = $date['day']['start_time'];
$end_time = $date['day']['end_time'];
$where .= $where ? ' and "granularity" = ' . "'hourly'" : ' "granularity" = ' . "'hourly'";
$where .= ' and "statTime" >= ' . "'{$start_time}'" . ' and "statTime" <= ' . "'{$end_time}'";
$list = $dm->select('bt_passenger_flow', $where);
$data = self::handleGroupData($list);
$allTimeData = $data['allTimeData'];
$groupsData = $data['groupsData'];
$dkeys = $data['dkeys'];
$groupsData = $data['groupsData'];
$dkeys = $data['dkeys'];
} elseif ($granularity == 'monthly') {
$where .= $where ? ' and "granularity" = ' . "'daily'" : ' "granularity" = ' . "'daily'";
$list = $dm->select('bt_passenger_flow',$where);
$data = self::handleGroupData($list,'d');
$date = self::getDateData('month');
$start_time = $date['month']['start_time'];
$end_time = $date['month']['end_time'];
$where .= $where ? ' and "granularity" = ' . "'daily'" : ' "granularity" = ' . "'daily'";
$where .= ' and "statTime" >= ' . "'{$start_time}'" . ' and "statTime" <= ' . "'{$end_time}'";
$list = $dm->select('bt_passenger_flow', $where);
$data = self::handleGroupData($list, 'd');
$allTimeData = $data['allTimeData'];
$groupsData = $data['groupsData'];
$dkeys = $data['dkeys'];
$groupsData = $data['groupsData'];
$dkeys = $data['dkeys'];
} elseif ($granularity == 'yearly') {
$where .= $where ? ' and "granularity" = ' . "'monthly'" : ' "granularity" = ' . "'monthly'";
$list = $dm->select('bt_passenger_flow',$where);
$data = self::handleGroupData($list,'m');
$date = self::getDateData('year');
$start_time = $date['year']['start_time'];
$end_time = $date['year']['end_time'];
$where .= $where ? ' and "granularity" = ' . "'monthly'" : ' "granularity" = ' . "'monthly'";
$where .= ' and "statTime" >= ' . "'{$start_time}'" . ' and "statTime" <= ' . "'{$end_time}'";
$list = $dm->select('bt_passenger_flow', $where);
$data = self::handleGroupData($list, 'm');
$allTimeData = $data['allTimeData'];
$groupsData = $data['groupsData'];
$dkeys = $data['dkeys'];
$groupsData = $data['groupsData'];
$dkeys = $data['dkeys'];
}
$data = ['allTimeData' => $allTimeData, 'groupsData' => $groupsData, 'dkeys' => $dkeys];
$data = ['allTimeData' => $allTimeData, 'groupsData' => $groupsData, 'dkeys' => $dkeys];
return ['code' => 1, 'msg' => 'success', 'data' => $data];
}
/**
* 获取统计开始时间 统计结束时间
* @param $date
* @return array
*/
protected static function getDateData($date = 'all')
{
$data = [];
if ($date == 'day' || $date == 'all') {
$data['day'] = [
'start_time' => date("Y-m-d") . 'T00:00:00.000+08:00',
'end_time' => date("Y-m-d") . 'T23:59:59.000+08:00'
];
}
if ($date == 'week' || $date == 'all') {
$data['week'] = [
'start_time' => date("Y-m-d",strtotime("+".(date("w") - 7) . "day")) . 'T00:00:00.000+08:00',
'end_time' => date("Y-m-d",strtotime("-".(date("w") - 7) . "day")) . 'T23:59:59.000+08:00'
];
}
if ($date == 'month' || $date == 'all') {
$data['month'] = [
'start_time' => date("Y-m-01") . 'T00:00:00.000+08:00',
'end_time' => date("Y-m-d", strtotime('-1 day', strtotime(date('Y-m-01', strtotime('+1 month'))))) . 'T23:59:59.000+08:00'
];
}
if ($date == 'year' || $date == 'all') {
$data['year'] = [
'start_time' => date("Y-01-01") . 'T00:00:00.000+08:00',
'end_time' => date("Y-m-d", strtotime('-1 day', strtotime(date('Y-01-01', strtotime('+1 year'))))) . 'T23:59:59.000+08:00'
];
}
return $data;
}
/**
* 特殊处理
* @param $list
@ -141,11 +189,13 @@ class PassFlow
# 总进馆人数
$yearSum = 0;
if (empty($dm)) $dm = new Dm();
$dateData = self::getDateData();
foreach ($dateArr as $date => $granularity) {
$where = ' "granularity" = ' . "'{$granularity}'" . ' and "date" = ' . "'{$date}'";
$where .= ' and "statTime" >= ' . "'{$dateData[$date]['start_time']}'" . ' and "statTime" <= ' . "'{$dateData[$date]['end_time']}'";
$list = $dm->select(
'bt_passenger_flow_all',
' "granularity" = ' . "'{$granularity}'" . ' and "date" = ' . "'{$date}'"
$where
);
$returnData[$date]['noRepeatInNum'] = 0;
@ -248,7 +298,12 @@ class PassFlow
{
if (empty($dm)) $dm = new Dm();
$list = $dm->select('bt_passenger_flow',' "granularity"='."'hourly'");
$where = ' "granularity"='."'hourly' ";
$date = self::getDateData('day');
$start_time = $date['day']['start_time'];
$end_time = $date['day']['end_time'];
$where .= ' and "statTime" >= ' . "'{$start_time}'" . ' and "statTime" <= ' . "'{$end_time}'";
$list = $dm->select('bt_passenger_flow',$where);
$allTimeData = [];
for ($i = 9; $i < 23; $i++) {
$str = strlen($i) == 1 ? '0'.$i.':00' : $i.':00';

Loading…
Cancel
Save