diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index 1ff86283..2e227dad 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -98,8 +98,9 @@ class EmployeeImproveSerializer(CustomModelSerializer): class ChannelAuthoritySerializer(serializers.Serializer): - pks = serializers.ListField(child=serializers.CharField(max_length=20), label="员工ID列表") - channels = serializers.ListField(child=serializers.CharField(max_length=20), label="门通道ID列表") + # pks = serializers.ListField(child=serializers.CharField(max_length=20), label="员工ID列表") + start_time = serializers.DateTimeField(label="开始时间") + end_time = serializers.DateTimeField(label="结束时间") class EmployeeSerializer(CustomModelSerializer): diff --git a/apps/hrm/views.py b/apps/hrm/views.py index cace99be..8dfe4b29 100755 --- a/apps/hrm/views.py +++ b/apps/hrm/views.py @@ -19,6 +19,7 @@ from apps.hrm.serializers import (CertificateCreateUpdateSerializer, Certificate EmployeeNotWorkRemarkSerializer, EmployeeSerializer, NotWorkRemarkListSerializer) +from apps.hrm.services import HrmService from apps.third.clients import dhClient from apps.third.tapis import dhapis @@ -122,38 +123,40 @@ class EmployeeViewSet(CustomModelViewSet): raise ParseError(**NO_NEED_LEVEL_REMARK) @transaction.atomic - @action(methods=['post'], detail=False, perms_map={'post': 'employee.channel_authority'}, - serializer_class=ChannelAuthoritySerializer) + @action(methods=['post'], detail=True, perms_map={'post': 'employee.channel_authority'}, + serializer_class=serializers.Serializer) def channel_authority(self, request, pk=None): - """门通道授权 + """重新门禁授权 - 门通道授权 + 重新门禁授权 """ - serializer = self.get_serializer(data=request.data) - serializer.is_valid(raise_exception=True) - vdata = serializer.validated_data - objs = Employee.objects.filter(pk__in=vdata['pks'], third_info__dh_face_card__isnull=False) - infos = objs.values('third_info') - cards = [] - for i in infos: - if isinstance(i['third_info'], dict) and 'dh_face_card' in i['third_info']: - cards.append(i['third_info']['dh_face_card']) - details = [] - for i in vdata['channels']: - details.append({ - "privilegeType": 1, - "resouceCode": i - }) - if cards and details: - json_data = { - "cardNumbers": cards, - "timeQuantumId": 1, - "cardPrivilegeDetails": details - } - dhClient.request(**dhapis['card_door_authority'], json=json_data) - for i in objs: - i.third_info['dh_channels'] = vdata['channels'] - Employee.objects.bulk_update(objs, fields=['third_info']) + obj = self.get_object() + if obj.third_info.get('dh_face_card', None): + HrmService.door_auth() + else: + raise ParseError('该员工缺少主卡') + # objs = Employee.objects.filter(pk__in=vdata['pks'], third_info__dh_face_card__isnull=False) + # infos = objs.values('third_info') + # cards = [] + # for i in infos: + # if isinstance(i['third_info'], dict) and 'dh_face_card' in i['third_info']: + # cards.append(i['third_info']['dh_face_card']) + # details = [] + # for i in vdata['channels']: + # details.append({ + # "privilegeType": 1, + # "resouceCode": i + # }) + # if cards and details: + # json_data = { + # "cardNumbers": cards, + # "timeQuantumId": 1, + # "cardPrivilegeDetails": details + # } + # dhClient.request(**dhapis['card_door_authority'], json=json_data) + # for i in objs: + # i.third_info['dh_channels'] = vdata['channels'] + # Employee.objects.bulk_update(objs, fields=['third_info']) return Response() @transaction.atomic