[ 'name' => '体育场', 'count' => '354670', 'day' => '11822', 'amplitude' => [ 'min' => '-10640', 'max' => '17733', ] ], '210' => [ 'name' => '体育馆', 'count' => '380343', 'day' => '12678', 'amplitude' => [ 'min' => '-11410', 'max' => '19017', ] ], '310' => [ 'name' => '游泳馆', 'count' => '114346', 'day' => '3811', 'amplitude' => [ 'min' => '-3430', 'max' => '5717', ] ], '510' => [ 'name' => '博物馆', 'count' => '4018', 'day' => '133', 'amplitude' => [ 'min' => '-120', 'max' => '200', ] ] ]; $monthNum = 7; $returnData = []; $returnDataAll = []; foreach ($groupArr as $groupId => $val) { $groupName = $val['name']; $count = $val['count']; $day = $val['day']; # 月总数 $sumFlowInNum = 0; for ($i = 1; $i <= $monthNum; $i++) { # 幅度 $temp_count = rand($val['amplitude']['min'],$val['amplitude']['max']); if ($i == 1) { # 减去假期 $temp_day = $day * 7; $temp_count = bcsub($temp_count,$temp_day); } if ($i == 2) { # 减去未满30 $temp_day = $day * 2; $temp_count = bcsub($temp_count,$temp_day); } # 每月数量 $flowInNum = bcadd($count,$temp_count); $sumFlowInNum = bcadd($sumFlowInNum,$flowInNum); $iStr = strlen($i) == 1 ? '0'.$i : $i; $statTime = "{$y}-{$iStr}-01T00:00:00.000+08:00"; $queryWhereAll = ['groupId' => $groupId,'granularity' => 'monthly','statTime' => $statTime,'date'=>'month']; $queryAll = $dm->find('bt_passenger_flow_all',$queryWhereAll); if (!$queryAll) { $iArrAll = [ 'groupId' => $groupId, 'groupName' => $groupName, 'flowInNum' => $flowInNum, 'flowOutNum' => 0, 'noRepeatInNum' => $flowInNum, 'noRepeatOutNum' => 0, 'holdValue' => 0, 'netValue' => 0, 'createTime' => strtotime("{$y}-{$iStr}-01 00:00:00") . "000", 'updateTime' => strtotime("{$y}-{$iStr}-01 00:00:00") . "000", 'statTime' => $statTime, 'granularity' => 'monthly', 'date' => 'month' ]; $dm->insert('bt_passenger_flow_all',$iArrAll); $returnDataAll[] = $iArrAll; } $queryWhere = ['groupId' => $groupId,'granularity' => 'monthly','statTime' => $statTime]; $query = $dm->find('bt_passenger_flow',$queryWhere); if (!$query) { $iArr = [ 'groupId' => $groupId, 'groupName' => $groupName, 'flowInNum' => $flowInNum, 'flowOutNum' => 0, 'noRepeatInNum' => $flowInNum, 'noRepeatOutNum' => 0, 'holdValue' => 0, 'netValue' => 0, 'createTime' => strtotime("{$y}-{$iStr}-01 00:00:00") . "000", 'updateTime' => strtotime("{$y}-{$iStr}-01 00:00:00") . "000", 'statTime' => $statTime, 'granularity' => 'monthly' ]; $dm->insert('bt_passenger_flow',$iArr); $returnData[] = $iArr; } } # 总的 $queryWhereSumAll = ['groupId' => $groupId,'granularity' => 'yearly','statTime' => ['>=',"{$y}-01-01T00:00:00.000+08:00"],'date' => 'year']; $querySumAll = $dm->find('bt_passenger_flow_all',$queryWhereSumAll); if ($querySumAll) { // $iArrSumAll = [ // 'groupId' => $groupId, // 'groupName' => $groupName, // 'flowOutNum' => 0, // 'noRepeatOutNum' => 0, // 'holdValue' => 0, // 'netValue' => 0, // 'flowInNum' => bcadd(0,$sumFlowInNum), // 'noRepeatInNum' => bcadd(0,$sumFlowInNum), // 'createTime' => strtotime("{$y}--01-01 00:00:00") . "000", // 'updateTime' => strtotime("{$y}--01-01 00:00:00") . "000", // 'statTime' => "{$y}-01-01T00:00:00.000+08:00", // 'granularity' => 'yearly', // 'date' => 'year' // ]; // $returnDataAll[] = $iArrSumAll; $updateAll = [ 'flowInNum' => bcadd($querySumAll['flowInNum'],$sumFlowInNum), 'noRepeatInNum' => bcadd($querySumAll['noRepeatInNum'],$sumFlowInNum), ]; $dm->update('bt_passenger_flow_all',$updateAll,'"id" = ' . "'{$querySumAll['id']}'"); } $queryWhereSum = ['groupId' => $groupId,'granularity' => 'yearly','statTime' => ['>=',"{$y}-01-01T00:00:00.000+08:00"]]; $querySum = $dm->find('bt_passenger_flow',$queryWhereSum); if ($querySum) { // $iArrSum = [ // 'groupId' => $groupId, // 'groupName' => $groupName, // 'flowOutNum' => 0, // 'noRepeatOutNum' => 0, // 'holdValue' => 0, // 'netValue' => 0, // 'flowInNum' => bcadd(0,$sumFlowInNum), // 'noRepeatInNum' => bcadd(0,$sumFlowInNum), // 'createTime' => strtotime("{$y}--01-01 00:00:00") . "000", // 'updateTime' => strtotime("{$y}--01-01 00:00:00") . "000", // 'statTime' => "{$y}-01-01T00:00:00.000+08:00", // 'granularity' => 'yearly' // ]; // // $returnData[] = $iArrSum; $update = [ 'flowInNum' => bcadd($querySum['flowInNum'],$sumFlowInNum), 'noRepeatInNum' => bcadd($querySum['noRepeatInNum'],$sumFlowInNum), ]; $dm->update('bt_passenger_flow',$update,'"id" = ' . "'{$querySum['id']}'"); } echo "
";
var_dump($groupId);
var_dump($sumFlowInNum);
}
//var_dump($returnData);
//var_dump($returnDataAll);
echo true;