60 lines
2.3 KiB
Python
60 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
|
|
|
|
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()
|
|
|