246 lines
5.2 KiB
Markdown
246 lines
5.2 KiB
Markdown
|
|
# 诊断指南:为什么历史记录中没有日报
|
|||
|
|
|
|||
|
|
## 快速诊断
|
|||
|
|
|
|||
|
|
运行诊断脚本:
|
|||
|
|
```bash
|
|||
|
|
python test_diagnosis.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
这个脚本会检查:
|
|||
|
|
1. ✓ 数据库连接是否正常
|
|||
|
|
2. ✓ 表是否存在
|
|||
|
|
3. ✓ 配置是否创建
|
|||
|
|
4. ✓ 历史记录是否有数据
|
|||
|
|
5. ✓ 订单表中是否有数据
|
|||
|
|
|
|||
|
|
## 常见问题和解决方案
|
|||
|
|
|
|||
|
|
### 问题1:历史记录为空
|
|||
|
|
|
|||
|
|
**可能原因:**
|
|||
|
|
1. 还没有生成过日报
|
|||
|
|
2. 生成日报失败,但没有保存失败记录
|
|||
|
|
3. 数据库表没有初始化
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
|
|||
|
|
#### 方案1:确保已初始化数据库表
|
|||
|
|
```bash
|
|||
|
|
# 方法1:浏览器访问
|
|||
|
|
http://localhost:5000/api/init-tables
|
|||
|
|
|
|||
|
|
# 方法2:curl命令
|
|||
|
|
curl -X POST http://localhost:5000/api/init-tables
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 方案2:创建配置并生成日报
|
|||
|
|
1. 访问 http://localhost:5000
|
|||
|
|
2. 点击"配置管理"标签
|
|||
|
|
3. 点击"创建配置"
|
|||
|
|
4. 填写配置信息:
|
|||
|
|
- 配置名称:测试配置
|
|||
|
|
- 拆分方式:选择"按企业ID"或"按用户ID"
|
|||
|
|
- 选择企业/用户:从下拉列表选择
|
|||
|
|
- 选择字段:至少勾选一个字段
|
|||
|
|
5. 点击"保存"
|
|||
|
|
6. 切换到"日报生成"标签
|
|||
|
|
7. 选择刚创建的配置
|
|||
|
|
8. 选择时间范围(点击"昨天"按钮)
|
|||
|
|
9. 点击"生成日报"
|
|||
|
|
10. 查看结果
|
|||
|
|
|
|||
|
|
#### 方案3:查看服务器日志
|
|||
|
|
启动服务后,控制台会输出详细日志:
|
|||
|
|
```
|
|||
|
|
[日报生成] 开始生成日报
|
|||
|
|
配置ID: 1234567890
|
|||
|
|
配置名称: 测试配置
|
|||
|
|
拆分方式: company_id = 123
|
|||
|
|
时间范围: 2025-01-07 08:00:00 至 2025-01-08 08:00:00
|
|||
|
|
选择字段: 5 个
|
|||
|
|
[日报生成] 查询到 0 条订单
|
|||
|
|
[日报生成] ✗ 生成失败: 时间范围内没有符合条件的订单数据
|
|||
|
|
[日报生成] 已保存失败记录到历史表
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题2:生成日报失败
|
|||
|
|
|
|||
|
|
**错误信息:时间范围内没有符合条件的订单数据**
|
|||
|
|
|
|||
|
|
**原因:**
|
|||
|
|
- 选择的时间范围内没有订单
|
|||
|
|
- 或者订单状态不是3(已完成)
|
|||
|
|
- 或者企业/用户ID不正确
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
1. 检查订单表中是否有数据:
|
|||
|
|
```sql
|
|||
|
|
SELECT COUNT(*) FROM t_equipment_charge_order WHERE state = 3;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. 查看订单的时间范围:
|
|||
|
|
```sql
|
|||
|
|
SELECT MIN(report_time), MAX(report_time)
|
|||
|
|
FROM t_equipment_charge_order
|
|||
|
|
WHERE state = 3;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. 调整生成日报的时间范围,确保包含订单数据
|
|||
|
|
|
|||
|
|
4. 确认企业/用户ID是否正确
|
|||
|
|
|
|||
|
|
**错误信息:Unknown column 'xxx'**
|
|||
|
|
|
|||
|
|
**原因:**
|
|||
|
|
- 选择的字段在订单表中不存在
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
1. 编辑配置
|
|||
|
|
2. 取消选择不存在的字段
|
|||
|
|
3. 保存配置
|
|||
|
|
|
|||
|
|
**错误信息:Unknown table 't_daily_report_history'**
|
|||
|
|
|
|||
|
|
**原因:**
|
|||
|
|
- 数据库表没有初始化
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
```bash
|
|||
|
|
# 初始化数据库表
|
|||
|
|
curl -X POST http://localhost:5000/api/init-tables
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题3:历史记录中有记录,但无法下载
|
|||
|
|
|
|||
|
|
**可能原因:**
|
|||
|
|
1. 文件路径不正确
|
|||
|
|
2. 文件已被删除
|
|||
|
|
3. 权限问题
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
1. 检查文件是否存在:
|
|||
|
|
```bash
|
|||
|
|
# Windows
|
|||
|
|
dir public\reports\*.xlsx
|
|||
|
|
|
|||
|
|
# Linux/Mac
|
|||
|
|
ls -la public/reports/*.xlsx
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. 检查文件路径是否正确
|
|||
|
|
3. 确认文件权限
|
|||
|
|
|
|||
|
|
## 手动检查数据库
|
|||
|
|
|
|||
|
|
### 查看历史记录
|
|||
|
|
```sql
|
|||
|
|
SELECT
|
|||
|
|
id,
|
|||
|
|
report_date,
|
|||
|
|
start_time,
|
|||
|
|
end_time,
|
|||
|
|
split_type,
|
|||
|
|
split_value,
|
|||
|
|
total_orders,
|
|||
|
|
total_amount,
|
|||
|
|
status,
|
|||
|
|
file_path,
|
|||
|
|
create_time
|
|||
|
|
FROM t_daily_report_history
|
|||
|
|
ORDER BY create_time DESC;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 查看配置
|
|||
|
|
```sql
|
|||
|
|
SELECT
|
|||
|
|
id,
|
|||
|
|
config_name,
|
|||
|
|
split_type,
|
|||
|
|
split_value,
|
|||
|
|
is_active,
|
|||
|
|
selected_fields,
|
|||
|
|
sort_order
|
|||
|
|
FROM t_daily_report_config
|
|||
|
|
ORDER BY sort_order ASC;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 查看订单数据统计
|
|||
|
|
```sql
|
|||
|
|
-- 总订单数
|
|||
|
|
SELECT COUNT(*) as total FROM t_equipment_charge_order WHERE state = 3;
|
|||
|
|
|
|||
|
|
-- 时间范围
|
|||
|
|
SELECT
|
|||
|
|
MIN(report_time) as earliest,
|
|||
|
|
MAX(report_time) as latest
|
|||
|
|
FROM t_equipment_charge_order
|
|||
|
|
WHERE state = 3;
|
|||
|
|
|
|||
|
|
-- 按企业统计
|
|||
|
|
SELECT
|
|||
|
|
company_id,
|
|||
|
|
COUNT(*) as order_count
|
|||
|
|
FROM t_equipment_charge_order
|
|||
|
|
WHERE state = 3
|
|||
|
|
GROUP BY company_id
|
|||
|
|
ORDER BY order_count DESC
|
|||
|
|
LIMIT 10;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 调试技巧
|
|||
|
|
|
|||
|
|
### 1. 启用详细日志
|
|||
|
|
|
|||
|
|
编辑 `lib/report_generator.py`,确保有以下日志输出:
|
|||
|
|
```python
|
|||
|
|
print(f"[日报生成] 开始生成日报")
|
|||
|
|
print(f" 配置ID: {config_id}")
|
|||
|
|
print(f" 查询到 {len(orders)} 条订单")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 测试API接口
|
|||
|
|
|
|||
|
|
使用curl测试API:
|
|||
|
|
```bash
|
|||
|
|
# 获取配置
|
|||
|
|
curl http://localhost:5000/api/config
|
|||
|
|
|
|||
|
|
# 获取历史记录
|
|||
|
|
curl http://localhost:5000/api/report/history
|
|||
|
|
|
|||
|
|
# 生成日报
|
|||
|
|
curl -X POST http://localhost:5000/api/report/generate \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"config_id": 1234567890, "start_time": "2025-01-07 08:00:00", "end_time": "2025-01-08 08:00:00"}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 查看浏览器控制台
|
|||
|
|
|
|||
|
|
1. 按F12打开开发者工具
|
|||
|
|
2. 切换到"Console"标签
|
|||
|
|
3. 生成日报
|
|||
|
|
4. 查看是否有JavaScript错误
|
|||
|
|
5. 查看Network标签,检查API请求是否成功
|
|||
|
|
|
|||
|
|
### 4. 查看服务器日志
|
|||
|
|
|
|||
|
|
服务器控制台会输出所有操作日志,包括:
|
|||
|
|
- 数据库查询
|
|||
|
|
- 文件生成
|
|||
|
|
- 错误信息
|
|||
|
|
- 异常堆栈
|
|||
|
|
|
|||
|
|
## 联系支持
|
|||
|
|
|
|||
|
|
如果以上方法都无法解决问题,请提供以下信息:
|
|||
|
|
|
|||
|
|
1. 诊断脚本的输出结果
|
|||
|
|
2. 服务器控制台的完整日志
|
|||
|
|
3. 浏览器控制台的错误信息
|
|||
|
|
4. 数据库中的配置和历史记录数据
|
|||
|
|
5. 订单表的数据统计
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**最后更新**: 2025-01-08
|