From 1f227c7645387750169293fba159a488d1a17305 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 28 Apr 2024 18:22:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96shutdown=5For=5Fstart?= =?UTF-8?q?up=E5=AF=BC=E8=87=B4=E7=9A=84=E5=B9=B6=E5=8F=91=E5=AD=98?= =?UTF-8?q?=E5=BA=93=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/em/services.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/apps/em/services.py b/apps/em/services.py index d0d05f47..7e07d8df 100644 --- a/apps/em/services.py +++ b/apps/em/services.py @@ -44,39 +44,40 @@ def shutdown_or_startup(equipId: str, last_timex: datetime, last_mrs): equip.save(update_fields=["running_state"]) mgroup: Mgroup = equip.mgroup + old_run = mgroup.is_runing indicate = equip.indicate_mgroup_running + new_run = None if mgroup and indicate: - mrun = None if last_mrs in [Equipment.STOP, Equipment.FAILURE, Equipment.STANDBY]: # 设备停止信号 if indicate in [Equipment.IM_DANDAN, Equipment.IM_DOUDAN]: - mrun= False + new_run = False else: if not Equipment.objects.filter(mgroup=mgroup, indicate_mgroup_running=indicate, running_state=Equipment.RUNING).exists(): - mrun = False + new_run = False elif last_mrs == Equipment.RUNING: # 设备启动信号 if indicate in [Equipment.IM_DANDAN, Equipment.IM_DANDOU]: - mrun= True + new_run = True else: if not Equipment.objects.filter(mgroup=mgroup, indicate_mgroup_running=indicate, running_state__in=[Equipment.STOP, Equipment.FAILURE, Equipment.STANDBY]).exists(): - mrun = True + new_run = True - if mrun is not None: - mgroup.is_runing = mrun + if new_run is not None and new_run != old_run: + mgroup.is_runing = new_run mgroup.save(update_fields=["is_runing"]) last_stlog = StLog.objects.filter(mgroup=mgroup, is_shutdown=True).order_by("-start_time").first() # 找到最后一次停机记录 if last_stlog: if last_timex >= last_stlog.start_time: # 认为是有效信号 - if last_stlog.end_time is None and mrun: # 从停到开 + if last_stlog.end_time is None and new_run: # 从停到开 last_stlog.end_time = last_timex last_stlog.duration = (last_stlog.end_time - last_stlog.start_time).total_seconds() / 3600 last_stlog.save() cal_exp_duration_hour(last_stlog.id) # 触发时间分配 - elif last_stlog.end_time and mrun is False and last_timex > last_stlog.end_time: # 从开到停 + elif last_stlog.end_time and new_run is False and last_timex > last_stlog.end_time: # 从开到停 StLog.objects.create(title="停机", is_shutdown=True, mgroup=mgroup, end_time=None, start_time=last_timex, sflog=get_sflog(mgroup, last_timex)) - elif mrun is False: + elif new_run is False: StLog.objects.create(title="停机", is_shutdown=True, mgroup=mgroup, end_time=None, start_time=last_timex, sflog=get_sflog(mgroup, last_timex)) mgroup.is_runing = False mgroup.save()