From 9c83e9719ecf48024e83761020f1465993191d1f Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 6 Jul 2023 09:48:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20qm=20task=20=E8=AE=A1=E7=AE=97=E6=97=B6r?= =?UTF-8?q?ate=5Fpass=20=E5=8D=95=E7=8B=AC=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/qm/tasks.py | 19 +++++++++---------- apps/qm/views.py | 4 ++++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/apps/qm/tasks.py b/apps/qm/tasks.py index 8e1b5373..db212b7a 100644 --- a/apps/qm/tasks.py +++ b/apps/qm/tasks.py @@ -15,9 +15,15 @@ def cal_quastat_type(qs, params_o: dict, type: str): avg_val_total=Sum(F('val_avg')*F('num_test')), num_test_1=Sum('num_test'), num_ok_1=Sum('num_ok')).annotate( - avg_val_1=ExpressionWrapper(F('avg_val_total')/F('num_test_1'), output_field=FloatField()), - rate_pass_1=ExpressionWrapper(F('num_ok_1')/F('num_test_1'), output_field=FloatField()) + avg_val_1=ExpressionWrapper(F('avg_val_total')/F('num_test_1'), output_field=FloatField()) + # ,rate_pass_1=ExpressionWrapper(F('num_ok_1')/F('num_test_1'), output_field=FloatField()) 不知道为什么算出来是0 ) + query = """ + SELECT SUM(num_test * val_avg)/SUM(num_test) AS avg_val_1, SUM(num_test) AS num_test_1, SUM(num_ok) AS num_ok_1, SUM(num_ok)/SUM(num_test) as rate_pass_1 + FROM qm_quastat + where year_s = 2023 and month_s = 7 and day_s = 7 and type = 'sflog' + GROUP BY belong_dept_id, material_id, testitem_id + """ params['type'] = type if type == 'month_s': params.pop('day_s') @@ -29,7 +35,7 @@ def cal_quastat_type(qs, params_o: dict, type: str): 'val_avg': r1['avg_val_1'], 'num_test': r1['num_test_1'], 'num_ok': r1['num_ok_1'], - 'rate_pass': r1['rate_pass_1'] + 'rate_pass': r1['num_ok_1']/r1['num_test_1'] } qua, is_created = QuaStat.objects.get_or_create( **params, defaults={**params, **stat_params} @@ -40,13 +46,6 @@ def cal_quastat_type(qs, params_o: dict, type: str): @shared_task(base=CustomTask) def cal_quastat(quastatId: str): - # 可以直接使用sql语言 - # query = """ - # SELECT field1, SUM(field2 * field3) AS field2_field3_sum, SUM(field1) AS field1_sum, - # SUM(field2 * field3) / SUM(field1) AS result - # FROM your_table_name - # 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 = { diff --git a/apps/qm/views.py b/apps/qm/views.py index 7b07ad7e..a2c13277 100644 --- a/apps/qm/views.py +++ b/apps/qm/views.py @@ -6,6 +6,7 @@ from apps.qm.serializers import QuaStatSerializer, TestItemSerializer, QuaStatUp from apps.qm.tasks import cal_quastat from rest_framework.response import Response from apps.utils.mixins import BulkCreateModelMixin, BulkUpdateModelMixin +import datetime from apps.utils.viewsets import CustomGenericViewSet @@ -38,5 +39,8 @@ class QuaStatViewSet(ListModelMixin, BulkUpdateModelMixin, CustomGenericViewSet) def perform_update(self, serializer): ins = serializer.save() + if ins.sflog: # 更新值班记录的质检时间 + ins.sflog.last_test_time = datetime.datetime.now() + ins.sflog.save() # 计算其他方面的统计 cal_quastat.delay(ins.id) \ No newline at end of file