main
Jing Li 2024-05-31 08:35:17 +08:00
parent 7131eac6fc
commit 03dea60229
1 changed files with 20 additions and 26 deletions

View File

@ -89,18 +89,30 @@ class StatisticsController extends Controller
], ],
); );
$input = $this->filterInput($request); $input = Arr::except($this->filterInput($request), ['start_at', 'end_at', 'before_start_at', 'before_end_at']);
$dateRange1 = $request->input('start_at').','.$request->input('end_at'); $dateRange1 = $request->input('start_at').','.$request->input('end_at');
$ledger = $statisticService->ledger(array_merge($input, ['date_range' => $dateRange1]));
$dateRange2 = $request->input('before_start_at').','.$request->input('before_end_at'); $dateRange2 = $request->input('before_start_at').','.$request->input('before_end_at');
$beforeLedger = $statisticService->ledger(array_merge($input, ['date_range' => $dateRange2]));
$ledger = $statisticService->ledger( /** @var \Illuminate\Database\Eloquent\Collection */
array_merge($input, ['date_range' => $dateRange1]) $lotteryTypes = Keyword::where('parent_key', 'lottery_type')->oldest('sort')->get();
);
$beforeLedger = $statisticService->ledger( /** @var \Illuminate\Support\Collection */
array_merge($input, ['date_range' => $dateRange2]) $lotteryTypeStatistics = LedgerItem::select(
); [
'ledger_item_type_id',
DB::raw('SUM(sales) as sales'),
DB::raw('SUM(expenditure) as expenditure'),
],
)
->filter(array_merge($input, ['date_range' => $dateRange1]), LedgerItemFilter::class)
->whereIn('ledger_item_type_id', $lotteryTypes->pluck('key'))
->groupBy(['ledger_item_type_id'])
->get()
->keyBy('ledger_item_type_id');
// 销售涨幅 // 销售涨幅
$salesGrowthRate = 0; $salesGrowthRate = 0;
@ -112,21 +124,6 @@ class StatisticsController extends Controller
$salesGrowthRate = bcdiv(bcmul($diff, '100'), $beforeLedger['sales'], 2); $salesGrowthRate = bcdiv(bcmul($diff, '100'), $beforeLedger['sales'], 2);
} }
/** @var \Illuminate\Database\Eloquent\Collection */
$lotteryTypes = Keyword::where('parent_key', 'lottery_type')->oldest('sort')->get();
/** @var \Illuminate\Support\Collection */
$lotteryTypeStatistics = LedgerItem::select([
'ledger_item_type_id',
DB::raw('SUM(sales) as sales'),
DB::raw('SUM(expenditure) as expenditure'),
])
->filter(array_merge($input, ['date_range' => $dateRange1]), LedgerItemFilter::class)
->whereIn('ledger_item_type_id', $lotteryTypes->pluck('key'))
->groupBy(['ledger_item_type_id'])
->get()
->keyBy('ledger_item_type_id');
return array_merge($ledger, [ return array_merge($ledger, [
'sales_growth_rate' => $salesGrowthRate, 'sales_growth_rate' => $salesGrowthRate,
'lottery_types' => $lotteryTypes->map(function ($lotteryType) use ($lotteryTypeStatistics) { 'lottery_types' => $lotteryTypes->map(function ($lotteryType) use ($lotteryTypeStatistics) {
@ -157,10 +154,7 @@ class StatisticsController extends Controller
], ],
); );
$input = array_merge( $input = $this->filterInput($request);
$this->filterInput($request),
$request->only(['start_at', 'end_at']),
);
return $statisticService->storeRanking($input); return $statisticService->storeRanking($input);
} }