[ 'name' => '图书馆', 'count' => $countBaz, 'day' => round($countBaz / 30), 'amplitude' => [ 'min' => 0 - ($countBaz * 0.03), 'max' => $countBaz * 0.05, ] ], 'BAF055' => [ 'name' => '文化馆', 'count' => $countBaf, 'day' => round($countBaf / 30), 'amplitude' => [ 'min' => 0 - ($countBaf * 0.03), 'max' => $countBaf * 0.05, ] ], ]; $monthNum = 7; $countBaz = [ 'baz001' => ['incount' => 0, 'outcount' => 0], 'BAF055' => ['incount' => 0, 'outcount' => 0] ]; for ($i = 1; $i <= $monthNum; $i++) { $str = strlen($i) == 1 ? '0' . $i : $i; $incount = 0; $outcount = 0; foreach ($data as $group_id => $item) { $name = $item['name']; $count = $item['count']; $day = $item['day']; # 幅度 $temp_count = rand($item['amplitude']['min'],$item['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); $days = date('t', strtotime(2023 . '-' . $str . '-01')); $start = date("Y-{$str}-01 ") ."00:00:00"; $end = date("Y-{$str}-{$days} ") ."23:59:59"; $queryWhere = ' "date" = ' . "'month'" . ' and "group_id" = ' . "'{$group_id}'" . ' and "create_time" >= ' . "'{$start}'" . ' and "create_time" <= ' . "'{$end}'" ; $query = $dm->find('bt_library_data',$queryWhere); if (!$query) { $insert_data = [ 'group_id' => $group_id, 'group_name' => $name, 'incount' => $flowInNum, 'outcount' => bcadd($flowInNum,rand(0, 10)), 'date' => 'month', 'create_time' => date("Y-{$str}-01 ") . "00:00:00", 'last_incount' => 0, 'last_outcount' => 0, ]; $dm->insert('bt_library_data', $insert_data); # 当月总数 $incount += $insert_data['incount']; $outcount += $insert_data['outcount']; # 总年 $countBaz[$group_id]['incount'] += $insert_data['incount']; $countBaz[$group_id]['outcount'] += $insert_data['outcount']; } } $queryWhere2 = ' "date" = ' . "'month'" . ' and "group_id" = ' . "'lib001'" . ' and "create_time" >= ' . "'{$start}'" . ' and "create_time" <= ' . "'{$end}'" ; $query2 = $dm->find('bt_library_data',$queryWhere2); if (!$query2) { $lib001 = [ 'group_id' => 'lib001', 'group_name' => '文化', 'incount' => $incount, 'outcount' => $outcount, 'date' => 'month', 'create_time' => date("Y-{$str}-01 ") . "00:00:00", 'last_incount' => 0, 'last_outcount' => 0, ]; $dm->insert('bt_library_data', $lib001); } } // --------------- baz001 --------------- // $queryWhereBaz = ['date' => 'year', 'group_id' => 'baz001', 'create_time' => ['>=',date("Y-01-01 ") ."00:00:00"]]; $queryBaz = $dm->find("bt_library_data",$queryWhereBaz); if ($queryBaz) { $baz001 = [ 'incount' => bcadd($queryBaz['incount'],$countBaz['baz001']['incount']), 'outcount' => bcadd($queryBaz['outcount'],$countBaz['baz001']['outcount']) ]; $dm->update('bt_library_data',$baz001,'"id" = ' . "'{$queryBaz['id']}'"); } // --------------- BAF055 --------------- // $queryWhereBaf = ['date' => 'year', 'group_id' => 'BAF055', 'create_time' => ['>=',date("Y-01-01 ") ."00:00:00"]]; $queryBaf = $dm->find("bt_library_data",$queryWhereBaf); if ($queryBaf) { $BAF055 = [ 'incount' => bcadd($queryBaf['incount'],$countBaz['BAF055']['incount']), 'outcount' => bcadd($queryBaf['outcount'],$countBaz['BAF055']['outcount']) ]; $dm->update('bt_library_data',$BAF055,'"id" = ' . "'{$queryBaf['id']}'"); } // --------------- lib001 --------------- // $queryWhereLib = ['date' => 'year', 'group_id' => 'lib001', 'create_time' => ['>=',date("Y-01-01 ") ."00:00:00"]]; $queryLib = $dm->find("bt_library_data",$queryWhereLib); if ($queryLib) { $lib001 = [ 'incount' => $baz001['incount'] + $BAF055['incount'], 'outcount' => $baz001['outcount'] + $BAF055['outcount'] ]; $dm->update('bt_library_data',$lib001,'"id" = ' . "'{$queryLib['id']}'"); } echo true;