Исправил индиктор заполнения отчета в статистике
Добавил вывод прошедшего отчета в статистике Исправил выбор дат в календаре статистики
This commit is contained in:
@@ -23,15 +23,18 @@ class StatisticController extends Controller
|
|||||||
|
|
||||||
$queryStartDate = $request->query('startAt');
|
$queryStartDate = $request->query('startAt');
|
||||||
$queryEndDate = $request->query('endAt');
|
$queryEndDate = $request->query('endAt');
|
||||||
|
$queryDateRange = $this->dateService->getDateRangeFromRequest($request, $user, false);
|
||||||
|
$isRangeOneDayQuery = $this->dateService->isRangeOneDay($queryDateRange->startDate, $queryDateRange->endDate);
|
||||||
$dateRange = $this->dateService->getDateRangeFromRequest($request, $user);
|
$dateRange = $this->dateService->getDateRangeFromRequest($request, $user);
|
||||||
$isRangeOneDay = $this->dateService->isRangeOneDay($dateRange->startDate, $dateRange->endDate);
|
$isRangeOneDay = $this->dateService->isRangeOneDay($dateRange->startDate, $dateRange->endDate);
|
||||||
|
|
||||||
$queryStartOfDateRange = $dateRange->start()->copy()->startOfYear();
|
$queryStartOfDateRange = $dateRange->start()->copy()->startOfYear();
|
||||||
|
|
||||||
// Генерируем ключ кэша на основе параметров запроса
|
// Генерируем ключ кэша на основе параметров запроса
|
||||||
// $cacheKey = $this->generateCacheKey($user, $startDate, $endDate, $isRangeOneDay);
|
// $cacheKey = $this->generateCacheKey($user, $startDate, $endDate, $isRangeOneDay);
|
||||||
|
|
||||||
// Получаем данные из кэша или вычисляем
|
// Получаем данные из кэша или вычисляем
|
||||||
$finalData = $this->statisticsService->getStatisticsData($user, $dateRange->startDate, $dateRange->endDate, $isRangeOneDay);
|
$finalData = $this->statisticsService->getStatisticsData($user, $dateRange->startDate, $dateRange->endDate, $isRangeOneDayQuery);
|
||||||
|
|
||||||
$isHeadOrAdmin = $user->isSeniorStaff() || $user->isEconomist();
|
$isHeadOrAdmin = $user->isSeniorStaff() || $user->isEconomist();
|
||||||
// $date = $isHeadOrAdmin ? [
|
// $date = $isHeadOrAdmin ? [
|
||||||
@@ -46,7 +49,7 @@ class StatisticController extends Controller
|
|||||||
'isHeadOrAdmin' => $isHeadOrAdmin,
|
'isHeadOrAdmin' => $isHeadOrAdmin,
|
||||||
'date' => [
|
'date' => [
|
||||||
$dateRange->startDate->getTimestampMs(),
|
$dateRange->startDate->getTimestampMs(),
|
||||||
$dateRange->displayEnd()->getTimestampMs(),
|
$isRangeOneDayQuery ? $dateRange->endDate->getTimestampMs() : $dateRange->displayEnd()->getTimestampMs(),
|
||||||
],
|
],
|
||||||
'isOneDay' => $isRangeOneDay,
|
'isOneDay' => $isRangeOneDay,
|
||||||
'recipientPlanOfYear' => $finalData['recipientPlanOfYear'],
|
'recipientPlanOfYear' => $finalData['recipientPlanOfYear'],
|
||||||
|
|||||||
@@ -138,9 +138,9 @@ class DateRangeService
|
|||||||
$endAlreadyResolved = $endDate->format('H:i:s') === '09:00:00';
|
$endAlreadyResolved = $endDate->format('H:i:s') === '09:00:00';
|
||||||
|
|
||||||
if ($startDate->isSameDay($endDate)) {
|
if ($startDate->isSameDay($endDate)) {
|
||||||
$startDate = $startDate->subDay()->setTime(9, 0);
|
$startDate = $startDate->setTime(9, 0);
|
||||||
$endDate = $endDate->setTime(9, 0);
|
$endDate = $endDate->addDay()->setTime(9, 0);
|
||||||
} else {
|
} else {
|
||||||
$startDate = $startDate->setTime(9, 0);
|
$startDate = $startDate->setTime(9, 0);
|
||||||
// Смена длится сутки и "принадлежит" дню, в который начинается (см. currentShiftBoundaries).
|
// Смена длится сутки и "принадлежит" дню, в который начинается (см. currentShiftBoundaries).
|
||||||
// Поэтому смена последнего выбранного дня захватывает следующие календарные сутки —
|
// Поэтому смена последнего выбранного дня захватывает следующие календарные сутки —
|
||||||
@@ -159,7 +159,10 @@ class DateRangeService
|
|||||||
|
|
||||||
private function getDefaultDateRange($user): array
|
private function getDefaultDateRange($user): array
|
||||||
{
|
{
|
||||||
[$startDate, $endDate] = $this->currentShiftBoundaries();
|
$requestPath = request()->path();
|
||||||
|
$switchToday = $requestPath === 'report';
|
||||||
|
|
||||||
|
[$startDate, $endDate] = $this->currentShiftBoundaries($switchToday);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
$startDate->format('Y-m-d H:i:s'),
|
$startDate->format('Y-m-d H:i:s'),
|
||||||
@@ -167,12 +170,12 @@ class DateRangeService
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
private function currentShiftBoundaries(): array
|
private function currentShiftBoundaries(bool $switchToday = false): array
|
||||||
{
|
{
|
||||||
$now = Carbon::now('Asia/Yakutsk');
|
$now = Carbon::now('Asia/Yakutsk');
|
||||||
$todayAt9 = $now->copy()->setTime(9, 0, 0);
|
$todayAt9 = $now->copy()->setTime(9, 0, 0);
|
||||||
|
|
||||||
if ($now->gte($todayAt9)) {
|
if ($switchToday && $now->gte($todayAt9)) {
|
||||||
return [$todayAt9, $todayAt9->copy()->addDay()];
|
return [$todayAt9, $todayAt9->copy()->addDay()];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,9 +50,11 @@ class NurseReportService
|
|||||||
'rf_user_id' => $user->id,
|
'rf_user_id' => $user->id,
|
||||||
];
|
];
|
||||||
|
|
||||||
$existsReport = ReportNurse::where('period_start', $data['period_start'])
|
$existsReport = ReportNurse::where('report_date', $data['report_date'])
|
||||||
->where('period_end', $data['period_end'])
|
->where('period_start', $data['period_start'])
|
||||||
->exists();
|
->where('period_end', $data['period_end'])
|
||||||
|
->where('rf_department_id', $data['rf_department_id'])
|
||||||
|
->exists();
|
||||||
|
|
||||||
// if ($existsReport) unset($data['rf_lpudoctor_id']);
|
// if ($existsReport) unset($data['rf_lpudoctor_id']);
|
||||||
|
|
||||||
|
|||||||
@@ -255,6 +255,8 @@ class StatisticsService
|
|||||||
|
|
||||||
$departmentName = $dept->user_name ?? $dept->name_short;
|
$departmentName = $dept->user_name ?? $dept->name_short;
|
||||||
|
|
||||||
|
$isReportToday = $lastReport ? Carbon::parse($lastReport->period_end)->isSameDay($endDate) && $lastReport->rf_lpudoctor_id !== 0 : null;
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'department' => $departmentName,
|
'department' => $departmentName,
|
||||||
'department_id' => $deptId,
|
'department_id' => $deptId,
|
||||||
@@ -305,7 +307,7 @@ class StatisticsService
|
|||||||
'lethality' => $lethality,
|
'lethality' => $lethality,
|
||||||
'type' => $typeName,
|
'type' => $typeName,
|
||||||
'isDepartment' => true,
|
'isDepartment' => true,
|
||||||
'isReportToday' => $lastReport ? Carbon::parse($lastReport->period_end)->isSameDay($endDate) : null,
|
'isReportToday' => $isReportToday,
|
||||||
];
|
];
|
||||||
|
|
||||||
$groupedData[$typeName][] = $data;
|
$groupedData[$typeName][] = $data;
|
||||||
|
|||||||
Reference in New Issue
Block a user