Автоматизация выгрузки ИЭМК

Материал из ИбисоПедии
Версия от 10:39, 17 мая 2016; 192.168.1.56 (обсуждение) (Новая страница: «* Цель: Автоматическая выгрузка ИЭМК * Периодичность: ежеминутно Необходима etl схема в ба…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
  • Цель: Автоматическая выгрузка ИЭМК
  • Периодичность: ежеминутно

Необходима 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';