71 lines
3.1 KiB
Python
71 lines
3.1 KiB
Python
# Create your tasks here
|
|
from __future__ import absolute_import, unicode_literals
|
|
from apps.utils.tasks import CustomTask
|
|
from celery import shared_task
|
|
from django.utils.timezone import localtime
|
|
from apps.em.models import Equipment
|
|
from apps.em.services import set_eq_rs, get_eq_rs, shutdown_or_startup
|
|
from apps.mtm.models import Mgroup
|
|
from django.utils import timezone
|
|
|
|
@shared_task(base=CustomTask)
|
|
def check_equipment_offline(seconds=30):
|
|
"""监测设备是否掉线
|
|
|
|
监测设备是否掉线
|
|
"""
|
|
# equips = Equipment.objects.filter(mp_ep_monitored__is_rep_ep_running_state=True, mp_ep_monitored__enabled=True)
|
|
equips = Equipment.objects.all()
|
|
now = localtime()
|
|
for equip in equips:
|
|
rs = get_eq_rs(equip.id)
|
|
if (now - rs['running_state_timex']).total_seconds() > seconds:
|
|
set_eq_rs(equip.id, now, Equipment.OFFLINE)
|
|
|
|
|
|
@shared_task(base=CustomTask)
|
|
def check_mgroup_running():
|
|
"""监测工段是否运行
|
|
"""
|
|
# 没有标志设备的工段直接干停
|
|
Mgroup.objects.filter(is_running=True).exclude(id__in=Equipment.objects.filter(indicate_mgroup_running__isnull=False, mgroup__isnull=False).values_list('mgroup', flat=True)).update(is_running=True)
|
|
# equips = Equipment.objects.filter(indicate_mgroup_running__isnull=False, mgroup__isnull=False)
|
|
# for equip in equips:
|
|
# rs = get_eq_rs(equip.id)
|
|
# if rs['running_state'] == Equipment.OFFLINE: # 如果掉线了不关心
|
|
# pass
|
|
# else:
|
|
# shutdown_or_startup(equip.id, rs["running_state_timex"], rs["running_state"])
|
|
|
|
@shared_task(base=CustomTask)
|
|
def check_equipment_measure_time():
|
|
"""
|
|
监测设备检定状态
|
|
"""
|
|
all_equips = Equipment.objects.values('id', 'check_days_number', 'next_check_date', 'state_measure')
|
|
for equip in all_equips:
|
|
if equip['check_days_number'] and equip['next_check_date']:
|
|
# 更新检定状态
|
|
now = localtime().date()
|
|
if equip['next_check_date'] <= now :
|
|
Equipment.objects.filter(id=equip['id']).update(state_measure=Equipment.EQ_EXPIRED)
|
|
elif equip['next_check_date'] - now <= timezone.timedelta(days=equip['check_days_number']):
|
|
Equipment.objects.filter(id=equip['id']).update(state_measure=Equipment.EQ_WARNING)
|
|
else:
|
|
Equipment.objects.filter(id=equip['id']).update(state_measure=Equipment.EQ_NORMAL)
|
|
else:
|
|
Equipment.objects.filter(id=equip['id']).update(state_measure=Equipment.EQ_WAIT)
|
|
|
|
|
|
# if instance.check_days_number and instance.next_check_date:
|
|
# # 更新检定状态
|
|
# now = timezone.localtime().date()
|
|
# if instance.next_check_date <= now :
|
|
# instance.state_measure = Equipment.EQ_EXPIRED
|
|
# elif instance.next_check_date - now <= timezone.timedelta(days=instance.check_days_number):
|
|
# instance.state_measure = Equipment.EQ_WARNING
|
|
# else:
|
|
# instance.state_measure = Equipment.EQ_NORMAL
|
|
# else:
|
|
# instance.state_measure = Equipment.EQ_WAIT
|
|
# instance.save() |