From 8b7887ec43a6a110f7bef34e9ef9a211e045b7db Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 17 Jan 2025 09:57:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8F=98=E6=9B=B4=E5=8D=95=E4=BB=B6?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E7=9A=84=E5=B1=9E=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/inm/services.py | 16 +++++++++++----- apps/wpm/services.py | 12 +++++++++--- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/apps/inm/services.py b/apps/inm/services.py index 6778b961..41a7be60 100644 --- a/apps/inm/services.py +++ b/apps/inm/services.py @@ -10,7 +10,7 @@ from apps.wpm.models import WMaterial from apps.wpm.services_2 import get_alldata_with_batch_and_store from apps.wpmw.models import Wpr from apps.qm.models import FtestDefect, Defect -from django.db.models import Count +from django.db.models import Count, Q def do_out(item: MIOItem): """ @@ -329,8 +329,11 @@ class InmService: mb.count = mb.count + change_count mb.save() if tracking == Material.MA_TRACKING_SINGLE: - mioitemws = MIOItemw.objects.filter(mioitem=i) - if mioitemws.count() != i.count: + if defect: + mioitemws = MIOItemw.objects.filter(mioitem=i, ftest__is_ok=False, ftest__defects_ftest__defect=defect) + else: + mioitemws = MIOItemw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=i) + if mioitemws.count() != change_count: raise ParseError("出入库与明细数量不一致,操作失败") for mioitemw in mioitemws: if mioitemw.wpr: @@ -347,8 +350,11 @@ class InmService: else: mb.save() if tracking == Material.MA_TRACKING_SINGLE: - mioitemws = MIOItemw.objects.filter(mioitem=i) - if mioitemws.count() != i.count: + if defect: + mioitemws = MIOItemw.objects.filter(mioitem=i, ftest__is_ok=False, ftest__defects_ftest__defect=defect) + else: + mioitemws = MIOItemw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=i) + if mioitemws.count() != change_count: raise ParseError("出入库与明细数量不一致,操作失败") for mioitemw in mioitemws: Wpr.change_or_new(wpr=mioitemw.wpr, old_mb=mb) diff --git a/apps/wpm/services.py b/apps/wpm/services.py index 556a472d..c278a626 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -20,7 +20,7 @@ from apps.wpm.services_2 import get_alldata_with_batch_and_store from datetime import timedelta from apps.wpmw.models import Wpr, WprDefect from ..qm.models import Defect, FtestDefect -from django.db.models import Count +from django.db.models import Count, Q myLogger = logging.getLogger('log') @@ -299,7 +299,10 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): wm.material_ofrom = mlog_or_b.material_ofrom wm.save() if material_out.tracking == Material.MA_TRACKING_SINGLE: - mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b) + if notok_sign_or_defect: + mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b, ftest__is_ok=False, ftest__defects_ftest__defect=defect) + else: + mlogbws = Mlogbw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=mlog_or_b) if mlogbws.count() != mo_count: raise ParseError("日志与明细数量不一致,操作失败") for item in mlogbws: @@ -412,7 +415,10 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): wm.update_by = user wm.save() if material_out.tracking == Material.MA_TRACKING_SINGLE: - mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b) + if notok_sign_or_defect: + mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b, ftest__is_ok=False, ftest__defects_ftest__defect=defect) + else: + mlogbws = Mlogbw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=mlog_or_b) if mlogbws.count() != mo_count: raise ParseError("日志与明细数量不一致,操作失败") for item in mlogbws: