feat: 优化mgroup_run_change

This commit is contained in:
zty 2024-09-26 11:51:36 +08:00
parent 9f90d84244
commit 9a3e15f926
1 changed files with 13 additions and 5 deletions

View File

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