124 lines
4.1 KiB
Python
124 lines
4.1 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
"""
|
|||
|
|
使用模拟数据测试报告生成,绕过InfluxDB问题
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import json
|
|||
|
|
import sys
|
|||
|
|
import os
|
|||
|
|
from pathlib import Path
|
|||
|
|
|
|||
|
|
def create_test_script_data():
|
|||
|
|
"""创建测试用的脚本数据"""
|
|||
|
|
return {
|
|||
|
|
"tables": [{
|
|||
|
|
"token": "scriptTable1",
|
|||
|
|
"startRow": 0,
|
|||
|
|
"startCol": 0,
|
|||
|
|
"cells": [
|
|||
|
|
# 时间信息
|
|||
|
|
{"row": 1, "col": 1, "value": "2025-11-27 11:30:00"},
|
|||
|
|
{"row": 1, "col": 3, "value": "2025-11-27 12:00:00"},
|
|||
|
|
|
|||
|
|
# 环境温度
|
|||
|
|
{"row": 0, "col": 1, "value": "25.5"},
|
|||
|
|
|
|||
|
|
# 一些轴承温度数据
|
|||
|
|
{"row": 4, "col": 0, "value": "45.2"},
|
|||
|
|
{"row": 4, "col": 1, "value": "46.1"},
|
|||
|
|
{"row": 4, "col": 2, "value": "44.8"},
|
|||
|
|
{"row": 5, "col": 0, "value": "47.3"},
|
|||
|
|
{"row": 5, "col": 1, "value": "46.9"},
|
|||
|
|
{"row": 6, "col": 0, "value": "45.8"},
|
|||
|
|
]
|
|||
|
|
}]
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
def test_script_table_parsing():
|
|||
|
|
"""测试脚本表格解析"""
|
|||
|
|
try:
|
|||
|
|
# 添加项目路径到sys.path
|
|||
|
|
project_path = Path(__file__).parent
|
|||
|
|
if str(project_path) not in sys.path:
|
|||
|
|
sys.path.insert(0, str(project_path))
|
|||
|
|
|
|||
|
|
from report_generator import _parse_script_tables
|
|||
|
|
|
|||
|
|
test_data = create_test_script_data()
|
|||
|
|
parsed_tables = _parse_script_tables(test_data)
|
|||
|
|
|
|||
|
|
print("✓ 脚本表格解析成功")
|
|||
|
|
print(f" 解析到 {len(parsed_tables)} 个表格")
|
|||
|
|
|
|||
|
|
for token, table_spec in parsed_tables.items():
|
|||
|
|
cells = table_spec.get('cells', [])
|
|||
|
|
print(f" 表格 {token}: {len(cells)} 个单元格")
|
|||
|
|
|
|||
|
|
# 统计有效数据
|
|||
|
|
valid_cells = [c for c in cells if c.get('value') and str(c.get('value')).strip()]
|
|||
|
|
print(f" 有效数据: {len(valid_cells)} 个单元格")
|
|||
|
|
|
|||
|
|
return True, parsed_tables
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"✗ 脚本表格解析失败: {e}")
|
|||
|
|
return False, {}
|
|||
|
|
|
|||
|
|
def simulate_word_table_filling(parsed_tables):
|
|||
|
|
"""模拟Word表格填充过程"""
|
|||
|
|
print("\n模拟Word表格填充:")
|
|||
|
|
|
|||
|
|
for token, table_spec in parsed_tables.items():
|
|||
|
|
print(f"\n处理表格 {token}:")
|
|||
|
|
|
|||
|
|
cells = table_spec.get('cells', [])
|
|||
|
|
processed_cells = 0
|
|||
|
|
skipped_empty_cells = 0
|
|||
|
|
|
|||
|
|
for cell_info in cells:
|
|||
|
|
if not isinstance(cell_info, dict):
|
|||
|
|
continue
|
|||
|
|
|
|||
|
|
# 模拟我们的优化逻辑:跳过空单元格
|
|||
|
|
value = cell_info.get("value", "")
|
|||
|
|
if value is None:
|
|||
|
|
skipped_empty_cells += 1
|
|||
|
|
continue
|
|||
|
|
text = str(value)
|
|||
|
|
if text.strip() == "":
|
|||
|
|
skipped_empty_cells += 1
|
|||
|
|
continue
|
|||
|
|
|
|||
|
|
# 模拟Word COM操作
|
|||
|
|
row = cell_info.get("row", 0)
|
|||
|
|
col = cell_info.get("col", 0)
|
|||
|
|
print(f" 写入单元格 ({row}, {col}): '{text}'")
|
|||
|
|
processed_cells += 1
|
|||
|
|
|
|||
|
|
print(f" 完成: 处理了 {processed_cells} 个单元格, 跳过了 {skipped_empty_cells} 个空单元格")
|
|||
|
|
|
|||
|
|
def main():
|
|||
|
|
print("报告生成测试 (使用模拟数据)")
|
|||
|
|
print("=" * 50)
|
|||
|
|
|
|||
|
|
# 测试脚本表格解析
|
|||
|
|
success, parsed_tables = test_script_table_parsing()
|
|||
|
|
|
|||
|
|
if success:
|
|||
|
|
# 模拟Word表格填充
|
|||
|
|
simulate_word_table_filling(parsed_tables)
|
|||
|
|
|
|||
|
|
print("\n✅ 测试完成!")
|
|||
|
|
print("\n建议:")
|
|||
|
|
print("1. 如果这个测试正常,说明报告生成逻辑没问题")
|
|||
|
|
print("2. 客户机器卡住可能是由于:")
|
|||
|
|
print(" - Word COM操作环境问题")
|
|||
|
|
print(" - 模板文件问题")
|
|||
|
|
print(" - 权限问题")
|
|||
|
|
print("3. 可以尝试使用 temperature_table_robust.py 替代原脚本")
|
|||
|
|
else:
|
|||
|
|
print("\n❌ 测试失败,需要检查report_generator.py")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
main()
|