feat: qm/ task view 增加 rate_pass_t 设置合格率目标值
This commit is contained in:
parent
f88689cc1e
commit
1d22dd983a
|
@ -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)
|
||||
|
|
|
@ -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:首件/成品检验
|
||||
|
|
Loading…
Reference in New Issue