feat: routepack bind ticket

This commit is contained in:
caoqianming 2024-07-02 16:40:43 +08:00
parent b2664ca81b
commit c1161c4391
2 changed files with 33 additions and 3 deletions

View File

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

View File

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