From 837bd9f86da8eafcfd16d103ff4d0da71f867b97 Mon Sep 17 00:00:00 2001 From: denghy Date: Wed, 13 Nov 2019 20:06:49 +0800 Subject: [PATCH] CompanyReportDetailExport --- .../Exports/CompanyReportDetailExport.php | 8 +++- tests/ExampleTest.php | 39 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/app/Domains/Stats/Exports/CompanyReportDetailExport.php b/app/Domains/Stats/Exports/CompanyReportDetailExport.php index ecd3aeec..39fb559b 100644 --- a/app/Domains/Stats/Exports/CompanyReportDetailExport.php +++ b/app/Domains/Stats/Exports/CompanyReportDetailExport.php @@ -11,6 +11,7 @@ use Dipper\Excel\Concerns\FromQuery; use App\Exceptions\NotAllowedException; use Dipper\Excel\Concerns\WithHeadings; use Illuminate\Database\Eloquent\Builder; +use Dipper\Excel\Concerns\WithCustomChunkSize; use Dipper\Excel\Concerns\WithCustomQuerySize; use Dipper\Excel\Concerns\WithColumnFormatting; use App\Domains\Virtual\Services\CompanyService; @@ -18,7 +19,7 @@ use App\Domains\Virtual\Services\PackageService; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; use App\Domains\Virtual\Repositories\OrderCardPartitionRepository; -class CompanyReportDetailExport extends AbstractExport implements FromQuery, WithHeadings, WithRows, WithColumnFormatting, WithCustomQuerySize +class CompanyReportDetailExport extends AbstractExport implements FromQuery, WithHeadings, WithRows, WithColumnFormatting, WithCustomQuerySize, WithCustomChunkSize { public $conditions; @@ -30,6 +31,11 @@ class CompanyReportDetailExport extends AbstractExport implements FromQuery, Wit parent::__construct(); } + public function chunkSize(): int + { + return 150000; + } + public function querySize(): int { return app(OrderCardPartitionRepository::class)->withConditions($this->conditions)->applyConditions()->count(); diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php index 28749f49..102a775d 100644 --- a/tests/ExampleTest.php +++ b/tests/ExampleTest.php @@ -5,6 +5,45 @@ use App\Domains\Virtual\Services\PropertyService; require_once realpath(dirname(__FILE__) . '/TestCase.php'); +$sql = <<< EOF +select + "sim" , + "company_id", + "package_id", + "type", + case + "type" + when 3 then sum(counts) + else count(*) + end as counts , + "unit_price" +from + "virtual_order_cards_partition" +where + ("type" in (0) + and "company_id" in (23) + and "package_id" in (98) + and "unit_price" = 14400 + and ("service_start_at" <= '2019-10-31 23:59:59' + and "service_end_at" >= '2019-10-01 00:00:00')) + and "virtual_order_cards_partition"."deleted_at" is null + and "refunded_at" is null +group by + "company_id" , + "package_id", + "type", + "unit_price" , + "sim" +order by + "sim" asc +limit 100000 +EOF; + + +$res = DB::select($sql); + +dd($res); + $test = PropertyService::load('1', '1'); dd($test);