fix: quastat task 计算优化

This commit is contained in:
caoqianming 2023-07-05 16:32:08 +08:00
parent a063db0c9b
commit 07f517de58
1 changed files with 6 additions and 4 deletions

View File

@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals
from celery import shared_task from celery import shared_task
from apps.qm.models import QuaStat from apps.qm.models import QuaStat
from apps.utils.tasks import CustomTask 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) @shared_task(base=CustomTask)
@ -15,16 +15,18 @@ def cal_quastat(quastatId: str):
# GROUP BY field1 # GROUP BY field1
# """ # """
ins = QuaStat.objects.get(id=quastatId) 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 = { params = {
'testitem': ins.testitem, 'testitem': ins.testitem,
'material': ins.material, 'material': ins.material,
'belong_dept': ins.belong_dept, 'belong_dept': ins.belong_dept,
'type': 'sflog',
'year_s': ins.year_s, 'year_s': ins.year_s,
'month_s': ins.month_s, 'month_s': ins.month_s,
'day_s': ins.day_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( 'testitem', 'year_s', 'month_s', 'day_s').annotate(
avg_val_total=Sum(F('val_avg')*F('num_test')), avg_val_total=Sum(F('val_avg')*F('num_test')),
num_test_1=Sum('num_test'), num_test_1=Sum('num_test'),
@ -47,7 +49,7 @@ def cal_quastat(quastatId: str):
qua.save() qua.save()
# 月统计 # 月统计
params.pop('day_s') 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( 'testitem', 'year_s', 'month_s').annotate(
avg_val_total=Sum(F('val_avg')*F('num_test')), avg_val_total=Sum(F('val_avg')*F('num_test')),
num_test_1=Sum('num_test'), num_test_1=Sum('num_test'),
@ -72,7 +74,7 @@ def cal_quastat(quastatId: str):
# 年统计 # 年统计
params.pop('month_s') 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( 'testitem', 'year_s').annotate(
avg_val_total=Sum(F('val_avg')*F('num_test')), avg_val_total=Sum(F('val_avg')*F('num_test')),
num_test_1=Sum('num_test'), num_test_1=Sum('num_test'),