From c1161c43914bb9c41a757610dc3177f8c8189573 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 2 Jul 2024 16:40:43 +0800 Subject: [PATCH] feat: routepack bind ticket --- apps/mtm/services.py | 30 ++++++++++++++++++++++++++++-- apps/mtm/views.py | 6 +++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/apps/mtm/services.py b/apps/mtm/services.py index 5805e19d..90dc4726 100644 --- a/apps/mtm/services.py +++ b/apps/mtm/services.py @@ -1,4 +1,4 @@ -from apps.mtm.models import Goal, Mgroup +from apps.mtm.models import Goal, Mgroup, RoutePack, Route from django.core.cache import cache from django.db.models import Q from apps.mtm.models import Material, Process @@ -8,6 +8,7 @@ from datetime import datetime from apps.wpm.models import StLog from apps.wpm.services import get_sflog from apps.wpm.tasks import cal_exp_duration_sec +from apps.wf.models import Ticket def get_mgroup_goals(mgroupId, year, reload=False): @@ -100,4 +101,29 @@ def mgroup_run_change(mgroup: Mgroup, new_run: bool, last_timex: datetime): elif new_run is False: StLog.objects.create(title="停机", is_shutdown=True, mgroup=mgroup, end_time=None, start_time=last_timex, sflog=get_sflog(mgroup, last_timex)) mgroup.is_running = False - mgroup.save() \ No newline at end of file + mgroup.save() + +def bind_routepack(ticket: Ticket, transition, new_ticket_data: dict): + routepack = RoutePack.objects.get(id=new_ticket_data['t_id']) + if routepack.ticket and routepack.ticket.id!=ticket.id: + raise ParseError('重复创建工单') + if not Route.objects.filter(routepack=routepack).exists(): + raise ParseError('缺少步骤') + ticket_data = ticket.ticket_data + ticket_data.update({ + 't_model': 'routepack', + 't_id': routepack.id + }) + ticket.ticket_data = ticket_data + ticket.create_by = routepack.create_by + ticket.save() + if routepack.ticket is None: + routepack.ticket = ticket + routepack.state = RoutePack.RP_S_AUDIT + routepack.save() + + +def routepack_audit_end(ticket: Ticket): + routepack = RoutePack.objects.get(id=ticket.ticket_data['t_id']) + routepack.state = RoutePack.RP_S_CONFIRM + routepack.save() \ No newline at end of file diff --git a/apps/mtm/views.py b/apps/mtm/views.py index 8f9e67d5..59d2310a 100644 --- a/apps/mtm/views.py +++ b/apps/mtm/views.py @@ -17,6 +17,7 @@ from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin from rest_framework.serializers import Serializer from django.db import transaction from django.db.models import Q +from apps.wf.models import Ticket # Create your views here. @@ -193,11 +194,14 @@ class RoutePackViewSet(CustomModelViewSet): raise ParseError('该状态下不可编辑') return super().update(request, *args, **kwargs) + @transaction.atomic def destroy(self, request, *args, **kwargs): obj: RoutePack = self.get_object() if obj.state != RoutePack.RP_S_CREATE: raise ParseError('该状态下不可删除') - return super().destroy(request, *args, **kwargs) + obj.delete() + Ticket.objects.filter(ticket_data_t_id=obj.id, ticket_data_t_model='routepack').delete() + return Response(status=204) class RouteViewSet(CustomModelViewSet): queryset = Route.objects.all()