|
@@ -7,9 +7,11 @@
|
|
|
@Software: PyCharm
|
|
|
"""
|
|
|
import datetime
|
|
|
-
|
|
|
+import openpyxl
|
|
|
import requests
|
|
|
-from django.db.models import Q, Count, Sum
|
|
|
+
|
|
|
+from django.db.models import Sum
|
|
|
+from django.http import HttpResponse
|
|
|
from django.views.generic.base import View
|
|
|
|
|
|
from Model.models import VideoPlaybackTimeModel, Device_User, Device_Info, Order_Model
|
|
@@ -41,6 +43,8 @@ class HomeDataView(View):
|
|
|
return self.query_global_all_data(request, request_dict, response)
|
|
|
elif operation == 'global/salesVolume': # 查询全球销售额数据
|
|
|
return self.query_global_sales_volume_data(request, request_dict, response)
|
|
|
+ elif operation == 'exportData': # 查询全球销售额数据
|
|
|
+ return self.export_data(request_dict, response)
|
|
|
else:
|
|
|
return response.json(414)
|
|
|
|
|
@@ -108,6 +112,8 @@ class HomeDataView(View):
|
|
|
start_time = request_dict.get('startTime', None)
|
|
|
end_time = request_dict.get('endTime', None)
|
|
|
time_unit = request_dict.get('timeUnit', None)
|
|
|
+ if not all([start_time, end_time, time_unit]):
|
|
|
+ return response.json(444, {'error param': 'startTime or endTime or timeUnit'})
|
|
|
try:
|
|
|
order_qs = Order_Model.objects.filter(addTime__range=(start_time, end_time))
|
|
|
start_time = datetime.datetime.fromtimestamp(int(start_time))
|
|
@@ -222,3 +228,38 @@ class HomeDataView(View):
|
|
|
return response.json(0, order_list)
|
|
|
except Exception as e:
|
|
|
return response.json(500, repr(e))
|
|
|
+
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def export_data(cls, request_dict, response):
|
|
|
+ """
|
|
|
+ 下载文件
|
|
|
+ @param request_dict:请求参数
|
|
|
+ @request_dict tableData:表格数据
|
|
|
+ @request_dict fileName:文件名
|
|
|
+ @param response:响应对象
|
|
|
+ @return:
|
|
|
+ """
|
|
|
+ table_data = request_dict.get('tableData', None)
|
|
|
+ sheet_name = request_dict.get('fileName', None)
|
|
|
+ if not all([table_data, sheet_name]):
|
|
|
+ return response.json(444, {'error param': 'tableData or fileName'})
|
|
|
+ table_data = eval(table_data)
|
|
|
+ file_name = sheet_name + '.xlsx'
|
|
|
+ file_path = 'static/static/{}'.format(file_name)
|
|
|
+ try:
|
|
|
+ wb = openpyxl.Workbook()
|
|
|
+ sh = wb.create_sheet(sheet_name, 0)
|
|
|
+ for row, data in enumerate(table_data):
|
|
|
+ row += 1
|
|
|
+ if row == 1:
|
|
|
+ sh.append(list(data.keys()))
|
|
|
+ sh.append(list(data.values()))
|
|
|
+ wb.save(file_path)
|
|
|
+ with open(file_path, 'rb') as f:
|
|
|
+ res = HttpResponse(f)
|
|
|
+ res['Content-Type'] = 'application/octet-stream'
|
|
|
+ res['Content-Disposition'] = 'attachment;filename="{}"'.format(file_name)
|
|
|
+ return res
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|