PCM_Report/test_field_mapping.py

107 lines
3.2 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
测试字段映射功能
"""
import json
from convert_table_to_sqlserver_format import convert_temperature_table_to_sqlserver
print("=" * 80)
print("测试字段映射功能")
print("=" * 80)
# 模拟脚本数据
script_data = {
"tables": [{
"token": "scriptTable1",
"startRow": 0,
"startCol": 0,
"cells": [
{"row": 0, "col": 1, "value": "13.4"},
{"row": 1, "col": 1, "value": "2025-12-05 14:00:00"},
{"row": 1, "col": 3, "value": "2025-12-05 17:30:00"},
{"row": 4, "col": 0, "value": "14.0"},
]
}]
}
# 测试1: 使用现有配置的字段名
print("\n测试1: 使用现有配置的字段名")
print("-" * 80)
global_params_old = {
'current_date': '2025-12-03',
'executor': '朱吉生',
'part_no': 'P67-13-103',
}
print("输入参数:")
for key, value in global_params_old.items():
print(f" {key}: {value}")
result1 = convert_temperature_table_to_sqlserver(script_data, "W2001150.001", global_params_old)
print("\n输出字段:")
print(f" runin_date: {result1.get('runin_date')}")
print(f" operator_name: {result1.get('operator_name')}")
print(f" power_end_part_no: {result1.get('power_end_part_no')}")
print(f" motor_speed_rpm: {result1.get('motor_speed_rpm')}")
# 测试2: 使用新的字段名
print("\n\n测试2: 使用新的字段名")
print("-" * 80)
global_params_new = {
'runin_date': '2025-12-10',
'operator_name': '张三',
'power_end_part_no': 'PWR-600-001',
'motor_speed_rpm': '980'
}
print("输入参数:")
for key, value in global_params_new.items():
print(f" {key}: {value}")
result2 = convert_temperature_table_to_sqlserver(script_data, "W2001150.001", global_params_new)
print("\n输出字段:")
print(f" runin_date: {result2.get('runin_date')}")
print(f" operator_name: {result2.get('operator_name')}")
print(f" power_end_part_no: {result2.get('power_end_part_no')}")
print(f" motor_speed_rpm: {result2.get('motor_speed_rpm')}")
# 测试3: 混合使用
print("\n\n测试3: 混合使用(新旧字段名)")
print("-" * 80)
global_params_mixed = {
'runin_date': '2025-12-10',
'executor': '李四',
'part_no': 'P67-13-104',
'motor_speed_rpm': '1200'
}
print("输入参数:")
for key, value in global_params_mixed.items():
print(f" {key}: {value}")
result3 = convert_temperature_table_to_sqlserver(script_data, "W2001150.001", global_params_mixed)
print("\n输出字段:")
print(f" runin_date: {result3.get('runin_date')}")
print(f" operator_name: {result3.get('operator_name')}")
print(f" power_end_part_no: {result3.get('power_end_part_no')}")
print(f" motor_speed_rpm: {result3.get('motor_speed_rpm')}")
print("\n" + "=" * 80)
print("总结")
print("=" * 80)
tests = [
("测试1 (旧字段名)", result1),
("测试2 (新字段名)", result2),
("测试3 (混合)", result3),
]
for test_name, result in tests:
count = sum(1 for f in ['runin_date', 'operator_name', 'power_end_part_no', 'motor_speed_rpm']
if result.get(f) is not None)
status = "" if count >= 3 else "⚠️"
print(f"{status} {test_name}: {count}/4 个字段有值")
print("\n" + "=" * 80)