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
ec40359f
Commit
ec40359f
authored
Oct 19, 2023
by
suryakant
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ACP Custom Report Changes
parent
4d2a7a39
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
156 additions
and
23 deletions
+156
-23
images/vedanta_sterlite_copper.png
images/vedanta_sterlite_copper.png
+0
-0
scripts/constants/__init__.py
scripts/constants/__init__.py
+2
-0
scripts/core/db/postgres/custom_report_query.py
scripts/core/db/postgres/custom_report_query.py
+40
-22
scripts/core/handler/event_handler.py
scripts/core/handler/event_handler.py
+114
-1
No files found.
images/vedanta_sterlite_copper.png
0 → 100644
View file @
ec40359f
13.8 KB
scripts/constants/__init__.py
View file @
ec40359f
...
...
@@ -64,10 +64,12 @@ class ReportType:
REFINERY_REPORT
=
"refinery_report"
ACP_REPORT
=
"acp_report"
CCPP_REPORT
=
"ccpp_report"
REFINERY_WORKSHEET_NAME
=
"REFINERY DAILY PERFORMANCE REPORT"
ACP_WORKSHEET_NAME_1
=
"VEDANTA LIMITED"
ACP_WORKSHEET_NAME_2
=
"ANODE CASTING PLANT (ACP) - SHIFT INCHARGE LOG SHEET"
DATE
=
"DATE"
LOGO_IMAGE_PATH
=
"images/vedanta_sterlite_copper.png"
class
PostgresConstant
:
...
...
scripts/core/db/postgres/custom_report_query.py
View file @
ec40359f
...
...
@@ -242,28 +242,46 @@ class SterliteRefineryQuery:
class
DOCellsInOperation
:
""" ANODE AVAILABILITY """
QUERY_1
=
"""
SELECT
'DO Cells In Operation' AS ANODE_AVAILABILITY,
'No.' AS UOM,
MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'liberator_cells_plan' THEN METRIC_VALUE END)
AS NORMS,
MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'liberator_cells_actual' THEN METRIC_VALUE END)
AS ON_DATE,
MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'liberator_cells_actual' THEN METRIC_VALUE END)
AS MTD,
MAX(CASE
WHEN LOWER(TRIM(KPI)) = 'liberator_cells_actual' THEN METRIC_VALUE END)
AS YTD
FROM
SEMANTIC_PROD.BANKS_CELLS_LIBERATORS_VIEW
GROUP BY
1,2
"""
SELECT
'DO Cells In Operation' AS anode_availability,
'No.' AS uom,
ROUND(AVG(CASE WHEN LOWER(TRIM(KPI)) = 'liberator_cells_plan'
THEN METRIC_VALUE END)) AS norms,
ROUND(AVG(CASE WHEN LOWER(TRIM(KPI)) = 'liberator_cells_actual'
THEN METRIC_VALUE END)) AS on_date
FROM SEMANTIC_PROD.BANKS_CELLS_LIBERATORS_VIEW
WHERE LOWER(TRIM(KPI)) in
('liberator_cells_plan', 'liberator_cells_actual')
AND DATE BETWEEN '{day_start_date}' AND '{day_end_date}'
GROUP BY 1,2
"""
QUERY_2
=
"""
SELECT
'DO Cells In Operation' AS anode_availability,
'No.' AS uom,
ROUND(AVG(CASE WHEN LOWER(TRIM(KPI)) = 'liberator_cells_actual'
THEN METRIC_VALUE END)) AS mtd
FROM SEMANTIC_PROD.BANKS_CELLS_LIBERATORS_VIEW
WHERE LOWER(TRIM(KPI)) in
('liberator_cells_plan', 'liberator_cells_actual')
AND DATE BETWEEN '{month_start_date}' AND '{month_end_date}'
GROUP BY 1,2
"""
QUERY_3
=
"""
SELECT
'DO Cells In Operation' AS anode_availability,
'No.' AS uom,
ROUND(AVG(CASE WHEN LOWER(TRIM(KPI)) = 'liberator_cells_actual'
THEN METRIC_VALUE END)) AS ytd
FROM SEMANTIC_PROD.BANKS_CELLS_LIBERATORS_VIEW
WHERE LOWER(TRIM(KPI)) in
('liberator_cells_plan', 'liberator_cells_actual')
AND DATE BETWEEN '{year_start_date}' AND '{year_end_date}'
GROUP BY 1,2
"""
class
TotalCellsInOperation
:
""" ANODE AVAILABILITY """
...
...
scripts/core/handler/event_handler.py
View file @
ec40359f
...
...
@@ -448,7 +448,120 @@ class CustomReportHandler:
style
=
ACPReportTemplate
.
WORKSHEET_IMAGE_HEADER_FORMAT
,
worksheet
=
worksheet
,
workbook
=
workbook
,
)
worksheet
.
insert_image
(
'A1'
,
'logo.png'
)
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
=
ACPReportTemplate
.
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
=
ACPReportTemplate
.
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
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
.
CCPP_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
(
ACPReportTemplate
.
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
=
ACPReportTemplate
.
COLUMN_HEADER_FORMAT
,
column_merge_format
=
ACPReportTemplate
.
COLUMN_HEADER_FORMAT
,
blank_merge_format
=
ACPReportTemplate
.
BLANK_COLUMN_HEADER_FORMAT
)
if
total_column
<
shape
[
1
]:
total_column
=
shape
[
1
]
start_row
+=
shape
[
0
]
+
3
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'
,
'vedanta_sterlite_copper.png'
)
# -------- Heading Section --------
logger
.
info
(
"Adding Heading in Header"
)
...
...
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