From 008219e9ba9e8d66230725ba70ac564b3b963b56 Mon Sep 17 00:00:00 2001 From: zty Date: Wed, 25 Sep 2024 16:03:59 +0800 Subject: [PATCH] =?UTF-8?q?fix=20:=20em=20enm=20wpm=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AE=BE=E5=A4=87=E8=BF=90=E8=A1=8C=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/em/services.py | 11 +++++++++-- apps/enm/serializers.py | 4 ++-- apps/wpm/tasks.py | 7 ++++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/em/services.py b/apps/em/services.py index f4e79450..857d3e98 100644 --- a/apps/em/services.py +++ b/apps/em/services.py @@ -8,6 +8,9 @@ from django.core.cache import cache from apps.utils.tasks import ctask_run import logging from apps.mtm.services import mgroup_run_change +import random +import time + myLogger = logging.getLogger("log") baseTime = datetime.datetime(year=1990, month=4, day=4, hour=0, minute=0, second=0, tzinfo=tz.gettz(settings.TIME_ZONE)) @@ -27,20 +30,22 @@ def set_eq_rs(equipId, last_timex: datetime, last_mrs: int): eq_rs_change = False ten_minutes = datetime.timedelta(minutes=10) now = datetime.datetime.now() + mgroup_sort_trigger = False if eq_rs_cache["running_state"] != last_mrs: # 如果状态变动了要调用方法否则只需更新缓存 eq_rs_change = True update_time = now elif now > eq_rs_cache.get('update_time', baseTime) + ten_minutes: # 如果当前时间大于缓存时间10分钟则更新 eq_rs_change = True update_time = now + mgroup_sort_trigger = True else: update_time = eq_rs_cache.get('update_time', baseTime) cache.set(f"equipment_{equipId}", {"running_state": last_mrs, "running_state_timex": last_timex, "update_time":update_time}, timeout=None) # 更新缓存 if eq_rs_change: - ctask_run.delay("apps.em.services.shutdown_or_startup", equipId, last_timex, last_mrs) + ctask_run.delay("apps.em.services.shutdown_or_startup", equipId, last_timex, last_mrs, mgroup_sort_trigger) -def shutdown_or_startup(equipId: str, last_timex: datetime, last_mrs, note: str = ""): +def shutdown_or_startup(equipId: str, last_timex: datetime, last_mrs, note: str = "", mgroup_sort_trigger: bool = False): """ last_mrs 设备运行状态值 """ @@ -70,6 +75,8 @@ def shutdown_or_startup(equipId: str, last_timex: datetime, last_mrs, note: str new_run = True if new_run is not None: + if mgroup_sort_trigger: + time.sleep(mgroup.sort) mgroup_run_change(mgroup, new_run, last_timex, note) diff --git a/apps/enm/serializers.py b/apps/enm/serializers.py index fa739a37..500006e6 100644 --- a/apps/enm/serializers.py +++ b/apps/enm/serializers.py @@ -82,8 +82,8 @@ class MpointStatSerializer(CustomModelSerializer): ep_belong_name = serializers.CharField(source="mpoint.ep_belong.name", read_only=True) mgroup_name = serializers.CharField(source="mgroup.name", read_only=True) belong_dept_name = serializers.CharField(source="mgroup.belong_dept.name", read_only=True) - sflog_start_time = serializers.CharField(source="sflog.start_time", read_only=True) - sflog_end_time = serializers.CharField(source="sflog.end_time", read_only=True) + sflog_start_time = serializers.DateTimeField(source="sflog.start_time", read_only=True) + sflog_end_time = serializers.DateTimeField(source="sflog.end_time", read_only=True) class Meta: model = MpointStat diff --git a/apps/wpm/tasks.py b/apps/wpm/tasks.py index 9dd6e657..28fa85a0 100644 --- a/apps/wpm/tasks.py +++ b/apps/wpm/tasks.py @@ -10,6 +10,8 @@ from apps.wpm.models import SfLog, StLog, SfLogExp from django.utils import timezone from django.db.models import F from apps.wpm.services import get_pcoal_heat +from django.core.cache import cache +import time @shared_task(base=CustomTask) @@ -101,16 +103,15 @@ def cal_exp_duration_sec(stlogId: str='', all=False, now: datetime=None): ret = SfLogExp.objects.filter( sflog=sflog, stlog__is_shutdown=True).aggregate(sum=Sum('duration_sec')) if ret.get('sum', 0): + get_total_sec_now(sflog.id) sflog.shut_sec = ret['sum'] sflog.save() # 更新sflog总时长 - if sflog.end_time > now: - get_total_sec_now(sflog.id) + # if stlogId: # cal_enstat('sflog', sflog.id, sflog.mgroup.id, None, None, None, # None, None, None, None, cascade=True, cal_attrs=['run_hour']) - @shared_task(base=CustomTask) def cal_enstat_when_pcoal_heat_change(year_s, month_s, day_s): from apps.enm.models import EnStat