From eee963626625b09c38232ebb176f16b699f1eb91 Mon Sep 17 00:00:00 2001 From: denghy Date: Sat, 29 Dec 2018 18:16:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Domains/Stats/Exports/AbstractExport.php | 15 ++++++++++++--- .../Stats/Exports/CompanyCountExport.php | 11 ++++++----- .../Http/Controllers/CompanyCountController.php | 14 +++++++------- storage/app/public/企业统计.xlsx | Bin 10965 -> 0 bytes tests/StatsTest.php | 2 ++ 5 files changed, 27 insertions(+), 15 deletions(-) delete mode 100644 storage/app/public/企业统计.xlsx diff --git a/app/Domains/Stats/Exports/AbstractExport.php b/app/Domains/Stats/Exports/AbstractExport.php index b8943194..b7fbbe2e 100644 --- a/app/Domains/Stats/Exports/AbstractExport.php +++ b/app/Domains/Stats/Exports/AbstractExport.php @@ -13,8 +13,9 @@ use Illuminate\Filesystem\Filesystem; use Dipper\Excel\Events\BeforeWriting; use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Storage; +use Dipper\Excel\Concerns\ShouldAutoSize; -abstract class AbstractExport implements WithEvents, WithTitle +abstract class AbstractExport implements WithEvents, WithTitle, ShouldAutoSize { public static $classes = [ \App\Domains\Stats\Exports\CompanyCountExport::class => '企业统计', @@ -126,7 +127,13 @@ abstract class AbstractExport implements WithEvents, WithTitle */ public function title(): string { - return self::$classes[get_class($this)] ?? '列表'; + $title = self::$classes[get_class($this)]; + + if (($conditions = $this->conditions) && $conditions['starttime'] && $conditions['endtime']) { + $title .= Carbon::parse($conditions['starttime'])->format('Ymd') . '-' . Carbon::parse($conditions['endtime'])->format('Ymd'); + } + + return $title ?? '列表'; } /** @@ -146,7 +153,9 @@ abstract class AbstractExport implements WithEvents, WithTitle */ private function filename(): string { - $filename = $this->title() . date('YmdHis'); + $title = self::$classes[get_class($this)]; + + $filename = $title . date('YmdHis'); return "export/{$filename}.xlsx"; } diff --git a/app/Domains/Stats/Exports/CompanyCountExport.php b/app/Domains/Stats/Exports/CompanyCountExport.php index 9db89842..51b09059 100644 --- a/app/Domains/Stats/Exports/CompanyCountExport.php +++ b/app/Domains/Stats/Exports/CompanyCountExport.php @@ -5,9 +5,10 @@ namespace App\Domains\Stats\Exports; use Dipper\Excel\Concerns\Exportable; use Dipper\Excel\Concerns\WithHeadings; use Dipper\Excel\Concerns\FromCollection; +use Dipper\Excel\Concerns\WithHeadingRow; use App\Domains\Stats\Services\CompanyCountService; -class CompanyCountExport extends AbstractExport implements FromCollection, WithHeadings +class CompanyCountExport extends AbstractExport implements FromCollection, WithHeadings, WithHeadingRow { use Exportable; @@ -30,10 +31,10 @@ class CompanyCountExport extends AbstractExport implements FromCollection, WithH $companies->push([ '', '总计', - array_sum($companies->pluck('total')->toArray()), - array_sum($companies->pluck('counts')->toArray()), - array_sum($companies->pluck('renewed_counts')->toArray()), - array_sum($companies->pluck('valid_counts')->toArray()), + array_sum($companies->pluck('total')->toArray()) ?: 0, + array_sum($companies->pluck('counts')->toArray()) ?: 0, + array_sum($companies->pluck('renewed_counts')->toArray()) ?: 0, + array_sum($companies->pluck('valid_counts')->toArray()) ?: 0, ]); return $companies; diff --git a/app/Domains/Stats/Http/Controllers/CompanyCountController.php b/app/Domains/Stats/Http/Controllers/CompanyCountController.php index 8f404992..30643aa2 100644 --- a/app/Domains/Stats/Http/Controllers/CompanyCountController.php +++ b/app/Domains/Stats/Http/Controllers/CompanyCountController.php @@ -46,13 +46,13 @@ class CompanyCountController extends Controller $conditions = $this->request->all(); $conditions['limit'] = 0; - $export = new CompanyCountExport($conditions); - - $res = Excel::queue($export, $export->filename(), $this->disk); - - dd($res); - - $url = Storage::url($filename); + try { + $export = new CompanyCountExport($conditions); + Excel::store($export, $export->filename(), $this->disk); + $url = Storage::disk($this->disk)->url($filename); + } catch (\Exception $e) { + return err('导出失败,请稍后重试'); + } return res($url, '导出成功', 201); } diff --git a/storage/app/public/企业统计.xlsx b/storage/app/public/企业统计.xlsx deleted file mode 100644 index 383f98a27ffe076ed226b6fb609acfc5f88d655a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10965 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 QlE{F`m%=%IfdK&j4@VOyu>b%7 diff --git a/tests/StatsTest.php b/tests/StatsTest.php index fe735860..04de4c2f 100644 --- a/tests/StatsTest.php +++ b/tests/StatsTest.php @@ -7,6 +7,8 @@ use App\Domains\Stats\Exports\CompanyCountExport; require_once realpath(dirname(__FILE__) . '/TestCase.php'); $conditions['limit'] = 0; +$conditions['starttime'] = '2018-01-01'; +$conditions['endtime'] = '2018-01-31'; $export = new CompanyCountExport($conditions);