feat: ftestwork添加ticket审批并编写绑定函数
This commit is contained in:
parent
a432dca39b
commit
765bcc39de
|
@ -0,0 +1,20 @@
|
||||||
|
# Generated by Django 3.2.12 on 2024-12-12 06:39
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('wf', '0002_alter_state_filter_dept'),
|
||||||
|
('qm', '0026_auto_20241121_1044'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ftestwork',
|
||||||
|
name='ticket',
|
||||||
|
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ftestwork_ticket', to='wf.ticket', verbose_name='关联工单'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -152,6 +152,9 @@ class FtestWork(CommonBDModel):
|
||||||
submit_user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='提交人', null=True, blank=True)
|
submit_user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='提交人', null=True, blank=True)
|
||||||
note = models.TextField('备注', null=True, blank=True)
|
note = models.TextField('备注', null=True, blank=True)
|
||||||
equipment = models.ForeignKey(Equipment, verbose_name='所属检验设备', on_delete=models.SET_NULL, null=True, blank=True)
|
equipment = models.ForeignKey(Equipment, verbose_name='所属检验设备', on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
|
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
|
||||||
|
on_delete=models.SET_NULL, related_name='ftestwork_ticket', null=True, blank=True,
|
||||||
|
db_constraint=False)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def count_fields(cls):
|
def count_fields(cls):
|
||||||
|
|
|
@ -6,6 +6,18 @@ from django.utils import timezone
|
||||||
from apps.wf.models import Ticket
|
from apps.wf.models import Ticket
|
||||||
from apps.qm.models import NotOkOption
|
from apps.qm.models import NotOkOption
|
||||||
|
|
||||||
|
def ftestwork_submit_validate(ins: FtestWork):
|
||||||
|
wm:WMaterial = ins.wm
|
||||||
|
if ins.need_update_wm:
|
||||||
|
if wm.state == WMaterial.WM_TEST:
|
||||||
|
xcount = wm.count - ins.count
|
||||||
|
if xcount < 0:
|
||||||
|
raise ParseError("超过待检数量")
|
||||||
|
else:
|
||||||
|
xcount = wm.count - ins.count_notok
|
||||||
|
if xcount < 0:
|
||||||
|
raise ParseError("不合格数不可大于批次数量")
|
||||||
|
|
||||||
|
|
||||||
def ftestwork_submit(ins:FtestWork, user: User):
|
def ftestwork_submit(ins:FtestWork, user: User):
|
||||||
wm:WMaterial = ins.wm
|
wm:WMaterial = ins.wm
|
||||||
|
@ -83,4 +95,22 @@ def ftestwork_submit(ins:FtestWork, user: User):
|
||||||
ins.save()
|
ins.save()
|
||||||
|
|
||||||
def bind_ftestwork(ticket: Ticket, transition, new_ticket_data: dict):
|
def bind_ftestwork(ticket: Ticket, transition, new_ticket_data: dict):
|
||||||
pass
|
ins = FtestWork.objects.get(id=new_ticket_data['t_id'])
|
||||||
|
if ins.submit_time is not None:
|
||||||
|
raise ParseError('该检验工作不可提交审批')
|
||||||
|
ftestwork_submit_validate(ins)
|
||||||
|
ticket_data = ticket.ticket_data
|
||||||
|
ticket_data.update({
|
||||||
|
't_model': 'ftestwork',
|
||||||
|
'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 ftestwork_audit_end(ticket: Ticket):
|
||||||
|
ins = FtestWork.objects.get(id=ticket.ticket_data['t_id'])
|
||||||
|
ftestwork_submit(ins, ticket.create_by)
|
Loading…
Reference in New Issue