Автоматизация выгрузки ИЭМК — различия между версиями

Материал из ИбисоПедии
Перейти к: навигация, поиск
(Новая страница: «* Цель: Автоматическая выгрузка ИЭМК * Периодичность: ежеминутно Необходима etl схема в ба…»)
 
м (Admin переименовал страницу Выгрузка ИЭМК в Автоматизация выгрузка ИЭМК)
(нет различий)

Версия 10:40, 17 мая 2016

  • Цель: Автоматическая выгрузка ИЭМК
  • Периодичность: ежеминутно

Необходима etl схема в базе данных. Для её переноса использовать скрипт IBIS_ADM\AdminDB\helpers\etl.bat. Перед использованием скрипт необходимо скопировать в IBIS_ADM\AdminDB и вызывать оттуда. На базе mis3 необходимо выполнить дамп схемы. Файлы дампа будут находится в %DUMPDIR%.

etl.bat dump

Скопировать файлы дампа на сервер клиента в %DUMPDIT% и восстановить их

etl.bat restore

После этого создать событие со следующим SQL запросом

DO $$
DECLARE
  r record;
  uid UUID;
  res record;
BEGIN

--выбираем самую последнюю запись в очереди и пытаемся ее передать
select * into r from iemk.iemk_upload_queue a where a.naz_id is null order by a.added asc limit 1;
RAISE NOTICE '%', r.id;

IF FOUND 
THEN
  --пытаемся передать документ
    BEGIN
       select etl.exch('adddoc',ARRAY[ r.id::text ]) into uid;

       RAISE NOTICE '%', uid;

       select * into res from etl.se_all a where a.id= uid;

       RAISE NOTICE '%', res.res;

    -- вставили в лог очереди ответ
       INSERT INTO iemk.iemk_upload_events ( upload_id, event_time, respond, code, ambticket_id, hospdoc_id, naz_id, tp )
       VALUES (  r.id,  now(),  res.res,  200,  r.ambticket_id,  r.hospdoc_id,  r.naz_id,  3);

       UPDATE iemk.iemk_upload_queue  SET added=now() WHERE id=r.id;              

  --возможно ошибка при передаче, тогда просто проапдейтим время появления в очереди на текущее;     
    EXCEPTION WHEN OTHERS THEN
       UPDATE iemk.iemk_upload_queue  SET added=now() WHERE id=r.id;
    END;

END IF;

END$$

LANGUAGE 'plpgsql';