1,修复驿来特没有数据,只特来电有,不生成报表的问题。

2,增加历史记录,每页显示多少条的功能。
This commit is contained in:
2026-07-21 13:30:04 +08:00
parent 404450b779
commit d2ba256889
4 changed files with 96 additions and 31 deletions

View File

@@ -53,7 +53,8 @@ def get_report_history():
page_size = int(request.args.get('page_size', 20))
start_date = request.args.get('start_date')
end_date = request.args.get('end_date')
log_info(f'[报表API] 获取历史记录,第{page}页,日期范围: {start_date or "开始"} ~ {end_date or "结束"}', 'api')
status = request.args.get('status')
log_info(f'[报表API] 获取历史记录,第{page}页,状态: {status or "全部"},日期范围: {start_date or "开始"} ~ {end_date or "结束"}', 'api')
offset = (page - 1) * page_size
@@ -69,6 +70,10 @@ def get_report_history():
where_clauses.append('DATE(end_time) <= %s')
params.append(end_date)
if status is not None and status != '':
where_clauses.append('status = %s')
params.append(int(status))
where_sql = ' AND '.join(where_clauses) if where_clauses else '1=1'
# 查询总数

View File

@@ -370,6 +370,8 @@ def generate_daily_report(config_id, start_time=None, end_time=None):
# 执行查询
orders = execute_query(sql, tuple(params))
# 转换为列表,方便后续添加特来电数据
orders = list(orders) if orders else []
log_info(f"[日报生成] 驿来特查询到 {len(orders)} 条订单", 'report')
@@ -383,8 +385,8 @@ def generate_daily_report(config_id, start_time=None, end_time=None):
log_info(f"[日报生成] 检测到补单记录,将在文件名中添加标记", 'report')
# 检查是否需要合并特来电数据
merge_telecom = config.get('merge_telecom', 0)
telecom_vehicle_no = config.get('telecom_vehicle_no', '')
merge_telecom = config.get('merge_telecom') or 0
telecom_vehicle_no = config.get('telecom_vehicle_no') or ''
if merge_telecom and config['split_type'] == 'company_id' and telecom_vehicle_no:
# 解析车量自编号(支持逗号分隔的多个)
@@ -392,6 +394,7 @@ def generate_daily_report(config_id, start_time=None, end_time=None):
if vehicle_nos:
log_info(f"[日报生成] 开始合并特来电数据,车量自编号: {vehicle_nos}", 'report')
telecom_orders = query_telecom_orders(vehicle_nos, start_time_str, end_time_str)
log_info(f"[日报生成] 特来电查询到 {len(telecom_orders)} 条订单", 'report')
if telecom_orders:
# 将特来电数据添加到订单列表
orders.extend(telecom_orders)
@@ -447,15 +450,19 @@ def generate_daily_report(config_id, start_time=None, end_time=None):
# 计算求和(保留三位小数)
sum_results = {}
for field in sum_fields:
if field in orders[0]:
# 检查是否至少有一条订单包含该字段
has_field = any(field in order for order in orders)
if has_field:
total = sum(float(order.get(field, 0) or 0) for order in orders)
sum_results[field] = round(total, 3)
# 强制采集充电电量charge_degree即使不在求和字段配置中也要采集
if 'charge_degree' not in sum_results and orders and 'charge_degree' in orders[0]:
total_charge_degree = sum(float(order.get('charge_degree', 0) or 0) for order in orders)
sum_results['charge_degree'] = round(total_charge_degree, 3)
log_info(f"[日报生成] 强制采集充电电量: {sum_results['charge_degree']} kWh", 'report')
if 'charge_degree' not in sum_results and orders:
has_charge_degree = any('charge_degree' in order for order in orders)
if has_charge_degree:
total_charge_degree = sum(float(order.get('charge_degree', 0) or 0) for order in orders)
sum_results['charge_degree'] = round(total_charge_degree, 3)
log_info(f"[日报生成] 强制采集充电电量: {sum_results['charge_degree']} kWh", 'report')
# 构建ID到名称的映射
id_name_maps = build_id_to_name_map(orders, selected_fields)