suburg

HCSINT-52462

Dec 21st, 2021
1,035
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DROP TABLE IF EXISTS tmp_management;
  2. CREATE TEMPORARY TABLE tmp_management AS
  3. SELECT
  4.     *
  5. FROM
  6.     dblink('hcshmdb_d', 'SELECT
  7.                             guid,
  8.                             fias_house_code,
  9.                             management_organization_guid,
  10.                             document_guid,
  11.                             status,
  12.                             management_period_from,
  13.                             management_period_to,
  14.                             last_editing_date
  15.                         FROM
  16.                             hmsm.hm_house_management_periods
  17.                         WHERE
  18.                             status IN (''INCLUDED'', ''EXCLUDED'')') AS
  19.                         h(
  20.                             guid character varying(36),
  21.                             fias_house_code character varying(36),
  22.                             management_organization_guid character varying(36),
  23.                             document_guid character varying(36),
  24.                             status character varying(10),
  25.                             management_period_from date,
  26.                             management_period_to date,
  27.                             last_editing_date timestamp without time zone
  28.                         );
  29.  
  30. DROP TABLE IF EXISTS tmp_voting;
  31. CREATE TEMPORARY TABLE tmp_voting AS
  32. SELECT
  33.     vt.guid AS voting_guid,
  34.     regions.formatted_name AS region_formatted_name,
  35.     vta.region_code AS fias_region_code,
  36.     vta.house_code AS fias_house_code,
  37.     vta.formatted_address AS formatted_address,
  38.     vv.voting_type,
  39.     CASE vv.voting_type
  40.         WHEN 'ANNUALLY' THEN 'Ежегодное'
  41.         WHEN 'EXTRAORDINARY' THEN 'Внеочередное'
  42.         ELSE 'Неизвестно'
  43.     END AS voting_type_name,
  44.     vv.voting_form,
  45.     CASE vv.voting_form
  46.         WHEN 'MEETING' THEN 'Очное'
  47.         WHEN 'ABSENT_VOTING' THEN 'Заочное (опросным путем)'
  48.         WHEN 'MEETING_ABSENT_VOTING' THEN 'Очно-заочное'
  49.         WHEN 'ONLINE_VOTING' THEN 'Заочное (с использованием системы)'
  50.         ELSE 'Неизвестно'
  51.     END AS voting_form_name,
  52.     CASE vv.voting_form
  53.         WHEN 'ONLINE_VOTING' THEN TRUE
  54.         ELSE FALSE
  55.     END AS use_hcs,
  56.     vv.meeting_eligibility,
  57.     CASE meeting_eligibility
  58.         WHEN 'COMPETENT' THEN 'Правомочно'
  59.         ELSE 'Неправомочно'
  60.     END AS meeting_eligibility_name,
  61.     vv.meeting_type,
  62.     CASE vv.meeting_type
  63.         WHEN 'HOMEOWNERS' THEN 'Собрание членов ТСЖ'
  64.         WHEN 'COOPERATIVE' THEN 'Собрание членов кооператива'
  65.         WHEN 'OWNERS' THEN 'Общее собрание собственников'
  66.         ELSE 'Неизвестно'
  67.     END AS meeting_type_name,
  68.     vv.protocol_date,
  69.     vv.protocol_code,
  70.     vv.meeting_place,
  71.     tmp_management.management_organization_guid,
  72.     ROW_NUMBER() OVER (PARTITION BY vt.guid, vta.house_code ORDER BY tmp_management.last_editing_date DESC) AS row_num
  73. FROM
  74.     vtsm.vt_voting vt
  75.     INNER JOIN vtsm.vt_voting_version vv ON vv.guid = vt.last_signed_protocol_guid
  76.     INNER JOIN vtsm.vt_voting_address vta ON vta.voting_version_guid = vv.guid
  77.     LEFT JOIN tmp_management ON tmp_management.fias_house_code = vta.house_code
  78.                                 AND vv.protocol_date BETWEEN COALESCE(tmp_management.management_period_from, '1900-01-01'::date)
  79.                                 AND COALESCE(tmp_management.management_period_to, '5000-01-01'::date)
  80.     INNER JOIN (SELECT
  81.                     aoguid,
  82.                     formatted_name
  83.                 FROM
  84.                     dblink('hcsnsidb_d', 'SELECT aoguid, (formalname ||'' ''|| shortname) FROM NSISM.NSI_ADDROBJ WHERE aolevel=1 AND is_actual; ') AS regions(aoguid VARCHAR(36), formatted_name VARCHAR(255))
  85.                 ) regions ON regions.aoguid = vta.region_code
  86. WHERE
  87.     vt.voting_status IN ('FINISHED')
  88.     AND EXTRACT(YEAR FROM vv.protocol_date) = 2021;
  89.  
  90. DELETE FROM tmp_voting WHERE row_num>1;
  91.  
  92. DROP TABLE IF EXISTS tmp_used_orgs;
  93. CREATE TEMPORARY TABLE tmp_used_orgs AS
  94. SELECT
  95.     DISTINCT management_organization_guid
  96. FROM
  97.     tmp_voting;
  98.    
  99. DROP TABLE IF EXISTS tmp_used_orgs_with_names;
  100. CREATE TEMPORARY TABLE tmp_used_orgs_with_names AS
  101. SELECT
  102.     tmp_used_orgs.management_organization_guid,
  103.     ppa_org.org_name,
  104.     ppa_org.ogrn
  105. FROM
  106.     tmp_used_orgs
  107.     INNER JOIN dblink('hcsppadb_d', 'SELECT guid, COALESCE(organization_short_name, organization_full_name), ogrn FROM ppasm.ppa_organizations') AS ppa_org(guid varchar(36), org_name varchar(4000), ogrn varchar(15)) ON ppa_org.guid = tmp_used_orgs.management_organization_guid;
  108.  
  109. DROP TABLE IF EXISTS tmp_result;
  110. CREATE TEMPORARY TABLE tmp_result AS
  111. SELECT
  112.     MAX(fias_region_code) AS fias_region_code,
  113.     MAX(region_formatted_name) AS region_formatted_name,
  114.     MAX(protocol_code) AS protocol_number,
  115.     MAX(protocol_date) AS protocol_date,
  116.     STRING_AGG(formatted_address, ', ') AS formatted_address,
  117.     STRING_AGG(fias_house_code, ', ') AS fias_house_code,
  118.     MAX(tmp_used_orgs_with_names.org_name) AS org_name,
  119.     MAX(meeting_place) AS meeting_place,
  120.     MAX(voting_form_name) AS voting_form_name,
  121.     MAX(voting_type_name) AS voting_type_name,
  122.     MAX(meeting_type_name) AS meeting_type_name,
  123.     MAX(meeting_eligibility_name) AS meeting_eligibility_name,
  124.     BOOL_AND(use_hcs) AS use_hcs
  125. FROM
  126.     tmp_voting
  127.     LEFT JOIN tmp_used_orgs_with_names ON tmp_used_orgs_with_names.management_organization_guid = tmp_voting.management_organization_guid
  128. GROUP BY
  129.     tmp_voting.voting_guid;
  130.  
  131. SELECT * FROM tmp_result;
Advertisement
Add Comment
Please, Sign In to add comment