fix: cal_enstat前调用一下get_total_hour_now
This commit is contained in:
parent
35d6d7beb9
commit
02a8693a65
|
@ -7,6 +7,7 @@ from dateutil import tz
|
|||
from django.core.cache import cache
|
||||
from apps.utils.tasks import ctask_run
|
||||
import logging
|
||||
from apps.mtm.services import mgroup_run_change
|
||||
myLogger = logging.getLogger("log")
|
||||
|
||||
def get_eq_rs(equipId: str):
|
||||
|
@ -36,10 +37,6 @@ def shutdown_or_startup(equipId: str, last_timex: datetime, last_mrs):
|
|||
"""
|
||||
last_mrs 设备运行状态值
|
||||
"""
|
||||
from apps.wpm.models import StLog
|
||||
from apps.wpm.tasks import cal_exp_duration_hour
|
||||
from apps.wpm.services import get_sflog
|
||||
|
||||
equip = Equipment.objects.get(id=equipId)
|
||||
equip.running_state = last_mrs
|
||||
equip.save(update_fields=["running_state"])
|
||||
|
@ -64,24 +61,7 @@ def shutdown_or_startup(equipId: str, last_timex: datetime, last_mrs):
|
|||
new_run = True
|
||||
|
||||
if new_run is not None:
|
||||
mgroup.is_running = new_run
|
||||
mgroup.save(update_fields=["is_running"])
|
||||
|
||||
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 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 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 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_running = False
|
||||
mgroup.save()
|
||||
mgroup_run_change(mgroup, new_run, last_timex)
|
||||
|
||||
|
||||
def daoru_equipment(path: str):
|
||||
|
|
|
@ -28,7 +28,7 @@ def check_mgroup_running():
|
|||
"""监测工段是否运行
|
||||
"""
|
||||
# 没有设备的工段直接干停
|
||||
Mgroup.objects.filter(equip_mgroup__isnull=True, equip_mgroup__indicate_mgroup_running__isnull=True).update(is_running=False)
|
||||
Mgroup.objects.filter(equip_mgroup__indicate_mgroup_running__isnull=True).distinct().update(is_running=False)
|
||||
equips = Equipment.objects.filter(indicate_mgroup_running__isnull=False, mgroup__isnull=False)
|
||||
for equip in equips:
|
||||
rs = get_eq_rs(equip.id)
|
||||
|
|
|
@ -22,9 +22,8 @@ from django.db.models import Max
|
|||
from apps.third.king.k import kingClient
|
||||
from apps.third.king.king_api import kapis
|
||||
from apps.enm.services import insert_mplogx_from_king_rest_chunk, MpointCache
|
||||
from django.core.cache import cache
|
||||
from django.utils.timezone import localtime
|
||||
from apps.em.services import set_eq_rs
|
||||
from apps.wpm.tasks import get_total_hour_now
|
||||
|
||||
myLogger = logging.getLogger("log")
|
||||
|
||||
|
@ -225,6 +224,9 @@ def cal_mpointstats(is_now=1, year=None, month=None, day=None, hour=None):
|
|||
# mpoints_other_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
||||
cal_mpointstat_hour(item.id, year, month, day, hour)
|
||||
|
||||
# 先调整一下班时间,以防计算错误
|
||||
get_total_hour_now()
|
||||
|
||||
# 开始计算enstat
|
||||
mgroups = Mgroup.objects.filter(need_enm=True).order_by("sort")
|
||||
# mgroups_group = []
|
||||
|
@ -738,7 +740,7 @@ def king_insert_mplogx():
|
|||
def check_mpoint_offline(seconds=100):
|
||||
"""监测测点采集掉线"""
|
||||
now = localtime()
|
||||
for mpoint in Mpoint.objects.filter(enabled=True, type=Mpoint.MT_AUTO):
|
||||
for mpoint in Mpoint.objects.filter(enabled=True, type=Mpoint.MT_AUTO)| Mpoint.objects.filter(enabled=True, type=Mpoint.MT_COMPUTE, is_rep_ep_running_state=True):
|
||||
mc = MpointCache(mpoint.code)
|
||||
mpoint_data = mc.data
|
||||
last_data = mpoint_data.get('last_data', None)
|
||||
|
@ -746,7 +748,4 @@ def check_mpoint_offline(seconds=100):
|
|||
if last_data and last_data['last_timex'] and (now-last_data['last_timex']).total_seconds() < seconds:
|
||||
is_offline = False
|
||||
if is_offline:
|
||||
mc.set_fail(-2, now)
|
||||
if mpoint.mpoint_affect:
|
||||
mct = MpointCache(mpoint.mpoint_affect)
|
||||
mct.set_fail(-2, now)
|
||||
mc.set_fail(-2, now)
|
|
@ -4,6 +4,10 @@ from django.db.models import Q
|
|||
from apps.mtm.models import Material, Process
|
||||
from rest_framework.exceptions import ParseError
|
||||
from apps.utils.tools import ranstr
|
||||
from datetime import datetime
|
||||
from apps.wpm.models import StLog
|
||||
from apps.wpm.services import get_sflog
|
||||
from apps.wpm.tasks import cal_exp_duration_hour
|
||||
|
||||
|
||||
def get_mgroup_goals(mgroupId, year, reload=False):
|
||||
|
@ -73,3 +77,27 @@ def daoru_material(path: str):
|
|||
raise ParseError(f'{i}行物料有误, 导入失败--{e}')
|
||||
i = i + 1
|
||||
print(type, name, specification, model, unit, '导入成功')
|
||||
|
||||
|
||||
def mgroup_run_change(mgroup: Mgroup, new_run: bool, last_timex: datetime):
|
||||
"""
|
||||
调用工段运行变动
|
||||
"""
|
||||
mgroup.is_running = new_run
|
||||
mgroup.save(update_fields=["is_running"])
|
||||
|
||||
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 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 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 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_running = False
|
||||
mgroup.save()
|
Loading…
Reference in New Issue