瀏覽代碼

全球设备新增设备数据接口

guanhailong 3 年之前
父節點
當前提交
2a9fa4f182
共有 1 個文件被更改,包括 91 次插入4 次删除
  1. 91 4
      AdminController/dataSystemManagement/DeviceDataController.py

+ 91 - 4
AdminController/dataSystemManagement/DeviceDataController.py

@@ -49,14 +49,101 @@ class DeviceDataView(View):
             return self.golbal_type(request, request_dict, response)
         if operation == 'global/active':  # 全球设备活跃分布
             return self.golbal_active(request, request_dict, response)
-        if operation == 'global/addDevice':
+        if operation == 'global/addDevice':  # 全球新增设备数据
             return self.golbal_add_device(request, request_dict, response)
         else:
             return response.json(414)
 
     @classmethod
     def golbal_add_device(cls, request, request_dict, response):
-        pass
+        """
+        全球新增设备数据
+        @param request:请求
+        @param request_dict:请求参数
+        @param response: 响应对象
+        """
+        url_list = CommonService.get_domain_name()
+        try:
+            headers = {
+                'Authorization': request.META.get('HTTP_AUTHORIZATION')
+            }
+            device_list = []
+            device_count = 0
+            type_list = []
+            type_count = 0
+            region_list = []
+            region_count = 0
+            order_list = []
+            order_count = 0
+            for url in url_list:
+                url = url + request.path.replace('global/', '')
+                res = requests.get(url=url, params=request_dict, headers=headers)
+                result = res.json()
+                if result['result_code'] == 0:
+                    for item in result['result']['addDevice']:
+                        flag = 0
+                        for each in device_list:
+                            if item['startTime'] == each['startTime'] and item['endTime'] == each['endTime']:
+                                each['count'] += item['count']
+                                device_count += item['count']
+                                flag = 1
+                                break
+                        if flag == 0:
+                            device_list.append(item)
+                            device_count += item['count']
+                    for item in device_list:
+                        item['rate'] = round(item['count'] / device_count * 100, 2)
+                    for item in result['result']['region']:
+                        flag = 0
+                        for each in region_list:
+                            if item['countryName'] == each['countryName']:
+                                each['count'] += item['count']
+                                region_count += item['count']
+                                flag = 1
+                                break
+                        if flag == 0:
+                            region_list.append(item)
+                            region_count += item['count']
+                    for item in region_list:
+                        item['rate'] = round(item['count'] / region_count * 100, 2)
+                    for item in result['result']['type']:
+                        flag = 0
+                        for each in type_list:
+                            if item['type'] == each['type']:
+                                each['count'] += item['count']
+                                type_count += item['count']
+                                flag = 1
+                                break
+                        if flag == 0:
+                            type_list.append(item)
+                            type_count += item['count']
+                    for item in type_list:
+                        item['rate'] = round(item['count'] / type_count * 100, 2)
+                    for item in result['result']['version']:
+                        flag = 0
+                        for each in order_list:
+                            if item['type'] == each['type']:
+                                each['count'] += item['count']
+                                order_count += item['count']
+                                flag = 1
+                                break
+                        if flag == 0:
+                            order_list.append(item)
+                            order_count += item['count']
+                    for item in order_list:
+                        item['rate'] = round(item['count'] / order_count * 100, 2)
+                else:
+                    return response.json(result['result_code'])
+            res = {
+                'device': device_list,
+                'type': type_list,
+                'region': CommonService.list_sort(region_list),
+                'version': order_list
+            }
+            return response.json(0, res)
+        except Exception as e:
+            print(e)
+            return response.json(500, repr(e))
 
     @classmethod
     def golbal_active(cls, request, request_dict, response):
@@ -110,7 +197,7 @@ class DeviceDataView(View):
                     return response.json(result['result_code'])
 
             res = {
-                'user': type_list,
+                'device': type_list,
                 'region': CommonService.list_sort(region_list)
             }
             return response.json(0, res)
@@ -405,7 +492,7 @@ class DeviceDataView(View):
                 for device_type in device_info_type_qs:
                     type = device_type['Type']
                     name = DEVICE_TYPE.get(type, '未知类型')
-                    res_part['name'] = name if name != 'UNKOWN' else '未知类型'
+                    res_part['type'] = name if name != 'UNKOWN' else '未知类型'
                     type_qs = device_info_qs.filter(UID__in=order_type_list).values('UID').order_by(
                         'UID').distinct().values(
                         'Type')