51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
import datetime
|
|
import uuid
|
|
|
|
from app.config import TaskEnv
|
|
from app.models.monitor_physical_secondary_progress import SecondaryProgressModel, SubSecondaryProgressModel, LastRecord
|
|
from app.repositories.monitor_physical_progress import PhysicalProgressRepository
|
|
from core.repositories.base import BaseRepository
|
|
from core.service.mongo_db import use_collection
|
|
|
|
class SecondaryProgressRepository(BaseRepository):
|
|
def __init__(self):
|
|
super().__init__(collection=TaskEnv.CLN_MONITOR_SECONDARY, model=SecondaryProgressModel)
|
|
|
|
async def get_list(self,project_id:uuid.UUID):
|
|
get_list = await use_collection(TaskEnv.CLN_MONITOR_SECONDARY).find({'project_id':project_id}).to_list(None)
|
|
ids = [i["_id"] for i in get_list]
|
|
get_subs = await use_collection(TaskEnv.CLN_MONITOR_SUB_SECONDARY).aggregate([
|
|
{"$match":{'parent_id':{"$in":ids}}},
|
|
{"$group":{"_id":"$parent_id",'subs': {"$push": "$$ROOT"}}}
|
|
]).to_list(None)
|
|
for i in get_list:
|
|
for j in get_subs:
|
|
if i["_id"] == j["_id"]:
|
|
i['subs'] = j["subs"]
|
|
return get_list
|
|
|
|
|
|
|
|
|
|
class SubSecondaryProgressRepository(BaseRepository):
|
|
def __init__(self):
|
|
super().__init__(collection=TaskEnv.CLN_MONITOR_SUB_SECONDARY, model=SubSecondaryProgressModel)
|
|
|
|
async def get_list_by_parent_id(self,parent_id:uuid.UUID):
|
|
get_subs = await use_collection(TaskEnv.CLN_MONITOR_SUB_SECONDARY).find({"parent_id":parent_id}).to_list(None)
|
|
return get_subs
|
|
|
|
|
|
async def last_record(self, _inp: LastRecord):
|
|
m_first = _inp.date_at - datetime.timedelta(days=35)
|
|
print(m_first)
|
|
m_end = _inp.date_at - datetime.timedelta(days=25)
|
|
print(m_end)
|
|
last = await use_collection(TaskEnv.CLN_MONITOR_SUB_SECONDARY).find({
|
|
'parent_id': _inp.parent_id,
|
|
'date_at': {'$gte': m_first, '$lte': m_end}
|
|
}).sort("$natural", -1).to_list(None)
|
|
if last:
|
|
return last[0]
|
|
else:
|
|
return {} |