diff --git a/app/api/comprehensive_data.py b/app/api/comprehensive_data.py index 6917bae..07580a5 100644 --- a/app/api/comprehensive_data.py +++ b/app/api/comprehensive_data.py @@ -394,6 +394,7 @@ def get_today_data(request: TodayDataRequest, db: Session = Depends(get_db)): # account_id = request.account_id # 根据根据实际需求决定是否需要 # 触发定时任务(如果需要传入参数,可在这里添加) + # from ..utils.scheduler import scheduled_get_max_nyid_by_point_id # scheduled_get_max_nyid_by_point_id() # 调用服务层获取数据 diff --git a/app/models/daily.py b/app/models/daily.py index 2c45f1b..ad9a470 100644 --- a/app/models/daily.py +++ b/app/models/daily.py @@ -13,3 +13,4 @@ class DailyData(Base): 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") + is_all = Column(Integer, default=1, nullable=False, comment="是否全量数据") diff --git a/app/utils/scheduler.py b/app/utils/scheduler.py index 7b8d6e7..f3d039a 100644 --- a/app/utils/scheduler.py +++ b/app/utils/scheduler.py @@ -91,6 +91,20 @@ class TaskScheduler: name='每日重置账号更新状态' ) logger.info("系统定时任务:每日重置账号更新状态已添加") + existing_job = None + existing_job = self.scheduler.get_job("scheduled_get_max_nyid_by_point_id") + if not existing_job: + # 添加每天凌晨1点执行获取max NYID关联数据任务 + self.scheduler.add_job( + scheduled_get_max_nyid_by_point_id, + 'cron', + id='scheduled_get_max_nyid_by_point_id', + hour=1, + minute=0, + second=0, + name='每日获取max NYID关联数据并创建DailyData记录' + ) + logger.info("系统定时任务:每日获取max NYID关联数据任务已添加") except Exception as e: logger.error(f"设置系统定时任务失败: {e}") @@ -206,6 +220,7 @@ def scheduled_get_max_nyid_by_point_id(): """定时任务:获取max NYID关联数据并批量创建DailyData记录""" db: Session = None try: + logger.info("定时任务触发:开始获取max NYID关联数据并处理") # 初始化数据库会话(替代接口的Depends依赖) db = SessionLocal() logger.info("定时任务开始执行:获取max NYID关联数据并处理") @@ -223,6 +238,7 @@ def scheduled_get_max_nyid_by_point_id(): daily_data = monitor.get_due_data(result) data = daily_data['data'] error_data = daily_data['error_data'] + winters = daily_data['winter'] logger.info(f"首次获取数据完成,共{len(result)}条记录") @@ -238,8 +254,10 @@ def scheduled_get_max_nyid_by_point_id(): # 更新冬休、待处理、错误数据 winters = w_list['winter'] data.extend(w_list['data']) + # 过期数据一并处理 + # data.extend(w_list['error_data']) error_data.extend(w_list['error_data']) - + data.extend(error_data) # 4. 初始化服务实例 level_service = LevelDataService() checkpoint_db = CheckpointService() @@ -282,7 +300,7 @@ def scheduled_get_max_nyid_by_point_id(): 'linecode': d['level_data']['linecode'], 'account_id': d['account_data']['account_id'], 'section_id': d['section_data']['section_id'], - 'remaining': d['remaining'], + 'remaining': (0-int(d['overdue'])) if 'overdue' in d else d['remaining'], } daily_create_data.append(tem)