|
|
|
@ -1,4 +1,5 @@ |
|
|
|
import pymysql |
|
|
|
import pymysql |
|
|
|
|
|
|
|
from chinese_calendar import is_holiday |
|
|
|
from pymysql.cursors import DictCursor |
|
|
|
from pymysql.cursors import DictCursor |
|
|
|
from ai.models import * |
|
|
|
from ai.models import * |
|
|
|
from ai.models import TestCinema |
|
|
|
from ai.models import TestCinema |
|
|
|
@ -173,6 +174,89 @@ class GetData: |
|
|
|
} |
|
|
|
} |
|
|
|
return self.format_to_csv(sell_data, sell_data_mapping) |
|
|
|
return self.format_to_csv(sell_data, sell_data_mapping) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 按工作日和节假日计算销售数据 |
|
|
|
|
|
|
|
def get_sell_data_by_day_type(self, start_datetime, end_datetime): |
|
|
|
|
|
|
|
# 获取过去7天的数据 |
|
|
|
|
|
|
|
print('get_sell_data_by_day_type_start_datetime', start_datetime) |
|
|
|
|
|
|
|
date_list = [datetime.datetime.strptime(start_datetime, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=n) for n |
|
|
|
|
|
|
|
in range(-7, 0, 1)] |
|
|
|
|
|
|
|
print('get_sell_data_by_day_type', [n for n in range(-7, 0, 1)]) |
|
|
|
|
|
|
|
print('get_sell_data_by_day_type', |
|
|
|
|
|
|
|
[datetime.datetime.strptime(start_datetime, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=n) for n |
|
|
|
|
|
|
|
in range(-7, 0, -1)]) |
|
|
|
|
|
|
|
sell_data_dict = { |
|
|
|
|
|
|
|
'holiday': [], |
|
|
|
|
|
|
|
'workday': [], |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
for date in date_list: |
|
|
|
|
|
|
|
start = datetime.datetime.strftime(date, '%Y-%m-%d %H:%M:%S') |
|
|
|
|
|
|
|
end = datetime.datetime.strftime(date + datetime.timedelta(days=1), '%Y-%m-%d %H:%M:%S') |
|
|
|
|
|
|
|
self.cur.execute(GET_SELL_DATA_SELF_CALCULATE, (start, end)) |
|
|
|
|
|
|
|
sell_data = self.cur.fetchall() |
|
|
|
|
|
|
|
print('get_sell_data_by_movie', start, end, sell_data) |
|
|
|
|
|
|
|
if is_holiday(date): |
|
|
|
|
|
|
|
sell_data_dict['holiday'].append(sell_data) |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
sell_data_dict['workday'].append(sell_data) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
movie_sell_data = dict() |
|
|
|
|
|
|
|
for key, val in sell_data_dict.items(): |
|
|
|
|
|
|
|
print(key, val) |
|
|
|
|
|
|
|
for sell in val: |
|
|
|
|
|
|
|
print(sell) |
|
|
|
|
|
|
|
for m in sell: |
|
|
|
|
|
|
|
print(m) |
|
|
|
|
|
|
|
if m['movie_id'] not in movie_sell_data.keys(): |
|
|
|
|
|
|
|
movie_sell_data[m['movie_id']] = { |
|
|
|
|
|
|
|
'movie_alias_name': m['movie_alias_name'], |
|
|
|
|
|
|
|
'movie_id': m['movie_id'], |
|
|
|
|
|
|
|
'viewer': { |
|
|
|
|
|
|
|
'holiday': 0, |
|
|
|
|
|
|
|
'workday': 0, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
'income': { |
|
|
|
|
|
|
|
'holiday': 0.0, |
|
|
|
|
|
|
|
'workday': 0.0, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
'show': { |
|
|
|
|
|
|
|
'holiday': 0, |
|
|
|
|
|
|
|
'workday': 0, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
movie_sell_data[m['movie_id']]['viewer'][key] += int(m['total_viewers']) |
|
|
|
|
|
|
|
movie_sell_data[m['movie_id']]['income'][key] += float(m['total_income']) |
|
|
|
|
|
|
|
movie_sell_data[m['movie_id']]['show'][key] += int(m['total_show']) |
|
|
|
|
|
|
|
print('get_sell_data_by_day_type', movie_sell_data) |
|
|
|
|
|
|
|
movie_sell_data_list = [] |
|
|
|
|
|
|
|
for m in movie_sell_data.values(): |
|
|
|
|
|
|
|
movie_sell_data_list.append({ |
|
|
|
|
|
|
|
'movie_alias_name': m['movie_alias_name'], |
|
|
|
|
|
|
|
'movie_id': m['movie_id'], |
|
|
|
|
|
|
|
'average_viewer_workday': round( |
|
|
|
|
|
|
|
float(0 if m['show']['workday'] == 0 else m['viewer']['workday'] / m['show']['workday']), 2), |
|
|
|
|
|
|
|
'average_ticket_price_workday': round( |
|
|
|
|
|
|
|
float(0 if m['viewer']['workday'] == 0 else m['income']['workday'] / m['viewer']['workday']), 2), |
|
|
|
|
|
|
|
'average_income_workday': round( |
|
|
|
|
|
|
|
float(0 if m['show']['workday'] == 0 else m['income']['workday'] / m['show']['workday']), 2), |
|
|
|
|
|
|
|
'average_viewer_holiday': round( |
|
|
|
|
|
|
|
float(0 if m['show']['holiday'] == 0 else m['viewer']['holiday'] / m['show']['holiday']), 2), |
|
|
|
|
|
|
|
'average_ticket_price_holiday': round( |
|
|
|
|
|
|
|
float(0 if m['viewer']['holiday'] == 0 else m['income']['holiday'] / m['viewer']['holiday']), 2), |
|
|
|
|
|
|
|
'average_income_holiday': round( |
|
|
|
|
|
|
|
float(0 if m['show']['holiday'] == 0 else m['income']['holiday'] / m['show']['holiday']), 2), |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
sell_data_mapping = { |
|
|
|
|
|
|
|
'movie_alias_name': '影片别名', |
|
|
|
|
|
|
|
'movie_id': '本地影片id', |
|
|
|
|
|
|
|
'average_viewer_workday': '场均人次(工作日)', |
|
|
|
|
|
|
|
'average_ticket_price_workday': '平均票价(工作日)', |
|
|
|
|
|
|
|
'average_income_workday': '场均收入(工作日)', |
|
|
|
|
|
|
|
'average_viewer_holiday': '场均人次(节假日)', |
|
|
|
|
|
|
|
'average_ticket_price_holiday': '平均票价(节假日)', |
|
|
|
|
|
|
|
'average_income_holiday': '场均收入(节假日)', |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return self.format_to_csv(movie_sell_data_list, sell_data_mapping) |
|
|
|
|
|
|
|
|
|
|
|
# 获取指定范围的影片销售总额 |
|
|
|
# 获取指定范围的影片销售总额 |
|
|
|
def get_total_income(self, start_datetime, end_datetime): |
|
|
|
def get_total_income(self, start_datetime, end_datetime): |
|
|
|
print(self.cur.mogrify(GET_TOTAL_INCOME, (start_datetime, end_datetime, start_datetime, end_datetime))) |
|
|
|
print(self.cur.mogrify(GET_TOTAL_INCOME, (start_datetime, end_datetime, start_datetime, end_datetime))) |
|
|
|
|