feat(core): 重构主应用启动逻辑并改进WITS数据发送
- 将主应用改为同时启动MQTT订阅入库和WITS数据发送两个服务 - 实现WITS发送器的自动重连机制和连接状态管理 - 添加日志记录到log/app.log和错误日志到log/error.log - 更新WITS通道映射定义并支持字符串类型的日期时间字段 - 修改数据入库逻辑以支持空值处理和类型转换容错 - 移除命令行子命令模式,改为配置文件驱动的参数设置 - 添加.vscode和log目录到.gitignore忽略列表
This commit is contained in:
29
db/orm.py
29
db/orm.py
@@ -1,4 +1,5 @@
|
||||
import re
|
||||
import logging
|
||||
import re
|
||||
|
||||
from model import DrillingRealtimeData
|
||||
|
||||
@@ -88,14 +89,34 @@ class DrillingRealtimeORM:
|
||||
table_name = sanitize_identifier(f"drilling_realtime_{equipment_code}", "drilling_realtime_default")
|
||||
values = []
|
||||
for column in DB_COLUMNS:
|
||||
raw = getattr(entity, column)
|
||||
raw = getattr(entity, column, None)
|
||||
if raw is None:
|
||||
logging.debug("Column %s is None, default=0", column)
|
||||
if column in INT_COLUMNS or column == "ts":
|
||||
values.append(str(int(raw)))
|
||||
values.append(str(to_int(raw)))
|
||||
else:
|
||||
values.append(str(float(raw)))
|
||||
values.append(str(to_float(raw)))
|
||||
columns_sql = ", ".join([f"`{column}`" for column in DB_COLUMNS])
|
||||
values_sql = ", ".join(values)
|
||||
return (
|
||||
f"INSERT INTO `{self.database}`.`{table_name}` USING `{self.database}`.`{self.stable}` "
|
||||
f"TAGS ({sql_quote(equipment_code)}) ({columns_sql}) VALUES ({values_sql})"
|
||||
)
|
||||
|
||||
|
||||
def to_int(value, default=0):
|
||||
try:
|
||||
if value is None or value == "":
|
||||
return default
|
||||
return int(value)
|
||||
except Exception:
|
||||
return default
|
||||
|
||||
|
||||
def to_float(value, default=0.0):
|
||||
try:
|
||||
if value is None or value == "":
|
||||
return default
|
||||
return float(value)
|
||||
except Exception:
|
||||
return default
|
||||
Reference in New Issue
Block a user