feat: qm添加字段

This commit is contained in:
caoqianming 2024-08-07 09:46:17 +08:00
parent 06d2c5a096
commit 549ef24c70
4 changed files with 77 additions and 11 deletions

View File

@ -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='检测类型'),
),
]

View File

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

View File

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

View File

@ -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']