Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sterlite_custom_reports
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
suryakant
sterlite_custom_reports
Commits
9f037fcb
Commit
9f037fcb
authored
Oct 06, 2023
by
suryakant
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sterlite Custom Report Updates
parent
72c79200
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
313 additions
and
109 deletions
+313
-109
scripts/core/db/postgres/custom_report_query.py
scripts/core/db/postgres/custom_report_query.py
+222
-66
scripts/core/handler/event_handler.py
scripts/core/handler/event_handler.py
+57
-30
scripts/template/sterlite_report_template.py
scripts/template/sterlite_report_template.py
+34
-13
No files found.
scripts/core/db/postgres/custom_report_query.py
View file @
9f037fcb
...
@@ -4,8 +4,9 @@ class SterliteRefineryQuery:
...
@@ -4,8 +4,9 @@ class SterliteRefineryQuery:
"""
"""
class
AnodeAvailability
:
class
AnodeAvailability
:
# QUERY FOR ANODE_AVAILABILITY, UOM, NORMS, ON_DATE
# Query for ANODE_AVAILABILITY
QUERY_AA
=
"""
# ANODE_AVAILABILITY, UOM, NORMS, ON_DATE
QUERY_1
=
"""
SELECT
SELECT
'Cell House Anode Availability' AS ANODE_AVAILABILITY,
'Cell House Anode Availability' AS ANODE_AVAILABILITY,
'
%
' AS UOM,
'
%
' AS UOM,
...
@@ -48,40 +49,40 @@ class SterliteRefineryQuery:
...
@@ -48,40 +49,40 @@ class SterliteRefineryQuery:
GROUP BY
GROUP BY
1,2;
1,2;
"""
"""
QUERY_
MTD
=
"""
QUERY_
2
=
"""
SELECT
SELECT
'Cell House Anode Availability' AS ANODE_AVAILABILITY,
'Cell House Anode Availability' AS ANODE_AVAILABILITY,
'
%
' AS UOM,
'
%
' AS UOM,
(SUM(ANODE.NUMERATOR) / NULLIF(SUM(DENOMINATOR), 0)) * 100 AS MTD
(SUM(ANODE.NUMERATOR) / NULLIF(SUM(DENOMINATOR), 0)) * 100 AS MTD
FROM
FROM
(SELECT ACTUAL.AA_NUMO AS NUMERATOR,
(SELECT ACTUAL.AA_NUMO AS NUMERATOR,
ACTUAL.AA_DENO AS DENOMINATOR,
ACTUAL.AA_DENO AS DENOMINATOR,
PLAN.AA_PLANNED,
PLAN.AA_PLANNED,
COALESCE(ACTUAL.DATE,
COALESCE(ACTUAL.DATE,
PLAN.DATE) AS date
PLAN.DATE) AS date
FROM SEMANTIC_PROD.REFINERY_ANODE_AVAILABILITY_ACTUAL_VIEW ACTUAL
FROM SEMANTIC_PROD.REFINERY_ANODE_AVAILABILITY_ACTUAL_VIEW ACTUAL
FULL JOIN
FULL JOIN
(SELECT DD_1.DATE_DT AS date,
(SELECT DD_1.DATE_DT AS date,
M_PLAN.AA_PLANNED
M_PLAN.AA_PLANNED
FROM
FROM
(SELECT DATE(date) AS POSTING_DATE,
(SELECT DATE(date) AS POSTING_DATE,
ANODE_AVAILABILITY_VALUE::numeric AS AA_PLANNED
ANODE_AVAILABILITY_VALUE::numeric AS AA_PLANNED
FROM SEMANTIC_DEV.ANODE_AVAILABILITY
FROM SEMANTIC_DEV.ANODE_AVAILABILITY
WHERE
WHERE
LOWER(TRIM(ANODE_AVAILABILITY_SELECT)) =
LOWER(TRIM(ANODE_AVAILABILITY_SELECT)) =
'anode availability'
'anode availability'
AND DATE_PART('day',date) = 1
AND DATE_PART('day',date) = 1
GROUP BY 1,
GROUP BY 1,
2)M_PLAN
2)M_PLAN
LEFT JOIN
LEFT JOIN
(SELECT DIM_DATE.DATE_DT,
(SELECT DIM_DATE.DATE_DT,
DIM_DATE.MONTH_OF_YR_NUM AS MNTH,
DIM_DATE.MONTH_OF_YR_NUM AS MNTH,
DIM_DATE.YR_NAME AS YR
DIM_DATE.YR_NAME AS YR
FROM SEMANTIC_PROD.DIM_DATE) DD_1 ON
FROM SEMANTIC_PROD.DIM_DATE) DD_1 ON
DD_1.MNTH = DATE_PART('month', M_PLAN.POSTING_DATE)
DD_1.MNTH = DATE_PART('month', M_PLAN.POSTING_DATE)
AND DD_1.YR = DATE_PART('year', M_PLAN.POSTING_DATE))PLAN
AND DD_1.YR = DATE_PART('year', M_PLAN.POSTING_DATE))PLAN
ON ACTUAL.DATE = PLAN.DATE)ANODE
ON ACTUAL.DATE = PLAN.DATE)ANODE
WHERE
WHERE
...
@@ -90,41 +91,41 @@ class SterliteRefineryQuery:
...
@@ -90,41 +91,41 @@ class SterliteRefineryQuery:
GROUP BY
GROUP BY
1,2;
1,2;
"""
"""
QUERY_
YTD
=
"""
QUERY_
3
=
"""
SELECT
SELECT
'Cell House Anode Availability' AS ANODE_AVAILABILITY,
'Cell House Anode Availability' AS ANODE_AVAILABILITY,
'
%
' AS UOM,
'
%
' AS UOM,
(SUM(ANODE.NUMERATOR) / NULLIF(SUM(DENOMINATOR), 0)) * 100 AS YTD
(SUM(ANODE.NUMERATOR) / NULLIF(SUM(DENOMINATOR), 0)) * 100 AS YTD
FROM
FROM
(SELECT ACTUAL.AA_NUMO AS NUMERATOR,
(SELECT ACTUAL.AA_NUMO AS NUMERATOR,
ACTUAL.AA_DENO AS DENOMINATOR,
ACTUAL.AA_DENO AS DENOMINATOR,
PLAN.AA_PLANNED,
PLAN.AA_PLANNED,
COALESCE(ACTUAL.DATE,
COALESCE(ACTUAL.DATE,
PLAN.DATE) AS date
PLAN.DATE) AS date
FROM SEMANTIC_PROD.REFINERY_ANODE_AVAILABILITY_ACTUAL_VIEW ACTUAL
FROM SEMANTIC_PROD.REFINERY_ANODE_AVAILABILITY_ACTUAL_VIEW ACTUAL
FULL JOIN
FULL JOIN
(SELECT DD_1.DATE_DT AS date,
(SELECT DD_1.DATE_DT AS date,
M_PLAN.AA_PLANNED
M_PLAN.AA_PLANNED
FROM
FROM
(SELECT DATE(date) AS POSTING_DATE,
(SELECT DATE(date) AS POSTING_DATE,
ANODE_AVAILABILITY_VALUE::numeric AS AA_PLANNED
ANODE_AVAILABILITY_VALUE::numeric AS AA_PLANNED
FROM SEMANTIC_DEV.ANODE_AVAILABILITY
FROM SEMANTIC_DEV.ANODE_AVAILABILITY
WHERE
WHERE
LOWER(TRIM(ANODE_AVAILABILITY_SELECT)) =
LOWER(TRIM(ANODE_AVAILABILITY_SELECT)) =
'anode availability'
'anode availability'
AND DATE_PART('day',date) = 1
AND DATE_PART('day',date) = 1
GROUP BY 1,
GROUP BY 1,
2)M_PLAN
2)M_PLAN
LEFT JOIN
LEFT JOIN
(SELECT DIM_DATE.DATE_DT,
(SELECT DIM_DATE.DATE_DT,
DIM_DATE.MONTH_OF_YR_NUM AS MNTH,
DIM_DATE.MONTH_OF_YR_NUM AS MNTH,
DIM_DATE.YR_NAME AS YR
DIM_DATE.YR_NAME AS YR
FROM SEMANTIC_PROD.DIM_DATE) DD_1 ON
FROM SEMANTIC_PROD.DIM_DATE) DD_1 ON
DD_1.MNTH = DATE_PART('month', M_PLAN.POSTING_DATE)
DD_1.MNTH = DATE_PART('month', M_PLAN.POSTING_DATE)
AND DD_1.YR = DATE_PART('year', M_PLAN.POSTING_DATE))PLAN
AND DD_1.YR = DATE_PART('year', M_PLAN.POSTING_DATE))PLAN
ON ACTUAL.DATE = PLAN.DATE)ANODE
ON ACTUAL.DATE = PLAN.DATE)ANODE
WHERE
WHERE
DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
...
@@ -134,7 +135,9 @@ class SterliteRefineryQuery:
...
@@ -134,7 +135,9 @@ class SterliteRefineryQuery:
"""
"""
class
DOCellsInOperation
:
class
DOCellsInOperation
:
QUERY_AA
=
"""
# Query for DO Cells Operation
# ANODE_AVAILABILITY, UOM, NORMS, ON_DATE
QUERY_1
=
"""
SELECT
SELECT
'DO Cells In Operation' AS ANODE_AVAILABILITY,
'DO Cells In Operation' AS ANODE_AVAILABILITY,
'No.' AS UOM,
'No.' AS UOM,
...
@@ -159,6 +162,8 @@ class SterliteRefineryQuery:
...
@@ -159,6 +162,8 @@ class SterliteRefineryQuery:
"""
"""
class
TotalCellsInOperation
:
class
TotalCellsInOperation
:
# Query for Total Cell In Operations
# ANODE_AVAILABILITY, UOM, NORMS, ON_DATE
QUERY_1
=
"""
QUERY_1
=
"""
SELECT
SELECT
'Total Cells In Operation' AS ANODE_AVAILABILITY,
'Total Cells In Operation' AS ANODE_AVAILABILITY,
...
@@ -169,15 +174,18 @@ class SterliteRefineryQuery:
...
@@ -169,15 +174,18 @@ class SterliteRefineryQuery:
FROM
FROM
(SELECT KPI,
(SELECT KPI,
CASE
CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_plan' THEN ROUND(AVG(METRIC_VALUE))
WHEN LOWER(TRIM(KPI)) = 'operational_cells_plan'
THEN ROUND(AVG(METRIC_VALUE))
ELSE NULL
ELSE NULL
END AS NORMS,
END AS NORMS,
CASE
CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_actual' THEN ROUND(AVG(METRIC_VALUE))
WHEN LOWER(TRIM(KPI)) = 'operational_cells_actual'
THEN ROUND(AVG(METRIC_VALUE))
ELSE NULL
ELSE NULL
END AS METRIC_VALUE
END AS METRIC_VALUE
FROM SEMANTIC_PROD.REFINERY_OPERATIONAL_CELLS_VIEW
FROM SEMANTIC_PROD.REFINERY_OPERATIONAL_CELLS_VIEW
WHERE LOWER(TRIM(KPI)) in ('operational_cells_actual', 'operational_cells_plan')
WHERE LOWER(TRIM(KPI)) in
('operational_cells_actual', 'operational_cells_plan')
AND (date BETWEEN '{day_start_date}' AND '{day_end_date}')
AND (date BETWEEN '{day_start_date}' AND '{day_end_date}')
GROUP BY 1)OP_CELLS
GROUP BY 1)OP_CELLS
GROUP BY 1,2
GROUP BY 1,2
...
@@ -213,16 +221,164 @@ class SterliteRefineryQuery:
...
@@ -213,16 +221,164 @@ class SterliteRefineryQuery:
FROM
FROM
(SELECT KPI,
(SELECT KPI,
CASE
CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_plan' THEN ROUND(AVG(METRIC_VALUE))
WHEN LOWER(TRIM(KPI)) = 'operational_cells_plan'
THEN ROUND(AVG(METRIC_VALUE))
ELSE NULL
ELSE NULL
END AS NORMS,
END AS NORMS,
CASE
CASE
WHEN LOWER(TRIM(KPI)) = 'operational_cells_actual' THEN ROUND(AVG(METRIC_VALUE))
WHEN LOWER(TRIM(KPI)) = 'operational_cells_actual'
THEN ROUND(AVG(METRIC_VALUE))
ELSE NULL
ELSE NULL
END AS METRIC_VALUE
END AS METRIC_VALUE
FROM SEMANTIC_PROD.REFINERY_OPERATIONAL_CELLS_VIEW
FROM SEMANTIC_PROD.REFINERY_OPERATIONAL_CELLS_VIEW
WHERE LOWER(TRIM(KPI)) in ('operational_cells_actual', 'operational_cells_plan')
WHERE LOWER(TRIM(KPI)) in
('operational_cells_actual', 'operational_cells_plan')
AND (date BETWEEN '{year_start_date}' AND '{year_end_date}')
AND (date BETWEEN '{year_start_date}' AND '{year_end_date}')
GROUP BY 1)OP_CELLS
GROUP BY 1)OP_CELLS
GROUP BY 1,2
GROUP BY 1,2
"""
"""
class
NoOfNearMiss
:
QUERY_1
=
"""
SELECT
CASE
WHEN LOWER(TRIM(KPI)) = 'first aid' THEN 'No. of First Aid'
WHEN LOWER(TRIM(KPI)) = 'near miss' THEN 'No. of Near Miss'
ELSE NULL
END AS safety_report,
'No.' AS UOM,
0 AS NORMS,
ROUND(SUM(METRIC_VALUE), 2) AS ON_DATE
FROM SEMANTIC_PROD.REFINERY_HSE_VIEW
WHERE LOWER(TRIM(KPI)) in ('near miss')
AND DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2,3
"""
QUERY_2
=
"""
SELECT
CASE
WHEN LOWER(TRIM(KPI)) = 'first aid' THEN 'No. of First Aid'
WHEN LOWER(TRIM(KPI)) = 'near miss' THEN 'No. of Near Miss'
ELSE NULL
END AS safety_report,
'No.' AS UOM,
0 AS NORMS,
ROUND(SUM(METRIC_VALUE), 2) AS MTD
FROM SEMANTIC_PROD.REFINERY_HSE_VIEW
WHERE LOWER(TRIM(KPI)) in ('near miss')
AND DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2,3
"""
QUERY_3
=
"""
SELECT
CASE
WHEN LOWER(TRIM(KPI)) = 'first aid' THEN 'No. of First Aid'
WHEN LOWER(TRIM(KPI)) = 'near miss' THEN 'No. of Near Miss'
ELSE NULL
END AS safety_report,
'No.' AS UOM,
0 AS NORMS,
ROUND(SUM(METRIC_VALUE), 2) AS YTD
FROM SEMANTIC_PROD.REFINERY_HSE_VIEW
WHERE LOWER(TRIM(KPI)) in ('near miss')
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2,3
"""
class
NoOfFirstAid
:
QUERY_1
=
"""
SELECT
CASE
WHEN LOWER(TRIM(KPI)) = 'first aid' THEN 'No. of First Aid'
WHEN LOWER(TRIM(KPI)) = 'near miss' THEN 'No. of Near Miss'
ELSE NULL
END AS safety_report,
'No.' AS UOM,
0 AS NORMS,
ROUND(SUM(METRIC_VALUE), 2) AS ON_DATE
FROM SEMANTIC_PROD.REFINERY_HSE_VIEW
WHERE LOWER(TRIM(KPI)) in ('first aid')
AND DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2,3
"""
QUERY_2
=
"""
SELECT
CASE
WHEN LOWER(TRIM(KPI)) = 'first aid' THEN 'No. of First Aid'
WHEN LOWER(TRIM(KPI)) = 'near miss' THEN 'No. of Near Miss'
ELSE NULL
END AS safety_report,
'No.' AS UOM,
0 AS NORMS,
ROUND(SUM(METRIC_VALUE), 2) AS MTD
FROM SEMANTIC_PROD.REFINERY_HSE_VIEW
WHERE LOWER(TRIM(KPI)) in ('first aid')
AND DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2,3
"""
QUERY_3
=
"""
SELECT
CASE
WHEN LOWER(TRIM(KPI)) = 'first aid' THEN 'No. of First Aid'
WHEN LOWER(TRIM(KPI)) = 'near miss' THEN 'No. of Near Miss'
ELSE NULL
END AS safety_report,
'No.' AS UOM,
0 AS NORMS,
ROUND(SUM(METRIC_VALUE), 2) AS YTD
FROM SEMANTIC_PROD.REFINERY_HSE_VIEW
WHERE LOWER(TRIM(KPI)) in ('first aid')
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2,3
"""
class
Cir140KARectifierAvgCurrent
:
QUERY_1
=
"""
SELECT
'Cir-1 40 KA Rectifier Avg. Current' AS power_availability,
'
%
' AS uom,
AVG(PLAN_METRIC_VALUE) AS norms,
SUM(ACTUAL_METRIC_VALUE) / COALESCE(NULLIF(COUNT(
CASE
WHEN ACTUAL_METRIC_VALUE <> 0 THEN 1
ELSE NULL END), 0), 1) AS on_date
FROM SEMANTIC_PROD.RECTIFIER_KPI_VIEW
WHERE LOWER(TRIM(KPI)) = '40ka_rectifier_current'
AND DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2
"""
QUERY_2
=
"""
SELECT
'Cir-1 40 KA Rectifier Avg. Current' AS power_availability,
'
%
' AS uom,
SUM(ACTUAL_METRIC_VALUE) / COALESCE(NULLIF(COUNT(
CASE
WHEN ACTUAL_METRIC_VALUE <> 0 THEN 1
ELSE NULL END), 0), 1) AS mtd
FROM SEMANTIC_PROD.RECTIFIER_KPI_VIEW
WHERE LOWER(TRIM(KPI)) = '40ka_rectifier_current'
AND DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2
"""
QUERY_3
=
"""
SELECT
'Cir-1 40 KA Rectifier Avg. Current' AS power_availability,
'
%
' AS uom,
SUM(ACTUAL_METRIC_VALUE) / COALESCE(NULLIF(COUNT(
CASE
WHEN ACTUAL_METRIC_VALUE <> 0 THEN 1
ELSE NULL END), 0), 1) AS ytd
FROM SEMANTIC_PROD.RECTIFIER_KPI_VIEW
WHERE LOWER(TRIM(KPI)) = '40ka_rectifier_current'
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2
"""
scripts/core/handler/event_handler.py
View file @
9f037fcb
...
@@ -69,34 +69,34 @@ class CustomReportHandler:
...
@@ -69,34 +69,34 @@ class CustomReportHandler:
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
]:
temp_data_dict
=
dict
()
temp_data_dict
=
dict
()
# Iterating each query for each KPI
for
each_query
in
\
input_json
[
each_blocks
][
CommonConstants
.
QUERY
][
each_kpi
]:
query
=
each_query
.
\
format
(
day_start_date
=
date_filter
[
CommonConstants
.
DAY_START_DATE
],
day_end_date
=
date_filter
[
CommonConstants
.
DAY_END_DATE
],
month_start_date
=
date_filter
[
CommonConstants
.
MONTH_START_DATE
],
month_end_date
=
date_filter
[
CommonConstants
.
MONTH_END_DATE
],
year_start_date
=
date_filter
[
CommonConstants
.
YEAR_START_DATE
],
year_end_date
=
date_filter
[
CommonConstants
.
YEAR_END_DATE
]
)
response
=
self
.
postgres_db_obj
.
fetch_data
(
query
=
query
)
if
response
:
temp_data_dict
.
update
(
dict
(
response
[
0
]))
if
not
temp_data_dict
:
# Iterating each query for each KPI
# Creating null values if no data
if
input_json
[
each_blocks
][
CommonConstants
.
QUERY
][
each_kpi
]:
for
each_columns
in
input_json
[
each_blocks
][
for
each_query
in
\
CommonConstants
.
DATA_COLUMN
]:
input_json
[
each_blocks
][
CommonConstants
.
QUERY
][
each_kpi
]:
temp_data_dict
.
update
({
each_columns
:
None
})
query
=
each_query
.
\
format
(
input_json
[
each_blocks
][
CommonConstants
.
DATA
]
.
append
(
day_start_date
=
date_filter
[
CommonConstants
.
DAY_START_DATE
],
temp_data_dict
)
day_end_date
=
date_filter
[
CommonConstants
.
DAY_END_DATE
],
month_start_date
=
date_filter
[
CommonConstants
.
MONTH_START_DATE
],
month_end_date
=
date_filter
[
CommonConstants
.
MONTH_END_DATE
],
year_start_date
=
date_filter
[
CommonConstants
.
YEAR_START_DATE
],
year_end_date
=
date_filter
[
CommonConstants
.
YEAR_END_DATE
])
response
=
self
.
postgres_db_obj
.
fetch_data
(
query
=
query
)
if
response
:
temp_data_dict
.
update
(
dict
(
response
[
0
]))
if
not
temp_data_dict
:
# Creating null values if no data
for
each_columns
in
input_json
[
each_blocks
][
CommonConstants
.
DATA_COLUMN
]:
temp_data_dict
.
update
({
each_columns
:
None
})
input_json
[
each_blocks
][
CommonConstants
.
DATA
]
.
append
(
temp_data_dict
)
else
:
else
:
temp_data_dict
=
dict
()
temp_data_dict
=
dict
()
for
each_columns
in
input_json
[
each_blocks
][
for
each_columns
in
input_json
[
each_blocks
][
...
@@ -107,6 +107,21 @@ class CustomReportHandler:
...
@@ -107,6 +107,21 @@ class CustomReportHandler:
input_json
[
each_blocks
][
CommonConstants
.
DATA
]
.
append
(
temp_data_dict
)
input_json
[
each_blocks
][
CommonConstants
.
DATA
]
.
append
(
temp_data_dict
)
return
input_json
return
input_json
def
write_dataframe_to_excel
(
self
,
input_json
,
sheet_name
):
"""
:param input_json:
:param sheet_name:
:return:
"""
dataframe_list
=
[]
print
(
sheet_name
)
# for each_blocks in input_json:
# print(each_blocks)
# dataframe = pd.DataFrame(data=input_json[each_blocks]["data"])
# dataframe.columns = input_json[each_blocks]["columns"]
# dataframe_list.append(dataframe)
def
custom_report_handler
(
self
,
input_json
):
def
custom_report_handler
(
self
,
input_json
):
"""
"""
:param input_json:
:param input_json:
...
@@ -118,18 +133,30 @@ class CustomReportHandler:
...
@@ -118,18 +133,30 @@ class CustomReportHandler:
try
:
try
:
# if str(input_json.job_type).lower() == ReportType.REFINERY_REPORT:
# if str(input_json.job_type).lower() == ReportType.REFINERY_REPORT:
if
str
(
input_json
[
"job_type"
])
.
lower
()
==
ReportType
.
REFINERY_REPORT
:
if
str
(
input_json
[
"job_type"
])
.
lower
()
==
ReportType
.
REFINERY_REPORT
:
# Getting custom date range using start date and end date
date_filter
=
self
.
create_custom_date_filter
(
input_json
=
input_json
)
date_filter
=
self
.
create_custom_date_filter
(
input_json
=
input_json
)
# with pd.ExcelWriter(path="testing.xlsx", engine="openpyxl") as excel:
# pass
for
each_date_range
in
date_filter
:
for
each_date_range
in
date_filter
:
# Iterating over sterlite json file
# Iterating over sterlite json file
for
each_blocks
in
SterliteRefineryTemplate
.
REPORT_TEMPLATE
:
for
each_blocks
in
SterliteRefineryTemplate
.
REPORT_TEMPLATE
:
# Getting the data from queries
# Getting the data from queries
each_blocks
=
self
.
get_queries_from_db
(
each_blocks
=
self
.
get_queries_from_db
(
input_json
=
each_blocks
,
date_filter
=
each_date_range
input_json
=
each_blocks
,
date_filter
=
each_date_range
)
)
# print(each_blocks)
print
(
"="
*
60
)
# print("=========================================")
print
(
each_blocks
)
print
(
SterliteRefineryTemplate
.
REPORT_TEMPLATE
)
# self.write_dataframe_to_excel(
# input_json=each_blocks,
# sheet_name=each_date_range[CommonConstants.DAY_START_DATE]
# )
break
print
(
"@"
*
100
)
break
break
except
GeneralException
as
err
:
except
GeneralException
as
err
:
...
...
scripts/template/sterlite_report_template.py
View file @
9f037fcb
...
@@ -15,12 +15,12 @@ class SterliteRefineryTemplate:
...
@@ -15,12 +15,12 @@ class SterliteRefineryTemplate:
],
],
"query"
:
{
"query"
:
{
"ANODE_AVAILABILITY"
:
[
"ANODE_AVAILABILITY"
:
[
SterliteRefineryQuery
.
AnodeAvailability
.
QUERY_
AA
,
SterliteRefineryQuery
.
AnodeAvailability
.
QUERY_
1
,
SterliteRefineryQuery
.
AnodeAvailability
.
QUERY_
MTD
,
SterliteRefineryQuery
.
AnodeAvailability
.
QUERY_
2
,
SterliteRefineryQuery
.
AnodeAvailability
.
QUERY_
YTD
,
SterliteRefineryQuery
.
AnodeAvailability
.
QUERY_
3
,
],
],
"DO CELLS IN OPERATION"
:
[
"DO CELLS IN OPERATION"
:
[
SterliteRefineryQuery
.
DOCellsInOperation
.
QUERY_
AA
SterliteRefineryQuery
.
DOCellsInOperation
.
QUERY_
1
],
],
"Total Cells In Operation"
:
[
"Total Cells In Operation"
:
[
SterliteRefineryQuery
.
TotalCellsInOperation
.
QUERY_1
,
SterliteRefineryQuery
.
TotalCellsInOperation
.
QUERY_1
,
...
@@ -30,19 +30,25 @@ class SterliteRefineryTemplate:
...
@@ -30,19 +30,25 @@ class SterliteRefineryTemplate:
},
},
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"data_column"
:
[
"anode_availability"
,
"anode_availability"
,
"uom"
,
"norms"
,
"uom"
,
"on_date"
,
"mtd"
,
"ytd"
],
"norms"
,
"on_date"
,
"mtd"
,
"ytd"
,
],
"description"
:
""
,
"description"
:
""
,
"format"
:
""
,
"format"
:
""
,
},
},
"SAFETY REPORT"
:
{
"SAFETY REPORT"
:
{
"columns"
:
[
"SAFETY REPORT"
,
"UOM"
,
"NORMS"
,
"ON DATE"
,
"MTD"
,
"YTD"
],
"columns"
:
[
"SAFETY REPORT"
,
"UOM"
,
"NORMS"
,
"ON DATE"
,
"MTD"
,
"YTD"
],
"query"
:
[],
"query"
:
{
"No. of Near Miss"
:
[
SterliteRefineryQuery
.
NoOfNearMiss
.
QUERY_1
,
SterliteRefineryQuery
.
NoOfNearMiss
.
QUERY_2
,
SterliteRefineryQuery
.
NoOfNearMiss
.
QUERY_3
,
],
"No. of First Aid"
:
[
SterliteRefineryQuery
.
NoOfFirstAid
.
QUERY_1
,
SterliteRefineryQuery
.
NoOfFirstAid
.
QUERY_2
,
SterliteRefineryQuery
.
NoOfFirstAid
.
QUERY_3
,
]
},
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"safety_report"
,
"uom"
,
"norms"
,
"data_column"
:
[
"safety_report"
,
"uom"
,
"norms"
,
"on_date"
,
"mtd"
,
"ytd"
],
"on_date"
,
"mtd"
,
"ytd"
],
...
@@ -61,7 +67,22 @@ class SterliteRefineryTemplate:
...
@@ -61,7 +67,22 @@ class SterliteRefineryTemplate:
"MTD"
,
"MTD"
,
"YTD"
,
"YTD"
,
],
],
"query"
:
[],
"query"
:
{
"Grid Power Availability"
:
[],
"Cir 1 Avg. Rectifier Running Hrs."
:
[],
"Cir 2 Avg. Rectifier Running Hrs."
:
[],
"Power Availability to Cir-1"
:
[],
"Power Availability to Cir-2"
:
[],
"Power Availability to Cell House"
:
[],
"Cir-1 40 KA Rectifier Avg. Current"
:
[
SterliteRefineryQuery
.
Cir140KARectifierAvgCurrent
.
QUERY_1
,
SterliteRefineryQuery
.
Cir140KARectifierAvgCurrent
.
QUERY_2
,
SterliteRefineryQuery
.
Cir140KARectifierAvgCurrent
.
QUERY_3
,
],
"Cir-2 35 KA Rectifier Avg. Current"
:
[],
"Total Avg. Current"
:
[],
"Current Density"
:
[]
},
"data"
:
[],
"data"
:
[],
"data_column"
:
[
"power_availability"
,
"uom"
,
"data_column"
:
[
"power_availability"
,
"uom"
,
"norms"
,
"on_date"
,
"mtd"
,
"norms"
,
"on_date"
,
"mtd"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment