diff --git a/apps/wpm/migrations/0090_mlogbdefect_floor.py b/apps/wpm/migrations/0090_mlogbdefect_floor.py new file mode 100644 index 00000000..3add2b32 --- /dev/null +++ b/apps/wpm/migrations/0090_mlogbdefect_floor.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2025-03-03 06:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wpm', '0089_mlogbdefect'), + ] + + operations = [ + migrations.AddField( + model_name='mlogbdefect', + name='floor', + field=models.IntegerField(blank=True, null=True, verbose_name='层数'), + ), + ] diff --git a/apps/wpm/models.py b/apps/wpm/models.py index 9ba8cb03..322c959e 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -367,6 +367,7 @@ class Mlogb(BaseModel): class MlogbDefect(BaseModel): mlogb = models.ForeignKey(Mlogb, verbose_name='生产记录', on_delete=models.CASCADE) defect = models.ForeignKey("qm.Defect", verbose_name='缺陷', on_delete=models.CASCADE) + floor = models.IntegerField("层数", null=True, blank=True) count = models.PositiveIntegerField('数量', default=0) class Mlogbw(BaseModel): diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 0ba2f91b..5ed2f485 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -265,7 +265,8 @@ class MlogbDefectSerializer(CustomModelSerializer): defect_name = serializers.CharField(source="defect.name", read_only=True) class Meta: model = MlogbDefect - fields = ["id", "defect_name", "count", "mlogb", "defect"] + fields = ["id", "defect_name", "count", "mlogb", "defect", "floor"] + read_only_fields = EXCLUDE_FIELDS_BASE + ["mlogb"] class MlogbDetailSerializer(CustomModelSerializer): @@ -716,7 +717,7 @@ class MlogbOutUpdateSerializer(CustomModelSerializer): mlogbdefect_new = [item for item in mlogbdefect if item["count"] > 0] for item in mlogbdefect_new: defect:Defect = item["defect"] - Mlogb.objects.create(mlogb=ins, defect=defect, count=item["count"]) + MlogbDefect.objects.create(mlogb=ins, **item) if defect.cate == Defect.DEFECT_NOTOK: count_notok +=1 ins.count_notok = count_notok @@ -736,7 +737,7 @@ class MlogbOutUpdateSerializer(CustomModelSerializer): md_ids = [] for item in mlogbdefect: defect = item["defect"] - insb, _ = MlogbDefect.objects.get_or_create(mlogb=ins, defect=defect) + insb, _ = MlogbDefect.objects.get_or_create(mlogb=ins, defect=defect, floor=item.get('floor', None)) insb.count = item["count"] insb.save(update_fields=["count"]) if defect.cate == Defect.DEFECT_NOTOK: