From af51729bae43c680b1c54d0f9731312465be41ee Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Sat, 9 Aug 2025 23:51:24 +0330 Subject: [PATCH] feat(excel):complete design excel --- app/repositories/excel.py | 1436 +++++++++++++++++++------------------ 1 file changed, 722 insertions(+), 714 deletions(-) diff --git a/app/repositories/excel.py b/app/repositories/excel.py index 1b01ea7..27fe8ef 100644 --- a/app/repositories/excel.py +++ b/app/repositories/excel.py @@ -14,752 +14,760 @@ from app.repositories.design_progress import DesignProgressRepository class ExcelRepository(): async def addDesignSheet(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) # این یعنی مسیر فایل جاری (مثلاً main.py) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) # رفتن به ریشه پروژه - excel_path = os.path.join(project_root, "projects1.xlsx") - print("Excel file path:", excel_path) - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="طراحی", dtype={'code': str,'date_send':str}) - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code",my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects',p) - if my_row['letter'] and pd.notna(row['letter']): - p['design']["letter"] = my_row["letter"] - if my_row['date_send'] and pd.notna(row['date_send']): - year = int(my_row['date_send'][:4]) - month = int(my_row['date_send'][4:6]) - day = int(my_row['date_send'][6:8]) - jalali_date = jdatetime.date(year, month, day) - gregorian_date = jalali_date.togregorian() - created_at = datetime.datetime.combine(gregorian_date, datetime.time()) - p['design']['date_send'] = created_at - if my_row['land_area'] and pd.notna(row['land_area']): - p['design']["land_area"] = my_row["land_area"] - if my_row['building_infrastructure'] and pd.notna(row['building_infrastructure']): - p['design']["building_infrastructure"] = my_row["building_infrastructure"] - if my_row['site_area'] and pd.notna(row['site_area']): - p['design']["site_area"] = my_row["site_area"] - if my_row['designer'] and pd.notna(row['designer']): - p['design']["designer"] = [my_row["designer"]] - p['design']["sts"] = 2 - - await use_collection(TaskEnv.CLN_PROJECT).update_one({'counter':int(my_row["code"])},{"$set":{'design':p['design']}}) + # base_dir = os.path.dirname(os.path.abspath(__file__)) # این یعنی مسیر فایل جاری (مثلاً main.py) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) # رفتن به ریشه پروژه + # excel_path = os.path.join(project_root, "projects1.xlsx") + # print("Excel file path:", excel_path) + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="طراحی", dtype={'code': str,'date_send':str}) + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code",my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects',p) + # if my_row['letter'] and pd.notna(row['letter']): + # p['design']["letter"] = my_row["letter"] + # if my_row['date_send'] and pd.notna(row['date_send']): + # year = int(my_row['date_send'][:4]) + # month = int(my_row['date_send'][4:6]) + # day = int(my_row['date_send'][6:8]) + # jalali_date = jdatetime.date(year, month, day) + # gregorian_date = jalali_date.togregorian() + # created_at = datetime.datetime.combine(gregorian_date, datetime.time()) + # p['design']['date_send'] = created_at + # if my_row['land_area'] and pd.notna(row['land_area']): + # p['design']["land_area"] = my_row["land_area"] + # if my_row['building_infrastructure'] and pd.notna(row['building_infrastructure']): + # p['design']["building_infrastructure"] = my_row["building_infrastructure"] + # if my_row['site_area'] and pd.notna(row['site_area']): + # p['design']["site_area"] = my_row["site_area"] + # if my_row['designer'] and pd.notna(row['designer']): + # p['design']["designer"] = [my_row["designer"]] + # p['design']["sts"] = 2 + # + # await use_collection(TaskEnv.CLN_PROJECT).update_one({'counter':int(my_row["code"])},{"$set":{'design':p['design']}}) return async def addMonitorSheet(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "projects1.xlsx") - print("Excel file path:", excel_path) - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="نظارت", dtype={'code': str,'date_create_project':str,'date_estimate_complete':str}) - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code",my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects',p) - p['monitor'] = {} - p['monitor']['base_information'] = {"budget" : []} - p['monitor']['detail'] = {"add_25_percent" : [],"adding" : []} - p['monitor']['agent'] = {} - p['monitor']['status_branch'] = {'electricity': False, 'water': False, 'wastewater': False, 'gas': False, 'phone': False} - if my_row['building_infrastructure'] and pd.notna(row['building_infrastructure']): - p['design']["building_infrastructure"] = my_row["building_infrastructure"] - print('a') - if my_row['land_area'] and pd.notna(row['land_area']): - p['design']["land_area"] = my_row["land_area"] - print('a1',my_row['monitor_type']) - if my_row['monitor_type'] == 'عالیه' : - print('b1') - p['monitor']['base_information']['type'] = 39 - elif my_row['monitor_type'] == 'عالیه و کارگاهی' : - print('b2') - p['monitor']['base_information']['type'] = 40 - else: - p['monitor']['base_information']['type'] = 42 - print('a2') - if my_row['date_create_project'] and pd.notna(row['date_create_project']): - year = int(my_row['date_create_project'][:4]) - month = int(my_row['date_create_project'][4:6]) - day = int(my_row['date_create_project'][6:8]) - jalali_date = jdatetime.date(year, month, day) - gregorian_date = jalali_date.togregorian() - created_at = datetime.datetime.combine(gregorian_date, datetime.time()) - p['monitor']['detail']['date_create_project'] = created_at - print('a3') - if my_row['first_time'] and pd.notna(row['first_time']): - p['monitor']['detail']["first_time"] = int(my_row["first_time"]) - print('a4') - if my_row['extend_time'] and pd.notna(row['extend_time']): - p['monitor']['detail']["extend_time"] = my_row["extend_time"] - print('a5') - # if my_row['date_estimate_complete'] and pd.notna(row['date_estimate_complete']): - # print('my_row[date_estimate_complete]',my_row['date_estimate_complete']) - # year_date = int(my_row['date_estimate_complete'][:4]) - # month_date = int(my_row['date_estimate_complete'][4:6]) - # day_date = int(my_row['date_estimate_complete'][6:8]) - # jalali_date_date = jdatetime.date(year_date, month_date, day_date) - # gregorian_date_date = jalali_date_date.togregorian() - # estimate = datetime.datetime.combine(gregorian_date_date, datetime.time()) - # p['monitor']['detail']['date_estimate_complete'] = estimate - # print('a6') - if my_row['first_amount'] and pd.notna(row['first_amount']): - p['monitor']['detail']["first_amount"] = my_row["first_amount"] - # price = { - # '_id': uuid.uuid4(), - # 'project_id': p['_id'], - # 'first_amount': my_row["first_amount"] - # } - # await use_collection(TaskEnv.CLN_PROJECT_PRICE_REPORT).insert_one(price) - print('a7') - if my_row['add_25_percent'] and pd.notna(row['add_25_percent']): - p['monitor']['detail']['add_25_percent'].append({"amount": my_row["add_25_percent"]}) - print('a8') - if my_row['adding_amount'] and pd.notna(row['adding_amount']): - p['monitor']['detail']['adding'].append({"amount":my_row["adding_amount"]}) - print('a9') - if my_row['workshop_consultant'] and pd.notna(row['workshop_consultant']): - p['monitor']['agent']['workshop_consultant'] = my_row["workshop_consultant"] - print('a0') - if my_row['constractor'] and pd.notna(row['constractor']): - p['monitor']['agent']['constractor'] = my_row["constractor"] - print('a00') - p['has_monitor'] = True - p['design']['sts'] = 2 - p['monitor']['sts'] = 2 - p['monitor']['has_design'] = True - create_code = ProjectRepository().create_code(ProjectModel(**p)) - p['monitor']['code'] = 'S'+ create_code - print('code',p['monitor']['code']) - if 'date_create_project' in p['monitor']['detail'] and "first_time" in p['monitor']['detail']: - p['date_delay'] = ProjectRepository().creat_date_delay(ProjectModel(**p)) - print('date_delay',p['date_delay']) - await use_collection(TaskEnv.CLN_PROJECT).update_one({'counter':int(my_row["code"])},{"$set":p}) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "projects1.xlsx") + # print("Excel file path:", excel_path) + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="نظارت", dtype={'code': str,'date_create_project':str,'date_estimate_complete':str}) + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code",my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects',p) + # p['monitor'] = {} + # p['monitor']['base_information'] = {"budget" : []} + # p['monitor']['detail'] = {"add_25_percent" : [],"adding" : []} + # p['monitor']['agent'] = {} + # p['monitor']['status_branch'] = {'electricity': False, 'water': False, 'wastewater': False, 'gas': False, 'phone': False} + # if my_row['building_infrastructure'] and pd.notna(row['building_infrastructure']): + # p['design']["building_infrastructure"] = my_row["building_infrastructure"] + # print('a') + # if my_row['land_area'] and pd.notna(row['land_area']): + # p['design']["land_area"] = my_row["land_area"] + # print('a1',my_row['monitor_type']) + # if my_row['monitor_type'] == 'عالیه' : + # print('b1') + # p['monitor']['base_information']['type'] = 39 + # elif my_row['monitor_type'] == 'عالیه و کارگاهی' : + # print('b2') + # p['monitor']['base_information']['type'] = 40 + # else: + # p['monitor']['base_information']['type'] = 42 + # print('a2') + # if my_row['date_create_project'] and pd.notna(row['date_create_project']): + # year = int(my_row['date_create_project'][:4]) + # month = int(my_row['date_create_project'][4:6]) + # day = int(my_row['date_create_project'][6:8]) + # jalali_date = jdatetime.date(year, month, day) + # gregorian_date = jalali_date.togregorian() + # created_at = datetime.datetime.combine(gregorian_date, datetime.time()) + # p['monitor']['detail']['date_create_project'] = created_at + # print('a3') + # if my_row['first_time'] and pd.notna(row['first_time']): + # p['monitor']['detail']["first_time"] = int(my_row["first_time"]) + # print('a4') + # if my_row['extend_time'] and pd.notna(row['extend_time']): + # p['monitor']['detail']["extend_time"] = my_row["extend_time"] + # print('a5') + # # if my_row['date_estimate_complete'] and pd.notna(row['date_estimate_complete']): + # # print('my_row[date_estimate_complete]',my_row['date_estimate_complete']) + # # year_date = int(my_row['date_estimate_complete'][:4]) + # # month_date = int(my_row['date_estimate_complete'][4:6]) + # # day_date = int(my_row['date_estimate_complete'][6:8]) + # # jalali_date_date = jdatetime.date(year_date, month_date, day_date) + # # gregorian_date_date = jalali_date_date.togregorian() + # # estimate = datetime.datetime.combine(gregorian_date_date, datetime.time()) + # # p['monitor']['detail']['date_estimate_complete'] = estimate + # # print('a6') + # if my_row['first_amount'] and pd.notna(row['first_amount']): + # p['monitor']['detail']["first_amount"] = my_row["first_amount"] + # # price = { + # # '_id': uuid.uuid4(), + # # 'project_id': p['_id'], + # # 'first_amount': my_row["first_amount"] + # # } + # # await use_collection(TaskEnv.CLN_PROJECT_PRICE_REPORT).insert_one(price) + # print('a7') + # if my_row['add_25_percent'] and pd.notna(row['add_25_percent']): + # p['monitor']['detail']['add_25_percent'].append({"amount": my_row["add_25_percent"]}) + # print('a8') + # if my_row['adding_amount'] and pd.notna(row['adding_amount']): + # p['monitor']['detail']['adding'].append({"amount":my_row["adding_amount"]}) + # print('a9') + # if my_row['workshop_consultant'] and pd.notna(row['workshop_consultant']): + # p['monitor']['agent']['workshop_consultant'] = my_row["workshop_consultant"] + # print('a0') + # if my_row['constractor'] and pd.notna(row['constractor']): + # p['monitor']['agent']['constractor'] = my_row["constractor"] + # print('a00') + # p['has_monitor'] = True + # p['design']['sts'] = 2 + # p['monitor']['sts'] = 2 + # p['monitor']['has_design'] = True + # create_code = ProjectRepository().create_code(ProjectModel(**p)) + # p['monitor']['code'] = 'S'+ create_code + # print('code',p['monitor']['code']) + # if 'date_create_project' in p['monitor']['detail'] and "first_time" in p['monitor']['detail']: + # p['date_delay'] = ProjectRepository().creat_date_delay(ProjectModel(**p)) + # print('date_delay',p['date_delay']) + # await use_collection(TaskEnv.CLN_PROJECT).update_one({'counter':int(my_row["code"])},{"$set":p}) return async def addProgress1(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "takmil_madarek.xlsx") - print("Excel file path:", excel_path) - df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code",my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = DesignProgressModel( - project_id=my_project['_id'], - type=1, - state=my_row['state'] - ) - progress.init_id().cu_at() - await use_collection("design_progress").insert_one(progress.mongo_dict()) - progress_id = progress.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) - if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - if 'third_time/send/date_at' in my_row and my_row['third_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) - if 'forth_time/send/date_at' in my_row and my_row['forth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) - if 'fifth_time/send/date_at' in my_row and my_row['fifth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) - if 'sixth_time/send/date_at' in my_row and my_row['sixth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه ششم', 'sixth_time', progress_id) - if 'seventh_time/send/date_at' in my_row and my_row['seventh_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه هفتم', 'seventh_time', progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "takmil_madarek.xlsx") + # print("Excel file path:", excel_path) + # df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code",my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=1, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress.mongo_dict()) + # progress_id = progress.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) + # if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # if 'third_time/send/date_at' in my_row and my_row['third_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) + # if 'forth_time/send/date_at' in my_row and my_row['forth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) + # if 'fifth_time/send/date_at' in my_row and my_row['fifth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) + # if 'sixth_time/send/date_at' in my_row and my_row['sixth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه ششم', 'sixth_time', progress_id) + # if 'seventh_time/send/date_at' in my_row and my_row['seventh_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه هفتم', 'seventh_time', progress_id) + # break + # print("code", my_row['code']) + return True # faz zero------------------------------------------------------------------------ async def addProgressPhysical(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "faz_zero.xlsx") - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="physical", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code",my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = DesignProgressModel( - project_id=my_project['_id'], - type=2, - state=my_row['state'] - ) - progress.init_id().cu_at() - await use_collection("design_progress").insert_one(progress.mongo_dict()) - progress_type = DesignProgressModel( - project_id=my_project['_id'], - type=2, - state=my_row['state'], - parent_id= progress.id, - sub_type= 1, - ) - progress_type.init_id().cu_at() - await use_collection("design_progress").insert_one(progress_type.mongo_dict()) - progress_id = progress_type.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) - if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - if 'third_time/send/date_at' in my_row and my_row['third_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) - if 'forth_time/send/date_at' in my_row and my_row['forth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) - if 'fifth_time/send/date_at' in my_row and my_row['fifth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) - if 'sixth_time/send/date_at' in my_row and my_row['sixth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه ششم', 'sixth_time', progress_id) - break - print("code", my_row['code']) - + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "faz_zero.xlsx") + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="physical", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code",my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=2, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress.mongo_dict()) + # progress_type = DesignProgressModel( + # project_id=my_project['_id'], + # type=2, + # state=my_row['state'], + # parent_id= progress.id, + # sub_type= 1, + # ) + # progress_type.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress_type.mongo_dict()) + # progress_id = progress_type.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) + # if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # if 'third_time/send/date_at' in my_row and my_row['third_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) + # if 'forth_time/send/date_at' in my_row and my_row['forth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) + # if 'fifth_time/send/date_at' in my_row and my_row['fifth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) + # if 'sixth_time/send/date_at' in my_row and my_row['sixth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه ششم', 'sixth_time', progress_id) + # break + # print("code", my_row['code']) + return True async def addProgressStudy(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "faz_zero.xlsx") - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="study", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code", my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':2}) - if not progress: - progress = DesignProgressModel( - project_id=my_project['_id'], - type=2, - state=my_row['state'] - ) - progress.init_id().cu_at() - progress = progress.mongo_dict() - await use_collection("design_progress").insert_one(progress) - progress_type = DesignProgressModel( - project_id=my_project['_id'], - type=2, - state=my_row['state'], - parent_id=progress['_id'], - sub_type=2, - ) - progress_type.init_id().cu_at() - await use_collection("design_progress").insert_one(progress_type.mongo_dict()) - progress_id = progress_type.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) - if 'second_time/send/date_at' in my_row and my_row[ - 'second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - if 'third_time/send/date_at' in my_row and my_row[ - 'third_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "faz_zero.xlsx") + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="study", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code", my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':2}) + # if not progress: + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=2, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # progress = progress.mongo_dict() + # await use_collection("design_progress").insert_one(progress) + # progress_type = DesignProgressModel( + # project_id=my_project['_id'], + # type=2, + # state=my_row['state'], + # parent_id=progress['_id'], + # sub_type=2, + # ) + # progress_type.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress_type.mongo_dict()) + # progress_id = progress_type.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) + # if 'second_time/send/date_at' in my_row and my_row[ + # 'second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # if 'third_time/send/date_at' in my_row and my_row[ + # 'third_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) + # break + # print("code", my_row['code']) + return True async def addProgressAlternativeSite(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "faz_zero.xlsx") - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="alternative_site", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code", my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':2}) - if not progress: - progress = DesignProgressModel( - project_id=my_project['_id'], - type=2, - state=my_row['state'] - ) - progress.init_id().cu_at() - progress = progress.mongo_dict() - await use_collection("design_progress").insert_one(progress) - progress_type = DesignProgressModel( - project_id=my_project['_id'], - type=2, - state=my_row['state'], - parent_id=progress['_id'], - sub_type=3, - ) - progress_type.init_id().cu_at() - await use_collection("design_progress").insert_one(progress_type.mongo_dict()) - progress_id = progress_type.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) - if 'second_time/send/date_at' in my_row and my_row[ - 'second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - if 'third_time/send/date_at' in my_row and my_row[ - 'third_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) - if 'forth_time/send/date_at' in my_row and my_row[ - 'forth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "faz_zero.xlsx") + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="alternative_site", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code", my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':2}) + # if not progress: + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=2, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # progress = progress.mongo_dict() + # await use_collection("design_progress").insert_one(progress) + # progress_type = DesignProgressModel( + # project_id=my_project['_id'], + # type=2, + # state=my_row['state'], + # parent_id=progress['_id'], + # sub_type=3, + # ) + # progress_type.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress_type.mongo_dict()) + # progress_id = progress_type.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) + # if 'second_time/send/date_at' in my_row and my_row[ + # 'second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # if 'third_time/send/date_at' in my_row and my_row[ + # 'third_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) + # if 'forth_time/send/date_at' in my_row and my_row[ + # 'forth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) + # break + # print("code", my_row['code']) + return True async def addProgressAlternativeArchitecture(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "faz_zero.xlsx") - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="alternative_architecture", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code", my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':2}) - if not progress: - progress = DesignProgressModel( - project_id=my_project['_id'], - type=2, - state=my_row['state'] - ) - progress.init_id().cu_at() - progress = progress.mongo_dict() - await use_collection("design_progress").insert_one(progress) - progress_type = DesignProgressModel( - project_id=my_project['_id'], - type=2, - state=my_row['state'], - parent_id=progress['_id'], - sub_type=4, - ) - progress_type.init_id().cu_at() - await use_collection("design_progress").insert_one(progress_type.mongo_dict()) - progress_id = progress_type.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) - if 'second_time/send/date_at' in my_row and my_row[ - 'second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - if 'third_time/send/date_at' in my_row and my_row[ - 'third_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) - if 'forth_time/send/date_at' in my_row and my_row[ - 'forth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) - if 'fifth_time/send/date_at' in my_row and my_row[ - 'fifth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "faz_zero.xlsx") + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="alternative_architecture", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code", my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':2}) + # if not progress: + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=2, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # progress = progress.mongo_dict() + # await use_collection("design_progress").insert_one(progress) + # progress_type = DesignProgressModel( + # project_id=my_project['_id'], + # type=2, + # state=my_row['state'], + # parent_id=progress['_id'], + # sub_type=4, + # ) + # progress_type.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress_type.mongo_dict()) + # progress_id = progress_type.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) + # if 'second_time/send/date_at' in my_row and my_row[ + # 'second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # if 'third_time/send/date_at' in my_row and my_row[ + # 'third_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) + # if 'forth_time/send/date_at' in my_row and my_row[ + # 'forth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) + # if 'fifth_time/send/date_at' in my_row and my_row[ + # 'fifth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) + # break + # print("code", my_row['code']) + return True async def completeProgressZero(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "faz_zero.xlsx") - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="alternative_architecture", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code", my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress = await use_collection("design_progress").find_one( - {'project_id': my_project['_id'], 'type': 2}) - if progress and 'complete_at' in my_row and my_row['complete_at'] != '': - print('jjjjjjjjjjjjjjjjjjjj',progress["_id"]) - c = UpdateDesignProgress(complete_at=my_row['complete_at']) - await DesignProgressRepository().update(progress["_id"],c) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "faz_zero.xlsx") + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="alternative_architecture", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code", my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress = await use_collection("design_progress").find_one( + # {'project_id': my_project['_id'], 'type': 2}) + # if progress and 'complete_at' in my_row and my_row['complete_at'] != '': + # print('jjjjjjjjjjjjjjjjjjjj',progress["_id"]) + # c = UpdateDesignProgress(complete_at=my_row['complete_at']) + # await DesignProgressRepository().update(progress["_id"],c) + # break + # print("code", my_row['code']) + return True #---------------------------------------------------------------------------------------- # faz one----------------------------------------------------------------- async def addProgressFazOneArt(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "faz_one.xlsx") - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="architecture", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code",my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = DesignProgressModel( - project_id=my_project['_id'], - type=3, - state=my_row['state'] - ) - progress.init_id().cu_at() - await use_collection("design_progress").insert_one(progress.mongo_dict()) - progress_type = DesignProgressModel( - project_id=my_project['_id'], - type=3, - state=my_row['state'], - parent_id= progress.id, - sub_type= 5, - ) - progress_type.init_id().cu_at() - await use_collection("design_progress").insert_one(progress_type.mongo_dict()) - progress_id = progress_type.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) - if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - if 'third_time/send/date_at' in my_row and my_row['third_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) - if 'forth_time/send/date_at' in my_row and my_row['forth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) - if 'fifth_time/send/date_at' in my_row and my_row['fifth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) - if 'sixth_time/send/date_at' in my_row and my_row['sixth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه ششم', 'sixth_time', progress_id) - if 'seventh_time/send/date_at' in my_row and my_row['seventh_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه هفتم', 'seventh_time', progress_id) - if 'eighth_time/send/date_at' in my_row and my_row['eighth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه هشتم', 'eighth_time', progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "faz_one.xlsx") + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="architecture", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code",my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=3, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress.mongo_dict()) + # progress_type = DesignProgressModel( + # project_id=my_project['_id'], + # type=3, + # state=my_row['state'], + # parent_id= progress.id, + # sub_type= 5, + # ) + # progress_type.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress_type.mongo_dict()) + # progress_id = progress_type.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) + # if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # if 'third_time/send/date_at' in my_row and my_row['third_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) + # if 'forth_time/send/date_at' in my_row and my_row['forth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) + # if 'fifth_time/send/date_at' in my_row and my_row['fifth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) + # if 'sixth_time/send/date_at' in my_row and my_row['sixth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه ششم', 'sixth_time', progress_id) + # if 'seventh_time/send/date_at' in my_row and my_row['seventh_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه هفتم', 'seventh_time', progress_id) + # if 'eighth_time/send/date_at' in my_row and my_row['eighth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه هشتم', 'eighth_time', progress_id) + # break + # print("code", my_row['code']) + return True async def addProgressFazOneUniversity(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "faz_one.xlsx") - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="university", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code", my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':3}) - if not progress: - progress = DesignProgressModel( - project_id=my_project['_id'], - type=3, - state=my_row['state'] - ) - progress.init_id().cu_at() - progress = progress.mongo_dict() - await use_collection("design_progress").insert_one(progress) - progress_type = DesignProgressModel( - project_id=my_project['_id'], - type=3, - state=my_row['state'], - parent_id=progress['_id'], - sub_type=6, - ) - progress_type.init_id().cu_at() - await use_collection("design_progress").insert_one(progress_type.mongo_dict()) - progress_id = progress_type.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) - if 'second_time/send/date_at' in my_row and my_row[ - 'second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - if 'third_time/send/date_at' in my_row and my_row[ - 'third_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) - if 'forth_time/send/date_at' in my_row and my_row[ - 'forth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) - if 'fifth_time/send/date_at' in my_row and my_row[ - 'fifth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "faz_one.xlsx") + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="university", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code", my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':3}) + # if not progress: + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=3, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # progress = progress.mongo_dict() + # await use_collection("design_progress").insert_one(progress) + # progress_type = DesignProgressModel( + # project_id=my_project['_id'], + # type=3, + # state=my_row['state'], + # parent_id=progress['_id'], + # sub_type=6, + # ) + # progress_type.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress_type.mongo_dict()) + # progress_id = progress_type.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) + # if 'second_time/send/date_at' in my_row and my_row[ + # 'second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # if 'third_time/send/date_at' in my_row and my_row[ + # 'third_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) + # if 'forth_time/send/date_at' in my_row and my_row[ + # 'forth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) + # if 'fifth_time/send/date_at' in my_row and my_row[ + # 'fifth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) + # break + # print("code", my_row['code']) + return True async def addProgressFazOneAll(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../..")) - excel_path = os.path.join(project_root, "faz_one.xlsx") - df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="university", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code", my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':3}) - if not progress: - progress = DesignProgressModel( - project_id=my_project['_id'], - type=3, - state=my_row['state'] - ) - progress.init_id().cu_at() - progress = progress.mongo_dict() - await use_collection("design_progress").insert_one(progress) - progress_type = DesignProgressModel( - project_id=my_project['_id'], - type=3, - state=my_row['state'], - parent_id=progress['_id'], - sub_type=7, - ) - progress_type.init_id().cu_at() - await use_collection("design_progress").insert_one(progress_type.mongo_dict()) - progress_id = progress_type.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) - if 'second_time/send/date_at' in my_row and my_row[ - 'second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - if 'third_time/send/date_at' in my_row and my_row[ - 'third_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) - - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../..")) + # excel_path = os.path.join(project_root, "faz_one.xlsx") + # df = pd.read_excel(excel_path, engine="openpyxl", sheet_name="university", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code", my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = await use_collection("design_progress").find_one({'project_id':my_project['_id'],'type':3}) + # if not progress: + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=3, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # progress = progress.mongo_dict() + # await use_collection("design_progress").insert_one(progress) + # progress_type = DesignProgressModel( + # project_id=my_project['_id'], + # type=3, + # state=my_row['state'], + # parent_id=progress['_id'], + # sub_type=7, + # ) + # progress_type.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress_type.mongo_dict()) + # progress_id = progress_type.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) + # if 'second_time/send/date_at' in my_row and my_row[ + # 'second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # if 'third_time/send/date_at' in my_row and my_row[ + # 'third_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) + # + # break + # print("code", my_row['code']) + return True # طراحی دوربین و شبکه async def addProgressNetworkDesign(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) - excel_path = os.path.join(project_root, "network.xlsx") - df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code", my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = DesignProgressModel( - project_id=my_project['_id'], - type=4, - state=my_row['state'] - ) - progress.init_id().cu_at() - await use_collection("design_progress").insert_one(progress.mongo_dict()) - progress_id = progress.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) + # excel_path = os.path.join(project_root, "network.xlsx") + # df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code", my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=4, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress.mongo_dict()) + # progress_id = progress.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time', progress_id) + # break + # print("code", my_row['code']) return True async def addProgressFazTwo(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) - excel_path = os.path.join(project_root, "faz_two.xlsx") - print("Excel file path:", excel_path) - df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code",my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = DesignProgressModel( - project_id=my_project['_id'], - type=5, - state=my_row['state'] - ) - progress.init_id().cu_at() - await use_collection("design_progress").insert_one(progress.mongo_dict()) - progress_id = progress.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) - if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - if 'third_time/send/date_at' in my_row and my_row['third_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) - if 'forth_time/send/date_at' in my_row and my_row['forth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) - if 'fifth_time/send/date_at' in my_row and my_row['fifth_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) + # excel_path = os.path.join(project_root, "faz_two.xlsx") + # print("Excel file path:", excel_path) + # df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code",my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=5, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress.mongo_dict()) + # progress_id = progress.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) + # if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # if 'third_time/send/date_at' in my_row and my_row['third_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه سوم', 'third_time', progress_id) + # if 'forth_time/send/date_at' in my_row and my_row['forth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه جهارم', 'forth_time', progress_id) + # if 'fifth_time/send/date_at' in my_row and my_row['fifth_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه پنجم', 'fifth_time', progress_id) + # break + # print("code", my_row['code']) return True async def addProgressMetri(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) - excel_path = os.path.join(project_root, "metri.xlsx") - print("Excel file path:", excel_path) - df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code",my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - progress_id = None - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = DesignProgressModel( - project_id=my_project['_id'], - type=6, - state=my_row['state'] - ) - progress.init_id().cu_at() - await use_collection("design_progress").insert_one(progress.mongo_dict()) - progress_id = progress.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) - if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: - await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) + # excel_path = os.path.join(project_root, "metri.xlsx") + # print("Excel file path:", excel_path) + # df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code",my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # progress_id = None + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=6, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress.mongo_dict()) + # progress_id = progress.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) + # if 'second_time/send/date_at' in my_row and my_row['second_time/send/date_at'] != "" and progress_id: + # await self.createRecord(my_row, 'مرتبه دوم', 'second_time', progress_id) + # break + # print("code", my_row['code']) return True async def addProgressTender(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) - excel_path = os.path.join(project_root, "tender.xlsx") - print("Excel file path:", excel_path) - df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code",my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - my_project = p - if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": - progress = DesignProgressModel( - project_id=my_project['_id'], - type=7, - state=my_row['state'] - ) - progress.init_id().cu_at() - await use_collection("design_progress").insert_one(progress.mongo_dict()) - progress_id = progress.id - await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) + # excel_path = os.path.join(project_root, "tender.xlsx") + # print("Excel file path:", excel_path) + # df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code",my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # my_project = p + # if my_row['first_time/send/date_at'] and my_row['first_time/send/date_at'] != "": + # progress = DesignProgressModel( + # project_id=my_project['_id'], + # type=7, + # state=my_row['state'] + # ) + # progress.init_id().cu_at() + # await use_collection("design_progress").insert_one(progress.mongo_dict()) + # progress_id = progress.id + # await self.createRecord(my_row, 'مرتبه اول', 'first_time',progress_id) + # break + # print("code", my_row['code']) return True async def changeStatus(self): - base_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) - excel_path = os.path.join(project_root, "status.xlsx") - print("Excel file path:", excel_path) - df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) - df = df.fillna("") - projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) - for index, row in df.iterrows(): - my_row = row.to_dict() - print(f"سطر {index}: {row.to_dict()}") - print("code",my_row['code']) - for p in projects: - if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): - print('projects', p) - sts = 2 - if my_row["status"] == 'متوقف': - sts = 3 - elif my_row["status"] == 'خاتمه یافته': - sts=4 - print('sts',sts) - await use_collection('project').update_one({"_id": p["_id"]}, {"$set": { - 'design.sts': sts, 'design.reason_stop': my_row["reason_stop"],'design.description':my_row['description'] - }}) - sts_class = ProjectSts( - project_id=p["_id"], - type='design', - sts=sts, - description=my_row["reason_stop"] - ).init_id().cu_at() - await use_collection(TaskEnv.CLN_PROJECT_STS).insert_one(sts_class.mongo_dict()) - break - print("code", my_row['code']) + # base_dir = os.path.dirname(os.path.abspath(__file__)) + # project_root = os.path.abspath(os.path.join(base_dir, "../../excel")) + # excel_path = os.path.join(project_root, "status.xlsx") + # print("Excel file path:", excel_path) + # df = pd.read_excel(excel_path, engine="openpyxl", dtype=str) + # df = df.fillna("") + # projects = await use_collection(TaskEnv.CLN_PROJECT).find({}).to_list(None) + # for index, row in df.iterrows(): + # my_row = row.to_dict() + # print(f"سطر {index}: {row.to_dict()}") + # print("code",my_row['code']) + # for p in projects: + # if str(my_row["code"]) in str(p['design']["code"]) and p['counter'] == int(str(my_row["code"])): + # print('projects', p) + # sts = 2 + # if my_row["status"] == 'متوقف': + # sts = 3 + # elif my_row["status"] == 'خاتمه یافته': + # sts=4 + # print('sts',sts) + # await use_collection('project').update_one({"_id": p["_id"]}, {"$set": { + # 'design.sts': sts, 'design.reason_stop': my_row["reason_stop"],'design.description':my_row['description'] + # }}) + # sts_class = ProjectSts( + # project_id=p["_id"], + # type='design', + # sts=sts, + # description=my_row["reason_stop"] + # ).init_id().cu_at() + # await use_collection(TaskEnv.CLN_PROJECT_STS).insert_one(sts_class.mongo_dict()) + # break + # print("code", my_row['code']) return True - def createDate(self, date): - if '/' in date: - date = date.replace('/', '') - year = int(date[:4]) - month = int(date[4:6]) - if month == 0: - month = 1 - print(month,'month') - day = int(date[6:8]) - if day ==0: - day=1 - print(day,'day') - jalali_date = jdatetime.date(year, month, day) - gregorian_date = jalali_date.togregorian() - created_at = datetime.datetime.combine(gregorian_date, datetime.time.min) - return created_at + # def createDate(self, date): + # if '/' in date: + # date = date.replace('/', '') + # year = int(date[:4]) + # month = int(date[4:6]) + # if month == 0: + # month = 1 + # print(month,'month') + # day = int(date[6:8]) + # if day ==0: + # day=1 + # print(day,'day') + # jalali_date = jdatetime.date(year, month, day) + # gregorian_date = jalali_date.togregorian() + # created_at = datetime.datetime.combine(gregorian_date, datetime.time.min) + # return created_at - async def createRecord(self, my_row, _time_f, _time_e, progress_id): - send = SubRecord( - date_at=self.createDate(my_row[f'{_time_e}/send/date_at']), - number=my_row[f'{_time_e}/send/number'], - description=None - ) - record = RecordModel( - design_progress_id=progress_id, - title=_time_f, - send=send, - ) - if f'{_time_e}/receive/date_at' in my_row and my_row[f'{_time_e}/receive/date_at'] != "": - print(my_row[f'{_time_e}/receive/date_at']) - receive = SubRecord( - date_at=self.createDate(my_row[f'{_time_e}/receive/date_at']), - number=my_row[f'{_time_e}/receive/number'], - description=None - ) - record.receive = receive - record.init_id().cu_at() - await use_collection("design_progress_record").insert_one(record.mongo_dict()) - return record + # async def createRecord(self, my_row, _time_f, _time_e, progress_id): + # send = SubRecord( + # date_at=self.createDate(my_row[f'{_time_e}/send/date_at']), + # number=my_row[f'{_time_e}/send/number'], + # description=None + # ) + # record = RecordModel( + # design_progress_id=progress_id, + # title=_time_f, + # send=send, + # ) + # if f'{_time_e}/receive/date_at' in my_row and my_row[f'{_time_e}/receive/date_at'] != "": + # print(my_row[f'{_time_e}/receive/date_at']) + # receive = SubRecord( + # date_at=self.createDate(my_row[f'{_time_e}/receive/date_at']), + # number=my_row[f'{_time_e}/receive/number'], + # description=None + # ) + # record.receive = receive + # record.init_id().cu_at() + # await use_collection("design_progress_record").insert_one(record.mongo_dict()) + # return record