feat: qm添加字段
This commit is contained in:
parent
06d2c5a096
commit
549ef24c70
|
@ -0,0 +1,58 @@
|
||||||
|
# Generated by Django 3.2.12 on 2024-08-07 01:45
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('qm', '0015_ftestwork_count_ok'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ftestitem',
|
||||||
|
name='check_val_json',
|
||||||
|
field=models.JSONField(blank=True, null=True, verbose_name='专检测量值'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ftestitem',
|
||||||
|
name='test_val_json',
|
||||||
|
field=models.JSONField(blank=True, null=True, verbose_name='测量值'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ftestwork',
|
||||||
|
name='count_notok',
|
||||||
|
field=models.IntegerField(default=0, verbose_name='不合格数量'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ftestwork',
|
||||||
|
name='type',
|
||||||
|
field=models.CharField(choices=[('first', '首件检验'), ('prod', '成品检验')], default='prod', max_length=20, verbose_name='检验类型'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='testitem',
|
||||||
|
name='choices',
|
||||||
|
field=models.JSONField(blank=True, default=list, verbose_name='选项'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='testitem',
|
||||||
|
name='field_type',
|
||||||
|
field=models.CharField(choices=[('input-number', '数字输入'), ('input-text', '文本输入'), ('select', '单选'), ('selects', '多选')], default='float', max_length=20, verbose_name='字段类型'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='testitem',
|
||||||
|
name='mcate_tags',
|
||||||
|
field=models.JSONField(blank=True, default=list, verbose_name='物料系列标签'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='ftestitem',
|
||||||
|
name='test_val',
|
||||||
|
field=models.FloatField(blank=True, null=True, verbose_name='测量值'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='testitem',
|
||||||
|
name='tags',
|
||||||
|
field=models.JSONField(blank=True, default=list, verbose_name='检测类型'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -41,21 +41,28 @@ class NotOkOption(models.TextChoices):
|
||||||
|
|
||||||
wz = "wz", _("未知")
|
wz = "wz", _("未知")
|
||||||
|
|
||||||
|
FTEST_TYPE_CHOICES = (
|
||||||
|
('first', '首件检验'),
|
||||||
|
('prod', '成品检验')
|
||||||
|
)
|
||||||
class TestItem(CommonAModel):
|
class TestItem(CommonAModel):
|
||||||
"""
|
"""
|
||||||
检验项目
|
检测项目
|
||||||
"""
|
"""
|
||||||
name = models.CharField('名称', max_length=100)
|
name = models.CharField('名称', max_length=100)
|
||||||
|
field_type = models.CharField('字段类型', max_length=20, default='float', choices=(
|
||||||
|
('input-number', '数字输入'), ('input-text', '文本输入'), ('select', '单选'), ('selects', '多选')
|
||||||
|
))
|
||||||
number = models.CharField('编号', max_length=20, default='', blank=True)
|
number = models.CharField('编号', max_length=20, default='', blank=True)
|
||||||
tags = models.JSONField('标签', default=list, blank=True)
|
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.PositiveSmallIntegerField('排序', default=1)
|
||||||
description = models.TextField('描述', default='')
|
description = models.TextField('描述', default='')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['sort', '-create_time']
|
ordering = ['sort', '-create_time']
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
|
|
||||||
|
|
||||||
class QuaStat(CommonBDModel):
|
class QuaStat(CommonBDModel):
|
||||||
"""
|
"""
|
||||||
|
@ -77,6 +84,7 @@ class FtestWork(CommonBDModel):
|
||||||
"""
|
"""
|
||||||
检验工作
|
检验工作
|
||||||
"""
|
"""
|
||||||
|
type = models.CharField('检验类型', max_length=20, choices=FTEST_TYPE_CHOICES, default='prod')
|
||||||
test_date = models.DateField('检验日期')
|
test_date = models.DateField('检验日期')
|
||||||
material = models.ForeignKey(
|
material = models.ForeignKey(
|
||||||
Material, verbose_name='产品', on_delete=models.CASCADE)
|
Material, verbose_name='产品', on_delete=models.CASCADE)
|
||||||
|
@ -84,16 +92,13 @@ class FtestWork(CommonBDModel):
|
||||||
count = models.IntegerField('总数量')
|
count = models.IntegerField('总数量')
|
||||||
count_sampling = models.IntegerField('抽检数量', default=0)
|
count_sampling = models.IntegerField('抽检数量', default=0)
|
||||||
count_ok = models.IntegerField('合格数量', default=0)
|
count_ok = models.IntegerField('合格数量', default=0)
|
||||||
|
count_notok = models.IntegerField('不合格数量', default=0)
|
||||||
|
|
||||||
|
|
||||||
class Ftest(CommonBDModel):
|
class Ftest(CommonBDModel):
|
||||||
"""
|
"""
|
||||||
检验记录
|
检验记录
|
||||||
"""
|
"""
|
||||||
FTEST_TYPE_CHOICES = (
|
|
||||||
('first', '首件检验'),
|
|
||||||
('prod', '成品检验')
|
|
||||||
)
|
|
||||||
type = models.CharField('检验类型', max_length=20, choices=FTEST_TYPE_CHOICES)
|
type = models.CharField('检验类型', max_length=20, choices=FTEST_TYPE_CHOICES)
|
||||||
test_date = models.DateField('检验日期')
|
test_date = models.DateField('检验日期')
|
||||||
test_numer = models.CharField('检测编号', max_length=20, default='')
|
test_numer = models.CharField('检测编号', max_length=20, default='')
|
||||||
|
@ -121,8 +126,10 @@ class FtestItem(BaseModel):
|
||||||
Ftest, verbose_name='关联检验', on_delete=models.CASCADE)
|
Ftest, verbose_name='关联检验', on_delete=models.CASCADE)
|
||||||
testitem = models.ForeignKey(
|
testitem = models.ForeignKey(
|
||||||
TestItem, verbose_name='质检项目', on_delete=models.CASCADE)
|
TestItem, verbose_name='质检项目', on_delete=models.CASCADE)
|
||||||
test_val = models.FloatField('测量值', default=0, blank=True)
|
test_val = models.FloatField('测量值', null=True, blank=True)
|
||||||
check_val = models.FloatField('专检测量值', null=True, blank=True)
|
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)
|
||||||
|
|
||||||
|
|
||||||
class Ptest(CommonAModel):
|
class Ptest(CommonAModel):
|
||||||
|
|
|
@ -97,9 +97,9 @@ class FtestSerializer(CustomModelSerializer):
|
||||||
read_only_fields = EXCLUDE_FIELDS
|
read_only_fields = EXCLUDE_FIELDS
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
ftest_work = attrs.get('ftest_work', None)
|
ftest_work: FtestWork = attrs.get('ftest_work', None)
|
||||||
if ftest_work:
|
if ftest_work:
|
||||||
attrs['type'] = 'prod' # 带检验工作的标记为成品检验
|
attrs['type'] = ftest_work.type
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
|
|
|
@ -39,6 +39,7 @@ class TestItemViewSet(CustomModelViewSet):
|
||||||
queryset = TestItem.objects.all()
|
queryset = TestItem.objects.all()
|
||||||
serializer_class = TestItemSerializer
|
serializer_class = TestItemSerializer
|
||||||
filterset_class = TestItemFilter
|
filterset_class = TestItemFilter
|
||||||
|
search_fields = ['tags', 'name', 'number']
|
||||||
ordering = ['id']
|
ordering = ['id']
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue