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 django.core.cache import cache
|
||||||
from apps.utils.tasks import ctask_run
|
from apps.utils.tasks import ctask_run
|
||||||
import logging
|
import logging
|
||||||
|
from apps.mtm.services import mgroup_run_change
|
||||||
myLogger = logging.getLogger("log")
|
myLogger = logging.getLogger("log")
|
||||||
|
|
||||||
def get_eq_rs(equipId: str):
|
def get_eq_rs(equipId: str):
|
||||||
|
@ -36,10 +37,6 @@ def shutdown_or_startup(equipId: str, last_timex: datetime, last_mrs):
|
||||||
"""
|
"""
|
||||||
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 = Equipment.objects.get(id=equipId)
|
||||||
equip.running_state = last_mrs
|
equip.running_state = last_mrs
|
||||||
equip.save(update_fields=["running_state"])
|
equip.save(update_fields=["running_state"])
|
||||||
|
@ -64,24 +61,7 @@ def shutdown_or_startup(equipId: str, last_timex: datetime, last_mrs):
|
||||||
new_run = True
|
new_run = True
|
||||||
|
|
||||||
if new_run is not None:
|
if new_run is not None:
|
||||||
mgroup.is_running = new_run
|
mgroup_run_change(mgroup, new_run, last_timex)
|
||||||
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()
|
|
||||||
|
|
||||||
|
|
||||||
def daoru_equipment(path: str):
|
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)
|
equips = Equipment.objects.filter(indicate_mgroup_running__isnull=False, mgroup__isnull=False)
|
||||||
for equip in equips:
|
for equip in equips:
|
||||||
rs = get_eq_rs(equip.id)
|
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.k import kingClient
|
||||||
from apps.third.king.king_api import kapis
|
from apps.third.king.king_api import kapis
|
||||||
from apps.enm.services import insert_mplogx_from_king_rest_chunk, MpointCache
|
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 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")
|
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))
|
# mpoints_other_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
||||||
cal_mpointstat_hour(item.id, year, month, day, hour)
|
cal_mpointstat_hour(item.id, year, month, day, hour)
|
||||||
|
|
||||||
|
# 先调整一下班时间,以防计算错误
|
||||||
|
get_total_hour_now()
|
||||||
|
|
||||||
# 开始计算enstat
|
# 开始计算enstat
|
||||||
mgroups = Mgroup.objects.filter(need_enm=True).order_by("sort")
|
mgroups = Mgroup.objects.filter(need_enm=True).order_by("sort")
|
||||||
# mgroups_group = []
|
# mgroups_group = []
|
||||||
|
@ -738,7 +740,7 @@ def king_insert_mplogx():
|
||||||
def check_mpoint_offline(seconds=100):
|
def check_mpoint_offline(seconds=100):
|
||||||
"""监测测点采集掉线"""
|
"""监测测点采集掉线"""
|
||||||
now = localtime()
|
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)
|
mc = MpointCache(mpoint.code)
|
||||||
mpoint_data = mc.data
|
mpoint_data = mc.data
|
||||||
last_data = mpoint_data.get('last_data', None)
|
last_data = mpoint_data.get('last_data', None)
|
||||||
|
@ -747,6 +749,3 @@ def check_mpoint_offline(seconds=100):
|
||||||
is_offline = False
|
is_offline = False
|
||||||
if is_offline:
|
if is_offline:
|
||||||
mc.set_fail(-2, now)
|
mc.set_fail(-2, now)
|
||||||
if mpoint.mpoint_affect:
|
|
||||||
mct = MpointCache(mpoint.mpoint_affect)
|
|
||||||
mct.set_fail(-2, now)
|
|
|
@ -4,6 +4,10 @@ from django.db.models import Q
|
||||||
from apps.mtm.models import Material, Process
|
from apps.mtm.models import Material, Process
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
from apps.utils.tools import ranstr
|
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):
|
def get_mgroup_goals(mgroupId, year, reload=False):
|
||||||
|
@ -73,3 +77,27 @@ def daoru_material(path: str):
|
||||||
raise ParseError(f'{i}行物料有误, 导入失败--{e}')
|
raise ParseError(f'{i}行物料有误, 导入失败--{e}')
|
||||||
i = i + 1
|
i = i + 1
|
||||||
print(type, name, specification, model, unit, '导入成功')
|
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