diff --git a/apps/wpmw/migrations/0004_auto_20250312_1610.py b/apps/wpmw/migrations/0004_auto_20250312_1610.py new file mode 100644 index 00000000..5d7353f8 --- /dev/null +++ b/apps/wpmw/migrations/0004_auto_20250312_1610.py @@ -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='编号'), + ), + ] diff --git a/apps/wpmw/models.py b/apps/wpmw/models.py index c2e833fd..63920dd8 100644 --- a/apps/wpmw/models.py +++ b/apps/wpmw/models.py @@ -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: # 通过检验变更其缺陷项