From 035005515b08d4cb3a42d41e08bc721d20923c95 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Wed, 2 Apr 2025 09:48:38 +0300 Subject: [PATCH] fix info recruits --- .../jobs_once_a_day/child_once.hpl | 9 +- .../jobs_once_a_day/disability_once.hpl | 24 +- .../jobs_once_a_day/disease_once.hpl | 7 +- .../jobs_once_a_day/drivers_licence_once.hpl | 47 +- .../jobs_once_a_day/info_recruits.hpl | 759 ------------------ .../medical_authorities_once.hpl | 14 +- .../jobs_once_a_day/opekun_once.hpl | 9 +- .../jobs_once_a_day/passport_once.hpl | 15 +- .../jobs_once_a_day/spouse_once.hpl | 27 +- 9 files changed, 59 insertions(+), 852 deletions(-) delete mode 100644 v1_apache-hop dash mapping/jobs_once_a_day/info_recruits.hpl diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/child_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/child_once.hpl index 28a18cd..5399ceb 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/child_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/child_once.hpl @@ -110,10 +110,10 @@ N 0 with child as -(select jsonb_array_elements(ri.info->'svedDeti'->'rebenok') ch, +(select jsonb_array_elements(ri.info->'svedFL'->'svedDeti'->'rebenok') ch, ri.recruit_id from public.recruits_info ri -where jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array') +where jsonb_typeof(ri.info->'svedFL'->'svedDeti'->'rebenok') = 'array') select r.id::uuid recruit_id, ch->>'naimRodstvSvyazReb' kinship_type, @@ -127,7 +127,7 @@ select NULLIF(ch->'svedSmert'->'dataSmert'->>'mesyacz','')::int, NULLIF(ch->'svedSmert'->'dataSmert'->>'den','')::int) death_date, ch->'svedSmert'->>'nomerZapis' death_az_number, - ch->'svedAZRozhd'->'dataRozhdDok'->>'nomerZapis' birth_az_number + ch->'svedAZRozhd'->>'nomerZapis' birth_az_number from public.recruits r join child on r.id = child.recruit_id N @@ -156,14 +156,11 @@ join child on r.id = child.recruit_id N N N - Y - N ervu_dashboard N citizen_child
- N Y N diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/disability_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/disability_once.hpl index 4235c99..38fc004 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/disability_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/disability_once.hpl @@ -47,19 +47,19 @@ 0 select r.id recruit_id, - case when ri.info->'svedInvalid'->'invalid'->>'gruppa'='1' then 'I группа' - when ri.info->'svedInvalid'->'invalid'->>'gruppa'='2' then 'II группа' - when ri.info->'svedInvalid'->'invalid'->>'gruppa'='3' then 'III группа' - when ri.info->'svedInvalid'->'invalid'->>'gruppa'='4' then 'ребенок-инвалид' + case when ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa'='1' then 'I группа' + when ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa'='2' then 'II группа' + when ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa'='3' then 'III группа' + when ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa'='4' then 'ребенок-инвалид' end disability_group, - ri.info->'svedInvalid'->'invalid'->>'ustanOrg' organization_name, - to_date(ri.info->'svedInvalid'->'invalid'->'ustanInvalid'->>'dataUstan', 'YYYY-MM-DD') start_date, - to_date(ri.info->'svedInvalid'->'invalid'->'ustanInvalid'->>'dataSnyat', 'YYYY-MM-DD') close_date, - to_date(ri.info->'svedInvalid'->'invalid'->'ustanInvalid'->>'dataPodtverzhdPlan', 'YYYY-MM-DD') confirmation_date, + ri.info->'svedFL'->'svedInvalid'->'invalid'->>'ustanOrg' organization_name, + to_date(ri.info->'svedFL'->'svedInvalid'->'invalid'->'ustanInvalid'->>'dataUstan', 'YYYY-MM-DD') start_date, + to_date(ri.info->'svedFL'->'svedInvalid'->'invalid'->'ustanInvalid'->>'dataSnyat', 'YYYY-MM-DD') close_date, + to_date(ri.info->'svedFL'->'svedInvalid'->'invalid'->'ustanInvalid'->>'dataPodtverzhdPlan', 'YYYY-MM-DD') confirmation_date, true disability from public.recruits r join public.recruits_info ri on r.id = ri.recruit_id -where ri.info->'svedInvalid'->'invalid'->>'gruppa' is not null; +where ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa' is not null; N @@ -115,14 +115,11 @@ where ri.info->'svedNedeesp'->'nedeesposob'->>'naimSud' is not null; N N N - Y - N ervu_dashboard N disability
- N Y N @@ -152,14 +149,11 @@ where ri.info->'svedNedeesp'->'nedeesposob'->>'naimSud' is not null; N N N - Y - N ervu_dashboard N disability
- N Y N diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/disease_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/disease_once.hpl index d8b53d8..bccfc72 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/disease_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/disease_once.hpl @@ -41,10 +41,10 @@ N 0 with zdorov as -(select jsonb_array_elements(ri.info->'svedSostZdorov'->'svedZdorov'->'sostZdorov') z, +(select jsonb_array_elements(ri.info->'svedFL'->'svedSostZdorov'->'svedZdorov'->'sostZdorov') z, ri.recruit_id from public.recruits_info ri -where jsonb_typeof(ri.info->'svedSostZdorov'->'svedZdorov'->'sostZdorov') = 'array') +where jsonb_typeof(ri.info->'svedFL'->'svedSostZdorov'->'svedZdorov'->'sostZdorov') = 'array') select r.id recruit_id, z->>'kodZabol' code, @@ -78,14 +78,11 @@ join zdorov on r.id = zdorov.recruit_id; N N N - Y - N ervu_dashboard N disease
- N Y N diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/drivers_licence_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/drivers_licence_once.hpl index d4bedf0..5794925 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/drivers_licence_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/drivers_licence_once.hpl @@ -46,18 +46,18 @@ N 0 select - r.id recruit_id, - ri.info->'svedVoditUdost'->'voditUdost'->>'serVodUd' licence_series, - ri.info->'svedVoditUdost'->'voditUdost'->>'nomVodUd' licence_number, - to_date(ri.info->'svedVoditUdost'->'voditUdost'->>'dataVodUd', 'YYYY-MM-DD') start_date, - to_date(ri.info->'svedVoditUdost'->'voditUdost'->>'srokVodUd', 'YYYY-MM-DD') close_date, + ri.recruit_id recruit_id, + ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'serNomDok' licence_series, + --ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'nomVodUd' licence_number, + to_date(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'dataVydDok', 'YYYY-MM-DD') start_date, + to_date(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'srokDeistvDok', 'YYYY-MM-DD') close_date, array_to_string(array( - select kat->>'kategoriya' - from jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') as kat - where jsonb_typeof(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array'), ',') categories + select kat->>'naimKatTS' + from jsonb_array_elements(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') as kat + where jsonb_typeof(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array'), ',') categories from public.recruits r join public.recruits_info ri on r.id = ri.recruit_id -where ri.info->'svedVoditUdost'->'voditUdost'->>'serVodUd' is not null; +where jsonb_typeof(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array' N @@ -81,22 +81,21 @@ where ri.info->'svedVoditUdost'->'voditUdost'->>'serVodUd' is not null; 0 select r.id recruit_id, - ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'serUTM' licence_series, - ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'nomUTM' licence_number, - to_date(ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'dataVydUTM', 'YYYY-MM-DD') start_date, - to_date(ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'dataOkonchUTM', 'YYYY-MM-DD') close_date, - to_date(ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'dataIztUTM', 'YYYY-MM-DD') seizure_date, - to_date(ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'dataZamUTM', 'YYYY-MM-DD') replacement_date, - to_date(ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'dataVozUTM', 'YYYY-MM-DD') return_date, + ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'serUTM' licence_series, + ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'nomUTM' licence_number, + to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataVydUTM', 'YYYY-MM-DD') start_date, + to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataOkonchUTM', 'YYYY-MM-DD') close_date, + to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataIztUTM', 'YYYY-MM-DD') seizure_date, -- + to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataZameny', 'YYYY-MM-DD') replacement_date,-- + to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataVozvr', 'YYYY-MM-DD') return_date,-- array_to_string(array( - select kat->>'kategoriya' - from jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') as kat - where jsonb_typeof(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array'), ',') categories, + select kat->>'naimKatTS' + from jsonb_array_elements(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') as kat + where jsonb_typeof(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array'), ',') categories, true tractor_driver from public.recruits r join public.recruits_info ri on r.id = ri.recruit_id -where ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'serUTM' is not null; - +where ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM' is not null N @@ -123,14 +122,11 @@ where ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'serUTM' is not null; N N N - Y - N ervu_dashboard N drivers_licence
- N Y N @@ -160,14 +156,11 @@ where ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'serUTM' is not null; N N N - Y - N ervu_dashboard N drivers_licence
- N Y N diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/info_recruits.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/info_recruits.hpl deleted file mode 100644 index 6a044a4..0000000 --- a/v1_apache-hop dash mapping/jobs_once_a_day/info_recruits.hpl +++ /dev/null @@ -1,759 +0,0 @@ - - - - info_recruits - Y - - - - Normal - - - N - 1000 - 100 - - - 2024/08/15 14:02:51.713 - - - 2024/08/15 14:02:51.713 - - - - 251 - 232 - 201 - 90 - 58 - 14 - N - 90 - 58 - 14 - N - Segoe UI - 9 - 394 - 960 - 16 - acquired_citizenship -address_actual -address_place_stay -city_birth -date_info_actual -date_loss_info_actual -died_date -dispensary_registration_code -email -end_date_place_stay -end_date_residence -inn -is_in_prison -medic -medical_requirements -region_birth -residence -right_deferment -snils -source_info_actual -start_date_place_stay -start_date_residence -took_break -type_place_stay - 163 - - - - - Select values 4 - Table output - N - - - Table input - Select values 4 - Y - - - Select values 4 - Insert / update - Y - - - - Insert / update - InsertUpdate - - Y - - 1 - - none - - - 100 - ervu-dashboard - - - = - recruit_id - recruit_id - - ervu_dashboard - citizen
- - recruit_id - recruit_id - N - - - age - age - Y - - - birth_date - birth_date - Y - - - birth_place - birth_place - Y - - - contract_service - contract_service - Y - - - deferment_liberation - deferment_liberation - Y - - - disability_group - disability_group - Y - - - driver_license - driver_license - Y - - - education - education - Y - - - employment - employment - Y - - - first_name - first_name - Y - - - full_name - full_name - Y - - - gender - gender - Y - - - is_registered - is_registered - Y - - - is_wanted - is_wanted - Y - - - issue_date - issue_date - Y - - - last_name - last_name - Y - - - marital_status - marital_status - Y - - - middle_name - middle_name - Y - - - mobilization - mobilization - Y - - - number_children - number_children - Y - - - number_children_18_old - number_children_18_old - Y - - - passport_number - passport_number - Y - - - passport_series - passport_series - Y - - - phone - phone - Y - - - reason_registration - reason_registration - Y - - - recruitment_id - recruitment_id - Y - - - sports_category - sports_category - Y - - - tractor_license - tractor_license - Y - - - update_date - update_date - Y - - - urgent_service - urgent_service - Y - -
- N - - - 688 - 208 - -
- - Select values 4 - SelectValues - - Y - - 1 - - none - - - - N - - issue_date - issue_date - Date - -2 - -2 - yyyy-MM-dd - false - - - false - - - - - - - - - - 448 - 208 - - - - Table input - TableInput - - Y - - 1 - - none - - - ervu_person_registry - N - 0 - WITH extracted_children AS ( - SELECT - ri.recruit_id, - jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child - FROM - public.recruits_info ri - WHERE - jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array' -), -children_birth_dates AS ( - SELECT - recruit_id, - (child::jsonb->'svedFLBS'->'dataRozhdDok'->>'den')::int AS day, - (child::jsonb->'svedFLBS'->'dataRozhdDok'->>'mesyacz')::int AS month, - (child::jsonb->'svedFLBS'->'dataRozhdDok'->>'god')::int AS year - FROM - extracted_children -), -children_count AS ( - SELECT - recruit_id, - COUNT(*) AS children_under_16 - FROM - children_birth_dates - WHERE - AGE(make_date(year, month, day)) < interval '16 years' - GROUP BY - recruit_id -), -registration_reasons AS ( - SELECT mrr.value AS reason_registration, - r.id AS recruit_id - FROM public.recruits AS r - JOIN public.military_registration_reason AS mrr - ON r.registration_reasons::jsonb @> to_jsonb(mrr.code::text) -), - -driver_license AS ( - SELECT - ri.recruit_id, - COALESCE( - string_agg(sved_vodit->>'kategoriya', ', '), - 'Нет информации' - ) AS driver_license - FROM - public.recruits_info ri - LEFT JOIN LATERAL - jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') AS sved_vodit - ON true - GROUP BY ri.recruit_id -), - -sports_category AS ( -- проверка на наличие спортивного разряда или звания - SELECT - ri.recruit_id, - CASE - WHEN - -- Условия для "true" (спортивная категория) - ri.info->'svedSport' ? 'sport' -- Проверяем, что ключ 'sport' существует - AND jsonb_typeof(ri.info->'svedSport'->'sport') = 'array' -- Проверяем, что 'sport' это массив - AND jsonb_array_length(ri.info->'svedSport'->'sport') > 0 -- И массив не пустой - AND EXISTS ( - SELECT 1 - FROM jsonb_array_elements(ri.info->'svedSport'->'sport') AS sport_elem - WHERE - ( - -- Проверяем, что 'sportRazr' существует и срок действия актуален - jsonb_typeof(sport_elem->'sportRazr') = 'object' - AND sport_elem->'sportRazr'->>'dataDeistvSportRazr' IS NOT NULL - AND TO_DATE(sport_elem->'sportRazr'->>'dataDeistvSportRazr', 'YYYY-MM-DD') > CURRENT_DATE - ) - OR ( - -- Проверяем, что 'sportZvan' существует и не пусто - sport_elem->>'sportZvan' IS NOT NULL - AND sport_elem->>'sportZvan' <> '' - ) - OR ( - -- Проверяем, что 'sportRazr' существует и срок действия истек - jsonb_typeof(sport_elem->'sportRazr') = 'object' - AND sport_elem->'sportRazr'->>'dataDeistvSportRazr' IS NOT NULL - AND TO_DATE(sport_elem->'sportRazr'->>'dataDeistvSportRazr', 'YYYY-MM-DD') <= CURRENT_DATE - ) - ) - AND ri.info->'svedSport'->>'prOtsSvedSport' IS NULL - THEN true - - WHEN - -- Условия для "false" (не является спортивной категорией) - ( - ri.info->'svedSport'->'sport' IS NULL -- Если 'sport' = NULL - OR ( - ri.info->'svedSport' ? 'sport' -- Проверяем, что ключ 'sport' существует - AND jsonb_typeof(ri.info->'svedSport'->'sport') = 'array' -- Поле 'sport' должно быть массивом - AND jsonb_array_length(ri.info->'svedSport'->'sport') > 0 -- И массив не пустой - ) - ) - AND EXISTS ( - SELECT 1 - FROM jsonb_array_elements(ri.info->'svedSport'->'sport') AS sport_elem - WHERE - ( - -- Проверяем 'sportZvan' и если оно не существует или пусто - sport_elem->>'sportZvan' IS NULL OR sport_elem->>'sportZvan' = '' - ) - OR ( - -- Проверяем 'sportRazr' и срок действия истек - jsonb_typeof(sport_elem->'sportRazr') = 'object' - AND sport_elem->'sportRazr'->>'dataDeistvSportRazr' IS NOT NULL - AND TO_DATE(sport_elem->'sportRazr'->>'dataDeistvSportRazr', 'YYYY-MM-DD') > CURRENT_DATE - -- И 'sportZvan' также не должно существовать или быть пустым - AND (sport_elem->>'sportZvan' IS NULL OR sport_elem->>'sportZvan' = '') - ) - ) - AND ri.info->'svedSport'->>'prOtsSvedSport' IS NULL - THEN false - - WHEN - -- Условия для "null" (нет информации) - ri.info->'svedSport'->>'prOtsSvedSport' = '1' - OR ri.info->'svedSport' IS NULL -- Проверяем, что 'svedSport' отсутствует - THEN null - - ELSE null -- Неопределенное значение для всех других случаев - END AS sports_category - FROM public.recruits_info ri -), - -disability_group AS ( - SELECT - ri.recruit_id, - CASE - WHEN ri.info->'svedInvalid'->'invalid'->>'gruppa' IS NOT NULL - AND ri.info->'svedInvalid'->>'prOtsSvedInvalid' IS NULL - AND (ri.info->'sportRazr'->>'dataSnyat' IS NULL - OR TO_DATE(ri.info->'sportRazr'->>'dataSnyat', 'YYYY-MM-DD') <= CURRENT_DATE) - THEN ri.info->'svedInvalid'->'invalid'->>'gruppa' - WHEN ri.info->'svedInvalid'->>'prOtsSvedInvalid' = '1' THEN 'Нет информации об инвалидности' - ELSE 'Нет информации об инвалидности' - END AS disability_group - FROM public.recruits_info ri -), - -tractor_license AS ( - SELECT - ri.recruit_id, - CASE - WHEN ri.info->'svedUdostrTraktMash'->>'udostrTraktMash' IS NOT NULL - AND TO_DATE(ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'dataOkonchUTM', 'YYYY-MM-DD') > CURRENT_DATE - THEN true - WHEN ri.info->'svedUdostrTraktMash'->>'udostrTraktMash' IS NOT NULL - AND TO_DATE(ri.info->'svedUdostrTraktMash'->'udostrTraktMash'->>'dataOkonchUTM', 'YYYY-MM-DD') <= CURRENT_DATE - THEN false - WHEN ri.info->'svedUdostrTraktMash'->>'prOtsSvedUTM' = '1' THEN null - ELSE null - END AS tractor_license - FROM public.recruits_info ri -), - -is_wanted AS ( - SELECT - ri.recruit_id, - CASE - WHEN - jsonb_typeof(ri.info->'svedUgolovPresl'->'faktyUgolovPresl') = 'array' -- проверяем, что 'faktyUgolovPresl' это массив - AND jsonb_array_length(ri.info->'svedUgolovPresl'->'faktyUgolovPresl') > 0 -- массив не пустой - AND EXISTS ( - SELECT 1 - FROM jsonb_array_elements(ri.info->'svedUgolovPresl'->'faktyUgolovPresl') AS criminal_prosecution - WHERE - criminal_prosecution->>'dataPrekrashh' IS NULL -- дата прекращения отсутствует - ) - AND ri.info->'svedUgolovPresl'->>'prOtsSvedUgolovPresl' IS NULL - THEN true - - WHEN - jsonb_typeof(ri.info->'svedUgolovPresl'->'faktyUgolovPresl') = 'array' -- проверяем, что 'faktyUgolovPresl' это массив - AND jsonb_array_length(ri.info->'svedUgolovPresl'->'faktyUgolovPresl') > 0 -- массив не пустой - AND EXISTS ( - SELECT 1 - FROM jsonb_array_elements(ri.info->'svedUgolovPresl'->'faktyUgolovPresl') AS criminal_prosecution - WHERE - criminal_prosecution->>'dataPrekrashh' IS NOT NULL -- дата прекращения не отсутствует - ) - AND ri.info->'svedUgolovPresl'->>'prOtsSvedUgolovPresl' IS NULL - THEN false - - WHEN - ri.info->'svedUgolovPresl'->>'prOtsSvedUgolovPresl' = '1' - THEN NULL - - ELSE NULL - END AS criminal_prosecution - FROM public.recruits_info ri -), - -employment AS ( - SELECT - ri.recruit_id, - COALESCE( - CASE - WHEN ( - jsonb_typeof(info->'svedVUZ'->'vuz') = 'array' - AND EXISTS ( - SELECT 1 - FROM jsonb_array_elements(info->'svedVUZ'->'vuz') AS vuz - WHERE vuz->>'kodStatus' IN ('1', '2', '4') - ) - ) OR ( - jsonb_typeof(info->'svedKolledzh'->'kolledzh') = 'array' - AND EXISTS ( - SELECT 1 - FROM jsonb_array_elements(info->'svedKolledzh'->'kolledzh') AS kolledzh - WHERE kolledzh->>'kodStatus' IN ('1', '2', '4') - ) - ) THEN 'Обучается' - ELSE NULL - END || - CASE - WHEN jsonb_typeof(info->'svedTrud'->'trudDeyat') = 'array' - AND EXISTS ( - SELECT 1 - FROM jsonb_array_elements(info->'svedTrud'->'trudDeyat') AS trud - WHERE trud->>'prAktMestRab' = '1' - ) THEN - CASE - WHEN ( - jsonb_typeof(info->'svedVUZ'->'vuz') = 'array' - AND EXISTS ( - SELECT 1 - FROM jsonb_array_elements(info->'svedVUZ'->'vuz') AS vuz - WHERE vuz->>'kodStatus' IN ('1', '2', '4') - ) - ) OR ( - jsonb_typeof(info->'svedKolledzh'->'kolledzh') = 'array' - AND EXISTS ( - SELECT 1 - FROM jsonb_array_elements(info->'svedKolledzh'->'kolledzh') AS kolledzh - WHERE kolledzh->>'kodStatus' IN ('1', '2', '4') - ) - ) THEN ', Работает' - ELSE 'Работает' - END - ELSE NULL - END, - CASE - WHEN - info->'svedVUZ'->>'prOtsSvedVUZ' = '1' -- Отсутствие сведений о вузе - AND info->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' -- Отсутствие сведений о колледже - AND info->'svedTrud'->>'prOtsSvedTrud' = '1' -- Отсутствие сведений о работе - THEN 'Нет информации' - ELSE 'Нет информации' - END - ) AS employment_status - FROM public.recruits_info ri -) - -SELECT - r.full_name, - r.last_name, - r.first_name, - r.middle_name, - r.gender, - r.birth_date, - EXTRACT(YEAR FROM AGE(r.birth_date)) AS age, - r.birth_place, - r.phone, - r.conscription AS deferment_liberation, - - CASE - WHEN (EXTRACT(YEAR FROM AGE(NOW(), r.birth_date)) BETWEEN 18 AND 70 AND r.gender = 'MALE' AND - (r.conscription IS NULL OR r.conscription = false) AND - COALESCE(cc.children_under_16, 0) < 5 - AND r.vu_current_info ->> 'isMilitaryRegistered' = 'true') - OR - (EXTRACT(YEAR FROM AGE(NOW(), r.birth_date)) BETWEEN 18 AND 45 AND r.gender = 'FEMALE' AND - (r.conscription IS NULL OR r.conscription = false) AND - COALESCE(cc.children_under_16, 0) < 5 - AND r.vu_current_info ->> 'isMilitaryRegistered' = 'true') - THEN true - ELSE false - END AS mobilization, - - CASE - WHEN (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 30 - AND gender = 'MALE' -- мужчины от 18 до 30 лет - AND (conscription IS NULL OR conscription = false) - AND r.vu_current_info ->> 'isMilitaryRegistered' = 'true') - THEN true - ELSE false - END AS urgent_service, - - CASE WHEN (EXTRACT(YEAR FROM AGE(NOW(), birth_date)) BETWEEN 18 AND 50 - AND gender = 'MALE' -- мужчины от 18 до 50 лет - AND (conscription IS NULL OR conscription = false) -- отсутствие отсрочки - AND ri.info->'svedSudim'->>'prOtsSvedSudim' = '1' -- признак отсутствия данных о судимости - AND r.vu_current_info ->> 'isMilitaryRegistered' = 'true') - THEN true - ELSE false - END AS contract_service, - - CASE - WHEN r.vu_current_info ->> 'isMilitaryRegistered' = 'true' THEN 'Состоит на воинском учете' - WHEN r.vu_current_info ->> 'isMilitaryRegistered' = 'false' THEN 'Не состоит на воинском учете' - ELSE 'Нет информации' - END AS is_registered, - -CASE - WHEN (EXISTS ( - SELECT 1 - FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education - WHERE jsonb_typeof(ri.info->'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' - AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5') - )) THEN 'Высшее' - WHEN (EXISTS ( - SELECT 1 - FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education - WHERE jsonb_typeof(ri.info->'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' - AND education->>'kodUrObr' = '10' - )) THEN 'Среднее профессиональное' - WHEN (EXISTS ( - SELECT 1 - FROM jsonb_array_elements(ri.info->'svedRObr'->'robr') AS education - WHERE jsonb_typeof(ri.info->'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' - AND education->>'kodUrObr' IN ('7', '9') - )) THEN 'Общее' - WHEN ((ri.info->'svedRObr'->>'prOtsRObr' = '1' OR ri.info->'svedInObr'->>'prOtsInObr' = '1')) THEN 'Нет данных' - ELSE 'Не указано' -- Добавлено условие по умолчанию - END AS education, - - ri.info->'svedSemPolozh'->>'semPolozhNaim' AS marital_status, - - (SELECT COUNT(*) - FROM jsonb_array_elements(ri.info->'svedDeti'->'rebenok') AS childs - WHERE jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array' - AND age(make_date(NULLIF(childs->'svedFLBS'->'dataRozhdDok'->>'god', '')::int, - NULLIF(childs->'svedFLBS'->'dataRozhdDok'->>'mesyacz','')::int, - NULLIF(childs->'svedFLBS'->'dataRozhdDok'->>'den','')::int)) < make_interval(years => 18) - ) AS number_children, - - (SELECT COUNT(*) - FROM jsonb_array_elements(ri.info->'svedDeti'->'rebenok') AS childs - WHERE jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array' - AND age(make_date(NULLIF(childs->'svedFLBS'->'dataRozhdDok'->>'god', '')::int, - NULLIF(childs->'svedFLBS'->'dataRozhdDok'->>'mesyacz','')::int, - NULLIF(childs->'svedFLBS'->'dataRozhdDok'->>'den','')::int)) >= make_interval(years => 18) - ) AS number_children_18_old, - - ri.info->'pasportRF'->'aktPasportRF'->>'nomDok' AS passport_number, - ri.info->'pasportRF'->'aktPasportRF'->>'serDok' AS passport_series, - ri.info->'svedVoin'->'voin'->>'dataReg' AS issue_date, - ri.recruit_id, -- ID рекрута - r.target_recruitment_id AS recruitment_id, - rr.reason_registration, -- причина постановки на учет char - sc.sports_category, -- наличие спортивной категории bool - dl.driver_license, -- категории водительских удостоверений char - dg.disability_group, -- группа инвалидности char - tl.tractor_license, -- наличие удостоверения тракториста bool - iw.criminal_prosecution AS is_wanted, -- наличие уголовного преследования bool - em.employment_status AS employment, -- занятость char - r.system_update_date AS update_date -FROM - public.recruits_info ri -JOIN - public.recruits r ON ri.recruit_id = r.id -LEFT JOIN - children_count cc ON r.id = cc.recruit_id -- Присоединение для получения количества детей -JOIN - registration_reasons rr ON rr.recruit_id = ri.recruit_id -JOIN - sports_category sc ON sc.recruit_id = ri.recruit_id -JOIN - driver_license dl ON dl.recruit_id = ri.recruit_id -JOIN - disability_group dg ON dg.recruit_id = ri.recruit_id -JOIN - tractor_license tl ON tl.recruit_id = ri.recruit_id -JOIN - is_wanted iw ON iw.recruit_id = ri.recruit_id -JOIN - employment em ON em.recruit_id = ri.recruit_id -WHERE - r.target_recruitment_id IS NOT NULL - AND r.current_recruitment_id IS NOT NULL; - Y - - - 208 - 208 - - - - Table output - TableOutput - - Y - - 1 - - none - - - 1000 - ervu-dashboard - - - N - N - N - N - Y - N - ervu_dashboard - N - citizen
- N - Y - N - Y - - - 656 - 64 - -
- - - -
diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/medical_authorities_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/medical_authorities_once.hpl index 62c0638..5fd6ecd 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/medical_authorities_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/medical_authorities_once.hpl @@ -46,10 +46,10 @@ N 0 with uchet as -(select jsonb_array_elements(ri.info->'svedPND'->'svedUchetDisp'->'svedUchet') u, +(select jsonb_array_elements(ri.info->'svedFL'->'svedPND'->'svedUchetDisp'->'svedUchet') u, ri.recruit_id from public.recruits_info ri -where jsonb_typeof(ri.info->'svedPND'->'svedUchetDisp'->'svedUchet') = 'array') +where jsonb_typeof(ri.info->'svedFL'->'svedPND'->'svedUchetDisp'->'svedUchet') = 'array') select r.id recruit_id, u->>'dataPostUchet' start_date, @@ -79,10 +79,10 @@ join uchet on r.id = uchet.recruit_id; N 0 with uchet as -(select jsonb_array_elements(ri.info->'svedUchetVICH'->'uchetVICH') u, +(select jsonb_array_elements(ri.info->'svedFL'->'svedUchetVICH'->'uchetVICH') u, ri.recruit_id from public.recruits_info ri -where jsonb_typeof(ri.info->'svedUchetVICH'->'uchetVICH') = 'array') +where jsonb_typeof(ri.info->'svedFL'->'svedUchetVICH'->'uchetVICH') = 'array') select r.id recruit_id, to_date(u->>'dataPostUchet', 'YYYY-MM-DD') start_date, @@ -116,14 +116,11 @@ join uchet on r.id = uchet.recruit_id; N N N - Y - N ervu_dashboard N medical_authorities
- N Y N @@ -153,14 +150,11 @@ join uchet on r.id = uchet.recruit_id; N N N - Y - N ervu_dashboard N medical_authorities
- N Y N diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/opekun_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/opekun_once.hpl index 4dc1215..afa81c0 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/opekun_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/opekun_once.hpl @@ -95,10 +95,10 @@ N 0 with person as -(select jsonb_array_elements(ri.info->'svedOpekun'->'svedSoczPod') ch, +(select jsonb_array_elements(ri.info->'svedFL'->'svedOpekun'->'svedSoczPod') ch, ri.recruit_id from public.recruits_info ri -where jsonb_typeof(ri.info->'svedOpekun'->'svedSoczPod') = 'array') +where jsonb_typeof(ri.info->'svedFL'->'svedOpekun'->'svedSoczPod') = 'array') select r.id recruit_id, concat_ws(' ', ch->'fioOpek'->>'familiya', @@ -106,7 +106,7 @@ select ch->'fioOpek'->>'otchestvo') full_name, make_date(NULLIF(ch->'dataRozhdDok'->>'god', '')::int, NULLIF(ch->'dataRozhdDok'->>'mesyacz','')::int, - NULLIF(ch->'dataRozhdDok'->>'den','')::int) birth_date, + NULLIF(ch->'dataRozhdDok'->>'den','')::int) birth_date, ch->>'snils' snils from public.recruits r join person on r.id = person.recruit_id @@ -136,14 +136,11 @@ join person on r.id = person.recruit_id N N N - Y - N ervu_dashboard N citizen_guardianship
- N Y N diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/passport_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/passport_once.hpl index 8d47eca..13e56fc 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/passport_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/passport_once.hpl @@ -46,17 +46,18 @@ N 0 select r.id recruit_id, -ri.info->'pasportRF'->'aktPasportRF'->>'nomDok' passport_number, -ri.info->'pasportRF'->'aktPasportRF'->>'serDok' passport_series, -ri.info->'pasportRF'->'aktPasportRF'->>'vydDok' organization_name, -ri.info->'pasportRF'->'aktPasportRF'->>'kodVydDok' unit_code, -to_date(ri.info->'pasportRF'->'aktPasportRF'->>'dataDok', 'YYYY-MM-DD') issue_date, -case when ri.info->'pasportRF'->'aktPasportRF'->>'kodStatus'='1' then true +ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'nomDok' passport_number, +ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'serDok' passport_series, +ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'vydDok' organization_name, +ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'kodVydDok' unit_code, +to_date(ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'dataDok', 'YYYY-MM-DD') issue_date, +case when ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'kodStatus'='1' then true else false end actual from public.recruits_info ri join public.recruits r ON ri.recruit_id = r.id -where ri.info->'pasportRF'->'aktPasportRF'->>'nomDok' is not null; +where ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'nomDok' is not null + N diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/spouse_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/spouse_once.hpl index 28f7798..4f85c87 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/spouse_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/spouse_once.hpl @@ -196,19 +196,19 @@ WITH suprug AS ( SELECT supr.supri AS supr, - ri.info->'svedSemPolozh'->'svedAZBrak'->>'nomerZapis' AS marriage_az_number, - ri.info->'svedSemPolozh'->'svedAZBrak'->>'dataBrakKalend' AS marriage_date, - ri.info->'svedSemPolozh'->'svedAZRazvod'->>'nomerZapis' AS divorce_az_number, - ri.info->'svedSemPolozh'->'svedAZRazvod'->>'dataRastBrakKalend' AS divorce_date, + ri.info->'svedFL'->'svedSemPolozh'->'svedAZBrak'->>'nomerZapis' AS marriage_az_number, + ri.info->'svedFL'->'svedSemPolozh'->'svedAZBrak'->>'dataBrakKalend' AS marriage_date, + ri.info->'svedFL'->'svedSemPolozh'->'svedAZRazvod'->>'nomerZapis' AS divorce_az_number, + ri.info->'svedFL'->'svedSemPolozh'->'svedAZRazvod'->>'dataRastBrakKalend' AS divorce_date, CASE - WHEN (ri.info->'svedSemPolozh'->>'svedSuprIskl' = '1') THEN true + WHEN (ri.info->'svedFL'->'svedSemPolozh'->>'svedSuprIskl' = '1') THEN true ELSE false END AS information_excluded, ri.recruit_id FROM public.recruits_info ri - LEFT JOIN LATERAL ( - SELECT jsonb_array_elements(ri.info->'svedSemPolozh'->'suprugi') AS supri - WHERE jsonb_typeof(ri.info->'svedSemPolozh'->'suprugi') = 'array' + JOIN LATERAL ( + SELECT jsonb_array_elements(ri.info->'svedFL'->'svedSemPolozh'->'suprugi') AS supri + WHERE jsonb_typeof(ri.info->'svedFL'->'svedSemPolozh'->'suprugi') = 'array' ) AS supr ON true ) SELECT @@ -224,11 +224,7 @@ SELECT NULLIF(supr->'svedFLBS'->'dataRozhdDok'->>'mesyacz','')::int, NULLIF(supr->'svedFLBS'->'dataRozhdDok'->>'den','')::int ) AS birth_date, - MAKE_DATE( - NULLIF(supr->'svedSmert'->>'god', '')::int, - NULLIF(supr->'svedSmert'->>'mesyacz','')::int, - NULLIF(supr->'svedSmert'->>'den','')::int - ) AS death_date, + (supr->'svedSmert'->'extend'->>'dataSmert')::date AS death_date, supr->'svedSmert'->>'nomerZapis' AS death_az_number, marriage_az_number, marriage_date, @@ -236,7 +232,7 @@ SELECT divorce_date, information_excluded FROM public.recruits r -JOIN suprug ON r.id = suprug.recruit_id; +JOIN suprug ON r.id = suprug.recruit_id N @@ -263,14 +259,11 @@ JOIN suprug ON r.id = suprug.recruit_id; N N N - Y - N ervu_dashboard N citizen_spouse
- N Y N