feat: 优化mgroup_run_change
This commit is contained in:
parent
9f90d84244
commit
9a3e15f926
|
@ -116,12 +116,13 @@ def mgroup_run_change(mgroup: Mgroup, new_run: bool, last_timex: datetime, note:
|
|||
"""
|
||||
from apps.wpm.services import get_sflog
|
||||
from apps.wpm.tasks import cal_exp_duration_sec
|
||||
from apps.wpm.models import StLog
|
||||
from apps.wpm.models import StLog, SfLogExp
|
||||
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() # 找到最后一次停机记录
|
||||
|
||||
need_cal_exp = True
|
||||
if last_stlog:
|
||||
if last_timex >= last_stlog.start_time: # 认为是有效信号
|
||||
if last_stlog.end_time is None and new_run: # 从停到开
|
||||
|
@ -129,22 +130,29 @@ def mgroup_run_change(mgroup: Mgroup, new_run: bool, last_timex: datetime, note:
|
|||
last_stlog.duration_sec = (last_stlog.end_time - last_stlog.start_time).total_seconds()
|
||||
last_stlog.save()
|
||||
elif last_stlog.end_time and new_run is False and last_timex > last_stlog.end_time: # 从开到停
|
||||
last_stlog, _ = StLog.objects.get_or_create(
|
||||
cur_sflog = get_sflog(mgroup, last_timex)
|
||||
last_stlog, is_created = StLog.objects.get_or_create(
|
||||
mgroup=mgroup,
|
||||
is_shutdown=True,
|
||||
start_time=last_timex,
|
||||
defaults={
|
||||
'title': '停机',
|
||||
'end_time': None,
|
||||
'sflog': get_sflog(mgroup, last_timex),
|
||||
'sflog': cur_sflog,
|
||||
'reason':note,
|
||||
}
|
||||
)
|
||||
if is_created:
|
||||
SfLogExp.objects.get_or_create(stlog=last_stlog, sflog=cur_sflog)
|
||||
need_cal_exp = False
|
||||
elif new_run is False:
|
||||
last_stlog = StLog.objects.create(title="停机", is_shutdown=True, mgroup=mgroup, end_time=None, start_time=last_timex, sflog=get_sflog(mgroup, last_timex), reason = note)
|
||||
cur_sflog = get_sflog(mgroup, last_timex)
|
||||
last_stlog = StLog.objects.create(title="停机", is_shutdown=True, mgroup=mgroup, end_time=None, start_time=last_timex, sflog=cur_sflog, reason = note)
|
||||
mgroup.is_running = False
|
||||
mgroup.save()
|
||||
if last_stlog:
|
||||
SfLogExp.objects.get_or_create(stlog=last_stlog, sflog=cur_sflog)
|
||||
need_cal_exp = False
|
||||
if last_stlog and need_cal_exp:
|
||||
cal_exp_duration_sec(last_stlog.id) # 触发时间分配
|
||||
|
||||
def bind_routepack(ticket: Ticket, transition, new_ticket_data: dict):
|
||||
|
|
Loading…
Reference in New Issue