From 9db524dfdb1a0560911125e2d6b070accfaf6bb2 Mon Sep 17 00:00:00 2001 From: zty Date: Mon, 25 Nov 2024 18:14:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20em/filter=20apps=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=AD=97=E6=AE=B5=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/em/filters.py | 11 +++++---- apps/em/migrations/0019_auto_20241125_1812.py | 23 +++++++++++++++++++ apps/em/models.py | 3 ++- apps/enm/tasks.py | 8 ++++++- apps/wpm/models.py | 6 ++--- 5 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 apps/em/migrations/0019_auto_20241125_1812.py diff --git a/apps/em/filters.py b/apps/em/filters.py index 5241ea18..cbe92c62 100644 --- a/apps/em/filters.py +++ b/apps/em/filters.py @@ -2,6 +2,7 @@ from django_filters import rest_framework as filters from apps.em.models import Equipment from datetime import datetime, timedelta from apps.utils.filters import MyJsonListFilter +from django.db.models import F class EquipFilterSet(filters.FilterSet): @@ -23,17 +24,17 @@ class EquipFilterSet(filters.FilterSet): "cate__code": ['exact', 'in', 'contains'], "cate__is_for_safe": ['exact'], "cate__is_for_enp": ['exact'], - "cate__is_car": ['exact'], - "is_deleted": ['exact'] + "cate__is_car": ['exact'] } def filter_tag(self, queryset, name, value): now = datetime.now() - day7_after = now + timedelta(days=7) if value == 'near_check': queryset = queryset.filter( - next_check_date__lt=datetime.date(day7_after), next_check_date__gte=datetime.date(now)) + next_check_date__lt=datetime.date(now + timedelta(days=F('remind_day_number'))), next_check_date__gte=datetime.date(now)) elif value == 'out_check': queryset = queryset.filter( - next_check_date__lte=datetime.date(now)) + next_check_date__lte=datetime.date(now)) return queryset + + diff --git a/apps/em/migrations/0019_auto_20241125_1812.py b/apps/em/migrations/0019_auto_20241125_1812.py new file mode 100644 index 00000000..31b69140 --- /dev/null +++ b/apps/em/migrations/0019_auto_20241125_1812.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.12 on 2024-11-25 10:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('em', '0018_alter_equipment_mgroup'), + ] + + operations = [ + migrations.AddField( + model_name='equipment', + name='importance', + field=models.PositiveSmallIntegerField(choices=[(10, 'A'), (20, 'B'), (30, 'C')], default=10, verbose_name='重要程度'), + ), + migrations.AlterField( + model_name='equipment', + name='power_kw', + field=models.FloatField(blank=True, null=True, verbose_name='功率'), + ), + ] diff --git a/apps/em/models.py b/apps/em/models.py index 85a2a69d..f46c8e0b 100644 --- a/apps/em/models.py +++ b/apps/em/models.py @@ -80,6 +80,7 @@ class Equipment(CommonBModel): model = models.CharField("规格型号", max_length=60, default="", blank=True) factory = models.CharField("生产厂", max_length=50, default="", blank=True) production_date = models.DateField("生产日期", null=True, blank=True) + importance = models.PositiveSmallIntegerField("重要程度", default=10, choices=((10, "A"), (20, "B"), (30, "C"))) buy_date = models.DateField("购置日期", null=True, blank=True) state = models.PositiveIntegerField("设备状态", choices=state_choices, default=EQUIP_STATE_OK) parameter = models.TextField("技术参数", default="", blank=True) @@ -102,7 +103,7 @@ class Equipment(CommonBModel): cycle = models.PositiveSmallIntegerField("校准或检定周期(月)", null=True, blank=True) check_date = models.DateField("最近校准检查日期", blank=True, null=True) next_check_date = models.DateField("预计下次校准检查日期", blank=True, null=True) - power_kw = models.PositiveSmallIntegerField("功率", null=True, blank=True) + power_kw = models.FloatField("功率", null=True, blank=True) coordinates = models.JSONField("坐标", default=dict, blank=True) diff --git a/apps/enm/tasks.py b/apps/enm/tasks.py index 2536b001..a9e96a06 100644 --- a/apps/enm/tasks.py +++ b/apps/enm/tasks.py @@ -848,7 +848,11 @@ def cal_enstat_pcoal_change(enstat: EnStat, new_pcoal_heat): next_enstat.save(update_fields=["cen_consume_unit"]) -enm_alarms_list = [["回转窑", "celec_consume_unit", "单位产品综合电耗"], ["回转窑", "coal_consume_unit", "单位产品标煤耗"], ["水泥磨", "elec_consume_unit", "单位产品分布电耗"]] +enm_alarms_list = [ + ["回转窑", "celec_consume_unit", "单位产品综合电耗"], + ["回转窑", "coal_consume_unit", "单位产品标煤耗"], + ["水泥磨", "elec_consume_unit", "单位产品分布电耗"] +] @shared_task(base=CustomTask) @@ -869,6 +873,7 @@ def enm_alarm(year_s: int, month_s: int, day_s: int): if enstat: mgroup_name = item[0] goal_cate_str = item[1] + goal_cate_str_chin = item[2] real_val = getattr(enstat, goal_cate_str, None) goal = Goal.objects.filter(goal_cate__code=goal_cate_str, year=year_s, mgroup=mgroup).first() if goal: @@ -882,6 +887,7 @@ def enm_alarm(year_s: int, month_s: int, day_s: int): "mgroup": mgroup.id, "mgroup_name": mgroup.name, "type": f"{goal_cate_str}.exceed", + "type_chin": f"{goal_cate_str_chin}-超过设定目标值", "year_s": year_s, "month_s": month_s, "day_s": day_s, diff --git a/apps/wpm/models.py b/apps/wpm/models.py index 68c6e292..16a01e6c 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -41,10 +41,8 @@ class SfLog(CommonADModel): """ 返回值班记录所属年月日 """ - end_time_local = localtime(self.end_time) - if end_time_local.hour == 0 and end_time_local.minute == 0 and end_time_local.second == 0: # 如果结束时间为00:00:00 - end_time_local = localtime(self.start_time) - return end_time_local.year, end_time_local.month, end_time_local.day + start_time_local = localtime(self.start_time) + return start_time_local.year, start_time_local.month, start_time_local.day class StLog(CommonADModel):