feat:下载按站点上传排序

This commit is contained in:
jxxghp
2024-10-14 19:45:22 +08:00
parent 7fd65c572b
commit 4877ec68b1
3 changed files with 65 additions and 16 deletions
+23 -1
View File
@@ -1,6 +1,6 @@
from datetime import datetime
from sqlalchemy import Column, Integer, String, Sequence, Float, JSON
from sqlalchemy import Column, Integer, String, Sequence, Float, JSON, func
from sqlalchemy.orm import Session
from app.db import db_query, Base
@@ -68,3 +68,25 @@ class SiteUserData(Base):
@db_query
def get_by_date(db: Session, date: str):
return db.query(SiteUserData).filter(SiteUserData.updated_day == date).all()
@staticmethod
@db_query
def get_latest(db: Session):
"""
获取各站点最新一天的数据
"""
subquery = (
db.query(
SiteUserData.domain,
func.max(SiteUserData.updated_day).label('latest_update_day')
)
.group_by(SiteUserData.domain)
.subquery()
)
# 主查询:按 domain 和 updated_day 获取最新的记录
return db.query(SiteUserData).join(
subquery,
(SiteUserData.domain == subquery.c.domain) &
(SiteUserData.updated_day == subquery.c.latest_update_day)
).order_by(SiteUserData.updated_time.desc()).all()
+9 -4
View File
@@ -116,15 +116,14 @@ class SiteOper(DbOper):
"updated_day": current_day,
"updated_time": current_time
})
siteuserdata = SiteUserData.get_by_domain(self._db, domain=domain,
workdate=current_day, worktime=current_time)
# 按站点+天判断是否存在数据
siteuserdata = SiteUserData.get_by_domain(self._db, domain=domain, workdate=current_day)
if siteuserdata:
# 存在则更新
SiteUserData.update(self._db, payload)
else:
# 不存在则插入
for key, value in payload.items():
SiteUserData(**payload).create(self._db)
SiteUserData(**payload).create(self._db)
return True, "更新站点用户数据成功"
def get_userdata(self) -> List[SiteUserData]:
@@ -145,6 +144,12 @@ class SiteOper(DbOper):
"""
return SiteUserData.get_by_date(self._db, date)
def get_userdata_latest(self) -> List[SiteUserData]:
"""
获取站点最新数据
"""
return SiteUserData.get_latest(self._db)
def get_icon_by_domain(self, domain: str) -> SiteIcon:
"""
按域名获取站点图标