feat(report):add progress_phisical and progress_phisica/avg

This commit is contained in:
shahzeydyfah
2025-01-23 15:29:26 +03:30
parent 7c21ebe551
commit 50066e9399
2 changed files with 82 additions and 1 deletions
+71 -1
View File
@@ -323,4 +323,74 @@ class ReportRepository():
result['bet_100_200'].append(_model.project_id)
else:
result['upper_than_200'].append(_model.project_id)
return result
return result
async def progress_report(self):
result = await use_collection(TaskEnv.CLN_MONITOR_PYSICAL).aggregate([
{
"$sort": {'date_at': -1}
},
{
'$group':
{
'_id': "$project_id",
'records': {"$push": "$$ROOT"},
}
},
{
"$project": {
"_id": 1,
"records": {"$slice": ["$records", 1]},
}
},
]).to_list(None)
result_report = {
'less_than_1':[],
'bet_1_2':[],
'bet_2_5':[],
'upper_than_5':[],
}
for i in result:
print(i['records'])
if ('records' in i) and (len(i['records'])>0) and 'last_month' in i['records'][0]:
cal = i['records'][0]['last_month']
if cal < 1:
result_report['less_than_1'].append(i["_id"])
elif cal <= 2:
result_report['bet_1_2'].append(i["_id"])
elif cal <= 5:
result_report['bet_2_5'].append(i["_id"])
else:
result_report['upper_than_5'].append(i["_id"])
return result_report
async def progress_avg_report(self):
result = await use_collection(TaskEnv.CLN_MONITOR_PYSICAL).aggregate([
{
'$group':
{
'_id': "$project_id",
'avg':{'$avg': "$real"},
}
},
]).to_list(None)
result_report = {
'less_than_1':[],
'bet_1_2':[],
'bet_2_5':[],
'upper_than_5':[],
}
for i in result:
if i['avg'] < 1:
result_report['less_than_1'].append(i["_id"])
elif i['avg'] <= 2:
result_report['bet_1_2'].append(i["_id"])
elif i['avg'] <= 5:
result_report['bet_2_5'].append(i["_id"])
else:
result_report['upper_than_5'].append(i["_id"])
return result_report
+11
View File
@@ -89,6 +89,17 @@ def delay_donut(project_id:uuid.UUID):
@shrink(repo.add_cost)
def add_cost():
pass
# تفکیک درصد پیشرفت ماهیانه پروژه ها
@router.get('/progress_phisical', tags=_tag_base)
@shrink(repo.progress_report)
def progress_report():
pass
# تفکیک درصد پیشرفت میانگین ماهیانه پروژه ها
@router.get('/progress_phisica/avg', tags=_tag_base)
@shrink(repo.progress_avg_report)
def progress_avg_report():
pass