FRPC运行状态在服务器离线时改为未运行
时序数据库入库测试 网卡名称同步修改
This commit is contained in:
+2
-2
@@ -13,8 +13,8 @@ public class NetworkNameUtil {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 匹配模式:冒号后跟数字 或 点后跟数字
|
// 匹配模式:冒号后跟数字 或 点 或 -后跟数字
|
||||||
String pattern = ".*[:.]\\d+$";
|
String pattern = ".*[:.-]\\d+$";
|
||||||
return interfaceName.matches(pattern);
|
return interfaceName.matches(pattern);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,6 +93,23 @@
|
|||||||
<artifactId>snmp4j</artifactId>
|
<artifactId>snmp4j</artifactId>
|
||||||
<version>2.8.9</version>
|
<version>2.8.9</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- IoTDB JDBC -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.iotdb</groupId>
|
||||||
|
<artifactId>iotdb-jdbc</artifactId>
|
||||||
|
<version>1.3.2</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- 连接池 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-pool2</artifactId>
|
||||||
|
<version>2.11.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.iotdb</groupId>
|
||||||
|
<artifactId>iotdb-session</artifactId>
|
||||||
|
<version>1.3.2</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
//package com.tongran.rocketmq.config;
|
||||||
|
//
|
||||||
|
//import lombok.extern.slf4j.Slf4j;
|
||||||
|
//import org.apache.iotdb.session.pool.SessionPool;
|
||||||
|
//import org.springframework.beans.factory.annotation.Value;
|
||||||
|
//import org.springframework.context.annotation.Bean;
|
||||||
|
//import org.springframework.context.annotation.Configuration;
|
||||||
|
//
|
||||||
|
//@Configuration
|
||||||
|
//@Slf4j
|
||||||
|
//public class SessionPoolConfig {
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * IoTDB连接配置
|
||||||
|
// */
|
||||||
|
// @Value("${iotdb.host:172.16.15.51}")
|
||||||
|
// private String host;
|
||||||
|
//
|
||||||
|
// @Value("${iotdb.port:6667}")
|
||||||
|
// private Integer port;
|
||||||
|
//
|
||||||
|
// @Value("${iotdb.username:root}")
|
||||||
|
// private String username;
|
||||||
|
//
|
||||||
|
// @Value("${iotdb.password:root123}")
|
||||||
|
// private String password;
|
||||||
|
//
|
||||||
|
// @Value("${iotdb.pool.maxSize:10}")
|
||||||
|
// private int maxSize;
|
||||||
|
//
|
||||||
|
// @Value("${iotdb.pool.enableCompression:false}")
|
||||||
|
// private boolean enableCompression;
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * 创建IoTDB SessionPool连接池
|
||||||
|
// */
|
||||||
|
// @Bean(destroyMethod = "close")
|
||||||
|
// public SessionPool sessionPool() {
|
||||||
|
// try {
|
||||||
|
// log.info("开始初始化IoTDB SessionPool连接池...");
|
||||||
|
// log.info("IoTDB连接参数 - Host: {}, Port: {}, Username: {}, PoolSize: {}",
|
||||||
|
// host, port, username, maxSize);
|
||||||
|
//
|
||||||
|
// // 构建SessionPool
|
||||||
|
// SessionPool sessionPool = new SessionPool.Builder()
|
||||||
|
// .host(host)
|
||||||
|
// .port(port)
|
||||||
|
// .user(username)
|
||||||
|
// .password(password)
|
||||||
|
// .maxSize(maxSize)
|
||||||
|
// .enableCompression(enableCompression)
|
||||||
|
// .build();
|
||||||
|
//
|
||||||
|
// // 测试连接
|
||||||
|
// if (testConnection(sessionPool)) {
|
||||||
|
// log.info("IoTDB SessionPool连接池初始化成功!");
|
||||||
|
// return sessionPool;
|
||||||
|
// } else {
|
||||||
|
// log.error("IoTDB连接测试失败,请检查配置和IoTDB服务状态");
|
||||||
|
// throw new RuntimeException("IoTDB连接测试失败");
|
||||||
|
// }
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// log.error("初始化IoTDB SessionPool失败: ", e);
|
||||||
|
// throw new RuntimeException("初始化IoTDB SessionPool失败", e);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * 测试IoTDB连接
|
||||||
|
// */
|
||||||
|
// private boolean testConnection(SessionPool sessionPool) {
|
||||||
|
// try {
|
||||||
|
// // 执行一个简单的查询来测试连接
|
||||||
|
// String testSql = "show version";
|
||||||
|
// sessionPool.executeQueryStatement(testSql);
|
||||||
|
// log.info("IoTDB连接测试成功");
|
||||||
|
// return true;
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// log.error("IoTDB连接测试异常: ", e);
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.tongran.rocketmq.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IoTDB数据包装类
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class IotDbData {
|
||||||
|
private String dataType; // 数据类型: server, switch, router
|
||||||
|
private String deviceId; // 设备标识
|
||||||
|
private String tag; // 标签: 网卡名、端口名等
|
||||||
|
private long timestamp; // 时间戳
|
||||||
|
private Map<String, Object> dataMap = new HashMap<>(); // 数据字段
|
||||||
|
|
||||||
|
public IotDbData addField(String key, Object value) {
|
||||||
|
dataMap.put(key, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
package com.tongran.rocketmq.domain.vo;
|
||||||
|
|
||||||
|
import com.tongran.common.core.web.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class EpsMethodChangeRecordVo extends BaseEntity {
|
||||||
|
|
||||||
|
|
||||||
|
/** 修改内容 */
|
||||||
|
private String changeContent;
|
||||||
|
|
||||||
|
/** 创建人 */
|
||||||
|
private String creatBy;
|
||||||
|
|
||||||
|
/** 流量网口 */
|
||||||
|
private String trafficPort;
|
||||||
|
|
||||||
|
/** 业务代码(12位) */
|
||||||
|
private String businessCode;
|
||||||
|
/** 客户端id */
|
||||||
|
private String clientId;
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ import com.tongran.common.core.domain.R;
|
|||||||
import com.tongran.common.core.enums.MsgEnum;
|
import com.tongran.common.core.enums.MsgEnum;
|
||||||
import com.tongran.common.core.utils.DateUtils;
|
import com.tongran.common.core.utils.DateUtils;
|
||||||
import com.tongran.common.core.utils.StringUtils;
|
import com.tongran.common.core.utils.StringUtils;
|
||||||
|
import com.tongran.common.security.utils.SecurityUtils;
|
||||||
import com.tongran.rocketmq.domain.*;
|
import com.tongran.rocketmq.domain.*;
|
||||||
import com.tongran.rocketmq.domain.vo.*;
|
import com.tongran.rocketmq.domain.vo.*;
|
||||||
import com.tongran.rocketmq.enums.AlarmTypeEnum;
|
import com.tongran.rocketmq.enums.AlarmTypeEnum;
|
||||||
@@ -862,6 +863,11 @@ public class MessageHandler {
|
|||||||
redisTemplate.delete(statusKey);
|
redisTemplate.delete(statusKey);
|
||||||
|
|
||||||
log.info("客户端ID: {} 已设置告警并清理心跳记录", clientId);
|
log.info("客户端ID: {} 已设置告警并清理心跳记录", clientId);
|
||||||
|
// frpc状态改为未运行
|
||||||
|
RmFrpcConfigManage updateFrp = new RmFrpcConfigManage();
|
||||||
|
updateFrp.setClientId(clientId);
|
||||||
|
updateFrp.setFrpcStatus("0");
|
||||||
|
rmFrpcConfigManageService.updateRmFrpcConfigManage(updateFrp);
|
||||||
// 修改资源状态
|
// 修改资源状态
|
||||||
updateResourceStatus(clientId, "0");
|
updateResourceStatus(clientId, "0");
|
||||||
}
|
}
|
||||||
@@ -1343,6 +1349,24 @@ public class MessageHandler {
|
|||||||
updateData.setInterfaceType(networkInfo.getType());
|
updateData.setInterfaceType(networkInfo.getType());
|
||||||
needUpdate = true;
|
needUpdate = true;
|
||||||
}
|
}
|
||||||
|
if (!StringUtils.equals(networkInfo.getName(), oldInterfaceMsg.getInterfaceName())) {
|
||||||
|
if(networkInfo.getName() != null){
|
||||||
|
// 添加业务变更记录
|
||||||
|
EpsMethodChangeRecordVo recordAddData = new EpsMethodChangeRecordVo();
|
||||||
|
recordAddData.setClientId(clientId);
|
||||||
|
recordAddData.setTrafficPort(networkInfo.getName());
|
||||||
|
recordAddData.setUpdateTime(DateUtils.getNowDate());
|
||||||
|
recordAddData.setCreateTime(DateUtils.getNowDate());
|
||||||
|
recordAddData.setUpdateBy(SecurityUtils.getUsername());
|
||||||
|
recordAddData.setCreatBy(SecurityUtils.getUsername());
|
||||||
|
StringBuilder content = new StringBuilder();
|
||||||
|
content.append("流量网口设置为").append(networkInfo.getName());
|
||||||
|
recordAddData.setChangeContent(content.toString());
|
||||||
|
rmNetworkInterfaceService.addTrafficPortChangeRecord(recordAddData);
|
||||||
|
updateData.setInterfaceName(networkInfo.getName());
|
||||||
|
needUpdate = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 只有有字段变化时才执行更新
|
// 只有有字段变化时才执行更新
|
||||||
if (needUpdate) {
|
if (needUpdate) {
|
||||||
|
|||||||
+3
@@ -1,6 +1,7 @@
|
|||||||
package com.tongran.rocketmq.mapper;
|
package com.tongran.rocketmq.mapper;
|
||||||
|
|
||||||
import com.tongran.rocketmq.domain.RmNetworkInterface;
|
import com.tongran.rocketmq.domain.RmNetworkInterface;
|
||||||
|
import com.tongran.rocketmq.domain.vo.EpsMethodChangeRecordVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -63,4 +64,6 @@ public interface RmNetworkInterfaceMapper
|
|||||||
int updateRmNetworkInterfaceByMac(RmNetworkInterface rmNetworkInterface);
|
int updateRmNetworkInterfaceByMac(RmNetworkInterface rmNetworkInterface);
|
||||||
|
|
||||||
int updateNetMsgByMac(RmNetworkInterface rmNetworkInterface);
|
int updateNetMsgByMac(RmNetworkInterface rmNetworkInterface);
|
||||||
|
|
||||||
|
int addTrafficPortChangeRecord(EpsMethodChangeRecordVo recordAddData);
|
||||||
}
|
}
|
||||||
|
|||||||
+3
@@ -1,6 +1,7 @@
|
|||||||
package com.tongran.rocketmq.service;
|
package com.tongran.rocketmq.service;
|
||||||
|
|
||||||
import com.tongran.rocketmq.domain.RmNetworkInterface;
|
import com.tongran.rocketmq.domain.RmNetworkInterface;
|
||||||
|
import com.tongran.rocketmq.domain.vo.EpsMethodChangeRecordVo;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -87,4 +88,6 @@ public interface IRmNetworkInterfaceService
|
|||||||
* @param clientId
|
* @param clientId
|
||||||
*/
|
*/
|
||||||
void issueNetName(String clientId);
|
void issueNetName(String clientId);
|
||||||
|
|
||||||
|
int addTrafficPortChangeRecord(EpsMethodChangeRecordVo recordAddData);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -6,6 +6,7 @@ import com.tongran.common.core.utils.DateUtils;
|
|||||||
import com.tongran.rocketmq.domain.DeviceMessage;
|
import com.tongran.rocketmq.domain.DeviceMessage;
|
||||||
import com.tongran.rocketmq.domain.RmNetworkInterface;
|
import com.tongran.rocketmq.domain.RmNetworkInterface;
|
||||||
import com.tongran.rocketmq.domain.RmNetworkInterfaceChild;
|
import com.tongran.rocketmq.domain.RmNetworkInterfaceChild;
|
||||||
|
import com.tongran.rocketmq.domain.vo.EpsMethodChangeRecordVo;
|
||||||
import com.tongran.rocketmq.domain.vo.PolicyTypeVo;
|
import com.tongran.rocketmq.domain.vo.PolicyTypeVo;
|
||||||
import com.tongran.rocketmq.mapper.RmNetworkInterfaceChildMapper;
|
import com.tongran.rocketmq.mapper.RmNetworkInterfaceChildMapper;
|
||||||
import com.tongran.rocketmq.mapper.RmNetworkInterfaceMapper;
|
import com.tongran.rocketmq.mapper.RmNetworkInterfaceMapper;
|
||||||
@@ -245,4 +246,9 @@ public class RmNetworkInterfaceServiceImpl implements IRmNetworkInterfaceService
|
|||||||
JSONObject.toJSONString(message)
|
JSONObject.toJSONString(message)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int addTrafficPortChangeRecord(EpsMethodChangeRecordVo recordAddData) {
|
||||||
|
return rmNetworkInterfaceMapper.addTrafficPortChangeRecord(recordAddData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+8
@@ -42,6 +42,8 @@ public class ProcessSwitchCollectDataService {
|
|||||||
private IInitialSwitchOpticalModuleService initialSwitchOpticalModuleService;
|
private IInitialSwitchOpticalModuleService initialSwitchOpticalModuleService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IInitialSwitchOtherCollectDataService insertInitialSwitchOtherInfo;
|
private IInitialSwitchOtherCollectDataService insertInitialSwitchOtherInfo;
|
||||||
|
// @Autowired
|
||||||
|
// private IotDbUtils iotDbUtils;
|
||||||
// 在类中添加
|
// 在类中添加
|
||||||
private static final ObjectMapper objectMapper = new ObjectMapper();
|
private static final ObjectMapper objectMapper = new ObjectMapper();
|
||||||
/**
|
/**
|
||||||
@@ -198,6 +200,7 @@ public class ProcessSwitchCollectDataService {
|
|||||||
|
|
||||||
// 3. 计算速度
|
// 3. 计算速度
|
||||||
switchInfos.forEach(switchInfo -> {
|
switchInfos.forEach(switchInfo -> {
|
||||||
|
// Map filedMap = new HashMap();
|
||||||
switchInfo.setClientId(clientId);
|
switchInfo.setClientId(clientId);
|
||||||
switchInfo.setCreateTime(createTime);
|
switchInfo.setCreateTime(createTime);
|
||||||
switchInfo.setSwitchIp(switchDataVo.getSwitchIp());
|
switchInfo.setSwitchIp(switchDataVo.getSwitchIp());
|
||||||
@@ -209,6 +212,7 @@ public class ProcessSwitchCollectDataService {
|
|||||||
// 字节转为bit
|
// 字节转为bit
|
||||||
BigDecimal inDiffBit = inDiff.multiply(new BigDecimal(8)).setScale(0, RoundingMode.HALF_UP);
|
BigDecimal inDiffBit = inDiff.multiply(new BigDecimal(8)).setScale(0, RoundingMode.HALF_UP);
|
||||||
switchInfo.setInSpeed(inDiffBit.divide(divisor, 0, RoundingMode.HALF_UP));
|
switchInfo.setInSpeed(inDiffBit.divide(divisor, 0, RoundingMode.HALF_UP));
|
||||||
|
// filedMap.put("in", inDiffBit.divide(divisor, 0, RoundingMode.HALF_UP));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算outSpeed
|
// 计算outSpeed
|
||||||
@@ -217,8 +221,12 @@ public class ProcessSwitchCollectDataService {
|
|||||||
// 字节转为bit
|
// 字节转为bit
|
||||||
BigDecimal outDiffBit = outDiff.multiply(new BigDecimal(8)).setScale(0, RoundingMode.HALF_UP);
|
BigDecimal outDiffBit = outDiff.multiply(new BigDecimal(8)).setScale(0, RoundingMode.HALF_UP);
|
||||||
switchInfo.setOutSpeed(outDiffBit.divide(divisor, 0, RoundingMode.HALF_UP));
|
switchInfo.setOutSpeed(outDiffBit.divide(divisor, 0, RoundingMode.HALF_UP));
|
||||||
|
// filedMap.put("out", outDiffBit.divide(divisor, 0, RoundingMode.HALF_UP));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// iotDbUtils.writeDataWithTag("switch", clientId,
|
||||||
|
// switchInfo.getName(), millis, filedMap
|
||||||
|
// );
|
||||||
});
|
});
|
||||||
// 清空临时表对应switch信息
|
// 清空临时表对应switch信息
|
||||||
initialSwitchInfoTempService.truncateSwitchInfoTemp(clientId);
|
initialSwitchInfoTempService.truncateSwitchInfoTemp(clientId);
|
||||||
|
|||||||
@@ -0,0 +1,137 @@
|
|||||||
|
//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();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
@@ -104,7 +104,6 @@
|
|||||||
<update id="updateRmFrpcConfigManage" parameterType="RmFrpcConfigManage">
|
<update id="updateRmFrpcConfigManage" parameterType="RmFrpcConfigManage">
|
||||||
update rm_frpc_config_manage
|
update rm_frpc_config_manage
|
||||||
<trim prefix="SET" suffixOverrides=",">
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
<if test="clientId != null">client_id = #{clientId},</if>
|
|
||||||
<if test="frpcServerAddr != null">frpc_server_addr = #{frpcServerAddr},</if>
|
<if test="frpcServerAddr != null">frpc_server_addr = #{frpcServerAddr},</if>
|
||||||
<if test="frpcServerPort != null">frpc_server_port = #{frpcServerPort},</if>
|
<if test="frpcServerPort != null">frpc_server_port = #{frpcServerPort},</if>
|
||||||
<if test="frpcRemotePort != null">frpc_remote_port = #{frpcRemotePort},</if>
|
<if test="frpcRemotePort != null">frpc_remote_port = #{frpcRemotePort},</if>
|
||||||
@@ -120,7 +119,19 @@
|
|||||||
<if test="frpcStatus != null">frpc_status = #{frpcStatus},</if>
|
<if test="frpcStatus != null">frpc_status = #{frpcStatus},</if>
|
||||||
<if test="frpcType != null">frpc_type = #{frpcType},</if>
|
<if test="frpcType != null">frpc_type = #{frpcType},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
<where>
|
||||||
|
<choose>
|
||||||
|
<when test="id != null">
|
||||||
|
and id = #{id}
|
||||||
|
</when>
|
||||||
|
<when test="clientId != null">
|
||||||
|
and client_id = #{clientId}
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
and 1=0
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</where>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<delete id="deleteRmFrpcConfigManageById" parameterType="Long">
|
<delete id="deleteRmFrpcConfigManageById" parameterType="Long">
|
||||||
|
|||||||
@@ -176,4 +176,25 @@
|
|||||||
update_time = #{updateTime}
|
update_time = #{updateTime}
|
||||||
where mac_address = #{macAddress} and client_id = #{clientId}
|
where mac_address = #{macAddress} and client_id = #{clientId}
|
||||||
</update>
|
</update>
|
||||||
|
<insert id="addTrafficPortChangeRecord" parameterType="EpsMethodChangeRecordVo">
|
||||||
|
insert into eps_method_change_record
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="changeContent != null">change_content,</if>
|
||||||
|
<if test="createTime != null">create_time,</if>
|
||||||
|
<if test="creatBy != null">creat_by,</if>
|
||||||
|
<if test="updateTime != null">update_time,</if>
|
||||||
|
<if test="updateBy != null">update_by,</if>
|
||||||
|
<if test="trafficPort != null">traffic_port,</if>
|
||||||
|
<if test="clientId != null">client_id,</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="changeContent != null">#{changeContent},</if>
|
||||||
|
<if test="createTime != null">#{createTime},</if>
|
||||||
|
<if test="creatBy != null">#{creatBy},</if>
|
||||||
|
<if test="updateTime != null">#{updateTime},</if>
|
||||||
|
<if test="updateBy != null">#{updateBy},</if>
|
||||||
|
<if test="trafficPort != null">#{trafficPort},</if>
|
||||||
|
<if test="clientId != null">#{clientId},</if>
|
||||||
|
</trim>
|
||||||
|
</insert>
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user