drivers_licence fix

This commit is contained in:
adel.ka 2025-11-10 14:50:22 +03:00
parent 2e28e88dae
commit f51a4d9ec8
4 changed files with 1141 additions and 774 deletions

View file

@ -116,7 +116,7 @@
<set_logfile>N</set_logfile>
<wait_until_finished>Y</wait_until_finished>
<parallel>N</parallel>
<xloc>1072</xloc>
<xloc>1040</xloc>
<yloc>608</yloc>
<attributes_hac/>
</action>
@ -228,7 +228,6 @@
</field>
</fields>
<file_variable_type>CURRENT_WORKFLOW</file_variable_type>
<filename/>
<replacevars>N</replacevars>
<parallel>N</parallel>
<xloc>240</xloc>

View file

@ -21,63 +21,68 @@
</notepads>
<order>
<hop>
<from>Create job execution record</from>
<to>Table input</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Filter rows</from>
<to>Change job status on success</to>
<from>driver_lisence_job_create</from>
<to>drivers_licence_input</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Detect empty stream</from>
<to>Change job status on success</to>
<to>driver_licence_success_job</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Change job status on error</from>
<from>driver_license_failure_job</from>
<to>Abort</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Table output</from>
<to>Change job status on error</to>
<from>drivers_licence_output</from>
<to>driver_license_failure_job</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Update</from>
<to>Change job status on error</to>
<from>update_drivers_licence_flags</from>
<to>driver_license_failure_job</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Table output</from>
<to>sort_by_recruit_id</to>
<from>drivers_licence_input</from>
<to>drivers_licence_output</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Update</from>
<from>drivers_licence_input</from>
<to>Detect empty stream</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>drivers_licence_input</from>
<to>driver_licence_group_by_recruit_id</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>driver_licence_group_by_recruit_id</from>
<to>driver_licence_java_expression</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>driver_licence_java_expression</from>
<to>update_drivers_licence_flags</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>drivers_licence_output</from>
<to>Identify last row in a stream </to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Identify last row in a stream </from>
<to>Filter rows</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>sort_by_recruit_id</from>
<to>Identify last row in a stream 2</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Identify last row in a stream 2</from>
<to>Update</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Table input</from>
<to>Table output</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Table input</from>
<to>Detect empty stream</to>
<from>Filter rows</from>
<to>driver_licence_success_job</to>
<enabled>Y</enabled>
</hop>
</order>
@ -97,12 +102,12 @@
<row_threshold>0</row_threshold>
<attributes/>
<GUI>
<xloc>1456</xloc>
<yloc>496</yloc>
<xloc>1632</xloc>
<yloc>512</yloc>
</GUI>
</transform>
<transform>
<name>Change job status on error</name>
<name>driver_license_failure_job</name>
<type>ExecSql</type>
<description/>
<distribute>Y</distribute>
@ -118,8 +123,11 @@
</argument>
</arguments>
<connection>ervu-dashboard</connection>
<delete_field/>
<execute_each_row>Y</execute_each_row>
<insert_field/>
<quoteString>N</quoteString>
<read_field/>
<replace_variables>Y</replace_variables>
<set_params>Y</set_params>
<single_statement>N</single_statement>
@ -131,14 +139,15 @@ WHERE job_name = '${JOB_NAME}'
and recruitment_id = '${IDM_ID}';
</sql>
<update_field/>
<attributes/>
<GUI>
<xloc>1088</xloc>
<yloc>496</yloc>
<xloc>1376</xloc>
<yloc>512</yloc>
</GUI>
</transform>
<transform>
<name>Change job status on success</name>
<name>driver_licence_success_job</name>
<type>ExecSql</type>
<description/>
<distribute>Y</distribute>
@ -151,8 +160,11 @@ and recruitment_id = '${IDM_ID}';
<arguments>
</arguments>
<connection>ervu-dashboard</connection>
<delete_field/>
<execute_each_row>Y</execute_each_row>
<insert_field/>
<quoteString>N</quoteString>
<read_field/>
<replace_variables>Y</replace_variables>
<set_params>N</set_params>
<single_statement>N</single_statement>
@ -163,14 +175,15 @@ WHERE job_name = '${JOB_NAME}'
and recruitment_id = '${IDM_ID}';
</sql>
<update_field/>
<attributes/>
<GUI>
<xloc>1456</xloc>
<yloc>176</yloc>
<xloc>816</xloc>
<yloc>208</yloc>
</GUI>
</transform>
<transform>
<name>Create job execution record</name>
<name>driver_lisence_job_create</name>
<type>ExecSql</type>
<description/>
<distribute>Y</distribute>
@ -183,8 +196,11 @@ and recruitment_id = '${IDM_ID}';
<arguments>
</arguments>
<connection>ervu-dashboard</connection>
<delete_field/>
<execute_each_row>N</execute_each_row>
<insert_field/>
<quoteString>N</quoteString>
<read_field/>
<replace_variables>Y</replace_variables>
<set_params>N</set_params>
<single_statement>N</single_statement>
@ -192,10 +208,11 @@ and recruitment_id = '${IDM_ID}';
VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
</sql>
<update_field/>
<attributes/>
<GUI>
<xloc>288</xloc>
<yloc>320</yloc>
<yloc>512</yloc>
</GUI>
</transform>
<transform>
@ -212,7 +229,7 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
<attributes/>
<GUI>
<xloc>560</xloc>
<yloc>176</yloc>
<yloc>208</yloc>
</GUI>
</transform>
<transform>
@ -244,15 +261,15 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
</value>
</condition>
</compare>
<send_true_to>Change job status on success</send_true_to>
<send_true_to>driver_licence_success_job</send_true_to>
<attributes/>
<GUI>
<xloc>1456</xloc>
<yloc>320</yloc>
<xloc>1120</xloc>
<yloc>208</yloc>
</GUI>
</transform>
<transform>
<name>Identify last row in a stream 2</name>
<name>Identify last row in a stream </name>
<type>DetectLastRow</type>
<description/>
<distribute>N</distribute>
@ -265,12 +282,85 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
<resultfieldname>last_row</resultfieldname>
<attributes/>
<GUI>
<xloc>1104</xloc>
<yloc>320</yloc>
<xloc>1120</xloc>
<yloc>352</yloc>
</GUI>
</transform>
<transform>
<name>Table input</name>
<name>driver_licence_java_expression</name>
<type>Janino</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<formula>
<field_name>has_driver_license</field_name>
<formula_string>has_driver_license_raw == 1</formula_string>
<value_type>Boolean</value_type>
<value_length>-1</value_length>
<value_precision>-1</value_precision>
<replace_field/>
</formula>
<formula>
<field_name>has_tractor_license</field_name>
<formula_string>has_tractor_license_raw == 1</formula_string>
<value_type>Boolean</value_type>
<value_length>-1</value_length>
<value_precision>-1</value_precision>
<replace_field/>
</formula>
<attributes/>
<GUI>
<xloc>848</xloc>
<yloc>752</yloc>
</GUI>
</transform>
<transform>
<name>driver_licence_group_by_recruit_id</name>
<type>GroupBy</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<add_linenr>N</add_linenr>
<all_rows>N</all_rows>
<directory>${java.io.tmpdir}</directory>
<fields>
<field>
<aggregate>has_driver_license_raw</aggregate>
<subject>is_has_driver_license</subject>
<type>MAX</type>
</field>
<field>
<aggregate>has_tractor_license_raw</aggregate>
<subject>is_has_tractor_license</subject>
<type>MAX</type>
</field>
</fields>
<give_back_row>N</give_back_row>
<group>
<field>
<name>recruit_id</name>
</field>
</group>
<ignore_aggregate>N</ignore_aggregate>
<prefix>grp</prefix>
<attributes/>
<GUI>
<xloc>560</xloc>
<yloc>752</yloc>
</GUI>
</transform>
<transform>
<name>drivers_licence_input</name>
<type>TableInput</type>
<description/>
<distribute>N</distribute>
@ -282,31 +372,36 @@ VALUES (DEFAULT, '${JOB_NAME}', 'PROCESSING', DEFAULT, null, '${IDM_ID}');
</partitioning>
<connection>ervu-dashboard</connection>
<execute_each_row>N</execute_each_row>
<limit/>
<sql>WITH
base AS (
SELECT
ri.recruit_id recruit_id,
ri.info
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen r ON r.recruit_id = ri.recruit_id AND '${IDM_ID}' != '' -- Проверка на пустую строку
AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}'
WHERE jsonb_typeof(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array'
OR ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM' IS NOT NULL
OR ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM' IS NOT NULL
),
all_data AS (
base AS (
SELECT
ri.recruit_id,
to_date(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'dataSved', 'YYYY-MM-DD') AS source_update_date,
ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'kodStatus' AS status,-- статус удостоверения // 1 - действителен, 2 - недействителен
ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'serNomDok' AS licence_series, -- серия и номер
NULL AS licence_number, -- ?серия и номер в одном поле?
ri.info
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen r ON r.recruit_id = ri.recruit_id
WHERE ('${IDM_ID}' != '' AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}')
AND (
jsonb_typeof(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array'
OR (ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM') IS NOT NULL
OR (ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM') IS NOT NULL
)
),
all_data AS (
-- Водительские удостоверения
SELECT
ri.recruit_id,
(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->> 'id') as source_id,
to_date((ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'dataSved'), 'YYYY-MM-DD') AS source_update_date,
(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'kodStatus') AS status,
(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'serNomDok') AS licence_series,
NULL AS licence_number,
array_to_string(array(
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'), ',') AS categories,-- категории водительских удостоверений
to_date(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'dataVydDok', 'YYYY-MM-DD') AS start_date,-- дата выдачи
to_date(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'srokDeistvDok', 'YYYY-MM-DD') AS close_date,-- срок действия
), ',') AS categories,
to_date((ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'dataVydDok'), 'YYYY-MM-DD') AS start_date,
to_date((ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'srokDeistvDok'), 'YYYY-MM-DD') AS close_date,
NULL AS replacement_date,
NULL AS return_date,
false AS tractor_driver
@ -315,60 +410,67 @@ all_data AS (
UNION ALL
-- Действительные удостоверения тракториста
SELECT
ri.recruit_id,
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataSved', 'YYYY-MM-DD') AS source_update_date,
'1' AS status, -- статус удостоверения тракториста // ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'kodStatusUTM'
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'serUTM' AS licence_series, -- серия удостоверения тракториста
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'nomUTM' AS licence_number, -- номер удостоверения тракториста
(SELECT array_to_string(ARRAY(SELECT jsonb_array_elements_text(
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->'extend'->'kodKatUTM')), ',')) AS categories, -- категории удостоверений тракториста
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataVydUTM', 'YYYY-MM-DD') AS start_date, -- дата выдачи
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataOkonchUTM', 'YYYY-MM-DD') AS close_date, -- дата окончания действия
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataZameny', 'YYYY-MM-DD') AS replacement_date, -- дата замены
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'-&gt;&gt;'dataVozvr', 'YYYY-MM-DD') AS return_date, -- дата возврата
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->> 'id') as source_id,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataSved'), 'YYYY-MM-DD') AS source_update_date,
'1' AS status,
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'serUTM') AS licence_series,
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'nomUTM') AS licence_number,
(SELECT array_to_string(ARRAY(
SELECT jsonb_array_elements_text(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->'extend'->'kodKatUTM')
), ',')) AS categories,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataVydUTM'), 'YYYY-MM-DD') AS start_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataOkonchUTM'), 'YYYY-MM-DD') AS close_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataZameny'), 'YYYY-MM-DD') AS replacement_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataVozvr'), 'YYYY-MM-DD') AS return_date,
true AS tractor_driver
FROM base ri
WHERE ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM' IS NOT NULL
WHERE (ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM') IS NOT NULL
UNION ALL
-- Просроченные удостоверения тракториста
SELECT
ri.recruit_id,
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataSved', 'YYYY-MM-DD') AS source_update_date,
'0' AS status, -- статус удостоверения тракториста // ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'kodStatusUTM'
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'serUTM' AS licence_series, -- серия удостоверения тракториста
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'nomUTM' AS licence_number, -- номер удостоверения тракториста
(SELECT array_to_string(ARRAY(SELECT jsonb_array_elements_text(
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->'extend'->'kodKatUTM')), ',')) AS categories, -- категории удостоверений тракториста
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataVydUTM', 'YYYY-MM-DD') AS start_date, -- дата выдачи
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataOkonchUTM', 'YYYY-MM-DD') AS close_date, -- дата окончания действия
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataZameny', 'YYYY-MM-DD') AS replacement_date, -- дата замены
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataVozvr', 'YYYY-MM-DD') AS return_date, -- дата возврата
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->> 'id') as source_id,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataSved'), 'YYYY-MM-DD') AS source_update_date,
'0' AS status,
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'serUTM') AS licence_series,
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'nomUTM') AS licence_number,
(SELECT array_to_string(ARRAY(
SELECT jsonb_array_elements_text(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->'extend'->'kodKatUTM')
), ',')) AS categories,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataVydUTM'), 'YYYY-MM-DD') AS start_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataOkonchUTM'), 'YYYY-MM-DD') AS close_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataZameny'), 'YYYY-MM-DD') AS replacement_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataVozvr'), 'YYYY-MM-DD') AS return_date,
true AS tractor_driver
FROM base ri
WHERE ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM' IS NOT NULL
)
WHERE (ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM') IS NOT NULL
)
SELECT
*,
CASE
WHEN tractor_driver is false and status = '1' THEN true
ELSE false
END AS has_driver_license, -- tractor_license // имеет удостоверение тракториста в citizen
WHEN tractor_driver = false AND status = '1' THEN 1
ELSE 0
END AS is_has_driver_license,
CASE
WHEN tractor_driver is true and status = '1' THEN true
ELSE false
END AS tractor_license -- has_driver_license // признак наличия водительского удостоверения
FROM all_data</sql>
WHEN tractor_driver = true AND status = '1' THEN 1
ELSE 0
END AS is_has_tractor_license
FROM all_data
ORDER BY recruit_id </sql>
<variables_active>Y</variables_active>
<attributes/>
<GUI>
<xloc>560</xloc>
<yloc>320</yloc>
<yloc>512</yloc>
</GUI>
</transform>
<transform>
<name>Table output</name>
<name>drivers_licence_output</name>
<type>TableOutput</type>
<description/>
<distribute>Y</distribute>
@ -425,6 +527,10 @@ FROM all_data</sql>
<column_name>source_update_date</column_name>
<stream_name>source_update_date</stream_name>
</field>
<field>
<column_name>source_id</column_name>
<stream_name>source_id</stream_name>
</field>
</fields>
<ignore_errors>N</ignore_errors>
<only_when_have_rows>N</only_when_have_rows>
@ -441,12 +547,12 @@ FROM all_data</sql>
<use_batch>Y</use_batch>
<attributes/>
<GUI>
<xloc>736</xloc>
<yloc>320</yloc>
<xloc>1120</xloc>
<yloc>512</yloc>
</GUI>
</transform>
<transform>
<name>Update</name>
<name>update_drivers_licence_flags</name>
<type>Update</type>
<description/>
<distribute>Y</distribute>
@ -469,7 +575,7 @@ FROM all_data</sql>
<table>citizen</table>
<value>
<name>tractor_license</name>
<rename>tractor_license</rename>
<rename>has_tractor_license</rename>
</value>
<value>
<name>has_driver_license</name>
@ -480,48 +586,14 @@ FROM all_data</sql>
<use_batch>Y</use_batch>
<attributes/>
<GUI>
<xloc>1328</xloc>
<yloc>320</yloc>
</GUI>
</transform>
<transform>
<name>sort_by_recruit_id</name>
<type>SortRows</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<directory>${java.io.tmpdir}</directory>
<prefix>srt</prefix>
<sort_size>100000</sort_size>
<free_memory/>
<compress>N</compress>
<compress_variable/>
<unique_rows>Y</unique_rows>
<fields>
<field>
<name>recruit_id</name>
<ascending>Y</ascending>
<case_sensitive>N</case_sensitive>
<collator_enabled>N</collator_enabled>
<collator_strength>0</collator_strength>
<presorted>N</presorted>
</field>
</fields>
<attributes/>
<GUI>
<xloc>912</xloc>
<yloc>320</yloc>
<xloc>1376</xloc>
<yloc>752</yloc>
</GUI>
</transform>
<transform_error_handling>
<error>
<source_transform>Table output</source_transform>
<target_transform>Change job status on error</target_transform>
<source_transform>drivers_licence_output</source_transform>
<target_transform>driver_license_failure_job</target_transform>
<is_enabled>Y</is_enabled>
<nr_valuename/>
<descriptions_valuename>error_description</descriptions_valuename>
@ -532,8 +604,8 @@ FROM all_data</sql>
<min_pct_rows/>
</error>
<error>
<source_transform>Update</source_transform>
<target_transform>Change job status on error</target_transform>
<source_transform>update_drivers_licence_flags</source_transform>
<target_transform>driver_license_failure_job</target_transform>
<is_enabled>Y</is_enabled>
<nr_valuename/>
<descriptions_valuename>error_description</descriptions_valuename>

View file

@ -22,68 +22,73 @@
</notepads>
<order>
<hop>
<from>Create job execution record</from>
<to>Table input</to>
<from>driver_license_failure_job</from>
<to>Abort 2</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Filter rows</from>
<to>Change job status on success</to>
<from>driver_lisence_job_create</from>
<to>drivers_licence_input</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Detect empty stream</from>
<to>Change job status on success</to>
<from>Detect empty stream 2</from>
<to>driver_licence_success_job</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Change job status on error</from>
<to>Abort</to>
<from>Filter rows 2</from>
<to>driver_licence_success_job</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Insert / update</from>
<to>Change job status on error</to>
<from>Identify last row in a stream </from>
<to>Filter rows 2</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Update</from>
<to>Change job status on error</to>
<from>driver_licence_java_expression</from>
<to>update_drivers_licence_flags</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Table input</from>
<to>Insert / update</to>
<from>driver_licence_group_by_recruit_id</from>
<to>driver_licence_java_expression</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Table input</from>
<to>Detect empty stream</to>
<from>drivers_licence_input</from>
<to>Detect empty stream 2</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Insert / update</from>
<to>sort_by_recruit_id</to>
<from>drivers_licence_input</from>
<to>driver_licence_group_by_recruit_id</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Update</from>
<to>Filter rows</to>
<from>update_drivers_licence_flags</from>
<to>driver_license_failure_job</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>sort_by_recruit_id</from>
<to>Identify last row in a stream 2</to>
<from>drivers_licence_input</from>
<to>Insert / update 2</to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Identify last row in a stream 2</from>
<to>Update</to>
<from>Insert / update 2</from>
<to>Identify last row in a stream </to>
<enabled>Y</enabled>
</hop>
<hop>
<from>Insert / update 2</from>
<to>driver_license_failure_job</to>
<enabled>Y</enabled>
</hop>
</order>
<transform>
<name>Abort</name>
<name>Abort 2</name>
<type>Abort</type>
<description/>
<distribute>Y</distribute>
@ -98,127 +103,12 @@
<row_threshold>0</row_threshold>
<attributes/>
<GUI>
<xloc>1328</xloc>
<yloc>384</yloc>
<xloc>1712</xloc>
<yloc>784</yloc>
</GUI>
</transform>
<transform>
<name>Change job status on error</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 = ?,
execution_end_datetime = current_timestamp
WHERE job_name = '${JOB_NAME}'
and recruitment_id = '${IDM_ID}';
</sql>
<attributes/>
<GUI>
<xloc>1232</xloc>
<yloc>384</yloc>
</GUI>
</transform>
<transform>
<name>Change job status on success</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>Y</execute_each_row>
<quoteString>N</quoteString>
<replace_variables>Y</replace_variables>
<set_params>N</set_params>
<single_statement>N</single_statement>
<sql>UPDATE etl.job_execution
SET status = 'SUCCESS',
execution_end_datetime = current_timestamp
WHERE job_name = '${JOB_NAME}'
and recruitment_id = '${IDM_ID}';
</sql>
<attributes/>
<GUI>
<xloc>1440</xloc>
<yloc>64</yloc>
</GUI>
</transform>
<transform>
<name>Create job execution record</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}'
)
ON CONFLICT (job_name, recruitment_id)
DO UPDATE SET
status = 'PROCESSING',
execution_datetime = DEFAULT,
error_description = NULL
</sql>
<attributes/>
<GUI>
<xloc>272</xloc>
<yloc>208</yloc>
</GUI>
</transform>
<transform>
<name>Detect empty stream</name>
<name>Detect empty stream 2</name>
<type>DetectEmptyStream</type>
<description/>
<distribute>Y</distribute>
@ -230,12 +120,12 @@ DO UPDATE SET
</partitioning>
<attributes/>
<GUI>
<xloc>480</xloc>
<yloc>64</yloc>
<xloc>640</xloc>
<yloc>480</yloc>
</GUI>
</transform>
<transform>
<name>Filter rows</name>
<name>Filter rows 2</name>
<type>FilterRows</type>
<description/>
<distribute>Y</distribute>
@ -263,15 +153,15 @@ DO UPDATE SET
</value>
</condition>
</compare>
<send_true_to>Change job status on success</send_true_to>
<send_true_to>driver_licence_success_job</send_true_to>
<attributes/>
<GUI>
<xloc>1440</xloc>
<yloc>208</yloc>
<xloc>1200</xloc>
<yloc>480</yloc>
</GUI>
</transform>
<transform>
<name>Identify last row in a stream 2</name>
<name>Identify last row in a stream </name>
<type>DetectLastRow</type>
<description/>
<distribute>N</distribute>
@ -284,15 +174,15 @@ DO UPDATE SET
<resultfieldname>last_row</resultfieldname>
<attributes/>
<GUI>
<xloc>1056</xloc>
<yloc>208</yloc>
<xloc>1200</xloc>
<yloc>624</yloc>
</GUI>
</transform>
<transform>
<name>Insert / update</name>
<name>Insert / update 2</name>
<type>InsertUpdate</type>
<description/>
<distribute>Y</distribute>
<distribute>N</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
@ -304,15 +194,8 @@ DO UPDATE SET
<lookup>
<key>
<condition>=</condition>
<field>recruit_id</field>
<name>recruit_id</name>
<name2/>
</key>
<key>
<condition>=</condition>
<field>tractor_driver</field>
<name>tractor_driver</name>
<name2/>
<field>source_id</field>
<name>source_id</name>
</key>
<schema>ervu_dashboard</schema>
<table>drivers_licence</table>
@ -371,16 +254,212 @@ DO UPDATE SET
<rename>source_update_date</rename>
<update>Y</update>
</value>
<value>
<name>source_id</name>
<rename>source_id</rename>
<update>N</update>
</value>
</lookup>
<update_bypassed>Y</update_bypassed>
<attributes/>
<GUI>
<xloc>672</xloc>
<yloc>208</yloc>
<xloc>1200</xloc>
<yloc>784</yloc>
</GUI>
</transform>
<transform>
<name>Table input</name>
<name>driver_licence_group_by_recruit_id</name>
<type>GroupBy</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<add_linenr>N</add_linenr>
<all_rows>N</all_rows>
<directory>${java.io.tmpdir}</directory>
<fields>
<field>
<aggregate>has_driver_license_raw</aggregate>
<subject>is_has_driver_license</subject>
<type>MAX</type>
</field>
<field>
<aggregate>has_tractor_license_raw</aggregate>
<subject>is_has_tractor_license</subject>
<type>MAX</type>
</field>
</fields>
<give_back_row>N</give_back_row>
<group>
<field>
<name>recruit_id</name>
</field>
</group>
<ignore_aggregate>N</ignore_aggregate>
<prefix>grp</prefix>
<attributes/>
<GUI>
<xloc>640</xloc>
<yloc>1024</yloc>
</GUI>
</transform>
<transform>
<name>driver_licence_java_expression</name>
<type>Janino</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<formula>
<field_name>has_driver_license</field_name>
<formula_string>has_driver_license_raw == 1</formula_string>
<value_type>Boolean</value_type>
<value_length>-1</value_length>
<value_precision>-1</value_precision>
<replace_field/>
</formula>
<formula>
<field_name>has_tractor_license</field_name>
<formula_string>has_tractor_license_raw == 1</formula_string>
<value_type>Boolean</value_type>
<value_length>-1</value_length>
<value_precision>-1</value_precision>
<replace_field/>
</formula>
<attributes/>
<GUI>
<xloc>928</xloc>
<yloc>1024</yloc>
</GUI>
</transform>
<transform>
<name>driver_licence_success_job</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>Y</execute_each_row>
<quoteString>N</quoteString>
<replace_variables>Y</replace_variables>
<set_params>N</set_params>
<single_statement>N</single_statement>
<sql>UPDATE etl.job_execution
SET status = 'SUCCESS',
execution_end_datetime = current_timestamp
WHERE job_name = '${JOB_NAME}'
and recruitment_id = '${IDM_ID}';
</sql>
<attributes/>
<GUI>
<xloc>896</xloc>
<yloc>480</yloc>
</GUI>
</transform>
<transform>
<name>driver_license_failure_job</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 = ?,
execution_end_datetime = current_timestamp
WHERE job_name = '${JOB_NAME}'
and recruitment_id = '${IDM_ID}';
</sql>
<attributes/>
<GUI>
<xloc>1456</xloc>
<yloc>784</yloc>
</GUI>
</transform>
<transform>
<name>driver_lisence_job_create</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>
<delete_field/>
<execute_each_row>N</execute_each_row>
<insert_field/>
<quoteString>N</quoteString>
<read_field/>
<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}'
)
ON CONFLICT (job_name, recruitment_id)
DO UPDATE SET
status = 'PROCESSING',
execution_datetime = DEFAULT,
error_description = NULL;</sql>
<update_field/>
<attributes/>
<GUI>
<xloc>368</xloc>
<yloc>784</yloc>
</GUI>
</transform>
<transform>
<name>drivers_licence_input</name>
<type>TableInput</type>
<description/>
<distribute>N</distribute>
@ -392,31 +471,36 @@ DO UPDATE SET
</partitioning>
<connection>ervu-dashboard</connection>
<execute_each_row>N</execute_each_row>
<limit/>
<sql>WITH
base AS (
SELECT
ri.recruit_id recruit_id,
ri.info
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen r ON r.recruit_id = ri.recruit_id AND '${IDM_ID}' != '' -- Проверка на пустую строку
AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}'
WHERE jsonb_typeof(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array'
OR ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM' IS NOT NULL
OR ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM' IS NOT NULL
),
all_data AS (
base AS (
SELECT
ri.recruit_id,
to_date(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'dataSved', 'YYYY-MM-DD') AS source_update_date,
ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'kodStatus' AS status,-- статус удостоверения // 1 - действителен, 2 - недействителен
ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'serNomDok' AS licence_series, -- серия и номер
NULL AS licence_number, -- ?серия и номер в одном поле?
ri.info
FROM ervu_dashboard.recruits_info ri
JOIN ervu_dashboard.citizen r ON r.recruit_id = ri.recruit_id
WHERE ('${IDM_ID}' != '' AND COALESCE(ri.current_recruitment_id, ri.target_recruitment_id) = '${IDM_ID}')
AND (
jsonb_typeof(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->'svedKat') = 'array'
OR (ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM') IS NOT NULL
OR (ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM') IS NOT NULL
)
),
all_data AS (
-- Водительские удостоверения
SELECT
ri.recruit_id,
(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->> 'id') as source_id,
to_date((ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'dataSved'), 'YYYY-MM-DD') AS source_update_date,
(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'kodStatus') AS status,
(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'serNomDok') AS licence_series,
NULL AS licence_number,
array_to_string(array(
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'), ',') AS categories,-- категории водительских удостоверений
to_date(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'dataVydDok', 'YYYY-MM-DD') AS start_date,-- дата выдачи
to_date(ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'srokDeistvDok', 'YYYY-MM-DD') AS close_date,-- срок действия
), ',') AS categories,
to_date((ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'dataVydDok'), 'YYYY-MM-DD') AS start_date,
to_date((ri.info->'svedFL'->'svedVoditUdost'->'voditUdost'->>'srokDeistvDok'), 'YYYY-MM-DD') AS close_date,
NULL AS replacement_date,
NULL AS return_date,
false AS tractor_driver
@ -425,63 +509,70 @@ all_data AS (
UNION ALL
-- Действительные удостоверения тракториста
SELECT
ri.recruit_id,
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataSved', 'YYYY-MM-DD') AS source_update_date,
'1' AS status, -- статус удостоверения тракториста // ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'kodStatusUTM'
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'serUTM' AS licence_series, -- серия удостоверения тракториста
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'nomUTM' AS licence_number, -- номер удостоверения тракториста
(SELECT array_to_string(ARRAY(SELECT jsonb_array_elements_text(
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->'extend'->'kodKatUTM')), ',')) AS categories, -- категории удостоверений тракториста
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataVydUTM', 'YYYY-MM-DD') AS start_date, -- дата выдачи
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataOkonchUTM', 'YYYY-MM-DD') AS close_date, -- дата окончания действия
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataZameny', 'YYYY-MM-DD') AS replacement_date, -- дата замены
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'-&gt;&gt;'dataVozvr', 'YYYY-MM-DD') AS return_date, -- дата возврата
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->> 'id') as source_id,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataSved'), 'YYYY-MM-DD') AS source_update_date,
'1' AS status,
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'serUTM') AS licence_series,
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'nomUTM') AS licence_number,
(SELECT array_to_string(ARRAY(
SELECT jsonb_array_elements_text(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->'extend'->'kodKatUTM')
), ',')) AS categories,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataVydUTM'), 'YYYY-MM-DD') AS start_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataOkonchUTM'), 'YYYY-MM-DD') AS close_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataZameny'), 'YYYY-MM-DD') AS replacement_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM'->>'dataVozvr'), 'YYYY-MM-DD') AS return_date,
true AS tractor_driver
FROM base ri
WHERE ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM' IS NOT NULL
WHERE (ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'aktUTM') IS NOT NULL
UNION ALL
-- Просроченные удостоверения тракториста
SELECT
ri.recruit_id,
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataSved', 'YYYY-MM-DD') AS source_update_date,
'0' AS status, -- статус удостоверения тракториста // ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'kodStatusUTM'
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'serUTM' AS licence_series, -- серия удостоверения тракториста
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'nomUTM' AS licence_number, -- номер удостоверения тракториста
(SELECT array_to_string(ARRAY(SELECT jsonb_array_elements_text(
ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->'extend'->'kodKatUTM')), ',')) AS categories, -- категории удостоверений тракториста
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataVydUTM', 'YYYY-MM-DD') AS start_date, -- дата выдачи
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataOkonchUTM', 'YYYY-MM-DD') AS close_date, -- дата окончания действия
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataZameny', 'YYYY-MM-DD') AS replacement_date, -- дата замены
to_date(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataVozvr', 'YYYY-MM-DD') AS return_date, -- дата возврата
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->> 'id') as source_id,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataSved'), 'YYYY-MM-DD') AS source_update_date,
'0' AS status,
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'serUTM') AS licence_series,
(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'nomUTM') AS licence_number,
(SELECT array_to_string(ARRAY(
SELECT jsonb_array_elements_text(ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->'extend'->'kodKatUTM')
), ',')) AS categories,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataVydUTM'), 'YYYY-MM-DD') AS start_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataOkonchUTM'), 'YYYY-MM-DD') AS close_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataZameny'), 'YYYY-MM-DD') AS replacement_date,
to_date((ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM'->>'dataVozvr'), 'YYYY-MM-DD') AS return_date,
true AS tractor_driver
FROM base ri
WHERE ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM' IS NOT NULL
)
WHERE (ri.info->'svedFL'->'svedUdostTraktMash'->'udostTraktMash'->'predUTM') IS NOT NULL
)
SELECT
*,
CASE
WHEN tractor_driver is false and status = '1' THEN true
ELSE false
END AS has_driver_license, -- tractor_license // имеет удостоверение тракториста в citizen
WHEN tractor_driver = false AND status = '1' THEN 1
ELSE 0
END AS is_has_driver_license,
CASE
WHEN tractor_driver is true and status = '1' THEN true
ELSE false
END AS tractor_license -- has_driver_license // признак наличия водительского удостоверения
FROM all_data</sql>
WHEN tractor_driver = true AND status = '1' THEN 1
ELSE 0
END AS is_has_tractor_license
FROM all_data
ORDER BY recruit_id </sql>
<variables_active>Y</variables_active>
<attributes/>
<GUI>
<xloc>480</xloc>
<yloc>208</yloc>
<xloc>640</xloc>
<yloc>784</yloc>
</GUI>
</transform>
<transform>
<name>Update</name>
<name>update_drivers_licence_flags</name>
<type>Update</type>
<description/>
<distribute>N</distribute>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
@ -491,17 +582,19 @@ FROM all_data</sql>
<commit>10000</commit>
<connection>ervu-dashboard</connection>
<error_ignored>Y</error_ignored>
<ignore_flag_field/>
<lookup>
<key>
<condition>=</condition>
<field>recruit_id</field>
<name>recruit_id</name>
<name2/>
</key>
<schema>ervu_dashboard</schema>
<table>citizen</table>
<value>
<name>tractor_license</name>
<rename>tractor_license</rename>
<rename>has_tractor_license</rename>
</value>
<value>
<name>has_driver_license</name>
@ -512,48 +605,14 @@ FROM all_data</sql>
<use_batch>Y</use_batch>
<attributes/>
<GUI>
<xloc>1232</xloc>
<yloc>208</yloc>
</GUI>
</transform>
<transform>
<name>sort_by_recruit_id</name>
<type>SortRows</type>
<description/>
<distribute>Y</distribute>
<custom_distribution/>
<copies>1</copies>
<partitioning>
<method>none</method>
<schema_name/>
</partitioning>
<directory>${java.io.tmpdir}</directory>
<prefix>srt</prefix>
<sort_size>100000</sort_size>
<free_memory/>
<compress>N</compress>
<compress_variable/>
<unique_rows>Y</unique_rows>
<fields>
<field>
<name>recruit_id</name>
<ascending>Y</ascending>
<case_sensitive>N</case_sensitive>
<collator_enabled>N</collator_enabled>
<collator_strength>0</collator_strength>
<presorted>N</presorted>
</field>
</fields>
<attributes/>
<GUI>
<xloc>880</xloc>
<yloc>208</yloc>
<xloc>1456</xloc>
<yloc>1024</yloc>
</GUI>
</transform>
<transform_error_handling>
<error>
<source_transform>Insert / update</source_transform>
<target_transform>Change job status on error</target_transform>
<source_transform>Insert / update 2</source_transform>
<target_transform>driver_license_failure_job</target_transform>
<is_enabled>Y</is_enabled>
<nr_valuename/>
<descriptions_valuename>error_description</descriptions_valuename>
@ -564,8 +623,8 @@ FROM all_data</sql>
<min_pct_rows/>
</error>
<error>
<source_transform>Update</source_transform>
<target_transform>Change job status on error</target_transform>
<source_transform>update_drivers_licence_flags</source_transform>
<target_transform>driver_license_failure_job</target_transform>
<is_enabled>Y</is_enabled>
<nr_valuename/>
<descriptions_valuename>error_description</descriptions_valuename>