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. Далее

7.2. Создание объекта 1003 Закрытые обращения