//package com.tongran.rocketmq.utils;
//
//import com.tongran.rocketmq.domain.IotDbData;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.iotdb.session.pool.SessionPool;
//import org.springframework.stereotype.Component;
//
//import java.util.List;
//import java.util.Map;
//
//@Component
//@Slf4j
//@RequiredArgsConstructor
//public class IotDbUtils {
//
//    private final SessionPool sessionPool;
//
//    /**
//     * 通用写入方法
//     * @param dataType 数据类型: server, switch, router等
//     * @param deviceId 设备ID: clientId, switchIp等
//     * @param timestamp 时间戳
//     * @param dataMap 数据Map: key=字段名, value=字段值
//     */
//    public void writeData(String dataType, String deviceId, long timestamp, Map<String, Object> dataMap) {
//        if (dataMap == null || dataMap.isEmpty()) return;
//
//        try {
//            String sql = buildInsertSql(dataType, deviceId, timestamp, dataMap);
//            sessionPool.executeNonQueryStatement(sql);
//        } catch (Exception e) {
//            log.error("IoTDB写入失败: type={}, device={}", dataType, deviceId, e);
//        }
//    }
//
//    /**
//     * 写入带标签的数据（如网卡、端口）
//     */
//    public void writeDataWithTag(String dataType, String deviceId, String tag,
//                                 long timestamp, Map<String, Object> dataMap) {
//        if (dataMap == null || dataMap.isEmpty()) return;
//
//        try {
//            String sql = buildInsertSqlWithTag(dataType, deviceId, tag, timestamp, dataMap);
//            sessionPool.executeNonQueryStatement(sql);
//        } catch (Exception e) {
//            log.error("IoTDB写入失败: type={}, device={}, tag={}", dataType, deviceId, tag, e);
//        }
//    }
//
//    /**
//     * 批量写入
//     */
//    public void batchWrite(List<IotDbData> dataList) {
//        if (dataList == null || dataList.isEmpty()) return;
//
//        for (IotDbData data : dataList) {
//            writeData(data.getDataType(), data.getDeviceId(),
//                    data.getTimestamp(), data.getDataMap());
//        }
//    }
//
//    private String buildInsertSql(String dataType, String deviceId,
//                                  long timestamp, Map<String, Object> dataMap) {
//        String devicePath = buildDevicePath(dataType, deviceId, null);
//        return buildSql(devicePath, timestamp, dataMap);
//    }
//
//    private String buildInsertSqlWithTag(String dataType, String deviceId, String tag,
//                                         long timestamp, Map<String, Object> dataMap) {
//        String devicePath = buildDevicePath(dataType, deviceId, tag);
//        return buildSql(devicePath, timestamp, dataMap);
//    }
//
//    private String buildDevicePath(String dataType, String deviceId, String tag) {
//        // 基础路径: root.{dataType}.{deviceId}
//        StringBuilder path = new StringBuilder("root.")
//                .append(safePath(dataType)).append(".")
//                .append(safePath(deviceId));
//
//        // 如果有标签（如网卡名、端口名）
//        if (tag != null && !tag.trim().isEmpty()) {
//            path.append(".").append(safePath(tag));
//        }
//
//        return path.toString();
//    }
//
//    private String buildSql(String devicePath, long timestamp, Map<String, Object> dataMap) {
//        StringBuilder sql = new StringBuilder("INSERT INTO ")
//                .append(devicePath)
//                .append("(timestamp");
//
//        StringBuilder values = new StringBuilder("VALUES(").append(timestamp);
//
//        for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
//            if (entry.getValue() != null) {
//                sql.append(", ").append(safeField(entry.getKey()));
//                values.append(", ").append(formatValue(entry.getValue()));
//            }
//        }
//
//        sql.append(") ").append(values).append(")");
//        return sql.toString();
//    }
//
//    /**
//     * 路径安全处理
//     */
//    private String safePath(String input) {
//        if (input == null) return "unknown";
//        return input.replace(".", "_")
//                .replace(":", "_")
//                .replace("-", "_")
//                .replaceAll("[^a-zA-Z0-9_]", "_");
//    }
//
//    /**
//     * 字段名安全处理
//     */
//    private String safeField(String field) {
//        if (field == null) return "unknown";
//        return field.replaceAll("[^a-zA-Z0-9_]", "_");
//    }
//
//    /**
//     * 值格式化
//     */
//    private String formatValue(Object value) {
//        if (value == null) return "null";
//        if (value instanceof String) {
//            return "'" + value.toString().replace("'", "''") + "'";
//        }
//        return value.toString();
//    }
//}