fix: 更新所监测设备测点的total_production
This commit is contained in:
parent
52d9407346
commit
c68feb4c8b
|
@ -99,7 +99,7 @@ def cal_mpointstats_duration(start_time: str, end_time: str, m_code_list=[], cal
|
|||
|
||||
|
||||
@shared_task(base=CustomTask)
|
||||
def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: int):
|
||||
def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: int, cascade=True, sflog_hours=[]):
|
||||
"""
|
||||
计算某一测点, 某一时间点某一小时的统计值
|
||||
"""
|
||||
|
@ -135,23 +135,26 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
|||
ms.save()
|
||||
|
||||
# 更新更高级别的值
|
||||
sum_dict_day = MpointStat.objects.filter(type="hour", mpoint=mpoint, year=year, month=month, day=day).aggregate(sum=Sum("val"))
|
||||
params_day = {"type": "day", "mpoint": mpoint, "year": year, "month": month, "day": day}
|
||||
ms_day, _ = MpointStat.objects.get_or_create(**params_day, defaults=params_day)
|
||||
ms_day.val = sum_dict_day["sum"]
|
||||
ms_day.save()
|
||||
if cascade or hour == 23:
|
||||
sum_dict_day = MpointStat.objects.filter(type="hour", mpoint=mpoint, year=year, month=month, day=day).aggregate(sum=Sum("val"))
|
||||
params_day = {"type": "day", "mpoint": mpoint, "year": year, "month": month, "day": day}
|
||||
ms_day, _ = MpointStat.objects.get_or_create(**params_day, defaults=params_day)
|
||||
ms_day.val = sum_dict_day.get('sum', 0)
|
||||
ms_day.save()
|
||||
|
||||
sum_dict_month = MpointStat.objects.filter(type="day", mpoint=mpoint, year=year, month=month).aggregate(sum=Sum("val"))
|
||||
params_month = {"type": "month", "mpoint": mpoint, "year": year, "month": month}
|
||||
ms_month, _ = MpointStat.objects.get_or_create(**params_month, defaults=params_month)
|
||||
ms_month.val = sum_dict_month["sum"]
|
||||
ms_month.save()
|
||||
if cascade or day in [28, 29, 30, 31]:
|
||||
sum_dict_month = MpointStat.objects.filter(type="day", mpoint=mpoint, year=year, month=month).aggregate(sum=Sum("val"))
|
||||
params_month = {"type": "month", "mpoint": mpoint, "year": year, "month": month}
|
||||
ms_month, _ = MpointStat.objects.get_or_create(**params_month, defaults=params_month)
|
||||
ms_month.val = sum_dict_month.get('sum', 0)
|
||||
ms_month.save()
|
||||
|
||||
sum_dict_year = MpointStat.objects.filter(type="month", mpoint=mpoint, year=year).aggregate(sum=Sum("val"))
|
||||
params_year = {"type": "year", "mpoint": mpoint, "year": year}
|
||||
ms_year, _ = MpointStat.objects.get_or_create(**params_year, defaults=params_year)
|
||||
ms_year.val = sum_dict_year["sum"]
|
||||
ms_year.save()
|
||||
if cascade or month == 12:
|
||||
sum_dict_year = MpointStat.objects.filter(type="month", mpoint=mpoint, year=year).aggregate(sum=Sum("val"))
|
||||
params_year = {"type": "year", "mpoint": mpoint, "year": year}
|
||||
ms_year, _ = MpointStat.objects.get_or_create(**params_year, defaults=params_year)
|
||||
ms_year.val = sum_dict_year.get('sum', 0)
|
||||
ms_year.save()
|
||||
|
||||
mgroup = mpoint.mgroup
|
||||
if mgroup:
|
||||
|
@ -181,7 +184,7 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
|||
sum_dict_sflog_s = MpointStat.objects.filter(type="hour_s", mpoint=mpoint, year_s=year_s, month_s=month_s, day_s=day_s, sflog=sflog).aggregate(sum=Sum("val"))
|
||||
params_sflog_s = {"type": "sflog", "mpoint": mpoint, "sflog": sflog, "year_s": year_s, "month_s": month_s, "day_s": day_s, "mgroup": mgroup}
|
||||
ms_sflog_s, _ = MpointStat.objects.get_or_create(**params_sflog_s, defaults=params_sflog_s)
|
||||
ms_sflog_s.val = sum_dict_sflog_s["sum"]
|
||||
ms_sflog_s.val = sum_dict_sflog_s.get('sum', 0)
|
||||
ms_sflog_s.save()
|
||||
|
||||
# next_cal_dict = [mpoint.material.id, sflog.id, year, month, day, hour, year_s, month_s, day_s]
|
||||
|
@ -438,11 +441,11 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
|||
enstat.other_cost_data = other_cost_data
|
||||
enstat.production_cost_unit = imaterial_cost_unit + other_cost_unit
|
||||
enstat.save()
|
||||
if enstat.total_production:
|
||||
# 更新所监测设备测点的total_production
|
||||
MpointStat.objects.filter(mgroup=enstat.mgroup, mpoint__material__code="elec").exclude(mpoint__ep_monitored=None).update(
|
||||
total_production=enstat.total_production, elec_consume_unit=F("val") / enstat.total_production
|
||||
)
|
||||
if mgroup.cate == 'section':
|
||||
# 更新所监测设备测点的total_production
|
||||
MpointStat.objects.filter(mgroup=enstat.mgroup, mpoint__material__code="elec").exclude(mpoint__ep_monitored=None).update(
|
||||
total_production=enstat.total_production, elec_consume_unit=F("val") / enstat.total_production
|
||||
)
|
||||
if enstat.mgroup.cate == "section":
|
||||
if "material" in this_cal_attrs:
|
||||
# 算能耗
|
||||
|
|
Loading…
Reference in New Issue