feat: qm添加字段
This commit is contained in:
parent
b2abf0128a
commit
b8dceb03a3
|
@ -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='检测类型'),
|
||||
),
|
||||
]
|
|
@ -5,21 +5,28 @@ from apps.mtm.models import Material, Mgroup, Team
|
|||
from apps.wpm.models import SfLog
|
||||
|
||||
|
||||
FTEST_TYPE_CHOICES = (
|
||||
('first', '首件检验'),
|
||||
('prod', '成品检验')
|
||||
)
|
||||
class TestItem(CommonAModel):
|
||||
"""
|
||||
检验项目
|
||||
检测项目
|
||||
"""
|
||||
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)
|
||||
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)
|
||||
description = models.TextField('描述', default='')
|
||||
|
||||
class Meta:
|
||||
ordering = ['sort', '-create_time']
|
||||
|
||||
# Create your models here.
|
||||
|
||||
|
||||
class QuaStat(CommonBDModel):
|
||||
"""
|
||||
|
@ -41,6 +48,7 @@ class FtestWork(CommonBDModel):
|
|||
"""
|
||||
检验工作
|
||||
"""
|
||||
type = models.CharField('检验类型', max_length=20, choices=FTEST_TYPE_CHOICES, default='prod')
|
||||
test_date = models.DateField('检验日期')
|
||||
material = models.ForeignKey(
|
||||
Material, verbose_name='产品', on_delete=models.CASCADE)
|
||||
|
@ -48,16 +56,13 @@ class FtestWork(CommonBDModel):
|
|||
count = models.IntegerField('总数量')
|
||||
count_sampling = models.IntegerField('抽检数量', default=0)
|
||||
count_ok = models.IntegerField('合格数量', default=0)
|
||||
count_notok = models.IntegerField('不合格数量', default=0)
|
||||
|
||||
|
||||
class Ftest(CommonBDModel):
|
||||
"""
|
||||
检验记录
|
||||
"""
|
||||
FTEST_TYPE_CHOICES = (
|
||||
('first', '首件检验'),
|
||||
('prod', '成品检验')
|
||||
)
|
||||
type = models.CharField('检验类型', max_length=20, choices=FTEST_TYPE_CHOICES)
|
||||
test_date = models.DateField('检验日期')
|
||||
test_numer = models.CharField('检测编号', max_length=20, default='')
|
||||
|
@ -85,8 +90,10 @@ class FtestItem(BaseModel):
|
|||
Ftest, verbose_name='关联检验', on_delete=models.CASCADE)
|
||||
testitem = models.ForeignKey(
|
||||
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)
|
||||
test_val_json = models.JSONField('测量值', null=True, blank=True)
|
||||
check_val_json = models.JSONField('专检测量值', null=True, blank=True)
|
||||
|
||||
|
||||
class Ptest(CommonAModel):
|
||||
|
|
|
@ -97,9 +97,9 @@ class FtestSerializer(CustomModelSerializer):
|
|||
read_only_fields = EXCLUDE_FIELDS
|
||||
|
||||
def validate(self, attrs):
|
||||
ftest_work = attrs.get('ftest_work', None)
|
||||
ftest_work: FtestWork = attrs.get('ftest_work', None)
|
||||
if ftest_work:
|
||||
attrs['type'] = 'prod' # 带检验工作的标记为成品检验
|
||||
attrs['type'] = ftest_work.type
|
||||
return attrs
|
||||
|
||||
def create(self, validated_data):
|
||||
|
|
|
@ -25,6 +25,7 @@ class TestItemViewSet(CustomModelViewSet):
|
|||
queryset = TestItem.objects.all()
|
||||
serializer_class = TestItemSerializer
|
||||
filterset_class = TestItemFilter
|
||||
search_fields = ['tags', 'name', 'number']
|
||||
ordering = ['id']
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue