ERVU-504: Красота

This commit is contained in:
adel.ka 2025-08-25 09:55:37 +03:00
parent 1dffb4a7ce
commit 7d2be2ccd8
9 changed files with 36 additions and 335 deletions

View file

@ -333,8 +333,8 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
<execute_each_row>N</execute_each_row>
<limit/>
<sql>SELECT
ri.recruit_id::uuid AS recruit_id,
ch->>'id' AS child_external_id,
ri.recruit_id AS recruit_id,
(ch->>'id')::uuid AS child_external_id,
NULLIF(ch->>'idERN', '') AS child_id_ern,
CASE NULLIF(ch->>'rodstvSvyazReb', '')::int
WHEN 1 THEN 3

View file

@ -429,8 +429,8 @@ and recruitment_id = '${IDM_ID}';</sql>
<execute_each_row>N</execute_each_row>
<limit/>
<sql>SELECT
ri.recruit_id::uuid AS recruit_id,
ch->>'id' AS child_external_id,
ri.recruit_id AS recruit_id,
(ch->>'id')::uuid AS child_external_id,
NULLIF(ch->>'idERN', '') AS child_id_ern,
CASE NULLIF(ch->>'rodstvSvyazReb', '')::int
WHEN 1 THEN 3

View file

@ -445,8 +445,8 @@ DO UPDATE SET
<execute_each_row>N</execute_each_row>
<limit/>
<sql>SELECT
ri.recruit_id::uuid AS recruit_id,
ch->>'id' AS child_external_id,
ri.recruit_id AS recruit_id,
(ch->>'id')::uuid AS child_external_id,
NULLIF(ch->>'idERN', '') AS child_id_ern,
CASE NULLIF(ch->>'rodstvSvyazReb', '')::int
WHEN 1 THEN 3

View file

@ -168,41 +168,6 @@ and recruitment_id = '${IDM_ID}';
<yloc>320</yloc>
</GUI>
</transform>
<transform>
<name>Change job status on error 2</name>
<type>ExecSql</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<arguments>
<argument>
<name>error_description</name>
</argument>
</arguments>
<connection>ervu-dashboard</connection>
<execute_each_row>Y</execute_each_row>
<quoteString>N</quoteString>
<replace_variables>Y</replace_variables>
<set_params>Y</set_params>
<single_statement>N</single_statement>
<sql>UPDATE etl.job_execution
SET status = 'ERROR',
error_description = ?
WHERE job_name = '${JOB_NAME}'
and recruitment_id = '${IDM_ID}';
</sql>
<attributes/>
<GUI>
<xloc>1120</xloc>
<yloc>976</yloc>
</GUI>
</transform>
<transform>
<name>Change job status on success 2</name>
<type>ExecSql</type>
@ -264,35 +229,6 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
<yloc>320</yloc>
</GUI>
</transform>
<transform>
<name>Create job execution record 2</name>
<type>ExecSql</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<arguments>
</arguments>
<connection>ervu-dashboard</connection>
<execute_each_row>N</execute_each_row>
<quoteString>N</quoteString>
<replace_variables>Y</replace_variables>
<set_params>N</set_params>
<single_statement>N</single_statement>
<sql>INSERT INTO etl.job_execution (id, job_name, status, execution_datetime, error_description, recruitment_id)
VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
</sql>
<attributes/>
<GUI>
<xloc>368</xloc>
<yloc>976</yloc>
</GUI>
</transform>
<transform>
<name>Detect empty stream</name>
<type>DetectEmptyStream</type>
@ -409,8 +345,8 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
<execute_each_row>N</execute_each_row>
<limit/>
<sql>SELECT
r.recruit_id AS recruit_id,
ch->>'id' AS guardianship_external_id,
ri.recruit_id AS recruit_id,
(ch->>'id')::uuid AS guardianship_external_id,
NULLIF(ch->>'idERN', '') AS guardian_id_ern,
ch->'fioOpek'->>'familiya' AS last_name,
ch->'fioOpek'->>'imya' AS first_name,
@ -426,14 +362,14 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
NULLIF(ch->'dataRozhdDok'->>'den', '')::int
) AS birth_date,
ch->>'snils' AS snils
FROM ervu_dashboard.citizen r
JOIN ervu_dashboard.recruits_info ri ON ri.recruit_id = r.recruit_id
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen c ON c.recruit_id = ri.recruit_id
CROSS JOIN LATERAL jsonb_array_elements(ri.info->'svedFL'->'svedOpekun'->'svedSoczPod') AS ch
WHERE
'${IDM_ID}' != ''
AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}'
AND jsonb_typeof(ri.info->'svedFL'->'svedOpekun'->'svedSoczPod') = 'array'
AND'${M_R_CR_DATE}'::timestamp >= c.recruit_create_date;</sql>
AND '${M_R_CR_DATE}'::timestamp >= c.recruit_create_date;</sql>
<variables_active>Y</variables_active>
<attributes/>
<GUI>
@ -441,106 +377,6 @@ WHERE
<yloc>320</yloc>
</GUI>
</transform>
<transform>
<name>Table input 2</name>
<type>TableInput</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<connection>ervu-dashboard</connection>
<execute_each_row>N</execute_each_row>
<limit>10</limit>
<sql>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 ri.info -> 'svedFL' -> 'svedRegIP' -> 'regIP' IS NULL THEN NULL
WHEN jsonb_typeof(ri.info -> 'svedFL' -> 'svedRegIP' -> 'regIP' -> 'aktRegIP') = 'array'
THEN
ri.info -> 'svedFL' -> 'svedRegIP' -> 'regIP' -> 'aktRegIP' -> 0
ELSE
ri.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 ervu_dashboard.recruits_info ri
)
SELECT ti.recruit_id::uuid,
(ti.trud_deyat ->> 'dataMeropr')::date AS personnel_event_date,
ti.trud_deyat ->> 'naimTipKadrMeropr' AS personnel_event_type,
(ti.trud_deyat ->> 'prAktMestRab' = '1') 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' IS NOT NULL THEN 'Юридическое лицо'
WHEN ti.employer->'svedIP' IS NOT 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,
(
(ti.parental_leave_info ->> 'dataNachUhodReb')::date &lt;= current_date AND
(
(ti.parental_leave_info ->> 'dataKonUhodReb') IS NULL OR
(ti.parental_leave_info ->> 'dataKonUhodReb')::date > current_date
)
) 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,
ti.reg_ip IS NOT NULL AS active_ip,
ti.self_employment ->> 'dataUchNPD' AS reg_self_employment_date,
ti.self_employment ->> 'dataSnUchNPD' AS dereg_self_employment_date,
ti.self_employment IS NOT NULL AS active_self_employment
FROM trud_info ti;
</sql>
<variables_active>Y</variables_active>
<attributes/>
<GUI>
<xloc>576</xloc>
<yloc>976</yloc>
</GUI>
</transform>
<transform>
<name>Table output</name>
<type>TableOutput</type>
@ -611,128 +447,6 @@ FROM trud_info ti;
<yloc>320</yloc>
</GUI>
</transform>
<transform>
<name>Table output 2</name>
<type>TableOutput</type>
<description/>
<distribute>N</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<commit>1000</commit>
<connection>ervu-dashboard</connection>
<fields>
<field>
<column_name>recruit_id</column_name>
<stream_name>recruit_id</stream_name>
</field>
<field>
<column_name>personnel_event_date</column_name>
<stream_name>personnel_event_date</stream_name>
</field>
<field>
<column_name>personnel_event_type</column_name>
<stream_name>personnel_event_type</stream_name>
</field>
<field>
<column_name>position</column_name>
<stream_name>position</stream_name>
</field>
<field>
<column_name>employer_name</column_name>
<stream_name>employer_name</stream_name>
</field>
<field>
<column_name>employer_kpp</column_name>
<stream_name>employer_kpp</stream_name>
</field>
<field>
<column_name>employer_category</column_name>
<stream_name>employer_category</stream_name>
</field>
<field>
<column_name>employer_inn</column_name>
<stream_name>employer_inn</stream_name>
</field>
<field>
<column_name>employer_address</column_name>
<stream_name>employer_address</stream_name>
</field>
<field>
<column_name>employer_ogrnip</column_name>
<stream_name>employer_ogrnip</stream_name>
</field>
<field>
<column_name>employer_unit_type</column_name>
<stream_name>employer_unit_type</stream_name>
</field>
<field>
<column_name>employer_unit_address</column_name>
<stream_name>employer_unit_address</stream_name>
</field>
<field>
<column_name>parental_leave_start_date</column_name>
<stream_name>parental_leave_start_date</stream_name>
</field>
<field>
<column_name>parental_leave_end_date</column_name>
<stream_name>parental_leave_end_date</stream_name>
</field>
<field>
<column_name>parental_leave_active</column_name>
<stream_name>parental_leave_active</stream_name>
</field>
<field>
<column_name>reg_ip_date</column_name>
<stream_name>reg_ip_date</stream_name>
</field>
<field>
<column_name>dereg_ip_date</column_name>
<stream_name>dereg_ip_date</stream_name>
</field>
<field>
<column_name>ogrnip_ip</column_name>
<stream_name>ogrnip_ip</stream_name>
</field>
<field>
<column_name>active_ip</column_name>
<stream_name>active_ip</stream_name>
</field>
<field>
<column_name>reg_self_employment_date</column_name>
<stream_name>reg_self_employment_date</stream_name>
</field>
<field>
<column_name>dereg_self_employment_date</column_name>
<stream_name>dereg_self_employment_date</stream_name>
</field>
<field>
<column_name>active_self_employment</column_name>
<stream_name>active_self_employment</stream_name>
</field>
</fields>
<ignore_errors>N</ignore_errors>
<only_when_have_rows>N</only_when_have_rows>
<partitioning_daily>N</partitioning_daily>
<partitioning_enabled>N</partitioning_enabled>
<partitioning_monthly>Y</partitioning_monthly>
<return_keys>N</return_keys>
<schema>ervu_dashboard</schema>
<specify_fields>Y</specify_fields>
<table>citizen_work_activity</table>
<tablename_in_field>N</tablename_in_field>
<tablename_in_table>Y</tablename_in_table>
<truncate>N</truncate>
<use_batch>Y</use_batch>
<attributes/>
<GUI>
<xloc>800</xloc>
<yloc>976</yloc>
</GUI>
</transform>
<transform>
<name>Update</name>
<type>Update</type>
@ -781,18 +495,6 @@ FROM trud_info ti;
<max_pct_errors/>
<min_pct_rows/>
</error>
<error>
<source_transform>Table output 2</source_transform>
<target_transform>Change job status on error 2</target_transform>
<is_enabled>Y</is_enabled>
<nr_valuename/>
<descriptions_valuename>error_description</descriptions_valuename>
<fields_valuename/>
<codes_valuename>error_code</codes_valuename>
<max_errors/>
<max_pct_errors/>
<min_pct_rows/>
</error>
<error>
<source_transform>Update</source_transform>
<target_transform>Change job status on error</target_transform>

View file

@ -429,8 +429,8 @@ and recruitment_id = '${IDM_ID}';</sql>
<execute_each_row>N</execute_each_row>
<limit/>
<sql>SELECT
r.recruit_id AS recruit_id,
ch->>'id' AS guardianship_external_id,
ri.recruit_id AS recruit_id,
(ch->>'id')::uuid AS guardianship_external_id,
NULLIF(ch->>'idERN', '') AS guardian_id_ern,
ch->'fioOpek'->>'familiya' AS last_name,
ch->'fioOpek'->>'imya' AS first_name,
@ -446,14 +446,14 @@ and recruitment_id = '${IDM_ID}';</sql>
NULLIF(ch->'dataRozhdDok'->>'den', '')::int
) AS birth_date,
ch->>'snils' AS snils
FROM ervu_dashboard.citizen r
JOIN ervu_dashboard.recruits_info ri ON ri.recruit_id = r.recruit_id
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen c ON c.recruit_id = ri.recruit_id
CROSS JOIN LATERAL jsonb_array_elements(ri.info->'svedFL'->'svedOpekun'->'svedSoczPod') AS ch
WHERE
'${IDM_ID}' != ''
AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}'
AND jsonb_typeof(ri.info->'svedFL'->'svedOpekun'->'svedSoczPod') = 'array'
AND'${M_R_CR_DATE}'::timestamp >= c.recruit_create_date
AND '${M_R_CR_DATE}'::timestamp >= c.recruit_create_date
AND c.update_date >= '${M_R_UP_DATE}'::timestamp;</sql>
<variables_active>Y</variables_active>
<attributes/>

View file

@ -445,8 +445,8 @@ DO UPDATE SET
<execute_each_row>N</execute_each_row>
<limit/>
<sql>SELECT
r.recruit_id AS recruit_id,
ch->>'id' AS guardianship_external_id,
ri.recruit_id AS recruit_id,
(ch->>'id')::uuid AS guardianship_external_id,
NULLIF(ch->>'idERN', '') AS guardian_id_ern,
ch->'fioOpek'->>'familiya' AS last_name,
ch->'fioOpek'->>'imya' AS first_name,
@ -462,14 +462,14 @@ DO UPDATE SET
NULLIF(ch->'dataRozhdDok'->>'den', '')::int
) AS birth_date,
ch->>'snils' AS snils
FROM ervu_dashboard.citizen r
JOIN ervu_dashboard.recruits_info ri ON ri.recruit_id = r.recruit_id
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen c ON c.recruit_id = ri.recruit_id
CROSS JOIN LATERAL jsonb_array_elements(ri.info->'svedFL'->'svedOpekun'->'svedSoczPod') AS ch
WHERE
'${IDM_ID}' != ''
AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}'
AND jsonb_typeof(ri.info->'svedFL'->'svedOpekun'->'svedSoczPod') = 'array'
AND'${M_R_CR_DATE}'::timestamp >= c.recruit_create_date;</sql>
AND '${M_R_CR_DATE}'::timestamp >= c.recruit_create_date;</sql>
<variables_active>Y</variables_active>
<attributes/>
<GUI>

View file

@ -268,8 +268,8 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
<execute_each_row>N</execute_each_row>
<limit/>
<sql>SELECT
r.recruit_id,
supr->>'id' AS spouse_external_id,
ri.recruit_id AS recruit_id,
(supr->>'id')::uuid AS spouse_external_id,
NULLIF(supr->>'idERN', '') AS spouse_id_ern,
NULLIF(supr->>'rodstvSvyazSuprug', '')::int AS kinship_type,
supr->'svedFLBS'->'fio'->>'familiya' AS last_name,
@ -295,8 +295,8 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
WHEN ri.info->'svedFL'->'svedSemPolozh'->>'svedSuprIskl' = '1' THEN true
ELSE false
END AS information_excluded
FROM ervu_dashboard.citizen r
JOIN ervu_dashboard.recruits_info ri ON ri.recruit_id = r.recruit_id
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen r ON r.recruit_id = ri.recruit_id
CROSS JOIN LATERAL (
SELECT supri
FROM jsonb_array_elements(ri.info->'svedFL'->'svedSemPolozh'->'suprugi') AS supri
@ -305,8 +305,7 @@ CROSS JOIN LATERAL (
WHERE
'${IDM_ID}' != ''
AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}'
AND'${M_R_CR_DATE}'::timestamp >= c.recruit_create_date;
</sql>
AND '${M_R_CR_DATE}'::timestamp >= r.recruit_create_date;</sql>
<variables_active>Y</variables_active>
<attributes/>
<GUI>

View file

@ -387,8 +387,8 @@ and recruitment_id = '${IDM_ID}';</sql>
<execute_each_row>N</execute_each_row>
<limit/>
<sql>SELECT
r.recruit_id,
supr->>'id' AS spouse_external_id,
ri.recruit_id AS recruit_id,
(supr->>'id')::uuid AS spouse_external_id,
NULLIF(supr->>'idERN', '') AS spouse_id_ern,
NULLIF(supr->>'rodstvSvyazSuprug', '')::int AS kinship_type,
supr->'svedFLBS'->'fio'->>'familiya' AS last_name,
@ -414,8 +414,8 @@ and recruitment_id = '${IDM_ID}';</sql>
WHEN ri.info->'svedFL'->'svedSemPolozh'->>'svedSuprIskl' = '1' THEN true
ELSE false
END AS information_excluded
FROM ervu_dashboard.citizen r
JOIN ervu_dashboard.recruits_info ri ON ri.recruit_id = r.recruit_id
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen r ON r.recruit_id = ri.recruit_id
CROSS JOIN LATERAL (
SELECT supri
FROM jsonb_array_elements(ri.info->'svedFL'->'svedSemPolozh'->'suprugi') AS supri
@ -424,7 +424,7 @@ CROSS JOIN LATERAL (
WHERE
'${IDM_ID}' != ''
AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}'
AND'${M_R_CR_DATE}'::timestamp >= c.recruit_create_date
AND '${M_R_CR_DATE}'::timestamp >= r.recruit_create_date
AND c.update_date >= '${M_R_UP_DATE}'::timestamp;
</sql>
<variables_active>Y</variables_active>

View file

@ -404,8 +404,8 @@ DO UPDATE SET
<execute_each_row>N</execute_each_row>
<limit/>
<sql>SELECT
r.recruit_id,
supr->>'id' AS spouse_external_id,
ri.recruit_id AS recruit_id,
(supr->>'id')::uuid AS spouse_external_id,
NULLIF(supr->>'idERN', '') AS spouse_id_ern,
NULLIF(supr->>'rodstvSvyazSuprug', '')::int AS kinship_type,
supr->'svedFLBS'->'fio'->>'familiya' AS last_name,
@ -431,8 +431,8 @@ DO UPDATE SET
WHEN ri.info->'svedFL'->'svedSemPolozh'->>'svedSuprIskl' = '1' THEN true
ELSE false
END AS information_excluded
FROM ervu_dashboard.citizen r
JOIN ervu_dashboard.recruits_info ri ON ri.recruit_id = r.recruit_id
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen r ON r.recruit_id = ri.recruit_id
CROSS JOIN LATERAL (
SELECT supri
FROM jsonb_array_elements(ri.info->'svedFL'->'svedSemPolozh'->'suprugi') AS supri
@ -441,7 +441,7 @@ CROSS JOIN LATERAL (
WHERE
'${IDM_ID}' != ''
AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}'
AND'${M_R_CR_DATE}'::timestamp >= c.recruit_create_date;</sql>
AND '${M_R_CR_DATE}'::timestamp >= r.recruit_create_date;</sql>
<variables_active>Y</variables_active>
<attributes/>
<GUI>