From 4927afa9b73dfb8d33d9e80e8002afd1960dcb50 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 20 Jan 2025 15:43:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B7=A5=E8=89=BA=E8=B7=AF=E7=BA=BF?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mtm/views.py | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/mtm/views.py b/apps/mtm/views.py index 4e82c01d..a5322abe 100644 --- a/apps/mtm/views.py +++ b/apps/mtm/views.py @@ -19,7 +19,7 @@ from rest_framework.serializers import Serializer from django.db import transaction from django.db.models import Q from apps.wf.models import Ticket - +from django.utils import timezone # Create your views here. class MaterialViewSet(CustomModelViewSet): @@ -226,6 +226,39 @@ class RoutePackViewSet(CustomModelViewSet): obj.delete() Ticket.objects.filter(ticket_data__t_id=obj.id, ticket_data__t_model='routepack').delete() return Response(status=204) + + @transaction.atomic + @action(methods=['post'], detail=True, perms_map={'post': 'routepack.create'}, serializer_class=Serializer) + def copy(self, request, *args, **kwargs): + """复制工艺路线 + + 复制工艺路线 + """ + obj = self.get_object() + user = request.user + now = timezone.now() + obj_c = RoutePack() + obj_c.name = f'{obj.name}_copy' + obj_c.material = obj.material + obj_c.create_by = user + obj_c.create_time = now + obj_c.save() + for route in Route.objects.filter(routepack=obj): + route_new = Route() + for f in Route._meta.fields: + if f.name not in ['id', 'create_by', 'update_by', 'create_time', 'update_time']: + setattr(route_new, f.name, getattr(route, f.name, None)) + route_new.routepack = obj_c + route_new.create_by = user + route_new.create_time = now + route_new.save() + for rm in RouteMat.objects.filter(route=route): + rm_new = RouteMat() + rm_new.route = route_new + rm_new.material = rm.material + rm_new.save() + return Response() + class RouteViewSet(CustomModelViewSet): queryset = Route.objects.all()