Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
doc:arccnt:mod:msc [2016/06/21 06:31] denis [schedule] |
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> | ||
| Строка 125: | Строка 129: | ||
| |e/0800;m 1 4/0830 |Ежедневно в 8:00 и в каждый понедельник и четверг в 8:30 | | |e/0800;m 1 4/0830 |Ежедневно в 8:00 и в каждый понедельник и четверг в 8:30 | | ||
| - | | + | **DURATION** - длительность задачи в минутах. В течение этого времени от начала задачи требуется ее выполнение.\\ |
| + | **AUTOTASK** - если 1, то разрешена автоматическая генерация задач по данному расписанию. | ||
| ===== task ===== | ===== task ===== | ||
| <code sql> | <code sql> | ||
| Строка 136: | Строка 142: | ||
| DT_BEGIN timestamp, | DT_BEGIN timestamp, | ||
| DT_END timestamp, | DT_END timestamp, | ||
| + | DT_EXPIRE timestamp, | ||
| DT_REG timestamp, | DT_REG timestamp, | ||
| STATUS smallint, | STATUS smallint, | ||
| Строка 141: | Строка 148: | ||
| ) | ) | ||
| </code> | </code> | ||
| - | Задача - это предписание на обслуживание определенного оборудование в установленное время. | ||
| + | Таблица содержит задачи на обслуживание определенного оборудования со считывателемя. | ||
| + | |||
| + | **DT_CREATE** - создание задачи - момент создания записи в таблицы.\\ | ||
| + | **DT_BEGIN** - начало задачи - с какого момента можно подносить карту к считывателю.\\ | ||
| + | **DT_END** - окончание задачи - поднесение карты после этого момента будет засчитано как выполнение с опозданием.\\ | ||
| + | **DT_EXPIRE** - максимальное время жизни открытой задачи, после которого она автоматически закрывается со статусом ''3''.\\ | ||
| + | **DT_REG** - дата и время выполнения задачи (поднесения карты).\\ | ||
| + | **PERSON_ID** - человек, выполнивший задачу.\\ | ||
| + | **STATUS** - статус задачи: | ||
| + | ^Код статуса ^Описание ^ | ||
| + | | 0 |Открыта | | ||
| + | | 1 |Закрыта во время | | ||
| + | | 2 |Закрыта с опозданием | | ||
| + | | 3 |Закрыта по просрочке | | ||
| + | | 4 |Отменена | | ||
| ===== input ===== | ===== input ===== | ||
| Строка 155: | Строка 176: | ||
| </code> | </code> | ||
| + | В данной таблице сохраняются все считывания карт. PERSON_ID может содержать null, если карта не имеет владельца. | ||
| Строка 161: | Строка 182: | ||
| При запуске модуль ожидает подключений к базе данных и к серверу данных, после чего циклически выполняет действия: | При запуске модуль ожидает подключений к базе данных и к серверу данных, после чего циклически выполняет действия: | ||
| - | - проверка поступления нового кода от считывателей, и если есть, фиксирование его в базе данных. | + | |
| - | - генерирование новых задач | + | ===== Получение и сохранение данных от считывателей ===== |
| - | - закрытие просроченных задач | + | |
| + | Выполняется проверка поступления новых кодов от считывателей, и если есть, фиксирование их в базе данных в таблице ''input''. При этом выполняется поиск открытой задачи по данному считывателю, и, если у владельца карты есть права на задачу, в таблице ''task'' выполняется закрытие задачи со статусом 1 или 2. | ||
| + | |||
| + | После успешной записи данных считывателю посылается обратная связь на светодиоды: | ||
| + | - длинный зеленый - задача закрыта | ||
| + | - длинный синий - задача не найдена, либо у владельца карты нет прав | ||
| + | - мигающий синий - карта не имеет владельца | ||
| + | |||
| + | ===== Генерирование новых задач ===== | ||
| + | По расписанию в таблице ''schedule'' создаются задачи и помещаются в таблицу ''task''. При этом сразу расчитываются даты открытия, закрытия и просрочки задачи. Дата просрочки вычисляется как дата начала следующей задачи по данному расписанию. | ||
| + | |||
| + | |||
| + | ===== Закрытие просроченных задач ===== | ||
| + | Открытые задачи, т.е. те у которых STATUS=0 и DT_REG is null, считаются просроченными, если DT_EXPIRE < текущее время. При этом в ''task'' для данной задачи прописывается STATUS=3 и DT_REG=текущее время. | ||