Files
material-api/web/tasks/crond/jobs/create_last_month_publish_data.py
2024-07-09 18:11:22 +08:00

37 lines
1.1 KiB
Python

import datetime
from dateutil.relativedelta import relativedelta
from commons.models.price_publish import PricePublish
from commons.models.price_result import PriceResult
from core.factory import ClientApp
from tasks.crond import sched
from tasks.once.calculate import calculate
from tasks.once.collect import collect
@sched.scheduled_job(trigger='cron', day='*/1', hour='2', minute="30")
def create_last_month_publish_data():
"""
:return:
"""
today = datetime.date.today()
last_month = today - relativedelta(months=1)
year, month = last_month.year, last_month.month
with ClientApp().app_context:
# 检查是否生成上月数据
query = PriceResult.get_query(year=year, month=month)
result = PriceResult.get_list(query)
# todo 有修改记录的忽略,其余都重新生成
if not result:
calculate(year=year, month=month)
# 检查是否生成上月数据
query = PricePublish.get_query(year=last_month.year, month=last_month.month)
result = PricePublish.get_list(query)
if not result:
collect(year=year, month=month)
return