From e6127864e7624cb2a0de263f161ddf885bddc94d Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 4 Sep 2023 14:10:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=89=A7=E8=A1=8C=E6=B5=8B=E7=82=B9?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/enm/tasks.py | 10 +++++++--- apps/wpm/tasks.py | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/enm/tasks.py b/apps/enm/tasks.py index 3f9b183b..4be67b4f 100644 --- a/apps/enm/tasks.py +++ b/apps/enm/tasks.py @@ -42,17 +42,21 @@ def get_tag_val(): else: last_tag_id = mr.tag_id update_sysconfig({'enm': {'last_tag_id': last_tag_id}}) - cursor.execute("select id, val, tag_code, update_time from tag_value where id > %s order by id", (last_tag_id)) + cursor.execute("select id, val, tag_code, update_time from tag_value where id > %s order by update_time, id", (last_tag_id)) results = cursor.fetchall() # 获取数据后保存至本地 + need_func = {} # 需要执行测点函数的字典, 此种情况只执行一次 for row in results: + mpoint, _ = Mpoint.objects.get_or_create(code=mr_one.tag_code, defaults={'name': mr_one.tag_code, 'code': mr_one.tag_code, 'unit': 'unknown'}) mr_one = MpLog() mr_one.tag_id, mr_one.tag_val, mr_one.tag_code, mr_one.tag_update = row - mpoint, _ = Mpoint.objects.get_or_create(code=mr_one.tag_code, defaults={'name': mr_one.tag_code, 'code': mr_one.tag_code, 'unit': 'unknown'}) mr_one.mpoint = mpoint mr_one.save() last_tag_id = mr_one.tag_id if mpoint.func_on_change: - mpoint_val_on_change.delay(mr_one.id) + need_func[mpoint.id] = mr_one.id + # 执行测点函数 + for key in need_func: + mpoint_val_on_change.delay(need_func[key]) update_sysconfig({'enm': {'last_tag_id': last_tag_id}}) @shared_task(base=CustomTask) diff --git a/apps/wpm/tasks.py b/apps/wpm/tasks.py index 50ac9ff0..7bb1e7d9 100644 --- a/apps/wpm/tasks.py +++ b/apps/wpm/tasks.py @@ -66,7 +66,7 @@ def cal_shut_hour(stlogId: str): for stlog in stlogs: now = datetime.datetime.now() st_start = stlog.start_time - if st_start >= now: + if localtime(st_start) >= now: break if stlog.end_time is None: # 说明停机还未结束,此时也需要计算duration st_end = now