fix:cal_shut_hour 的时区问题
This commit is contained in:
parent
e59bed611b
commit
1ed7c846a3
|
|
@ -11,7 +11,7 @@ import datetime
|
||||||
from django.db.models import Sum
|
from django.db.models import Sum
|
||||||
from apps.wpm.services import make_sflogs
|
from apps.wpm.services import make_sflogs
|
||||||
from apps.wpm.models import SfLog, StLog, SfLogExp
|
from apps.wpm.models import SfLog, StLog, SfLogExp
|
||||||
from django.utils.timezone import localtime
|
from django.utils import timezone
|
||||||
from django.db.models import F
|
from django.db.models import F
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
|
|
@ -35,13 +35,13 @@ def get_total_hour_now(sflogId: str):
|
||||||
获取当前总时长, 当传入的是一个sflog时, 返回其total_hour_now
|
获取当前总时长, 当传入的是一个sflog时, 返回其total_hour_now
|
||||||
否则更新所有total_hour_now
|
否则更新所有total_hour_now
|
||||||
"""
|
"""
|
||||||
now = datetime.datetime.now()
|
now = timezone.now()
|
||||||
if sflogId:
|
if sflogId:
|
||||||
sflog = SfLog.objects.get(id=sflogId)
|
sflog = SfLog.objects.get(id=sflogId)
|
||||||
if localtime(sflog.end_time) <= now:
|
if sflog.end_time <= now:
|
||||||
sflog.total_hour_now = 12
|
sflog.total_hour_now = 12
|
||||||
else:
|
else:
|
||||||
total_hour_now = (now-localtime(i.start_time).replace(tzinfo=None)).total_seconds()/3600
|
total_hour_now = (now-i.start_time).total_seconds()/3600
|
||||||
sflog.total_hour_now = total_hour_now if total_hour_now > 0 else 0
|
sflog.total_hour_now = total_hour_now if total_hour_now > 0 else 0
|
||||||
sflog.save()
|
sflog.save()
|
||||||
return sflog.total_hour_now
|
return sflog.total_hour_now
|
||||||
|
|
@ -49,7 +49,7 @@ def get_total_hour_now(sflogId: str):
|
||||||
SfLog.objects.filter(end_time__lte=now).exclude(total_hour_now=12).update(total_hour_now=12)
|
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)
|
sf_qs = SfLog.objects.filter(end_time__gt=now)
|
||||||
for i in sf_qs:
|
for i in sf_qs:
|
||||||
total_hour_now = (now-localtime(i.start_time).replace(tzinfo=None)).total_seconds()/3600
|
total_hour_now = (now-i.start_time).total_seconds()/3600
|
||||||
i.total_hour_now = total_hour_now if total_hour_now > 0 else 0
|
i.total_hour_now = total_hour_now if total_hour_now > 0 else 0
|
||||||
i.save()
|
i.save()
|
||||||
|
|
||||||
|
|
@ -63,10 +63,10 @@ def cal_shut_hour(stlogId: str):
|
||||||
stlogs = StLog.objects.filter(id=stlogId)
|
stlogs = StLog.objects.filter(id=stlogId)
|
||||||
else:
|
else:
|
||||||
stlogs = StLog.objects.filter(end_time=None)
|
stlogs = StLog.objects.filter(end_time=None)
|
||||||
|
now = timezone.now()
|
||||||
for stlog in stlogs:
|
for stlog in stlogs:
|
||||||
now = datetime.datetime.now()
|
|
||||||
st_start = stlog.start_time
|
st_start = stlog.start_time
|
||||||
if localtime(st_start) >= now:
|
if st_start >= now:
|
||||||
break
|
break
|
||||||
if stlog.end_time is None: # 说明停机还未结束,此时也需要计算duration
|
if stlog.end_time is None: # 说明停机还未结束,此时也需要计算duration
|
||||||
st_end = now
|
st_end = now
|
||||||
|
|
@ -95,7 +95,7 @@ def cal_shut_hour(stlogId: str):
|
||||||
sflog.shut_hour = ret['sum']
|
sflog.shut_hour = ret['sum']
|
||||||
sflog.save()
|
sflog.save()
|
||||||
# 更新sflog总时长
|
# 更新sflog总时长
|
||||||
if localtime(sflog.end_time) > now:
|
if sflog.end_time > now:
|
||||||
get_total_hour_now(sflog.id)
|
get_total_hour_now(sflog.id)
|
||||||
if stlogId:
|
if stlogId:
|
||||||
cal_enstat('sflog', sflog.id, sflog.mgroup.id, None, None, None, None, None, None, None, cascade=True, cal_attrs=['run_hour'])
|
cal_enstat('sflog', sflog.id, sflog.mgroup.id, None, None, None, None, None, None, None, cascade=True, cal_attrs=['run_hour'])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue