feat: wpmw number允许重复

This commit is contained in:
caoqianming 2025-03-12 16:10:44 +08:00
parent 64ca8b97ad
commit c0ffb175a9
2 changed files with 37 additions and 7 deletions

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.12 on 2025-03-12 08:10
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wpmw', '0003_alter_wpr_state'),
]
operations = [
migrations.AddField(
model_name='wpr',
name='version',
field=models.PositiveIntegerField(default=9999, verbose_name='版本号'),
),
migrations.AlterField(
model_name='wpr',
name='number',
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='编号'),
),
]

View File

@ -12,7 +12,8 @@ class Wpr(BaseModel):
TN: 动态产品
"""
number = models.CharField("编号", max_length=50, unique=True, null=True, blank=True)
number = models.CharField("编号", max_length=50, null=True, blank=True)
version = models.PositiveIntegerField("版本号", default=9999)
state = models.PositiveSmallIntegerField('状态', default=10, choices=WmStateOption.choices)
material = models.ForeignKey(Material, verbose_name="当前物料形态", on_delete=models.CASCADE)
defects = models.ManyToManyField("qm.defect", through="wpmw.wprdefect", verbose_name="缺陷项")
@ -30,13 +31,18 @@ class Wpr(BaseModel):
raise ParseError("所属仓库批次和车间批次不可同时存在")
if wpr:
ins = wpr
ins:Wpr = wpr
if wpr and mb is None and wm is None and ins.version <=1:
wpr.delete()
return
elif number:
try:
ins = cls.objects.get(number=number)
raise ParseError(f"该物料编号{number}-已存在不可使用")
except cls.DoesNotExist:
ins = cls(number=number)
# try:
# ins = cls.objects.get(number=number)
# raise ParseError(f"该物料编号{number}-已存在不可使用")
# except cls.DoesNotExist:
# 创建
ins = cls(number=number)
ins.version = 0
if old_mb and ins.mb != old_mb:
raise ParseError(f"请检查-{ins.number}-所属仓库批次")
@ -57,6 +63,7 @@ class Wpr(BaseModel):
WprDefect.objects.filter(wpr=ins).delete()
if wm.defect:
WprDefect.objects.create(wpr=ins, defect=wm.defect, is_main=True)
ins.version = ins.version + 1
ins.save()
if ftest:
# 通过检验变更其缺陷项