From 1040e55a48bef82d88a79ea84940073cada5c224 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 19 Mar 2025 14:08:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20wpr=E5=A2=9E=E5=8A=A0wpr=5Ffrom?= =?UTF-8?q?=E7=9A=84=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/services.py | 17 ++++++++++------- apps/wpmw/models.py | 8 ++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/wpm/services.py b/apps/wpm/services.py index 7e17bbd4..91076397 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -327,7 +327,10 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): if item.wpr: Wpr.change_or_new(wpr=item.wpr, wm=wm, ftest=item.ftest) else: - wpr = Wpr.change_or_new(number=item.number, wm=wm, ftest=item.ftest) + wpr_from = None + if item.mlogbw_from: + wpr_from = item.mlogbw_from.wpr + wpr = Wpr.change_or_new(number=item.number, wm=wm, ftest=item.ftest, wpr_from=wpr_from) item.wpr = wpr item.save() @@ -495,12 +498,12 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): if mlogbws.count() != mi_count: 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 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: diff --git a/apps/wpmw/models.py b/apps/wpmw/models.py index 5ae27ab0..7032878d 100644 --- a/apps/wpmw/models.py +++ b/apps/wpmw/models.py @@ -25,7 +25,7 @@ class Wpr(BaseModel): wpr_from = models.ForeignKey("self", verbose_name="来源于", on_delete=models.CASCADE, null=True, blank=True) @classmethod - def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None): + def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None, wpr_from=None): if wpr is None and number is None: raise ParseError("id和number不能同时为空") if mb and wm: @@ -37,19 +37,18 @@ class Wpr(BaseModel): wpr.delete() return elif number: - wpr_from = None try: ins = cls.objects.get(number=number) if ins.wm is None and ins.mb is None: if ins.version > 1: # 说明被复用了 - wpr_from = ins + if wpr_from is None: + wpr_from = ins else: raise ParseError(f"该物料编号{number}-已存在不可使用") else: raise ParseError(f"该物料编号{number}-已存在不可使用") except cls.DoesNotExist: ins = cls(number=number) - ins.wpr_from = wpr_from ins.version = -1 if old_mb and ins.mb != old_mb: @@ -60,6 +59,7 @@ class Wpr(BaseModel): if number: ins.number = number + ins.wpr_from = wpr_from ins.mb = mb if mb: ins.material = mb.material