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