user9994793890 ac93eb4c98 feat: 历史记录增加删除、批量删除、批量下载和日期查询功能
新增功能:

1. 报表日期格式改为数字显示
   - 修改 formatDateDisplay 函数
   - 格式:YYYY-MM-DD(如"2026-07-09")

2. 删除单个历史记录
   - 在每行添加删除按钮
   - 后端API:DELETE /api/report/history/<id>
   - 同时删除文件和数据库记录

3. 批量删除历史记录
   - 在每行添加复选框
   - 表头添加全选复选框
   - 添加"批量删除"按钮
   - 后端API:POST /api/report/history/batch-delete

4. 批量下载历史记录
   - 添加"批量下载"按钮
   - 后端API:POST /api/report/history/batch-download
   - 使用zipfile打包多个Excel文件

5. 按日期时间查询
   - 添加日期范围选择器(开始日期、结束日期)
   - 添加"查询"和"重置"按钮
   - 后端API:GET /api/report/history?start_date=xxx&end_date=xxx
   - 支持按start_time和end_time筛选

6. 根据ID下载历史记录
   - 后端API:GET /api/report/history/<id>/download
   - 直接下载对应的Excel文件

前端修改:
- 添加全选复选框和行复选框
- 添加批量操作按钮(批量删除、批量下载)
- 添加日期查询表单
- 添加相关JavaScript函数

后端修改:
- 修改历史记录查询API,支持日期筛选
- 添加删除单个记录API
- 添加批量删除API
- 添加批量下载API
- 添加根据ID下载API

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
2026-07-10 11:04:50 +08:00
2026-07-07 16:00:36 +08:00
2026-07-07 16:00:36 +08:00

订单日报系统 - Python Flask版本

一个基于Python Flask的订单日报自动生成系统用于公交等企业的订单报表自动生成。

功能特性

  • 定时生成每天早上8:01自动生成前一天的日报
  • 配置管理:支持创建、编辑、删除、启用/禁用、排序
  • 日报生成:按配置+时间范围生成
  • 自定义字段100+字段可选,中文显示
  • 求和功能:支持多字段求和
  • 按企业/用户拆分:灵活选择拆分方式
  • 预设时间昨天、最近3天、最近7天
  • 自定义时间:任意时间范围
  • Excel导出格式化Excel文件
  • 历史记录:查看、下载、批量下载

技术栈

  • 后端Python 3.8+ / Flask 3.0
  • 数据库MySQL / Apache DorisPyMySQL驱动
  • Excelopenpyxl
  • 定时任务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. 使用系统

  1. 打开浏览器访问:http://localhost:5000
  2. 切换到"配置管理"标签,创建配置
  3. 切换到"日报生成"标签,生成日报
  4. 切换到"历史记录"标签,查看和下载日报

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 - 配置ID
  • config_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 - 记录ID
  • report_date - 报表日期
  • start_time - 开始时间
  • end_time - 结束时间
  • split_type - 拆分方式
  • split_value - 拆分值
  • split_name - 拆分显示名称
  • config_id - 配置ID
  • config_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 &

注意事项

  1. 数据库连接:确保数据库地址、端口、用户名、密码正确
  2. 字段映射:使用实际数据库中的字段名,参考 lib/field_mapping.py
  3. 文件权限:确保 public/reports/ 目录有写入权限
  4. 定时任务:保持服务持续运行,定时任务才会执行

许可证

MIT License

Description
日报仓库
Readme 3 MiB
Languages
Python 57.4%
JavaScript 30.1%
HTML 6.4%
CSS 4.5%
Batchfile 1.6%