From f3d023432dc1502667b8ef1e4dec638b6a24e930 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 25 Nov 2024 17:52:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=90=88=E6=A0=BCb?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/qm/models.py | 21 +++++++++++++++++++-- apps/qm/services.py | 32 ++++++++++++++++++++++---------- apps/qm/views.py | 2 +- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/apps/qm/models.py b/apps/qm/models.py index b38183be..599eb6ac 100644 --- a/apps/qm/models.py +++ b/apps/qm/models.py @@ -7,6 +7,7 @@ from apps.wpm.models import SfLog, WMaterial from django.utils.translation import gettext_lazy as _ class NotOkOption(models.TextChoices): + # 不合格项 zw = "zw", _("炸纹") tw = "tw", _("条纹") qp = "qp", _("气泡") @@ -35,7 +36,6 @@ class NotOkOption(models.TextChoices): thhs = "thhs", _("退火后碎") swen = "swen", _("水纹") bb = "bb", _("崩边") - xbb = "xbb", _("小崩边") wm = "wm", _("雾面") md = "md", _("麻点") xh = "xh", _("线痕") @@ -55,13 +55,30 @@ class NotOkOption(models.TextChoices): txd = "txd", _("同心度不良") hd = "hd", _("厚度不良") z = "z", _("脏") + lg = "lg", _("漏光") + ccx = "ccx", _("尺寸小") + + # 合格B类项 zhg = "zhg", _("准合格") yz = "yz", _("圆准") + xbb = "xbb", _("小崩边") + qsw = "qsw", _("浅水纹") + qhm = "qhm", _("浅划麻") jgqbl = "jgqbl", _("加工前不良") - qt = "qt", _("其它") + @classmethod + def get_extra_info(cls, value): + extra_info = { + "zhg": {"cate": "ok_b"}, + "yz": {"cate": "ok_b"}, + "xbb": {"cate": "ok_b"}, + "qsw": {"cate": "ok_b"}, + "qhm": {"cate": "ok_b"} + } + return extra_info.get(value, {"cate": "notok"}) + FTEST_TYPE_CHOICES = ( ('first', '首件检验'), ('process', '过程检验'), diff --git a/apps/qm/services.py b/apps/qm/services.py index e984855b..18f6426b 100644 --- a/apps/qm/services.py +++ b/apps/qm/services.py @@ -3,6 +3,8 @@ from apps.wpm.models import WMaterial from apps.system.models import User from rest_framework.exceptions import ParseError from django.utils import timezone +from apps.wf.models import Ticket +from apps.qm.models import NotOkOption def ftestwork_submit(ins:FtestWork, user: User): @@ -17,8 +19,15 @@ def ftestwork_submit(ins:FtestWork, user: User): wm.save() else: raise ParseError("超过待检数量") - # 生成合格的 - count_ok = ins.count_ok + # 寻找count_notok_json中的b类不合格不进行处理 + count_notok_json = ins.count_notok_json + need_move_count = 0 + for k, v in count_notok_json.items(): + if v > 0: + notok_sign = k.replace('count_n_', '') + if NotOkOption.get_extra_info(notok_sign)['cate'] == 'ok_b': # b类不合格在后续处理 + need_move_count = need_move_count + v + count_ok = ins.count_ok - need_move_count if count_ok > 0: wm, new_create = WMaterial.objects.get_or_create( material=wm.material, @@ -26,18 +35,15 @@ def ftestwork_submit(ins:FtestWork, user: User): mgroup=wm.mgroup, belong_dept=wm.belong_dept, state=WMaterial.WM_OK, + notok_sign=None, defaults={ 'count': count_ok, - 'material': wm.material, - 'batch': wm.batch, - 'mgroup': wm.mgroup, - 'belong_dept': wm.belong_dept, } ) if not new_create: wm.count = wm.count + count_ok wm.save() - else: + else: # 如果直接对工段库存检验 , 则直接扣减不合格数 wm.count = wm.count - ins.count_notok if wm.count >= 0: wm.save() @@ -49,13 +55,16 @@ def ftestwork_submit(ins:FtestWork, user: User): for k, v in count_notok_json.items(): if v > 0: notok_sign = k.replace('count_n_', '') + astate = WMaterial.WM_NOTOK + if NotOkOption.get_extra_info(notok_sign)['cate'] == 'ok_b': + astate = WMaterial.WM_OK wm_n, new_create = WMaterial.objects.get_or_create( material=wm.material, batch=wm.batch, mgroup=wm.mgroup, belong_dept=wm.belong_dept, notok_sign=notok_sign, - state=WMaterial.WM_NOTOK, + state=astate, defaults={ 'count': v, 'material': wm.material, @@ -63,7 +72,7 @@ def ftestwork_submit(ins:FtestWork, user: User): 'mgroup': wm.mgroup, 'belong_dept': wm.belong_dept, 'notok_sign': notok_sign, - 'state': WMaterial.WM_NOTOK, + 'state': astate, } ) if not new_create: @@ -71,4 +80,7 @@ def ftestwork_submit(ins:FtestWork, user: User): wm_n.save() ins.submit_user = user ins.submit_time = timezone.now() - ins.save() \ No newline at end of file + ins.save() + +def bind_ftestwork(ticket: Ticket, transition, new_ticket_data: dict): + pass \ No newline at end of file diff --git a/apps/qm/views.py b/apps/qm/views.py index 0941a5a6..23192ee3 100644 --- a/apps/qm/views.py +++ b/apps/qm/views.py @@ -29,7 +29,7 @@ class NotOkOptionView(APIView): 获取不合格项 """ - res1 = [{'value': i.value, 'label': i.label} for i in NotOkOption] + res1 = [{'value': i.value, 'label': i.label, 'extra_info': i.get_extra_info(i.value)} for i in NotOkOption] res2 = {i.value: i.label for i in NotOkOption} return Response({"res_list": res1, "res_dict": res2})