From baef2c586a640f0ddcad10afe19dc22ba2128aef Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 16 Jan 2025 10:01:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20testitem=E6=94=AF=E6=8C=81=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/qm/migrations/0038_auto_20250116_1000.py | 30 +++++++++++++++++++ apps/qm/models.py | 10 +++++-- apps/qm/serializers.py | 6 ++++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 apps/qm/migrations/0038_auto_20250116_1000.py diff --git a/apps/qm/migrations/0038_auto_20250116_1000.py b/apps/qm/migrations/0038_auto_20250116_1000.py new file mode 100644 index 00000000..c6fd43ea --- /dev/null +++ b/apps/qm/migrations/0038_auto_20250116_1000.py @@ -0,0 +1,30 @@ +# Generated by Django 3.2.12 on 2025-01-16 02:00 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('mtm', '0049_auto_20250107_0949'), + ('qm', '0037_auto_20250115_1511'), + ] + + operations = [ + migrations.AddField( + model_name='testitem', + name='process', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='mtm.process', verbose_name='工序'), + ), + migrations.AddField( + model_name='testitem', + name='type', + field=models.PositiveSmallIntegerField(choices=[(10, '检测'), (20, '操作')], default=10, verbose_name='类型'), + ), + migrations.AlterField( + model_name='testitem', + name='sort', + field=models.FloatField(default=1, verbose_name='排序'), + ), + ] diff --git a/apps/qm/models.py b/apps/qm/models.py index c71933bc..989a3dd1 100644 --- a/apps/qm/models.py +++ b/apps/qm/models.py @@ -1,7 +1,7 @@ from django.db import models from apps.system.models import CommonAModel, User from apps.utils.models import CommonBDModel, BaseModel -from apps.mtm.models import Material, Shift +from apps.mtm.models import Material, Shift, Process from apps.em.models import Equipment from apps.wpm.models import SfLog, WMaterial from django.utils.translation import gettext_lazy as _ @@ -112,6 +112,11 @@ class TestItem(CommonAModel): """ 检测项目 """ + T_TEST = 10 + T_OPER = 20 + type = models.PositiveSmallIntegerField('类型', choices=((T_TEST, "检测"), (T_OPER, "操作")), + default=T_TEST) + process = models.ForeignKey(Process, verbose_name="工序", on_delete=models.SET_NULL, null=True, blank=True) name = models.CharField('名称', max_length=100) field_type = models.CharField('字段类型', max_length=20, default='input-number', choices=( ('input-int', '整数输入'), @@ -124,7 +129,7 @@ class TestItem(CommonAModel): choices = models.JSONField('选项', default=list, blank=True) tags = models.JSONField('检测类型', default=list, blank=True) mcate_tags = models.JSONField('物料系列标签', default=list, blank=True) - sort = models.PositiveSmallIntegerField('排序', default=1) + sort = models.FloatField('排序', default=1) description = models.TextField('描述', default='') readonly = models.BooleanField('只读', default=False) formula = models.TextField('计算公式', null=True, blank=True) @@ -143,7 +148,6 @@ QC_TRACE_CHOICES = ( ) class Qct(CommonAModel): - # 检测模板 name = models.CharField(max_length=50, verbose_name="名称") number = models.CharField(max_length=20, verbose_name="编号") tags = models.JSONField('检测类型', default=list, blank=True) diff --git a/apps/qm/serializers.py b/apps/qm/serializers.py index 50c8fb6d..64c98d2b 100644 --- a/apps/qm/serializers.py +++ b/apps/qm/serializers.py @@ -47,6 +47,12 @@ class QctTestItemSerializer(CustomModelSerializer): model = QctTestItem fields = '__all__' + def validate(self, attrs): + testitem:TestItem = attrs.get("testitem") + if testitem.type != TestItem.T_TEST: + raise ParseError("只可选择检测项") + return attrs + class QctDefectSerializer(CustomModelSerializer): defect_name = serializers.CharField(source='defect.name', read_only=True) class Meta: