|
@@ -75,7 +75,8 @@ class ServiceDataView(View):
|
|
|
return response.json(444, {'error param': 'startTime or endTime or timeUnit or storeMealType'})
|
|
|
try:
|
|
|
order_qs = Order_Model.objects.filter(order_type=store_meal_type, status=1,
|
|
|
- addTime__range=(start_time, end_time)).filter(~Q(price='0.00'))
|
|
|
+ addTime__range=(start_time, end_time)).filter(
|
|
|
+ ~Q(price='0.00') & ~Q(price='0'))
|
|
|
count = order_qs.count()
|
|
|
total = order_qs.aggregate(total=Sum('price'))['total']
|
|
|
start_time = datetime.datetime.fromtimestamp(int(start_time))
|
|
@@ -122,17 +123,17 @@ class ServiceDataView(View):
|
|
|
uid_type_dict[device_temp_qs[0]['Type']] = []
|
|
|
uid_type_dict[device_temp_qs[0]['Type']].append(item['UID'])
|
|
|
device_count = len(set(uid_list))
|
|
|
- device_qs = Device_Info.objects.filter(UID__in=uid_list).values('Type').annotate(
|
|
|
- count=Count('Type', distinct=True)).order_by('-count')
|
|
|
- for item in device_qs:
|
|
|
- type_name = DEVICE_TYPE.get(item['Type'], '未知类型')
|
|
|
+ # device_qs = Device_Info.objects.filter(UID__in=uid_list).values('Type').annotate(
|
|
|
+ # count=Count('Type', distinct=True)).order_by('-count')
|
|
|
+ for k, v in uid_type_dict.items():
|
|
|
+ type_name = DEVICE_TYPE.get(k, '未知类型')
|
|
|
type_name = type_name if type_name != 'UNKOWN' else '未知类型'
|
|
|
- type_rate = round(item['count'] / device_count * 100, 2)
|
|
|
- temp_total = order_qs.filter(UID__in=uid_type_dict[item['Type']]).aggregate(total=Sum('price'))['total']
|
|
|
+ type_rate = round(len(v) / device_count * 100, 2)
|
|
|
+ temp_total = order_qs.filter(UID__in=v).aggregate(total=Sum('price'))['total']
|
|
|
total_rate = round(temp_total / total * 100, 2)
|
|
|
device_temp_qs = {
|
|
|
'typeName': type_name,
|
|
|
- 'count': item['count'],
|
|
|
+ 'count': len(v),
|
|
|
'typeRate': type_rate,
|
|
|
'totalMoney': temp_total,
|
|
|
'totalRate': total_rate
|
|
@@ -182,7 +183,8 @@ class ServiceDataView(View):
|
|
|
return response.json(444, {'error param': 'startTime or endTime or timeUnit or storeMealType'})
|
|
|
try:
|
|
|
order_qs = Order_Model.objects.filter(order_type=store_meal_type, status=1,
|
|
|
- addTime__range=(start_time, end_time)).filter(Q(price='0.00'))
|
|
|
+ addTime__range=(start_time, end_time)).filter(
|
|
|
+ Q(price='0.00') | Q(price='0'))
|
|
|
count = order_qs.count()
|
|
|
start_time = datetime.datetime.fromtimestamp(int(start_time))
|
|
|
end_time = datetime.datetime.fromtimestamp(int(end_time))
|
|
@@ -264,7 +266,8 @@ class ServiceDataView(View):
|
|
|
return response.json(444, {'error param': 'startTime or endTime or timeUnit or storeMealType'})
|
|
|
try:
|
|
|
order_gte_start_time_qs = Order_Model.objects.filter(order_type=store_meal_type, status=1,
|
|
|
- addTime__lte=start_time).filter(~Q(price='0.00'))
|
|
|
+ addTime__lte=start_time).filter(
|
|
|
+ ~Q(price='0.00') & ~Q(price='0'))
|
|
|
uid_list = []
|
|
|
for item in order_gte_start_time_qs:
|
|
|
uid_list.append(item.UID)
|
|
@@ -352,12 +355,14 @@ class ServiceDataView(View):
|
|
|
return response.json(444, {'error param': 'startTime or endTime or timeUnit or storeMealType'})
|
|
|
try:
|
|
|
order_gte_start_time_qs = Order_Model.objects.filter(order_type=store_meal_type, status=1,
|
|
|
- addTime__lte=start_time).filter(~Q(price='0.00'))
|
|
|
+ addTime__lte=start_time).filter(
|
|
|
+ ~Q(price='0.00') & ~Q(price='0'))
|
|
|
uid_list = []
|
|
|
for item in order_gte_start_time_qs:
|
|
|
uid_list.append(item.UID)
|
|
|
order_qs = Order_Model.objects.filter(order_type=store_meal_type, status=1,
|
|
|
- addTime__range=(start_time, end_time)).filter(~Q(price='0.00'))
|
|
|
+ addTime__range=(start_time, end_time)).filter(
|
|
|
+ ~Q(price='0.00') & ~Q(price='0'))
|
|
|
total = order_qs.count()
|
|
|
|
|
|
# 订单复购率
|