from django.db.models.signals import post_save from apps.qm.models import TestRecord from apps.wf.models import Ticket from django.dispatch import receiver from apps.wpm.models import WProduct, WprouctTicket @receiver(post_save, sender=Ticket) def handleTicket(sender, instance, created, **kwargs): if instance.workflow.name == '不合格品审理单': if created: ticket_data = instance.ticket_data """ 创建关联信息表 """ obj = WprouctTicket() wproduct = WProduct.objects.get(id=ticket_data['wproduct']) obj.wproduct = wproduct obj.number = wproduct.number obj.material = wproduct.material obj.step = wproduct.step obj.subproduction_plan = wproduct.subproduction_plan obj.ticket = instance test_record = TestRecord.objects.filter(wproduct=wproduct, is_deleted=False, is_testok=False).order_by('-id').first() obj.save() # 工单绑定半成品 wproduct.ticket = instance wproduct.save() # 检验员 if not ticket_data.get('tester', None): ticket_data['tester'] = test_record.create_by.id instance.ticket_data = ticket_data instance.save() elif instance.act_state == Ticket.TICKET_ACT_STATE_FINISH: """ 执行操作决定 """ ticket_data = instance.ticket_data wt = instance.wt_ticket wp = wt.wproduct if 'decision_1' in ticket_data and ticket_data['decision_1']: wt.decision = ticket_data['decision_1'] if ticket_data['decision_1'] in ['返工', '返修']: pass elif ticket_data['decision_1'] in ['让步接收']: wp.act_state = WProduct.WPR_ACT_STATE_OK elif 'decision_2' in ticket_data and ticket_data['decision_2']: wp.decision = ticket_data['decision_2'] if ticket_data['decision_2'] in ['返工', '返修']: pass elif ticket_data['decision_2'] in ['让步接收']: wp.act_state = WProduct.WPR_ACT_STATE_OK wt.save() wp.save()