feat: testitem支持操作项

This commit is contained in:
caoqianming 2025-01-16 10:01:00 +08:00
parent 6ea24b6b1c
commit baef2c586a
3 changed files with 43 additions and 3 deletions

View File

@ -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='排序'),
),
]

View File

@ -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)

View File

@ -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: