feat: 优化cal_mpointstat_hour支持float int
This commit is contained in:
parent
86053bed93
commit
f3c5698283
|
@ -103,11 +103,11 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
|||
mpoint = Mpoint.objects.get(id=mpointId)
|
||||
mytz = tz.gettz(settings.TIME_ZONE)
|
||||
dt = datetime.datetime(year=year, month=month, day=day, hour=hour, tzinfo=mytz)
|
||||
if mpoint.material: # 如果计量的是物料 # 累计量 有的会清零,需要额外处理(还未做)
|
||||
if mpoint.material and mpoint.val_type in ['float', 'int']: # 如果计量的是物料 # 累计量 有的会清零,需要额外处理(还未做)
|
||||
params = {"mpoint": mpoint, "type": "hour"}
|
||||
params["year"], params["month"], params["day"], params["hour"] = year, month, day, hour
|
||||
val = 0
|
||||
val_type = "float"
|
||||
val_type = mpoint.val_type
|
||||
if mpoint.formula:
|
||||
formula = mpoint.formula
|
||||
try:
|
||||
|
@ -118,13 +118,13 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
|||
else:
|
||||
mrs = MpLogx.objects.filter(mpoint=mpoint, timex__year=params["year"], timex__month=params["month"], timex__day=params["day"], timex__hour=params["hour"]).order_by("timex")
|
||||
if mrs.exists():
|
||||
last_val = mrs.last().val_float
|
||||
first_val = mrs.first().val_float
|
||||
last_val = getattr(mrs.last(), f'val_{val_type}')
|
||||
first_val = getattr(mrs.first(), f'val_{val_type}')
|
||||
if last_val >= first_val:
|
||||
val = last_val - first_val
|
||||
else:
|
||||
# 这里判断有可能清零了
|
||||
max_val = mrs.aggregate(max=Max("val_float"))["max"]
|
||||
max_val = mrs.aggregate(max=Max(f'val_{val_type}'))["max"]
|
||||
val = max_val - first_val + last_val
|
||||
ms, _ = MpointStat.objects.get_or_create(**params, defaults=params)
|
||||
ms.val = val
|
||||
|
|
Loading…
Reference in New Issue