Browse Source

设备数量等于1导出N/A

guanhailong 2 years ago
parent
commit
311e038bf7
1 changed files with 12 additions and 7 deletions
  1. 12 7
      AdminController/ServeManagementController.py

+ 12 - 7
AdminController/ServeManagementController.py

@@ -98,7 +98,7 @@ class serveManagement(View):
             elif operation == 'deviceAttritionAlert':  # 流失预警
                 return self.deviceAttritionAlert(request_dict, response, request)
             elif operation == 'deactivationPackage':  # 停用套餐
-                return self.deactivationPackage(userID, request_dict, response)
+                return self.deactivationPackage(request_dict, response)
             else:
                 return response.json(404)
 
@@ -1360,8 +1360,8 @@ class serveManagement(View):
             cursor.close()  # 执行完,关闭
             connection.close()
             result_list = []
-            more_list = []  # 多个参数查结果
-            new_list = []  # 单独一个参数查结果
+            more_list = []  # 多个参数查结果
+            new_list = []  # 单独一个参数查结果
             col_names = [desc[0] for desc in cursor.description]
             for uid_type in uid_type_tuple:
                 uid_dict = dict(zip(col_names, uid_type))
@@ -1432,7 +1432,7 @@ class serveManagement(View):
             meg = '异常详情,errLine:{}, errMsg:{}'.format(e.__traceback__.tb_lineno, repr(e))
             return response.json(500, meg)
 
-    def deactivationPackage(self, userID, request_dict, response):
+    def deactivationPackage(self, request_dict, response):
         """
         停用套餐
         @param request_dict:
@@ -1507,6 +1507,9 @@ class serveManagement(View):
             return response.json(500, repr(e))
 
     def cloudDataExport(self, request_dict, response):
+        """
+        流失预警导出功能
+        """
         cursor = connection.cursor()
         sql = "SELECT t1.userID_id, du.username, t1.uid, t1.addTime, t1.use_status, t1.`day`, t1.grade FROM(SELECT t1.userID_id, t1.uid, t1.addTime, t1.use_status, t1.`day`, t1.grade FROM(SELECT t1.userID_id, t1.uid, t1.addTime, t1.use_status, t1.`day`,(CASE WHEN t1.`day` >= '15' AND t1.`day` < '25' THEN '一号预警' WHEN t1.use_status = '1' AND t1.`day` >= '25' THEN '二号预警' WHEN t1.use_status = 2 AND t1.`day` >= '25' THEN '八号预警' ELSE '预警取消' END ) AS grade FROM(SELECT t1.userID_id, t1.uid, t1.addTime, t1.use_status, t1.`day` FROM(SELECT t1.userID_id, t1.uid, t1.addTime, t1.use_status, TIMESTAMPDIFF(DAY,FROM_UNIXTIME(t1.addTime, '%Y-%m-%d' ),DATE_FORMAT( NOW(), '%Y-%m-%d' )) AS 'day' FROM (SELECT di.userID_id, vub.uid, vub.addTime, vub.use_status FROM vod_uid_bucket AS vub, device_info AS di WHERE vub.uid = di.UID AND vub.addTime > '1669824000' GROUP BY di.userID_id) AS t1 WHERE t1.uid NOT IN (SELECT uid FROM uid_cloud_storage_count)) AS t1 WHERE t1.`day`>='15' AND t1.userID_id is NOT NULL) AS t1 ORDER BY t1.userID_id)AS t1 WHERE t1.userID_id NOT IN (SELECT di.userID_id FROM `uid_cloud_storage_count` AS vcsc LEFT JOIN device_info AS di ON vcsc.uid = di.UID WHERE di.userID_id is NOT NULL))AS t1 LEFT JOIN device_user AS du ON t1.userID_id = du.userID order by t1.addTime "
         cursor.execute(sql)
@@ -1534,12 +1537,12 @@ class serveManagement(View):
                             device_type_qs = DeviceTypeModel.objects.filter(type=uid_set_qs[0]['device_type']).values(
                                 'model')
                             model = device_type_qs[0]['model'] if device_type_qs.exists() else ''
+                            #  判断设备是否为ipc设备和是否支持云存
                             if model == 2:
                                 if len(uid_set_qs[0]['ucode']) > 4:
                                     number = uid_set_qs[0]['ucode'][-4]
                                 else:
                                     continue
-                                #  判断设备是否为ipc设备和是否支持云存
                                 if number in ['4', '5']:
                                     device_number += 1
                             else:
@@ -1547,7 +1550,7 @@ class serveManagement(View):
                         item['device_number'] = device_number
                     item['other_device'] = 0
                     not_upload_list.append(item)
-                #  创建Excel
+                #  创建Excel,导出所有流失预警数据
                 file_name = "流失预警.xls"
                 if not_upload_list:
                     ws = xlwt.Workbook(encoding="UTF-8")
@@ -1557,7 +1560,7 @@ class serveManagement(View):
                     w.write(0, 2, u'设备UID')
                     w.write(0, 3, u'设备自云存开通起多少天没有上传数据')
                     w.write(0, 4, u'设备数量')
-                    w.write(0, 5, u'用户是否上传过数据')
+                    w.write(0, 5, u'用户有无上传过数据')
                     w.write(0, 6, u'是否有有效期内的付费套餐')
                     w.write(0, 7, u'预警级别')
                     excel_row = 1
@@ -1567,6 +1570,8 @@ class serveManagement(View):
                         data_uid = obj['uid']
                         data_day = obj['day']
                         data_device_number = obj['device_number']
+                        if data_device_number == 1:
+                            data_device_number = 'N/A'
                         data_use_status = obj['use_status']
                         if data_use_status == 1:
                             data_use_status = '有'