fix: 执行测点函数的bug

This commit is contained in:
caoqianming 2023-09-04 14:10:21 +08:00
parent a0955c401f
commit e6127864e7
2 changed files with 8 additions and 4 deletions

View File

@ -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)

View File

@ -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