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"
......
...@@ -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)
......
This diff is collapsed.
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