feat: 增加不合格项接口

This commit is contained in:
caoqianming 2024-07-22 17:58:21 +08:00
parent ec0df66542
commit 0ab6e0bc72
5 changed files with 56 additions and 4 deletions

View File

@ -3,7 +3,43 @@ from apps.system.models import CommonAModel, CommonADModel, User
from apps.utils.models import CommonBDModel, BaseModel from apps.utils.models import CommonBDModel, BaseModel
from apps.mtm.models import Material, Mgroup, Team from apps.mtm.models import Material, Mgroup, Team
from apps.wpm.models import SfLog from apps.wpm.models import SfLog
from django.utils.translation import gettext_lazy as _
class NotOkOption(models.TextChoices):
zw = "zw", _("炸纹")
tw = "tw", _("条纹")
qp = "qp", _("气泡")
wq = "wq", _("弯曲")
dl = "dl", _("断裂")
pb = "pb", _("偏壁")
dxt = "dxt", _("大小头")
js = "js", _("结石")
qx = "qx", _("气线")
hs = "hs", _("划伤")
cs = "cs", _("挫伤")
bl = "bl", _("不亮")
zz = "zz", _("杂质")
d = "d", _("")
zdd = "zdd", _("锥度大")
hw = "hw", _("横纹")
yp = "yp", _("有皮")
bp = "bp", _("爆皮")
sc = "sc", _("色差")
tydd = "tydd", _("椭圆度大")
sw = "sw", _("水雾")
zjx = "zjx", _("直径小")
zjd = "zjd", _("直径大")
bhpcd = "bhpcd", _("壁厚偏差大")
xzp = "xzp", _("箱中破")
thhs = "thhs", _("退火后碎")
swen = "swen", _("水纹")
bb = "bb", _("崩边")
wm = "wm", _("雾面")
md = "md", _("麻点")
xh = "xh", _("线痕")
b = "b", _("")
wz = "wz", _("未知")
class TestItem(CommonAModel): class TestItem(CommonAModel):
""" """

View File

@ -1,7 +1,7 @@
from django.urls import path, include from django.urls import path, include
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from apps.qm.views import QuaStatViewSet, TestItemViewSet, FtestWorkViewSet, FtestViewSet, PtestViewSet from apps.qm.views import QuaStatViewSet, TestItemViewSet, FtestWorkViewSet, FtestViewSet, PtestViewSet, NotOkOptionView
API_BASE_URL = 'api/qm/' API_BASE_URL = 'api/qm/'
HTML_BASE_URL = 'qm/' HTML_BASE_URL = 'qm/'
@ -14,4 +14,5 @@ router.register('ftestwork', FtestWorkViewSet, basename='ftestwork')
router.register('ptest', PtestViewSet, basename='ptest') router.register('ptest', PtestViewSet, basename='ptest')
urlpatterns = [ urlpatterns = [
path(API_BASE_URL, include(router.urls)), path(API_BASE_URL, include(router.urls)),
path(API_BASE_URL + 'notok_option/', NotOkOptionView.as_view()),
] ]

View File

@ -1,6 +1,7 @@
from django.shortcuts import render from django.shortcuts import render
from rest_framework.mixins import ListModelMixin, CreateModelMixin, UpdateModelMixin from rest_framework.mixins import ListModelMixin, CreateModelMixin, UpdateModelMixin
from rest_framework.decorators import action from rest_framework.decorators import action
from rest_framework.views import APIView
from apps.qm.models import QuaStat, TestItem, Ftest, Ptest, FtestWork from apps.qm.models import QuaStat, TestItem, Ftest, Ptest, FtestWork
from apps.qm.serializers import QuaStatSerializer, TestItemSerializer, QuaStatUpdateSerializer, FtestSerializer, PtestSerializer, \ from apps.qm.serializers import QuaStatSerializer, TestItemSerializer, QuaStatUpdateSerializer, FtestSerializer, PtestSerializer, \
FtestWorkCreateUpdateSerializer, FtestWorkSerializer FtestWorkCreateUpdateSerializer, FtestWorkSerializer
@ -13,8 +14,16 @@ 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 from apps.qm.filters import QuaStatFilter, TestItemFilter
from django.db import transaction from django.db import transaction
from apps.qm.models import NotOkOption
# Create your views here. # Create your views here.
class NotOkOptionView(APIView):
perms_map = {'get': '*'}
def get(self, request):
res1 = [{'value': i.value, 'label': i.label} for i in NotOkOption]
res2 = {i.value: i.label for i in NotOkOption}
return Response({"res_list": res1, "res_dict": res2})
class TestItemViewSet(ListModelMixin, CustomGenericViewSet): class TestItemViewSet(ListModelMixin, CustomGenericViewSet):
""" """

View File

@ -16,6 +16,7 @@ from django.db import transaction
from django.utils import timezone from django.utils import timezone
from django.core.cache import cache from django.core.cache import cache
from django.utils.timezone import localdate from django.utils.timezone import localdate
from apps.qm.models import NotOkOption
class OtherLogSerializer(CustomModelSerializer): class OtherLogSerializer(CustomModelSerializer):
@ -173,6 +174,11 @@ class WMaterialSerializer(CustomModelSerializer):
mgroup_name = serializers.StringRelatedField(source='mgroup.name', read_only=True) mgroup_name = serializers.StringRelatedField(source='mgroup.name', read_only=True)
belong_dept_name = serializers.CharField( belong_dept_name = serializers.CharField(
source='belong_dept.name', read_only=True) source='belong_dept.name', read_only=True)
material_origin_name = serializers.StringRelatedField(source='material_origin', read_only=True)
notok_sign_name = serializers.SerializerMethodField()
def get_notok_sign_name(self, obj):
return getattr(NotOkOption, obj.notok_sign, NotOkOption.wz).label if obj.notok_sign else None
class Meta: class Meta:
model = WMaterial model = WMaterial
@ -431,6 +437,7 @@ class HandoverSerializer(CustomModelSerializer):
material_ = MaterialSimpleSerializer(source='material', read_only=True) material_ = MaterialSimpleSerializer(source='material', read_only=True)
material_name = serializers.StringRelatedField( material_name = serializers.StringRelatedField(
source='material', read_only=True) source='material', read_only=True)
wm_notok_sign = serializers.CharField(source='wm.notok_sign', read_only=True)
def validate(self, attrs): def validate(self, attrs):
if 'type' not in attrs: if 'type' not in attrs:

View File

@ -314,8 +314,7 @@ class HandoverViewSet(CustomModelViewSet):
queryset = Handover.objects.all() queryset = Handover.objects.all()
serializer_class = HandoverSerializer serializer_class = HandoverSerializer
update_serializer_class = HandoverUpdateSerializer update_serializer_class = HandoverUpdateSerializer
select_related_fields = ['send_user', select_related_fields = ['send_user', 'send_mgroup', 'send_dept', 'recive_user', 'recive_mgroup', 'recive_dept', 'wm']
'send_dept', 'recive_user', 'recive_dept']
filterset_class = HandoverFilter filterset_class = HandoverFilter
search_fields = ['id', 'material__name', search_fields = ['id', 'material__name',
'material__number', 'material__specification', 'batch', 'material__model'] 'material__number', 'material__specification', 'batch', 'material__model']