Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
doc:arccnt:mod:msc [2016/06/21 06:51] denis [task] |
doc:arccnt:mod:msc [2016/06/21 07:28] (текущий) denis [card] |
||
---|---|---|---|
Строка 90: | Строка 90: | ||
</code> | </code> | ||
+ | Владельцы карт. | ||
===== card ===== | ===== card ===== | ||
Строка 102: | Строка 103: | ||
</code> | </code> | ||
+ | Карты. | ||
+ | |||
+ | **CODE** - код карты в десятичном формате, пример: "89,11,36277" | ||
===== schedule ===== | ===== schedule ===== | ||
<code sql> | <code sql> | ||
Строка 172: | Строка 176: | ||
</code> | </code> | ||
+ | В данной таблице сохраняются все считывания карт. PERSON_ID может содержать null, если карта не имеет владельца. | ||
Строка 178: | Строка 182: | ||
При запуске модуль ожидает подключений к базе данных и к серверу данных, после чего циклически выполняет действия: | При запуске модуль ожидает подключений к базе данных и к серверу данных, после чего циклически выполняет действия: | ||
- | - проверка поступления нового кода от считывателей, и если есть, фиксирование его в базе данных. | + | |
- | - генерирование новых задач | + | ===== Получение и сохранение данных от считывателей ===== |
- | - закрытие просроченных задач | + | |
+ | Выполняется проверка поступления новых кодов от считывателей, и если есть, фиксирование их в базе данных в таблице ''input''. При этом выполняется поиск открытой задачи по данному считывателю, и, если у владельца карты есть права на задачу, в таблице ''task'' выполняется закрытие задачи со статусом 1 или 2. | ||
+ | |||
+ | После успешной записи данных считывателю посылается обратная связь на светодиоды: | ||
+ | - длинный зеленый - задача закрыта | ||
+ | - длинный синий - задача не найдена, либо у владельца карты нет прав | ||
+ | - мигающий синий - карта не имеет владельца | ||
+ | |||
+ | ===== Генерирование новых задач ===== | ||
+ | По расписанию в таблице ''schedule'' создаются задачи и помещаются в таблицу ''task''. При этом сразу расчитываются даты открытия, закрытия и просрочки задачи. Дата просрочки вычисляется как дата начала следующей задачи по данному расписанию. | ||
+ | |||
+ | |||
+ | ===== Закрытие просроченных задач ===== | ||
+ | Открытые задачи, т.е. те у которых STATUS=0 и DT_REG is null, считаются просроченными, если DT_EXPIRE < текущее время. При этом в ''task'' для данной задачи прописывается STATUS=3 и DT_REG=текущее время. | ||