55 lines
2.5 KiB
Python
55 lines
2.5 KiB
Python
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.orm import Session
|
|
from ..core.database import get_db
|
|
from ..core.response_code import ResponseCode
|
|
from ..schemas.comprehensive_data import DataResponse
|
|
import logging
|
|
from ..services.daily import DailyDataService
|
|
from ..services.checkpoint import CheckpointService
|
|
from ..services.settlement_data import SettlementDataService
|
|
from ..utils.scheduler import scheduled_get_max_nyid_by_point_id
|
|
# 导入全局定时任务调度器实例和目标任务函数
|
|
from ..utils.scheduler import task_scheduler, scheduled_get_max_nyid_by_point_id
|
|
|
|
router = APIRouter(prefix="/test", tags=["测试"])
|
|
logger = logging.getLogger(__name__)
|
|
|
|
@router.get("/trigger_max_nyid_task", response_model=DataResponse)
|
|
def trigger_max_nyid_task(db: Session = Depends(get_db)):
|
|
"""接口:直接触发调度器中的 scheduled_get_max_nyid_by_point_id 定时任务"""
|
|
try:
|
|
# 触发任务执行
|
|
# task_scheduler.run_job(scheduled_get_max_nyid_by_point_id.__name__)
|
|
# settlement = SettlementDataService()
|
|
# # 获取模型实例列表
|
|
# checkpoint_instances = settlement.get_by_nyid(db, nyid="4993546")
|
|
# # 转为字典列表(核心修正)
|
|
# checkpoint_data = [instance.__dict__ for instance in checkpoint_instances]
|
|
# # 清理 SQLAlchemy 内部属性(可选,避免多余字段)
|
|
# checkpoint_data = [{k: v for k, v in item.items() if not k.startswith('_sa_')} for item in checkpoint_data]
|
|
|
|
# return DataResponse(
|
|
# code=ResponseCode.SUCCESS,
|
|
# message="定时任务触发执行成功!任务已开始处理(具体结果查看系统日志)",
|
|
# total=len(checkpoint_data), # 修正为实际数据长度
|
|
# data=checkpoint_data
|
|
# )
|
|
|
|
# scheduled_get_max_nyid_by_point_id()
|
|
daily_service = DailyDataService()
|
|
daily_data = daily_service.get_daily_data_by_account(db,account_id=1)
|
|
|
|
return DataResponse(
|
|
code=ResponseCode.SUCCESS,
|
|
message="定时任务触发执行成功!任务已开始处理(具体结果查看系统日志)",
|
|
total=1,
|
|
data=daily_data
|
|
)
|
|
except Exception as e:
|
|
logger.error(f"接口触发定时任务失败:{str(e)}", exc_info=True)
|
|
return DataResponse(
|
|
code=ResponseCode.QUERY_FAILED,
|
|
message=f"定时任务触发失败:{str(e)}",
|
|
total=0,
|
|
data={}
|
|
) |