Commit 59ad58f0 authored by vaisakh.nair's avatar vaisakh.nair 🎯

new changes in template files and code

parent 04d3ad86
MONGO_CLIENT=mongodb://localhost # MONGO_CLIENT=mongodb://localhost
# MONGO_PORT=2717
# MONGO_DATABASE=admin
# MONGO_COLLECTION=eventLogs
MONGO_CLIENT=mongodb://admin:iLens%241234@192.168.3.181:2717/admin?connectTimeoutMS=10000&authSource=admin&authMechanism=SCRAM-SHA-1
MONGO_PORT=2717 MONGO_PORT=2717
MONGO_DATABASE=admin MONGO_DATABASE=ilens_ai
MONGO_COLLECTION=eventLogs MONGO_COLLECTION=eventLogs
\ No newline at end of file
template_file: /path/to/template.xlsx template_file: D:\vision_utilities\vision_utilities\report_generator\templates\daily_report_jk_template.xlsx
logo_image: /path/to/logo.png logo_image: D:\vision_utilities\vision_utilities\report_generator\jk_logo.jpg
\ No newline at end of file
import pandas as pd import pandas as pd
from pymongo import MongoClient from pymongo import MongoClient
from datetime import datetime, timedelta from datetime import datetime, timedelta
import schedule
import time
import os import os
from openpyxl import load_workbook from openpyxl import load_workbook
from openpyxl.drawing.image import Image from openpyxl.drawing.image import Image
import yaml import yaml
from dotenv import load_dotenv
load_dotenv(dotenv_path='.env')
class DailyReportGenerator: class DailyReportGenerator:
...@@ -21,8 +22,7 @@ class DailyReportGenerator: ...@@ -21,8 +22,7 @@ class DailyReportGenerator:
with open('config.yml') as config_file: with open('config.yml') as config_file:
config = yaml.safe_load(config_file) config = yaml.safe_load(config_file)
self.template_file = config['template_file'] self.template_file = config['template_file']
self.logo_image = config['logo_image'] # self.logo_image = config['logo_image']
def get_shift_name(self, timestamp): def get_shift_name(self, timestamp):
hour = timestamp.hour hour = timestamp.hour
...@@ -35,7 +35,7 @@ class DailyReportGenerator: ...@@ -35,7 +35,7 @@ class DailyReportGenerator:
def map_packer_name(self, camera_name): def map_packer_name(self, camera_name):
packer_mapping = { packer_mapping = {
'camera_41': 'Packer 1', 'jk_4cebd0ec': 'Packer 1',
'camera_42': 'Packer 2', 'camera_42': 'Packer 2',
'camera_44': 'Packer 4', 'camera_44': 'Packer 4',
'camera_45': 'Packer 5', 'camera_45': 'Packer 5',
...@@ -43,7 +43,6 @@ class DailyReportGenerator: ...@@ -43,7 +43,6 @@ class DailyReportGenerator:
'camera_47': 'Packer 7' 'camera_47': 'Packer 7'
} }
return packer_mapping.get(camera_name, 'Unknown') return packer_mapping.get(camera_name, 'Unknown')
def get_count(self, start_time, end_time, camera_name): def get_count(self, start_time, end_time, camera_name):
query = { query = {
...@@ -65,13 +64,13 @@ class DailyReportGenerator: ...@@ -65,13 +64,13 @@ class DailyReportGenerator:
count_difference = int(last_document['cement_bag_count']) - int(first_document['cement_bag_count']) count_difference = int(last_document['cement_bag_count']) - int(first_document['cement_bag_count'])
return count_difference return count_difference
def create_excel_report(self): def create_excel_report(self):
report_file = 'daily_report.xlsx' report_file = 'daily_report.xlsx'
current_time = datetime.now() current_time = datetime.now()
report_date = current_time.strftime("%Y-%m-%d") report_date = current_time.strftime("%Y-%m-%d")
report_file = f"daily_report_{report_date}.xlsx"
start_time = datetime(current_time.year, current_time.month, current_time.day - 1, 6, 0, 0) start_time = datetime(current_time.year, current_time.month, current_time.day - 1, 6, 0, 0)
end_time = datetime(current_time.year, current_time.month, current_time.day, 6, 0, 0) end_time = datetime(current_time.year, current_time.month, current_time.day, 6, 0, 0)
...@@ -80,41 +79,30 @@ class DailyReportGenerator: ...@@ -80,41 +79,30 @@ class DailyReportGenerator:
sheet = wb.active sheet = wb.active
# Add logos # Add logos
logo_image = Image(self.logo_image) # logo_image = Image(self.logo_image)
sheet.add_image(logo_image, 'A1') # sheet.add_image(logo_image, 'A1')
sheet.merge_cells('A1:C3') # sheet.merge_cells('A1:C3')
# Set report date # Set report date
sheet['I6'] = report_date sheet['L6'] = report_date
serial_number = 1
# Add headings
sheet['D4'] = 'JK CEMENT WORKS, NIMBAHERA RAJASTHAN'
sheet['D4'].font = sheet['D1'].font.copy(bold=True)
sheet['D4'].alignment = sheet['D1'].alignment.copy(horizontal='center')
sheet['D5'] = 'BAG COUNTING SOLUTION DAILY REPORT'
sheet['D5'].font = sheet['D1'].font.copy(bold=True)
sheet['D5'].alignment = sheet['D1'].alignment.copy(horizontal='center')
# Add column headers
sheet['A7'] = 'Date'
sheet['B7'] = 'Shift Name'
sheet['C7'] = 'Packer Name'
sheet['D7'] = 'Count'
# Start filling details from row 8 # Start filling details from row 8
row = 8 row = 8
for camera_name in ['camera_41', 'camera_42', 'camera_44', 'camera_45', 'camera_46', 'camera_47']: for camera_name in ['jk_4cebd0ec', 'camera_42', 'camera_44', 'camera_45', 'camera_46', 'camera_47']:
shift_name = self.get_shift_name(start_time) shift_name = self.get_shift_name(start_time)
packer_name = self.map_packer_name(camera_name) packer_name = self.map_packer_name(camera_name)
count = self.get_count(start_time, end_time, camera_name) count = self.get_count(start_time, end_time, camera_name)
# Fill in the data in respective cells # Fill in the data in respective cells
sheet[f'A{row}'] = start_time.date() sheet[f'A{row}'] = serial_number
sheet[f'B{row}'] = shift_name sheet[f'B{row}'] = start_time.date()
sheet[f'C{row}'] = packer_name sheet[f'C{row}'] = shift_name
sheet[f'D{row}'] = count sheet[f'D{row}'] = packer_name
sheet[f'E{row}'] = count
row += 1 row += 1
serial_number += 1
# Save the report file # Save the report file
wb.save(report_file) wb.save(report_file)
...@@ -123,14 +111,11 @@ class DailyReportGenerator: ...@@ -123,14 +111,11 @@ class DailyReportGenerator:
file_path = os.path.abspath(report_file) file_path = os.path.abspath(report_file)
return file_path return file_path
def schedule_report_generation(self): # Create an instance of DailyReportGenerator
schedule.every().day.at('08:00').do(self.create_excel_report) report_generator = DailyReportGenerator()
while True:
schedule.run_pending()
time.sleep(1)
# Generate the daily report
report_path = report_generator.create_excel_report()
# Create an instance of DailyReportGenerator and start scheduling report generation # Print the path of the generated report
report_generator = DailyReportGenerator() print(f"Generated Daily Report: {report_path}")
report_generator.schedule_report_generation()
...@@ -79,6 +79,7 @@ class DailyReportGenerator: ...@@ -79,6 +79,7 @@ class DailyReportGenerator:
writer = pd.ExcelWriter(file_path, engine='openpyxl') writer = pd.ExcelWriter(file_path, engine='openpyxl')
df.to_excel(writer, index=False, sheet_name='Report') df.to_excel(writer, index=False, sheet_name='Report')
writer.save() writer.save()
print('file path ***************** ---------', file_path)
return file_path return file_path
......
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