feat(excel):complete design excel
This commit is contained in:
+173
-1
@@ -6,7 +6,7 @@ import os
|
|||||||
|
|
||||||
from app.config import TaskEnv
|
from app.config import TaskEnv
|
||||||
from app.models.design_progress import DesignProgressModel, RecordModel, SubRecord, Record, UpdateDesignProgress
|
from app.models.design_progress import DesignProgressModel, RecordModel, SubRecord, Record, UpdateDesignProgress
|
||||||
from app.models.project import ProjectModel
|
from app.models.project import ProjectModel, ProjectSts
|
||||||
from core.service.mongo_db import use_collection
|
from core.service.mongo_db import use_collection
|
||||||
import jdatetime
|
import jdatetime
|
||||||
from app.repositories.project import ProjectRepository
|
from app.repositories.project import ProjectRepository
|
||||||
@@ -558,12 +558,184 @@ class ExcelRepository():
|
|||||||
|
|
||||||
break
|
break
|
||||||
print("code", my_row['code'])
|
print("code", my_row['code'])
|
||||||
|
# طراحی دوربین و شبکه
|
||||||
|
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'])
|
||||||
|
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'])
|
||||||
|
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'])
|
||||||
|
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'])
|
||||||
|
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'])
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def createDate(self, date):
|
def createDate(self, date):
|
||||||
|
if '/' in date:
|
||||||
|
date = date.replace('/', '')
|
||||||
year = int(date[:4])
|
year = int(date[:4])
|
||||||
month = int(date[4:6])
|
month = int(date[4:6])
|
||||||
|
if month == 0:
|
||||||
|
month = 1
|
||||||
|
print(month,'month')
|
||||||
day = int(date[6:8])
|
day = int(date[6:8])
|
||||||
|
if day ==0:
|
||||||
|
day=1
|
||||||
|
print(day,'day')
|
||||||
jalali_date = jdatetime.date(year, month, day)
|
jalali_date = jdatetime.date(year, month, day)
|
||||||
gregorian_date = jalali_date.togregorian()
|
gregorian_date = jalali_date.togregorian()
|
||||||
created_at = datetime.datetime.combine(gregorian_date, datetime.time.min)
|
created_at = datetime.datetime.combine(gregorian_date, datetime.time.min)
|
||||||
|
|||||||
@@ -64,4 +64,29 @@ def addProgressFazOneUniversity():
|
|||||||
def addProgressFazOneAll():
|
def addProgressFazOneAll():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@router.get('/progress/network', tags=_tag_base)
|
||||||
|
@shrink(repo.addProgressNetworkDesign)
|
||||||
|
def addProgressNetworkDesign():
|
||||||
|
pass
|
||||||
|
|
||||||
|
@router.get('/progress/faz/two', tags=_tag_base)
|
||||||
|
@shrink(repo.addProgressFazTwo)
|
||||||
|
def addProgressFazTwo():
|
||||||
|
pass
|
||||||
|
|
||||||
|
@router.get('/progress/faz/metri', tags=_tag_base)
|
||||||
|
@shrink(repo.addProgressMetri)
|
||||||
|
def addProgressMetri():
|
||||||
|
pass
|
||||||
|
|
||||||
|
@router.get('/progress/faz/tender', tags=_tag_base)
|
||||||
|
@shrink(repo.addProgressTender)
|
||||||
|
def addProgressTender():
|
||||||
|
pass
|
||||||
|
|
||||||
|
@router.get('/change/design/sts', tags=_tag_base)
|
||||||
|
@shrink(repo.changeStatus)
|
||||||
|
def changeStatus():
|
||||||
|
pass
|
||||||
|
|
||||||
app.include_router(router)
|
app.include_router(router)
|
||||||
Reference in New Issue
Block a user