hberp/hb_server/apps/wpm/signals.py

59 lines
2.3 KiB
Python

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
obj.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'] = obj.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()