feat(report):add /donut/add/time
This commit is contained in:
@@ -215,6 +215,35 @@ class ReportRepository():
|
|||||||
i["title"] = _obj[str(i["_id"])]
|
i["title"] = _obj[str(i["_id"])]
|
||||||
return report
|
return report
|
||||||
|
|
||||||
|
async def categorize_deviation(self):
|
||||||
|
report = await use_collection(TaskEnv.CLN_MONITOR_PYSICAL).aggregate(
|
||||||
|
[{"$match": {"deviation": {"$exists": True, "$ne": None}}},
|
||||||
|
{"$group": {
|
||||||
|
"_id": {
|
||||||
|
"$cond": [
|
||||||
|
{"$lt": ["$deviation", 10]},
|
||||||
|
"less_than_10",
|
||||||
|
{
|
||||||
|
"$cond": [
|
||||||
|
{"$and": [{"$gte": ["$deviation", 10]}, {"$lt": ["$deviation", 25]}]},
|
||||||
|
"between_10_and_25",
|
||||||
|
{
|
||||||
|
"$cond": [
|
||||||
|
{"$and": [{"$gte": ["$deviation", 25]},
|
||||||
|
{"$lt": ["$deviation", 40]}]},
|
||||||
|
"between_25_and_40",
|
||||||
|
"greater_than_40"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"count": {"$sum": 1},
|
||||||
|
"projectIds": { "$addToSet": "$project_id" },
|
||||||
|
"totalDeviation": {"$sum": "$deviation"}, }}]).to_list(None)
|
||||||
|
return report
|
||||||
|
|
||||||
async def list_delay_donut(self, _select: str):
|
async def list_delay_donut(self, _select: str):
|
||||||
get_list = []
|
get_list = []
|
||||||
_map = {'1': 'financial.total', '2': 'force_major.total', '3': 'technical.total', '4': 'extra_new_work',
|
_map = {'1': 'financial.total', '2': 'force_major.total', '3': 'technical.total', '4': 'extra_new_work',
|
||||||
@@ -229,7 +258,7 @@ class ReportRepository():
|
|||||||
# projects = await use_collection(TaskEnv.CLN_PROJECT).find({"_id":{"$in":get_list}}).to_list(None)
|
# projects = await use_collection(TaskEnv.CLN_PROJECT).find({"_id":{"$in":get_list}}).to_list(None)
|
||||||
return get_list
|
return get_list
|
||||||
|
|
||||||
async def sum_delay_percent(self):
|
async def sum_add_time_end_project(self):
|
||||||
result = {}
|
result = {}
|
||||||
result['less_than_20'] = []
|
result['less_than_20'] = []
|
||||||
result['bet_20_50']= []
|
result['bet_20_50']= []
|
||||||
@@ -245,16 +274,16 @@ class ReportRepository():
|
|||||||
list_project = await use_collection(TaskEnv.CLN_PROJECT).find({"_id":{"$in":get_list_project_id}}).to_list(None)
|
list_project = await use_collection(TaskEnv.CLN_PROJECT).find({"_id":{"$in":get_list_project_id}}).to_list(None)
|
||||||
if list_project:
|
if list_project:
|
||||||
for i in list_project:
|
for i in list_project:
|
||||||
if i['monitor']['detail']['first_time']:
|
if i['monitor']['detail']['first_time'] and i['monitor']['sts'] == 5:
|
||||||
cal = (get_dict_project_id[str(i["_id"])]['sum']/i['monitor']['detail']['first_time'])*100
|
cal = (get_dict_project_id[str(i["_id"])]['sum']/i['monitor']['detail']['first_time'])*100
|
||||||
if cal < 20 :
|
if cal < 20 :
|
||||||
result['less_than_20'].append(i)
|
result['less_than_20'].append(i["_id"])
|
||||||
elif cal < 50:
|
elif cal < 50:
|
||||||
result['bet_20_50'].append(i)
|
result['bet_20_50'].append(i["_id"])
|
||||||
elif cal < 100:
|
elif cal < 100:
|
||||||
result['bet_50_100'].append(i)
|
result['bet_50_100'].append(i["_id"])
|
||||||
elif cal < 200:
|
elif cal < 200:
|
||||||
result['bet_100_200'].append(i)
|
result['bet_100_200'].append(i["_id"])
|
||||||
else:
|
else:
|
||||||
result['upper_than_200'].append(i)
|
result['upper_than_200'].append(i["_id"])
|
||||||
return result
|
return result
|
||||||
|
|||||||
+20
-9
@@ -34,11 +34,7 @@ def report_country(_inp: ReportCountry = Body(...)):
|
|||||||
@shrink(repo.exist_project_state)
|
@shrink(repo.exist_project_state)
|
||||||
def exist_project_state(_inp: StatusReport = Body(...)):
|
def exist_project_state(_inp: StatusReport = Body(...)):
|
||||||
pass
|
pass
|
||||||
#نمودار تاخیرات بر اساس پروژه انتخاب شده
|
|
||||||
@router.get('/donut/delay/{project_id}', tags=_tag_base)
|
|
||||||
@shrink(repo.delay_donut)
|
|
||||||
def delay_donut(project_id:uuid.UUID):
|
|
||||||
pass
|
|
||||||
#وقتی روی نمودار تاخیرات کلیک کرد جزئیات را بهش نمایش بده
|
#وقتی روی نمودار تاخیرات کلیک کرد جزئیات را بهش نمایش بده
|
||||||
@router.post('/donut/delay/detail', tags=_tag_base)
|
@router.post('/donut/delay/detail', tags=_tag_base)
|
||||||
@shrink(repo.delay_donut_detail)
|
@shrink(repo.delay_donut_detail)
|
||||||
@@ -50,15 +46,24 @@ def delay_donut_detail(_inp: DelayDonutDetail = Body(...)):
|
|||||||
def progress_activity(project_id:uuid.UUID):
|
def progress_activity(project_id:uuid.UUID):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@router.get('/donut/delay/percent', tags=_tag_base)
|
# درصد انحراف و برنامه زمان بندی
|
||||||
@shrink(repo.sum_delay_percent)
|
@router.get('/deviation', tags=_tag_base)
|
||||||
def sum_delay_percent():
|
@shrink(repo.categorize_deviation)
|
||||||
|
def categorize_deviation():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# درصد افزایش زمان پروژه های خاتمه یافته
|
||||||
|
@router.get('/donut/add/time', tags=_tag_base)
|
||||||
|
@shrink(repo.sum_add_time_end_project)
|
||||||
|
def sum_add_time_end_project():
|
||||||
|
pass
|
||||||
|
|
||||||
|
#لیست پروژه ها را نمایش میده
|
||||||
@router.get('/donut/delay/{_select}', tags=_tag_base)
|
@router.get('/donut/delay/{_select}', tags=_tag_base)
|
||||||
@shrink(repo.list_delay_donut)
|
@shrink(repo.list_delay_donut)
|
||||||
def list_delay_donut(_select):
|
def list_delay_donut(_select):
|
||||||
pass
|
pass
|
||||||
|
#تفکیک پروژه ها بر حسب زیربنا و تفکیک ماهیت پروژه و تفکیک بر حسب نوع پروژه
|
||||||
@router.get('/donut/{_select}', tags=_tag_base)
|
@router.get('/donut/{_select}', tags=_tag_base)
|
||||||
@shrink(repo.donut)
|
@shrink(repo.donut)
|
||||||
def donut(_select:int):
|
def donut(_select:int):
|
||||||
@@ -66,7 +71,13 @@ def donut(_select:int):
|
|||||||
|
|
||||||
@router.post('/list-donut', tags=_tag_base)
|
@router.post('/list-donut', tags=_tag_base)
|
||||||
@shrink(repo.list_donut)
|
@shrink(repo.list_donut)
|
||||||
def list_donut(_inp: DonutList):
|
def list_donut(_inp: DonutList = Body(...)):
|
||||||
|
pass
|
||||||
|
|
||||||
|
#نمودار تاخیرات بر اساس پروژه انتخاب شده
|
||||||
|
@router.get('/donut/delay/project/{project_id}', tags=_tag_base)
|
||||||
|
@shrink(repo.delay_donut)
|
||||||
|
def delay_donut(project_id:uuid.UUID):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user