Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:arccnt:mod:msc [2016/06/21 06:14]
denis [reader]
doc:arccnt:mod:msc [2016/06/21 07:28] (текущий)
denis [card]
Строка 90: Строка 90:
 </​code>​ </​code>​
  
 +Владельцы карт.
  
 +===== card =====
 +<code sql>
 +            create table {schema}_CARD (
 +                ID integer not null primary key,
 +                PERSON_ID integer references {schema}_PERSON on delete cascade on update cascade,
 +                CODE varchar(32),​
 +                DT_CREATE timestamp,
 +                DELETED smallint default 0
 +              )
 +</​code>​
 +
 +Карты.
 +
 +**CODE** - код карты в десятичном формате,​ пример:​ "​89,​11,​36277"​
 ===== schedule ===== ===== schedule =====
 <code sql> <code sql>
Строка 104: Строка 119:
 </​code>​ </​code>​
  
 +Расписание по которому будут генерироваться задачи.
 +
 +**TIMETABLE** - задание время для автоматического создания задач. Формат записи на примерах:​
 +|e/​0800 ​ |Ежедневно в 8:00  |
 +|e/0800 0830  |Ежедневно в 8:00 и 8:30  |
 +|w 1 2 3 4 5/0800 0830  |Каждую неделю по будням в 8:00 и 8:30  |
 +|m 1 10 20/0000 1200  |Каждый месяц 1-го, 10-го и 20-го числа в 00:00 и 12:00  |
 +|d 20160621 20160622/​0800 0830  |21.06.2016 и 22.06.2016 в 8:00 и 8:30  |
 +|e/0800;m 1 4/​0830 ​ |Ежедневно в 8:00 и в каждый понедельник и четверг в 8:30  |
 +
 +**DURATION** - длительность задачи в минутах. В течение этого времени от начала задачи требуется ее выполнение.\\
 +**AUTOTASK** - если 1, то разрешена автоматическая генерация задач по данному расписанию.
  
 ===== task ===== ===== task =====
Строка 115: Строка 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,
Строка 120: Строка 148:
               )               )
 </​code>​ </​code>​
-Задача - это предписание на обслуживание определенного оборудование в установленное время. ​ 
  
 +Таблица содержит задачи на обслуживание определенного оборудования со считывателемя. ​
 +
 +**DT_CREATE** - создание задачи - момент создания записи в таблицы.\\
 +**DT_BEGIN** - начало задачи - с какого момента можно подносить карту к считывателю.\\
 +**DT_END** - окончание задачи - поднесение карты после этого момента будет засчитано как выполнение с опозданием.\\
 +**DT_EXPIRE** - максимальное время жизни открытой задачи,​ после которого она автоматически закрывается со статусом ''​3''​.\\
 +**DT_REG** - дата и время выполнения задачи (поднесения карты).\\
 +**PERSON_ID** - человек,​ выполнивший задачу.\\
 +**STATUS** - статус задачи:​
 +^Код статуса ​ ^Описание ​ ^
 +|  0  |Открыта ​ |
 +|  1  |Закрыта во время ​ |
 +|  2  |Закрыта с опозданием |
 +|  3  |Закрыта по просрочке ​ |
 +|  4  |Отменена ​ |
  
 ===== input ===== ===== input =====
Строка 134: Строка 176:
 </​code>​ </​code>​
  
 +В данной таблице сохраняются все считывания карт. PERSON_ID может содержать null, если карта не имеет владельца.
  
  
Строка 140: Строка 182:
  
 При запуске модуль ожидает подключений к базе данных и к серверу данных,​ после чего циклически выполняет действия:​ При запуске модуль ожидает подключений к базе данных и к серверу данных,​ после чего циклически выполняет действия:​
-  - проверка поступления нового ​кода от считывателей,​ и если есть, фиксирование его в базе данных. + 
-  - генерирование новых задач +===== Получение и сохранение данных от считывателей ===== 
-  ​- ​закрытие просроченных задач+ 
 +Выполняется ​проверка поступления новых кодов от считывателей,​ и если есть, фиксирование ​их в базе данных в таблице ''​input''​. При этом выполняется поиск открытой задачи по данному считывателю,​ и, если у владельца карты есть права на задачу,​ в таблице ''​task''​ выполняется закрытие ​задачи со статусом 1 или 2. 
 + 
 +После успешной записи ​данных ​считывателю посылается обратная связь на светодиоды:​ 
 +  - длинный зеленый - задача закрыта 
 +  - длинный синий - задача не найдена,​ либо у владельца карты нет прав 
 +  - мигающий синий - карта не имеет владельца 
 + 
 +===== Генерирование новых задач ​===== 
 +По расписанию в таблице ''​schedule''​ создаются задачи и помещаются в таблицу ''​task''​. При этом сразу расчитываются даты открытия,​ закрытия и просрочки задачи. Дата просрочки вычисляется как дата начала следующей задачи по данному расписанию. 
 + 
 + 
 +===== Закрытие просроченных задач ​===== 
 +Открытые задачи,​ т.е. те у которых STATUS=0 и DT_REG is null, считаются просроченными,​ если DT_EXPIRE < текущее время. При этом в ''​task''​ для данной задачи прописывается STATUS=3 и DT_REG=текущее время. 
  
  
doc/arccnt/mod/msc.1466478854.txt.gz · Последние изменения: 2016/06/21 06:14 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0