diff --git a/app/Http/Controllers/Web/DutyReportController.php b/app/Http/Controllers/Web/DutyReportController.php index 84b39ca..0b4d7ba 100644 --- a/app/Http/Controllers/Web/DutyReportController.php +++ b/app/Http/Controllers/Web/DutyReportController.php @@ -329,6 +329,12 @@ class DutyReportController extends Controller $unwantedEvents = $request->get('unwanted_events', []); $selectedUserId = $request->get('userId') ? (int) $request->get('userId') : null; $selectedDepartmentId = $request->get('departmentId') ? (int) $request->get('departmentId') : null; + + // Приоритет над метриками (поступило, выбыло, состоит и мед. персонал) + $statRecipient = $request->get('recipient') ? (int) $request->get('recipient') : null; + $statDischarged = $request->get('discharged') ? (int) $request->get('discharged') : null; + $statCurrent = $request->get('current') ? (int) $request->get('current') : null; + $staff = (int) $request->get('staff', 0); $dateRange = $this->dateRangeService->getDateRangeFromRequest($request, $user, extendRangeEnd: false); @@ -337,7 +343,13 @@ class DutyReportController extends Controller $this->dutyReportService->saveObservables($observables, $report); $this->dutyReportService->saveUnwantedEvents($unwantedEvents, $report); - $this->dutyReportService->saveMetrics($stats, $report, $staff); + $statsOverride = [ + 'recipient' => $statRecipient, + 'outcome' => $statDischarged, + 'in_department' => $statCurrent + ]; + + $this->dutyReportService->saveMetrics($stats, $report, $staff, $statsOverride); return redirect()->back(); } diff --git a/app/Services/DutyReportService.php b/app/Services/DutyReportService.php index 949b509..d83fc22 100644 --- a/app/Services/DutyReportService.php +++ b/app/Services/DutyReportService.php @@ -921,16 +921,19 @@ class DutyReportService ]; } - public function saveMetrics(array $stats, ReportDuty $reportDuty, int $staff = 0) + public function saveMetrics(array $stats, ReportDuty $reportDuty, int $staff = 0, array $statsOverride = []) { $byStatus = $stats['by_status'] ?? []; $byUrgency = $stats['by_urgency'] ?? []; $admitted = $stats['admitted'] ?? []; // === Базовые счётчики === - $patientsIsRecipient = $byStatus['recipient'] ?? 0; - $patientsInDepartment = $byStatus['in_department'] ?? 0; - $patientsIsDischarged = $stats['outcome'] ?? 0; + $patientsIsRecipient = array_key_exists('recipient', $statsOverride) + ? $statsOverride['recipient'] : $byStatus['recipient'] ?? 0; + $patientsInDepartment = array_key_exists('in_department', $statsOverride) + ? $statsOverride['in_department'] : $byStatus['in_department'] ?? 0; + $patientsIsDischarged = array_key_exists('outcome', $statsOverride) + ? $statsOverride['outcome'] : $byStatus['outcome'] ?? 0; $patientsIsTransferred = $stats['transferred'] ?? 0; $patientsIsDeceased = $byStatus['deceased'] ?? 0;