From 17622f230e510507a13193a6bf3c3e672e879055 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 5 Dec 2024 18:59:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E6=8E=92=E7=8F=AD?= =?UTF-8?q?=E8=A7=84=E5=88=99=E5=A1=AB=E5=85=A5=E7=8F=AD=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/services.py | 56 +++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/apps/wpm/services.py b/apps/wpm/services.py index 00b6531e..37f1951a 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -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: - 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 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 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)