diff --git a/app/Services/DutyReportService.php b/app/Services/DutyReportService.php index 92412ed..a821f0c 100644 --- a/app/Services/DutyReportService.php +++ b/app/Services/DutyReportService.php @@ -17,6 +17,7 @@ use App\Services\Classification\PatientStatusClassifier; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class DutyReportService { @@ -61,15 +62,27 @@ class DutyReportService 'rf_user_id' => $user->id, ]; - $report = ReportDuty::updateOrCreate( - [ - 'report_date' => $data['report_date'], - 'period_start' => $data['period_start'], - 'period_end' => $data['period_end'], - 'rf_department_id' => $data['rf_department_id'], - ], - $data - ); + $reportExists = ReportDuty::where('report_date', $data['report_date']) + ->where('period_start', $data['period_start']) + ->where('period_end', $data['period_end']) + ->where('rf_department_id', $data['rf_department_id']) + ->exists(); + + if ($reportExists) { + $data = array_diff_key($data, array_flip(['rf_lpudoctor_id', 'rf_user_id'])); + $report = ReportDuty::updateOrCreate( + [ + 'report_date' => $data['report_date'], + 'period_start' => $data['period_start'], + 'period_end' => $data['period_end'], + 'rf_department_id' => $data['rf_department_id'], + ], + $data + ); + } else { + $report = ReportDuty::create($data); + } + return $report; } @@ -676,7 +689,7 @@ class DutyReportService $reanimationBatch = []; } } - + Log::info($totalStats); // Сохраняем остаток if (!empty($patientBatch)) { $batchStats = $this->upsertBatches($reportDutyId, $patientBatch, $migrationBatch, $reanimationBatch); @@ -927,13 +940,15 @@ class DutyReportService $byUrgency = $stats['by_urgency'] ?? []; $admitted = $stats['admitted'] ?? []; +// dd($stats, $statsOverride, !empty($statsOverride['outcome'])); + // === Базовые счётчики === $patientsIsRecipient = array_key_exists('recipient', $statsOverride) && !empty($statsOverride['recipient']) ? $statsOverride['recipient'] : $byStatus['recipient'] ?? 0; $patientsInDepartment = array_key_exists('in_department', $statsOverride) && !empty($statsOverride['in_department']) ? $statsOverride['in_department'] : $byStatus['in_department'] ?? 0; $patientsIsDischarged = array_key_exists('outcome', $statsOverride) && !empty($statsOverride['outcome']) - ? $statsOverride['outcome'] : $byStatus['outcome'] ?? 0; + ? $statsOverride['outcome'] : $stats['outcome'] ?? 0; $patientsIsTransferred = $stats['transferred'] ?? 0; $patientsIsDeceased = $byStatus['deceased'] ?? 0;