feat: 根据排班规则填入班组
This commit is contained in:
parent
2b10f3bfff
commit
17622f230e
|
@ -17,6 +17,7 @@ from apps.wf.models import Ticket
|
|||
from apps.utils.thread import MyThread
|
||||
import logging
|
||||
from apps.wpm.services_2 import get_alldata_with_batch_and_store
|
||||
from datetime import timedelta
|
||||
myLogger = logging.getLogger('log')
|
||||
|
||||
def generate_new_batch(old_batch: str, mlog: Mlog):
|
||||
|
@ -55,36 +56,22 @@ def get_sflog(mgroup: Mgroup, happen_time: datetime):
|
|||
start_time__lte=happen_time, end_time__gt=happen_time, mgroup=mgroup).order_by('-start_time').first()
|
||||
return sflog
|
||||
|
||||
def get_team(team_ids: list):
|
||||
from apps.mtm.models import Srule
|
||||
# 获取 r_list 列表
|
||||
teams_ = Srule.objects.all().values_list('rule', flat=True)
|
||||
# 提取team_id
|
||||
teams = [team['team'] for team in teams_[0]]
|
||||
# 找到 team_ids 匹配段的结束位置
|
||||
start_idx = -1
|
||||
for i in range(len(teams)-len(team_ids)+1):
|
||||
if teams[i:i+len(team_ids)] == team_ids:
|
||||
start_idx = i
|
||||
break
|
||||
if start_idx == -1:
|
||||
def get_team_x(sflog: SfLog):
|
||||
srule = Srule.objects.filter(belong_dept=sflog.mgroup.belong_dept).first()
|
||||
if srule and srule.rule:
|
||||
rule = srule.rule
|
||||
rule_compare = rule + rule
|
||||
teamId_list = (SfLog.objects.filter(mgroup=sflog.mgroup, start_time__lt=sflog.start_time, start_time__gte=sflog.start_time - timedelta(days=5)).order_by('-start_time').values_list('team_id', flat=True)[:3])[::-1]
|
||||
if None in teamId_list:
|
||||
pass
|
||||
else:
|
||||
teamId_list_len = len(teamId_list)
|
||||
for i in range(len(rule_compare)-teamId_list_len+1):
|
||||
if rule_compare[i:i+teamId_list_len] == teamId_list:
|
||||
teamId = rule_compare[i+teamId_list_len+1]
|
||||
team = Team.objects.filter(id=teamId).first()
|
||||
return team
|
||||
return None
|
||||
# 获取匹配段的结束位置
|
||||
new_team = teams[start_idx+len(team_ids)] if start_idx != -1 and start_idx+len(team_ids) < len(teams) else None
|
||||
return new_team
|
||||
|
||||
# def get_team_x(sflog: SfLog):
|
||||
# return None
|
||||
# srule = Srule.objects.filter(belong_dept=sflog.mgroup.belong_dept).first()
|
||||
# if srule:
|
||||
# rule = srule.rule
|
||||
# teamId_list_x = [x["team"] for x in rule]
|
||||
# teamId_list = SfLog.objects.filter().values_list('team_id', flat=True)
|
||||
# if None in teamId_list:
|
||||
# pass
|
||||
# else:
|
||||
# pass
|
||||
# return None
|
||||
|
||||
|
||||
def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.date, create_by=None):
|
||||
|
@ -116,10 +103,11 @@ def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.da
|
|||
"total_sec": total_sec,
|
||||
"create_by": create_by
|
||||
})
|
||||
# if is_created:
|
||||
# sflog.team = get_team_x(sflog)
|
||||
# if sflog.team:
|
||||
# sflog.save(update_fields=['team'])
|
||||
if is_created:
|
||||
team = get_team_x(sflog)
|
||||
if team:
|
||||
sflog.team = team
|
||||
sflog.save(update_fields=['team'])
|
||||
current_date = current_date + datetime.timedelta(days=1)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue