From 6f4a1c4c88fe294ead2e183805914b0a990ce231 Mon Sep 17 00:00:00 2001 From: zty Date: Thu, 25 Sep 2025 15:42:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20ofm-=E4=BF=AE=E6=94=B9=E4=BC=9A?= =?UTF-8?q?=E8=AE=AE=E5=AE=A4=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ofm/migrations/0013_mroomslot_ticket.py | 20 ++++++++++++++++++++ apps/ofm/models.py | 2 ++ apps/ofm/services.py | 16 +++++++++++++++- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 apps/ofm/migrations/0013_mroomslot_ticket.py diff --git a/apps/ofm/migrations/0013_mroomslot_ticket.py b/apps/ofm/migrations/0013_mroomslot_ticket.py new file mode 100644 index 00000000..765fd55a --- /dev/null +++ b/apps/ofm/migrations/0013_mroomslot_ticket.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.12 on 2025-09-25 07:41 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('wf', '0003_workflow_view_path'), + ('ofm', '0012_publicity_ticket'), + ] + + operations = [ + migrations.AddField( + model_name='mroomslot', + name='ticket', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mrooms_ticket', to='wf.ticket', verbose_name='关联会议室'), + ), + ] diff --git a/apps/ofm/models.py b/apps/ofm/models.py index e3e2fdba..3ce5f27a 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -36,6 +36,8 @@ class MroomSlot(BaseModel): booking = models.ForeignKey(MroomBooking, on_delete=models.CASCADE, related_name="slot_b") mdate = models.DateField('会议日期', db_index=True) slot = models.PositiveIntegerField('时段', help_text='0-47') + ticket = models.ForeignKey('wf.ticket', verbose_name='关联会议室', + on_delete=models.SET_NULL, related_name='mrooms_ticket', null=True, blank=True, db_constraint=False) class Meta: unique_together = ('mroom', 'mdate', 'slot') diff --git a/apps/ofm/services.py b/apps/ofm/services.py index 8a17900d..a781592b 100644 --- a/apps/ofm/services.py +++ b/apps/ofm/services.py @@ -1,7 +1,7 @@ from apps.wf.models import Ticket # TicketFlow, Transition, Workflow, CustomField, State, -from apps.ofm.models import LendingSeal, Vehicle, BorrowRecord, Publicity +from apps.ofm.models import LendingSeal, Vehicle, BorrowRecord, Publicity, MroomSlot from rest_framework.exceptions import ParseError @@ -10,6 +10,20 @@ def seal_submit_validate(ins: LendingSeal): raise ParseError('该日志已提交!') if ins.mtask and ins.mtask.state == LendingSeal.MTASK_STOP: raise ParseError('该任务已停止!') + +def bind_mslot(ticket: Ticket, transition, new_ticket_data: dict): + ins = MroomSlot.objects.get(id=new_ticket_data['t_id']) + ticket_data = ticket.ticket_data + ticket_data.update({ + 't_model': 'mroomslot', + '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 bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict): ins = LendingSeal.objects.get(id=new_ticket_data['t_id'])