4bee3041bc703f4c104c5144e30e17acf427dd4d
Coze-Commit-Type: user Coze-User-ID: 3722323274763196 Coze-Conversation-ID: 9894087
订单日报系统 - Python Flask版本
一个基于Python Flask的订单日报自动生成系统,用于公交等企业的订单报表自动生成。
功能特性
- ✅ 定时生成:每天早上8:01自动生成前一天的日报
- ✅ 配置管理:支持创建、编辑、删除、启用/禁用、排序
- ✅ 日报生成:按配置+时间范围生成
- ✅ 自定义字段:100+字段可选,中文显示
- ✅ 求和功能:支持多字段求和
- ✅ 按企业/用户拆分:灵活选择拆分方式
- ✅ 预设时间:昨天、最近3天、最近7天
- ✅ 自定义时间:任意时间范围
- ✅ Excel导出:格式化Excel文件
- ✅ 历史记录:查看、下载、批量下载
技术栈
- 后端:Python 3.8+ / Flask 3.0
- 数据库:MySQL / Apache Doris(PyMySQL驱动)
- Excel:openpyxl
- 定时任务:APScheduler
- 前端:原生HTML + CSS + JavaScript
项目结构
.
├── app.py # Flask主应用
├── requirements.txt # Python依赖
├── lib/ # 业务逻辑
│ ├── __init__.py
│ ├── db.py # 数据库连接
│ ├── field_mapping.py # 字段映射
│ └── report_generator.py # 日报生成
├── templates/ # HTML模板
│ └── index.html # 主页面
├── public/reports/ # Excel文件存储
└── README.md # 本文件
快速开始
1. 安装Python依赖
pip install -r requirements.txt
2. 配置数据库
编辑 lib/db.py,修改数据库连接信息:
DB_CONFIG = {
'host': 'haoslm2.xicp.net',
'port': 10216,
'user': 'root',
'password': 'DsideaL147258369',
'database': 'yltcharge',
'charset': 'utf8mb4',
'cursorclass': pymysql.cursors.DictCursor
}
3. 启动服务
python app.py
服务将在 http://localhost:5000 启动。
4. 初始化数据库
首次运行需要初始化数据库表:
访问:http://localhost:5000/api/init-tables
或运行:
curl -X POST http://localhost:5000/api/init-tables
5. 使用系统
- 打开浏览器访问:http://localhost:5000
- 切换到"配置管理"标签,创建配置
- 切换到"日报生成"标签,生成日报
- 切换到"历史记录"标签,查看和下载日报
API接口
配置管理
GET /api/config- 获取所有配置POST /api/config- 创建配置PUT /api/config/<id>- 更新配置DELETE /api/config/<id>- 删除配置POST /api/config/<id>/toggle- 启用/禁用配置POST /api/config/reorder- 重新排序
日报生成
POST /api/report/generate- 生成日报GET /api/report/history- 获取历史记录GET /api/download- 下载Excel文件
数据库
POST /api/init-tables- 初始化数据库表
数据库表结构
t_daily_report_config(配置表)
id- 配置IDconfig_name- 配置名称split_type- 拆分方式(company_id/user_id)split_value- 拆分值split_name- 拆分显示名称selected_fields- 选择的字段(JSON)sum_fields- 求和字段(JSON)is_active- 是否启用sort_order- 排序顺序create_time- 创建时间update_time- 更新时间
t_daily_report_history(历史表)
id- 记录IDreport_date- 报表日期start_time- 开始时间end_time- 结束时间split_type- 拆分方式split_value- 拆分值split_name- 拆分显示名称config_id- 配置IDconfig_name- 配置名称total_orders- 订单总数total_amount- 总金额sum_results- 求和结果(JSON)file_path- 文件路径status- 状态(0=失败,1=成功)error_msg- 错误信息create_time- 创建时间
定时任务
系统内置定时任务,每天8:01(北京时间)自动生成日报:
- 为所有启用的配置生成日报
- 时间范围:前一天8:00到当天8:00
- 生成的Excel文件保存在
public/reports/目录
Windows运行
启动服务
python app.py
常见问题
端口被占用
# 查看占用5000端口的进程
netstat -ano | findstr :5000
# 结束进程
taskkill /PID <进程ID> /F
依赖安装失败
# 使用国内镜像
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
Linux/Mac运行
启动服务
python3 app.py
后台运行
nohup python3 app.py > app.log 2>&1 &
注意事项
- 数据库连接:确保数据库地址、端口、用户名、密码正确
- 字段映射:使用实际数据库中的字段名,参考
lib/field_mapping.py - 文件权限:确保
public/reports/目录有写入权限 - 定时任务:保持服务持续运行,定时任务才会执行
许可证
MIT License
Description
Languages
Python
57.4%
JavaScript
30.1%
HTML
6.4%
CSS
4.5%
Batchfile
1.6%