actionOfGetData()) { return $this->response()->success([ 'items' => [$this->getCommissionIncomeStatistics(request())], ]); } return $this->response()->success( $this->baseList( $this->baseCRUD() ->headerToolbar([ amis('filter-toggler')->align('right'), ]) ->footerToolbar([]) ->bulkActions([]) ->filter($this->baseFilter()->body([ amis()->GroupControl()->mode('horizontal')->body([ amis()->DateRangeControl('date_range', '日期') ->valueFormat('YYYY-MM-DD') ->columnRatio(6), amis()->InputCityControl('region', '区域') ->allowDistrict(false) ->extractValue(false), amis()->SelectControl('store_id', __('finance.ledger.store')) ->source(admin_url('api/stores?region=${region}')) ->labelField('title') ->valueField('id') ->clearable(), ]), ])) ->columns([ amis()->TableColumn('expected_commission', '预期佣金'), amis()->TableColumn('actual_commission', '实际佣金'), amis()->TableColumn('diff_commission', '佣金差异'), amis()->TableColumn('expected_income', '预期收益'), amis()->TableColumn('actual_income', '实际收益'), amis()->TableColumn('diff_income', '收益差异'), ]) ) ); } protected function getCommissionIncomeStatistics(Request $request): array { $aggregate = Ledger::select([ DB::raw('SUM(expenditure) as expenditure'), DB::raw('SUM(expected_commission) as expected_commission'), DB::raw('SUM(actual_commission) as actual_commission'), DB::raw('SUM(expected_income) as expected_income'), DB::raw('SUM(actual_income) as actual_income'), ]) ->filter($request->input(), LedgerFilter::class) ->first(); $expectedCommission = $aggregate->expected_commission ?? '0'; $actualCommission = $aggregate->actual_commission ?? '0'; $expectedIncome = $aggregate->expected_income ?? '0'; $actualIncome = $aggregate->actual_income ?? '0'; return [ 'expected_commission' => trim_zeros($expectedCommission), 'actual_commission' => trim_zeros($actualCommission), 'diff_commission' => trim_zeros(bcsub($actualCommission, $expectedCommission, 2)), 'expected_income' => trim_zeros($expectedIncome), 'actual_income' => trim_zeros($actualIncome), 'diff_income' => trim_zeros(bcsub($actualIncome, $expectedIncome, 2)), ]; } }