develp clean data bug
This commit is contained in:
parent
586fdfb219
commit
ee6177371a
|
@ -18,3 +18,8 @@ class TestTaskSerializer(serializers.Serializer):
|
||||||
|
|
||||||
class CleanDataSerializer(serializers.Serializer):
|
class CleanDataSerializer(serializers.Serializer):
|
||||||
datas = serializers.ListField(child=serializers.CharField(), label='数据分类列表', required=False, allow_null=True)
|
datas = serializers.ListField(child=serializers.CharField(), label='数据分类列表', required=False, allow_null=True)
|
||||||
|
|
||||||
|
|
||||||
|
class TestAlgoSerializer(serializers.Serializer):
|
||||||
|
face_img = serializers.CharField()
|
||||||
|
global_img = serializers.CharField()
|
||||||
|
|
|
@ -5,11 +5,13 @@ from rest_framework.permissions import IsAdminUser
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.serializers import Serializer
|
from rest_framework.serializers import Serializer
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from apps.develop.serializers import CleanDataSerializer, GenerateVoiceSerializer, SendSmsSerializer, TestTaskSerializer
|
from apps.develop.serializers import CleanDataSerializer, GenerateVoiceSerializer, SendSmsSerializer, \
|
||||||
|
TestTaskSerializer, TestAlgoSerializer
|
||||||
from apps.develop.tasks import backup_database, backup_media, reload_web_git, reload_server_git, reload_server_only
|
from apps.develop.tasks import backup_database, backup_media, reload_web_git, reload_server_git, reload_server_only
|
||||||
from rest_framework.exceptions import APIException
|
from rest_framework.exceptions import APIException
|
||||||
from apps.ecm.service import create_remind, notify_event
|
from apps.ecm.service import create_remind, notify_event
|
||||||
from apps.system.tasks import show
|
from apps.system.tasks import show
|
||||||
|
from apps.third.clients import dhClient
|
||||||
from apps.utils.sms import send_sms
|
from apps.utils.sms import send_sms
|
||||||
from apps.utils.speech import generate_voice
|
from apps.utils.speech import generate_voice
|
||||||
|
|
||||||
|
@ -161,17 +163,26 @@ class TestViewSet(CustomGenericViewSet):
|
||||||
create_remind(event, params={'area': '生产车间', 'employee': '访客石非凡', 'event': '未带安全帽'})
|
create_remind(event, params={'area': '生产车间', 'employee': '访客石非凡', 'event': '未带安全帽'})
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
@action(methods=['post'], detail=False, serializer_class=Serializer)
|
@action(methods=['post'], detail=False, serializer_class=TestAlgoSerializer)
|
||||||
def test_algo(self, request, pk=None):
|
def test_algo(self, request, pk=None):
|
||||||
"""测试算法
|
"""测试算法1
|
||||||
|
|
||||||
测试算法
|
测试算法1
|
||||||
|
"""
|
||||||
|
from apps.ai.main import ai_analyse
|
||||||
|
face_img = dhClient.get_full_pic(path=request.data['face_img'])
|
||||||
|
global_img = dhClient.get_full_pic(path=request.data['global_img'])
|
||||||
|
ret = ai_analyse(codes=['helmet'],
|
||||||
|
face_img=face_img,
|
||||||
|
global_img=global_img)
|
||||||
|
return Response({'result':ret.keys(), 'face_img': face_img, 'global_img': global_img})
|
||||||
|
|
||||||
|
@action(methods=['post'], detail=False, serializer_class=Serializer)
|
||||||
|
def test_algo_full(self, request, pk=None):
|
||||||
|
"""测试算法2
|
||||||
|
|
||||||
|
测试算法2
|
||||||
"""
|
"""
|
||||||
# from apps.ai.main import ai_analyse
|
|
||||||
# ret = ai_analyse(codes=['helmet'],
|
|
||||||
# face_img='https://10.99.5.24/evo-apigw/evo-oss/6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_caa9c522-24e2-11ed-884a-e4246c7d1635_62687586_62696295.jpg?token=0ff8bb53-c99e-4291-a587-272aa1f3f5eb',
|
|
||||||
# global_img='https://10.99.5.24/evo-apigw/evo-oss/6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_caa9c522-24e2-11ed-884a-e4246c7d1635_62413404_62687586.jpg?token=0ff8bb53-c99e-4291-a587-272aa1f3f5eb')
|
|
||||||
# return Response(ret.keys())
|
|
||||||
from apps.ecm.service import dispatch_dahua_event
|
from apps.ecm.service import dispatch_dahua_event
|
||||||
data = {'id': 1661506561753, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '曲阳县金隅水泥厂', 'nodeCode': '1000038$1$0$23', 'deviceCode': '1000038', 'alarmCode': '30789599-b82b-45ba-9d3d-2de2bc1f1d00', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_3de82501-2521-11ed-884a-e4246c7d1635_2088390_2096301.jpg', 'nodeType': 2, 'alarmDate': '1661506557', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_3de82501-2521-11ed-884a-e4246c7d1635_2088390_2096301.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [{'birthday': '2022-8-24', 'faceImageUrl': [
|
data = {'id': 1661506561753, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '曲阳县金隅水泥厂', 'nodeCode': '1000038$1$0$23', 'deviceCode': '1000038', 'alarmCode': '30789599-b82b-45ba-9d3d-2de2bc1f1d00', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_3de82501-2521-11ed-884a-e4246c7d1635_2088390_2096301.jpg', 'nodeType': 2, 'alarmDate': '1661506557', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_3de82501-2521-11ed-884a-e4246c7d1635_2088390_2096301.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [{'birthday': '2022-8-24', 'faceImageUrl': [
|
||||||
'6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_3de82501-2521-11ed-884a-e4246c7d1635_2096301_2173187.jpg'], 'groupName': '全体人员', 'similarity': 96, 'sex': 1, 'cardType': 1, 'name': '石非凡', 'devPersonId': '46', 'id': '371324199803243658', 'type': 0}], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_3de82501-2521-11ed-884a-e4246c7d1635_1825520_2088390.jpg', 'eye': 0, 'alarmType': 1001003, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 23, 'szSerialUUID': '', 'channelName': '窑头平台进料口', 'beginTime': 1661506557, 'endTime': 1661506557, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001003, 'channelSeq': 23, 'orgCode': '001001001', 'channelName': '窑头平台进料口', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
|
'6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_3de82501-2521-11ed-884a-e4246c7d1635_2096301_2173187.jpg'], 'groupName': '全体人员', 'similarity': 96, 'sex': 1, 'cardType': 1, 'name': '石非凡', 'devPersonId': '46', 'id': '371324199803243658', 'type': 0}], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220826/1/dsf_3de82501-2521-11ed-884a-e4246c7d1635_1825520_2088390.jpg', 'eye': 0, 'alarmType': 1001003, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 23, 'szSerialUUID': '', 'channelName': '窑头平台进料口', 'beginTime': 1661506557, 'endTime': 1661506557, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001003, 'channelSeq': 23, 'orgCode': '001001001', 'channelName': '窑头平台进料口', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
|
||||||
|
@ -236,7 +247,7 @@ class TestViewSet(CustomGenericViewSet):
|
||||||
Dept.objects.get_queryset(all=True).filter(type='rparty').delete(soft=False)
|
Dept.objects.get_queryset(all=True).filter(type='rparty').delete(soft=False)
|
||||||
if 'event' in datas:
|
if 'event' in datas:
|
||||||
from apps.ecm.models import Event
|
from apps.ecm.models import Event
|
||||||
Event.objects.get_queryset(all=True).delete()
|
Event.objects.all().delete()
|
||||||
if 'opm' in datas:
|
if 'opm' in datas:
|
||||||
from apps.opm.models import Operation
|
from apps.opm.models import Operation
|
||||||
Operation.objects.all().delete()
|
Operation.objects.all().delete()
|
||||||
|
|
|
@ -87,4 +87,4 @@ def opl_task(vc_codes: list, opl_id: str):
|
||||||
while True:
|
while True:
|
||||||
for i in vchannels:
|
for i in vchannels:
|
||||||
Thread(target=snap_and_analyse, args=(i, algo_codes, opl)).start()
|
Thread(target=snap_and_analyse, args=(i, algo_codes, opl)).start()
|
||||||
time.sleep(2)
|
time.sleep(4)
|
||||||
|
|
|
@ -93,3 +93,27 @@ def opl_start(ticket: Ticket):
|
||||||
task = opl_task.delay(vc_codes, opl_id)
|
task = opl_task.delay(vc_codes, opl_id)
|
||||||
opl.mtask_id = task.task_id
|
opl.mtask_id = task.task_id
|
||||||
opl.save()
|
opl.save()
|
||||||
|
|
||||||
|
|
||||||
|
def opl_end(ticket: Ticket):
|
||||||
|
"""
|
||||||
|
作业许可证关闭时执行
|
||||||
|
"""
|
||||||
|
opl = ticket.opl
|
||||||
|
if opl.mtask_id:
|
||||||
|
from celery.app.control import Control
|
||||||
|
from server.celery import app
|
||||||
|
celery_control = Control(app=app)
|
||||||
|
# 关闭作业视频监控任务
|
||||||
|
celery_control.revoke(opl.mtask_id, terminate=True)
|
||||||
|
opl.mtask_id = None
|
||||||
|
opl.save()
|
||||||
|
operation = opl.operation
|
||||||
|
opls = Opl.objects.filter(operation=operation)
|
||||||
|
opls.filter(ticket=None).delete() # 删除无用许可证
|
||||||
|
states = opls.values_list('ticket__state__type', flat=True)
|
||||||
|
if 0 in states or 1 in states: # 查看工单状态
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
operation.state = Operation.OP_CLOSE
|
||||||
|
operation.save()
|
|
@ -7,30 +7,7 @@ from celery import shared_task
|
||||||
from apps.wf.models import Ticket
|
from apps.wf.models import Ticket
|
||||||
|
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
|
||||||
def opl_end(ticket_id):
|
|
||||||
"""
|
|
||||||
作业许可证关闭时执行
|
|
||||||
"""
|
|
||||||
ticket = Ticket.objects.get(id=ticket_id)
|
|
||||||
opl = ticket.opl
|
|
||||||
if opl.mtask_id:
|
|
||||||
from celery.app.control import Control
|
|
||||||
from server.celery import app
|
|
||||||
celery_control = Control(app=app)
|
|
||||||
# 关闭作业视频监控任务
|
|
||||||
celery_control.revoke(opl.mtask_id, terminate=True)
|
|
||||||
opl.mtask_id = None
|
|
||||||
opl.save()
|
|
||||||
operation = opl.operation
|
|
||||||
opls = Opl.objects.filter(operation=operation)
|
|
||||||
opls.filter(ticket=None).delete() # 删除无用许可证
|
|
||||||
states = opls.values_list('ticket__state__type', flat=True)
|
|
||||||
if 0 in states or 1 in states: # 查看工单状态
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
operation.state = Operation.OP_CLOSE
|
|
||||||
operation.save()
|
|
||||||
|
|
||||||
|
|
||||||
# @shared_task(base=CustomTask)
|
# @shared_task(base=CustomTask)
|
||||||
|
|
|
@ -210,9 +210,9 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
|
||||||
{
|
{
|
||||||
"category": "alarm",
|
"category": "alarm",
|
||||||
},
|
},
|
||||||
{
|
# {
|
||||||
"category": "state",
|
# "category": "state",
|
||||||
}
|
# }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
@ -112,11 +112,19 @@ class TicketSerializer(CustomModelSerializer):
|
||||||
class TicketListSerializer(CustomModelSerializer):
|
class TicketListSerializer(CustomModelSerializer):
|
||||||
workflow_ = WorkflowSimpleSerializer(source='workflow', read_only=True)
|
workflow_ = WorkflowSimpleSerializer(source='workflow', read_only=True)
|
||||||
state_ = StateSimpleSerializer(source='state', read_only=True)
|
state_ = StateSimpleSerializer(source='state', read_only=True)
|
||||||
|
participant_ = serializers.SerializerMethodField()
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Ticket
|
model = Ticket
|
||||||
fields = ['id', 'title', 'sn', 'workflow', 'workflow_', 'state', 'state_',
|
fields = ['id', 'title', 'sn', 'workflow', 'workflow_', 'state', 'state_',
|
||||||
'act_state', 'create_time', 'update_time', 'participant_type', 'create_by', 'ticket_data']
|
'act_state', 'create_time', 'update_time', 'participant_type', 'create_by', 'ticket_data',
|
||||||
|
'participant_']
|
||||||
|
|
||||||
|
def get_participant_(self, obj):
|
||||||
|
if obj.participant_type == 1:
|
||||||
|
return UserSimpleSerializer(instance=User.objects.get(id=obj.participant)).data
|
||||||
|
elif obj.participant_type == 2:
|
||||||
|
return UserSimpleSerializer(instance=User.objects.filter(id__in=obj.participant), many=True).data
|
||||||
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def setup_eager_loading(queryset):
|
def setup_eager_loading(queryset):
|
||||||
|
@ -181,6 +189,7 @@ class TicketDetailSerializer(CustomModelSerializer):
|
||||||
class TicketFlowSerializer(CustomModelSerializer):
|
class TicketFlowSerializer(CustomModelSerializer):
|
||||||
participant_ = UserSimpleSerializer(source='participant', read_only=True)
|
participant_ = UserSimpleSerializer(source='participant', read_only=True)
|
||||||
state_ = StateSimpleSerializer(source='state', read_only=True)
|
state_ = StateSimpleSerializer(source='state', read_only=True)
|
||||||
|
transition_attribute = serializers.CharField(source='transition.attribute_type', read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TicketFlow
|
model = TicketFlow
|
||||||
|
@ -190,6 +199,7 @@ class TicketFlowSerializer(CustomModelSerializer):
|
||||||
class TicketFlowSimpleSerializer(CustomModelSerializer):
|
class TicketFlowSimpleSerializer(CustomModelSerializer):
|
||||||
participant_ = UserSimpleSerializer(source='participant', read_only=True)
|
participant_ = UserSimpleSerializer(source='participant', read_only=True)
|
||||||
state_ = StateSimpleSerializer(source='state', read_only=True)
|
state_ = StateSimpleSerializer(source='state', read_only=True)
|
||||||
|
transition_attribute = serializers.CharField(source='transition.attribute_type', read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TicketFlow
|
model = TicketFlow
|
||||||
|
|
Loading…
Reference in New Issue