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 383f98a2..00000000 Binary files a/storage/app/public/企业统计.xlsx and /dev/null differ 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);