diff --git a/web/api/components/data.py b/web/api/components/data.py index 7d1d1a1..13500bf 100644 --- a/web/api/components/data.py +++ b/web/api/components/data.py @@ -2,16 +2,19 @@ import json import traceback from nc_http.core import Response +from pydantic import BaseModel, Field from api.blueprint import data from commons.constants.material_task import MaterialTaskStatus from commons.models.material_task import MaterialTask from commons.services.data import DataService from core.extensions import siwa +from tasks.once.calculate import calculate +from tasks.once.collect import collect @data.route('/task//refresh', methods=['GET']) -@siwa.doc(tags=[""], summary='') +@siwa.doc(tags=[""], summary='刷新采集任务') def refresh_task(task_id): with MaterialTask.atomic() as session: data = MaterialTask.get_by_id(task_id, session) @@ -30,3 +33,17 @@ def refresh_task(task_id): session.flush() return Response() + + +class CalculateQuery(BaseModel): + year: str = Field(title='年份') + month: str = Field(title='月份') + + +@data.route('/calculate', methods=['GET']) +@siwa.doc(tags=[""], summary='触发计算任务', query=CalculateQuery) +def start_calculate(query: CalculateQuery): + calculate(year=query.year, month=query.month) + collect(year=query.year, month=query.month) + + return Response() diff --git a/web/calculators/modifier.py b/web/calculators/modifier.py index a3d3141..56a319b 100644 --- a/web/calculators/modifier.py +++ b/web/calculators/modifier.py @@ -16,7 +16,7 @@ class ModifierCalculator(Calculator): query = AsphaltModifier.get_query(self.year, self.month) query = query.with_entities(func.avg(AsphaltModifier.price)) data = query.first() - price = round(data[0]) if data else 0 + price = round(data[0]) if data and data[0] else 0 fluctuating = self._get_fluctuating('price_recommend', price) return price, fluctuating