fix: 增加检测模板功能字段 bug

This commit is contained in:
caoqianming 2024-12-19 11:04:16 +08:00
parent e7c08dc16c
commit 1647b2f06e
4 changed files with 19 additions and 14 deletions

View File

@ -1,5 +1,6 @@
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from apps.qm.models import QuaStat, TestItem, FtestWork from apps.qm.models import QuaStat, TestItem, FtestWork, Qct
from apps.utils.filters import MyJsonListFilter
class QuaStatFilter(filters.FilterSet): class QuaStatFilter(filters.FilterSet):
@ -14,6 +15,12 @@ class QuaStatFilter(filters.FilterSet):
"sflog__end_time": ["day", "month", "year", "lt"], "sflog__end_time": ["day", "month", "year", "lt"],
} }
class QctFilter(filters.FilterSet):
tags = MyJsonListFilter(label="tags查询,分隔")
class Meta:
model = Qct
fields = ["testitems", "defects"]
class TestItemFilter(filters.FilterSet): class TestItemFilter(filters.FilterSet):
tags__contains = filters.CharFilter(field_name='tags', lookup_expr='contains') tags__contains = filters.CharFilter(field_name='tags', lookup_expr='contains')

View File

@ -1,4 +1,4 @@
# Generated by Django 3.2.12 on 2024-12-19 02:06 # Generated by Django 3.2.12 on 2024-12-19 02:34
from django.conf import settings from django.conf import settings
from django.db import migrations, models from django.db import migrations, models
@ -9,8 +9,8 @@ import django.utils.timezone
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('mtm', '0048_auto_20241218_1431'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL), migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('mtm', '0048_auto_20241218_1431'),
('qm', '0028_defect'), ('qm', '0028_defect'),
] ]
@ -40,7 +40,7 @@ class Migration(migrations.Migration):
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('tracing', models.CharField(choices=[('test', '检测项'), ('defect', '缺陷项')], default='test', help_text="(('test', '检测项'), ('defect', '缺陷项'))", max_length=20, verbose_name='追溯层级')), ('tracing', models.CharField(choices=[('test', '检测项'), ('defect', '缺陷项')], default='test', help_text="(('test', '检测项'), ('defect', '缺陷项'))", max_length=20, verbose_name='追溯层级')),
('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mtm.material', verbose_name='物料')), ('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mtm.material', verbose_name='物料')),
('qc', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.qct', verbose_name='质检模板')), ('qct', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.qct', verbose_name='质检模板')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -57,7 +57,7 @@ class Migration(migrations.Migration):
('rule_expression', models.TextField(blank=True, null=True, verbose_name='判定表达式')), ('rule_expression', models.TextField(blank=True, null=True, verbose_name='判定表达式')),
('sort', models.FloatField(default=1, verbose_name='排序')), ('sort', models.FloatField(default=1, verbose_name='排序')),
('defect', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qm.defect', verbose_name='缺陷项')), ('defect', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qm.defect', verbose_name='缺陷项')),
('qc', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.qct', verbose_name='质检模板')), ('qct', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='qm.qct', verbose_name='质检模板')),
('testitem', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qm.testitem', verbose_name='检测项')), ('testitem', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qm.testitem', verbose_name='检测项')),
], ],
options={ options={

View File

@ -143,7 +143,7 @@ class Qct(CommonAModel):
materials = models.ManyToManyField(Material, verbose_name="物料", blank=True, through='qm.qctmat') materials = models.ManyToManyField(Material, verbose_name="物料", blank=True, through='qm.qctmat')
class QctItem(BaseModel): class QctItem(BaseModel):
qc = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE) qct = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE)
testitem = models.ForeignKey(TestItem, verbose_name="检测项", on_delete=models.CASCADE, null=True, blank=True) testitem = models.ForeignKey(TestItem, verbose_name="检测项", on_delete=models.CASCADE, null=True, blank=True)
note = models.TextField('备注', null=True, blank=True) note = models.TextField('备注', null=True, blank=True)
rule_expression = models.TextField('判定表达式', null=True, blank=True) rule_expression = models.TextField('判定表达式', null=True, blank=True)
@ -151,7 +151,7 @@ class QctItem(BaseModel):
sort = models.FloatField('排序', default=1) sort = models.FloatField('排序', default=1)
class QctMat(BaseModel): class QctMat(BaseModel):
qc = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE) qct = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE)
material = models.ForeignKey(Material, verbose_name="物料", on_delete=models.CASCADE) material = models.ForeignKey(Material, verbose_name="物料", on_delete=models.CASCADE)
tracing = models.CharField('追溯层级', default=QC_T, choices=QC_TRACE_CHOICES, max_length=20, help_text=str(QC_TRACE_CHOICES)) tracing = models.CharField('追溯层级', default=QC_T, choices=QC_TRACE_CHOICES, max_length=20, help_text=str(QC_TRACE_CHOICES))

View File

@ -14,7 +14,7 @@ import datetime
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from apps.wpm.models import SfLog from apps.wpm.models import SfLog
from apps.qm.filters import QuaStatFilter, TestItemFilter, FtestWorkFilter from apps.qm.filters import QuaStatFilter, TestItemFilter, FtestWorkFilter, QctFilter
from django.db import transaction from django.db import transaction
from apps.qm.models import NotOkOption, Defect, Qct, QctItem, QctMat from apps.qm.models import NotOkOption, Defect, Qct, QctItem, QctMat
from apps.qm.services import ftestwork_submit from apps.qm.services import ftestwork_submit
@ -43,12 +43,11 @@ class QctViewSet(CustomModelViewSet):
queryset = Qct.objects.all() queryset = Qct.objects.all()
serializer_class = QctSerializer serializer_class = QctSerializer
retrieve_serializer_class = QctDetailSerializer retrieve_serializer_class = QctDetailSerializer
filterset_fields = ["tags", "testitems", "defects"] filterset_class = QctFilter
search_fields = ["name", "number"] search_fields = ["name", "number"]
class QctItemViewSet(CustomModelViewSet): class QctItemViewSet(CustomModelViewSet):
""" """检测模板项
list: 检测模板项
检测模板项 检测模板项
""" """
@ -56,11 +55,10 @@ class QctItemViewSet(CustomModelViewSet):
queryset = QctItem.objects.all() queryset = QctItem.objects.all()
serializer_class = QctItemSerializer serializer_class = QctItemSerializer
filterset_fields = ["qct", "testitem", "defect"] filterset_fields = ["qct", "testitem", "defect"]
ordering = ["qc", "sort"] ordering = ["qct", "sort"]
class QctMatViewSet(CustomModelViewSet): class QctMatViewSet(CustomModelViewSet):
""" """检测物料
list: 检测物料
检测物料 检测物料
""" """