From 1d22dd983a8336a5b7dfad2ba685bef8486d3165 Mon Sep 17 00:00:00 2001 From: zty Date: Thu, 23 Jan 2025 11:15:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20qm/=20task=20view=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=20rate=5Fpass=5Ft=20=E8=AE=BE=E7=BD=AE=E5=90=88=E6=A0=BC?= =?UTF-8?q?=E7=8E=87=E7=9B=AE=E6=A0=87=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/qm/tasks.py | 9 ++++++--- apps/qm/views.py | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/apps/qm/tasks.py b/apps/qm/tasks.py index fb28aa6a..a1d14b47 100644 --- a/apps/qm/tasks.py +++ b/apps/qm/tasks.py @@ -94,6 +94,7 @@ def cal_quastat_sflog(sflogId: str): sql_q2 = f"""SELECT mtma."id" AS material, mtma."name" AS material_name, +qmq."rate_pass_t" as rate_g, qmt."id" AS testitem, qmt."name" AS testitem_name, CAST(SUM(num_test * val_avg) AS FLOAT)/NULLIF(SUM(num_test), 0) AS val_avg, @@ -111,7 +112,7 @@ and mgroup.id = '{mgroup.id}' and qmq.val_avg is not NULL and qmq.num_test is not NULL and qmq.num_ok is not NULL -GROUP BY mgroup."id", mtma."id", qmt."id", mgroup.sort, mtma.sort, qmt.sort +GROUP BY mgroup."id", mtma."id", qmt."id", qmq."rate_pass_t", mgroup.sort, mtma.sort, qmt.sort ORDER BY mgroup.sort, mtma.sort, qmt.sort """ res2 = query_all_dict(sql_q2) @@ -127,6 +128,7 @@ ORDER BY mgroup.sort, mtma.sort, qmt.sort mtma."name" AS material_name, qmt."id" AS testitem, qmt."name" AS testitem_name, + qmq."rate_pass_t" as rate_g, CAST(SUM(num_test * val_avg) AS FLOAT)/NULLIF(SUM(num_test), 0) AS val_avg, SUM(num_test) AS num_test, SUM(num_ok) AS num_ok, @@ -142,7 +144,7 @@ ORDER BY mgroup.sort, mtma.sort, qmt.sort and qmq.val_avg is not NULL and qmq.num_test is not NULL and qmq.num_ok is not NULL - GROUP BY mtma."id", qmt."id", mtma.sort, qmt.sort + GROUP BY mtma."id", qmt."id", qmq."rate_pass_t", mtma.sort, qmt.sort ORDER BY mtma.sort, qmt.sort """ res3 = query_all_dict(sql_q3) @@ -155,6 +157,7 @@ ORDER BY mgroup.sort, mtma.sort, qmt.sort sql_q4 = f"""SELECT mtma."id" AS material, mtma."name" AS material_name, +qmq."rate_pass_t" as rate_g, qmt."id" AS testitem, qmt."name" AS testitem_name, CAST(SUM(num_test * val_avg) AS FLOAT)/NULLIF(SUM(num_test), 0) AS val_avg, @@ -172,7 +175,7 @@ and mgroup.id = '{mgroup.id}' and qmq.val_avg is not NULL and qmq.num_test is not NULL and qmq.num_ok is not NULL -GROUP BY mgroup."id", mtma."id", qmt."id", mgroup.sort, mtma.sort, qmt.sort +GROUP BY mgroup."id", mtma."id", qmt."id", qmq."rate_pass_t", mgroup.sort, mtma.sort, qmt.sort ORDER BY mgroup.sort, mtma.sort, qmt.sort """ res4 = query_all_dict(sql_q4) diff --git a/apps/qm/views.py b/apps/qm/views.py index 5763fa49..b3e8d7b4 100644 --- a/apps/qm/views.py +++ b/apps/qm/views.py @@ -143,7 +143,24 @@ class QuaStatViewSet(ListModelMixin, BulkUpdateModelMixin, CustomGenericViewSet) for sflogId in sflogIds: cal_quastat_sflog.delay(sflogId) - + # 根据物料ID和检测项目ID rate_pass_t + @action(detail=False, methods=['post'], url_path='update_rate_pass_t', perms_map={'post': 'quastat.submit'}) + def update_rate_pass_t(self, request, *args, **kwargs): + material_id = request.data.get("material_id") + testitem_id = request.data.get("testitem_id") + new_rate_pass_t = request.data.get("rate_pass_t") + if not (material_id and testitem_id and new_rate_pass_t is not None): + return Response( + {"detail": "Missing required fields: material_id, testitem_id, rate_pass_t"}, + status=400 + ) + update_count = QuaStat.objects.filter(material_id=material_id, testitem_id=testitem_id).update(rate_pass_t=new_rate_pass_t) + sfLogIds= QuaStat.objects.filter(material_id=material_id, testitem_id=testitem_id).values_list('sflog', flat=True) + for sflogId in sfLogIds: + cal_quastat_sflog.delay(sflogId) + return Response({"rate_pass_t": new_rate_pass_t}, status=200) + + class FtestViewSet(CustomModelViewSet): """ list:首件/成品检验