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
|
from apps.utils.thread import MyThread
|
||||||
import logging
|
import logging
|
||||||
from apps.wpm.services_2 import get_alldata_with_batch_and_store
|
from apps.wpm.services_2 import get_alldata_with_batch_and_store
|
||||||
|
from datetime import timedelta
|
||||||
myLogger = logging.getLogger('log')
|
myLogger = logging.getLogger('log')
|
||||||
|
|
||||||
def generate_new_batch(old_batch: str, mlog: Mlog):
|
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()
|
start_time__lte=happen_time, end_time__gt=happen_time, mgroup=mgroup).order_by('-start_time').first()
|
||||||
return sflog
|
return sflog
|
||||||
|
|
||||||
def get_team(team_ids: list):
|
def get_team_x(sflog: SfLog):
|
||||||
from apps.mtm.models import Srule
|
srule = Srule.objects.filter(belong_dept=sflog.mgroup.belong_dept).first()
|
||||||
# 获取 r_list 列表
|
if srule and srule.rule:
|
||||||
teams_ = Srule.objects.all().values_list('rule', flat=True)
|
rule = srule.rule
|
||||||
# 提取team_id
|
rule_compare = rule + rule
|
||||||
teams = [team['team'] for team in teams_[0]]
|
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]
|
||||||
# 找到 team_ids 匹配段的结束位置
|
if None in teamId_list:
|
||||||
start_idx = -1
|
pass
|
||||||
for i in range(len(teams)-len(team_ids)+1):
|
else:
|
||||||
if teams[i:i+len(team_ids)] == team_ids:
|
teamId_list_len = len(teamId_list)
|
||||||
start_idx = i
|
for i in range(len(rule_compare)-teamId_list_len+1):
|
||||||
break
|
if rule_compare[i:i+teamId_list_len] == teamId_list:
|
||||||
if start_idx == -1:
|
teamId = rule_compare[i+teamId_list_len+1]
|
||||||
return None
|
team = Team.objects.filter(id=teamId).first()
|
||||||
# 获取匹配段的结束位置
|
return team
|
||||||
new_team = teams[start_idx+len(team_ids)] if start_idx != -1 and start_idx+len(team_ids) < len(teams) else None
|
return 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):
|
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,
|
"total_sec": total_sec,
|
||||||
"create_by": create_by
|
"create_by": create_by
|
||||||
})
|
})
|
||||||
# if is_created:
|
if is_created:
|
||||||
# sflog.team = get_team_x(sflog)
|
team = get_team_x(sflog)
|
||||||
# if sflog.team:
|
if team:
|
||||||
# sflog.save(update_fields=['team'])
|
sflog.team = team
|
||||||
|
sflog.save(update_fields=['team'])
|
||||||
current_date = current_date + datetime.timedelta(days=1)
|
current_date = current_date + datetime.timedelta(days=1)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue