|
|
@@ -275,10 +275,10 @@ def get_tmp_extremes(item_name, start_time, end_time, word_control):
|
|
|
matched_count = 0
|
|
|
for item in data2["data"]:
|
|
|
val = item.get("val")
|
|
|
- # 兼容字符串和数字类型,支持22-26范围
|
|
|
+ # 兼容字符串和数字类型,只匹配控制字为26的数据
|
|
|
try:
|
|
|
val_int = int(float(val)) if val is not None else None
|
|
|
- if val_int is not None and 22 <= val_int <= 26:
|
|
|
+ if val_int == 26:
|
|
|
time = item.get("htime_at")
|
|
|
# 如果在第一次数据中找到了对应的跨膜压差值
|
|
|
if time in item_values:
|
|
|
@@ -287,22 +287,29 @@ def get_tmp_extremes(item_name, start_time, end_time, word_control):
|
|
|
except (ValueError, TypeError):
|
|
|
pass
|
|
|
|
|
|
- logger.info(f"第二次API查询成功,22-26范围内匹配数量:{matched_count}")
|
|
|
+ logger.info(f"第二次API查询成功,控制字为26的匹配数量:{matched_count}")
|
|
|
|
|
|
if control_26_values:
|
|
|
- logger.info(f"找到控制字为22-26范围的数据点,合并跨膜压差数据")
|
|
|
- max_val = max(control_26_values)
|
|
|
- min_val = min(control_26_values)
|
|
|
- # 增加最小跨膜压差的下限值
|
|
|
- if min_val < 0.01:
|
|
|
+ logger.info(f"找到控制字为26的数据点,合并跨膜压差数据")
|
|
|
+ # 过滤掉小于 0.01 的异常值
|
|
|
+ valid_values = [v for v in control_26_values if v >= 0.01]
|
|
|
+
|
|
|
+ if valid_values:
|
|
|
+ max_val = max(valid_values)
|
|
|
+ min_val = min(valid_values)
|
|
|
+ logger.info(f"过滤后有效数据点数量: {len(valid_values)}/{len(control_26_values)}")
|
|
|
+ logger.info(f"控制字为26时的最大跨膜压差值={max_val},最小跨膜压差值={min_val}")
|
|
|
+ else:
|
|
|
+ # 如果所有值都小于 0.01,使用 0.01 作为保护值
|
|
|
+ max_val = 0.01
|
|
|
min_val = 0.01
|
|
|
- logger.info(f"控制字为22-26时的最大跨膜压差值={max_val},最小跨膜压差值={min_val}")
|
|
|
+ logger.warning(f"所有数据点均小于0.01,使用保护值0.01 (原始数据点数量: {len(control_26_values)})")
|
|
|
|
|
|
if max_val is not None and min_val is not None:
|
|
|
logger.info(f"API查询成功 最大跨膜压差值={max_val} 最小跨膜压差值={min_val}")
|
|
|
return max_val, min_val
|
|
|
else:
|
|
|
- logger.warning(f"未找到有效的控制字为22-26时的跨膜压差数据 (跨膜压差数据点:{len(item_values)}, 控制字数据点:{control_data_count if 'control_data_count' in locals() else 0}, 匹配数量:{matched_count if 'matched_count' in locals() else 0})")
|
|
|
+ logger.warning(f"未找到有效的控制字为26时的跨膜压差数据 (跨膜压差数据点:{len(item_values)}, 控制字数据点:{len(data2.get('data', []))}, 匹配数量:{matched_count if 'matched_count' in locals() else 0})")
|
|
|
return None, None
|
|
|
|
|
|
except requests.exceptions.RequestException as e:
|