From cffea3e1ea141b3642491e53668b7d2a5869bdf4 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Feb 2026 15:45:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8A=A0=E5=B7=A5=E5=89=8D=E4=B8=8D?= =?UTF-8?q?=E8=89=AF=E5=BD=93=E5=90=88=E6=A0=BC=E5=93=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/services.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/apps/wpm/services.py b/apps/wpm/services.py index 5a7f9615..2ca76193 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -255,12 +255,16 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): Wpr.change_or_new(wpr=item.wpr, old_wm=wm, ftest=item.ftest) # 针对加工前不良的暂时额外处理 + # 合格B类的需要当合格品 if stored_notok: for item in m_ins_bl_list: material, batch, count, defect, mi_ = item if count <= 0: raise ParseError('存在非正数!') - lookup = {'batch': batch, 'material': material, 'mgroup': mgroup, 'defect': defect, 'state': WMaterial.WM_NOTOK} + c_state = WMaterial.WM_NOTOK + if isinstance(defect, Defect) and defect.okcate == Defect.DEFECT_OK_B: + c_state = WMaterial.WM_OK + lookup = {'batch': batch, 'material': material, 'mgroup': mgroup, 'defect': defect, 'state': c_state} wm, is_create = WMaterial.locked_get_or_create(**lookup, defaults={"belong_dept": belong_dept}) wm.count = wm.count + count if is_create: @@ -270,7 +274,7 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): wm.update_by = user wm.save() if material.tracking == Material.MA_TRACKING_SINGLE: - mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b, ftest__is_ok=False, ftest__defect_main=defect) + mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b, ftest__defect_main=defect) if mlogbws.count() != count: raise ParseError("日志与加工前不良明细数量不一致,操作失败") for item in mlogbws: @@ -578,7 +582,10 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): material, batch, count, defect, mi_ = item if count <= 0: raise ParseError('存在非正数!') - lookup = {'batch': batch, 'material': material, 'mgroup': None, 'defect': defect, 'state': WMaterial.WM_NOTOK} + c_state = WMaterial.WM_NOTOK + if isinstance(defect, Defect) and defect.okcate == Defect.DEFECT_OK_B: + c_state = WMaterial.WM_OK + lookup = {'batch': batch, 'material': material, 'mgroup': None, 'defect': defect, 'state': c_state} if stored_mgroup: lookup['mgroup'] = mgroup else: @@ -593,7 +600,7 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): wm.update_by = user wm.save() if material.tracking == Material.MA_TRACKING_SINGLE: - mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b, ftest__is_ok=False, ftest__defect_main=defect) + mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b, ftest__defect_main=defect) if mlogbws.count() != count: raise ParseError("日志与加工前不良明细数量不一致,操作失败") for item in mlogbws: