diff --git a/apps/wpm/services.py b/apps/wpm/services.py index 97ab1db1..3b1c8740 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -238,11 +238,10 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): wm.update_by = user wm.save() if mi_ma.tracking == Material.MA_TRACKING_SINGLE: - mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b) + mlogbws = Mlogbw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mlogb=mlog_or_b) + if mlogbws.count() != mi_count: + raise ParseError("日志与实际使用明细数量不一致,操作失败") for item in mlogbws: - mlogbws = Mlogbw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mlogb=mlog_or_b) - if mlogbws.count() != mi_count: - raise ParseError("日志与实际使用明细数量不一致,操作失败") Wpr.change_or_new(wpr=item.wpr, old_wm=wm, ftest=item.ftest) # 针对加工前不良的暂时额外处理 @@ -262,8 +261,7 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): 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_count = mlogbws.count() - if mlogbws_count != count: + if mlogbws.count() != count: raise ParseError("日志与加工前不良明细数量不一致,操作失败") for item in mlogbws: Wpr.change_or_new(wpr=item.wpr, wm=wm, old_wm=wm, ftest=item.ftest) @@ -557,16 +555,11 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): wm.update_by = user wm.save() if mi_ma.tracking == Material.MA_TRACKING_SINGLE: - mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b) + mlogbws = Mlogbw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mlogb=mlog_or_b) if mlogbws.count() != mi_count: - raise ParseError("日志与明细数量不一致,操作失败") + raise ParseError("日志与实际使用明细数量不一致,操作失败") for item in mlogbws: - # if item.wpr: Wpr.change_or_new(wpr=item.wpr, wm=wm) - # else: - # wpr = Wpr.change_or_new(number=item.number, wm=wm) - # item.wpr = wpr - # item.save() # 针对加工前不良的暂时额外处理 if stored_notok: @@ -585,7 +578,11 @@ 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: - raise ParseError("加工前不良的物料暂不支持单件回退") + mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b, ftest__is_ok=False, ftest__defect_main=defect) + if mlogbws.count() != count: + raise ParseError("日志与加工前不良明细数量不一致,操作失败") + for item in mlogbws: + Wpr.change_or_new(wpr=item.wpr, wm=wm) mlog.submit_time = None mlog.submit_user = None