feat: 增加氨水液位计 绑定字段up_down 计算方式

This commit is contained in:
zty 2025-01-16 13:56:20 +08:00
parent 9c3cf5a534
commit b8b1167f17
3 changed files with 30 additions and 0 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2025-01-16 03:22
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('enm', '0053_auto_20241225_1508'),
]
operations = [
migrations.AddField(
model_name='mpoint',
name='up_down',
field=models.BooleanField(default=False, verbose_name='上下行计算'),
),
]

View File

@ -23,6 +23,7 @@ class Mpoint(CommonBModel):
MG_OFFLINE = -2
type = models.PositiveSmallIntegerField("类型", default=MT_AUTO, help_text="10:自动采集, 20:计算测点, 30:手动录入")
up_down = models.BooleanField("上下行计算", default=False)
is_unit = models.BooleanField("是否单位量", default=False)
name = models.CharField("测点名称", max_length=50)
nickname = models.CharField("测点别名", max_length=50, null=True, blank=True)

View File

@ -185,6 +185,17 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
val = MpLogx.objects.filter(mpoint=mpoint, timex__gte=dt, timex__lt=dt_hour_n).aggregate(sum=Sum(f'val_{mpoint.val_type}'))["sum"]
if val is None:
val = 0
elif mpoint.up_down:
mrs0 = MpLogx.objects.filter(mpoint=mpoint, timex__gte=dt_hour_p, timex__lte=dt).order_by("timex")
mrs = MpLogx.objects.filter(mpoint=mpoint, timex__gte=dt, timex__lte=dt_hour_n).order_by("timex")
if mrs0.exists() and mrs.exists():
last_val = getattr(mrs.last(), f'val_{val_type}')
first_val = getattr(mrs0.last(), f'val_{val_type}')
if last_val <= first_val:
val = first_val - last_val
else:
# 加入氨水 需要手动校正 ,目前先取绝对值。
val = abs(first_val - last_val)
else:
mrs0 = MpLogx.objects.filter(mpoint=mpoint, timex__gte=dt_hour_p, timex__lte=dt).order_by("timex")
mrs = MpLogx.objects.filter(mpoint=mpoint, timex__gte=dt, timex__lte=dt_hour_n).order_by("timex")