From 67d04a9a41895b3c736d769f69a8ce804d21ec08 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 2 Aug 2023 17:25:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=AF=E4=BB=A5=E4=B8=8D=E7=94=A8?= =?UTF-8?q?=E9=97=B4=E9=9A=94=E8=BF=90=E8=A1=8Cget=5Ftotal=5Fhour=5Fnow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/enm/tasks.py | 10 ++++++---- apps/wpm/services.py | 1 + apps/wpm/tasks.py | 6 +++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apps/enm/tasks.py b/apps/enm/tasks.py index aac00bc1..7072b4fb 100644 --- a/apps/enm/tasks.py +++ b/apps/enm/tasks.py @@ -435,29 +435,31 @@ def get_total_hour_now_and_shut_hour(enstat: EnStat): # shut_hour = 1 - run_hour # shut_hour = shut_hour + # return 1, 0 + now = datetime.datetime.now() if enstat.type == 'sflog': sflog = enstat.sflog return sflog.total_hour_now, sflog.shut_hour elif enstat.type == 'day_s': - res = SfLog.objects.filter(end_time__year=enstat.year_s, end_time__month=enstat.month_s, end_time__day=enstat.day_s, mgroup=enstat.mgroup).aggregate( + res = SfLog.objects.filter(end_time__year=enstat.year_s, end_time__month=enstat.month_s, end_time__day=enstat.day_s, + mgroup=enstat.mgroup, end_time__lt=now).aggregate( sum1 = Sum('total_hour_now'), sum2 = Sum('shut_hour') ) return res['sum1'] if res['sum1'] else 0, res['sum2'] if res['sum2'] else 0 elif enstat.type == 'month_st': - res = SfLog.objects.filter(end_time__year=enstat.year_s, end_time__month=enstat.month_s, mgroup=enstat.mgroup, team=enstat.team).aggregate( + res = SfLog.objects.filter(end_time__year=enstat.year_s, end_time__month=enstat.month_s, mgroup=enstat.mgroup, team=enstat.team, end_time__lt=now).aggregate( sum1 = Sum('total_hour_now'), sum2 = Sum('shut_hour') ) return res['sum1'] if res['sum1'] else 0, res['sum2'] if res['sum2'] else 0 elif enstat.type == 'month_s': - res = SfLog.objects.filter(end_time__year=enstat.year_s, end_time__month=enstat.month_s, mgroup=enstat.mgroup).aggregate( + res = SfLog.objects.filter(end_time__year=enstat.year_s, end_time__month=enstat.month_s, mgroup=enstat.mgroup, end_time__lt=now).aggregate( sum1 = Sum('total_hour_now'), sum2 = Sum('shut_hour') ) return res['sum1'] if res['sum1'] else 0, res['sum2'] if res['sum2'] else 0 elif enstat.type == 'year_s': - res = SfLog.objects.filter(end_time__year=enstat.year_s, mgroup=enstat.mgroup).aggregate( + res = SfLog.objects.filter(end_time__year=enstat.year_s, mgroup=enstat.mgroup, end_time__lt=now).aggregate( sum1 = Sum('total_hour_now'), sum2 = Sum('shut_hour') ) diff --git a/apps/wpm/services.py b/apps/wpm/services.py index f67f79a3..0824c01b 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -20,6 +20,7 @@ def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.da "shift": shift, "start_time": start_time, "end_time": end_time, + "total_hour_now": 12 }) current_date = current_date + datetime.timedelta(days=1) diff --git a/apps/wpm/tasks.py b/apps/wpm/tasks.py index 087fed1d..a83df8c7 100644 --- a/apps/wpm/tasks.py +++ b/apps/wpm/tasks.py @@ -91,7 +91,11 @@ def cal_shut_hour(stlogId: str): if ret.get('sum', 0): sflog.shut_hour = ret['sum'] sflog.save() - cal_enstat('sflog') + # 更新sflog总时长 + if localtime(sflog.end_time) > now: + get_total_hour_now(sflog.id) + if stlogId: + cal_enstat('sflog', sflog.id, sflog.mgroup.id, None, None, None, None, None, None, None, cascade=True, cal_attrs=['run_hour']) @shared_task(base=CustomTask)