From 97054be5435ba5d1032c78a7da9febfcd91bf725 Mon Sep 17 00:00:00 2001 From: Ruslan Date: Mon, 7 Apr 2025 08:59:54 +0300 Subject: [PATCH] fix --- .../mil_com/job_recruitments_milcom.hwf | 9 +- .../total_registered.busyness_pr1(m_c).hpl | 6 +- .../total_registered.busyness_pr2(m_c).hpl | 6 +- .../total_registered.busyness_pr3(m_c).hpl | 6 +- .../total_registered.busyness_pr4(m_c).hpl | 6 +- .../total_registered.busyness_pr5(m_c).hpl | 6 +- .../region/job_recruitments_region.hwf | 65 ++---- .../recruitment_campaign.appeals(reg).hpl | 187 ++++++++++++++---- 8 files changed, 188 insertions(+), 103 deletions(-) diff --git a/v1_apache-hop dash mapping/mil_com/job_recruitments_milcom.hwf b/v1_apache-hop dash mapping/mil_com/job_recruitments_milcom.hwf index 21c746a..6fb1a77 100644 --- a/v1_apache-hop dash mapping/mil_com/job_recruitments_milcom.hwf +++ b/v1_apache-hop dash mapping/mil_com/job_recruitments_milcom.hwf @@ -897,34 +897,27 @@ AND postponement_granted IS NULL; N Y ${PROJECT_HOME}/mil_com/main_dashboard.waiting_registration(m_c)/main_dashboard.waiting_registration(m_c).hwf - - Nothing ARR_PR_1 PART_RECRUITMENT_1 - ARR_PR_2 PART_RECRUITMENT_2 - ARR_PR_3 PART_RECRUITMENT_3 - ARR_PR_4 PART_RECRUITMENT_4 - ARR_PR_5 PART_RECRUITMENT_5 - Y @@ -2002,7 +1995,7 @@ WHERE recording_date = current_date array_recruitments.hpl SQL recruitment_campaign.appeals - Y + N Y N diff --git a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr1(m_c).hpl b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr1(m_c).hpl index 0903778..76f9ce4 100644 --- a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr1(m_c).hpl +++ b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr1(m_c).hpl @@ -513,13 +513,14 @@ summary_all AS ( recruitment_id, registered, convicts, - 'ALL' AS gender, + gender, SUM(study) AS study, SUM(work) AS work, SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary - GROUP BY recruitment_id, registered, convicts + WHERE gender in ('M', 'W') and convicts in ('CONVICT', 'NOTCONVICT') + GROUP BY recruitment_id, registered, convicts, gender UNION ALL @@ -533,6 +534,7 @@ summary_all AS ( SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary + WHERE convicts in ('ALL') GROUP BY recruitment_id, registered ) SELECT diff --git a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr2(m_c).hpl b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr2(m_c).hpl index 875eb9c..90d2514 100644 --- a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr2(m_c).hpl +++ b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr2(m_c).hpl @@ -513,13 +513,14 @@ summary_all AS ( recruitment_id, registered, convicts, - 'ALL' AS gender, + gender, SUM(study) AS study, SUM(work) AS work, SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary - GROUP BY recruitment_id, registered, convicts + WHERE gender in ('M', 'W') and convicts in ('CONVICT', 'NOTCONVICT') + GROUP BY recruitment_id, registered, convicts, gender UNION ALL @@ -533,6 +534,7 @@ summary_all AS ( SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary + WHERE convicts in ('ALL') GROUP BY recruitment_id, registered ) SELECT diff --git a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr3(m_c).hpl b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr3(m_c).hpl index fac1d1f..97c4662 100644 --- a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr3(m_c).hpl +++ b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr3(m_c).hpl @@ -513,13 +513,14 @@ summary_all AS ( recruitment_id, registered, convicts, - 'ALL' AS gender, + gender, SUM(study) AS study, SUM(work) AS work, SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary - GROUP BY recruitment_id, registered, convicts + WHERE gender in ('M', 'W') and convicts in ('CONVICT', 'NOTCONVICT') + GROUP BY recruitment_id, registered, convicts, gender UNION ALL @@ -533,6 +534,7 @@ summary_all AS ( SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary + WHERE convicts in ('ALL') GROUP BY recruitment_id, registered ) SELECT diff --git a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr4(m_c).hpl b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr4(m_c).hpl index d7232f1..93ff446 100644 --- a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr4(m_c).hpl +++ b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr4(m_c).hpl @@ -513,13 +513,14 @@ summary_all AS ( recruitment_id, registered, convicts, - 'ALL' AS gender, + gender, SUM(study) AS study, SUM(work) AS work, SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary - GROUP BY recruitment_id, registered, convicts + WHERE gender in ('M', 'W') and convicts in ('CONVICT', 'NOTCONVICT') + GROUP BY recruitment_id, registered, convicts, gender UNION ALL @@ -533,6 +534,7 @@ summary_all AS ( SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary + WHERE convicts in ('ALL') GROUP BY recruitment_id, registered ) SELECT diff --git a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr5(m_c).hpl b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr5(m_c).hpl index acd579b..25dd90c 100644 --- a/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr5(m_c).hpl +++ b/v1_apache-hop dash mapping/mil_com/total_registered.busyness(m_c)/total_registered.busyness_pr5(m_c).hpl @@ -513,13 +513,14 @@ summary_all AS ( recruitment_id, registered, convicts, - 'ALL' AS gender, + gender, SUM(study) AS study, SUM(work) AS work, SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary - GROUP BY recruitment_id, registered, convicts + WHERE gender in ('M', 'W') and convicts in ('CONVICT', 'NOTCONVICT') + GROUP BY recruitment_id, registered, convicts, gender UNION ALL @@ -533,6 +534,7 @@ summary_all AS ( SUM(no_info) AS no_info, SUM(total_people) AS total_people FROM summary + WHERE convicts in ('ALL') GROUP BY recruitment_id, registered ) SELECT diff --git a/v1_apache-hop dash mapping/region/job_recruitments_region.hwf b/v1_apache-hop dash mapping/region/job_recruitments_region.hwf index d1f8a7d..c7f3efd 100644 --- a/v1_apache-hop dash mapping/region/job_recruitments_region.hwf +++ b/v1_apache-hop dash mapping/region/job_recruitments_region.hwf @@ -692,12 +692,8 @@ Basic - VK_ARRAY - VK_ARRAY_ID - - - REG_ID - RECRUITMENT_REG_ID + ARR_REG + ARRAY_REGION Y @@ -708,7 +704,7 @@ Y N 1696 - 1344 + 16 @@ -718,7 +714,7 @@ N 2224 - 1344 + 16 @@ -1347,24 +1343,6 @@ WHERE recording_date = current_date 1264 - - recruitment_campaign.appeals - - SQL - - ervu-dashboard - N - DELETE FROM recruitment_campaign.appeals -WHERE recording_date = current_date - AND schema = 'REG_LVL' - - N - N - N - 2016 - 1344 - - appeals.topic_appeal(reg).hpl @@ -1652,20 +1630,6 @@ WHERE recording_date = current_date Y Y - - recruitment_campaign.appeals(reg) - recruitment_campaign.appeals - Y - Y - N - - - recruitment_campaign.appeals - Success 16 - Y - Y - Y - job_get_rows_reg.hwf main_dashboard.recruitment_campaign(reg) @@ -1757,13 +1721,6 @@ WHERE recording_date = current_date Y N - - job_get_rows_reg.hwf - recruitment_campaign.appeals(reg) - Y - Y - N - array_region.hpl appeals.topic_appeal(reg).hpl @@ -1778,6 +1735,20 @@ WHERE recording_date = current_date Y N + + recruitment_campaign.appeals(reg) + Success 16 + Y + Y + N + + + array_region.hpl + recruitment_campaign.appeals(reg) + Y + Y + N + diff --git a/v1_apache-hop dash mapping/region/recruitment_campaign.appeals(reg).hpl b/v1_apache-hop dash mapping/region/recruitment_campaign.appeals(reg).hpl index 670aeed..702d6e2 100644 --- a/v1_apache-hop dash mapping/region/recruitment_campaign.appeals(reg).hpl +++ b/v1_apache-hop dash mapping/region/recruitment_campaign.appeals(reg).hpl @@ -24,19 +24,90 @@ Get variables 3 2 Select values 3 2 - Y + N Table input (appeal_document) регионы Get variables 3 2 - Y + N Select values 3 2 Insert / update (main_dashboard.appeals) + N + + + Execute SQL script + Table input (appeal_document) регионы + Y + + + Insert / update (main_dashboard.appeals) + Execute SQL script 2 + Y + + + Table input (appeal_document) регионы + Insert / update (main_dashboard.appeals) Y + + Execute SQL script + ExecSql + + N + + 1 + + none + + + + + ervu-dashboard + N + N + N + N + N + DELETE FROM recruitment_campaign.appeals +WHERE recording_date = current_date + AND schema = 'Organization' + + + 256 + 272 + + + + Execute SQL script 2 + ExecSql + + N + + 1 + + none + + + + + ervu-dashboard + N + N + N + N + N + DELETE FROM recruitment_campaign.appeals +WHERE recording_date = current_date + AND schema = 'REG_LVL' + + + 1360 + 272 + + Get variables 3 2 GetVariable @@ -66,8 +137,8 @@ - 720 - 272 + 704 + 416 @@ -87,17 +158,26 @@ = recruitment_id - REG_ID + recruitment_id + = schema schema + = spring_autumn spring_autumn + + + + = + recording_date + recording_date + recruitment_campaign appeals
@@ -209,15 +289,15 @@ - 864 - 272 + 848 + 416
Table input (appeal_document) регионы TableInput - N + Y 1 @@ -227,38 +307,69 @@ ervu-dashboard N 0 - SELECT - COALESCE(SUM(total_appeals), 0) total_appeals, - COALESCE(SUM(average_consideration), 0) average_consideration, - COALESCE(SUM(resolved), 0) resolved, - COALESCE(SUM(not_resolved), 0) not_resolved, - COALESCE( - CASE - WHEN SUM(total_appeals) > 0 - THEN ROUND((SUM(not_resolved) / SUM(total_appeals) * 100), 2) - ELSE 0 - END, - 0 - ) not_resolved_percent, + WITH +ids AS ( + SELECT unnest(string_to_array(trim(both '{}' from '${ARR_REG}'), ','))::uuid AS recruitment_id +), +base_data AS ( + SELECT + region_id, + solution_type, + CASE + WHEN incoming_date <> '-' THEN incoming_date::date + ELSE NULL + END AS incoming_date, - COALESCE(SUM(average_rating), 0) average_rating, - COALESCE( - CASE - WHEN SUM(total_appeals) > 0 - THEN ROUND((SUM(resolved) / SUM(total_appeals) * 100), 2) - ELSE 0 - END, - 0 - ) resolved_percent, + CASE + WHEN fact_end_date <> '-' THEN fact_end_date::date + ELSE NULL + END AS fact_end_date, - '${REG_ID}' AS recruitment_id, - spring_autumn, - 'Organization' AS schema -FROM recruitment_campaign.appeals -WHERE recruitment_id = ANY ('${VK_ARRAY}') -AND schema IN ('Department', 'REG_LVL') -AND recording_date = CURRENT_DATE -GROUP BY spring_autumn; + CASE + WHEN response_evalution <> '-' THEN response_evalution::NUMERIC -- оценка ответа заявителем + ELSE 0 + END AS response_evalution, + source + FROM appeals.appeals_list al + WHERE region_id::uuid IN (SELECT recruitment_id FROM ids) +), +aggregated_data AS ( + SELECT + region_id AS recruitment_id, + COUNT(*) AS total_appeals, + COUNT(*) FILTER (WHERE solution_type = 'Решено') AS resolved, + COUNT(*) FILTER (WHERE solution_type != 'Решено') AS not_resolved, + -- Среднее время рассмотрения, учитывая возможные NULL для дат + ROUND(AVG(CASE + WHEN fact_end_date IS NOT NULL AND incoming_date IS NOT NULL + THEN fact_end_date::DATE - incoming_date::DATE + ELSE NULL + END), 1) AS average_consideration, + -- Средний рейтинг, учитывая 0 для некорректных значений + ROUND(AVG(COALESCE(response_evalution, 0)), 1) AS average_rating + --COUNT(*) FILTER (WHERE source = 'ПОС') AS total_pos, + --COUNT(*) FILTER (WHERE source = 'ЕПГУ') AS total_epgu + FROM base_data + GROUP BY region_id +) +SELECT + i.recruitment_id, + current_date AS recording_date, + 'Весна' AS spring_autumn, + 'Organization' AS schema, + COALESCE(ad.total_appeals, 0) AS total_appeals, + COALESCE(ad.resolved, 0) AS resolved, + COALESCE(ad.not_resolved, 0) AS not_resolved, + COALESCE(ad.average_consideration, 0) AS average_consideration, + COALESCE(ad.average_rating, 0) AS average_rating, + COALESCE(ROUND(ad.resolved::NUMERIC * 100 / NULLIF(ad.total_appeals, 0), 1), 0) AS resolved_percent, + COALESCE(ROUND(ad.not_resolved::NUMERIC * 100 / NULLIF(ad.total_appeals, 0), 1), 0) AS not_resolved_percent + --COALESCE(ad.total_pos, 0) AS average_to_face, + --COALESCE(ad.total_epgu, 0) AS average_epgu, + --COALESCE(ROUND(ad.total_pos::NUMERIC * 100 / NULLIF(ad.total_appeals, 0), 1), 0) AS average_to_face_percent, + --COALESCE(ROUND(ad.total_epgu::NUMERIC * 100 / NULLIF(ad.total_appeals, 0), 1), 0) AS average_epgu_percent +FROM ids i +LEFT JOIN aggregated_data ad ON ad.recruitment_id = i.recruitment_id; Y