feat: wpr增加wpr_from的相关逻辑
This commit is contained in:
parent
da084e21cb
commit
1040e55a48
|
@ -327,7 +327,10 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
||||||
if item.wpr:
|
if item.wpr:
|
||||||
Wpr.change_or_new(wpr=item.wpr, wm=wm, ftest=item.ftest)
|
Wpr.change_or_new(wpr=item.wpr, wm=wm, ftest=item.ftest)
|
||||||
else:
|
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.wpr = wpr
|
||||||
item.save()
|
item.save()
|
||||||
|
|
||||||
|
@ -495,12 +498,12 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
||||||
if mlogbws.count() != mi_count:
|
if mlogbws.count() != mi_count:
|
||||||
raise ParseError("日志与明细数量不一致,操作失败")
|
raise ParseError("日志与明细数量不一致,操作失败")
|
||||||
for item in mlogbws:
|
for item in mlogbws:
|
||||||
if item.wpr:
|
# if item.wpr:
|
||||||
Wpr.change_or_new(wpr=item.wpr, wm=wm)
|
Wpr.change_or_new(wpr=item.wpr, wm=wm)
|
||||||
else:
|
# else:
|
||||||
wpr = Wpr.change_or_new(number=item.number, wm=wm)
|
# wpr = Wpr.change_or_new(number=item.number, wm=wm)
|
||||||
item.wpr = wpr
|
# item.wpr = wpr
|
||||||
item.save()
|
# item.save()
|
||||||
|
|
||||||
# 针对加工前不良的暂时额外处理
|
# 针对加工前不良的暂时额外处理
|
||||||
if stored_notok:
|
if stored_notok:
|
||||||
|
|
|
@ -25,7 +25,7 @@ class Wpr(BaseModel):
|
||||||
wpr_from = models.ForeignKey("self", verbose_name="来源于", on_delete=models.CASCADE, null=True, blank=True)
|
wpr_from = models.ForeignKey("self", verbose_name="来源于", on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
|
||||||
@classmethod
|
@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:
|
if wpr is None and number is None:
|
||||||
raise ParseError("id和number不能同时为空")
|
raise ParseError("id和number不能同时为空")
|
||||||
if mb and wm:
|
if mb and wm:
|
||||||
|
@ -37,19 +37,18 @@ class Wpr(BaseModel):
|
||||||
wpr.delete()
|
wpr.delete()
|
||||||
return
|
return
|
||||||
elif number:
|
elif number:
|
||||||
wpr_from = None
|
|
||||||
try:
|
try:
|
||||||
ins = cls.objects.get(number=number)
|
ins = cls.objects.get(number=number)
|
||||||
if ins.wm is None and ins.mb is None:
|
if ins.wm is None and ins.mb is None:
|
||||||
if ins.version > 1: # 说明被复用了
|
if ins.version > 1: # 说明被复用了
|
||||||
wpr_from = ins
|
if wpr_from is None:
|
||||||
|
wpr_from = ins
|
||||||
else:
|
else:
|
||||||
raise ParseError(f"该物料编号{number}-已存在不可使用")
|
raise ParseError(f"该物料编号{number}-已存在不可使用")
|
||||||
else:
|
else:
|
||||||
raise ParseError(f"该物料编号{number}-已存在不可使用")
|
raise ParseError(f"该物料编号{number}-已存在不可使用")
|
||||||
except cls.DoesNotExist:
|
except cls.DoesNotExist:
|
||||||
ins = cls(number=number)
|
ins = cls(number=number)
|
||||||
ins.wpr_from = wpr_from
|
|
||||||
ins.version = -1
|
ins.version = -1
|
||||||
|
|
||||||
if old_mb and ins.mb != old_mb:
|
if old_mb and ins.mb != old_mb:
|
||||||
|
@ -60,6 +59,7 @@ class Wpr(BaseModel):
|
||||||
if number:
|
if number:
|
||||||
ins.number = number
|
ins.number = number
|
||||||
|
|
||||||
|
ins.wpr_from = wpr_from
|
||||||
ins.mb = mb
|
ins.mb = mb
|
||||||
if mb:
|
if mb:
|
||||||
ins.material = mb.material
|
ins.material = mb.material
|
||||||
|
|
Loading…
Reference in New Issue