From 3059d6bf745a37e5eaa479e794f8ad9414b67a29 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Sun, 20 Apr 2025 11:37:08 +0300 Subject: [PATCH] +ERVU-414, ERVU-396 --- .../citizen_work_activity_once.hpl | 264 ++++++++++++++++++ .../jobs_once_a_day/disability_once.hpl | 191 +++++++++++-- .../jobs_once_a_day/disease_once.hpl | 99 +++++-- .../job_info_recruits_once.hwf | 23 +- .../medical_authorities_once.hpl | 191 ++++++++++--- 5 files changed, 691 insertions(+), 77 deletions(-) diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/citizen_work_activity_once.hpl b/v1_apache-hop dash mapping/jobs_once_a_day/citizen_work_activity_once.hpl index 07baeea..a992ab9 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/citizen_work_activity_once.hpl +++ b/v1_apache-hop dash mapping/jobs_once_a_day/citizen_work_activity_once.hpl @@ -20,7 +20,271 @@ + + Table input + Table output + Y + + + Table output + Update + Y + + + Table input + TableInput + + Y + + 1 + + none + + + ervu_person_registry + N + 0 + WITH trud_info AS ( + SELECT + ri.info, + ri.recruit_id::uuid, + case when ri.info->'svedFL'->'svedTrud'->'trudDeyat' IS NULL THEN NULL + WHEN jsonb_typeof(ri.info->'svedFL'->'svedTrud'->'trudDeyat') = 'array' THEN + (ri.info->'svedFL'->'svedTrud'->'trudDeyat'->0) end as trud_deyat, + case when ri.info->'svedFL'->'svedTrud'->'trudDeyat' IS NULL THEN NULL + WHEN jsonb_typeof(ri.info->'svedFL'->'svedTrud'->'trudDeyat'->0->'svedUhodReb') = 'array' + then ri.info->'svedFL'->'svedTrud'->'trudDeyat'->0->'svedUhodReb'->0 end AS parental_leave_info, + coalesce( + ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'aktRabotodat', + ri.info->'svedFL'->'svedRabotodat'->'rabotodat'->'predRabotodat' + ) AS employer, + (CASE + WHEN info->'svedFL'->'svedRegIP'->'regIP' IS NULL THEN NULL + WHEN jsonb_typeof(info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP') = 'array' THEN + (info->'svedFL'->'svedRegIP'->'regIP'->'aktRegIP'->0) + ELSE + info->'svedFL'->'svedRegIP'->'regIP'->'predRegIP' + END) AS reg_ip, + COALESCE( + ri.info->'svedFL'->'svedNPD'->'npd'->'aktNPD', + ri.info->'svedFL'->'svedNPD'->'npd'->'predNPD' + ) AS self_employment + FROM public.recruits_info ri + join public.recruits r + ON r.id = ri.recruit_id + AND (r.target_recruitment_id= '${RCRT_C}' or r.current_recruitment_id = '${RCRT_C}') +) +SELECT + ti.recruit_id::uuid, + (ti.trud_deyat->>'dataMeropr')::date AS personnel_event_date, + ti.trud_deyat->>'naimTipKadrMeropr' AS personnel_event_type, + case when ti.trud_deyat->>'prAktMestRab' = '1' then true else false end AS current_workplace, + ti.trud_deyat->>'trudFunkcziya' AS position, + ti.trud_deyat->'svedOrg'->>'naimOrg' AS employer_name, + ti.employer->'svedYUL'->>'kpp' AS employer_kpp, + CASE + WHEN ti.employer->>'svedYUL' != 'null' THEN 'Юридическое лицо' + WHEN ti.employer->>'svedIP' != 'null' THEN 'Индивидуальный предприниматель' + END AS employer_category, + COALESCE( + ti.employer->'svedYUL'->>'innyul', + ti.employer->'svedIP'->>'innyfl' + ) AS employer_inn, + ti.employer->'svedYUL'->'svedOPK'->>'region' AS employer_address, + COALESCE( + ti.employer->'svedIP'->>'ogrnip', + ti.employer->'svedYUL'->'extend'->>'ogrn' + ) AS employer_ogrnip, + ti.employer->'extend'->>'tipPodrazdRabotodat' as employer_unit_type, + ti.employer->'extend'->>'adresPodrazdRabotodat' as employer_unit_address, + (ti.parental_leave_info->>'dataNachUhodReb')::date as parental_leave_start_date, + (ti.parental_leave_info->>'dataKonUhodReb')::date as parental_leave_end_date, + case when (ti.parental_leave_info->>'dataNachUhodReb')::date <= current_date + and ((ti.parental_leave_info->>'dataKonUhodReb')::date is null + or (ti.parental_leave_info->>'dataKonUhodReb')::date > current_date) + then true + else false end as parental_leave_active, + (ti.reg_ip->>'dataRegIP')::date as reg_ip_date, + (ti.reg_ip->>'dataINNNed')::date as dereg_ip_date, + ti.reg_ip->>'ogrnip' as ogrnip_ip, + case when ti.reg_ip != 'null' + then true else false end as active_ip, + ti.self_employment->>'dataUchNPD' as reg_self_employment_date, + ti.self_employment->>'dataSnUchNPD' as dereg_self_employment_date, + case when ti.self_employment != 'null' + then true else false end as active_self_employment +FROM trud_info ti + + Y + + + 0 + 0 + + + + Table output + TableOutput + + Y + + 1 + + none + + + 1000 + ervu-dashboard + + + recruit_id + recruit_id + + + employer_category + employer_category + + + organization_name + employer_name + + + inn + employer_inn + + + ogrn + employer_ogrnip + + + kpp + employer_kpp + + + organization_address + employer_address + + + type_separate_division + employer_unit_type + + + address_separate_division + employer_unit_address + + + type_hr_event + personnel_event_type + + + date_hr_event + personnel_event_date + + + job_title + position + + + start_date_parental_leave + parental_leave_start_date + + + end_date_parental_leave + parental_leave_end_date + + + ogrn_ip + ogrnip_ip + + + date_reg_ip + reg_ip_date + + + date_dereg_ip + dereg_ip_date + + + date_reg_self + reg_self_employment_date + + + date_dereg_self + dereg_self_employment_date + + + N + N + N + N + + Y + + N + ervu_dashboard + Y + citizen_work_activity
+ + N + Y + N + Y + + + 144 + 0 + +
+ + Update + Update + + Y + + 1 + + none + + + 1000 + ervu-dashboard + Y + + + + = + recruit_id + recruit_id + + + ervu_dashboard + citizen
+ + employed + current_workplace + + + active_reg_ip + active_ip + + + active_parental_leave + parental_leave_active + + + self_employed + active_self_employment + +
+ N + Y + + + 320 + 0 + +
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 96bc428..7138007 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 @@ -30,6 +30,16 @@ Table output 2 Y + + Table output 2 + Update 2 + Y + + + Table output + Update + Y + Table input @@ -45,21 +55,24 @@ ervu_person_registry N 0 - select - r.id recruit_id, - 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->'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 + select + recruit_id, + 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->'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_info ri -join public.recruits r ON r.id = ri.recruit_id AND (r.target_recruitment_id= '${RCRT_C}' or r.current_recruitment_id = '${RCRT_C}') -where ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa' is not null; + join public.recruits r + ON r.id = ri.recruit_id + AND (r.target_recruitment_id = '${RCRT_C}' or + r.current_recruitment_id = '${RCRT_C}') +where ri.info->'svedFL'->'svedInvalid'->>'invalid' != 'null'; Y @@ -81,14 +94,19 @@ where ri.info->'svedFL'->'svedInvalid'->'invalid'->>'gruppa' is not null; ervu_person_registry N 0 - select - r.id recruit_id, - ri.info->'svedNedeesp'->'nedeesposob'->>'naimSud' organization_name, - to_date(ri.info->'svedNedeesp'->'nedeesposob'->>'dataPrisv', 'YYYY-MM-DD') start_date, - to_date(ri.info->'svedNedeesp'->'nedeesposob'->>'dataOtmeny', 'YYYY-MM-DD') close_date + select + recruit_id, + ri.info->'svedNedeesp'->'nedeesposob'->>'naimOrg' organization_name, + to_date(ri.info->'svedNedeesp'->'nedeesposob'->>'dataPrisv', 'YYYY-MM-DD') start_date, + to_date(ri.info->'svedNedeesp'->'nedeesposob'->>'dataOtmeny', 'YYYY-MM-DD') close_date, + false disability, + true is_incompetent from public.recruits_info ri -join public.recruits r ON r.id = ri.recruit_id AND (r.target_recruitment_id= '${RCRT_C}' or r.current_recruitment_id = '${RCRT_C}') -where ri.info->'svedNedeesp'->'nedeesposob'->>'naimSud' is not null; + join public.recruits r + ON r.id = ri.recruit_id + AND (r.target_recruitment_id = '${RCRT_C}' or + r.current_recruitment_id = '${RCRT_C}') +where ri.info->'svedNedeesp'->>'nedeesposob' != 'null'; Y @@ -110,16 +128,47 @@ where ri.info->'svedNedeesp'->'nedeesposob'->>'naimSud' is not null; 1000 ervu-dashboard - + + recruit_id + recruit_id + + + disability_group + disability_group + + + organization_name + organization_name + + + start_date + start_date + + + close_date + close_date + + + confirmation_date + confirmation_date + + + disability + disability + + N N N N + Y + N ervu_dashboard - N + Y disability
+ N Y N @@ -144,7 +193,27 @@ where ri.info->'svedNedeesp'->'nedeesposob'->>'naimSud' is not null; 1000 ervu-dashboard - + + recruit_id + recruit_id + + + organization_name + organization_name + + + start_date + start_date + + + close_date + close_date + + + disability + disability + + N N N @@ -152,7 +221,7 @@ where ri.info->'svedNedeesp'->'nedeesposob'->>'naimSud' is not null; Y N ervu_dashboard - N + Y disability
N Y @@ -164,6 +233,78 @@ where ri.info->'svedNedeesp'->'nedeesposob'->>'naimSud' is not null; 304
+ + Update + Update + + Y + + 1 + + none + + + 1000 + ervu-dashboard + Y + + + = + recruit_id + recruit_id + + ervu_dashboard + citizen
+ + has_disability + disability + +
+ N + Y + + + 576 + 208 + +
+ + Update 2 + Update + + Y + + 1 + + none + + + 1000 + ervu-dashboard + Y + + + + = + recruit_id + recruit_id + + + ervu_dashboard + citizen
+ + is_incompetent + is_incompetent + +
+ N + Y + + + 576 + 304 + +
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 3349254..9ab97af 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 @@ -25,6 +25,11 @@ Table output Y + + Table output + Update + Y + Table input @@ -40,21 +45,28 @@ ervu_person_registry N 0 - with zdorov as -(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.target_recruitment_id= '${RCRT_C}' or r.current_recruitment_id = '${RCRT_C}') -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 -from public.recruits r -join zdorov on r.id = zdorov.recruit_id; + with zdorov as (select ri.recruit_id, + jsonb_array_elements( + ri.info -> 'svedFL' -> 'svedSostZdorov' -> 'svedZdorov' -> + 'sostZdorov') z, + case + when ri.info -> 'svedFL' -> 'svedSostZdorov' -> 'svedZdorov' ->> + 'priznakNalichSved' = '1' + then true + else false end as has_disease + from public.recruits_info ri + join public.recruits r + ON r.id = ri.recruit_id + AND (r.target_recruitment_id = '${RCRT_C}' or + r.current_recruitment_id = '${RCRT_C}') + where jsonb_typeof(ri.info -> 'svedFL' -> 'svedSostZdorov' -> 'svedZdorov' -> + 'sostZdorov') = 'array') +select recruit_id, + z ->> 'kodZabol' code, + z ->> 'naimZabol' name, + has_disease, + to_date(z ->> 'dataDiagn', 'YYYY-MM-DD') reg_date +from zdorov; Y @@ -76,7 +88,23 @@ join zdorov on r.id = zdorov.recruit_id; 1000 ervu-dashboard - + + recruit_id + recruit_id + + + code + code + + + name + name + + + reg_date + reg_date + + N N N @@ -84,7 +112,7 @@ join zdorov on r.id = zdorov.recruit_id; Y N ervu_dashboard - N + Y disease
N Y @@ -96,6 +124,43 @@ join zdorov on r.id = zdorov.recruit_id; 208
+ + Update + Update + + Y + + 1 + + none + + + 1000 + ervu-dashboard + Y + + + + = + recruit_id + recruit_id + + + ervu_dashboard + citizen
+ + has_disease + has_disease + +
+ N + Y + + + 592 + 208 + +
diff --git a/v1_apache-hop dash mapping/jobs_once_a_day/job_info_recruits_once.hwf b/v1_apache-hop dash mapping/jobs_once_a_day/job_info_recruits_once.hwf index fe7f747..a69c6a4 100644 --- a/v1_apache-hop dash mapping/jobs_once_a_day/job_info_recruits_once.hwf +++ b/v1_apache-hop dash mapping/jobs_once_a_day/job_info_recruits_once.hwf @@ -1183,11 +1183,14 @@ N Y ${PROJECT_HOME}/jobs_once_a_day/citizen_education_diplomas_received_once.hpl + + Basic RCRT_C RECRUITMENT_CITIZEN + Y @@ -1209,15 +1212,22 @@ N N N - Y + N N - N + Y ${PROJECT_HOME}/jobs_once_a_day/citizen_work_activity_once.hpl + + Basic + + RCRT_C + RECRUITMENT_CITIZEN + + Y - N + Y local N N @@ -2097,6 +2107,13 @@ Y Y + + recruitment_rows.hpl + SQL.citizen_work_activity + Y + Y + N + 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 fd02821..8c28b03 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 @@ -30,6 +30,16 @@ Table output 2 Y + + Table output + Update + Y + + + Table output 2 + Update 2 + Y + Table input 2 @@ -46,20 +56,24 @@ N 0 with uchet as -(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.target_recruitment_id= '${RCRT_C}' or r.current_recruitment_id = '${RCRT_C}') -where jsonb_typeof(ri.info->'svedFL'->'svedPND'->'svedUchetDisp'->'svedUchet') = 'array' -) -select - r.id recruit_id, - u->>'dataPostUchet' start_date, - u->>'dataSnyatUchet' close_date, - u->>'dataPlan' change_date -from public.recruits r -join uchet on r.id = uchet.recruit_id; + (select ri.recruit_id, + jsonb_array_elements(ri.info -> 'svedFL' -> 'svedPND' -> 'svedUchetDisp' -> + 'svedUchet') u, + ri.info -> 'svedFL' -> 'svedPND' -> 'svedUchetDisp' -> 'svedUchet' ->> + 'priznakNalichSved' = '1' as registered_in_pnd + from public.recruits_info ri + join public.recruits r + ON r.id = ri.recruit_id + AND (r.target_recruitment_id = '${RCRT_C}' or + r.current_recruitment_id = '${RCRT_C}') + where jsonb_typeof(ri.info -> 'svedFL' -> 'svedPND' -> 'svedUchetDisp' -> 'svedUchet') = + 'array') +select recruit_id, + u ->> 'dataPostUchet' start_date, + u ->> 'dataSnyatUchet' close_date, + u ->> 'dataPlan' change_date, + registered_in_pnd +from uchet; Y @@ -82,20 +96,21 @@ join uchet on r.id = uchet.recruit_id; N 0 with uchet as -(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.target_recruitment_id= '${RCRT_C}' or r.current_recruitment_id = '${RCRT_C}') -where jsonb_typeof(ri.info->'svedFL'->'svedUchetVICH'->'uchetVICH') = 'array' -) -select - r.id recruit_id, - to_date(u->>'dataPostUchet', 'YYYY-MM-DD') start_date, - to_date(u->>'dataSnyat', 'YYYY-MM-DD') close_date, - true HIV -from public.recruits r -join uchet on r.id = uchet.recruit_id; + (select ri.recruit_id, + jsonb_array_elements(ri.info->'svedFL'->'svedUchetVICH'->'uchetVICH') u, + ri.info->'svedFL'->'svedUchetVICH'->>'priznakNalichSved' = '1' has_vich + from public.recruits_info ri + join public.recruits r + ON r.id = ri.recruit_id + AND (r.target_recruitment_id = '${RCRT_C}' or + r.current_recruitment_id = '${RCRT_C}') + where jsonb_typeof(ri.info->'svedFL'->'svedUchetVICH'->'uchetVICH') = 'array') +select + recruit_id, + to_date(u->>'dataPostUchet', 'YYYY-MM-DD') start_date, + to_date(u->>'dataSnyat', 'YYYY-MM-DD') close_date, + true HIV +from uchet; Y @@ -117,16 +132,35 @@ join uchet on r.id = uchet.recruit_id; 1000 ervu-dashboard - + + recruit_id + recruit_id + + + start_date + start_date + + + close_date + close_date + + + hiv + has_vich + + N N N N + Y + N ervu_dashboard - N + Y medical_authorities
+ N Y N @@ -151,16 +185,35 @@ join uchet on r.id = uchet.recruit_id; 1000 ervu-dashboard - + + recruit_id + recruit_id + + + start_date + start_date + + + close_date + close_date + + + change_date + change_date + + N N N N + Y + N ervu_dashboard - N + Y medical_authorities
+ N Y N @@ -171,6 +224,80 @@ join uchet on r.id = uchet.recruit_id; 352
+ + Update + Update + + Y + + 1 + + none + + + 1000 + ervu-dashboard + Y + + + + = + recruit_id + recruit_id + + + ervu_dashboard + citizen
+ + has_vich + has_vich + +
+ N + Y + + + 576 + 208 + +
+ + Update 2 + Update + + Y + + 1 + + none + + + 1000 + ervu-dashboard + Y + + + + = + recruit_id + recruit_id + + + ervu_dashboard + citizen
+ + registered_in_pnd + registered_in_pnd + +
+ N + Y + + + 576 + 352 + +