develp clean data bug

This commit is contained in:
曹前明 2022-08-31 15:07:15 +08:00
parent 586fdfb219
commit ee6177371a
7 changed files with 67 additions and 40 deletions

View File

@ -18,3 +18,8 @@ class TestTaskSerializer(serializers.Serializer):
class CleanDataSerializer(serializers.Serializer):
datas = serializers.ListField(child=serializers.CharField(), label='数据分类列表', required=False, allow_null=True)
class TestAlgoSerializer(serializers.Serializer):
face_img = serializers.CharField()
global_img = serializers.CharField()

View File

@ -5,11 +5,13 @@ from rest_framework.permissions import IsAdminUser
from rest_framework.response import Response
from rest_framework.serializers import Serializer
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 rest_framework.exceptions import APIException
from apps.ecm.service import create_remind, notify_event
from apps.system.tasks import show
from apps.third.clients import dhClient
from apps.utils.sms import send_sms
from apps.utils.speech import generate_voice
@ -161,17 +163,26 @@ class TestViewSet(CustomGenericViewSet):
create_remind(event, params={'area': '生产车间', 'employee': '访客石非凡', 'event': '未带安全帽'})
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):
"""测试算法
"""测试算法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
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}
@ -236,7 +247,7 @@ class TestViewSet(CustomGenericViewSet):
Dept.objects.get_queryset(all=True).filter(type='rparty').delete(soft=False)
if 'event' in datas:
from apps.ecm.models import Event
Event.objects.get_queryset(all=True).delete()
Event.objects.all().delete()
if 'opm' in datas:
from apps.opm.models import Operation
Operation.objects.all().delete()

View File

@ -87,4 +87,4 @@ def opl_task(vc_codes: list, opl_id: str):
while True:
for i in vchannels:
Thread(target=snap_and_analyse, args=(i, algo_codes, opl)).start()
time.sleep(2)
time.sleep(4)

View File

@ -93,3 +93,27 @@ def opl_start(ticket: Ticket):
task = opl_task.delay(vc_codes, opl_id)
opl.mtask_id = task.task_id
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()

View File

@ -7,30 +7,7 @@ from celery import shared_task
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)

View File

@ -210,9 +210,9 @@ class DhCommonViewSet(CreateModelMixin, CustomGenericViewSet):
{
"category": "alarm",
},
{
"category": "state",
}
# {
# "category": "state",
# }
]
}
],

View File

@ -112,11 +112,19 @@ class TicketSerializer(CustomModelSerializer):
class TicketListSerializer(CustomModelSerializer):
workflow_ = WorkflowSimpleSerializer(source='workflow', read_only=True)
state_ = StateSimpleSerializer(source='state', read_only=True)
participant_ = serializers.SerializerMethodField()
class Meta:
model = Ticket
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
def setup_eager_loading(queryset):
@ -181,6 +189,7 @@ class TicketDetailSerializer(CustomModelSerializer):
class TicketFlowSerializer(CustomModelSerializer):
participant_ = UserSimpleSerializer(source='participant', read_only=True)
state_ = StateSimpleSerializer(source='state', read_only=True)
transition_attribute = serializers.CharField(source='transition.attribute_type', read_only=True)
class Meta:
model = TicketFlow
@ -190,6 +199,7 @@ class TicketFlowSerializer(CustomModelSerializer):
class TicketFlowSimpleSerializer(CustomModelSerializer):
participant_ = UserSimpleSerializer(source='participant', read_only=True)
state_ = StateSimpleSerializer(source='state', read_only=True)
transition_attribute = serializers.CharField(source='transition.attribute_type', read_only=True)
class Meta:
model = TicketFlow