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_DATABASE=admin
MONGO_DATABASE=ilens_ai
MONGO_COLLECTION=eventLogs
\ No newline at end of file
template_file: /path/to/template.xlsx
logo_image: /path/to/logo.png
template_file: D:\vision_utilities\vision_utilities\report_generator\templates\daily_report_jk_template.xlsx
logo_image: D:\vision_utilities\vision_utilities\report_generator\jk_logo.jpg
\ No newline at end of file
import pandas as pd
from pymongo import MongoClient
from datetime import datetime, timedelta
import schedule
import time
import os
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
import yaml
from dotenv import load_dotenv
load_dotenv(dotenv_path='.env')
class DailyReportGenerator:
......@@ -21,8 +22,7 @@ class DailyReportGenerator:
with open('config.yml') as config_file:
config = yaml.safe_load(config_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):
hour = timestamp.hour
......@@ -35,7 +35,7 @@ class DailyReportGenerator:
def map_packer_name(self, camera_name):
packer_mapping = {
'camera_41': 'Packer 1',
'jk_4cebd0ec': 'Packer 1',
'camera_42': 'Packer 2',
'camera_44': 'Packer 4',
'camera_45': 'Packer 5',
......@@ -44,7 +44,6 @@ class DailyReportGenerator:
}
return packer_mapping.get(camera_name, 'Unknown')
def get_count(self, start_time, end_time, camera_name):
query = {
'timestamp': {'$gte': start_time, '$lte': end_time},
......@@ -65,13 +64,13 @@ class DailyReportGenerator:
count_difference = int(last_document['cement_bag_count']) - int(first_document['cement_bag_count'])
return count_difference
def create_excel_report(self):
report_file = 'daily_report.xlsx'
current_time = datetime.now()
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)
end_time = datetime(current_time.year, current_time.month, current_time.day, 6, 0, 0)
......@@ -80,41 +79,30 @@ class DailyReportGenerator:
sheet = wb.active
# Add logos
logo_image = Image(self.logo_image)
sheet.add_image(logo_image, 'A1')
sheet.merge_cells('A1:C3')
# logo_image = Image(self.logo_image)
# sheet.add_image(logo_image, 'A1')
# sheet.merge_cells('A1:C3')
# Set report date
sheet['I6'] = report_date
# 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'
sheet['L6'] = report_date
serial_number = 1
# Start filling details from 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)
packer_name = self.map_packer_name(camera_name)
count = self.get_count(start_time, end_time, camera_name)
# Fill in the data in respective cells
sheet[f'A{row}'] = start_time.date()
sheet[f'B{row}'] = shift_name
sheet[f'C{row}'] = packer_name
sheet[f'D{row}'] = count
sheet[f'A{row}'] = serial_number
sheet[f'B{row}'] = start_time.date()
sheet[f'C{row}'] = shift_name
sheet[f'D{row}'] = packer_name
sheet[f'E{row}'] = count
row += 1
serial_number += 1
# Save the report file
wb.save(report_file)
......@@ -123,14 +111,11 @@ class DailyReportGenerator:
file_path = os.path.abspath(report_file)
return file_path
def schedule_report_generation(self):
schedule.every().day.at('08:00').do(self.create_excel_report)
while True:
schedule.run_pending()
time.sleep(1)
# Create an instance of DailyReportGenerator
report_generator = DailyReportGenerator()
# Generate the daily report
report_path = report_generator.create_excel_report()
# Create an instance of DailyReportGenerator and start scheduling report generation
report_generator = DailyReportGenerator()
report_generator.schedule_report_generation()
# Print the path of the generated report
print(f"Generated Daily Report: {report_path}")
......@@ -79,6 +79,7 @@ class DailyReportGenerator:
writer = pd.ExcelWriter(file_path, engine='openpyxl')
df.to_excel(writer, index=False, sheet_name='Report')
writer.save()
print('file path ***************** ---------', 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