feat: 工艺路线复制按钮

This commit is contained in:
caoqianming 2025-01-20 15:43:04 +08:00
parent 688b3fc3d1
commit 4927afa9b7
1 changed files with 34 additions and 1 deletions

View File

@ -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()