изменен путь в json при обращении в таблицу recruits_info

This commit is contained in:
Ruslan 2025-03-12 13:21:24 +03:00
parent 0909342380
commit e4d154abf7
8 changed files with 158 additions and 54 deletions

View file

@ -0,0 +1,103 @@
{
"variables" : [ {
"name" : "DB_PERSON_HOST",
"value" : "10.65.244.45",
"description" : ""
}, {
"name" : "DB_PERSON_PORT",
"value" : "6432",
"description" : ""
}, {
"name" : "DB_PERSON_NAME",
"value" : "ervu_person_registry",
"description" : ""
}, {
"name" : "DB_PERSON_USERNAME",
"value" : "readonly",
"description" : ""
}, {
"name" : "DB_PERSON_PASSWORD",
"value" : "readonly",
"description" : ""
}, {
"name" : "DB_DASHBOARD_HOST",
"value" : "10.10.31.119",
"description" : ""
}, {
"name" : "DB_DASHBOARD_PORT",
"value" : "5432",
"description" : ""
}, {
"name" : "DB_DASHBOARD_NAME",
"value" : "ervu-dashboard-recr",
"description" : ""
}, {
"name" : "DB_DASHBOARD_USERNAME",
"value" : "ervu-dashboard",
"description" : ""
}, {
"name" : "DB_DASHBOARD_PASSWORD",
"value" : "ervu-dashboard",
"description" : ""
}, {
"name" : "DB_APPEAL_HOST",
"value" : "10.65.244.45",
"description" : ""
}, {
"name" : "DB_APPEAL_PORT",
"value" : "6432",
"description" : ""
}, {
"name" : "DB_APPEAL_NAME",
"value" : "ervu_appeal_document",
"description" : ""
}, {
"name" : "DB_APPEAL_USERNAME",
"value" : "readonly",
"description" : ""
}, {
"name" : "DB_APPEAL_PASSWORD",
"value" : "readonly",
"description" : ""
}, {
"name" : "DB_DECISION_HOST",
"value" : "10.65.244.45",
"description" : ""
}, {
"name" : "DB_DECISION_PORT",
"value" : "6432",
"description" : ""
}, {
"name" : "DB_DECISION_NAME",
"value" : "ervu_decision_document",
"description" : ""
}, {
"name" : "DB_DECISION_USERNAME",
"value" : "readonly",
"description" : ""
}, {
"name" : "DB_DECISION_PASSWORD",
"value" : "readonly",
"description" : ""
}, {
"name" : "DB_SUBPOENA_HOST",
"value" : "10.65.244.45",
"description" : ""
}, {
"name" : "DB_SUBPOENA_PORT",
"value" : "6432",
"description" : ""
}, {
"name" : "DB_SUBPOENA_NAME",
"value" : "ervu_subpoena_registry",
"description" : ""
}, {
"name" : "DB_SUBPOENA_USERNAME",
"value" : "readonly",
"description" : ""
}, {
"name" : "DB_SUBPOENA_PASSWORD",
"value" : "readonly",
"description" : ""
} ]
}

View file

@ -296,9 +296,9 @@ vse AS (
extracted_children AS (
SELECT
ri.recruit_id,
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
jsonb_array_elements_text(ri.info->'svedFL'->'svedDeti'->'rebenok') AS child
FROM vse ri
WHERE jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
WHERE jsonb_typeof(ri.info->'svedFL'->'svedDeti'->'rebenok') = 'array'
),
children_birth_dates AS (
SELECT

View file

@ -297,9 +297,9 @@ vse AS (
extracted_children AS (
SELECT
ri.recruit_id,
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
jsonb_array_elements_text(ri.info->'svedFL'->'svedDeti'->'rebenok') AS child
FROM vse ri
WHERE jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
WHERE jsonb_typeof(ri.info->'svedFL'->'svedDeti'->'rebenok') = 'array'
),
children_birth_dates AS (
SELECT

View file

@ -288,10 +288,10 @@ status_info AS (
-- Проверка на обучение в вузе (есть информация и обучается)
(
CASE
WHEN jsonb_typeof(info->'svedVUZ'->'vuz') = 'array' THEN
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
EXISTS (
SELECT 1
FROM jsonb_array_elements(info->'svedVUZ'->'vuz') AS vuz
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
WHERE vuz->>'kodStatus' = '1'
)
ELSE false
@ -301,10 +301,10 @@ status_info AS (
-- Проверка на обучение в колледже (есть информация и обучается)
(
CASE
WHEN jsonb_typeof(info->'svedKolledzh'->'kolledzh') = 'array' THEN
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
EXISTS (
SELECT 1
FROM jsonb_array_elements(info->'svedKolledzh'->'kolledzh') AS kolledzh
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
WHERE kolledzh->>'kodStatus' = '1'
)
ELSE false
@ -314,10 +314,10 @@ status_info AS (
-- Проверка на работу (есть информация и работает)
(
CASE
WHEN jsonb_typeof(info->'svedTrud'->'trudDeyat') = 'array' THEN
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
EXISTS (
SELECT 1
FROM jsonb_array_elements(info->'svedTrud'->'trudDeyat') AS trud
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
WHERE trud->>'prAktMestRab' = '1'
)
ELSE false
@ -325,13 +325,13 @@ status_info AS (
) AS is_working,
-- Проверка на отсутствие сведений о вузе
info->'svedVUZ'->>'prOtsSvedVUZ' = '1' AS no_info_vuz,
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AS no_info_vuz,
-- Проверка на отсутствие сведений о колледже
info->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AS no_info_college,
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AS no_info_college,
-- Проверка на отсутствие сведений о работе
info->'svedTrud'->>'prOtsSvedTrud' = '1' AS no_info_work,
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AS no_info_work,
coalesce (r.current_recruitment_id, rh.current_recruitment_id) AS recruitment_id,
r.gender,
CASE
@ -353,10 +353,10 @@ status_info AS (
-- Проверка на обучение в вузе (есть информация и обучается)
(
CASE
WHEN jsonb_typeof(info->'svedVUZ'->'vuz') = 'array' THEN
WHEN jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' THEN
EXISTS (
SELECT 1
FROM jsonb_array_elements(info->'svedVUZ'->'vuz') AS vuz
FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz
WHERE vuz->>'kodStatus' = '1'
)
ELSE false
@ -366,10 +366,10 @@ status_info AS (
-- Проверка на обучение в колледже (есть информация и обучается)
(
CASE
WHEN jsonb_typeof(info->'svedKolledzh'->'kolledzh') = 'array' THEN
WHEN jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' THEN
EXISTS (
SELECT 1
FROM jsonb_array_elements(info->'svedKolledzh'->'kolledzh') AS kolledzh
FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh
WHERE kolledzh->>'kodStatus' = '1'
)
ELSE false
@ -379,10 +379,10 @@ status_info AS (
-- Проверка на работу (есть информация и работает)
(
CASE
WHEN jsonb_typeof(info->'svedTrud'->'trudDeyat') = 'array' THEN
WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN
EXISTS (
SELECT 1
FROM jsonb_array_elements(info->'svedTrud'->'trudDeyat') AS trud
FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud
WHERE trud->>'prAktMestRab' = '1'
)
ELSE false
@ -390,13 +390,13 @@ status_info AS (
) AS is_working,
-- Проверка на отсутствие сведений о вузе
info->'svedVUZ'->>'prOtsSvedVUZ' = '1' AS no_info_vuz,
info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' AS no_info_vuz,
-- Проверка на отсутствие сведений о колледже
info->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AS no_info_college,
info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' AS no_info_college,
-- Проверка на отсутствие сведений о работе
info->'svedTrud'->>'prOtsSvedTrud' = '1' AS no_info_work,
info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' AS no_info_work,
coalesce (r.target_recruitment_id, rh.target_recruitment_id) AS recruitment_id,
r.gender,
CASE

View file

@ -298,9 +298,9 @@ vse AS (
extracted_children AS(
SELECT
ri.recruit_id,
jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child
jsonb_array_elements_text(ri.info->'svedFL'->'svedDeti'->'rebenok') AS child
FROM vse ri
WHERE jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array'
WHERE jsonb_typeof(ri.info->'svedFL'->'svedDeti'->'rebenok') = 'array'
),
children_count AS (
SELECT

View file

@ -295,15 +295,15 @@ categorized AS (
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
ELSE 'ALL'
END AS convicts,
MAX(CASE WHEN cat->>'kategoriya' like '%A%' THEN 1 ELSE 0 END) AS has_A,
MAX(CASE WHEN cat->>'kategoriya' like '%B%' THEN 1 ELSE 0 END) AS has_B,
MAX(CASE WHEN cat->>'kategoriya' like '%C%' THEN 1 ELSE 0 END) AS has_C,
MAX(CASE WHEN cat->>'kategoriya' like '%D%' THEN 1 ELSE 0 END) AS has_D,
MAX(CASE WHEN cat->>'kategoriya' like '%E%' THEN 1 ELSE 0 END) AS has_E
MAX(CASE WHEN cat->>'naimKatTS' like '%A%' THEN 1 ELSE 0 END) AS has_A,
MAX(CASE WHEN cat->>'naimKatTS' like '%B%' THEN 1 ELSE 0 END) AS has_B,
MAX(CASE WHEN cat->>'naimKatTS' like '%C%' THEN 1 ELSE 0 END) AS has_C,
MAX(CASE WHEN cat->>'naimKatTS' like '%D%' THEN 1 ELSE 0 END) AS has_D,
MAX(CASE WHEN cat->>'naimKatTS' like '%E%' THEN 1 ELSE 0 END) AS has_E
FROM public.recruits AS r
JOIN public.recruits_info ri ON ri.recruit_id = r.id
JOIN public.recruits_history rh on rh.recruit_id=r.id
LEFT JOIN jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') AS cat ON true
LEFT JOIN jsonb_array_elements(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') AS cat ON true
WHERE
r.id in (SELECT recruit_id FROM registered) and
rh.id in (SELECT recruit_history_id FROM registered)

View file

@ -280,13 +280,13 @@ education_status AS (
(
EXISTS (
SELECT 1
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
) OR EXISTS (
SELECT 1
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5')
)
) AS has_higher,
@ -295,13 +295,13 @@ education_status AS (
(
EXISTS (
SELECT 1
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
AND education->>'kodUrObr' = '10'
) OR EXISTS (
SELECT 1
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
AND education->>'kodUrObr' = '10'
)
) AS has_average_prof,
@ -310,13 +310,13 @@ education_status AS (
(
EXISTS (
SELECT 1
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
AND education->>'kodUrObr' IN ('7', '9')
) OR EXISTS (
SELECT 1
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
AND education->>'kodUrObr' IN ('7', '9')
)
) AS has_only_general,
@ -327,17 +327,17 @@ education_status AS (
(
EXISTS (
SELECT 1
FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education
WHERE jsonb_typeof(ri.info->'svedRObr'->'robr') = 'array'
FROM jsonb_array_elements(ri.info->'svedFL'->'svedRObr'->'robr') AS education
WHERE jsonb_typeof(ri.info->'svedFL'->'svedRObr'->'robr') = 'array'
) OR EXISTS (
SELECT 1
FROM jsonb_array_elements(ri.info->'svedInObr'->'inObr') AS education
WHERE jsonb_typeof(ri.info->'svedInObr'->'inObr') = 'array'
FROM jsonb_array_elements(ri.info->'svedFL'->'svedInObr'->'inObr') AS education
WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array'
)
)
) AND (
ri.info->'svedRObr'->>'prOtsRObr' = '1'
OR ri.info->'svedInObr'->>'prOtsInObr' = '1'
ri.info->'svedFL'->'svedRObr'->>'prOtsRObr' = '1'
OR ri.info->'svedFL'->'svedInObr'->>'prOtsInObr' = '1'
)
) AS has_no_data

View file

@ -258,7 +258,8 @@ registered as (
),
recruit_data AS (
SELECT
ri.info->'svedSemPolozh'->>'semPolozhNaim' AS sem_pol,
ri.recruit_id,
ri.info->'svedFL'->'svedSemPolozh'->>'semPolozh' AS sem_pol,
r.gender,
CASE
WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT'
@ -281,12 +282,12 @@ married_counts AS (
rd.recruitment_id,
rd.gender,
rd.convicts,
COUNT(rd.recruitment_id) FILTER (WHERE rd.sem_pol IN ('Вдова/Вдовец', 'В разводе', 'Вдовец', 'Холост')) AS not_married,
COUNT(rd.recruitment_id) FILTER (WHERE rd.sem_pol = 'В браке') AS married,
COUNT(rd.recruitment_id) FILTER (WHERE rd.sem_pol IS NULL OR rd.sem_pol = 'Отсутствуют сведения о семейном положении') AS other,
COUNT(rd.recruitment_id) AS total
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IN ('2', '3')) AS not_married, -- в расзводе/вдова/вдовец
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol = '1') AS married, -- статус в браке
COUNT(rd.recruit_id) FILTER (WHERE rd.sem_pol IS NULL) AS other,
COUNT(rd.recruit_id) AS total
FROM recruit_data rd
GROUP BY rd.recruitment_id, rd.gender, rd.convicts
GROUP BY rd.recruitment_id, rd.gender, rd.convicts -- изменено 12.03.2025
),
all_counts AS (
-- Считаем значения для ALL, суммируя данные по всем гендерам