From f45c743e3cfcf8053fb77b5a1ecfdc514db67b2f Mon Sep 17 00:00:00 2001 From: whm <973418690@qq.com> Date: Thu, 30 Oct 2025 17:24:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E8=B4=A6=E5=8F=B7=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=8A=A0=E5=85=A5=E4=BA=86=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E6=9C=80=E5=A4=A7=E5=8F=98=E5=8C=96=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/main.py | 2 ++ app/models/account.py | 1 + app/models/daily.py | 5 +++- app/schemas/account.py | 4 ++- app/services/daily.py | 44 ++++++++++++++++++++++++++++++++- app/services/settlement_data.py | 2 -- app/utils/scheduler.py | 3 ++- 7 files changed, 55 insertions(+), 6 deletions(-) diff --git a/app/main.py b/app/main.py index 2468308..d4552b4 100644 --- a/app/main.py +++ b/app/main.py @@ -9,6 +9,7 @@ from .core.database import init_db from .api.account import router as account_router from .api.database import router as database_router from .api.task import router as task_router +from .api.test import router as test_router from .api.comprehensive_data import router as comprehensive_data_router from .utils.scheduler import task_scheduler @@ -68,6 +69,7 @@ app.include_router(account_router, prefix="/api") app.include_router(database_router, prefix="/api") app.include_router(task_router, prefix="/api") app.include_router(comprehensive_data_router, prefix="/api") +app.include_router(test_router, prefix="/api") # 根路径 @app.get("/") diff --git a/app/models/account.py b/app/models/account.py index f3e7563..006637a 100644 --- a/app/models/account.py +++ b/app/models/account.py @@ -14,6 +14,7 @@ class Account(Base): created_at = Column(DateTime, server_default=func.now(), comment="创建时间") updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now(), comment="更新时间") update_time = Column(String(1000), nullable=False, comment="更新时间跨度") + max_variation = Column(Integer, default=1, comment="变化量的绝对值,单位是毫米") # 模型转字典 diff --git a/app/models/daily.py b/app/models/daily.py index 84ab4f5..2c45f1b 100644 --- a/app/models/daily.py +++ b/app/models/daily.py @@ -5,8 +5,11 @@ class DailyData(Base): __tablename__ = "daily" id = Column(Integer, primary_key=True, index=True, autoincrement=True) + user_id = Column(Integer, nullable=False, comment="用户id") account_id = Column(Integer, nullable=False, comment="账户id") point_id = Column(String(100), comment="测点id") NYID = Column(String(100), nullable=False, comment="期数id") linecode = Column(String(255), nullable=False, comment="水准线路编码") - section_id = Column(String(255), nullable=False, comment="所属断面id") \ No newline at end of file + section_id = Column(String(255), nullable=False, comment="所属断面id") + remaining = Column(Integer, nullable=False, comment="剩余天数") + user_id = Column(Integer, default=1, nullable=False, comment="用户id") diff --git a/app/schemas/account.py b/app/schemas/account.py index 7e052fd..617307e 100644 --- a/app/schemas/account.py +++ b/app/schemas/account.py @@ -9,6 +9,7 @@ class AccountBase(BaseModel): today_updated: Optional[int] = 0 project_name: Optional[str] = None update_time: Optional[str] = None + max_variation: Optional[int] = None class AccountCreate(AccountBase): pass @@ -42,7 +43,8 @@ class AccountResponse(AccountBase): project_name=account.project_name, created_at=account.created_at, updated_at=account.updated_at, - update_time=account.update_time + update_time=account.update_time, + max_variation=account.max_variation, ) class AccountListRequest(BaseModel): diff --git a/app/services/daily.py b/app/services/daily.py index 39bb2a2..18165fe 100644 --- a/app/services/daily.py +++ b/app/services/daily.py @@ -149,4 +149,46 @@ class DailyDataService(BaseService[DailyData]): # 构建[[{}], [{}]]格式 return [ [record] for pid in point_ids for record in grouped.get(pid, []) - ] \ No newline at end of file + ] + + # 获取所有的今日数据 + def get_all_daily_data( + self, + db: Session, + user_id: Optional[int] = None # 可选参数:按user_id筛选 + ) -> List[Dict[str, Any]]: + """ + 获取所有日常数据(DailyData),支持按user_id筛选 + :param db: 数据库会话 + :param user_id: 可选用户ID,若提供则只返回该用户的数据 + :return: 日常数据字典列表,包含所有字段 + """ + try: + # 基础查询 + query = db.query(DailyData) + + # 若提供了user_id,则添加筛选条件 + if user_id is not None: + query = query.filter(DailyData.user_id == user_id) + logger.info(f"查询user_id={user_id}的所有日常数据") + else: + logger.info("查询所有日常数据") + + # 执行查询并获取所有记录 + daily_records = query.all() + + # 转换为字典列表(保留所有字段) + result = [] + for record in daily_records: + record_dict = { + column.name: getattr(record, column.name) + for column in DailyData.__table__.columns + } + result.append(record_dict) + + logger.info(f"查询完成,共获取{len(result)}条日常数据") + return result + + except Exception as e: + logger.error(f"获取日常数据失败:{str(e)}", exc_info=True) + raise e \ No newline at end of file diff --git a/app/services/settlement_data.py b/app/services/settlement_data.py index fd7b608..fce813a 100644 --- a/app/services/settlement_data.py +++ b/app/services/settlement_data.py @@ -425,8 +425,6 @@ class SettlementDataService(BaseService[SettlementData]): work_type = 3 elif "H" in aname : work_type = 4 - - # 组装返回字典(新增aname字段) record_dict = { "id": settlement.id, diff --git a/app/utils/scheduler.py b/app/utils/scheduler.py index fd1e730..c05fc74 100644 --- a/app/utils/scheduler.py +++ b/app/utils/scheduler.py @@ -280,7 +280,8 @@ def scheduled_get_max_nyid_by_point_id(): 'point_id': d['point_id'], 'linecode': d['level_data']['linecode'], 'account_id': d['account_data']['account_id'], - 'section_id': d['section_data']['id'] + 'section_id': d['section_data']['id'], + 'remaining': d['remaining'], } daily_create_data.append(tem)