employee blt relate name 无必要

This commit is contained in:
曹前明 2022-09-06 17:53:12 +08:00
parent d2c03c1101
commit a65dba3185
7 changed files with 80 additions and 8 deletions

View File

@ -17,6 +17,9 @@ from apps.utils.speech import generate_voice
from apps.utils.viewsets import CustomGenericViewSet
from apps.utils.wx import wxClient
from apps.wf.models import State, Transition, Workflow
from django.db import transaction
from apps.utils.snowflake import idWorker
# Create your views here.
@ -188,7 +191,8 @@ class TestViewSet(CustomGenericViewSet):
# 'alarmDate': '1661942981', 'alarmGrade': 2, 'isSave': True, 'unitType': 1, 'unitSeq': 0, 'extend': {'params': {'ObjectType': 'Human', 'GroupId': 30.0, 'ObjectSubType': ''}, 'objectSubType': ''}, 'alarmType': 964, 'channelSeq': 0, 'orgCode': '001', 'channelName': '192.168.10.155_视频通道_1', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'admin', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
# data = {'id': 1662026969203, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '曲阳县金隅水泥厂', 'nodeCode': '1000038$1$0$24', 'deviceCode': '1000038', 'alarmCode': '44df73ba-a423-4479-af70-1f930b00a7e0', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_27257520_27264993.jpg', 'nodeType': 2, 'alarmDate': '1662026965', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_27257520_27264993.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [{'birthday': '2022-8-24', 'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_27264993_27338395.jpg'], 'groupName': '全体人员', 'similarity': 97, 'sex': 1, 'cardType': 1, 'name': '曹前明', 'devPersonId': '48', 'id': '342422199004040175', 'type': 0}], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_26915031_27257520.jpg', 'eye': 0, 'alarmType': 1001003, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 24, 'szSerialUUID': '', 'channelName': '窑头平台值班室', 'beginTime': 1662026965, 'endTime': 1662026965, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001003, 'channelSeq': 24, 'orgCode': '001001001', 'channelName': '窑头平台值班室', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
# data = {'id': 1662032288888, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '曲阳县金隅水泥厂', 'nodeCode': '1000038$1$0$25', 'deviceCode': '1000038', 'alarmCode': 'c3df59cd-59d0-4f46-a32c-d2bf7778b37d', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_44280859_44288676.jpg', 'nodeType': 2, 'alarmDate': '1662032288', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_44280859_44288676.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220901/1/dsf_80fed821-29c9-11ed-884a-e4246c7d1635_44127174_44280859.jpg', 'eye': 0, 'alarmType': 1001000, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 25, 'szSerialUUID': '', 'channelName': '公司大门口', 'beginTime': 1662032284, 'endTime': 1662032284, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001000, 'channelSeq': 25, 'orgCode': '001001001', 'channelName': '公司大门口', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
data = {'id': 1662099853937, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '曲阳县金隅水泥厂', 'nodeCode': '1000038$1$0$24', 'deviceCode': '1000038', 'alarmCode': 'c520e09f-4b5d-4d04-be7b-005386a9b835', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_57321861_57329128.jpg', 'nodeType': 2, 'alarmDate': '1662099849', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_57321861_57329128.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [{'birthday': '2022-8-24', 'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_57329128_57402530.jpg'], 'groupName': '全体人员', 'similarity': 99, 'sex': 1, 'cardType': 1, 'name': '曹前明', 'devPersonId': '48', 'id': '342422199004040175', 'type': 0}], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_56995669_57321861.jpg', 'eye': 0, 'alarmType': 1001003, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 24, 'szSerialUUID': '', 'channelName': '窑头平台值班室', 'beginTime': 1662099849, 'endTime': 1662099849, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001003, 'channelSeq': 24, 'orgCode': '001001001', 'channelName': '窑头平台值班室', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
data = {'id': 1662099853937, 'category': 'alarm', 'method': 'alarm.msg', 'info': {'orgName': '曲阳县金隅水泥厂', 'nodeCode': '1000038$1$0$24', 'deviceCode': '1000038', 'alarmCode': 'c520e09f-4b5d-4d04-be7b-005386a9b835', 'alarmPicture': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_57321861_57329128.jpg', 'nodeType': 2, 'alarmDate': '1662099849', 'alarmGrade': 2, 'isSave': True, 'extend': {'faceImageUrl': ['6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_57321861_57329128.jpg'], 'glass': 0, 'beard': 0, 'candidateInfo': [{'birthday': '2022-8-24', 'faceImageUrl': [
'6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_57329128_57402530.jpg'], 'groupName': '全体人员', 'similarity': 99, 'sex': 1, 'cardType': 1, 'name': '曹前明', 'devPersonId': '48', 'id': '342422199004040175', 'type': 0}], 'sex': 0, 'occurrenceCount': 0, 'deviceCode': '1000038', 'globalScenePicUrl': '6ad010cf-ce45-11ec-9715-e4246c7d1635/20220902/1/dsf_a880f743-2a7e-11ed-884a-e4246c7d1635_56995669_57321861.jpg', 'eye': 0, 'alarmType': 1001003, 'perFlag': -1, 'mouth': 0, 'feature': [], 'isHit': True, 'channelSeq': 24, 'szSerialUUID': '', 'channelName': '窑头平台值班室', 'beginTime': 1662099849, 'endTime': 1662099849, 'age': -1, 'mask': 0}, 'unitType': 1, 'alarmType': 1001003, 'channelSeq': 24, 'orgCode': '001001001', 'channelName': '窑头平台值班室', 'alarmStat': 1, 'isEvent': True}, 'subsystem': 'evo-face', 'userIds': None, 'sid': None, 'domainId': None, 'infoArray': None, 'protocol': None}
dispatch_dahua_event(data=data)
return Response()
@ -220,7 +224,41 @@ class TestViewSet(CustomGenericViewSet):
res = wxClient.send_tem_msg(data=data)
return Response(res)
@action(methods=['post'], detail=False, serializer_class=CleanDataSerializer)
@action(methods=['post'], detail=False, serializer_class=Serializer, permission_classes=[])
@transaction.atomic
def correct_data(self, request, pk=None):
"""修正数据
修正数据
"""
for i in Transition.objects.all():
if i.condition_expression:
pass
else:
i.condition_expression = []
i.save()
# wf = Workflow.objects.get(id='1544859644185415680')
# objs = Workflow.objects.filter(key__istartswith='opl_').exclude(id='1544859644185415680')
# for i in objs:
# for s in State.objects.filter(workflow=wf):
# sta = State()
# sta.id = idWorker.get_id()
# sta.workflow = i
# for f in State._meta.fields:
# if f.name not in ['workflow', 'create_time', 'update_time', 'id']:
# setattr(sta, f.name, getattr(s, f.name))
# sta.save()
# for t in Transition.objects.filter(workflow=wf):
# tr = Transition()
# tr.id = idWorker.get_id()
# tr.workflow = i
# for f in Transition._meta.fields:
# if f.name not in ['workflow', 'create_time', 'update_time', 'id']:
# setattr(tr, f.name, getattr(t, f.name))
# tr.save()
return Response()
@action(methods=['post'], detail=False, serializer_class=CleanDataSerializer, permission_classes=[IsAdminUser])
def clean_data(self, request, pk=None):
"""清空数据

View File

@ -3,13 +3,13 @@ from apps.ecm.models import Event
class EventFilterSet(filters.FilterSet):
start_create = filters.DateFilter(field_name="create_time", lookup_expr='gte')
end_create = filters.DateFilter(field_name="create_time", lookup_expr='lte')
start_create = filters.DateTimeFilter(field_name="create_time", lookup_expr='gte')
end_create = filters.DateTimeFilter(field_name="create_time", lookup_expr='lte')
is_handled = filters.BooleanFilter(method='filter_is_handled')
class Meta:
model = Event
fields = ['cates', 'start_create', 'end_create', 'is_handled']
fields = ['cates', 'start_create', 'end_create', 'is_handled', 'area']
def filter_is_handled(self, queryset, name, value):
if value: # 我的

View File

@ -0,0 +1,20 @@
# Generated by Django 3.2.12 on 2022-09-06 09:52
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('hrm', '0003_alter_employee_type'),
('third', '0003_alter_tdevice_employee'),
]
operations = [
migrations.AlterField(
model_name='tdevice',
name='employee',
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='hrm.employee', verbose_name='当前绑定人员'),
),
]

View File

@ -41,7 +41,7 @@ class TDevice(BaseModel):
related_name='tareas', blank=True)
obj_cate = models.CharField('绑定对象', max_length=20, help_text='people/...', null=True, blank=True)
employee = models.OneToOneField(Employee, verbose_name='当前绑定人员', on_delete=models.SET_NULL,
null=True, blank=True, related_name='ep_tdevice')
null=True, blank=True)
is_clock = models.BooleanField('是否打卡设备', default=False)
access_list = models.JSONField('自动下发人员类型', default=list,
null=False, blank=True, help_text='employee/remployee/visitor')

View File

@ -35,6 +35,7 @@ class BltViewSet(CustomGenericViewSet):
ret['count_employee'] = qs.filter(employee__type='employee').count()
ret['count_remployee'] = qs.filter(employee__type='remployee').count()
ret['count_visitor'] = qs.filter(employee__type='visitor').count()
ret['count_driver'] = qs.filter(employee__type='driver').count()
return Response(ret)
@action(methods=['get'], detail=False, perms_map={'get': '*'})
@ -274,12 +275,16 @@ class TDeviceViewSet(ListModelMixin, UpdateModelMixin, DestroyModelMixin, Custom
blt.obj_cate = 'people'
blt.save()
vdata['obj_cate'] = 'people'
vdata.pop('code')
vdata['blt'] = blt
BltBind.objects.create(**vdata)
elif vdata['type'] == BltBind.BLT_UNBIND:
if blt.employee:
blt.employee = None
blt.save()
vdata['obj_cate'] = 'people'
vdata.pop('code')
vdata['blt'] = blt
BltBind.objects.create(**vdata)
else:
raise ParseError('该定位卡在系统中不存在')

View File

@ -27,7 +27,7 @@ class VisitViewSet(CustomModelViewSet):
update_serializer_class = VisitCreateUpdateSerializer
serializer_class = VisitSerializer
retrieve_serializer_class = VisitDetailSerializer
filterset_fields = ['state', 'create_by']
filterset_fields = ['state', 'create_by', 'purpose']
select_related_fields = ['ticket', 'receptionist', 'ticket__workflow', 'ticket__state']
def get_queryset(self):

View File

@ -62,7 +62,7 @@ class WorkflowViewSet(CustomModelViewSet):
search_fields = ['name', 'description']
filterset_fields = []
ordering_fields = ['create_time']
ordering = ['-create_time']
ordering = ['key', '-create_time']
@action(methods=['get'], detail=True, perms_map={'get': 'workflow.update'},
pagination_class=None, serializer_class=StateSerializer)
@ -117,6 +117,15 @@ class WorkflowViewSet(CustomModelViewSet):
ret['field_list'] = field_list
return Response(ret)
@action(methods=['post'], detail=True, perms_map={'post': 'workflow.clone'},
pagination_class=None, serializer_class=Serializer)
def clone(self, request, pk=None):
"""工作流复制
工作流复制
"""
pass
class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, CustomGenericViewSet):
perms_map = {'get': '*', 'post': 'workflow.update',