feat: 交接记录添加审批工单
This commit is contained in:
parent
3cacea1b06
commit
66a1d6df7f
|
@ -0,0 +1,25 @@
|
|||
# Generated by Django 3.2.12 on 2025-07-23 01:12
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wf', '0002_alter_state_filter_dept'),
|
||||
('wpm', '0120_alter_batchst_data'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='handover',
|
||||
name='oinfo_json',
|
||||
field=models.JSONField(blank=True, default=dict, verbose_name='其他信息'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='handover',
|
||||
name='ticket',
|
||||
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='handover_ticket', to='wf.ticket', verbose_name='关联工单'),
|
||||
),
|
||||
]
|
|
@ -577,6 +577,9 @@ class Handover(CommonADModel):
|
|||
submit_user = models.ForeignKey(
|
||||
User, verbose_name='提交人', on_delete=models.CASCADE, null=True, blank=True, related_name='handover_submit_user')
|
||||
note = models.TextField('备注', null=True, blank=True)
|
||||
oinfo_json = models.JSONField('其他信息', default=dict, blank=True)
|
||||
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
|
||||
on_delete=models.SET_NULL, related_name='handover_ticket', null=True, blank=True, db_constraint=False)
|
||||
|
||||
@property
|
||||
def handoverb(self):
|
||||
|
|
|
@ -1015,6 +1015,20 @@ def bind_mlog(ticket: Ticket, transition, new_ticket_data: dict):
|
|||
ins.ticket = ticket
|
||||
ins.save()
|
||||
|
||||
def bind_handover(ticket: Ticket, transition, new_ticket_data: dict):
|
||||
ins = Handover.objects.get(id=new_ticket_data['t_id'])
|
||||
ticket_data = ticket.ticket_data
|
||||
ticket_data.update({
|
||||
't_model': 'handover',
|
||||
't_id': ins.id,
|
||||
})
|
||||
ticket.ticket_data = ticket_data
|
||||
ticket.create_by = ins.create_by
|
||||
ticket.save()
|
||||
if ins.ticket is None:
|
||||
ins.ticket = ticket
|
||||
ins.save()
|
||||
|
||||
def mlog_audit_end(ticket: Ticket):
|
||||
now = timezone.now()
|
||||
ins = Mlog.objects.get(id=ticket.ticket_data['t_id'])
|
||||
|
|
|
@ -29,7 +29,7 @@ from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer,
|
|||
MlogbSerializer, MlogUserSerializer, BatchLogSerializer)
|
||||
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
|
||||
from apps.wf.models import State
|
||||
from apps.wf.models import State, Ticket
|
||||
from apps.wpmw.models import Wpr
|
||||
from apps.qm.models import Qct, Ftest, TestItem
|
||||
from apps.enm.models import EnStat
|
||||
|
@ -387,13 +387,25 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
'material__number', 'material__specification', 'batch', 'material__model', 'b_handover__batch', "new_batch", "wm__batch"]
|
||||
prefetch_related_fields = ["b_handover"]
|
||||
|
||||
def perform_destroy(self, instance):
|
||||
@transaction.atomic
|
||||
def perform_destroy(self, instance:Handover):
|
||||
user = self.request.user
|
||||
if instance.submit_time is not None:
|
||||
raise ParseError('日志已提交不可变动')
|
||||
if instance.send_user != user and instance.recive_user != user and instance.create_by != user:
|
||||
raise ParseError('非交送人和接收人不可删除该记录')
|
||||
return super().perform_destroy(instance)
|
||||
ticket:Ticket = instance.ticket
|
||||
if ticket:
|
||||
ticket.delete()
|
||||
instance.delete()
|
||||
|
||||
@transaction.atomic
|
||||
def perform_update(self, serializer):
|
||||
ins:Handover = self.get_object()
|
||||
ticket:Ticket = ins.ticket
|
||||
if ticket and ticket.state.type != State.STATE_TYPE_START:
|
||||
raise ParseError("该交接记录存在审批,不可修改")
|
||||
serializer.save()
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'handover.create'}, serializer_class=HandoverSerializer)
|
||||
@transaction.atomic
|
||||
|
@ -425,6 +437,9 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
pass
|
||||
else:
|
||||
raise ParseError('非接收人不可提交')
|
||||
ticket:Ticket = ins.ticket
|
||||
if ticket and ticket.state.type != State.STATE_TYPE_END:
|
||||
raise ParseError('该交接记录审批未完成,不可提交')
|
||||
if ins.submit_time is None:
|
||||
handover_submit(ins, user, None)
|
||||
return Response()
|
||||
|
|
Loading…
Reference in New Issue