# 排片数据 GET_SHOW_DATA = """ SELECT hi.cinema_hall_name as hall_name, hi.cinema_hall_id as hall_id, mi.cinema_movie_alias as movie_name, mi.cinema_movie_id as movie_id, mlt.cinema_movie_lang_type_desc as language, DATE_FORMAT(ms.cinema_movie_show_start_time, '%%Y-%%m-%%d') as show_date, DATE_FORMAT(ms.cinema_movie_show_start_time, '%%H:%%i') as start_time, DATE_FORMAT(ms.cinema_movie_show_end_time, '%%H:%%i') as end_time, CAST(TIME_TO_SEC(TIMEDIFF(ms.cinema_movie_show_end_time, ms.cinema_movie_show_start_time)) / 60 AS UNSIGNED) as length, IFNULL(MINUTE(TIMEDIFF(ms.cinema_movie_show_start_time, (SELECT MAX(cinema_movie_show_end_time) FROM cinema_movie_show t WHERE t.cinema_hall_id = ms.cinema_hall_id AND t.cinema_movie_show_start_date = ms.cinema_movie_show_start_date AND t.cinema_del_flag = 1 AND ms.cinema_movie_show_start_time >= t.cinema_movie_show_end_time))), 0) as duration FROM cinema_movie_show ms LEFT JOIN cinema_hall_info hi ON ms.cinema_hall_id = hi.cinema_hall_id LEFT JOIN cinema_movie_info mi ON ms.cinema_movie_id = mi.cinema_movie_id LEFT JOIN cinema_movie_lang_type mlt ON mi.cinema_movie_lang_id = mlt.cinema_movie_lang_type_id WHERE ms.cinema_del_flag = 1 AND ms.cinema_movie_show_start_time >= %s AND ms.cinema_movie_show_start_time <= %s ORDER BY show_date, hall_id, start_time; """ # 获取销售数据 GET_SELL_DATA = """ SELECT md.movie_name, md.movie_id, md.show_date, md.start_time, md.hall_name, md.hall_id, SUM(md.count) as total_count, SUM(md.income) as total_income, md.seat_num, ROUND(IF(SUM(md.income) = 0, 0.0, SUM(md.income) / SUM(md.count)), 2) as average_price, ROUND(SUM(md.count) / md.seat_num * 100, 2) as rate FROM ( -- 售票 SELECT ms.cinema_movie_show_id as cinema_movie_show_id, mi.cinema_movie_alias as movie_name, mi.cinema_movie_id as movie_id, DATE_FORMAT(ms.cinema_movie_show_start_time, '%%Y-%%m-%%d') as show_date, CAST(TIME(ms.cinema_movie_show_start_time) AS CHAR) as start_time, hi.cinema_hall_name as hall_name, hi.cinema_hall_id as hall_id, SUM(IF(sl.cinema_ticket_status <> 3, 1, 0)) as count, SUM(IF(sl.cinema_ticket_status <> 3, sl.cinema_ticket_income, 0)) as income, ms.cinema_hall_seat_num as seat_num FROM cinema_movie_show ms LEFT JOIN cinema_sell_log sl ON ms.cinema_movie_show_id = sl.cinema_movie_show_id JOIN cinema_movie_info mi ON ms.cinema_movie_id = mi.cinema_movie_id JOIN cinema_hall_info hi ON ms.cinema_hall_id = hi.cinema_hall_id WHERE ms.cinema_movie_show_joinflg = 0 AND ms.cinema_movie_show_start_time >= %s AND ms.cinema_movie_show_start_time <= %s AND ms.cinema_del_flag = 1 AND NOT (ms.cinema_movie_show_sold_num = 0 AND ms.cinema_movie_show_status <> 1) GROUP BY ms.cinema_movie_show_id, CAST(ms.cinema_movie_show_id AS CHAR) UNION -- 补登 SELECT ms.cinema_movie_show_id as cinema_movie_show_id, mi.cinema_movie_alias as movie_name, mi.cinema_movie_id as movie_id, DATE_FORMAT(ms.cinema_movie_show_start_time, '%%Y-%%m-%%d') as show_date, CAST(TIME(ms.cinema_movie_show_start_time) AS CHAR) as start_time, hi.cinema_hall_name as hall_name, hi.cinema_hall_id as hall_id, SUM(sa.cinema_sell_add_num) as count, SUM(sa.cinema_sell_add_total) as income, ms.cinema_hall_seat_num as seat_num FROM cinema_sell_add sa LEFT JOIN cinema_movie_show ms ON sa.cinema_sell_add_showid = ms.cinema_movie_show_id LEFT JOIN cinema_hall_info hall ON ms.cinema_hall_id = hall.cinema_hall_id LEFT JOIN cinema_show_policy_map spm ON sa.cinema_sell_add_showid = spm.cinema_movie_show_id AND sa.cinema_sell_add_policy = spm.cinema_show_policy_map_id JOIN cinema_hall_info hi ON ms.cinema_hall_id = hi.cinema_hall_id JOIN cinema_movie_info mi ON ms.cinema_movie_id = mi.cinema_movie_id WHERE ms.cinema_movie_show_joinflg = 0 AND ms.cinema_movie_show_start_time >= %s AND ms.cinema_movie_show_start_time <= %s AND ms.cinema_del_flag = 1 AND NOT (ms.cinema_movie_show_sold_num = 0 AND ms.cinema_movie_show_status <> 1) GROUP BY ms.cinema_movie_show_id, CAST(ms.cinema_movie_show_id AS CHAR)) as md GROUP BY md.cinema_movie_show_id, CAST(md.cinema_movie_show_id AS CHAR) ORDER BY md.show_date, md.hall_id, md.start_time; """ # 获取指定日期的可放映影片 GET_AVAILABLE_MOVIE = """ SELECT cmi.cinema_movie_alias, cmi.cinema_movie_id, cmi.cinema_movie_time, cmlt.cinema_movie_lang_type_desc as language, scvm.system_const_val_desc as media_type, cmi.cinema_movie_start_datetime, cmi.cinema_movie_end_datetime FROM cinema_movie_info cmi JOIN cinema_movie_lang_type cmlt ON cmi.cinema_movie_lang_id = cmlt.cinema_movie_lang_type_id JOIN system_const_val_map scvm ON cmi.cinema_movie_media_type = scvm.system_const_val_value WHERE scvm.system_const_sub_module = 'new_media_type' AND cmi.cinema_movie_start_datetime <= %s AND cmi.cinema_movie_end_datetime > %s; """ # 获取新上映的影片 GET_NEW_MOVIE = """SELECT cmi.cinema_movie_alias, cmi.cinema_movie_id, cmi.cinema_movie_time, cmlt.cinema_movie_lang_type_desc as language, scvm.system_const_val_desc as media_type, cmi.cinema_movie_start_datetime, cmi.cinema_movie_end_datetime FROM cinema_movie_info cmi JOIN cinema_movie_lang_type cmlt ON cmi.cinema_movie_lang_id = cmlt.cinema_movie_lang_type_id JOIN system_const_val_map scvm ON cmi.cinema_movie_media_type = scvm.system_const_val_value WHERE scvm.system_const_sub_module = 'new_media_type' AND cmi.cinema_movie_start_datetime >= %s AND cmi.cinema_movie_start_datetime <= %s;""" # 获取影厅支持的制式 GET_HALL_MEDIA_TYPE = """ SELECT chi.cinema_hall_name, cms.cinema_hall_id, scvm.system_const_val_desc as media_type FROM cinema_movie_show cms JOIN cinema_movie_info cmi ON cms.cinema_movie_id = cmi.cinema_movie_id JOIN cinema_hall_info chi ON cms.cinema_hall_id = chi.cinema_hall_id JOIN system_const_val_map scvm ON cmi.cinema_movie_media_type = scvm.system_const_val_value WHERE scvm.system_const_sub_module = 'new_media_type' AND chi.cinema_delete_flag = 0 GROUP BY chi.cinema_hall_id, media_type; """ # 获取模板日期 GET_TEMPLATE_DATE = """ SELECT cms.cinema_movie_show_start_date as template_date, COUNT(cinema_movie_show_id) as show_count FROM cinema_movie_show cms WHERE cms.cinema_del_flag = 1 AND cms.cinema_movie_show_start_time >= %s AND cms.cinema_movie_show_start_time <= %s GROUP BY cms.cinema_movie_show_start_date HAVING show_count > (SELECT COUNT(chi.cinema_hall_id) FROM cinema_hall_info chi WHERE chi.cinema_delete_flag = 0) * %s ORDER BY template_date DESC LIMIT 1; """ # 获取目标日期的销售总额 GET_TOTAL_INCOME = """ SELECT SUM(md.income) as total_income FROM ( -- 售票 SELECT SUM(IF(sl.cinema_ticket_status <> 3, sl.cinema_ticket_income, 0)) as income FROM cinema_movie_show ms LEFT JOIN cinema_sell_log sl ON ms.cinema_movie_show_id = sl.cinema_movie_show_id JOIN cinema_movie_info mi ON ms.cinema_movie_id = mi.cinema_movie_id JOIN cinema_hall_info hi ON ms.cinema_hall_id = hi.cinema_hall_id WHERE ms.cinema_movie_show_joinflg = 0 AND ms.cinema_movie_show_start_time >= %s AND ms.cinema_movie_show_start_time <= %s AND ms.cinema_del_flag = 1 AND NOT (ms.cinema_movie_show_sold_num = 0 AND ms.cinema_movie_show_status <> 1) UNION -- 补登 SELECT SUM(sa.cinema_sell_add_total) as income FROM cinema_sell_add sa LEFT JOIN cinema_movie_show ms ON sa.cinema_sell_add_showid = ms.cinema_movie_show_id LEFT JOIN cinema_hall_info hall ON ms.cinema_hall_id = hall.cinema_hall_id LEFT JOIN cinema_show_policy_map spm ON sa.cinema_sell_add_showid = spm.cinema_movie_show_id AND sa.cinema_sell_add_policy = spm.cinema_show_policy_map_id JOIN cinema_hall_info hi ON ms.cinema_hall_id = hi.cinema_hall_id JOIN cinema_movie_info mi ON ms.cinema_movie_id = mi.cinema_movie_id WHERE ms.cinema_movie_show_joinflg = 0 AND ms.cinema_movie_show_start_time >= %s AND ms.cinema_movie_show_start_time <= %s AND ms.cinema_del_flag = 1 AND NOT (ms.cinema_movie_show_sold_num = 0 AND ms.cinema_movie_show_status <> 1)) md """