From 0ab6e0bc7291aa76aa6aeb066335708584eff0e0 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 22 Jul 2024 17:58:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E4=B8=8D=E5=90=88?= =?UTF-8?q?=E6=A0=BC=E9=A1=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/qm/models.py | 36 ++++++++++++++++++++++++++++++++++++ apps/qm/urls.py | 3 ++- apps/qm/views.py | 9 +++++++++ apps/wpm/serializers.py | 9 ++++++++- apps/wpm/views.py | 3 +-- 5 files changed, 56 insertions(+), 4 deletions(-) diff --git a/apps/qm/models.py b/apps/qm/models.py index c60d3aa7..dfcf0fcb 100644 --- a/apps/qm/models.py +++ b/apps/qm/models.py @@ -3,7 +3,43 @@ from apps.system.models import CommonAModel, CommonADModel, User from apps.utils.models import CommonBDModel, BaseModel from apps.mtm.models import Material, Mgroup, Team 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): """ diff --git a/apps/qm/urls.py b/apps/qm/urls.py index 0e0b33a3..ed5608c3 100644 --- a/apps/qm/urls.py +++ b/apps/qm/urls.py @@ -1,7 +1,7 @@ from django.urls import path, include 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/' HTML_BASE_URL = 'qm/' @@ -14,4 +14,5 @@ router.register('ftestwork', FtestWorkViewSet, basename='ftestwork') router.register('ptest', PtestViewSet, basename='ptest') urlpatterns = [ path(API_BASE_URL, include(router.urls)), + path(API_BASE_URL + 'notok_option/', NotOkOptionView.as_view()), ] diff --git a/apps/qm/views.py b/apps/qm/views.py index 334abb9d..87f8e905 100644 --- a/apps/qm/views.py +++ b/apps/qm/views.py @@ -1,6 +1,7 @@ from django.shortcuts import render from rest_framework.mixins import ListModelMixin, CreateModelMixin, UpdateModelMixin 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.serializers import QuaStatSerializer, TestItemSerializer, QuaStatUpdateSerializer, FtestSerializer, PtestSerializer, \ FtestWorkCreateUpdateSerializer, FtestWorkSerializer @@ -13,8 +14,16 @@ from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.wpm.models import SfLog from apps.qm.filters import QuaStatFilter, TestItemFilter from django.db import transaction +from apps.qm.models import NotOkOption # 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): """ diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index e3b2e16a..dba7b9fb 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -16,6 +16,7 @@ from django.db import transaction from django.utils import timezone from django.core.cache import cache from django.utils.timezone import localdate +from apps.qm.models import NotOkOption class OtherLogSerializer(CustomModelSerializer): @@ -173,6 +174,11 @@ class WMaterialSerializer(CustomModelSerializer): mgroup_name = serializers.StringRelatedField(source='mgroup.name', read_only=True) belong_dept_name = serializers.CharField( 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: model = WMaterial @@ -431,7 +437,8 @@ class HandoverSerializer(CustomModelSerializer): material_ = MaterialSimpleSerializer(source='material', read_only=True) material_name = serializers.StringRelatedField( source='material', read_only=True) - + wm_notok_sign = serializers.CharField(source='wm.notok_sign', read_only=True) + def validate(self, attrs): if 'type' not in attrs: attrs['type'] = Handover.H_NORMAL diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 7a3f1d25..6edb24ec 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -314,8 +314,7 @@ class HandoverViewSet(CustomModelViewSet): queryset = Handover.objects.all() serializer_class = HandoverSerializer update_serializer_class = HandoverUpdateSerializer - select_related_fields = ['send_user', - 'send_dept', 'recive_user', 'recive_dept'] + select_related_fields = ['send_user', 'send_mgroup', 'send_dept', 'recive_user', 'recive_mgroup', 'recive_dept', 'wm'] filterset_class = HandoverFilter search_fields = ['id', 'material__name', 'material__number', 'material__specification', 'batch', 'material__model']