7.1. SQL-запросы
7.1.1. Предварительные действия
Прежде, чем приступать к действиям, описанным далее, следует выполнить SQL-запросы к данному шагу.
7.1.2. Создание представления для отображения последних комментариев
CREATE OR REPLACE VIEW vw_latest_comments AS
SELECT c.comment_id,
c.dttmcr,
c.dttmup,
c.dttmcl,
c.userid,
o.object_ref_nr,
st.status_type_name,
ct.comment_type_name,
c.comment_from,
c.comment_text,
CASE
WHEN (( SELECT DISTINCT t_files.comment_id
FROM t_files
WHERE t_files.comment_id = c.comment_id AND t_files.dttmcl IS NULL)) IS NULL THEN '-'::text
ELSE 'Да'::text
END AS comment_file_present
FROM t_comments c
LEFT JOIN t_comment_types ct USING (comment_type_id)
LEFT JOIN t_objects o USING (object_id)
LEFT JOIN t_status_types st ON o.object_cur_status_id = st.status_type_id
WHERE o.object_id IS NOT NULL AND o.dttmcl IS NULL AND c.dttmcl IS NULL
ORDER BY c.dttmcr DESC;
7.1.3. Создание фукнции для приема обращения в обработку
CREATE FUNCTION f_start_processing(
pdb_userid integer,
"1002.object_id" integer,
"1002.object_cur_status_id" integer,
var_timestamp timestamp with time zone)
RETURNS integer AS
$BODY$
DECLARE
var_status_id integer;
var_status_type_id integer:= 2; -- ID статуса "В обработке" из таблицы t_status_types
BEGIN
/* Указываем ответственное лицо */
UPDATE t_objects
SET object_to_id = pdb_userid
WHERE object_id = "1002.object_id";
/* Вводим статус В обработке (2) по обращению, если текущий статус Заявлено (1) */
IF "1002.object_cur_status_id" = 1 THEN
/* Если в функцию передается время, вставить значения + время */
IF var_timestamp IS NOT NULL THEN
INSERT INTO t_statuses (dttmcr, userid, object_id, status_type_id)
VALUES (var_timestamp, pdb_userid, "1002.object_id", var_status_type_id)
RETURNING status_id INTO var_status_id;
ELSE
/* Если в функцию время не передается, вставить просто значения */
INSERT INTO t_statuses (userid, object_id, status_type_id)
VALUES (pdb_userid, "1002.object_id", var_status_type_id)
RETURNING status_id INTO var_status_id;
END IF;
END IF;
/* Возвращаем ID записи из таблицы support.objects */
RETURN var_status_id;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
7.1.4. Далее