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