diff --git a/apps/ecm/service.py b/apps/ecm/service.py index 8465c258..2accbbd7 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -478,6 +478,7 @@ def loc_change(data): ep_loc_dict['time1'] = time2 ep_loc_dict['area_fix_id'] = area_fix['id'] if area_fix else None cache.set(key_str, ep_loc_dict) + myLogger.info('人员位置:' + str(ep_loc_dict)) return ep_loc_dict diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index 395db415..63fe2347 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -1,6 +1,7 @@ from datetime import datetime, timedelta from rest_framework.serializers import ModelSerializer from rest_framework import serializers +from apps.ecm.service import get_ep_default from apps.hrm.services import HrmService from apps.utils.fields import MyFilePathField @@ -13,7 +14,7 @@ from django.db import transaction from apps.third.clients import dhClient from apps.third.tapis import dhapis from django.conf import settings - +from django.core.cache import cache from apps.utils.tools import check_phone_e @@ -126,6 +127,7 @@ class EmployeeSerializer(CustomModelSerializer): class EmployeeDetailSerializer(EmployeeSerializer): door_range = serializers.SerializerMethodField() + location = serializers.SerializerMethodField() def get_door_range(self, obj): third_info = obj.third_info @@ -133,6 +135,13 @@ class EmployeeDetailSerializer(EmployeeSerializer): if dh_face_card: _, res = dhClient.request(**dhapis['card_detail'], params={'cardNumber': dh_face_card}) return [res['startDate'], res['endDate']] + + def get_location(self, obj): + key_str = 'ep_{}'.format(obj.id) + ep_loc_dict = cache.get_or_set( + key_str, get_ep_default(), timeout=None + ) + return ep_loc_dict class EmployeeNotWorkRemarkSerializer(ModelSerializer): diff --git a/apps/system/views.py b/apps/system/views.py index 95e98ab5..06471fcc 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -431,6 +431,22 @@ class UserViewSet(CustomModelViewSet): # self.request.query_params._mutable = True # self.request.query_params.setdefault('type', 'employee') # return super().filter_queryset(queryset) + def perform_update(self, serializer): + instance = serializer.save() + ep = Employee.objects.get_queryset(all=True).filter(user=instance).first() + ep2 = Employee.objects.get_queryset(all=True).filter(phone=instance.phone).first() + if ep: + pass + elif ep2: + ep = ep2 + else: + ep = Employee() + ep.user = instance + ep.name = instance.name + ep.phone = instance.phone + ep.type = instance.type + ep.is_deleted = False + ep.save() def create(self, request, *args, **kwargs): """创建用户