From ca02342ca4ffbca5fed0ff9277b45ed1de963f67 Mon Sep 17 00:00:00 2001 From: Jing Li Date: Mon, 29 Apr 2024 12:11:43 +0800 Subject: [PATCH] Update --- app/Admin/Services/Plan/PlanService.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/app/Admin/Services/Plan/PlanService.php b/app/Admin/Services/Plan/PlanService.php index 7d2faf9..98d2b5d 100644 --- a/app/Admin/Services/Plan/PlanService.php +++ b/app/Admin/Services/Plan/PlanService.php @@ -8,16 +8,19 @@ use App\Admin\Services\BaseService; use App\Enums\PlanStatus; use App\Enums\TaskStatus; use App\Models\Keyword; +use App\Models\Ledger; use App\Models\Plan; use App\Models\PlanHygiene; use App\Models\PlanPerformance; use App\Models\Store; +use App\Models\Task; use App\Models\TaskHygiene; use App\Models\TaskPerformance; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Support\Carbon; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; @@ -215,6 +218,12 @@ class PlanService extends BaseService 'level_id' => $plan->planable->store_level_id, ]; + $aggregates = Ledger::select(['store_id', DB::raw('SUM(`sales`) as sales')]) + ->whereBetween('date', [$startAt->format('Y-m-d'), $endAt->format('Y-m-d')]) + ->groupBy('store_id') + ->pluck('sales', 'store_id') + ->toArray(); + /** @var \Illuminate\Database\Eloquent\Collection */ $stores = Store::filter($input, StoreFilter::class)->get(['id', 'master_id']); @@ -224,15 +233,23 @@ class PlanService extends BaseService 'store_id' => $store->id, 'store_master_id' => $store->master_id, 'expected_performance' => $plan->planable->performance, - 'actual_performance' => 0, + 'actual_performance' => $aggregates[$store->id] ?? 0, ]); - $taskable->task()->create([ + + $task = new Task([ 'plan_id' => $plan->id, 'name' => '业绩指标', 'start_at' => $startAt, 'end_at' => $endAt, 'task_status' => TaskStatus::Pending, ]); + + if ($taskable->isSuccess()) { + $task->task_status = TaskStatus::Success; + $task->completed_at = now(); + } + + $taskable->task()->save($task); } break;