门禁重新授权

This commit is contained in:
曹前明 2022-09-16 07:50:01 +08:00
parent fcffe29f05
commit b90fe9078f
2 changed files with 35 additions and 31 deletions

View File

@ -98,8 +98,9 @@ class EmployeeImproveSerializer(CustomModelSerializer):
class ChannelAuthoritySerializer(serializers.Serializer): class ChannelAuthoritySerializer(serializers.Serializer):
pks = serializers.ListField(child=serializers.CharField(max_length=20), label="员工ID列表") # pks = serializers.ListField(child=serializers.CharField(max_length=20), label="员工ID列表")
channels = serializers.ListField(child=serializers.CharField(max_length=20), label="门通道ID列表") start_time = serializers.DateTimeField(label="开始时间")
end_time = serializers.DateTimeField(label="结束时间")
class EmployeeSerializer(CustomModelSerializer): class EmployeeSerializer(CustomModelSerializer):

View File

@ -19,6 +19,7 @@ from apps.hrm.serializers import (CertificateCreateUpdateSerializer, Certificate
EmployeeNotWorkRemarkSerializer, EmployeeNotWorkRemarkSerializer,
EmployeeSerializer, EmployeeSerializer,
NotWorkRemarkListSerializer) NotWorkRemarkListSerializer)
from apps.hrm.services import HrmService
from apps.third.clients import dhClient from apps.third.clients import dhClient
from apps.third.tapis import dhapis from apps.third.tapis import dhapis
@ -122,38 +123,40 @@ class EmployeeViewSet(CustomModelViewSet):
raise ParseError(**NO_NEED_LEVEL_REMARK) raise ParseError(**NO_NEED_LEVEL_REMARK)
@transaction.atomic @transaction.atomic
@action(methods=['post'], detail=False, perms_map={'post': 'employee.channel_authority'}, @action(methods=['post'], detail=True, perms_map={'post': 'employee.channel_authority'},
serializer_class=ChannelAuthoritySerializer) serializer_class=serializers.Serializer)
def channel_authority(self, request, pk=None): def channel_authority(self, request, pk=None):
"""门通道授权 """重新门禁授权
门通道授权 重新门禁授权
""" """
serializer = self.get_serializer(data=request.data) obj = self.get_object()
serializer.is_valid(raise_exception=True) if obj.third_info.get('dh_face_card', None):
vdata = serializer.validated_data HrmService.door_auth()
objs = Employee.objects.filter(pk__in=vdata['pks'], third_info__dh_face_card__isnull=False) else:
infos = objs.values('third_info') raise ParseError('该员工缺少主卡')
cards = [] # objs = Employee.objects.filter(pk__in=vdata['pks'], third_info__dh_face_card__isnull=False)
for i in infos: # infos = objs.values('third_info')
if isinstance(i['third_info'], dict) and 'dh_face_card' in i['third_info']: # cards = []
cards.append(i['third_info']['dh_face_card']) # for i in infos:
details = [] # if isinstance(i['third_info'], dict) and 'dh_face_card' in i['third_info']:
for i in vdata['channels']: # cards.append(i['third_info']['dh_face_card'])
details.append({ # details = []
"privilegeType": 1, # for i in vdata['channels']:
"resouceCode": i # details.append({
}) # "privilegeType": 1,
if cards and details: # "resouceCode": i
json_data = { # })
"cardNumbers": cards, # if cards and details:
"timeQuantumId": 1, # json_data = {
"cardPrivilegeDetails": details # "cardNumbers": cards,
} # "timeQuantumId": 1,
dhClient.request(**dhapis['card_door_authority'], json=json_data) # "cardPrivilegeDetails": details
for i in objs: # }
i.third_info['dh_channels'] = vdata['channels'] # dhClient.request(**dhapis['card_door_authority'], json=json_data)
Employee.objects.bulk_update(objs, fields=['third_info']) # for i in objs:
# i.third_info['dh_channels'] = vdata['channels']
# Employee.objects.bulk_update(objs, fields=['third_info'])
return Response() return Response()
@transaction.atomic @transaction.atomic