feat: qm/ task view 增加 rate_pass_t 设置合格率目标值

This commit is contained in:
zty 2025-01-23 11:15:25 +08:00
parent f88689cc1e
commit 1d22dd983a
2 changed files with 24 additions and 4 deletions

View File

@ -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)

View File

@ -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:首件/成品检验