# 订单日报系统 - 项目开发指南 ## 项目概述 订单日报系统是一个基于 Flask 的 Web 应用,用于自动生成充电订单的日报报表。系统支持按企业/用户/场站拆分数据,自定义字段和求和功能,并支持合并特来电平台数据。 ## 技术栈 - **后端**: Python 3.12 + Flask 3.0 - **数据库**: Apache Doris (MySQL 兼容) - **前端**: 原生 HTML/CSS/JavaScript - **依赖**: PyMySQL, APScheduler, openpyxl, Flask-CORS ## 项目结构 ``` . ├── app.py # Flask 主应用(页面路由 + 定时任务) ├── lib/ │ ├── __init__.py │ ├── db.py # 数据库连接配置 │ ├── field_mapping.py # 字段映射定义 │ ├── report_generator.py # 日报生成核心逻辑 │ ── api/ # API 蓝图模块 │ ├── __init__.py # 蓝图注册 │ ├── config_api.py # 配置管理 API │ ├── entity_api.py # 实体管理 API(企业/用户/场站) │ ├── field_api.py # 字段列表 API │ ├── report_api.py # 日报生成和历史记录 API │ ├── init_api.py # 数据库初始化 API │ └── download_api.py # 文件下载 API ├── static/ │ ├── css/ │ │ └── style.css # 全局样式 │ └── js/ │ ├── common.js # 通用工具函数、标签切换 │ ├── config.js # 配置管理(创建/编辑/复制/删除) │ ├── entity.js # 实体管理(分页/搜索) │ ├── report.js # 日报生成 │ └── history.js # 历史记录(查看/下载/删除) ── templates/ │ └── index.html # 主页面 HTML 结构 └── public/ └── reports/ # 生成的报表文件目录 ``` ## 核心功能模块 ### 1. 配置管理 (`lib/api/config_api.py`) - 创建/编辑/删除/复制配置 - 启用/禁用配置 - 配置排序(上移/下移) - 配置字段: - `config_name`: 配置名称 - `split_type`: 拆分方式(company_id/user_id/station_id) - `split_value`: 拆分值(支持多选,逗号分隔) - `selected_fields`: 选择的字段列表(JSON) - `sum_fields`: 求和字段列表(JSON) - `time_periods`: 分时段电量配置(JSON) - `merge_telecom`: 是否合并特来电数据 - `telecom_vehicle_no`: 特来电车量自编号 - `field_custom_names`: 字段自定义报表名头(JSON) ### 2. 实体管理 (`lib/api/entity_api.py`) - 企业列表(t_company,company_state=0 为启用) - 用户列表(t_user,支持手机号搜索) - 场站列表(t_station) - 支持分页和搜索 ### 3. 日报生成 (`lib/report_generator.py`) - 按配置生成日报 - 支持分时段电量统计(尖/峰/平/谷) - 支持合并特来电平台数据(t_hlht_tld 表) - 补单检测(finish_type=2) - 报表命名:`{config_name}_{month}月{day}日消费记录.xlsx` ### 4. 历史记录 (`lib/api/report_api.py`) - 查看生成历史 - 下载报表文件 - 批量删除历史记录 - 按日期范围查询 ## 数据库表 ### t_daily_report_config(配置表) - 存储日报生成配置 - 支持 JSON 字段存储复杂配置 ### t_daily_report_history(历史表) - 存储每次生成的历史记录 - 包含报表日期、时间范围、订单数、总金额等 ### 业务表 - `t_equipment_charge_order`: 充电订单表 - `t_equipment_charge_order_detail`: 分时段电量表 - `t_company`: 企业表 - `t_user`: 用户表 - `t_station`: 场站表 - `t_equipment`: 设备表 - `t_connector`: 连接器表 - `t_hlht_tld`: 特来电平台数据表 ## 开发规范 ### 后端开发 1. 新增 API 路由时,在 `lib/api/` 目录下创建对应的蓝图模块 2. 在 `lib/api/__init__.py` 中注册新蓝图 3. 数据库操作使用 `lib/db.py` 提供的工具函数 4. 字段映射定义在 `lib/field_mapping.py` 中维护 ### 前端开发 1. CSS 样式统一在 `static/css/style.css` 中维护 2. JavaScript 按功能模块拆分到 `static/js/` 目录 3. HTML 结构保持在 `templates/index.html` 中 4. 使用语义化类名,避免硬编码颜色值 ### 代码风格 - Python 遵循 PEP 8 规范 - JavaScript 使用 ES6+ 语法 - 注释使用中文,关键逻辑必须添加注释 ## 定时任务 系统使用 APScheduler 实现定时任务: - 每天 08:01 自动执行日报生成 - 遍历所有启用的配置,逐一生成日报 ## 部署说明 ### 环境变量 - `DEPLOY_RUN_PORT`: 服务监听端口(默认 5000) - `DB_HOST`: 数据库主机(默认 haoslm2.xicp.net) - `DB_PORT`: 数据库端口(默认 10216) ### 启动命令 ```bash # 开发环境 coze dev # 生产环境 coze build && coze start ``` ## 常见问题 ### 1. 数据库连接失败 - 检查数据库配置(lib/db.py) - 确认数据库服务正常运行 ### 2. 报表生成失败 - 检查配置是否正确 - 查看日志文件(/app/work/logs/bypass/) - 确认订单数据存在 ### 3. 前端页面加载异常 - 检查静态文件路径是否正确 - 清除浏览器缓存后重试