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
42b3fdfb
Commit
42b3fdfb
authored
Oct 10, 2023
by
suryakant
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sterlite Custom Report Updates
parent
2cc918d3
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
88 additions
and
39 deletions
+88
-39
scripts/constants/__init__.py
scripts/constants/__init__.py
+1
-0
scripts/core/handler/event_handler.py
scripts/core/handler/event_handler.py
+71
-18
scripts/template/sterlite_report_template.py
scripts/template/sterlite_report_template.py
+16
-21
No files found.
scripts/constants/__init__.py
View file @
42b3fdfb
...
...
@@ -61,6 +61,7 @@ class ReportType:
"""
REFINERY_REPORT
=
"refinery_report"
REFINERY_WORKSHEET_NAME
=
"REFINERY DAILY PERFORMANCE REPORT"
figlet
=
"""
...
...
scripts/core/handler/event_handler.py
View file @
42b3fdfb
...
...
@@ -123,15 +123,21 @@ class CustomReportHandler:
{
each_columns
:
None
}
)
input_json
[
each_blocks
][
CommonConstants
.
DATA
]
.
append
(
temp_data_dict
)
logger
.
info
(
f
"Block: {input_json[each_blocks]}"
)
return
input_json
def
write_dataframe_to_excel
(
self
,
input_json
,
writer
,
sheet_name
,
start_col
,
start_row
self
,
input_json
,
writer
,
workbook
,
sheet_name
,
start_col
,
start_row
):
"""
:param input_json:
:param writer:
:param workbook:
:param sheet_name:
:param start_col:
:param start_row:
...
...
@@ -139,6 +145,7 @@ class CustomReportHandler:
"""
dataframes_list
=
[]
logger
.
info
(
"Iterating through each block to create a dataframe"
)
# Iterate through the categories and concatenate their data
for
category
,
category_data
in
input_json
.
items
():
data
=
category_data
.
get
(
'data'
,
[])
...
...
@@ -147,13 +154,30 @@ class CustomReportHandler:
dataframes_list
.
append
(
data_frame
)
# Concatenate all DataFrames vertically (along rows)
logger
.
info
(
"Concatenating all dataframes to one"
)
result_df
=
pd
.
concat
(
dataframes_list
,
axis
=
1
,
ignore_index
=
False
)
result_df
.
to_excel
(
writer
,
sheet_name
=
sheet_name
,
startcol
=
start_col
,
startrow
=
start_row
,
header
=
Tru
e
,
index
=
False
startcol
=
start_col
,
startrow
=
start_row
+
1
,
header
=
Fals
e
,
index
=
False
)
return
result_df
.
shape
[
0
]
# Get the xlsxwriter workbook and worksheet objects.
worksheet
=
writer
.
sheets
[
sheet_name
]
# Write the column headers with the defined format.
for
col_index
,
value
in
enumerate
(
result_df
.
columns
.
values
):
worksheet
.
write
(
start_row
,
col_index
,
value
,
workbook
.
add_format
(
SterliteRefineryTemplate
.
COLUMN_HEADER_FORMAT
))
row
=
result_df
.
shape
[
0
]
column
=
result_df
.
shape
[
1
]
logger
.
info
(
f
"Shape of current data frame is {result_df.shape}"
)
return
row
,
column
,
worksheet
def
custom_report_handler
(
self
,
input_json
):
"""
...
...
@@ -162,15 +186,18 @@ class CustomReportHandler:
"""
status
=
False
message
=
"Error generating a message"
data
=
CommonConstants
.
DATA
data
=
input_json
[
"file_name"
]
try
:
# if str(input_json.job_type).lower() == ReportType.REFINERY_REPORT:
if
str
(
input_json
[
"job_type"
])
.
lower
()
==
ReportType
.
REFINERY_REPORT
:
logger
.
info
(
"Generating custom date filter with in the range"
)
# Getting custom date range using start date and end date
date_filter
=
self
.
create_custom_date_filter
(
input_json
=
input_json
)
with
pd
.
ExcelWriter
(
"output.xlsx"
,
engine
=
"openpyxl"
)
as
writer
:
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}"
)
...
...
@@ -180,30 +207,56 @@ class CustomReportHandler:
)
start_col
=
CommonConstants
.
START_COLUMN
start_row
=
CommonConstants
.
START_ROW
total_column
=
0
workbook
=
writer
.
book
sheet_name
=
each_date_range
[
CommonConstants
.
DAY_START_DATE
]
worksheet
=
None
# Iterating over sterlite json file
for
each_blocks
in
report_template
:
logger
.
info
(
"
Getting the
data from queries"
)
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
(
f
"start_row: {start_row}"
)
logger
.
info
(
"Writing each block into excel sheet"
)
last_row_shape
=
self
.
write_dataframe_to_excel
(
input_json
=
each_blocks
,
writer
=
writer
,
sheet_name
=
each_date_range
[
CommonConstants
.
DAY_START_DATE
],
start_col
=
start_col
,
start_row
=
start_row
,
)
logger
.
info
(
f
"Last row number: {last_row_shape}"
)
start_row
+=
last_row_shape
+
2
last_row
,
last_column
,
worksheet
=
\
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
,
)
logger
.
info
(
f
"Last row: {last_row}"
)
logger
.
info
(
f
"Last column: {last_column}"
)
if
total_column
<
last_column
:
total_column
=
last_column
start_row
+=
last_row
+
2
logger
.
info
(
f
"end_row: {start_row}"
)
# Add a header format.
main_header_format
=
workbook
.
add_format
(
SterliteRefineryTemplate
.
WORKSHEET_HEADER_FORMAT
)
logger
.
info
(
"Creating Header for each sheet"
)
# (Merge Rows, Start Column, '', Total Column, Title, Format)
worksheet
.
merge_range
(
1
,
0
,
0
,
0
,
sheet_name
,
main_header_format
)
worksheet
.
merge_range
(
1
,
1
,
0
,
total_column
-
1
,
ReportType
.
REFINERY_WORKSHEET_NAME
,
main_header_format
)
logger
.
info
(
f
"Report completed for: {each_date_range}"
)
except
GeneralException
as
err
:
logger
.
error
(
f
"Exception in custom_report_handler: {err}"
)
return
status
,
message
,
data
scripts/template/sterlite_report_template.py
View file @
42b3fdfb
...
...
@@ -2,6 +2,22 @@ from scripts.core.db.postgres.custom_report_query import SterliteRefineryQuery
class
SterliteRefineryTemplate
:
WORKSHEET_HEADER_FORMAT
=
{
"bold"
:
True
,
"align"
:
"center"
,
"valign"
:
"center"
,
"fg_color"
:
"#e6e7eb"
,
"font_color"
:
"#1b314f"
,
"border"
:
1
,
}
COLUMN_HEADER_FORMAT
=
{
"bold"
:
True
,
"align"
:
"center"
,
"valign"
:
"center"
,
"fg_color"
:
"#e6e7eb"
,
"font_color"
:
"#021b5e"
,
"border"
:
1
,
}
REPORT_TEMPLATE
=
[
{
"ANODE AVAILABILITY"
:
{
...
...
@@ -32,7 +48,6 @@ class SterliteRefineryTemplate:
"data_column"
:
[
"anode_availability"
,
"uom"
,
"norms"
,
"on_date"
,
"mtd"
,
"ytd"
],
"format"
:
""
,
},
"SAFETY REPORT"
:
{
"columns"
:
[
"SAFETY REPORT"
,
"UOM"
,
"NORMS"
,
"ON DATE"
,
"MTD"
,
"YTD"
],
...
...
@@ -51,7 +66,6 @@ class SterliteRefineryTemplate:
"data"
:
[],
"data_column"
:
[
"safety_report"
,
"uom"
,
"norms"
,
"on_date"
,
"mtd"
,
"ytd"
],
"format"
:
""
,
},
},
{
...
...
@@ -96,7 +110,6 @@ class SterliteRefineryTemplate:
"data_column"
:
[
"power_availability"
,
"uom"
,
"norms"
,
"on_date"
,
"mtd"
,
"ytd"
],
"format"
:
""
,
},
"RM ANODE RECEIPT DETAILS"
:
{
"columns"
:
[
...
...
@@ -111,7 +124,6 @@ class SterliteRefineryTemplate:
"data"
:
[],
"data_column"
:
[
"rm_anode_receipt_details"
,
"on_date"
,
"mtd"
,
"ytd"
,
"material"
,
"opening_stock"
],
"format"
:
""
,
},
},
{
...
...
@@ -147,7 +159,6 @@ class SterliteRefineryTemplate:
"data"
:
[],
"data_column"
:
[
"efficiencies"
,
"uom"
,
"norms"
,
"on_date"
,
"mtd"
,
"ytd"
],
"format"
:
""
,
},
"BANK / CROP"
:
{
"columns"
:
[
...
...
@@ -161,7 +172,6 @@ class SterliteRefineryTemplate:
"data"
:
[],
"data_column"
:
[
"bank_crop"
,
"ce(
%
)"
,
"theor_weight"
,
"actual_weight"
,
"stripping_time"
],
"format"
:
""
,
},
},
{
...
...
@@ -171,14 +181,12 @@ class SterliteRefineryTemplate:
"data"
:
[],
"data_column"
:
[
"production"
,
"uom"
,
"norms"
,
"on_date"
,
"mtd"
,
"ytd"
],
"format"
:
""
,
},
"CIRCULATION"
:
{
"columns"
:
[
"CIRCULATION"
,
"CE
%
"
,
"THEOR. WEIGHT"
,
"ACTUAL WEIGHT"
],
"query"
:
[],
"data"
:
[],
"data_column"
:
[
"circulation"
,
"ce"
,
"theor_weight"
,
"actual_weight"
],
"format"
:
""
,
},
},
{
...
...
@@ -208,14 +216,12 @@ class SterliteRefineryTemplate:
},
"data"
:
[],
"data_column"
:
[
"fg_inventory"
,
"on_date"
,
"mtd"
,
"ytd"
],
"format"
:
""
,
},
"PRODUCTION"
:
{
"columns"
:
[
"PRODUCTION"
,
"ON DATE"
,
"MTD"
,
"YTD"
],
"query"
:
[],
"data"
:
[],
"data_column"
:
[
"production"
,
"on_date"
,
"mtd"
,
"ytd"
],
"format"
:
""
,
},
},
{
...
...
@@ -231,7 +237,6 @@ class SterliteRefineryTemplate:
"data"
:
[],
"data_column"
:
[
"crop"
,
"banks"
,
"total_cells"
,
"cell_voltage"
,
"t_shorts"
],
"format"
:
""
,
},
"DEPOSIT LOSS (-) / GAIN (+) DETAILS"
:
{
"columns"
:
[
...
...
@@ -246,7 +251,6 @@ class SterliteRefineryTemplate:
"on_date"
,
"till_date"
],
"format"
:
""
,
}
},
{
...
...
@@ -269,7 +273,6 @@ class SterliteRefineryTemplate:
"3rd_crop"
,
"csm_plate_rejection"
],
"format"
:
""
,
}
},
{
...
...
@@ -286,7 +289,6 @@ class SterliteRefineryTemplate:
"data_column"
:
[
"filter_availability"
,
"on_date"
,
"mtd"
,
"filtered_volume"
,
"total_volume_refinery"
],
"format"
:
""
,
}
},
{
...
...
@@ -309,7 +311,6 @@ class SterliteRefineryTemplate:
"mtd"
,
"ytd"
,
],
"format"
:
""
,
},
"SPECIFIC CONSUMPTION"
:
{
"columns"
:
[
"CONSUMABLES"
,
"UOM"
,
"NORMS"
,
"ON DATE"
,
"MTD"
,
"YTD"
],
...
...
@@ -353,7 +354,6 @@ class SterliteRefineryTemplate:
"data"
:
[],
"data_column"
:
[
"consumables"
,
"uom"
,
"norms"
,
"on_date"
,
"mtd"
,
"ytd"
],
"format"
:
""
,
},
},
{
...
...
@@ -380,14 +380,12 @@ class SterliteRefineryTemplate:
"cir_1"
,
"cir_2"
,
],
"format"
:
""
,
},
"SUSPENDED SOLIDS"
:
{
"columns"
:
[
"SUSPENDED SOLIDS"
],
"query"
:
[],
"data"
:
[],
"data_column"
:
[
"suspended_solids"
],
"format"
:
""
,
},
},
{
...
...
@@ -396,14 +394,12 @@ class SterliteRefineryTemplate:
"query"
:
[],
"data"
:
[],
"data_column"
:
[
"bleeding_section"
,
"uom"
,
"on_date"
,
"mtd"
,
"ytd"
],
"format"
:
""
,
},
"BANK / CROP"
:
{
"columns"
:
[
"BANK / CROP"
,
"TIME"
,
"WEIGHT (MT)"
,
"CELLS"
,
"READING"
],
"query"
:
[],
"data"
:
[],
"data_column"
:
[
"bank_crop"
,
"time"
,
"weight"
,
"cells"
,
"reading"
],
"format"
:
""
,
},
},
{
...
...
@@ -419,7 +415,6 @@ class SterliteRefineryTemplate:
"department(m4)"
,
"equipment_details"
,
"equipment_location"
,
"duration"
,
"production"
,
"cause"
],
"format"
:
""
,
}
},
]
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