From 251e373d5b5c0601760fb9adf0ce356b60313b4f Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 1 Aug 2023 16:41:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20get=5Ftotal=5Fhour=5Fnow=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/services.py | 21 +++++++++++++++++---- apps/wpm/tasks.py | 14 ++++++++++---- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/apps/wpm/services.py b/apps/wpm/services.py index 458f6d62..226d3b8a 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -3,6 +3,7 @@ from apps.mtm.models import Shift, Mgroup import datetime from django.utils.timezone import localtime from django.db.models import Sum +from django.core.cache import cache def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.date): for shift in Shift.objects.all(): @@ -25,8 +26,20 @@ def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.da def get_pcoal_val(year_s: int, month_s: int, day_s: int): """ 获取煤粉热值 + 只有回转窑需要录入煤粉热值 """ - sflog = SfLog.objects.filter(end_time__year=year_s, end_time__month=month_s, end_time__day=day_s).exclude(pcoal_val=None).first() - if sflog: - return sflog.coal_val - return None + key = f'pgoal_val_{year_s}_{month_s}_{day_s}' + pcoal_val = cache.get(key, None) + if pcoal_val is not None: + return pcoal_val + else: + try: + qs = SfLog.objects.get(end_time__year=year_s, end_time__month=month_s, end_time__day=day_s, + mgroup__name='回转窑', shift__name='夜班') + if qs.pcoal_val is None: + qs.pcoal_val = 0 + qs.save() + cache.set(f'pgoal_val_{year_s}_{month_s}_{day_s}', qs.pcoal_val) + return qs.pcoal_val + except: + return 0 diff --git a/apps/wpm/tasks.py b/apps/wpm/tasks.py index 58a8311f..83229a53 100644 --- a/apps/wpm/tasks.py +++ b/apps/wpm/tasks.py @@ -37,14 +37,16 @@ def get_total_hour_now(sflogId: str): if localtime(sflog.end_time) <= now: sflog.total_hour_now = 12 else: - sflog.total_hour_now = (now - localtime(sflog.start_time).replace(tzinfo=None)).total_seconds()/3600 + total_hour_now = (now-localtime(i.start_time).replace(tzinfo=None)).total_seconds()/3600 + sflog.total_hour_now = total_hour_now if total_hour_now > 0 else 0 sflog.save() return sflog.total_hour_now else: SfLog.objects.filter(end_time__lte=now).exclude(total_hour_now=12).update(total_hour_now=12) sf_qs = SfLog.objects.filter(end_time__gt=now) for i in sf_qs: - i.total_hour_now = (now-localtime(i.start_time).replace(tzinfo=None)).total_seconds()/3600 + total_hour_now = (now-localtime(i.start_time).replace(tzinfo=None)).total_seconds()/3600 + i.total_hour_now = total_hour_now if total_hour_now > 0 else 0 i.save() @shared_task(base=CustomTask) @@ -52,7 +54,7 @@ def cal_shut_hour(stlogId: str): """ 计算停机记录对应的班停时长 """ - from apps.enm.tasks import compute_enstat + from apps.enm.tasks import cal_enstat if stlogId: stlogs = StLog.objects.filter(id=stlogId) else: @@ -85,4 +87,8 @@ def cal_shut_hour(stlogId: str): if ret.get('sum', 0): sflog.shut_hour = ret['sum'] sflog.save() - compute_enstat('sflog') \ No newline at end of file + cal_enstat('sflog') + + +@shared_task(base=CustomTask) +def cal_enstat_when_pcoal_val_change():