添加特来电报表的结束原因

This commit is contained in:
2026-07-24 13:49:44 +08:00
parent c118ab39b7
commit e8ba97bc9d
2 changed files with 61 additions and 2 deletions

View File

@@ -195,6 +195,34 @@ def get_all_fields_with_display():
"""获取所有字段包含key和显示名称""" """获取所有字段包含key和显示名称"""
return [{'key': k, 'display': v} for k, v in FIELD_MAPPING.items()] return [{'key': k, 'display': v} for k, v in FIELD_MAPPING.items()]
# 结束原因映射finish_type + finish_code -> 中文原因)
# finish_type: 1=正常结束, 2=补单结束
FINISH_REASON_MAPPING = {
(1, 0): '正常结束',
(1, 1): '充电异常',
(1, 2): '用户取消',
(1, 3): '设备故障',
(1, 4): '网络异常',
(1, 5): '超时',
(1, 6): '过温保护',
(1, 7): '过流保护',
(1, 8): '欠压保护',
(1, 9): '过压保护',
(1, 10): '接地故障',
(1, 11): '绝缘故障',
(1, 12): '通信故障',
(1, 13): '计费异常',
(1, 14): '结算异常',
(1, 15): '卡异常',
(1, 16): '授权失败',
(1, 17): '余额不足',
(1, 18): '功率受限',
(1, 19): '充电中断',
(1, 20): '自动充满',
(2, 0): '补单结束',
}
# 默认字段列表(常用字段) # 默认字段列表(常用字段)
DEFAULT_FIELDS = [ DEFAULT_FIELDS = [
'order_no', 'order_no',
@@ -208,3 +236,28 @@ DEFAULT_FIELDS = [
'state', 'state',
'report_time' 'report_time'
] ]
# 获取结束原因
def get_finish_reason(finish_type, finish_code, finish_msg):
"""
根据finish_type和finish_code获取中文结束原因
Args:
finish_type: 完成类型
finish_code: 完成代码
finish_msg: 原始结束消息(作为后备)
Returns:
str: 中文结束原因
"""
key = (finish_type, finish_code)
if key in FINISH_REASON_MAPPING:
return FINISH_REASON_MAPPING[key]
# 如果finish_msg有效直接使用
if finish_msg and finish_msg not in ('停止原因无效', '未知原因', 'None'):
return finish_msg
# 默认返回
return '未知原因'

View File

@@ -9,7 +9,7 @@ from openpyxl.styles import Font, Alignment, PatternFill
import pytz import pytz
from lib.db import execute_query, execute_insert, execute_update from lib.db import execute_query, execute_insert, execute_update
from lib.field_mapping import get_field_display_name from lib.field_mapping import get_field_display_name, get_finish_reason
from lib.logger import log_info, log_error, log_warning from lib.logger import log_info, log_error, log_warning
@@ -391,9 +391,15 @@ def generate_daily_report(config_id, start_time=None, end_time=None):
log_info(f"[日报生成] 驿来特查询到 {len(orders)} 条订单", 'report') log_info(f"[日报生成] 驿来特查询到 {len(orders)} 条订单", 'report')
# 添加数据来源标记 # 添加数据来源标记并转换结束原因
for order in orders: for order in orders:
order['data_source'] = '驿来特' order['data_source'] = '驿来特'
# 转换结束原因
finish_type = order.get('finish_type')
finish_code = order.get('finish_code')
finish_msg = order.get('finish_msg')
if finish_type is not None:
order['finish_msg'] = get_finish_reason(finish_type, finish_code, finish_msg)
# 检查是否有补单记录finish_type = 2 表示补单结束) # 检查是否有补单记录finish_type = 2 表示补单结束)
has_supplement = any(order.get('finish_type') == 2 for order in orders) has_supplement = any(order.get('finish_type') == 2 for order in orders)