feat: 新增触发计算任务接口
This commit is contained in:
@@ -2,16 +2,19 @@ import json
|
|||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from nc_http.core import Response
|
from nc_http.core import Response
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
from api.blueprint import data
|
from api.blueprint import data
|
||||||
from commons.constants.material_task import MaterialTaskStatus
|
from commons.constants.material_task import MaterialTaskStatus
|
||||||
from commons.models.material_task import MaterialTask
|
from commons.models.material_task import MaterialTask
|
||||||
from commons.services.data import DataService
|
from commons.services.data import DataService
|
||||||
from core.extensions import siwa
|
from core.extensions import siwa
|
||||||
|
from tasks.once.calculate import calculate
|
||||||
|
from tasks.once.collect import collect
|
||||||
|
|
||||||
|
|
||||||
@data.route('/task/<int:task_id>/refresh', methods=['GET'])
|
@data.route('/task/<int:task_id>/refresh', methods=['GET'])
|
||||||
@siwa.doc(tags=[""], summary='')
|
@siwa.doc(tags=[""], summary='刷新采集任务')
|
||||||
def refresh_task(task_id):
|
def refresh_task(task_id):
|
||||||
with MaterialTask.atomic() as session:
|
with MaterialTask.atomic() as session:
|
||||||
data = MaterialTask.get_by_id(task_id, session)
|
data = MaterialTask.get_by_id(task_id, session)
|
||||||
@@ -30,3 +33,17 @@ def refresh_task(task_id):
|
|||||||
session.flush()
|
session.flush()
|
||||||
|
|
||||||
return Response()
|
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()
|
||||||
|
@@ -16,7 +16,7 @@ class ModifierCalculator(Calculator):
|
|||||||
query = AsphaltModifier.get_query(self.year, self.month)
|
query = AsphaltModifier.get_query(self.year, self.month)
|
||||||
query = query.with_entities(func.avg(AsphaltModifier.price))
|
query = query.with_entities(func.avg(AsphaltModifier.price))
|
||||||
data = query.first()
|
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)
|
fluctuating = self._get_fluctuating('price_recommend', price)
|
||||||
return price, fluctuating
|
return price, fluctuating
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user