main
panliang 2024-04-19 17:04:13 +08:00
commit 709dbeea57
4 changed files with 39 additions and 7 deletions

View File

@ -70,7 +70,7 @@ class TaskService extends BaseService
$endAt = $month->copy()->endOfMonth(); $endAt = $month->copy()->endOfMonth();
// 门店实际业绩 // 门店实际业绩
$actualPerformance = Ledger::where('store_id', $store->id) $totalSales = Ledger::where('store_id', $store->id)
->whereBetween('date', [$startAt->format('Y-m-d'), $endAt->format('Y-m-d')]) ->whereBetween('date', [$startAt->format('Y-m-d'), $endAt->format('Y-m-d')])
->sum('sales'); ->sum('sales');
@ -80,7 +80,7 @@ class TaskService extends BaseService
'store_id' => $store->id, 'store_id' => $store->id,
'store_master_id' => $store->master_id, 'store_master_id' => $store->master_id,
'expected_performance' => $payload['expected_performance'], 'expected_performance' => $payload['expected_performance'],
'actual_performance' => $actualPerformance, 'actual_performance' => $totalSales,
]); ]);
// 月份 // 月份
@ -172,7 +172,7 @@ class TaskService extends BaseService
'expected_performance' => $payload['expected_performance'], 'expected_performance' => $payload['expected_performance'],
]); ]);
if ($taskable->isCompleted()) { if ($taskable->isCompleted() && ! $task->isSuccess()) {
$task->update([ $task->update([
'task_status' => TaskStatus::Success, 'task_status' => TaskStatus::Success,
'completed_at' => now(), 'completed_at' => now(),

View File

@ -22,7 +22,7 @@ enum TaskStatus: int
self::Processing->value => '进行中', self::Processing->value => '进行中',
self::Success->value => '已完成', self::Success->value => '已完成',
self::Failed->value => '未完成', self::Failed->value => '未完成',
self::Revoked->value => '已撤销', // self::Revoked->value => '已撤销',
]; ];
} }
@ -33,7 +33,7 @@ enum TaskStatus: int
self::Processing->value => '<span class="label bg-pink-500">'.self::Processing->text().'</span>', self::Processing->value => '<span class="label bg-pink-500">'.self::Processing->text().'</span>',
self::Success->value => '<span class="label label-success">'.self::Success->text().'</span>', self::Success->value => '<span class="label label-success">'.self::Success->text().'</span>',
self::Failed->value => '<span class="label label-danger">'.self::Failed->text().'</span>', self::Failed->value => '<span class="label label-danger">'.self::Failed->text().'</span>',
self::Revoked->value => '<span class="label bg-gray-300">'.self::Revoked->text().'</span>', // self::Revoked->value => '<span class="label bg-gray-300">'.self::Revoked->text().'</span>',
]; ];
} }
} }

View File

@ -9,7 +9,9 @@ use App\Models\Keyword;
use App\Models\Ledger; use App\Models\Ledger;
use App\Models\LedgerItem; use App\Models\LedgerItem;
use App\Models\TaskLedger; use App\Models\TaskLedger;
use App\Models\TaskPerformance;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Throwable; use Throwable;
@ -85,9 +87,11 @@ class LedgerController extends Controller
} }
} }
$date = Carbon::createFromFormat('Y-m-d', $validated['date']);
/** @var \App\Models\Ledger|null */ /** @var \App\Models\Ledger|null */
$ledger = Ledger::where('store_id', $user->store_id) $ledger = Ledger::where('store_id', $user->store_id)
->where('date', $validated['date']) ->where('date', $date->format('Y-m-d'))
->first(); ->first();
if ($ledger && ! $ledger->allowReReport()) { if ($ledger && ! $ledger->allowReReport()) {
@ -134,7 +138,8 @@ class LedgerController extends Controller
])->all() ])->all()
); );
// 自动完成总账录入任务 // 总账录入任务
/** @var \App\Models\TaskLedger */
$taskLedger = TaskLedger::where('store_id', $user->store_id) $taskLedger = TaskLedger::where('store_id', $user->store_id)
->where('date', $ledger->date) ->where('date', $ledger->date)
->first(); ->first();
@ -145,6 +150,28 @@ class LedgerController extends Controller
]); ]);
} }
// 业绩指标任务
/** @var \App\Models\TaskPerformance */
$taskPerformance = TaskPerformance::where('store_id', $ledger->store_id)
->where('month', $date->format('Y-m'))
->first();
if ($taskPerformance) {
$totalSales = Ledger::where('store_id', $ledger->store_id)
->whereBetween('date', [$date->copy()->startOfMonth()->format('Y-m-d'), $date->copy()->endOfMonth()->format('Y-m-d')])
->sum('sales');
$taskPerformance->update([
'actual_performance' => $totalSales,
]);
if ($taskPerformance->isCompleted() && ! $taskPerformance->task->isSuccess()) {
$taskPerformance->task->update([
'task_status' => TaskStatus::Success,
'completed_at' => now(),
]);
}
}
DB::commit(); DB::commit();
} catch (Throwable $e) { } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();

View File

@ -46,4 +46,9 @@ class Task extends Model
{ {
return $this->morphTo(); return $this->morphTo();
} }
public function isSuccess(): bool
{
return $this->task_status === TaskStatus::Success;
}
} }