feat: 新增单独计算近半年均价的接口
This commit is contained in:
@@ -38,6 +38,7 @@ def refresh_task(task_id):
|
|||||||
class CalculateQuery(BaseModel):
|
class CalculateQuery(BaseModel):
|
||||||
year: int = Field(title='年份')
|
year: int = Field(title='年份')
|
||||||
month: int = Field(title='月份')
|
month: int = Field(title='月份')
|
||||||
|
only_avg: int = Field(title='是否只计算均值')
|
||||||
|
|
||||||
|
|
||||||
@data.route('/calculate', methods=['GET'])
|
@data.route('/calculate', methods=['GET'])
|
||||||
@@ -51,6 +52,6 @@ def start_calculate(query: CalculateQuery):
|
|||||||
@data.route('/collect', methods=['GET'])
|
@data.route('/collect', methods=['GET'])
|
||||||
@siwa.doc(tags=[""], summary='触发计算任务', query=CalculateQuery)
|
@siwa.doc(tags=[""], summary='触发计算任务', query=CalculateQuery)
|
||||||
def start_collect(query: CalculateQuery):
|
def start_collect(query: CalculateQuery):
|
||||||
collect(year=query.year, month=query.month)
|
collect(year=query.year, month=query.month, only_avg=query.only_avg)
|
||||||
|
|
||||||
return Response()
|
return Response()
|
||||||
|
@@ -12,7 +12,8 @@ from commons.models.material import Material
|
|||||||
|
|
||||||
class Collector:
|
class Collector:
|
||||||
|
|
||||||
def __init__(self, year, month, force=True):
|
def __init__(self, year, month, force=True, only_avg=0):
|
||||||
|
self.only_avg = only_avg
|
||||||
self.year = year
|
self.year = year
|
||||||
self.month = month
|
self.month = month
|
||||||
self.force = True # todo-2 已发布的价格不在覆盖计算
|
self.force = True # todo-2 已发布的价格不在覆盖计算
|
||||||
@@ -120,9 +121,11 @@ class Collector:
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
# 当月价
|
# 当月价
|
||||||
# self.get_from_survey()
|
if not self.only_avg:
|
||||||
self.get_from_result()
|
PricePublish.clean(self.year, self.month, type=1) # 清空当月价
|
||||||
|
self.get_from_result()
|
||||||
# 近半年平均价
|
# 近半年平均价
|
||||||
|
PricePublish.clean(self.year, self.month, type=2) # 清空近半年平均价
|
||||||
self.get_avg()
|
self.get_avg()
|
||||||
|
|
||||||
|
|
||||||
|
@@ -41,8 +41,11 @@ class PricePublish(db.Model, Model, OperationTrackMixin, BaseModelMixin):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def clean(cls, year, month):
|
def clean(cls, year, month, type=None):
|
||||||
cls.query.filter(cls.year == year, cls.month == month).delete()
|
query = cls.query.filter(cls.year == year, cls.month == month)
|
||||||
|
if type:
|
||||||
|
query.filter(cls.type == type)
|
||||||
|
query.delete()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_by_key(cls, name, year, month, type):
|
def get_by_key(cls, name, year, month, type):
|
||||||
|
@@ -2,12 +2,11 @@ from collectors import Collector
|
|||||||
from commons.models.price_publish import PricePublish
|
from commons.models.price_publish import PricePublish
|
||||||
|
|
||||||
|
|
||||||
def collect(year=2023, month=11):
|
def collect(year=2023, month=11, only_avg=0):
|
||||||
"""
|
"""
|
||||||
整理发布价格
|
整理发布价格
|
||||||
"""
|
"""
|
||||||
PricePublish.clean(year, month) # 清空当月数据
|
collector = Collector(year, month, only_avg=only_avg)
|
||||||
collector = Collector(year, month)
|
|
||||||
collector.run()
|
collector.run()
|
||||||
|
|
||||||
|
|
||||||
@@ -15,7 +14,7 @@ if __name__ == '__main__':
|
|||||||
from core.factory import ClientApp
|
from core.factory import ClientApp
|
||||||
|
|
||||||
with ClientApp().app_context():
|
with ClientApp().app_context():
|
||||||
collect(2025, 4)
|
collect(2025, 5)
|
||||||
|
|
||||||
# for i in range(4):
|
# for i in range(4):
|
||||||
# collect(2025, i + 1)
|
# collect(2025, i + 1)
|
||||||
|
Reference in New Issue
Block a user