generated from liutk/owl-admin-base
Update
parent
1c5f2ff203
commit
c373199541
|
|
@ -5,6 +5,7 @@ namespace App\Admin\Controllers\Finance;
|
|||
use App\Admin\Controllers\AdminController;
|
||||
use App\Admin\Services\Finance\LedgerService;
|
||||
use App\Enums\CheckStatus;
|
||||
use App\Models\Keyword;
|
||||
use App\Models\Ledger;
|
||||
use App\Traits\HasCheckActions;
|
||||
use Illuminate\Http\Request;
|
||||
|
|
@ -228,23 +229,61 @@ class LedgerController extends AdminController
|
|||
return '上报数据';
|
||||
}
|
||||
|
||||
protected function exportMap($row)
|
||||
protected function export()
|
||||
{
|
||||
return [
|
||||
__('finance.ledger.date') => $row['date'],
|
||||
__('finance.ledger.store') => Arr::get($row, 'store.title'),
|
||||
__('finance.ledger.sales') => $row['sales'],
|
||||
__('finance.ledger.expenditure') => $row['expenditure'],
|
||||
__('finance.ledger.new_customers') => $row['new_customers'],
|
||||
__('finance.ledger.handover_amount') => $row['handover_amount'],
|
||||
__('finance.ledger.ledger_amount') => $row['ledger_amount'],
|
||||
__('finance.ledger.ledger_difference') => $row['ledger_difference'],
|
||||
__('finance.ledger.expected_commission') => $row['expected_commission'],
|
||||
__('finance.ledger.actual_commission') => $row['actual_commission'],
|
||||
__('finance.ledger.expected_income') => $row['expected_income'],
|
||||
__('finance.ledger.actual_income') => $row['actual_income'],
|
||||
__('workflow_log.check_status') => CheckStatus::tryFrom(Arr::get($row, 'workflow.check_status'))?->text(),
|
||||
__('finance.ledger.created_at') => $row['created_at'],
|
||||
];
|
||||
admin_abort_if(!class_exists('\Rap2hpoutre\FastExcel\FastExcel'), __('admin.export.please_install_laravel_excel'));
|
||||
|
||||
// 默认在 storage/app/ 下
|
||||
$path = sprintf('%s-%s.xlsx', $this->exportFileName(), date('YmdHis'));
|
||||
|
||||
// 导出本页和导出选中项都是通过 _ids 查询
|
||||
$ids = request()->input('_ids');
|
||||
|
||||
// listQuery() 为列表查询条件,与获取列表数据一致
|
||||
$data = $this->service->listQuery()
|
||||
->with(['items'])
|
||||
->when($ids, fn($query) => $query->whereIn($this->service->primaryKey(), explode(',', $ids)))
|
||||
->get();
|
||||
|
||||
/** @var \Illuminate\Database\Eloquent\Collection */
|
||||
$lotteryTypes = Keyword::where('parent_key', 'lottery_type')->oldest('sort')->get();
|
||||
|
||||
try {
|
||||
fastexcel($data->loadMissing(['items']))->export(storage_path('app/' . $path), function($row) use ($lotteryTypes) {
|
||||
$ledgerItems = collect($row['items'])->keyBy('ledger_item_type_id');
|
||||
|
||||
$data = [
|
||||
__('finance.ledger.date') => $row['date'],
|
||||
__('finance.ledger.store') => Arr::get($row, 'store.title'),
|
||||
__('finance.ledger.sales') => $row['sales'],
|
||||
__('finance.ledger.expenditure') => $row['expenditure'],
|
||||
__('finance.ledger.new_customers') => $row['new_customers'],
|
||||
__('finance.ledger.handover_amount') => $row['handover_amount'],
|
||||
__('finance.ledger.ledger_amount') => $row['ledger_amount'],
|
||||
__('finance.ledger.ledger_difference') => $row['ledger_difference'],
|
||||
__('finance.ledger.expected_commission') => $row['expected_commission'],
|
||||
__('finance.ledger.actual_commission') => $row['actual_commission'],
|
||||
__('finance.ledger.expected_income') => $row['expected_income'],
|
||||
__('finance.ledger.actual_income') => $row['actual_income'],
|
||||
__('workflow_log.check_status') => CheckStatus::tryFrom(Arr::get($row, 'workflow.check_status'))?->text(),
|
||||
__('finance.ledger.created_at') => $row['created_at'],
|
||||
];
|
||||
|
||||
foreach ($lotteryTypes as $lotteryType) {
|
||||
$ledgerItem = $ledgerItems->get($lotteryType->key);
|
||||
|
||||
$data = array_merge($data, [
|
||||
"{$lotteryType->name}-销售" => trim_zeros($ledgerItem->sales ?? 0),
|
||||
"{$lotteryType->name}-兑奖" => trim_zeros($ledgerItem->expenditure ?? 0),
|
||||
]);
|
||||
}
|
||||
|
||||
return $data;
|
||||
});
|
||||
} catch (\Throwable $e) {
|
||||
admin_abort(__('admin.action_failed'));
|
||||
}
|
||||
|
||||
return $this->response()->success(compact('path'));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue