门禁重新授权

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):
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):

View File

@ -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