fix: 去除mpoint无用字段及相应逻辑变动
This commit is contained in:
parent
aee63ef771
commit
a8fb69d747
|
@ -3,10 +3,12 @@ from apps.enm.models import MpointStat, EnStat, EnStat2
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from django.db.models import F, Q
|
from django.db.models import F, Q
|
||||||
|
|
||||||
|
|
||||||
class MpointStatFilter(filters.FilterSet):
|
class MpointStatFilter(filters.FilterSet):
|
||||||
has_create_by = filters.BooleanFilter(method='filter_has_create_by')
|
has_create_by = filters.BooleanFilter(method="filter_has_create_by")
|
||||||
start_time = filters.CharFilter(method='filter_start_time')
|
start_time = filters.CharFilter(method="filter_start_time")
|
||||||
end_time = filters.CharFilter(method='filter_end_time')
|
end_time = filters.CharFilter(method="filter_end_time")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MpointStat
|
model = MpointStat
|
||||||
fields = {
|
fields = {
|
||||||
|
@ -29,8 +31,7 @@ class MpointStatFilter(filters.FilterSet):
|
||||||
"year_s": ["exact"],
|
"year_s": ["exact"],
|
||||||
"create_by": ["exact"],
|
"create_by": ["exact"],
|
||||||
"type": ["exact"],
|
"type": ["exact"],
|
||||||
"mpoint__is_all": ["exact"],
|
"mpoint__is_auto": ["exact"],
|
||||||
"mpoint__is_auto": ["exact"]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def filter_has_create_by(self, queryset, name, value):
|
def filter_has_create_by(self, queryset, name, value):
|
||||||
|
@ -42,55 +43,47 @@ class MpointStatFilter(filters.FilterSet):
|
||||||
|
|
||||||
def filter_start_time(self, queryset, name, value):
|
def filter_start_time(self, queryset, name, value):
|
||||||
query = self.data
|
query = self.data
|
||||||
start_time = datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
|
start_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
|
||||||
start_year, start_month, start_day, start_hour = start_time.year, start_time.month, start_time.day, start_time.hour
|
start_year, start_month, start_day, start_hour = start_time.year, start_time.month, start_time.day, start_time.hour
|
||||||
if query['type'] in ['hour_s']:
|
if query["type"] in ["hour_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(
|
||||||
Q(year_s__gt=start_year) |
|
Q(year_s__gt=start_year)
|
||||||
Q(year_s=start_year, month_s__gt=start_month) |
|
| Q(year_s=start_year, month_s__gt=start_month)
|
||||||
Q(year_s=start_year, month_s=start_month, day_s__gt=start_day) |
|
| Q(year_s=start_year, month_s=start_month, day_s__gt=start_day)
|
||||||
Q(year_s=start_year, month_s=start_month, day_s=start_day, hour__gte=start_hour))
|
| Q(year_s=start_year, month_s=start_month, day_s=start_day, hour__gte=start_hour)
|
||||||
elif query['type'] in ['sflog', 'day_s']:
|
)
|
||||||
queryset = queryset.filter(
|
elif query["type"] in ["sflog", "day_s"]:
|
||||||
Q(year_s__gt=start_year) |
|
queryset = queryset.filter(Q(year_s__gt=start_year) | Q(year_s=start_year, month_s__gt=start_month) | Q(year_s=start_year, month_s=start_month, day_s__gte=start_day))
|
||||||
Q(year_s=start_year, month_s__gt=start_month) |
|
elif query["type"] in ["month_s", "month_st"]:
|
||||||
Q(year_s=start_year, month_s=start_month, day_s__gte=start_day))
|
queryset = queryset.filter(Q(year_s__gt=start_year) | Q(year_s=start_year, month_s__gte=start_month))
|
||||||
elif query['type'] in ['month_s', 'month_st']:
|
elif query["type"] in ["year_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(Q(year_s__gte=start_year))
|
||||||
Q(year_s__gt=start_year) |
|
|
||||||
Q(year_s=start_year, month_s__gte=start_month))
|
|
||||||
elif query['type'] in ['year_s']:
|
|
||||||
queryset = queryset.filter(
|
|
||||||
Q(year_s__gte=start_year))
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def filter_end_time(self, queryset, name, value):
|
def filter_end_time(self, queryset, name, value):
|
||||||
query = self.data
|
query = self.data
|
||||||
end_time = datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
|
end_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
|
||||||
end_year, end_month, end_day, end_hour = end_time.year, end_time.month, end_time.day, end_time.hour
|
end_year, end_month, end_day, end_hour = end_time.year, end_time.month, end_time.day, end_time.hour
|
||||||
if query['type'] in ['hour_s']:
|
if query["type"] in ["hour_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(
|
||||||
Q(year_s__lt=end_year) |
|
Q(year_s__lt=end_year)
|
||||||
Q(year_s=end_year, month_s__lt=end_month) |
|
| Q(year_s=end_year, month_s__lt=end_month)
|
||||||
Q(year_s=end_year, month_s=end_month, day_s__lt=end_day) |
|
| Q(year_s=end_year, month_s=end_month, day_s__lt=end_day)
|
||||||
Q(year_s=end_year, month_s=end_month, day_s=end_day, hour__lte=end_hour))
|
| Q(year_s=end_year, month_s=end_month, day_s=end_day, hour__lte=end_hour)
|
||||||
elif query['type'] in ['sflog', 'day_s']:
|
)
|
||||||
queryset = queryset.filter(
|
elif query["type"] in ["sflog", "day_s"]:
|
||||||
Q(year_s__lt=end_year) |
|
queryset = queryset.filter(Q(year_s__lt=end_year) | Q(year_s=end_year, month_s__lt=end_month) | Q(year_s=end_year, month_s=end_month, day_s__lte=end_day))
|
||||||
Q(year_s=end_year, month_s__lt=end_month) |
|
elif query["type"] in ["month_s", "month_st"]:
|
||||||
Q(year_s=end_year, month_s=end_month, day_s__lte=end_day))
|
queryset = queryset.filter(Q(year_s__lt=end_year) | Q(year_s=end_year, month_s__lte=end_month))
|
||||||
elif query['type'] in ['month_s', 'month_st']:
|
elif query["type"] in ["year_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(Q(year_s__lte=end_year))
|
||||||
Q(year_s__lt=end_year) |
|
|
||||||
Q(year_s=end_year, month_s__lte=end_month))
|
|
||||||
elif query['type'] in ['year_s']:
|
|
||||||
queryset = queryset.filter(
|
|
||||||
Q(year_s__lte=end_year))
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
class EnStatFilter(filters.FilterSet):
|
class EnStatFilter(filters.FilterSet):
|
||||||
start_time = filters.CharFilter(method='filter_start_time')
|
start_time = filters.CharFilter(method="filter_start_time")
|
||||||
end_time = filters.CharFilter(method='filter_end_time')
|
end_time = filters.CharFilter(method="filter_end_time")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = EnStat
|
model = EnStat
|
||||||
fields = {
|
fields = {
|
||||||
|
@ -104,63 +97,55 @@ class EnStatFilter(filters.FilterSet):
|
||||||
"month_s": ["exact"],
|
"month_s": ["exact"],
|
||||||
"year_s": ["exact"],
|
"year_s": ["exact"],
|
||||||
"year": ["exact"],
|
"year": ["exact"],
|
||||||
"month": ['exact'],
|
"month": ["exact"],
|
||||||
"day_s": ["exact"],
|
"day_s": ["exact"],
|
||||||
"day": ["exact"],
|
"day": ["exact"],
|
||||||
"hour": ['exact']
|
"hour": ["exact"],
|
||||||
}
|
}
|
||||||
|
|
||||||
def filter_start_time(self, queryset, name, value):
|
def filter_start_time(self, queryset, name, value):
|
||||||
query = self.data
|
query = self.data
|
||||||
start_time = datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
|
start_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
|
||||||
start_year, start_month, start_day, start_hour = start_time.year, start_time.month, start_time.day, start_time.hour
|
start_year, start_month, start_day, start_hour = start_time.year, start_time.month, start_time.day, start_time.hour
|
||||||
if query['type'] in ['hour_s']:
|
if query["type"] in ["hour_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(
|
||||||
Q(year_s__gt=start_year) |
|
Q(year_s__gt=start_year)
|
||||||
Q(year_s=start_year, month_s__gt=start_month) |
|
| Q(year_s=start_year, month_s__gt=start_month)
|
||||||
Q(year_s=start_year, month_s=start_month, day_s__gt=start_day) |
|
| Q(year_s=start_year, month_s=start_month, day_s__gt=start_day)
|
||||||
Q(year_s=start_year, month_s=start_month, day_s=start_day, hour__gte=start_hour))
|
| Q(year_s=start_year, month_s=start_month, day_s=start_day, hour__gte=start_hour)
|
||||||
elif query['type'] in ['sflog', 'day_s']:
|
)
|
||||||
queryset = queryset.filter(
|
elif query["type"] in ["sflog", "day_s"]:
|
||||||
Q(year_s__gt=start_year) |
|
queryset = queryset.filter(Q(year_s__gt=start_year) | Q(year_s=start_year, month_s__gt=start_month) | Q(year_s=start_year, month_s=start_month, day_s__gte=start_day))
|
||||||
Q(year_s=start_year, month_s__gt=start_month) |
|
elif query["type"] in ["month_s", "month_st"]:
|
||||||
Q(year_s=start_year, month_s=start_month, day_s__gte=start_day))
|
queryset = queryset.filter(Q(year_s__gt=start_year) | Q(year_s=start_year, month_s__gte=start_month))
|
||||||
elif query['type'] in ['month_s', 'month_st']:
|
elif query["type"] in ["year_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(Q(year_s__gte=start_year))
|
||||||
Q(year_s__gt=start_year) |
|
|
||||||
Q(year_s=start_year, month_s__gte=start_month))
|
|
||||||
elif query['type'] in ['year_s']:
|
|
||||||
queryset = queryset.filter(
|
|
||||||
Q(year_s__gte=start_year))
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def filter_end_time(self, queryset, name, value):
|
def filter_end_time(self, queryset, name, value):
|
||||||
query = self.data
|
query = self.data
|
||||||
end_time = datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
|
end_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
|
||||||
end_year, end_month, end_day, end_hour = end_time.year, end_time.month, end_time.day, end_time.hour
|
end_year, end_month, end_day, end_hour = end_time.year, end_time.month, end_time.day, end_time.hour
|
||||||
if query['type'] in ['hour_s']:
|
if query["type"] in ["hour_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(
|
||||||
Q(year_s__lt=end_year) |
|
Q(year_s__lt=end_year)
|
||||||
Q(year_s=end_year, month_s__lt=end_month) |
|
| Q(year_s=end_year, month_s__lt=end_month)
|
||||||
Q(year_s=end_year, month_s=end_month, day_s__lt=end_day) |
|
| Q(year_s=end_year, month_s=end_month, day_s__lt=end_day)
|
||||||
Q(year_s=end_year, month_s=end_month, day_s=end_day, hour__lte=end_hour))
|
| Q(year_s=end_year, month_s=end_month, day_s=end_day, hour__lte=end_hour)
|
||||||
elif query['type'] in ['sflog', 'day_s']:
|
)
|
||||||
queryset = queryset.filter(
|
elif query["type"] in ["sflog", "day_s"]:
|
||||||
Q(year_s__lt=end_year) |
|
queryset = queryset.filter(Q(year_s__lt=end_year) | Q(year_s=end_year, month_s__lt=end_month) | Q(year_s=end_year, month_s=end_month, day_s__lte=end_day))
|
||||||
Q(year_s=end_year, month_s__lt=end_month) |
|
elif query["type"] in ["month_s", "month_st"]:
|
||||||
Q(year_s=end_year, month_s=end_month, day_s__lte=end_day))
|
queryset = queryset.filter(Q(year_s__lt=end_year) | Q(year_s=end_year, month_s__lte=end_month))
|
||||||
elif query['type'] in ['month_s', 'month_st']:
|
elif query["type"] in ["year_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(Q(year_s__lte=end_year))
|
||||||
Q(year_s__lt=end_year) |
|
|
||||||
Q(year_s=end_year, month_s__lte=end_month))
|
|
||||||
elif query['type'] in ['year_s']:
|
|
||||||
queryset = queryset.filter(
|
|
||||||
Q(year_s__lte=end_year))
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
class EnStat2Filter(filters.FilterSet):
|
class EnStat2Filter(filters.FilterSet):
|
||||||
start_time = filters.CharFilter(method='filter_start_time')
|
start_time = filters.CharFilter(method="filter_start_time")
|
||||||
end_time = filters.CharFilter(method='filter_end_time')
|
end_time = filters.CharFilter(method="filter_end_time")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = EnStat2
|
model = EnStat2
|
||||||
fields = {
|
fields = {
|
||||||
|
@ -172,30 +157,20 @@ class EnStat2Filter(filters.FilterSet):
|
||||||
|
|
||||||
def filter_start_time(self, queryset, name, value):
|
def filter_start_time(self, queryset, name, value):
|
||||||
query = self.data
|
query = self.data
|
||||||
start_time = datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
|
start_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
|
||||||
start_year, start_month, start_day, start_hour = start_time.year, start_time.month, start_time.day, start_time.hour
|
start_year, start_month, start_day, start_hour = start_time.year, start_time.month, start_time.day, start_time.hour
|
||||||
if query['type'] in ['day_s']:
|
if query["type"] in ["day_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(Q(year_s__gt=start_year) | Q(year_s=start_year, month_s__gt=start_month) | Q(year_s=start_year, month_s=start_month, day_s__gte=start_day))
|
||||||
Q(year_s__gt=start_year) |
|
elif query["type"] in ["month_s"]:
|
||||||
Q(year_s=start_year, month_s__gt=start_month) |
|
queryset = queryset.filter(Q(year_s__gt=start_year) | Q(year_s=start_year, month_s__gte=start_month))
|
||||||
Q(year_s=start_year, month_s=start_month, day_s__gte=start_day))
|
|
||||||
elif query['type'] in ['month_s']:
|
|
||||||
queryset = queryset.filter(
|
|
||||||
Q(year_s__gt=start_year) |
|
|
||||||
Q(year_s=start_year, month_s__gte=start_month))
|
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def filter_end_time(self, queryset, name, value):
|
def filter_end_time(self, queryset, name, value):
|
||||||
query = self.data
|
query = self.data
|
||||||
end_time = datetime.strptime(value, '%Y-%m-%d %H:%M:%S')
|
end_time = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
|
||||||
end_year, end_month, end_day, end_hour = end_time.year, end_time.month, end_time.day, end_time.hour
|
end_year, end_month, end_day, end_hour = end_time.year, end_time.month, end_time.day, end_time.hour
|
||||||
if query['type'] in ['day_s']:
|
if query["type"] in ["day_s"]:
|
||||||
queryset = queryset.filter(
|
queryset = queryset.filter(Q(year_s__lt=end_year) | Q(year_s=end_year, month_s__lt=end_month) | Q(year_s=end_year, month_s=end_month, day_s__lte=end_day))
|
||||||
Q(year_s__lt=end_year) |
|
elif query["type"] in ["month_s"]:
|
||||||
Q(year_s=end_year, month_s__lt=end_month) |
|
queryset = queryset.filter(Q(year_s__lt=end_year) | Q(year_s=end_year, month_s__lte=end_month))
|
||||||
Q(year_s=end_year, month_s=end_month, day_s__lte=end_day))
|
|
||||||
elif query['type'] in ['month_s']:
|
|
||||||
queryset = queryset.filter(
|
|
||||||
Q(year_s__lt=end_year) |
|
|
||||||
Q(year_s=end_year, month_s__lte=end_month))
|
|
||||||
return queryset
|
return queryset
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Generated by Django 3.2.12 on 2024-04-18 07:00
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('enm', '0028_auto_20240416_1454'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='mpoint',
|
||||||
|
name='is_all',
|
||||||
|
),
|
||||||
|
]
|
|
@ -17,9 +17,8 @@ class Mpoint(CommonBModel):
|
||||||
mgroup = models.ForeignKey("mtm.mgroup", verbose_name="所在集合", on_delete=models.SET_NULL, null=True, blank=True)
|
mgroup = models.ForeignKey("mtm.mgroup", verbose_name="所在集合", on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
mgroups_allocate = models.JSONField("各工段分配", default=list, blank=True, help_text='[{"mgroup":"x", "ratio": 1}]')
|
mgroups_allocate = models.JSONField("各工段分配", default=list, blank=True, help_text='[{"mgroup":"x", "ratio": 1}]')
|
||||||
is_auto = models.BooleanField("是否自动采集", default=True)
|
is_auto = models.BooleanField("是否自动采集", default=True)
|
||||||
is_all = models.BooleanField("是否记录是整个工段", default=False)
|
|
||||||
formula = models.TextField("计算公式", default="")
|
formula = models.TextField("计算公式", default="")
|
||||||
func_on_change = models.CharField("数据变动时执行方法", max_length=100, default="", blank=True)
|
func_on_change = models.CharField("数据变动时执行方法", max_length=100, default="", blank=True) # 废弃字段暂时不用
|
||||||
interval = models.PositiveSmallIntegerField("采集间隔(秒)", default=10)
|
interval = models.PositiveSmallIntegerField("采集间隔(秒)", default=10)
|
||||||
val_type = models.CharField("值类型", default="float", max_length=50, help_text="float, int, str, bool")
|
val_type = models.CharField("值类型", default="float", max_length=50, help_text="float, int, str, bool")
|
||||||
enabled = models.BooleanField("是否启用", default=False)
|
enabled = models.BooleanField("是否启用", default=False)
|
||||||
|
|
|
@ -205,14 +205,14 @@ def cal_mpointstats(is_now=1, year=None, month=None, day=None, hour=None):
|
||||||
year, month, day, hour = pre.year, pre.month, pre.day, pre.hour
|
year, month, day, hour = pre.year, pre.month, pre.day, pre.hour
|
||||||
|
|
||||||
# 先统计不带公式的测点
|
# 先统计不带公式的测点
|
||||||
mpoints_without_formula = Mpoint.objects.filter(is_auto=True, formula="", func_on_change="")
|
mpoints_without_formula = Mpoint.objects.filter(is_auto=True, enabled=True, formula="")
|
||||||
# mpoints_without_formula_group = []
|
# mpoints_without_formula_group = []
|
||||||
for item in mpoints_without_formula:
|
for item in mpoints_without_formula:
|
||||||
# mpoints_without_formula_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
# mpoints_without_formula_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
||||||
cal_mpointstat_hour(item.id, year, month, day, hour)
|
cal_mpointstat_hour(item.id, year, month, day, hour)
|
||||||
|
|
||||||
# 再统计其他测点
|
# 再统计其他测点
|
||||||
mpoints_other = Mpoint.objects.filter(is_auto=True, func_on_change="").exclude(formula="")
|
mpoints_other = Mpoint.objects.filter(is_auto=True, enabled=True).exclude(formula="")
|
||||||
# mpoints_other_group = []
|
# mpoints_other_group = []
|
||||||
for item in mpoints_other:
|
for item in mpoints_other:
|
||||||
# mpoints_other_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
# mpoints_other_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
||||||
|
@ -352,8 +352,6 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
mps = MpointStat.objects.filter(type="month_s", mgroup=mgroup, year_s=year_s, month_s=month_s, mpoint__material=material)
|
mps = MpointStat.objects.filter(type="month_s", mgroup=mgroup, year_s=year_s, month_s=month_s, mpoint__material=material)
|
||||||
elif type == "year_s":
|
elif type == "year_s":
|
||||||
mps = MpointStat.objects.filter(type="year_s", mgroup=mgroup, year_s=year_s, mpoint__material=material)
|
mps = MpointStat.objects.filter(type="year_s", mgroup=mgroup, year_s=year_s, mpoint__material=material)
|
||||||
if mps.filter(mpoint__is_all=True).exists():
|
|
||||||
mps = mps.filter(mpoint__is_all=True)
|
|
||||||
amount_consume = mps.aggregate(sum=Sum("val"))["sum"]
|
amount_consume = mps.aggregate(sum=Sum("val"))["sum"]
|
||||||
if amount_consume is None:
|
if amount_consume is None:
|
||||||
amount_consume = 0
|
amount_consume = 0
|
||||||
|
|
|
@ -25,7 +25,7 @@ class MpointViewSet(CustomModelViewSet):
|
||||||
queryset = Mpoint.objects.all()
|
queryset = Mpoint.objects.all()
|
||||||
serializer_class = MpointSerializer
|
serializer_class = MpointSerializer
|
||||||
select_related_fields = ["create_by", "belong_dept", "ep_monitored", "ep_belong", "mgroup"]
|
select_related_fields = ["create_by", "belong_dept", "ep_monitored", "ep_belong", "mgroup"]
|
||||||
filterset_fields = ["belong_dept", "ep_monitored", "ep_belong", "mgroup", "is_auto", "is_all", "mgroup__name", "val_type", "enabled"]
|
filterset_fields = ["belong_dept", "ep_monitored", "ep_belong", "mgroup", "is_auto", "mgroup__name", "val_type", "enabled"]
|
||||||
search_fields = ["name", "code"]
|
search_fields = ["name", "code"]
|
||||||
ordering = ["-create_time", "name", "code"]
|
ordering = ["-create_time", "name", "code"]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue