From f88689cc1e61306a600719fc198ed73332acfb28 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 22 Jan 2025 13:51:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0addto=5Fwpr=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E9=85=8D=E7=BD=AE=E4=BB=A5=E5=9C=A8wpr=E8=A1=A8?= =?UTF-8?q?=E9=87=8C=E6=B7=BB=E5=8A=A0=E9=A2=9D=E5=A4=96=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/qm/migrations/0041_auto_20250122_1347.py | 23 +++++++++++++++++++ apps/qm/models.py | 2 ++ apps/qm/serializers.py | 2 +- apps/wpmw/migrations/0002_wpr_oinfo.py | 18 +++++++++++++++ apps/wpmw/models.py | 13 +++++++++-- 5 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 apps/qm/migrations/0041_auto_20250122_1347.py create mode 100644 apps/wpmw/migrations/0002_wpr_oinfo.py diff --git a/apps/qm/migrations/0041_auto_20250122_1347.py b/apps/qm/migrations/0041_auto_20250122_1347.py new file mode 100644 index 00000000..596f7ee2 --- /dev/null +++ b/apps/qm/migrations/0041_auto_20250122_1347.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.12 on 2025-01-22 05:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('qm', '0040_quastat_rate_pass_t'), + ] + + operations = [ + migrations.AddField( + model_name='ftestitem', + name='addto_wpr', + field=models.BooleanField(default=False, verbose_name='加入WPR作为信息'), + ), + migrations.AddField( + model_name='qcttestitem', + name='addto_wpr', + field=models.BooleanField(default=False, verbose_name='加入WPR作为信息'), + ), + ] diff --git a/apps/qm/models.py b/apps/qm/models.py index c8cc4a67..5d2db1a5 100644 --- a/apps/qm/models.py +++ b/apps/qm/models.py @@ -170,6 +170,7 @@ class Qct(CommonAModel): class QctTestItem(BaseModel): qct = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE, related_name="qcttestitem") testitem = models.ForeignKey(TestItem, verbose_name="检测项", on_delete=models.CASCADE, null=True, blank=True) + addto_wpr = models.BooleanField('加入WPR作为信息', default=False) note = models.TextField('备注', null=True, blank=True) sort = models.FloatField('排序', default=1) @@ -315,6 +316,7 @@ class FtestItem(BaseModel): TestItem, verbose_name='质检项目', on_delete=models.CASCADE) test_user = models.ForeignKey(User, verbose_name='操作人', on_delete=models.CASCADE, null=True, blank=True) test_val = models.FloatField('测量值', null=True, blank=True) + addto_wpr = models.BooleanField('加入WPR作为信息', default=False) check_val = models.FloatField('专检测量值', null=True, blank=True) test_val_json = models.JSONField('测量值', null=True, blank=True) check_val_json = models.JSONField('专检测量值', null=True, blank=True) diff --git a/apps/qm/serializers.py b/apps/qm/serializers.py index 231f8e58..a57c6a45 100644 --- a/apps/qm/serializers.py +++ b/apps/qm/serializers.py @@ -306,7 +306,7 @@ class FtestItemProcessSerializer(CustomModelSerializer): source='testitem.description', read_only=True) class Meta: model = FtestItem - fields = ["id", "testitem", "test_user", "test_val_json", "testitem_name", "testitem_description"] + fields = ["id", "testitem", "test_user", "test_val_json", "testitem_name", "testitem_description", "addto_wpr"] class FtestProcessSerializer(CustomModelSerializer): test_user_name = serializers.CharField( diff --git a/apps/wpmw/migrations/0002_wpr_oinfo.py b/apps/wpmw/migrations/0002_wpr_oinfo.py new file mode 100644 index 00000000..85ab1187 --- /dev/null +++ b/apps/wpmw/migrations/0002_wpr_oinfo.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2025-01-22 05:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wpmw', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='wpr', + name='oinfo', + field=models.JSONField(blank=True, default=dict, verbose_name='其他信息'), + ), + ] diff --git a/apps/wpmw/models.py b/apps/wpmw/models.py index f6c762ff..91ed67c6 100644 --- a/apps/wpmw/models.py +++ b/apps/wpmw/models.py @@ -1,6 +1,6 @@ from django.db import models -from apps.qm.models import FtestDefect +from apps.qm.models import FtestDefect, FtestItem from apps.utils.models import BaseModel from apps.mtm.models import Material from rest_framework.exceptions import ParseError @@ -19,6 +19,7 @@ class Wpr(BaseModel): mb = models.ForeignKey("inm.materialbatch", verbose_name="仓库物料", on_delete=models.CASCADE, null=True, blank=True) wm = models.ForeignKey("wpm.wmaterial", verbose_name="车间物料", on_delete=models.CASCADE, null=True, blank=True) + oinfo = models.JSONField(verbose_name="其他信息", default=dict, blank=True) @classmethod def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None): @@ -57,10 +58,18 @@ class Wpr(BaseModel): if wm.defect: WprDefect.objects.create(wpr=ins, defect=wm.defect, is_main=True) ins.save() - if ftest: # 通过检验变更其缺陷项 + if ftest: + # 通过检验变更其缺陷项 WprDefect.objects.filter(wpr=ins).delete() for ftestdefect in FtestDefect.objects.filter(ftest=ftest, has=True): WprDefect.objects.create(wpr=ins, defect=ftestdefect.defect, is_main=ftestdefect.is_main) + # 携带某些检测信息 + oinfo = {} + for ftestitem in FtestItem.objects.filter(ftest=ftest, addto_wpr=True): + if ftestitem.test_val_json: + oinfo[ftestitem.id] = {"name": ftestitem.testitem.name, "val": ftestitem.test_val_json} + ins.oinfo = ins.oinfo.update(oinfo) if ins.oinfo else oinfo + ins.save() return ins @classmethod