diff --git a/apps/am/serializers.py b/apps/am/serializers.py index 79c99640..7c6a28b5 100644 --- a/apps/am/serializers.py +++ b/apps/am/serializers.py @@ -55,18 +55,10 @@ class AccessCreateSerializer(CustomModelSerializer): class AccessSerializer(CustomModelSerializer): - obj_ = serializers.SerializerMethodField() + employee_name = serializers.CharField(source='employee.name', read_only=True) + post_name = serializers.CharField(source='post.name', read_only=True) + dept_name = serializers.CharField(source='dept.name', read_only=True) class Meta: model = Access fields = '__all__' - - def get_obj_(self, obj): - if obj.obj_cate == 'employee': - ep = Employee.objects.filter(id=obj.obj).first() - if ep: - return {'id': ep.id, 'name': ep.name} - elif obj.obj_cate == 'post': - pt = Post.objects.filter(id=obj.obj).first() - if pt: - return {'id': pt.id, 'name': pt.name} diff --git a/apps/am/views.py b/apps/am/views.py index 82f75971..297542a9 100755 --- a/apps/am/views.py +++ b/apps/am/views.py @@ -48,4 +48,5 @@ class AccessViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, CustomG queryset = Access.objects.all() create_serializer_class = AccessCreateSerializer serializer_class = AccessSerializer - filterset_fields = ['area', 'type', 'obj_cate', 'post', 'dept'] + filterset_fields = ['area', 'type', 'obj_cate', 'post', 'dept', 'employee'] + select_related_fields = ['area', 'post', 'dept', 'employee'] diff --git a/apps/ecm/service.py b/apps/ecm/service.py index 93fb6cbb..61f89242 100644 --- a/apps/ecm/service.py +++ b/apps/ecm/service.py @@ -24,12 +24,14 @@ class EcmService: """事件处理服务 """ - ep_default_dict = { - 'area_fix_id': None, # 当前所在固定区域ID - 'time0': None, # 定位首次出现时间戳 - "time1": None, # 首次在该区域时间戳 - "time2": int(time.time()), # 当前时间戳 - } + @classmethod + def get_ep_default(cls): + return { + 'area_fix_id': None, # 当前所在固定区域ID + 'time0': None, # 定位首次出现时间戳 + "time1": None, # 首次在该区域时间戳 + "time2": int(time.time()), # 当前时间戳 + } def create_remind_and_speak(cls): """ @@ -91,9 +93,9 @@ class EcmService: # 更新人员位置信息缓存 key_str = 'ep_{}'.format(blts.employee.id) ep_loc_dict = cache.get_or_set( - key_str, cls.ep_default_dict, timeout=None + key_str, cls.get_ep_default(), timeout=None ) - if ep_loc_dict['area_fix_id'] != area.id: # 如果区域未变化则不动 + if ep_loc_dict['area_fix_id'] != area.id: # 如果区域未变化则不动 ep_loc_dict['time1'] = ep_loc_dict['time2'] ep_loc_dict['area_fix_id'] = area.id cache.set(key_str, ep_loc_dict) @@ -166,7 +168,7 @@ class EcmService: time2 = int(time.time()) key_str = 'ep_{}'.format(blts.employee.id) ep_loc_dict = cache.get_or_set( - key_str, cls.ep_default_dict, timeout=None + key_str, cls.get_ep_default(), timeout=None ) ep_loc_dict['time2'] = time2 # 从缓存里获取固定区域列表信息