From 53f6082071c27f6bb053fe8989247956658a49ad Mon Sep 17 00:00:00 2001 From: shijing Date: Tue, 26 May 2026 09:27:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:wpr=E6=9B=B4=E6=96=B0=E6=B7=BB=E5=8A=A0pre?= =?UTF-8?q?=5Finfo=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpmw/migrations/0010_wpr_pre_info.py | 16 ++++++++++++++++ apps/wpmw/models.py | 1 + apps/wpmw/serializers.py | 6 +++++- apps/wpmw/views.py | 18 ++++++++++++++---- 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 apps/wpmw/migrations/0010_wpr_pre_info.py diff --git a/apps/wpmw/migrations/0010_wpr_pre_info.py b/apps/wpmw/migrations/0010_wpr_pre_info.py new file mode 100644 index 00000000..e19d8471 --- /dev/null +++ b/apps/wpmw/migrations/0010_wpr_pre_info.py @@ -0,0 +1,16 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('wpmw', '0009_alter_wpr_number'), + ] + + operations = [ + migrations.AddField( + model_name='wpr', + name='pre_info', + field=models.JSONField(blank=True, default=dict, verbose_name='预处理信息'), + ), + ] diff --git a/apps/wpmw/models.py b/apps/wpmw/models.py index 8478da90..fed78385 100644 --- a/apps/wpmw/models.py +++ b/apps/wpmw/models.py @@ -30,6 +30,7 @@ class Wpr(BaseModel): oinfo = models.JSONField(verbose_name="其他信息", default=dict, blank=True) wpr_from = models.ForeignKey("self", verbose_name="来源于", on_delete=models.CASCADE, null=True, blank=True) data = models.JSONField(verbose_name="数据", default=dict, blank=True) + pre_info = models.JSONField(verbose_name="预处理信息", default=dict, blank=True) @classmethod def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None, wpr_from=None, add_version=True, number_out=None): diff --git a/apps/wpmw/serializers.py b/apps/wpmw/serializers.py index 707d74eb..c7cf2b0b 100644 --- a/apps/wpmw/serializers.py +++ b/apps/wpmw/serializers.py @@ -54,4 +54,8 @@ class WproutListSerializer(serializers.Serializer): class WprChangeNumberSerializer(serializers.Serializer): old_number = serializers.CharField(label="原编号") - new_number = serializers.CharField(label="新编号") \ No newline at end of file + new_number = serializers.CharField(label="新编号") + + +class WprPreInfoSerializer(serializers.Serializer): + pre_info = serializers.JSONField(label="预处理信息") \ No newline at end of file diff --git a/apps/wpmw/views.py b/apps/wpmw/views.py index 2e91a6df..6364bc5f 100644 --- a/apps/wpmw/views.py +++ b/apps/wpmw/views.py @@ -1,9 +1,9 @@ from rest_framework.decorators import action from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet -from apps.utils.mixins import CustomListModelMixin, CustomRetrieveModelMixin, ComplexQueryMixin +from apps.utils.mixins import CustomListModelMixin, CustomRetrieveModelMixin, ComplexQueryMixin, BulkUpdateModelMixin from apps.wpmw.models import Wpr, WprDefect -from apps.wpmw.serializers import WprSerializer, WprNewSerializer, WprDetailSerializer, WproutListSerializer, WprChangeNumberSerializer +from apps.wpmw.serializers import WprSerializer, WprNewSerializer, WprDetailSerializer, WproutListSerializer, WprChangeNumberSerializer, WprPreInfoSerializer from rest_framework.response import Response from apps.mtm.models import Material from rest_framework.exceptions import ParseError @@ -13,13 +13,13 @@ from apps.utils.sql import query_one_dict from django.db.models.expressions import RawSQL -class WprViewSet(CustomListModelMixin, CustomRetrieveModelMixin, ComplexQueryMixin, CustomGenericViewSet): +class WprViewSet(BulkUpdateModelMixin, CustomListModelMixin, CustomRetrieveModelMixin, ComplexQueryMixin, CustomGenericViewSet): """动态产品 动态产品 """ - perms_map = {"get": "*"} + perms_map = {"get": "*", "put": "*", "patch": "*"} select_related_fields = ["wm", "mb", "material", "wm__material_ofrom"] prefetch_related_fields = ["defects"] queryset = Wpr.objects.all() @@ -148,6 +148,16 @@ class WprViewSet(CustomListModelMixin, CustomRetrieveModelMixin, ComplexQueryMix else: return Response({"number_out_last": None}) + @action(methods=["patch"], detail=True, perms_map={"patch": "*"}, serializer_class=WprPreInfoSerializer) + def update_pre_info(self, request, *args, **kwargs): + """更新预处理信息""" + wpr = self.get_object() + sr = WprPreInfoSerializer(data=request.data) + sr.is_valid(raise_exception=True) + wpr.pre_info = sr.validated_data["pre_info"] + wpr.save(update_fields=["pre_info"]) + return Response({"pre_info": wpr.pre_info}) + @action(methods=["post"], detail=False, perms_map={"post": "*"}, serializer_class=WproutListSerializer) @transaction.atomic def assgin_number_out(self, request, *args, **kwargs):