Исправил перезапись ответственного при повторном сохранении отчета

This commit is contained in:
brusnitsyn
2026-07-15 16:58:59 +09:00
parent 01692c68d5
commit 85c48fc9b6

View File

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