Commit 1d747ef0 authored by mohammed.akhib's avatar mohammed.akhib

added ccpc report

parent 90cf805c
...@@ -65,6 +65,7 @@ class ReportType: ...@@ -65,6 +65,7 @@ class ReportType:
REFINERY_REPORT = "refinery_report" REFINERY_REPORT = "refinery_report"
ACP_REPORT = "acp_report" ACP_REPORT = "acp_report"
CCPP_REPORT = "ccpp_report" CCPP_REPORT = "ccpp_report"
CCPC_REPORT = "ccpc_report"
REFINERY_WORKSHEET_NAME = "REFINERY DAILY PERFORMANCE REPORT" REFINERY_WORKSHEET_NAME = "REFINERY DAILY PERFORMANCE REPORT"
ACP_WORKSHEET_NAME_1 = "VEDANTA LIMITED" ACP_WORKSHEET_NAME_1 = "VEDANTA LIMITED"
ACP_WORKSHEET_NAME_2 = "ANODE CASTING PLANT (ACP) - SHIFT INCHARGE LOG SHEET" ACP_WORKSHEET_NAME_2 = "ANODE CASTING PLANT (ACP) - SHIFT INCHARGE LOG SHEET"
......
...@@ -4194,9 +4194,10 @@ class SterliteCCPCQuery: ...@@ -4194,9 +4194,10 @@ class SterliteCCPCQuery:
class BLISTER: class BLISTER:
""" PARTICULARS """ """ PARTICULARS """
QUERY_1 = """ SELECT QUERY_1 = """ SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit,
'MT' as unit ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS on_date
FROM FROM
( (
SELECT SELECT
...@@ -4229,15 +4230,16 @@ class SterliteCCPCQuery: ...@@ -4229,15 +4230,16 @@ class SterliteCCPCQuery:
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit,
'MT' as unit ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd
FROM FROM
( (
SELECT SELECT
...@@ -4277,7 +4279,7 @@ class SterliteCCPCQuery: ...@@ -4277,7 +4279,7 @@ class SterliteCCPCQuery:
class KCMANODE: class KCMANODE:
QUERY_1 = """ QUERY_1 = """
SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS ondate, 'MT' as unit
FROM ( FROM (
SELECT date, 'KCM anodes' AS kpi, shift, COALESCE(kcm_a, '0') AS metric_value SELECT date, 'KCM anodes' AS kpi, shift, COALESCE(kcm_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4291,11 +4293,11 @@ class SterliteCCPCQuery: ...@@ -4291,11 +4293,11 @@ class SterliteCCPCQuery:
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
WHERE LOWER(shift) = 'shift c' WHERE LOWER(shift) = 'shift c'
) foo ) foo
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1 ; GROUP BY 1 ;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd, 'MT' as unit
FROM ( FROM (
SELECT date, 'KCM anodes' AS kpi, shift, COALESCE(kcm_a, '0') AS metric_value SELECT date, 'KCM anodes' AS kpi, shift, COALESCE(kcm_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4315,7 +4317,7 @@ class SterliteCCPCQuery: ...@@ -4315,7 +4317,7 @@ class SterliteCCPCQuery:
class DINGOT: class DINGOT:
QUERY_1 = """ QUERY_1 = """
SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS ondate, 'MT' as unit
FROM ( FROM (
SELECT date, 'Dingot' AS kpi, shift, COALESCE(dingots_a, '0') AS metric_value SELECT date, 'Dingot' AS kpi, shift, COALESCE(dingots_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4333,11 +4335,11 @@ class SterliteCCPCQuery: ...@@ -4333,11 +4335,11 @@ class SterliteCCPCQuery:
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
WHERE LOWER(shift) = 'shift c' WHERE LOWER(shift) = 'shift c'
) foo ) foo
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1 ; GROUP BY 1 ;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd, 'MT' as unit
FROM ( FROM (
SELECT date, 'Dingot' AS kpi, shift, COALESCE(dingots_a, '0') AS metric_value SELECT date, 'Dingot' AS kpi, shift, COALESCE(dingots_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4360,7 +4362,7 @@ class SterliteCCPCQuery: ...@@ -4360,7 +4362,7 @@ class SterliteCCPCQuery:
""" """
class IMPORTEDSPENTANODE: class IMPORTEDSPENTANODE:
QUERY_1 = """SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit QUERY_1 = """SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS ondate, 'MT' as unit
FROM ( FROM (
SELECT date, 'Imported Spent Anode' AS kpi, shift, COALESCE(import_spent_a, '0') AS metric_value SELECT date, 'Imported Spent Anode' AS kpi, shift, COALESCE(import_spent_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4377,10 +4379,11 @@ class SterliteCCPCQuery: ...@@ -4377,10 +4379,11 @@ class SterliteCCPCQuery:
SELECT date, 'Imported Spent Anode' AS kpi, shift, COALESCE(import_spent_c, '0') AS metric_value SELECT date, 'Imported Spent Anode' AS kpi, shift, COALESCE(import_spent_c, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
WHERE LOWER(shift) = 'shift c' WHERE LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1 ; GROUP BY 1 ;
""" """
QUERY_2 = """SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit QUERY_2 = """SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd, 'MT' as unit
FROM ( FROM (
SELECT date, 'Imported Spent Anode' AS kpi, shift, COALESCE(import_spent_a, '0') AS metric_value SELECT date, 'Imported Spent Anode' AS kpi, shift, COALESCE(import_spent_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4397,13 +4400,14 @@ class SterliteCCPCQuery: ...@@ -4397,13 +4400,14 @@ class SterliteCCPCQuery:
SELECT date, 'Imported Spent Anode' AS kpi, shift, COALESCE(import_spent_c, '0') AS metric_value SELECT date, 'Imported Spent Anode' AS kpi, shift, COALESCE(import_spent_c, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
WHERE LOWER(shift) = 'shift c' WHERE LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1 ; GROUP BY 1 ;
""" """
class CURODRM: class CURODRM:
QUERY_1 = """ QUERY_1 = """
SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS ondate, 'MT' as unit
FROM ( FROM (
SELECT date, 'Cu-rod RM' AS kpi, shift, COALESCE(cu_rod_rm_a, '0') AS metric_value SELECT date, 'Cu-rod RM' AS kpi, shift, COALESCE(cu_rod_rm_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4420,11 +4424,12 @@ class SterliteCCPCQuery: ...@@ -4420,11 +4424,12 @@ class SterliteCCPCQuery:
SELECT date, 'Cu-rod RM' AS kpi, shift, COALESCE(cu_rod_rm_c, '0') AS metric_value SELECT date, 'Cu-rod RM' AS kpi, shift, COALESCE(cu_rod_rm_c, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
WHERE LOWER(shift) = 'shift c' WHERE LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1 ; GROUP BY 1 ;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd, 'MT' as unit
FROM ( FROM (
SELECT date, 'Cu-rod RM' AS kpi, shift, COALESCE(cu_rod_rm_a, '0') AS metric_value SELECT date, 'Cu-rod RM' AS kpi, shift, COALESCE(cu_rod_rm_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4441,15 +4446,16 @@ class SterliteCCPCQuery: ...@@ -4441,15 +4446,16 @@ class SterliteCCPCQuery:
SELECT date, 'Cu-rod RM' AS kpi, shift, COALESCE(cu_rod_rm_c, '0') AS metric_value SELECT date, 'Cu-rod RM' AS kpi, shift, COALESCE(cu_rod_rm_c, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
WHERE LOWER(shift) = 'shift c' WHERE LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1 ; GROUP BY 1 ;
""" """
class MASTERALLOY: class MASTERALLOY:
QUERY_1 = """ QUERY_1 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS ondate,
'0.971' as unit '0.971' as unit
FROM FROM
( (
...@@ -4483,13 +4489,14 @@ class SterliteCCPCQuery: ...@@ -4483,13 +4489,14 @@ class SterliteCCPCQuery:
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo
WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT SELECT
kpi, kpi,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS mtd,
'0.971' as unit '0.971' as unit
FROM FROM
( (
...@@ -4522,7 +4529,8 @@ class SterliteCCPCQuery: ...@@ -4522,7 +4529,8 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
...@@ -4530,8 +4538,8 @@ class SterliteCCPCQuery: ...@@ -4530,8 +4538,8 @@ class SterliteCCPCQuery:
class CUSHAVINGS: class CUSHAVINGS:
QUERY_1 = """ QUERY_1 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -4564,14 +4572,15 @@ class SterliteCCPCQuery: ...@@ -4564,14 +4572,15 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -4604,7 +4613,8 @@ class SterliteCCPCQuery: ...@@ -4604,7 +4613,8 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
...@@ -4612,8 +4622,8 @@ class SterliteCCPCQuery: ...@@ -4612,8 +4622,8 @@ class SterliteCCPCQuery:
class SAPPRODUCTIONBOOKING: class SAPPRODUCTIONBOOKING:
QUERY_1 = """ QUERY_1 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -4646,14 +4656,15 @@ class SterliteCCPCQuery: ...@@ -4646,14 +4656,15 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -4686,7 +4697,8 @@ class SterliteCCPCQuery: ...@@ -4686,7 +4697,8 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
...@@ -4694,8 +4706,8 @@ class SterliteCCPCQuery: ...@@ -4694,8 +4706,8 @@ class SterliteCCPCQuery:
class DOCATHODE: class DOCATHODE:
QUERY_1 = """ QUERY_1 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS ondate,
'' as unit '' as unit
FROM FROM
( (
...@@ -4728,14 +4740,15 @@ class SterliteCCPCQuery: ...@@ -4728,14 +4740,15 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS mtd,
'' as unit '' as unit
FROM FROM
( (
...@@ -4768,15 +4781,16 @@ class SterliteCCPCQuery: ...@@ -4768,15 +4781,16 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
class REFINERYSPENTANODE: class REFINERYSPENTANODE:
QUERY_1 = """SELECT QUERY_1 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -4809,12 +4823,13 @@ class SterliteCCPCQuery: ...@@ -4809,12 +4823,13 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
QUERY_2 = """SELECT QUERY_2 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -4847,14 +4862,15 @@ class SterliteCCPCQuery: ...@@ -4847,14 +4862,15 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
class REFINERYREJECTEDANODE: class REFINERYREJECTEDANODE:
QUERY_1 = """SELECT QUERY_1 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -4887,12 +4903,13 @@ class SterliteCCPCQuery: ...@@ -4887,12 +4903,13 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
QUERY_2 = """SELECT QUERY_2 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -4925,12 +4942,13 @@ class SterliteCCPCQuery: ...@@ -4925,12 +4942,13 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
class REJECTEDCOILS: class REJECTEDCOILS:
QUERY_1 = """SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit QUERY_1 = """SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS ondate, 'MT' as unit
FROM ( FROM (
SELECT date, 'Rejected coils' AS kpi, shift, COALESCE(rejected_coil_a, '0') AS metric_value SELECT date, 'Rejected coils' AS kpi, shift, COALESCE(rejected_coil_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4947,9 +4965,10 @@ class SterliteCCPCQuery: ...@@ -4947,9 +4965,10 @@ class SterliteCCPCQuery:
SELECT date, 'Rejected coils' AS kpi, shift, COALESCE(rejected_coil_c, '0') AS metric_value SELECT date, 'Rejected coils' AS kpi, shift, COALESCE(rejected_coil_c, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
WHERE LOWER(shift) = 'shift c' WHERE LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1 ;""" GROUP BY 1 ;"""
QUERY_2 = """SELECT kpi, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, 'MT' as unit QUERY_2 = """SELECT kpi as particulars, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd, 'MT' as unit
FROM ( FROM (
SELECT date, 'Rejected coils' AS kpi, shift, COALESCE(rejected_coil_a, '0') AS metric_value SELECT date, 'Rejected coils' AS kpi, shift, COALESCE(rejected_coil_a, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
...@@ -4966,14 +4985,15 @@ class SterliteCCPCQuery: ...@@ -4966,14 +4985,15 @@ class SterliteCCPCQuery:
SELECT date, 'Rejected coils' AS kpi, shift, COALESCE(rejected_coil_c, '0') AS metric_value SELECT date, 'Rejected coils' AS kpi, shift, COALESCE(rejected_coil_c, '0') AS metric_value
FROM semantic_prod.charging_details_ccpc_new FROM semantic_prod.charging_details_ccpc_new
WHERE LOWER(shift) = 'shift c' WHERE LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1 ;""" GROUP BY 1 ;"""
class GGRADE: class GGRADE:
QUERY_1 = """ QUERY_1 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5006,14 +5026,15 @@ class SterliteCCPCQuery: ...@@ -5006,14 +5026,15 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5046,7 +5067,8 @@ class SterliteCCPCQuery: ...@@ -5046,7 +5067,8 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
...@@ -5054,8 +5076,8 @@ class SterliteCCPCQuery: ...@@ -5054,8 +5076,8 @@ class SterliteCCPCQuery:
class ACPREJANODE: class ACPREJANODE:
QUERY_1 = """ QUERY_1 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5088,14 +5110,15 @@ class SterliteCCPCQuery: ...@@ -5088,14 +5110,15 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
QUERY_2 = """ QUERY_2 = """
SELECT SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)),2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5128,15 +5151,16 @@ class SterliteCCPCQuery: ...@@ -5128,15 +5151,16 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
class BERRY: class BERRY:
QUERY_1 = """SELECT QUERY_1 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5169,12 +5193,13 @@ class SterliteCCPCQuery: ...@@ -5169,12 +5193,13 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
QUERY_2 = """SELECT QUERY_2 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5207,14 +5232,14 @@ class SterliteCCPCQuery: ...@@ -5207,14 +5232,14 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
class RFNYCUTCOIL: class RFNYCUTCOIL:
QUERY_1 = """SELECT QUERY_1 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5247,12 +5272,13 @@ class SterliteCCPCQuery: ...@@ -5247,12 +5272,13 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
QUERY_2 = """SELECT QUERY_2 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5285,14 +5311,15 @@ class SterliteCCPCQuery: ...@@ -5285,14 +5311,15 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
class CCPCREJANODE: class CCPCREJANODE:
QUERY_1 = """SELECT QUERY_1 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5325,12 +5352,13 @@ class SterliteCCPCQuery: ...@@ -5325,12 +5352,13 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
QUERY_2 = """SELECT QUERY_2 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5363,14 +5391,15 @@ class SterliteCCPCQuery: ...@@ -5363,14 +5391,15 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
class ANODEREJECTION: class ANODEREJECTION:
QUERY_1 = """SELECT QUERY_1 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS ondate,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5403,12 +5432,13 @@ class SterliteCCPCQuery: ...@@ -5403,12 +5432,13 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
QUERY_2 = """SELECT QUERY_2 = """SELECT
kpi, kpi as particulars,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS mtd,
'MT' as unit 'MT' as unit
FROM FROM
( (
...@@ -5441,7 +5471,8 @@ class SterliteCCPCQuery: ...@@ -5441,7 +5471,8 @@ class SterliteCCPCQuery:
semantic_prod.charging_details_ccpc_new semantic_prod.charging_details_ccpc_new
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY GROUP BY
1;""" 1;"""
...@@ -5449,8 +5480,8 @@ class SterliteCCPCQuery: ...@@ -5449,8 +5480,8 @@ class SterliteCCPCQuery:
""" TOTAL BREAKDOWN DETAILS """ """ TOTAL BREAKDOWN DETAILS """
QUERY_1 = """ QUERY_1 = """
SELECT SELECT
TYPE_OF_BREAKDOWN AS KPI, TYPE_OF_BREAKDOWN AS kpi,
ROUND(SUM(BREAKDOWN_DURATION_HOURS * 60),2) AS BREAKDOWN_DURATION_MINS ROUND(SUM(BREAKDOWN_DURATION_HOURS * 60),2) AS breakdown_duration_hours
FROM FROM
SEMANTIC_PROD.CCPC_DOWNTIME_KPI_VIEW SEMANTIC_PROD.CCPC_DOWNTIME_KPI_VIEW
WHERE WHERE
...@@ -5459,12 +5490,12 @@ class SterliteCCPCQuery: ...@@ -5459,12 +5490,12 @@ class SterliteCCPCQuery:
""" """
QUERY_2 = """ QUERY_2 = """
SELECT SELECT
'TOTAL(MINS)' AS KPI, 'TOTAL(MINS)' AS kpi,
ROUND(SUM(BREAKDOWN_DURATION_HOURS * 60),2) AS BREAKDOWN_DURATION_HOURS ROUND(SUM(BREAKDOWN_DURATION_HOURS * 60),2) AS breakdown_duration_hours
FROM FROM
SEMANTIC_PROD.CCPC_DOWNTIME_KPI_VIEW SEMANTIC_PROD.CCPC_DOWNTIME_KPI_VIEW
WHERE WHERE
DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1 1
""" """
...@@ -5473,100 +5504,14 @@ class SterliteCCPCQuery: ...@@ -5473,100 +5504,14 @@ class SterliteCCPCQuery:
""" METAL TEMP """ """ METAL TEMP """
QUERY_1 = """ QUERY_1 = """
select select
select_ccpc as kpi, select_ccpp as temp,
avg(value_ccpp) as metric_value avg(value_ccpp) as on_date
from from
semantic_prod.ccpp_ctp_new semantic_prod.ccpp_ctp_new
WHERE
DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}'
group by
1
"""
QUERY_2 = """
SELECT
'Cell House Anode Availability' AS ANODE_AVAILABILITY,
'%' AS UOM,
ROUND(((SUM(ANODE.NUMERATOR) / NULLIF(SUM(DENOMINATOR), 0)) * 100
)::NUMERIC, 2) AS MTD
FROM
(SELECT ACTUAL.AA_NUMO AS NUMERATOR,
ACTUAL.AA_DENO AS DENOMINATOR,
PLAN.AA_PLANNED,
COALESCE(ACTUAL.DATE,
PLAN.DATE) AS date
FROM SEMANTIC_PROD.REFINERY_ANODE_AVAILABILITY_ACTUAL_VIEW ACTUAL
FULL JOIN
(SELECT DD_1.DATE_DT AS date,
M_PLAN.AA_PLANNED
FROM
(SELECT DATE(date) AS POSTING_DATE,
ANODE_AVAILABILITY_VALUE::numeric AS AA_PLANNED
FROM SEMANTIC_DEV.ANODE_AVAILABILITY
WHERE
LOWER(TRIM(ANODE_AVAILABILITY_SELECT)) =
'anode availability'
AND DATE_PART('day',date) = 1
GROUP BY 1,
2)M_PLAN
LEFT JOIN
(SELECT DIM_DATE.DATE_DT,
DIM_DATE.MONTH_OF_YR_NUM AS MNTH,
DIM_DATE.YR_NAME AS YR
FROM SEMANTIC_PROD.DIM_DATE) DD_1 ON
DD_1.MNTH = DATE_PART('month', M_PLAN.POSTING_DATE)
AND DD_1.YR = DATE_PART('year', M_PLAN.POSTING_DATE))PLAN
ON ACTUAL.DATE = PLAN.DATE)ANODE
WHERE WHERE
DATE BETWEEN '{month_start_date}' AND '{month_end_date}' DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
group by
GROUP BY 1;
1,2;
"""
QUERY_3 = """
SELECT
'Cell House Anode Availability' AS ANODE_AVAILABILITY,
'%' AS UOM,
ROUND(((SUM(ANODE.NUMERATOR) / NULLIF(SUM(DENOMINATOR), 0)) *
100)::NUMERIC, 2) AS YTD
FROM
(SELECT ACTUAL.AA_NUMO AS NUMERATOR,
ACTUAL.AA_DENO AS DENOMINATOR,
PLAN.AA_PLANNED,
COALESCE(ACTUAL.DATE,
PLAN.DATE) AS date
FROM SEMANTIC_PROD.REFINERY_ANODE_AVAILABILITY_ACTUAL_VIEW ACTUAL
FULL JOIN
(SELECT DD_1.DATE_DT AS date,
M_PLAN.AA_PLANNED
FROM
(SELECT DATE(date) AS POSTING_DATE,
ANODE_AVAILABILITY_VALUE::numeric AS AA_PLANNED
FROM SEMANTIC_DEV.ANODE_AVAILABILITY
WHERE
LOWER(TRIM(ANODE_AVAILABILITY_SELECT)) =
'anode availability'
AND DATE_PART('day',date) = 1
GROUP BY 1,
2)M_PLAN
LEFT JOIN
(SELECT DIM_DATE.DATE_DT,
DIM_DATE.MONTH_OF_YR_NUM AS MNTH,
DIM_DATE.YR_NAME AS YR
FROM SEMANTIC_PROD.DIM_DATE) DD_1 ON
DD_1.MNTH = DATE_PART('month', M_PLAN.POSTING_DATE)
AND DD_1.YR = DATE_PART('year', M_PLAN.POSTING_DATE))PLAN
ON ACTUAL.DATE = PLAN.DATE)ANODE
WHERE
DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY
1,2;
""" """
class PersonOnDuty: class PersonOnDuty:
...@@ -5581,8 +5526,9 @@ class SterliteCCPCQuery: ...@@ -5581,8 +5526,9 @@ class SterliteCCPCQuery:
""" """
class ChargingDetails: class ChargingDetails:
QUERY_1 = """select QUERY_1 = """
kpi as parameter, select
kpi as charging_details,
sum(shift_a) as shift_a, sum(shift_a) as shift_a,
sum(shift_b) as shift_b, sum(shift_b) as shift_b,
sum(shift_c) as shift_c, sum(shift_c) as shift_c,
...@@ -5590,15 +5536,15 @@ class SterliteCCPCQuery: ...@@ -5590,15 +5536,15 @@ class SterliteCCPCQuery:
from from
semantic_prod.ccpc_custom_rprt_charging_details semantic_prod.ccpc_custom_rprt_charging_details
where where
DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
and kpi not in ('Total') and kpi not in ('Total')
group by group by
1 1
order by order by
total DESC; total DESC;
""" """
QUERY_2 = """select QUERY_2 = """ select
kpi as parameter, kpi as charging_details,
sum(shift_a) as shift_a, sum(shift_a) as shift_a,
sum(shift_b) as shift_b, sum(shift_b) as shift_b,
sum(shift_c) as shift_c, sum(shift_c) as shift_c,
...@@ -5606,7 +5552,7 @@ class SterliteCCPCQuery: ...@@ -5606,7 +5552,7 @@ class SterliteCCPCQuery:
from from
semantic_prod.ccpc_custom_rprt_charging_details semantic_prod.ccpc_custom_rprt_charging_details
where where
DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
and kpi in ('Total') and kpi in ('Total')
group by group by
1 1
...@@ -5616,9 +5562,9 @@ class SterliteCCPCQuery: ...@@ -5616,9 +5562,9 @@ class SterliteCCPCQuery:
class BariumSulphate: class BariumSulphate:
QUERY_1 = """SELECT QUERY_1 = """SELECT
kpi, kpi AS consumption_items,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, 'KG/MT' as unit,
'KG/MT' as unit ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS on_date
FROM FROM
( (
SELECT SELECT
...@@ -5659,9 +5605,10 @@ class SterliteCCPCQuery: ...@@ -5659,9 +5605,10 @@ class SterliteCCPCQuery:
1; 1;
""" """
QUERY_2 = """SELECT QUERY_2 = """SELECT
kpi, kpi AS consumption_items,
ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS metric_value, 'KG/MT' as unit,
'KG/MT' as unit ROUND(SUM(CAST(metric_value AS NUMERIC)), 2) AS mtd
FROM FROM
( (
SELECT SELECT
...@@ -5704,9 +5651,10 @@ class SterliteCCPCQuery: ...@@ -5704,9 +5651,10 @@ class SterliteCCPCQuery:
class SodiumSulphate: class SodiumSulphate:
QUERY_1 = """SELECT QUERY_1 = """SELECT
kpi, kpi AS consumption_items,
SUM(CAST(metric_value AS NUMERIC)) AS metric_value, 'KG/MT' as unit,
'KG/MT' as unit SUM(CAST(metric_value AS NUMERIC)) AS on_date
FROM FROM
( (
SELECT SELECT
...@@ -5742,14 +5690,15 @@ class SterliteCCPCQuery: ...@@ -5742,14 +5690,15 @@ class SterliteCCPCQuery:
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
and sodium_silicate_c != '' and sodium_silicate_c != ''
) foo ) foo
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY GROUP BY
1; 1;
""" """
QUERY_2 = """SELECT QUERY_2 = """SELECT
kpi, kpi AS consumption_items,
SUM(CAST(metric_value AS NUMERIC)) AS metric_value, 'KG/MT' as unit,
'KG/MT' as unit SUM(CAST(metric_value AS NUMERIC)) AS mtd
FROM FROM
( (
SELECT SELECT
...@@ -5792,17 +5741,17 @@ class SterliteCCPCQuery: ...@@ -5792,17 +5741,17 @@ class SterliteCCPCQuery:
class Power: class Power:
QUERY_1 = """select QUERY_1 = """select
'power' as kpi, 'power' as consumption_items,
'KWH/MT' as unit, 'KWH/MT' as unit,
power_consumption1 as metric_value power_consumption1 as on_date
from from
semantic_prod.ccpc_actual_production_2 semantic_prod.ccpc_actual_production_2
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}'; WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}';
""" """
QUERY_2 = """select QUERY_2 = """select
'power' as kpi, 'power' as consumption_items,
'KWH/MT' as unit, 'KWH/MT' as unit,
power_consumption1 as metric_value power_consumption1 as mtd
from from
semantic_prod.ccpc_actual_production_2 semantic_prod.ccpc_actual_production_2
WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}'; WHERE DATE BETWEEN '{month_start_date}' AND '{month_end_date}';
...@@ -5814,7 +5763,7 @@ class SterliteCCPCQuery: ...@@ -5814,7 +5763,7 @@ class SterliteCCPCQuery:
avg(value_ccpc) as metric_value avg(value_ccpc) as metric_value
from from
semantic_prod.ccpc_ctq_new semantic_prod.ccpc_ctq_new
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
group by group by
1; 1;
""" """
...@@ -5841,12 +5790,12 @@ class SterliteCCPCQuery: ...@@ -5841,12 +5790,12 @@ class SterliteCCPCQuery:
FROM semantic_prod.ccpc_anode_weight FROM semantic_prod.ccpc_anode_weight
WHERE LOWER(shift) = 'shift c' WHERE LOWER(shift) = 'shift c'
) foo ) foo
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}';
""" """
class Tbc: class Tbc:
QUERY_1 = """SELECT QUERY_1 = """
kpi, SELECT kpi,
shift, shift,
value, value,
CAST(date AS TIME) AS time CAST(date AS TIME) AS time
...@@ -5882,7 +5831,7 @@ class SterliteCCPCQuery: ...@@ -5882,7 +5831,7 @@ class SterliteCCPCQuery:
WHERE WHERE
LOWER(shift) = 'shift cc' LOWER(shift) = 'shift cc'
) foo ) foo
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}';
""" """
QUERY_2 = """SELECT QUERY_2 = """SELECT
kpi, kpi,
...@@ -5921,7 +5870,7 @@ class SterliteCCPCQuery: ...@@ -5921,7 +5870,7 @@ class SterliteCCPCQuery:
WHERE WHERE
LOWER(shift) = 'shift cc' LOWER(shift) = 'shift cc'
) foo ) foo
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}';
""" """
QUERY_3 = """SELECT QUERY_3 = """SELECT
kpi, kpi,
...@@ -5960,15 +5909,16 @@ class SterliteCCPCQuery: ...@@ -5960,15 +5909,16 @@ class SterliteCCPCQuery:
WHERE WHERE
LOWER(shift) = 'shift c' LOWER(shift) = 'shift c'
) foo ) foo
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}' WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
""" """
class ProcessParameter: class ProcessParameter:
QUERY_1= """select QUERY_1 = """select
select_ccpc as kpi, select_ccpc as kpi,
avg(value_ccpc) as metric_value avg(value_ccpc) as metric_value
from from
semantic_prod.ccpc_ctq_new semantic_prod.ccpc_ctq_new
WHERE DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
group by group by
1 1
WHERE DATE BETWEEN '{DAY_START_DATE}' AND '{DAY_END_DATE}'
""" """
...@@ -3,6 +3,7 @@ import copy ...@@ -3,6 +3,7 @@ import copy
import pandas as pd import pandas as pd
from datetime import datetime from datetime import datetime
from scripts.constants import ReportType, CommonConstants, PostgresConstant from scripts.constants import ReportType, CommonConstants, PostgresConstant
from scripts.template.ccpc_report_template import CCPCReportTemplate
from scripts.template.refinery_report_template import SterliteRefineryTemplate from scripts.template.refinery_report_template import SterliteRefineryTemplate
from scripts.template.acp_report_template import ACPReportTemplate from scripts.template.acp_report_template import ACPReportTemplate
from scripts.core.logging.application_logging import logger from scripts.core.logging.application_logging import logger
...@@ -83,6 +84,7 @@ class CustomReportHandler: ...@@ -83,6 +84,7 @@ class CustomReportHandler:
for each_blocks in input_json: for each_blocks in input_json:
# Iterating each blocks for fetching query # Iterating each blocks for fetching query
if input_json[each_blocks][CommonConstants.QUERY]: if input_json[each_blocks][CommonConstants.QUERY]:
for each_kpi in input_json[each_blocks][CommonConstants.QUERY]: for each_kpi in input_json[each_blocks][CommonConstants.QUERY]:
logger.info(f"KPI: {each_kpi}") logger.info(f"KPI: {each_kpi}")
...@@ -485,6 +487,119 @@ class CustomReportHandler: ...@@ -485,6 +487,119 @@ class CustomReportHandler:
worksheet=worksheet, workbook=workbook, worksheet=worksheet, workbook=workbook,
) )
# Setting width to the column
worksheet.set_column(0, total_column,
CommonConstants.ACP_COLUMN_WIDTH)
# Center alignment of Excel data
workbook.formats[0].set_align('center')
logger.info(f"Report completed for: {each_date_range}")
else:
logger.error("Missing: Start Date or End Date")
if str(input_json["job_type"]).lower() == ReportType.CCPC_REPORT:
logger.info("Generating custom date filter with in the range")
# Getting custom date range using start date and end date
date_flag, date_filter = self.create_custom_date_filter(
input_json=input_json
)
if date_flag:
with pd.ExcelWriter(
input_json["file_name"],
engine="xlsxwriter") as writer:
for each_date_range in date_filter:
logger.info(f"date filter: {each_date_range}")
report_template = copy.deepcopy(
CCPCReportTemplate.CCPC_REPORT_TEMPLATE
)
start_col = CommonConstants.START_COLUMN
start_row = CommonConstants.START_ROW
total_column = 0
workbook = writer.book
sheet_name = datetime.strptime(
each_date_range[CommonConstants.DAY_START_DATE],
"%Y-%m-%d").strftime("%d %b %Y")
worksheet = None
# Iterating over sterlite json file
for each_blocks in report_template:
logger.info("Fetching each KPI data from queries")
each_blocks = self.get_queries_from_db(
input_json=each_blocks, date_filter=each_date_range
)
logger.info("Writing each block into excel sheet")
shape, worksheet, header_flag = \
self.write_dataframe_to_excel(
input_json=each_blocks, writer=writer,
workbook=workbook, sheet_name=sheet_name,
start_col=start_col, start_row=start_row,
header_merge_format=CCPCReportTemplate.COLUMN_HEADER_FORMAT,
column_merge_format=CCPCReportTemplate.COLUMN_HEADER_FORMAT,
blank_merge_format=CCPCReportTemplate.BLANK_COLUMN_HEADER_FORMAT
)
if total_column < shape[1]:
total_column = shape[1]
start_row += shape[0] + 2
if header_flag:
start_row += 1
logger.info("Creating Header for each sheet")
# -------- Image Section --------
logger.info("Adding Image in header")
self.merge_worksheet(
start_row=0, start_col=0, end_row=2, end_col=2,
title="",
style=ACPReportTemplate.WORKSHEET_IMAGE_HEADER_FORMAT,
worksheet=worksheet, workbook=workbook,
)
worksheet.insert_image('A1', ReportType.LOGO_IMAGE_PATH)
# -------- Heading Section --------
logger.info("Adding Heading in Header")
self.merge_worksheet(
start_row=0, start_col=3, end_row=1,
end_col=total_column - 1,
title=ReportType.ACP_WORKSHEET_NAME_1,
style=CCPCReportTemplate.WORKSHEET_HEADER_FORMAT,
worksheet=worksheet, workbook=workbook,
)
self.merge_worksheet(
start_row=2, start_col=3,
end_row=2, end_col=total_column - 1,
title=ReportType.ACP_WORKSHEET_NAME_2,
style=CCPCReportTemplate.WORKSHEET_HEADER_FORMAT,
worksheet=worksheet, workbook=workbook,
)
# -------- Date HEADER Section --------
logger.info("Adding Date time in header")
self.merge_worksheet(
start_row=3, start_col=0, end_row=3, end_col=1,
title=ReportType.DATE,
style=ACPReportTemplate.WORKSHEET_DATE_HEADER_FORMAT,
worksheet=worksheet, workbook=workbook,
)
# -------- Date Section --------
logger.info("Adding Date time in header")
self.merge_worksheet(
start_row=3, start_col=2,
end_row=3, end_col=3, title=sheet_name,
style=ACPReportTemplate.WORKSHEET_DATE_FORMAT,
worksheet=worksheet, workbook=workbook,
)
# Setting width to the column # Setting width to the column
worksheet.set_column(0, total_column, worksheet.set_column(0, total_column,
CommonConstants.ACP_COLUMN_WIDTH) CommonConstants.ACP_COLUMN_WIDTH)
......
...@@ -2,36 +2,26 @@ from scripts.constants import PostgresConstant ...@@ -2,36 +2,26 @@ from scripts.constants import PostgresConstant
from scripts.core.db.postgres.custom_report_query import SterliteRefineryQuery, SterliteCCPCQuery from scripts.core.db.postgres.custom_report_query import SterliteRefineryQuery, SterliteCCPCQuery
class SterliteRefineryTemplate: class CCPCReportTemplate:
WORKSHEET_HEADER_FORMAT = {
"bold": True,
"align": "center",
"valign": "center",
"fg_color": "#e6e7eb",
"font_color": "#1b314f",
"border": 1,
'font_size': '20',
}
COLUMN_HEADER_FORMAT = {
"bold": True,
"align": "center",
"valign": "center",
"fg_color": "#e6e7eb",
"font_color": "#021b5e",
"border": 1,
}
BLANK_COLUMN_HEADER_FORMAT = {
"bold": True,
"align": "center",
"valign": "center",
}
CCPC_REPORT_TEMPLATE = [ CCPC_REPORT_TEMPLATE = [
{
"BLANK0": {
"columns": [
None
],
"data": [],
"query": {},
"data_column": [
None
]
}
},
{ {
"PARTICULARS": { "PARTICULARS": {
"columns": [ "columns": [
"PARTICULARS", "PARTICULARS",
"UNIT", "UNIT",
"ONDATE", "ON DATE",
"MTD", "MTD",
], ],
"query": { "query": {
...@@ -109,10 +99,10 @@ class SterliteRefineryTemplate: ...@@ -109,10 +99,10 @@ class SterliteRefineryTemplate:
], ],
}, },
"data": [], "data": [],
"data_column": ["particulars", "unit", "ondate", "mtd", "data_column": ["particulars", "unit", "on_date", "mtd",
], ],
}, },
"BLANK": { "BLANK0": {
"columns": [ "columns": [
None None
], ],
...@@ -131,9 +121,9 @@ class SterliteRefineryTemplate: ...@@ -131,9 +121,9 @@ class SterliteRefineryTemplate:
] ]
}, },
"data": [], "data": [],
"data_column": ["total breakdown details(mins)", "duration(mins)"], "data_column": ["kpi", "breakdown_duration_hours"],
}, },
"BLANK": { "BLANK1": {
"columns": [ "columns": [
None None
], ],
...@@ -144,16 +134,16 @@ class SterliteRefineryTemplate: ...@@ -144,16 +134,16 @@ class SterliteRefineryTemplate:
] ]
}, },
"METAL TEMP": { "METAL TEMP": {
"columns": ["TEMP", "ONDATE"], "columns": ["TEMP", "ON DATE"],
"query": { "query": {
"METAL TEMP": [ "MetalTemp": [
SterliteCCPCQuery.MetalTemp.QUERY_1, SterliteCCPCQuery.MetalTemp.QUERY_1,
] ]
}, },
"data": [], "data": [],
"data_column": ["total breakdown details(mins)", "duration(mins)"], "data_column": ["temp", "on_date"],
}, },
"BLANK": { "BLANK2": {
"columns": [ "columns": [
None None
], ],
...@@ -166,12 +156,13 @@ class SterliteRefineryTemplate: ...@@ -166,12 +156,13 @@ class SterliteRefineryTemplate:
"FURNACE SHELL TEMP": { "FURNACE SHELL TEMP": {
"columns": ["POSITION", "SHIFT", "AVG-TEMP"], "columns": ["POSITION", "SHIFT", "AVG-TEMP"],
"query": { "query": {
"METAL TEMP": [
SterliteCCPCQuery.MetalTemp.QUERY_1,
]
}, },
"data": [], "data": [],
"data_column": ["position", "shift", "avg-temp"], "data_column": ["position", "shift", "avg-temp"],
"addition": {
"merge_header": "Furnace Shell Temp DCS - Data to be fetched shiftwise",
}
}, },
}, },
...@@ -183,25 +174,22 @@ class SterliteRefineryTemplate: ...@@ -183,25 +174,22 @@ class SterliteRefineryTemplate:
"6AM", "6AM",
"7AM", "7AM",
"8AM", "8AM",
"",
"",
"",
"1PM" "1PM"
], ],
"query": { "query": {
}, },
"data": [], "data": [],
"data_column": [ "data_column": [
"dcs - data to be fetched shiftwise", "dcs_data_to_be_fetched_shiftwise",
"", "",
"6am", "6am",
"7am", "7am",
"8am", "8am",
"",
"",
"",
"1pm" "1pm"
], ],
"addition": {
"merge_header": "SHIFT-A",
}
} }
}, },
{ {
...@@ -212,9 +200,6 @@ class SterliteRefineryTemplate: ...@@ -212,9 +200,6 @@ class SterliteRefineryTemplate:
"6AM", "6AM",
"7AM", "7AM",
"8AM", "8AM",
"",
"",
"",
"1PM" "1PM"
], ],
"query": { "query": {
...@@ -226,11 +211,11 @@ class SterliteRefineryTemplate: ...@@ -226,11 +211,11 @@ class SterliteRefineryTemplate:
"6am", "6am",
"7am", "7am",
"8am", "8am",
"",
"",
"",
"1pm" "1pm"
], ],
"addition": {
"merge_header": "SHIFT-B",
}
} }
}, },
{ {
...@@ -241,9 +226,6 @@ class SterliteRefineryTemplate: ...@@ -241,9 +226,6 @@ class SterliteRefineryTemplate:
"6AM", "6AM",
"7AM", "7AM",
"8AM", "8AM",
"",
"",
"",
"1PM" "1PM"
], ],
"query": { "query": {
...@@ -255,11 +237,11 @@ class SterliteRefineryTemplate: ...@@ -255,11 +237,11 @@ class SterliteRefineryTemplate:
"6am", "6am",
"7am", "7am",
"8am", "8am",
"",
"",
"",
"1pm" "1pm"
], ],
"addition": {
"merge_header": "SHIFT-C",
}
} }
}, },
{ {
...@@ -267,10 +249,11 @@ class SterliteRefineryTemplate: ...@@ -267,10 +249,11 @@ class SterliteRefineryTemplate:
"columns": ["SHIFT", "TIME", "TANK OUTLET PRESSURE", "VAP. OUTLET PRESSURE", "LINE. OUTLET PRESSURE", "columns": ["SHIFT", "TIME", "TANK OUTLET PRESSURE", "VAP. OUTLET PRESSURE", "LINE. OUTLET PRESSURE",
"LINE. TEM "], "LINE. TEM "],
"query": { "query": {
"Tbc": [
SterliteCCPCQuery.Tbc.QUERY_1, SterliteCCPCQuery.Tbc.QUERY_1,
SterliteCCPCQuery.Tbc.QUERY_2, SterliteCCPCQuery.Tbc.QUERY_2,
SterliteCCPCQuery.Tbc.QUERY_3, SterliteCCPCQuery.Tbc.QUERY_3,
]
}, },
"data": [], "data": [],
"data_column": ["shift", "time", "tank outlet pressure", "vap. outlet pressure", "data_column": ["shift", "time", "tank outlet pressure", "vap. outlet pressure",
...@@ -279,12 +262,12 @@ class SterliteRefineryTemplate: ...@@ -279,12 +262,12 @@ class SterliteRefineryTemplate:
}, },
{ {
"PROCESS PARAMETERS": { "PROCESS PARAMETERS": {
"columns": ["PARAMATER", "RANGE ", "AVG VALUE", "2", "3", "4"], "columns": ["PARAMATER", "AVG VALUE"],
"query": { "query": {
SterliteCCPCQuery.ProcessParameter.QUERY_1 "ProcessParameter": [SterliteCCPCQuery.ProcessParameter.QUERY_1]
}, },
"data": [], "data": [],
"data_column": ["paramater", "range ", "avg value", "2", "3", "4"], "data_column": ["parameter", "avg_value"]
}, },
}, },
{ {
...@@ -297,9 +280,8 @@ class SterliteRefineryTemplate: ...@@ -297,9 +280,8 @@ class SterliteRefineryTemplate:
] ]
}, },
"data": [], "data": [],
"data_column": ["charging details", "shift_a", "shift_b", "shift_c", "total"], "data_column": ["charging_details", "shift_a", "shift_b", "shift_c", "total"],
}, },
"BLANK": { "BLANK": {
"columns": [ "columns": [
...@@ -316,6 +298,9 @@ class SterliteRefineryTemplate: ...@@ -316,6 +298,9 @@ class SterliteRefineryTemplate:
"query": {}, "query": {},
"data": [], "data": [],
"data_column": ["nos", "target", "production"], "data_column": ["nos", "target", "production"],
"addition": {
"merge_header": "Monthwise Production details (MT)"
}
}, },
}, },
{ {
...@@ -332,21 +317,19 @@ class SterliteRefineryTemplate: ...@@ -332,21 +317,19 @@ class SterliteRefineryTemplate:
"OD PRODN (MT) =" "OD PRODN (MT) ="
], ],
"query": { "query": {
"CROP": [
SterliteRefineryQuery.CropCir.QUERY_1,
]
}, },
"data": [], "data": [],
"data_column": [ "data_column": [
"production details-no. of anodes", "production details-no. of anodes",
"a shift", "a_shift",
"b shift", "b_shift",
"c shift", "c_shift",
"total", "total",
"a-shift prdn", "a_shift_prdn",
"b-shift prdn", "b_shift_prdn",
"c-shift prdn", "c_shift_prdn",
"od prodn (mt) =" "od_prodn"
], ],
}, },
"BLANK": { "BLANK": {
...@@ -359,40 +342,15 @@ class SterliteRefineryTemplate: ...@@ -359,40 +342,15 @@ class SterliteRefineryTemplate:
None None
] ]
}, },
"DEPOSIT LOSS (-) / GAIN (+) DETAILS": {
"columns": [
"CATEGORY",
"ON DATE",
"MTD",
"YTD"
],
"query": {
"DepositLossGainDetails": [
SterliteRefineryQuery.DepositLossGainDetails.QUERY_1,
SterliteRefineryQuery.DepositLossGainDetails.QUERY_2,
SterliteRefineryQuery.DepositLossGainDetails.QUERY_3,
]
},
"data": [],
"data_column": [
"category",
"on_date",
"mtd",
"ytd"
],
"addition": {
"merge_header": "DEPOSIT LOSS (-) / GAIN (+) DETAILS",
"primary": "category"
}
}
}, },
{ {
"CONSUMPTION ITEMS": { "CONSUMPTION ITEMS": {
"columns": [ "columns": [
"CONSUMPTION ITEMS", "CONSUMPTION ITEMS",
"UNIT",
"ON DATE", "ON DATE",
"MTD", "MTD",
"UNIT"
], ],
"query": { "query": {
"BariumSulphate": [ "BariumSulphate": [
...@@ -411,16 +369,16 @@ class SterliteRefineryTemplate: ...@@ -411,16 +369,16 @@ class SterliteRefineryTemplate:
"data": [], "data": [],
"data_column": [ "data_column": [
"consumption_items", "consumption_items",
"unit",
"on_date", "on_date",
"mtd", "mtd",
"unit"
], ],
} }
}, },
{ {
"ACTIVITY\TIME": { "ACTIVITY-TIME": {
"columns": [ "columns": [
"ACTIVITY\tIME", "ACTIVITY-TIME",
"SHIFT", "SHIFT",
"START TIME", "START TIME",
"END TIME", "END TIME",
...@@ -428,17 +386,15 @@ class SterliteRefineryTemplate: ...@@ -428,17 +386,15 @@ class SterliteRefineryTemplate:
"REASON FOR STOPAGE" "REASON FOR STOPAGE"
], ],
"query": { "query": {
"CASTING": [],
"MELTING": []
}, },
"data": [], "data": [],
"data_column": [ "data_column": [
"activity\time", "activity_time",
"shift", "shift",
"start time", "start_time",
"end time", "end_time",
"total time (minutes)", "total_time",
"reason for stopage" "reason_for_stopage"
], ],
} }
}, },
...@@ -507,7 +463,7 @@ class SterliteRefineryTemplate: ...@@ -507,7 +463,7 @@ class SterliteRefineryTemplate:
] ]
}, },
"SET ANODE WEIGHT -270": { "SET ANODE WEIGHT -270": {
"columns": ["SET ANODE WEIGHT -270", "WEIGH BRIDGE"], "columns": ["SET ANODE WEIGHT -270", "WEIGH BRIDGE", "metric", "kpi", "shift"],
"query": { "query": {
"SetAnideWeight": [ "SetAnideWeight": [
SterliteCCPCQuery.SetAnodeWeight.QUERY_1 SterliteCCPCQuery.SetAnodeWeight.QUERY_1
...@@ -515,10 +471,6 @@ class SterliteRefineryTemplate: ...@@ -515,10 +471,6 @@ class SterliteRefineryTemplate:
}, },
"data": [], "data": [],
"data_column": ["kpi", "shift", "set_anode_weight", "weight_bridge", "metric"], "data_column": ["kpi", "shift", "set_anode_weight", "weight_bridge", "metric"],
"addition": {
"merge_header": "SPECIFIC CONSUMPTION",
"primary": "consumables"
}
}, },
}, },
{ {
...@@ -561,7 +513,7 @@ class SterliteRefineryTemplate: ...@@ -561,7 +513,7 @@ class SterliteRefineryTemplate:
] ]
}, },
"SET ANODE WEIGHT -270": { "SET ANODE WEIGHT -270": {
"columns": ["SET ANODE WEIGHT -270", "WEIGH BRIDGE"], "columns": ["SET ANODE WEIGHT -270", "WEIGH BRIDGE", "metric", "kpi", "shift"],
"query": { "query": {
"SetAnideWeight": [ "SetAnideWeight": [
SterliteCCPCQuery.SetAnodeWeight.QUERY_1 SterliteCCPCQuery.SetAnodeWeight.QUERY_1
...@@ -569,10 +521,6 @@ class SterliteRefineryTemplate: ...@@ -569,10 +521,6 @@ class SterliteRefineryTemplate:
}, },
"data": [], "data": [],
"data_column": ["kpi", "shift", "set_anode_weight", "weight_bridge", "metric"], "data_column": ["kpi", "shift", "set_anode_weight", "weight_bridge", "metric"],
"addition": {
"merge_header": "SPECIFIC CONSUMPTION",
"primary": "consumables"
}
}, },
}, },
{ {
...@@ -615,7 +563,7 @@ class SterliteRefineryTemplate: ...@@ -615,7 +563,7 @@ class SterliteRefineryTemplate:
] ]
}, },
"SET ANODE WEIGHT -270": { "SET ANODE WEIGHT -270": {
"columns": ["SET ANODE WEIGHT -270", "WEIGH BRIDGE"], "columns": ["SET ANODE WEIGHT -270", "WEIGH BRIDGE", "metric", "kpi", "shift"],
"query": { "query": {
"SetAnideWeight": [ "SetAnideWeight": [
SterliteCCPCQuery.SetAnodeWeight.QUERY_1 SterliteCCPCQuery.SetAnodeWeight.QUERY_1
...@@ -623,10 +571,7 @@ class SterliteRefineryTemplate: ...@@ -623,10 +571,7 @@ class SterliteRefineryTemplate:
}, },
"data": [], "data": [],
"data_column": ["kpi", "shift", "set_anode_weight", "weight_bridge", "metric"], "data_column": ["kpi", "shift", "set_anode_weight", "weight_bridge", "metric"],
"addition": {
"merge_header": "SPECIFIC CONSUMPTION",
"primary": "consumables"
}
}, },
}, },
{ {
...@@ -648,3 +593,25 @@ class SterliteRefineryTemplate: ...@@ -648,3 +593,25 @@ class SterliteRefineryTemplate:
} }
}, },
] ]
WORKSHEET_HEADER_FORMAT = {
"bold": True,
"align": "center",
"valign": "center",
"fg_color": "#e6e7eb",
"font_color": "#1b314f",
"border": 1,
'font_size': '20',
}
COLUMN_HEADER_FORMAT = {
"bold": True,
"align": "center",
"valign": "center",
"fg_color": "#e6e7eb",
"font_color": "#021b5e",
"border": 1,
}
BLANK_COLUMN_HEADER_FORMAT = {
"bold": True,
"align": "center",
"valign": "center",
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment