From 9ed78f8d3242c5c15264dbb4da60e2feacd4e9d0 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 4 Jan 2026 11:10:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20mlogbbpatch=E4=BF=AE=E6=94=B9=E6=89=B9?= =?UTF-8?q?=E6=AC=A1=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/serializers.py | 5 +++++ apps/wpm/views.py | 23 ++++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 968ae690..f306bccc 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -1049,6 +1049,11 @@ class MlogbwStartTestSerializer(serializers.Serializer): test_equip=test_equip ) +class MlogbOutPatchUpdateSerializer(CustomModelSerializer): + class Meta: + model = Mlogb + fields = ["batch"] + class MlogbOutUpdateSerializer(CustomModelSerializer): mlogbdefect = MlogbDefectSerializer(many=True, required=False) count_json = CountJsonSerializer(required=False, many=True) diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 236bd779..1a0fc458 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -50,7 +50,8 @@ from .serializers import ( MlogQuickSerializer, MlogbwStartTestSerializer, HandoverListSerializer, - BatchChangeSerializer + BatchChangeSerializer, + MlogbOutPatchUpdateSerializer ) from .services import mlog_submit, handover_submit, mlog_revert, get_batch_dag, handover_revert from apps.wpm.services import mlog_submit_validate, generate_new_batch @@ -1020,18 +1021,22 @@ class MlogbInViewSet(BulkCreateModelMixin, BulkUpdateModelMixin, BulkDestroyMode class MlogbOutViewSet(BulkUpdateModelMixin, CustomGenericViewSet): - perms_map = {"put": "mlog.update"} + perms_map = {"put": "mlog.update", "patch": "mlog.update"} queryset = Mlogb.objects.filter(material_out__isnull=False) serializer_class = MlogbOutUpdateSerializer + partial_update_serializer_class = MlogbOutPatchUpdateSerializer def perform_update(self, serializer): - ins: Mlogb = serializer.instance - mlog = MlogViewSet.lock_and_check_can_update(ins.mlog) - material_out = serializer.validated_data.get("material_out") - if material_out and material_out.tracking == Material.MA_TRACKING_SINGLE: - raise ParseError("单件产品不支持直接修改") - ins: Mlogb = serializer.save() - mlog.cal_mlog_count_from_mlogb() + if self.request.method == "PATCH": + serializer.save() + else: + ins: Mlogb = serializer.instance + mlog = MlogViewSet.lock_and_check_can_update(ins.mlog) + material_out = serializer.validated_data.get("material_out") + if material_out and material_out.tracking == Material.MA_TRACKING_SINGLE: + raise ParseError("单件产品不支持直接修改") + ins: Mlogb = serializer.save() + mlog.cal_mlog_count_from_mlogb() class FmlogViewSet(CustomModelViewSet):