opl mtask 外键
This commit is contained in:
parent
07641c2d6d
commit
fd1d2ccfc7
|
@ -241,6 +241,7 @@ class TestViewSet(CustomGenericViewSet):
|
|||
# 关闭作业视频监控任务
|
||||
for i in test_snap_list:
|
||||
celery_control.revoke(i, terminate=True)
|
||||
cache.set('test_snap_task', [])
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False, serializer_class=Serializer)
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
# Generated by Django 3.2.12 on 2022-09-12 10:38
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('django_celery_results', '0011_taskresult_periodic_task_name'),
|
||||
('opm', '0004_alter_oplworker_worker'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='opl',
|
||||
name='mtask_id',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='opl',
|
||||
name='mtask',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='django_celery_results.taskresult'),
|
||||
),
|
||||
]
|
|
@ -117,7 +117,7 @@ class Opl(CommonBDModel):
|
|||
ticket = models.OneToOneField('wf.ticket', verbose_name='关联工单',
|
||||
on_delete=models.SET_NULL,
|
||||
null=True, blank=True)
|
||||
mtask_id = models.CharField('视频监控任务ID', max_length=200, null=True, blank=True)
|
||||
mtask = models.ForeignKey('django_celery_results.taskresult', on_delete=models.SET_NULL, null=True, blank=True)
|
||||
|
||||
|
||||
class OplWorker(BaseModel):
|
||||
|
|
|
@ -11,6 +11,7 @@ from rest_framework.exceptions import ParseError
|
|||
from apps.am.serializers import AreaSimpleSerializer
|
||||
from apps.wf.serializers import TicketSerializer
|
||||
from apps.system.serializers import FileSerializer
|
||||
from django_celery_results.models import TaskResult
|
||||
|
||||
|
||||
class OplCateCreateUpdateSerializer(CustomModelSerializer):
|
||||
|
@ -129,7 +130,8 @@ class OplCertSerializer(CustomModelSerializer):
|
|||
|
||||
class Meta:
|
||||
model = OplCert
|
||||
fields = ['certificate', 'name', 'type', 'number', 'issue_date', 'expiration_date', 'review_date', 'file', 'file_f']
|
||||
fields = ['certificate', 'name', 'type', 'number', 'issue_date',
|
||||
'expiration_date', 'review_date', 'file', 'file_f']
|
||||
|
||||
|
||||
class OplWorkerSerializer(CustomModelSerializer):
|
||||
|
@ -201,6 +203,7 @@ class OplListSerializer(CustomModelSerializer):
|
|||
charger_ = UserSimpleSerializer(source='charger', read_only=True)
|
||||
monitor_ = UserSimpleSerializer(source='monitor', read_only=True)
|
||||
ticket_ = TicketSerializer(source='ticket', read_only=True)
|
||||
mtask_status = serializers.CharField(source='mtask.status', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Opl
|
||||
|
@ -221,6 +224,7 @@ class OplDetailSerializer(CustomModelSerializer):
|
|||
close_dos_ = serializers.SerializerMethodField()
|
||||
create_imgs_ = FileSerializer(source='create_imgs', many=True)
|
||||
close_imgs_ = FileSerializer(source='close_imgs', many=True)
|
||||
mtask_status = serializers.CharField(source='mtask.status', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = Opl
|
||||
|
|
|
@ -5,6 +5,7 @@ from apps.opm.models import Operation, Opl, OplWorker
|
|||
from apps.third.models import TDevice
|
||||
from apps.utils.sms import send_sms
|
||||
from apps.wf.models import Ticket, Transition
|
||||
from django_celery_results.models import TaskResult
|
||||
|
||||
|
||||
def get_op_charger(state, ticket, new_ticket_data, handler):
|
||||
|
@ -97,7 +98,7 @@ def opl_start(ticket: Ticket):
|
|||
area=op.area).values_list('code', flat=True))
|
||||
opl_id = opl.id
|
||||
task = opl_task.delay(vc_codes, opl_id)
|
||||
opl.mtask_id = task.task_id
|
||||
opl.mtask = TaskResult.objects.get(task_id=task.task_id)
|
||||
opl.save()
|
||||
|
||||
|
||||
|
@ -106,12 +107,12 @@ def opl_end(ticket: Ticket):
|
|||
作业许可证关闭时执行
|
||||
"""
|
||||
opl = ticket.opl
|
||||
if opl.mtask_id:
|
||||
if opl.mtask:
|
||||
from celery.app.control import Control
|
||||
from server.celery import app
|
||||
celery_control = Control(app=app)
|
||||
# 关闭作业视频监控任务
|
||||
celery_control.revoke(opl.mtask_id, terminate=True)
|
||||
celery_control.revoke(opl.mtask.id, terminate=True)
|
||||
operation = opl.operation
|
||||
opls = Opl.objects.filter(operation=operation)
|
||||
opls.filter(ticket=None).delete() # 删除无用许可证
|
||||
|
|
Loading…
Reference in New Issue