Орион Про. Учет рабочего времени своими руками. Информационная модель.

Анализ логики работы системы Орион Про и связей таблиц в БД показал, что учет рабочего времени сотрудников вполне возможно реализовать своими силами. Ниже представлена информационная модель системы так, как я ее вижу.

Информационная модель состоит из двух частей:
1. Процесс верификации персонального идентификатора (карты), принятия решения о предоставлении доступа и записи в таблицу pLogData результата.
2. Процесс расчета отработанного сотрудниками времени на основании записей в таблице pLogData.

Процесс верификации персонального идентификатора (карты), принятия решения о предоставлении доступа и записи в таблицу pLogData результата.

Модель процесса верификации персонального идентификатора, принятия решения о предоставлении доступа и регистрации результата в БД

После предъявления карты считывателю, обработки контроллером кода карты и передачи его серверу в базе данных происходят следующие процессы:

  • Поиск кода карты. В таблице pMark происходит поиск строки с полем CodeP равным полученному коду карты, в случае отсутствия в таблицу pLogData вносится запись с кодом «Доступ отклонен, неизвестный код» и доступ не предоставляется.
  • Поиск пользователя, которому принадлежит карта. В таблице pList происходит поиск строки с полем ID равным полю Owner таблицы pMark.
  • Поиск подразделения, к которому относится сотрудник. В таблице PDivision происходит поиск строки с полем ID равным полю Section таблицы pList.
  • Поиск уровня доступа для подразделения сотрудника. В таблице Groups происходит поиск строки с полем ID равным полю GroupID таблицы PDivision.
  • Поиск прав для уровня доступа. В таблице GrAccess происходит поиск строки с полем GroupID равным полю ID таблицы Groups.
  • На основании прав уровня доступа проверяются два условия:
  • 1.Верификация прав доступа к данной точке доступа.
    • Поиск точки доступа. В таблице AcessPoint происходит поиск строки с полем ID равным полю AccessID таблицы GrAccess.
    • Поиск считывателя. В таблице RdrAccessPoint происходит поиск строки с полем AccessPointID равным полю ID таблицы AcessPoint.
  • 2. Проверка временного интервала для доступа.
    • Поиск окна времени для уровня доступа. В таблице GTime происходит поиск строки к полем ID равным полю TimeZone таблицы GrAccess.
    • Определение временного интервала для окна времени. В таблице TimeCont происходит поиск строки к полем TimeID равным полю ID таблицы GTime.
  • В случае если доступ к считывателю разрешен пользователю и время текущей идентификации попадает в окно времени определенного для пользователя – пользователю предоставляется доступ и в таблицу pLogData вносятся запись с событием «Доступ предоставлен», в противном случае доступ не предоставляется и в таблицу pLogData вносятся запись с событием «Доступ отклонен, допустимый код»

    Процесс расчета отработанного сотрудниками времени на основании записей в таблице pLogData.

    Модель процесса расчета отработанного сотрудниками времени
    Модель процесса расчета отработанного сотрудниками времени

    За каждые сутки для каждого или указанных сотрудников выполняются следующие действия:

  • Из таблицы pLogData выбираются все строки со значением поля HozOrgan равным значению поля ID таблицы pList и сортируются по возрастанию времени, т.е. собираются данные о проходах через точки доступа.
  • В таблице pList для каждой строки (строка содержит информацию об одном сотруднике) проверяется значение поля schedule.
    • Значение поля schedule равно нулю – сотрудник работает по графику подразделения. В этом случае в таблице PDivision, для определения уровня доступа (поле GroupID), происходит поиск строки с полем ID равным значению поля Section таблицы pList.
    • Значение поля schedule не равно нулю – сотрудник работает по индивидуальному графику и значение поля schedule есть идентификатор уровня доступа (GroupID).
  • Определяются зоны доступа для уровня доступа сотрудника (поле AccessID таблицы GrAccess). Для этого в таблице GrAccess происходит поиск всех строк где значение поля GroupID равно найденному ранее GroupID.
  • Определяется график работы сотрудника. Для этого в таблицах TimeCont (время) и GTime (график) происходит поиск всех строк со значением поля ID для таблицы GTime и TimeID для таблицы TimeCont равным значению поля TimeZone таблицы GrAccess.
  • В поле ZoneIndex таблицы pLogData содержится номер зоны в которую вошел (из которой вышел сотрудник). Для получения ID зоны производится поиск строки таблицы AccessZone где значение поля GIndex равно значению поля ZoneIndex таблицы pLogData.
  • После того, как все данные агрегированы и известны все проходы сотрудника за сутки, производится подсчет рабочего времени. Происходит сравнение зон доступа, в которых находился сотрудник и время его входа и выхода из них. Если сотрудник находился в зоне, определенной его уровнем доступа для учета рабочего времени во время определенное графиком – время работы суммируется, если нет – отбрасывается.
  • По завершении цикла обсчета времени сотрудников за один день, цикл повторяется для следующего дня и т.д. до достижения последнего дня месяца.

Еще раз повторю, все выше сказанное — мое видение процесса, а не техническая документация Болида.
Обладая этими простейшими знаниями вполне можно написать свой учет рабочего времени так, как вам хочется.

Оцените пожалуйста статью:

ПечальноТак себеНе плохоХорошоОтличная статья! 2 оценок.
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *