From 914cc263b4c8db1193836871c3fc20ac384475b9 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Thu, 3 Apr 2025 14:42:53 +0300 Subject: [PATCH] +info --- .../info_recruits/child.hpl | 14 +- .../info_recruits/citizen_foreign.hpl | 21 +- .../info_recruits/citizenship.hpl | 25 +- .../info_recruits/deputy.hpl | 28 +- .../info_recruits/disability.hpl | 24 +- .../info_recruits/disease.hpl | 10 +- .../info_recruits/drivers_licence.hpl | 64 +- .../info_recruits/info_recruits.hpl | 675 +++++++++--------- .../info_recruits/medical_authorities.hpl | 19 +- .../info_recruits/opekun.hpl | 8 +- .../info_recruits/passport.hpl | 30 +- .../info_recruits/property.hpl | 42 +- .../info_recruits/prosecution.hpl | 40 +- .../info_recruits/punishment.hpl | 156 ++-- .../info_recruits/spouse.hpl | 28 +- v1_apache-hop dash mapping/job_general.hwf | 6 +- .../jobs_once_a_day/info_recruits_once.hpl | 13 +- 17 files changed, 587 insertions(+), 616 deletions(-) diff --git a/v1_apache-hop dash mapping/info_recruits/child.hpl b/v1_apache-hop dash mapping/info_recruits/child.hpl index f6c8445..77b5063 100644 --- a/v1_apache-hop dash mapping/info_recruits/child.hpl +++ b/v1_apache-hop dash mapping/info_recruits/child.hpl @@ -49,13 +49,11 @@ = recruit_id recruit_id - = full_name full_name - ervu_dashboard citizen_child
@@ -117,11 +115,11 @@ 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 -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array') + join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' +where jsonb_typeof(ri.info->'svedFL'->'svedDeti'->'rebenok') = 'array') select r.id::uuid recruit_id, ch->>'naimRodstvSvyazReb' kinship_type, @@ -135,11 +133,11 @@ 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 -where -r.system_update_date >= '${UP_D}' + + Y diff --git a/v1_apache-hop dash mapping/info_recruits/citizen_foreign.hpl b/v1_apache-hop dash mapping/info_recruits/citizen_foreign.hpl index 05afeba..0a7c948 100644 --- a/v1_apache-hop dash mapping/info_recruits/citizen_foreign.hpl +++ b/v1_apache-hop dash mapping/info_recruits/citizen_foreign.hpl @@ -164,11 +164,13 @@ N 0 with citizen as -(select jsonb_array_elements(ri.info->'svedIGPP'->'svedIG') cit, +(select jsonb_array_elements(ri.info->'svedFL'->'svedIGPP'->'svedIG') cit, ri.recruit_id from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedIGPP'->'svedIG') = 'array') + join public.recruits r ON r.id = ri.recruit_id +where jsonb_typeof(ri.info->'svedFL'->'svedIGPP'->'svedIG') = 'array' +AND r.system_update_date >= '${UP_D}' +) select r.id recruit_id, cit->'oksm'->>'naimOKSM' country_name, @@ -176,7 +178,8 @@ select to_date(cit->>'dataPriobrIG', 'YYYY-MM-DD') citizenship_date from public.recruits r join citizen on r.id = citizen.recruit_id -WHERE r.system_update_date >= '${UP_D}'; + + Y @@ -199,11 +202,13 @@ WHERE r.system_update_date >= '${UP_D}'; N 0 with citizen as -(select jsonb_array_elements(ri.info->'svedIGPP'->'svedPP') cit, +(select jsonb_array_elements(ri.info->'svedFL'->'svedIGPP'->'svedPP') cit, ri.recruit_id from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedIGPP'->'svedPP') = 'array') + join public.recruits r ON r.id = ri.recruit_id +where jsonb_typeof(ri.info->'svedFL'->'svedIGPP'->'svedPP') = 'array' +AND r.system_update_date >= '${UP_D}' +) select r.id recruit_id, cit->'oksm'->>'naimOKSM' country_name, @@ -211,7 +216,7 @@ select to_date(cit->>'dataPriobrPP', 'YYYY-MM-DD') residense_right_date from public.recruits r join citizen on r.id = citizen.recruit_id -WHERE r.system_update_date >= '${UP_D}'; + Y diff --git a/v1_apache-hop dash mapping/info_recruits/citizenship.hpl b/v1_apache-hop dash mapping/info_recruits/citizenship.hpl index 991f743..a825f20 100644 --- a/v1_apache-hop dash mapping/info_recruits/citizenship.hpl +++ b/v1_apache-hop dash mapping/info_recruits/citizenship.hpl @@ -120,20 +120,19 @@ N 0 select r.id recruit_id, -ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'osnPriob' acquiring_basis, -ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'nomReshPriob' acquiring_number, -to_date(ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'dataReshPriob', 'YYYY-MM-DD') acquiring_date, -ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'organReshPriob' acquiring_authority, -ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'osnVyh' renunciation_basis, -ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'nomReshVyh' renunciation_number, -to_date(ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'dataReshVyh', 'YYYY-MM-DD') renunciation_date, -ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'organReshVyh' renunciation_authority +ri.info->'svedFL'->'svedGrazhdanRF'->'grazhdanRF'->>'osnPriob' acquiring_basis, +ri.info->'svedFL'->'svedGrazhdanRF'->'grazhdanRF'->>'nomReshPriob' acquiring_number, +to_date(ri.info->'svedFL'->'svedGrazhdanRF'->'grazhdanRF'->>'dataReshPriob', 'YYYY-MM-DD') acquiring_date, +ri.info->'svedFL'->'svedGrazhdanRF'->'grazhdanRF'->>'organReshPriob' acquiring_authority, +ri.info->'svedFL'->'svedGrazhdanRF'->'grazhdanRF'->>'osnVyh' renunciation_basis, +ri.info->'svedFL'->'svedGrazhdanRF'->'grazhdanRF'->>'nomReshVyh' renunciation_number, +to_date(ri.info->'svedFL'->'svedGrazhdanRF'->'grazhdanRF'->>'dataReshVyh', 'YYYY-MM-DD') renunciation_date, +ri.info->'svedFL'->'svedGrazhdanRF'->'grazhdanRF'->>'organReshVyh' renunciation_authority from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where ri.info->'svedGrazhdanRF'->>'prOtsGrazhdanRF' is null and -(ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'nomReshPriob' is not null or ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'osnVyh' is not null) -and r.system_update_date >= '${UP_D}' - +join public.recruits r ON ri.recruit_id = r.id +where ri.info->'svedFL'->'svedGrazhdanRF'->>'prOtsGrazhdanRF' is null and +(ri.info->'svedFL'->'svedGrazhdanRF'->'grazhdanRF'->>'nomReshPriob' is not null or ri.info->'svedGrazhdanRF'->'grazhdanRF'->>'osnVyh' is not null) + AND r.system_update_date >= '${UP_D}' Y diff --git a/v1_apache-hop dash mapping/info_recruits/deputy.hpl b/v1_apache-hop dash mapping/info_recruits/deputy.hpl index 94cf2b2..c85c55a 100644 --- a/v1_apache-hop dash mapping/info_recruits/deputy.hpl +++ b/v1_apache-hop dash mapping/info_recruits/deputy.hpl @@ -141,11 +141,6 @@ information Y - - period_office - period_office - Y - deputy deputy @@ -174,14 +169,13 @@ N 0 select r.id recruit_id, -ri.info->'svedDeputat'->'deputat'->>'srokiPolnomochii' period_office, -to_date(ri.info->'svedDeputat'->'deputat'->>'dataDosrochPrekr', 'YYYY-MM-DD') end_date, -ri.info->'svedDeputat'->'deputat'->>'svedIzbrDeputatom' information, -true deputy +ri.info->'svedFL'->'svedDeputat'->'deputat'->>'srokiPolnomochii' period_office, +to_date(ri.info->'svedFL'->'svedDeputat'->'deputat'->>'dataDosrochPrekr', 'YYYY-MM-DD') end_date, +ri.info->'svedFL'->'svedDeputat'->'deputat'->>'svedIzbrDeputatom' information from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where ri.info->'svedDeputat'->'deputat'->>'svedIzbrDeputatom' is not null -AND r.system_update_date >= '${UP_D}' +join public.recruits r ON ri.recruit_id = r.id +where ri.info->'svedFL'->'svedDeputat'->'deputat'->>'svedIzbrDeputatom' is not null + AND r.system_update_date >= '${UP_D}' Y @@ -204,13 +198,13 @@ AND r.system_update_date >= '${UP_D}' N 0 select r.id recruit_id, -to_date(ri.info->'svedKandidat'->'kandidat'->>'dataSnyatiyaKandidatury', 'YYYY-MM-DD') end_date, -ri.info->'svedKandidat'->'kandidat'->>'svedRegKandidata' information, +to_date(ri.info->'svedFL'->'svedKandidat'->'kandidat'->>'dataSnyatKandidat', 'YYYY-MM-DD') end_date, +ri.info->'svedFL'->'svedKandidat'->'kandidat'->>'svedRegKandidata' information, false deputy from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where ri.info->'svedKandidat'->'kandidat'->>'svedRegKandidata' is not null -AND r.system_update_date >= '${UP_D}' +join public.recruits r ON ri.recruit_id = r.id +where ri.info->'svedFL'->'svedKandidat'->>'kandidat' is not null + AND r.system_update_date >= '${UP_D}' Y diff --git a/v1_apache-hop dash mapping/info_recruits/disability.hpl b/v1_apache-hop dash mapping/info_recruits/disability.hpl index 44ef76d..2f15fec 100644 --- a/v1_apache-hop dash mapping/info_recruits/disability.hpl +++ b/v1_apache-hop dash mapping/info_recruits/disability.hpl @@ -180,21 +180,20 @@ 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 -and -r.system_update_date >= '${UP_D}'; +where ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa' is not null + AND r.system_update_date >= '${UP_D}' Y @@ -224,8 +223,7 @@ r.system_update_date >= '${UP_D}'; from public.recruits r join public.recruits_info ri on r.id = ri.recruit_id where ri.info->'svedNedeesp'->'nedeesposob'->>'naimSud' is not null -and -r.system_update_date >= '${UP_D}'; + AND r.system_update_date >= '${UP_D}' Y diff --git a/v1_apache-hop dash mapping/info_recruits/disease.hpl b/v1_apache-hop dash mapping/info_recruits/disease.hpl index f6764bf..b5dce31 100644 --- a/v1_apache-hop dash mapping/info_recruits/disease.hpl +++ b/v1_apache-hop dash mapping/info_recruits/disease.hpl @@ -100,21 +100,19 @@ 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 -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedSostZdorov'->'svedZdorov'->'sostZdorov') = 'array') + join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' +where jsonb_typeof(ri.info->'svedFL'->'svedSostZdorov'->'svedZdorov'->'sostZdorov') = 'array') select r.id recruit_id, z->>'kodZabol' code, z->>'naimZabol' name, to_date(z->>'dataDiagn', 'YYYY-MM-DD') reg_date - --registered - поставлен на учет по заболеванию from public.recruits r join zdorov on r.id = zdorov.recruit_id -where -r.system_update_date >= '${UP_D}'; + Y diff --git a/v1_apache-hop dash mapping/info_recruits/drivers_licence.hpl b/v1_apache-hop dash mapping/info_recruits/drivers_licence.hpl index 61ee8ed..7407d58 100644 --- a/v1_apache-hop dash mapping/info_recruits/drivers_licence.hpl +++ b/v1_apache-hop dash mapping/info_recruits/drivers_licence.hpl @@ -59,16 +59,13 @@ = recruit_id recruit_id + = start_date start_date - - - = - tractor_driver - tractor_driver + ervu_dashboard drivers_licence
@@ -87,11 +84,6 @@ close_date Y
- - licence_number - licence_number - Y - licence_series licence_series @@ -102,11 +94,6 @@ start_date N - - tractor_driver - tractor_driver - N - N @@ -219,21 +206,20 @@ N 0 select - r.id recruit_id, - false as tractor_driver, - 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 -and -r.system_update_date >= '${UP_D}'; +where jsonb_typeof(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array' + AND r.system_update_date >= '${UP_D}' + Y @@ -257,22 +243,22 @@ r.system_update_date >= '${UP_D}'; 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 -AND r.system_update_date >= '${UP_D}'; +where ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM' is not null + AND r.system_update_date >= '${UP_D}' Y diff --git a/v1_apache-hop dash mapping/info_recruits/info_recruits.hpl b/v1_apache-hop dash mapping/info_recruits/info_recruits.hpl index f128821..ff0d5c1 100644 --- a/v1_apache-hop dash mapping/info_recruits/info_recruits.hpl +++ b/v1_apache-hop dash mapping/info_recruits/info_recruits.hpl @@ -314,17 +314,291 @@ type_place_stay ervu_person_registry N 0 - WITH extracted_children AS ( + WITH +base_recruit_data AS ( + SELECT + r.full_name, + r.last_name, + r.first_name, + r.middle_name, + r.gender, + ri.info->'svedFL'->'svedBS'->'snils'->'aktSNILS'->>'snils' AS snils, + ri.info->'svedFL'->'svedBS'->'inn'->'aktINN'->>'inn' AS inn, + r.birth_date, + EXTRACT(YEAR FROM AGE(r.birth_date)) AS age, + r.birth_place, + r.phone, + r.email, + ri.recruit_id, + ri.info, + r.vu_current_info, + ri.info->'svedFL'->'svedSemPolozh'->>'semPolozhNaim' AS marital_status, + ri.info->'svedFL'->'pasportRF'->'aktPasportRF'->>'nomDok' AS passport_number, + ri.info->'svedFL'->'pasportRF'->'aktPasportRF'->>'serDok' AS passport_series, + ri.info->'svedFL'->'svedVoin'->'voin'->>'dataReg' AS issue_date, + r.system_update_date AS update_date, + CASE + WHEN r.vu_current_info->>'recruitmentCommercialInfo' = 'true' THEN 'CONVICT' + ELSE 'NOTCONVICT' + END AS convicts, + COALESCE(r.current_recruitment_id, r.target_recruitment_id) AS recruitment_id, + CASE + WHEN jsonb_typeof(ri.info->'svedFL'->'svedPND'->'svedUchetDisp'->'svedUchet') = 'array' THEN + EXISTS ( + SELECT 1 + FROM jsonb_array_elements(ri.info->'svedFL'->'svedPND'->'svedUchetDisp'->'svedUchet') AS uchet_pnd + WHERE uchet_pnd->>'dataSnyatUchet' <= current_date::text + ) + ELSE + false + END AS uchet_pnd, + CASE + WHEN ddd.hidden IS false THEN ddd.hidden + ELSE true + END AS deferment_liberation, -- когда фолс отсрочка есть, когда тру или нулл - нет + + CASE + WHEN + -- Условия для "true" (спортивная категория) + ri.info->'svedFL'->'svedSport' ? 'sport' -- Проверяем, что ключ 'sport' существует + AND jsonb_typeof(ri.info->'svedFL'->'svedSport'->'sport') = 'array' -- Проверяем, что 'sport' это массив + AND jsonb_array_length(ri.info->'svedFL'->'svedSport'->'sport') > 0 -- И массив не пустой + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(ri.info->'svedFL'->'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->'svedFL'->'svedSport'->>'prOtsSvedSport' IS NULL + THEN true + + WHEN + -- Условия для "false" (не является спортивной категорией) + ( + ri.info->'svedFL'->'svedSport'->'sport' IS NULL -- Если 'sport' = NULL + OR ( + ri.info->'svedSport' ? 'sport' -- Проверяем, что ключ 'sport' существует + AND jsonb_typeof(ri.info->'svedFL'->'svedSport'->'sport') = 'array' -- Поле 'sport' должно быть массивом + AND jsonb_array_length(ri.info->'svedFL'->'svedSport'->'sport') > 0 -- И массив не пустой + ) + ) + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(ri.info->'svedFL'->'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->'svedFL'->'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, + + mrr.value AS reason_registration, + + CASE + WHEN ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa' IS NOT NULL + AND ri.info->'svedFL'->'svedInvalid'->>'prOtsSvedInvalid' IS NULL + AND (ri.info->'svedFL'->'sportRazr'->>'dataSnyat' IS NULL + OR TO_DATE(ri.info->'svedFL'->'sportRazr'->>'dataSnyat', 'YYYY-MM-DD') <= CURRENT_DATE) + THEN ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa' + WHEN ri.info->'svedFL'->'svedInvalid'->>'prOtsSvedInvalid' = '1' THEN 'Нет информации об инвалидности' + ELSE 'Нет информации об инвалидности' + END AS disability_group, + + CASE + WHEN ri.info->'svedFL'->'svedUdostTraktMash'->>'udostTraktMash' IS NOT NULL + AND TO_DATE(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataOkonchUTM', 'YYYY-MM-DD') > CURRENT_DATE + THEN true + WHEN ri.info->'svedFL'->'svedUdostTraktMash'->>'udostTraktMash' IS NOT NULL + AND TO_DATE(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataOkonchUTM', 'YYYY-MM-DD') <= CURRENT_DATE + THEN false + WHEN ri.info->'svedFL'->'svedUdostTraktMash'->>'prOtsSvedUTM' = '1' THEN null + ELSE null + END AS tractor_license, + + CASE + WHEN + jsonb_typeof(ri.info->'svedFL'->'svedUgolovPresl'->'faktyUgolovPresl') = 'array' -- проверяем, что 'faktyUgolovPresl' это массив + AND jsonb_array_length(ri.info->'svedFL'->'svedUgolovPresl'->'faktyUgolovPresl') > 0 -- массив не пустой + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(ri.info->'svedFL'->'svedUgolovPresl'->'faktyUgolovPresl') AS criminal_prosecution + WHERE + criminal_prosecution->>'dataPrekrashh' IS NULL -- дата прекращения отсутствует + ) + AND ri.info->'svedFL'->'svedUgolovPresl'->>'prOtsSvedUgolovPresl' IS NULL + THEN true + + WHEN + jsonb_typeof(ri.info->'svedFL'->'svedUgolovPresl'->'faktyUgolovPresl') = 'array' -- проверяем, что 'faktyUgolovPresl' это массив + AND jsonb_array_length(ri.info->'svedFL'->'svedUgolovPresl'->'faktyUgolovPresl') > 0 -- массив не пустой + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(ri.info->'svedFL'->'svedUgolovPresl'->'faktyUgolovPresl') AS criminal_prosecution + WHERE + criminal_prosecution->>'dataPrekrashh' IS NOT NULL -- дата прекращения не отсутствует + ) + AND ri.info->'svedFL'->'svedUgolovPresl'->>'prOtsSvedUgolovPresl' IS NULL + THEN false + + WHEN + ri.info->'svedFL'->'svedUgolovPresl'->>'prOtsSvedUgolovPresl' = '1' + THEN NULL + + ELSE NULL + END AS criminal_prosecution, + + COALESCE( + CASE + WHEN ( + jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz + WHERE vuz->>'kodStatus' IN ('1', '2', '4') + ) + ) OR ( + jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh + WHERE kolledzh->>'kodStatus' IN ('1', '2', '4') + ) + ) THEN 'Обучается' + ELSE NULL + END || + CASE + WHEN jsonb_typeof(info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(info->'svedFL'->'svedTrud'->'trudDeyat') AS trud + WHERE trud->>'prAktMestRab' = '1' + ) THEN + CASE + WHEN ( + jsonb_typeof(info->'svedFL'->'svedVUZ'->'vuz') = 'array' + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(info->'svedFL'->'svedVUZ'->'vuz') AS vuz + WHERE vuz->>'kodStatus' IN ('1', '2', '4') + ) + ) OR ( + jsonb_typeof(info->'svedFL'->'svedKolledzh'->'kolledzh') = 'array' + AND EXISTS ( + SELECT 1 + FROM jsonb_array_elements(info->'svedFL'->'svedKolledzh'->'kolledzh') AS kolledzh + WHERE kolledzh->>'kodStatus' IN ('1', '2', '4') + ) + ) THEN ', Работает' + ELSE 'Работает' + END + ELSE NULL + END, + CASE + WHEN + info->'svedFL'->'svedVUZ'->>'prOtsSvedVUZ' = '1' -- Отсутствие сведений о вузе + AND info->'svedFL'->'svedKolledzh'->>'prOtsSvedKolledzh' = '1' -- Отсутствие сведений о колледже + AND info->'svedFL'->'svedTrud'->>'prOtsSvedTrud' = '1' -- Отсутствие сведений о работе + THEN 'Нет информации' + ELSE 'Нет информации' + END + ) AS employment_status, + + CASE + WHEN (EXISTS ( + SELECT 1 + 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->'svedFL'->'svedInObr'->'inObr') AS education + WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array' + AND education->>'kodUrObr' IN ('1', '2', '3', '4', '5') + )) THEN 'Высшее' + WHEN (EXISTS ( + SELECT 1 + 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->'svedFL'->'svedInObr'->'inObr') AS education + WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array' + AND education->>'kodUrObr' = '10' + )) THEN 'Среднее профессиональное' + WHEN (EXISTS ( + SELECT 1 + 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->'svedFL'->'svedInObr'->'inObr') AS education + WHERE jsonb_typeof(ri.info->'svedFL'->'svedInObr'->'inObr') = 'array' + AND education->>'kodUrObr' IN ('7', '9') + )) THEN 'Общее' + WHEN ((ri.info->'svedFL'->'svedRObr'->>'prOtsRObr' = '1' OR ri.info->'svedFL'->'svedInObr'->>'prOtsInObr' = '1')) THEN 'Нет данных' + ELSE 'Не указано' -- Добавлено условие по умолчанию + END AS education, + + ( + SELECT COUNT(*) + FROM jsonb_array_elements(ri.info->'svedFL'->'svedDeti'->'rebenok') AS childs + WHERE jsonb_typeof(ri.info->'svedFL'->'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 + + FROM public.recruits AS r + JOIN public.recruits_info AS ri ON ri.recruit_id = r.id + JOIN public.military_registration_reason AS mrr ON r.registration_reasons::jsonb @> to_jsonb(mrr.code::text) + --JOIN public.recruits_history rh on rh.recruit_id=r.id + LEFT JOIN public.decision_deferment_dto ddd ON ddd.recruit_id = r.id +WHERE r.system_update_date >= '${UP_D}' +), +extracted_children AS ( SELECT ri.recruit_id, - jsonb_array_elements_text(ri.info->'svedDeti'->'rebenok') AS child - FROM - public.recruits_info ri - JOIN - public.recruits r ON ri.recruit_id = r.id + jsonb_array_elements_text(ri.info->'svedFL'->'svedDeti'->'rebenok') AS child + FROM base_recruit_data ri WHERE - jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array' - AND r.system_update_date >= '${UP_D}' + jsonb_typeof(ri.info->'svedFL'->'svedDeti'->'rebenok') = 'array' ), children_birth_dates AS ( SELECT @@ -332,8 +606,7 @@ children_birth_dates AS ( (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 + FROM extracted_children ), children_count AS ( SELECT @@ -346,287 +619,56 @@ children_count AS ( 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) - WHERE r.system_update_date >= '${UP_D}' -), driver_license AS ( SELECT ri.recruit_id, COALESCE( - string_agg(sved_vodit->>'kategoriya', ', '), + string_agg(sved_vodit->>'naimKatTS', ', '), 'Нет информации' ) AS driver_license - FROM - public.recruits_info ri - JOIN - public.recruits r ON ri.recruit_id = r.id + FROM base_recruit_data ri LEFT JOIN LATERAL - jsonb_array_elements(ri.info->'svedVoditUdost'->'voditUdost'->'svedKat') AS sved_vodit + jsonb_array_elements(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') AS sved_vodit ON true - WHERE r.system_update_date >= '${UP_D}' 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 - JOIN public.recruits r ON ri.recruit_id = r.id - WHERE r.system_update_date >= '${UP_D}' -), - -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 - JOIN public.recruits r ON ri.recruit_id = r.id - WHERE r.system_update_date >= '${UP_D}' -), - -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 - JOIN public.recruits r ON ri.recruit_id = r.id - WHERE r.system_update_date >= '${UP_D}' -), - -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 - JOIN public.recruits r ON ri.recruit_id = r.id - WHERE r.system_update_date >= '${UP_D}' -), - -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 - JOIN public.recruits r ON ri.recruit_id = r.id - WHERE r.system_update_date >= '${UP_D}' ) - SELECT r.full_name, r.last_name, r.first_name, r.middle_name, - r.gender, + r.gender, + r.snils, + r.inn, r.birth_date, - EXTRACT(YEAR FROM AGE(r.birth_date)) AS age, + r.age, r.birth_place, r.phone, - r.conscription AS deferment_liberation, - + r.email, + r.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') + WHEN (EXTRACT(YEAR FROM AGE(NOW(), r.birth_date)) BETWEEN 30 AND 50 AND r.gender = 'MALE') -- мужчины от 30 до 50 лет + OR (EXTRACT(YEAR FROM AGE(NOW(), r.birth_date)) BETWEEN 30 AND 45 AND r.gender = 'FEMALE') -- женщины от 30 до 45 лет + AND COALESCE(cc.children_under_16, 0) < 5 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') + CASE + WHEN EXTRACT(YEAR FROM AGE(NOW(), r.birth_date)) BETWEEN 18 AND 30 + AND r.gender = 'MALE' + AND r.deferment_liberation IS 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') + CASE + WHEN EXTRACT(YEAR FROM AGE(NOW(), r.birth_date)) BETWEEN 18 AND 50 + AND r.gender = 'MALE' + AND (r.info->'svedFL'->'svedPND'->>'prOtsSvedPND' = '1' + OR uchet_pnd IS false) + AND r.info->'svedFL'->'svedUchetVICH'->>'prOtsSvedUchetVICH' = '1' -- признак отсутствия сведений о заболевании ВИЧ THEN true ELSE false END AS contract_service, @@ -637,100 +679,33 @@ SELECT 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, + r.education, + r.marital_status, + r.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, - - (SELECT COUNT(*) - FROM jsonb_array_elements(ri.info->'svedDeti'->'rebenok') AS childs - WHERE jsonb_typeof(ri.info->'svedDeti'->'rebenok') = 'array' + FROM jsonb_array_elements(r.info->'svedFL'->'svedDeti'->'rebenok') AS childs + WHERE jsonb_typeof(r.info->'svedFL'->'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 + r.passport_number, + r.passport_series, + r.issue_date, + r.recruit_id, -- ID рекрута + r.recruitment_id, + r.reason_registration, -- причина постановки на учет char + r.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 - AND*/ - r.system_update_date >= '${UP_D}'; + r.disability_group, -- группа инвалидности char + r.tractor_license, -- наличие удостоверения тракториста bool + r.criminal_prosecution AS is_wanted, -- наличие уголовного преследования bool + r.employment_status AS employment, -- занятость char + r.update_date +FROM base_recruit_data r +LEFT JOIN children_count cc ON r.recruit_id = cc.recruit_id -- Присоединение для получения количества детей +JOIN driver_license dl ON dl.recruit_id = r.recruit_id Y diff --git a/v1_apache-hop dash mapping/info_recruits/medical_authorities.hpl b/v1_apache-hop dash mapping/info_recruits/medical_authorities.hpl index 6ed043a..cadb659 100644 --- a/v1_apache-hop dash mapping/info_recruits/medical_authorities.hpl +++ b/v1_apache-hop dash mapping/info_recruits/medical_authorities.hpl @@ -164,11 +164,11 @@ 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 -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedPND'->'svedUchetDisp'->'svedUchet') = 'array') + join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' +where jsonb_typeof(ri.info->'svedFL'->'svedPND'->'svedUchetDisp'->'svedUchet') = 'array') select r.id recruit_id, u->>'dataPostUchet' start_date, @@ -176,8 +176,8 @@ select u->>'dataPlan' change_date from public.recruits r join uchet on r.id = uchet.recruit_id -where -r.system_update_date >= '${UP_D}'; + + Y @@ -200,11 +200,11 @@ r.system_update_date >= '${UP_D}'; 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 -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedUchetVICH'->'uchetVICH') = 'array') + join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' +where jsonb_typeof(ri.info->'svedFL'->'svedUchetVICH'->'uchetVICH') = 'array') select r.id recruit_id, to_date(u->>'dataPostUchet', 'YYYY-MM-DD') start_date, @@ -212,8 +212,7 @@ select true HIV from public.recruits r join uchet on r.id = uchet.recruit_id -where -r.system_update_date >= '${UP_D}'; + Y diff --git a/v1_apache-hop dash mapping/info_recruits/opekun.hpl b/v1_apache-hop dash mapping/info_recruits/opekun.hpl index 71484d2..b42f167 100644 --- a/v1_apache-hop dash mapping/info_recruits/opekun.hpl +++ b/v1_apache-hop dash mapping/info_recruits/opekun.hpl @@ -95,11 +95,11 @@ 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 join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -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', @@ -110,9 +110,7 @@ select NULLIF(ch->'dataRozhdDok'->>'den','')::int) birth_date, ch->>'snils' snils from public.recruits r -join person on r.id = person.recruit_id -where -r.system_update_date >= '${UP_D}' +join person on r.id = person.recruit_id Y diff --git a/v1_apache-hop dash mapping/info_recruits/passport.hpl b/v1_apache-hop dash mapping/info_recruits/passport.hpl index c46b716..f83694e 100644 --- a/v1_apache-hop dash mapping/info_recruits/passport.hpl +++ b/v1_apache-hop dash mapping/info_recruits/passport.hpl @@ -203,18 +203,24 @@ ervu_person_registry 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 -else false -end actual -from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where ri.info->'pasportRF'->'aktPasportRF'->>'nomDok' is not null; + SELECT + r.id AS recruit_id, + ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'nomDok' AS passport_number, + ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'serDok' AS passport_series, + ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'vydDok' AS organization_name, + ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'kodVydDok' AS unit_code, + TO_DATE(ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'dataDok', 'YYYY-MM-DD') AS issue_date, + CASE + WHEN ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'kodStatus' = '1' + THEN TRUE ELSE FALSE + END AS actual +FROM public.recruits_info ri +JOIN public.recruits r ON ri.recruit_id = r.id +WHERE ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'nomDok' IS NOT NULL +AND LENGTH(ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'serDok') = 4 +AND LENGTH(ri.info->'svedFL'->'svedBS'->'pasportRF'->'aktPasportRF'->>'nomDok') = 6 + AND r.system_update_date >= '${UP_D}' + Y diff --git a/v1_apache-hop dash mapping/info_recruits/property.hpl b/v1_apache-hop dash mapping/info_recruits/property.hpl index 1e89be1..ad43c03 100644 --- a/v1_apache-hop dash mapping/info_recruits/property.hpl +++ b/v1_apache-hop dash mapping/info_recruits/property.hpl @@ -367,11 +367,13 @@ N 0 with prop as -(select jsonb_array_elements(ri.info->'svedVozTS'->'vozTS') u, +(select jsonb_array_elements(ri.info->'svedFL'->'svedVozTS'->'vozTS') u, ri.recruit_id from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedVozTS'->'vozTS') = 'array') + join public.recruits r ON r.id = ri.recruit_id +where jsonb_typeof(ri.info->'svedFL'->'svedVozTS'->'vozTS') = 'array' +AND r.system_update_date >= '${UP_D}' +) select r.id recruit_id, u->>'naimVid' vehicle_type, @@ -381,7 +383,7 @@ select 'air_vehicles' type_property from public.recruits r join prop on r.id = prop.recruit_id -WHERE r.system_update_date >= '${UP_D}'; + Y @@ -404,11 +406,13 @@ WHERE r.system_update_date >= '${UP_D}'; N 0 with prop as -(select jsonb_array_elements(ri.info->'svedNazTS'->'nazTS') u, +(select jsonb_array_elements(ri.info->'svedFL'->'svedNazTS'->'nazTS') u, ri.recruit_id from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedNazTS'->'nazTS') = 'array') + join public.recruits r ON r.id = ri.recruit_id +where jsonb_typeof(ri.info->'svedFL'->'svedNazTS'->'nazTS') = 'array' +AND r.system_update_date >= '${UP_D}' +) select r.id recruit_id, u->>'vidTS' vehicle_type, @@ -421,7 +425,7 @@ select 'ground_transportation' type_property from public.recruits r join prop on r.id = prop.recruit_id -WHERE r.system_update_date >= '${UP_D}'; + Y @@ -444,11 +448,13 @@ WHERE r.system_update_date >= '${UP_D}'; N 0 with prop as -(select jsonb_array_elements(ri.info->'svedON'->'on') u, +(select jsonb_array_elements(ri.info->'svedFL'->'svedON'->'on') u, ri.recruit_id from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedON'->'on') = 'array') + join public.recruits r ON r.id = ri.recruit_id +where jsonb_typeof(ri.info->'svedFL'->'svedON'->'on') = 'array' +AND r.system_update_date >= '${UP_D}' +) select r.id recruit_id, u->>'naimVidPrav' kind_right, @@ -458,8 +464,7 @@ select 'realty' type_property from public.recruits r join prop on r.id = prop.recruit_id -where -r.system_update_date >= '${UP_D}'; + Y @@ -482,11 +487,13 @@ r.system_update_date >= '${UP_D}'; N 0 with prop as -(select jsonb_array_elements(ri.info->'svedVodTS'->'vodTS') u, +(select jsonb_array_elements(ri.info->'svedFL'->'svedVodTS'->'vodTS') u, ri.recruit_id from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedVodTS'->'vodTS') = 'array') + join public.recruits r ON r.id = ri.recruit_id +where jsonb_typeof(ri.info->'svedFL'->'svedVodTS'->'vodTS') = 'array' +AND r.system_update_date >= '${UP_D}' +) select r.id recruit_id, u->>'naimVid' vehicle_type, @@ -496,7 +503,8 @@ select 'water_vehicles' type_property from public.recruits r join prop on r.id = prop.recruit_id -WHERE r.system_update_date >= '${UP_D}'; + + Y diff --git a/v1_apache-hop dash mapping/info_recruits/prosecution.hpl b/v1_apache-hop dash mapping/info_recruits/prosecution.hpl index 0e4aefb..518f679 100644 --- a/v1_apache-hop dash mapping/info_recruits/prosecution.hpl +++ b/v1_apache-hop dash mapping/info_recruits/prosecution.hpl @@ -49,13 +49,11 @@ = recruit_id recruit_id - = create_date create_date - ervu_dashboard prosecution
@@ -116,23 +114,27 @@ ervu_person_registry N 0 - with ugol as -(select jsonb_array_elements(ri.info->'svedUgolovPresl'->'faktyUgolovPresl') u, - ri.recruit_id -from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedUgolovPresl'->'faktyUgolovPresl') = 'array') -select - r.id recruit_id, - u->>'vidPreslNaim' kind, - to_date(u->>'dataSved', 'YYYY-MM-DD') create_date, - to_date(u->>'dataPrekrashh', 'YYYY-MM-DD') close_date, - u->>'naimOrgan' authority_name, - u->>'ugolovZakon' law_point, - u->>'osnovPrekrashh' termination_basis -from public.recruits r -join ugol on r.id = ugol.recruit_id -where r.system_update_date >= '${UP_D}' + WITH ugol AS ( + SELECT + jsonb_array_elements(ri.info->'svedFL'->'svedUgolovPresl'->'faktyUgolovPresl') AS u, + ri.recruit_id + FROM public.recruits_info ri + join public.recruits r ON r.id = ri.recruit_id + WHERE jsonb_typeof(ri.info->'svedFL'->'svedUgolovPresl'->'faktyUgolovPresl') = 'array' + AND r.system_update_date >= '${UP_D}' +) +SELECT + r.id AS recruit_id, + u->'sledSud'->>'naimSud' AS kind, + TO_DATE(u->'sledSud'->>'dataVozbUD', 'YYYY-MM-DD') AS create_date, + TO_DATE(u->'sledSud'->'svedSnyat'->>'dataSnyatSud', 'YYYY-MM-DD') AS close_date, + u->'sledSud'->>'naimOrgan' AS authority_name, + STRING_AGG(TRIM(BOTH ' "' FROM law.f), ', ') AS law_point, + u->'sledSud'->'svedSnyat'->>'osnSnyatSud' AS termination_basis +FROM public.recruits r +JOIN ugol ON r.id = ugol.recruit_id +LEFT JOIN LATERAL jsonb_array_elements_text(u->'sledSud'->'statiUK') AS law(f) ON true +GROUP BY r.id, kind, create_date, close_date, authority_name, termination_basis Y diff --git a/v1_apache-hop dash mapping/info_recruits/punishment.hpl b/v1_apache-hop dash mapping/info_recruits/punishment.hpl index 10d9606..351b222 100644 --- a/v1_apache-hop dash mapping/info_recruits/punishment.hpl +++ b/v1_apache-hop dash mapping/info_recruits/punishment.hpl @@ -31,83 +31,6 @@ Y - - Table input - TableInput - - Y - - 1 - - none - - - ervu_person_registry - N - 0 - with ugol as -(select jsonb_array_elements(ri.info->'svedSudim'->'sudim'->'osuzhdenie') u, - ri.recruit_id -from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' -where jsonb_typeof(ri.info->'svedSudim'->'sudim'->'osuzhdenie') = 'array') -select - r.id recruit_id, - u->>'naimSuda' authority_name, - u->>'srokNakaz' sentence, - u->>'adresNakaz' sentence_place, - u->>'kodVidNakaz' punishment_code, - u->>'izmSrokNakaz' sentence_changed, - u->>'naimVidNakaz' punishment_type, - to_date(u->>'dataNachSrok', 'YYYY-MM-DD') start_date, - to_date(u->>'dataOsvobozhd', 'YYYY-MM-DD') release_date, - to_date(u->>'dataOsuzhd', 'YYYY-MM-DD') sentense_date, - u->>'ugolovZakon' law_point, - u->>'osnovOsvobozhd' release_reason -from public.recruits r -join ugol on r.id = ugol.recruit_id -where r.system_update_date >= '${UP_D}'; - Y - - - 528 - 304 - - - - Table output - TableOutput - - Y - - 1 - - none - - - 1000 - ervu-dashboard - - - N - N - N - N - Y - N - ervu_dashboard - N - punishment
- N - Y - N - Y - - - 752 - 176 - -
Insert / update InsertUpdate @@ -126,7 +49,6 @@ where r.system_update_date >= '${UP_D}'; = recruit_id recruit_id - ervu_dashboard punishment
@@ -198,6 +120,84 @@ where r.system_update_date >= '${UP_D}'; 304
+ + Table input + TableInput + + Y + + 1 + + none + + + ervu_person_registry + N + 0 + with ugol as +(select jsonb_array_elements(ri.info->'svedFL'->'svedSudim'->'sudim'->'osuzhdenie') u, + ri.recruit_id +from public.recruits_info ri + join public.recruits r ON r.id = ri.recruit_id +where jsonb_typeof(ri.info->'svedFL'->'svedSudim'->'sudim'->'osuzhdenie') = 'array' +AND r.system_update_date >= '${UP_D}' +) +select + r.id recruit_id, + u->>'naimSuda' authority_name, + u->>'srokNakaz' sentence, + u->>'adresNakaz' sentence_place, + u->>'kodVidNakaz' punishment_code, + u->>'izmSrokNakaz' sentence_changed, + u->>'naimVidNakaz' punishment_type, + to_date(u->>'dataNachSrok', 'YYYY-MM-DD') start_date, + to_date(u->>'dataOsvobozhd', 'YYYY-MM-DD') release_date, + to_date(u->>'dataOsuzhd', 'YYYY-MM-DD') sentense_date, + u->>'ugolovZakon' law_point, + u->>'osnovOsvobozhd' release_reason +from public.recruits r +join ugol on r.id = ugol.recruit_id + Y + + + 528 + 304 + + + + Table output + TableOutput + + Y + + 1 + + none + + + 1000 + ervu-dashboard + + + N + N + N + N + Y + N + ervu_dashboard + N + punishment
+ N + Y + N + Y + + + 752 + 176 + +
diff --git a/v1_apache-hop dash mapping/info_recruits/spouse.hpl b/v1_apache-hop dash mapping/info_recruits/spouse.hpl index a3a55dd..d89b565 100644 --- a/v1_apache-hop dash mapping/info_recruits/spouse.hpl +++ b/v1_apache-hop dash mapping/info_recruits/spouse.hpl @@ -54,13 +54,11 @@ = recruit_id recruit_id - = full_name full_name - ervu_dashboard citizen_spouse
@@ -198,20 +196,20 @@ 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 join public.recruits r ON r.id = ri.recruit_id AND r.system_update_date >= '${UP_D}' - 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 @@ -227,11 +225,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, @@ -240,8 +234,8 @@ SELECT information_excluded FROM public.recruits r JOIN suprug ON r.id = suprug.recruit_id -where -r.system_update_date >= '${UP_D}'; + + Y diff --git a/v1_apache-hop dash mapping/job_general.hwf b/v1_apache-hop dash mapping/job_general.hwf index 72b522f..eec9f18 100644 --- a/v1_apache-hop dash mapping/job_general.hwf +++ b/v1_apache-hop dash mapping/job_general.hwf @@ -164,21 +164,21 @@ job_info_recruits.hwf job_last_recording_date - N + Y N Y job_recruitments_all job_info_recruits.hwf - N + Y N Y job_recruitments_all job_last_recording_date - Y + N N Y diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/info_recruits_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/info_recruits_once.hpl index b17113c..0ddb984 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/info_recruits_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/info_recruits_once.hpl @@ -583,8 +583,19 @@ base_recruit_data AS ( 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 + ) AS number_children, + ri.info->'svedFL'->'svedBS'->'bs'->'mestoRozhd'->>'mestoRozhd' AS country_birth, -- страна, город, улица + (ri.info->'svedFL'->'svedBS'->'regMZHMVD'->'aktRegMZHMVD'->>'dataReg')::date AS start_date_residence, -- дата регистрации по месту жительства + -- '0' AS end_date_residence, -- дата снятия с регистрации + '0' AS address_place_stay, -- адрес регистрации по месту пребывания + '0' AS start_date_place_stay, -- дата регистрации по месту пребывания + '0' AS end_date_place_stay, -- дата снятия с регистрации по месту пребывания + '0' AS type_place_stay, -- тип регистрации + '0' AS address_actual, -- адрес фактического проживания, + '0' AS source_info_actual, -- источник сведений о месте фактического проживания + '0' AS date_info_actual, -- дата получения сведений об адресе фактического проживания + '0' AS date_loss_info_actual -- дата потери актуальных сведений об адресе фактического проживания FROM public.recruits AS r JOIN public.recruits_info AS ri ON ri.recruit_id = r.id JOIN public.military_registration_reason AS mrr ON r.registration_reasons::jsonb @> to_jsonb(mrr.code::text)