Название: Алгоритм/Схема расчета доступных временных интервалов на основе существующих встреч?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Название: Алгоритм/Схема расчета доступных временных интервалов на основе существующих встреч?

Сообщение Anonymous »

Контекст:
Я создаю систему бронирования для бизнеса (например, парикмахерской). Мне нужно вернуть массив всех доступных временных интервалов для заданного дня или недели.
Настройка:
Часы работы: с 08:00 до 18:00.
Продолжительность обслуживания: 50 минут.
У меня есть запрос PostgreSQL, который успешно возвращает список недоступных (уже забронированных) встреч для определенного работник.
Пример забронированных встреч из БД: [05/03-10:00, 05/03-10:50, 05/03-12:00]
Ожидаемый результат:
Мне нужно вернуть доступные места на основе рабочих часов и промежутков между забронированными встречами: [05/03-08:00, 03.05-08:50, 03.05-12:50...]
Мой текущий подход (и проблема):
Прямо сейчас моя логика пытается перебрать забронированные встречи и вычислить доступные промежутки между ними.
Однако это превращается во «Франкенштейна» крайних случаев. Например:
Пустые списки: если в день нет встреч, мне нужно написать отдельную логику, чтобы заполнить весь день.
Разнесенные дни: если пользователь выполняет поиск по всей неделе, а БД возвращает встречи только на понедельник и четверг, мой цикл изо всех сил пытается беспрепятственно заполнить полностью открытые дни между ними (вторник и среда), потому что он смотрит только на arr и arr[i+1].
Мой вопрос:
Расчет доступности путем поиска пробелов между существующими записями кажется невероятно хрупким. Существует ли стандартный алгоритм или шаблон проектирования интервального планирования, который более аккуратно обрабатывает такие крайние случаи (например, пустые дни и перекрывающуюся продолжительность)?

Подробнее здесь: https://stackoverflow.com/questions/799 ... n-existing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»