From 09c05e2f9b094e1cae55269c3b412f717477d2bf Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 14 Aug 2026 18:08:36 +0300 Subject: [PATCH] 073 deep debug --- Application.cfc | 4 +- MemoryDbHelper.cfc | 3 +- payg.cfm | 198 ++++++++++++++++++++++++++++----------------- 3 files changed, 129 insertions(+), 76 deletions(-) diff --git a/Application.cfc b/Application.cfc index 4ccb6bf..1e78b69 100644 --- a/Application.cfc +++ b/Application.cfc @@ -27,7 +27,7 @@ - + diff --git a/MemoryDbHelper.cfc b/MemoryDbHelper.cfc index 22b795a..3c95c3a 100644 --- a/MemoryDbHelper.cfc +++ b/MemoryDbHelper.cfc @@ -1,5 +1,5 @@ component { - + /*0.02 timestamp support*/ /** * HSQL 1.8 * Принимает Lucee Query, создает в HSQL временную таблицу и льет в нее данные @@ -69,6 +69,7 @@ component { case "DOUBLE": case "FLOAT": case "REAL": return "DOUBLE"; case "BOOLEAN": case "BIT": return "BIT"; case "DECIMAL": case "NUMERIC": return "DECIMAL(20,6)"; + case "TIMESTAMP": case "DATE": case "TIME": return "TIMESTAMP"; default: return "LONGVARCHAR"; // И тут тоже } } diff --git a/payg.cfm b/payg.cfm index 1e1a706..ffcefac 100644 --- a/payg.cfm +++ b/payg.cfm @@ -44,19 +44,21 @@ ---> + select k.id_klienta as wz, k.__id::text as contragent_uid, p.code, - SUBSTRING(p.code FROM 1 FOR LENGTH(p.code) - 2) as service_code, + SUBSTRING(p.code FROM 1 FOR LENGTH(p.code) - 2) as sku_code, p.price, p.discount, k.__name as contragent, a.__name as contract, a.__id::text as contract_uid, d.__name as deal, d.__id::text as deal_uid, siv.abstractive_service as abstract_service, siv.modifier, siv.user_description, siv.hash as line_key - ,siv.date_nop as dt_from, siv.date_end as dt_to, siv.discount as service_discount, siv.cnt as service_quantity + ,siv.date_nop as serviceStart, siv.date_end as serviceEnd, siv.discount as service_discount, siv.cnt as service_quantity /*,p.__name as line_key*/, p.ed_izm, p.name as component, p.type, p.cnt*coalesce(siv.cnt,1) as component_quantity, aa.__name as additional_agreement, aa.__id::text as additional_agreement_uid --, aa.is_actual ,siv.end_customer as end_customer_uid ,z.id_klienta as end_customer_wz ,z.__name as end_customer_name + ,ft.free_tier from elma.deals d join elma.deals_services siv on (d.__id=ANY(siv.deal)) join elma.service_parametrs p on (p.__id = ANY(siv.params)) @@ -64,6 +66,7 @@ join elma.additional_agreements aa on (aa.__id = ANY(siv.additional_agreement)) join elma.aggrements a on (aa.contract_uid = a.__id) left outer join elma.companies z on (siv.end_customer=z.__id) + left outer join (values ('paas.s3.ceph.vol-m',1),('paas.s3.ceph.get-m',10),('paas.s3.ceph.put-m',1),('paas.s3.ceph.trf-m',100)) as ft(code,free_tier) ON (p.code=ft.code) where p.type IN (2,3) AND aa.is_actual AND siv.date_nop < AND (siv.date_end > OR siv.date_end IS NULL)/*****/ @@ -146,8 +149,8 @@ ELSE '.['|| storage_profile_types.name ||']' END as code, storage_profile_types.name as profile, - sum("limit")/1024./4./720. as gb_m_limit, -- 4 потому, что сбор раз в 15 минут - sum(used)/1024./4./720. as gb_m_used -- 720 это количество часов в условном месяце + sum("limit")/1024./4./ as gb_m_limit, -- 4 потому, что сбор раз в 15 минут + sum(used)/1024./4./ as gb_m_used from ngcloud_ru.capacity_storage join ngcloud_ru.vdc on capacity_storage.vdc_id=vdc.id join ngcloud_ru.tenant t on t.id=vdc.tenant_id @@ -186,10 +189,7 @@ HOT_FREE_LIMIT 1 10 1 100 select /* *** ниже дублирование кода агрегации - round ceil etc, обратить внимание при правке */ (sum(bucket_stat.usage_rgw_main_size_actual)/) as vol_B - ,ceil(sum(bucket_stat.usage_rgw_main_size_actual)//1024/1024/1024) as vol_GB - ,greatest(ceil(sum(bucket_stat.usage_rgw_main_size_actual)/ - /1024/1024/1024)- - case when bucket_stat.placement_id = 1 then 1 else 0 end, 0) as vol_GB_free_tier_subtracted /*считается не в точности так, как в функции*/ + ,sum(bucket_stat.usage_rgw_main_size_actual)//1024/1024/1024 as vol_GB ,case when bucket_stat.placement_id = 1 then 'paas.s3.ceph' when bucket_stat.placement_id = 2 then 'paas.s3.cphc' @@ -311,31 +311,31 @@ select -select wz, code || '.vcpu' as code, core_h as raw_metric, core_h as metric, core_h as chargeable_metric, 'core-h' as unit, vdc as dimension1 +select wz, code || '.vcpu' as code, core_h as raw_metric, core_h as metric, 'core-h' as unit, vdc as dimension1 from qComputing union all -select wz, code || '.ram', gb_h as raw_metric, gb_h as metric, gb_h as chargeable_metric, 'GByte-h' as unit, vdc as dimension1 +select wz, code || '.ram', gb_h as raw_metric, gb_h as metric, 'GByte-h' as unit, vdc as dimension1 from qComputing union all -select wz, code, gb_m_used as raw_metric, gb_m_used as metric, gb_m_used as chargeable_metric, 'GByte-m' as unit, vdc ||':'|| profile as dimension1 +select wz, code, gb_m_used as raw_metric, gb_m_used as metric, 'GByte-m' as unit, vdc ||':'|| profile as dimension1 from qStorage union all -select wz, code || '.vol', vol_b as raw_metric, vol_gb as metric, vol_GB_free_tier_subtracted as chargeable_metric, 'GByte-m' as unit, bucket as dimension1 +select wz, code || '.vol', vol_b as raw_metric, vol_gb as metric, 'GByte-m' as unit, bucket as dimension1 from qS3Vol union all -select wz, code || '.get', get as raw_metric, get_10k as metric, get_10k_free_tier_subtracted as chargeable_metric, '10k' as unit, bucket as dimension1 +select wz, code || '.get', get as raw_metric, get_10k as metric, '10k' as unit, bucket as dimension1 from qS3OpsTrf union all -select wz, code || '.put', put as raw_metric, put_10k as metric, put_10k_free_tier_subtracted as chargeable_metric, '10k' as unit, bucket as dimension1 +select wz, code || '.put', put as raw_metric, put_10k as metric, '10k' as unit, bucket as dimension1 from qS3OpsTrf union all -select wz, code || '.trf', bytes_sent as raw_metric, bytes_sent_gb as metric, bytes_sent_gb_free_tier_subtracted as chargeable_metric, 'GByte' as unit, bucket as dimension1 +select wz, code || '.trf', bytes_sent as raw_metric, bytes_sent_gb as metric, 'GByte' as unit, bucket as dimension1 from qS3OpsTrf order by wz, code @@ -368,21 +368,25 @@ SELECT m.wz as wzm s.end_customer_wz as wze coalesce(s.code, m.code) as code - s.code as s_code - s.component_quantity + s.code as s_code + s.sku_code as sku_code m.code as m_code + s.component_quantity + s.service_quantity + s.service_discount + coalesce(s.free_tier,0) as free_tier m.dimension1 s.type - ceiling(m.chargeable_metric) as chargeable_metric + m.unit s.ed_izm - s.service_quantity*(100-s.service_discount)/100*s.price*(100-s.discount)/100 as discounted_price - CASE WHEN s.type=3 THEN s.service_quantity*(100-s.service_discount)/100*s.price*(100-s.discount)/100*ceiling(m.chargeable_metric) ELSE NULL END as charge - s.dt_from - s.dt_to + coalesce(s.service_quantity*(100.-s.service_discount)/100.*s.price*(100.-s.discount)/100., 0.) as discounted_price + + s.serviceStart + s.serviceEnd s.line_key s.price - s.discount + s.discount m.raw_metric m.metric @@ -400,7 +404,7 @@ SELECT s.user_description FROM qUnifiedMetric m -FULL JOIN qSpec s ON (m.wz=s.wz AND m.code=s.service_code) -- или компонент, но не цена +FULL JOIN qSpec s ON (m.wz=s.wz AND m.code=s.sku_code) -- сервис или компонент, но не цена с типом тарификации LEFT JOIN qContragent c ON (trim(coalesce(s.wz,m.wz))=trim(c.wz)) -- пробелы тут стоили нескольких часов работы WHERE 1=1 --AND (s.type=3 OR NOT m.metric IS NULL) @@ -415,7 +419,7 @@ AND 1=0 ---> ORDER BY coalesce(coalesce(c.wz, m.wz), s.wz), coalesce(s.code, m.code) - + qCharge:#getTickCount()-request.startTickCount# @@ -472,31 +476,40 @@ S3 операции и трафик: #dateFormat(qS3OpsTrfAge.dt_load,'YYYY-M - Артикул спец. - Кол-во спец. - Артикул метр. - + Артикул специф. + Кол-во специф. + Артикул метр. + Детализация Кол-во метр. + Free Tier. + Опл. объем Ед.изм. Цена ₽ со скид., с НДС Стоимость ₽ с НДС     - Услуга - Компонент - Клиентс. назв. + Услуга + Компонент + Клиентс. назв. GPL с НДС Скидка% - Дата НОУ - Дата оконч. + Дата НОУ *** + Дата оконч. - Ключ строки + Ключ строки Сырая метрика Приведен­ная метрика + Цена ₽ до ск. с НДС + Цена ₽ co ск. с НДС без окр. + Service Quantity + Service Discount + Component Quantity + Component Discount + Договор Допник Сделка @@ -505,7 +518,10 @@ S3 операции и трафик: #dateFormat(qS3OpsTrfAge.dt_load,'YYYY-M - + + + + @@ -516,48 +532,84 @@ S3 операции и трафик: #dateFormat(qS3OpsTrfAge.dt_load,'YYYY-M - - - class="gray"> - #currentRow# + + + + + + + + + + + class="gray"> + #currentRow# + + style="background:lightgreen;color:black;">#s_code# + "err r""r">#component_quantity# + #m_code# + #dimension1# + #request.roundSafe(metric,3)# + #free_tier# + + #unit# [#ed_izm#] + #gaussianRound(discounted_price,2)# + + + + + #abstract_service# #modifier# + #component# + #user_description# + + #gaussianRoundSafe(price,2)# + #discount# + + #dateFormat(serviceStart,'YYYY-MM-DD')# + #dateFormat(serviceEnd,'YYYY-MM-DD')# + + #line_key# + #request.roundSafe(raw_metric,3)# + #request.roundSafe(metric,3)# + + + #price# + #discounted_price# + #service_quantity# + #service_discount# + #component_quantity# + #discount# + + #contract# + #additional_agreement# + #deal# + #WZE# + + + + + + + + #code# + #round(final_metric_dimension_1,3)# + #free_tier# + #max(ceiling(final_metric_dimension_1) - free_tier, 0)# + #unit# [#ed_izm#] + #gaussianRoundSafe(discounted_price,2)# + #gaussianRoundSafe(cost_dimension_1,2)# + + + + - style="background:lightgreen;color:black;">#s_code# - #component_quantity# - #m_code# - #dimension1# - #request.roundSafe(chargeable_metric,3)# - #unit# [#ed_izm#] - #gaussianRoundSafe(discounted_price,2)# - #gaussianRoundSafe(charge,2)# - - - - #abstract_service# #modifier# - #component# - #user_description# - - #gaussianRoundSafe(price,2)# - #discount# - - #dateFormat(dt_from,'YYYY-MM-DD')# - #dateFormat(dt_to,'YYYY-MM-DD')# - - #line_key# - #request.roundSafe(raw_metric,3)# - #request.roundSafe(metric,3)# - #contract# - #additional_agreement# - #deal# - #WZE# - - - Итого #wz# #contragent#: - #NumFmt(acc,2)# + Итого #wz# #contragent#: + #accum_cost_svc# - +