fix: 修复字段映射,使用实际数据库字段名

问题:field_mapping.py 中的字段名和实际数据库不匹配,导致查询失败。

修复内容:
- 更新所有字段名为实际数据库中的字段名
- 例如:
  - total_money → receivable_total_fee(应收总费用)
  - charge_money → charging_amt(充电金额)
  - charge_energy → charge_degree(充电电量)
  - start_time → charge_begin_time(充电开始时间)
  - end_time → charge_end_time(充电结束时间)

现在可以使用正确的字段名创建配置并生成日报了!

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
This commit is contained in:
user9994793890
2026-07-09 13:46:36 +08:00
parent 07df4d5c85
commit 075fd29432

View File

@@ -1,135 +1,187 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
字段映射模块
将数据库英文字段名映射为中文显示名
字段映射配置
将数据库字段名映射为中文显示名
"""
# 字段映射字典(英文 -> 中文
# 字段映射(根据实际数据库表结构
FIELD_MAPPING = {
# 基础信息
'id': '订单ID',
'order_no': '订单号',
'company_id': '企业ID',
'user_id': '用户ID',
'user_name': '用户名称',
'platform_order_no': '平台订单号',
'order_type': '订单类型',
'order_time': '订单时间',
'state': '订单状态',
'report_time': '上报时间',
'start_time': '开始时间',
'end_time': '结束时间',
'operate_state': '操作状态',
# 用户信息
'user_id': '用户ID',
'user_card_no': '用户卡号',
'company_id': '企业ID',
'charge_plate_no': '车牌号',
'charge_vin': 'VIN码',
# 充电站信息
'station_id': '充电站ID',
'equipment_id': '设备ID',
'connector_id': '连接器ID',
# 充电时间
'charge_begin_time': '充电开始时间',
'charge_end_time': '充电结束时间',
'charge_duration': '充电时长(秒)',
'charge_energy': '充电电量(kWh)',
'charge_money': '充电金额(元)',
'service_money': '服务费(元)',
'electricity_money': '电费(元)',
'total_money': '总金额(元)',
'pile_id': '充电桩ID',
'pile_no': '充电桩编号',
'gun_no': '枪号',
'start_soc': '始SOC(%)',
'end_soc': '结束SOC(%)',
'start_voltage': '起始电压(V)',
'end_voltage': '结束电压(V)',
'start_current': '起始电流(A)',
'end_current': '结束电流(A)',
'temperature': '温度(℃)',
# 充电电量
'charge_begin_degree': '开始电量',
'charge_end_degree': '结束电量',
'charge_degree': '充电电量(kWh)',
'charge_ah': '充电安时',
# 充电SOC
'charge_begin_soc': '始SOC',
'charge_end_soc': '结束SOC',
'charge_cur_soc': '当前SOC',
# 充电费用(应收)
'receivable_electric_fee': '应收电费(元)',
'receivable_service_fee': '应收服务费(元)',
'receivable_total_fee': '应收总费用(元)',
# 充电费用(实际)
'charge_elecfee_amount': '电费金额(元)',
'charge_elecfee_cost_amount': '电费成本(元)',
'charge_service_amount': '服务费金额(元)',
'charging_amt': '充电金额(元)',
# 支付信息
'actual_pay_amount': '实际支付金额(元)',
'pay_amount': '支付金额(元)',
'pay_order_no': '支付订单号',
'pay_method': '支付方式',
'pay_status': '支付状态',
'pay_time': '支付时间',
# 单价信息
'charge_unit_price': '单价(元/度)',
'charge_unit_cost': '单位成本',
'charge_unit_service_fee': '单位服务费',
# 结算信息
'charge_settle_type': '结算类型',
'settle_electric_fee': '结算电费(元)',
'settle_service_fee': '结算服务费(元)',
'settle_fee': '结算费用(元)',
'settle_method': '结算方式',
'settle_status': '结算状态',
'settle_coupon_amount': '结算优惠券金额',
# 优惠券信息
'user_coupon_id': '优惠券ID',
'coupon_name': '优惠券名称',
'coupon_type': '优惠券类型',
'coupon_amount': '优惠券金额',
'coupon_total_amount': '优惠券总金额',
'elecfee_coupon_amount': '电费优惠券金额',
'servicefee_coupon_amount': '服务费优惠券金额',
# 发票信息
'invoice_id': '发票ID',
'invoice_fee': '发票金额',
'ticket_status': '开票状态',
# 活动信息
'activity_electric_fee': '活动电费',
'activity_service_fee': '活动服务费',
'activity_name': '活动名称',
'activity_total_fee': '活动总费用',
# 企业活动信息
'company_activity_id': '企业活动ID',
'company_activity_name': '企业活动名称',
'company_activity_total_fee': '企业活动总费用',
'company_activity_service_fee': '企业活动服务费',
'company_activity_electric_fee': '企业活动电费',
# 补贴信息
'subsidy_degree': '补贴电量',
'subsidy_fee': '补贴费用',
# 运营商信息
'operator_id': '运营商ID',
'operator_income': '运营商收入',
'plat_service_fee': '平台服务费',
# 佣金信息
'com_service_fee': '佣金服务费',
'com_electric_fee': '佣金电费',
'com_total_fee': '佣金总费用',
'com_charge_discount_type': '佣金折扣类型',
'com_charge_discount': '佣金折扣',
# 报告信息
'report_time': '上报时间',
'has_shallow_report': '是否有浅层报告',
'has_deep_report': '是否有深层报告',
'shallow_report_is_received': '浅层报告是否接收',
# 订单完成信息
'finish_type': '完成类型',
'finish_code': '完成代码',
'finish_msg': '完成消息',
'finish_time': '完成时间',
# 取消信息
'cancel_type': '取消类型',
'cancel_code': '取消代码',
'cancel_msg': '取消消息',
'cancel_time': '取消时间',
# 异常信息
'exception_flag': '异常标志',
'exception_msg': '异常消息',
'is_exception': '是否异常',
# 其他信息
'platform_sale_type': '平台销售类型',
'platform_driver_id': '平台司机ID',
'platform_phone': '平台电话',
'charge_strategy': '充电策略',
'charge_strategy_param': '充电策略参数',
'boot_mode': '启动模式',
'settlement_type': '结算类型',
'is_parking_coupon': '是否停车优惠券',
'control_source': '控制来源',
'charge_market_id': '充电市场ID',
'charge_times_degree': '充电次数电量',
'special_channel_order_source': '特殊渠道订单来源',
# 时间戳
'create_time': '创建时间',
'update_time': '更新时间',
'pay_type': '支付方式',
'pay_time': '支付时间',
'pay_status': '支付状态',
'stop_reason': '停止原因',
'station_id': '充电站ID',
'station_name': '充电站名称',
'address': '地址',
'city': '城市',
'province': '省份',
'area': '区域',
'remark': '备注',
'operator_id': '运营商ID',
'operator_name': '运营商名称',
'equipment_id': '设备ID',
'equipment_type': '设备类型',
'equipment_model': '设备型号',
'manufacturer': '制造商',
'install_location': '安装位置',
'power_rate': '额定功率(kW)',
'voltage_rate': '额定电压(V)',
'current_rate': '额定电流(A)',
'brand': '品牌',
'network_type': '网络类型',
'sim_card': 'SIM卡号',
'iccid': 'ICCID',
'imei': 'IMEI',
'mac': 'MAC地址',
'ip': 'IP地址',
'firmware_version': '固件版本',
'hardware_version': '硬件版本',
'protocol_version': '协议版本',
'online_status': '在线状态',
'last_heartbeat': '最后心跳时间',
'fault_code': '故障代码',
'fault_desc': '故障描述',
'fault_time': '故障时间',
'clear_time': '清除时间',
'operator_fault': '运营商故障',
'maintenance_status': '维护状态',
'maintenance_time': '维护时间',
'maintenance_desc': '维护描述',
'qr_code': '二维码',
'qr_code_url': '二维码URL',
'qr_code_type': '二维码类型',
'qr_code_status': '二维码状态',
'qr_code_create_time': '二维码创建时间',
'qr_code_update_time': '二维码更新时间',
'qr_code_remark': '二维码备注',
'qr_code_operator': '二维码操作员',
'qr_code_company': '二维码企业',
'qr_code_station': '二维码站点',
'qr_code_equipment': '二维码设备',
'qr_code_pile': '二维码桩号',
'qr_code_gun': '二维码枪号',
'qr_code_location': '二维码位置',
'qr_code_address': '二维码地址',
'qr_code_city': '二维码城市',
'qr_code_province': '二维码省份',
'qr_code_area': '二维码区域',
'qr_code_lat': '二维码纬度',
'qr_code_lng': '二维码经度',
'qr_code_alt': '二维码海拔',
'qr_code_accuracy': '二维码精度',
'qr_code_speed': '二维码速度',
'qr_code_direction': '二维码方向',
'qr_code_satellite': '二维码卫星',
'qr_code_signal': '二维码信号',
'qr_code_battery': '二维码电池',
'qr_code_temperature': '二维码温度',
'qr_code_humidity': '二维码湿度',
'qr_code_pressure': '二维码气压',
'qr_code_wind_speed': '二维码风速',
'qr_code_wind_direction': '二维码风向',
'qr_code_rainfall': '二维码降雨量',
'qr_code_snowfall': '二维码降雪量',
'qr_code_visibility': '二维码能见度',
'qr_code_uv_index': '二维码紫外线指数',
'qr_code_aqi': '二维码空气质量指数',
'qr_code_pm25': '二维码PM2.5',
'qr_code_pm10': '二维码PM10',
'qr_code_co': '二维码一氧化碳',
'qr_code_no2': '二维码二氧化氮',
'qr_code_so2': '二维码二氧化硫',
'qr_code_o3': '二维码臭氧',
}
# 获取字段中文名称
def get_field_name(field_key):
"""获取字段的中文名称"""
return FIELD_MAPPING.get(field_key, field_key)
def get_field_display_name(field_name):
"""获取字段的中文显示名称"""
return FIELD_MAPPING.get(field_name, field_name)
# 获取所有字段选项
def get_all_fields():
"""获取所有字段列表"""
return list(FIELD_MAPPING.keys())
"""获取所有字段选项"""
return [{'key': k, 'name': v} for k, v in FIELD_MAPPING.items()]
def get_all_fields_with_display():
"""获取所有字段及其显示名称"""
return [{'field': k, 'display': v} for k, v in FIELD_MAPPING.items()]
# 默认字段列表(常用字段)
DEFAULT_FIELDS = [
'order_no',
'company_id',
'user_id',
'charge_begin_time',
'charge_end_time',
'charge_degree',
'receivable_total_fee',
'actual_pay_amount',
'state',
'report_time'
]