fix: quastat task 计算优化
This commit is contained in:
parent
a063db0c9b
commit
07f517de58
|
@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals
|
|||
from celery import shared_task
|
||||
from apps.qm.models import QuaStat
|
||||
from apps.utils.tasks import CustomTask
|
||||
from django.db.models import Sum, F, ExpressionWrapper, FloatField
|
||||
from django.db.models import Sum, F, ExpressionWrapper, FloatField, Q
|
||||
|
||||
|
||||
@shared_task(base=CustomTask)
|
||||
|
@ -15,16 +15,18 @@ def cal_quastat(quastatId: str):
|
|||
# GROUP BY field1
|
||||
# """
|
||||
ins = QuaStat.objects.get(id=quastatId)
|
||||
qs = QuaStat.objects.exclude(Q(val_avg__isnull=True)|Q(num_test__isnull=True)|Q(num_ok__isnull=True))
|
||||
# 日统计
|
||||
params = {
|
||||
'testitem': ins.testitem,
|
||||
'material': ins.material,
|
||||
'belong_dept': ins.belong_dept,
|
||||
'type': 'sflog',
|
||||
'year_s': ins.year_s,
|
||||
'month_s': ins.month_s,
|
||||
'day_s': ins.day_s
|
||||
}
|
||||
results_day = QuaStat.objects.filter(**params).values('belong_dept', 'material',
|
||||
results_day = qs.filter(**params).values('belong_dept', 'material',
|
||||
'testitem', 'year_s', 'month_s', 'day_s').annotate(
|
||||
avg_val_total=Sum(F('val_avg')*F('num_test')),
|
||||
num_test_1=Sum('num_test'),
|
||||
|
@ -47,7 +49,7 @@ def cal_quastat(quastatId: str):
|
|||
qua.save()
|
||||
# 月统计
|
||||
params.pop('day_s')
|
||||
results_month = QuaStat.objects.filter(**params).values('belong_dept', 'material',
|
||||
results_month = qs.filter(**params).values('belong_dept', 'material',
|
||||
'testitem', 'year_s', 'month_s').annotate(
|
||||
avg_val_total=Sum(F('val_avg')*F('num_test')),
|
||||
num_test_1=Sum('num_test'),
|
||||
|
@ -72,7 +74,7 @@ def cal_quastat(quastatId: str):
|
|||
# 年统计
|
||||
params.pop('month_s')
|
||||
|
||||
results_year = QuaStat.objects.filter(**params).values('belong_dept', 'material',
|
||||
results_year = qs.filter(**params).values('belong_dept', 'material',
|
||||
'testitem', 'year_s').annotate(
|
||||
avg_val_total=Sum(F('val_avg')*F('num_test')),
|
||||
num_test_1=Sum('num_test'),
|
||||
|
|
Loading…
Reference in New Issue