add: 一期代码

This commit is contained in:
republicline 2024-11-13 14:09:34 +08:00
parent b17b11cf1a
commit d7d377435e
2 changed files with 136 additions and 136 deletions

View File

@ -1,130 +1,130 @@
package com.rax.vital.controller;
import com.rax.common.core.util.R;
import com.rax.common.security.annotation.Inner;
import com.rax.vital.common.datasource.DynamicDataSource;
import com.rax.vital.entity.VisualBody;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.concurrent.*;
/**
* @project_name: rax-remote-v2
* @time: 2024/11/5 11:05
* @author: republicline
* @description: 仪器端和服务端通信接口
*/
@RestController
@RequestMapping("/machine")
public class MachineController {
// 生命体征表名
private static final String FEATURE_TABLE_NAME = "featuretable";
// 异步入库
private ExecutorService executorService = Executors.newFixedThreadPool(5);
// 动态数据源
private ConcurrentHashMap<String, DynamicDataSource> dynamicDataSources = new ConcurrentHashMap<>();
// 仪器端生命体征数据入库
@PostMapping("/save")
@Inner(value = false)
public R<Object> saveVitalBodyData(VisualBody visualBody) {
System.out.println("visualBody = " + visualBody);
for (String key : dynamicDataSources.keySet()) System.out.println("key = " + key);
// 校验
if (visualBody == null) return R.failed("参数不能为空");
if (visualBody.getDatabaseName() == null ||
visualBody.getPhase() == null || visualBody.getBIS() == null ||
visualBody.getHR() == null || visualBody.getSBP() == null ||
visualBody.getDBP() == null || visualBody.getST() == null ||
visualBody.getTEMP() == null || visualBody.getSP02() == null ||
visualBody.getEtCO2() == null || visualBody.getPPG() == null ||
visualBody.getABG() == null || visualBody.getTOF() == null ||
visualBody.getTIME() == null) {
return R.failed("参数含有空值");
}
saveVitalBodyDataAsync(visualBody);
return R.ok("success");
}
// 关闭数据源
@PostMapping("/close")
@Inner(value = false)
public R<Object> closeDataSource(String databaseName) {
if (databaseName == null) {
return R.failed("参数不能为空");
}
dynamicDataSources.remove(databaseName);
DynamicDataSource dynamicDataSource = dynamicDataSources.get(databaseName);
if (dynamicDataSource == null) {
return R.failed("数据源不存在");
}
dynamicDataSource.closeDataSource();
return R.ok("success");
}
private void saveVitalBodyDataAsync(VisualBody visualBody) {
executorService.execute(() -> {
try {
String databaseName = visualBody.getDatabaseName();
if (!dynamicDataSources.containsKey(databaseName)) {
// 创建动态数据源
System.out.println("连接池创建数据源");
DynamicDataSource dynamicDataSource = new DynamicDataSource();
dynamicDataSource.createDataSource(databaseName);
dynamicDataSources.put(databaseName, dynamicDataSource);
}
if (dynamicDataSources.get(databaseName) == null) {
dynamicDataSources.remove(databaseName);
throw new RuntimeException("数据源不存在");
}
// 获取连接
Connection connection = dynamicDataSources.get(databaseName).getConnection();
if (connection == null) {
throw new RuntimeException("数据库连接失败");
}
// 数据库操作
String sql = String.format("""
INSERT INTO %s
(Phase, BIS, HR, SBP, DBP, ST, TEMP, SPO2, EtCO2, PPG, ABG, TOF, `TIME`)
VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?);
""", FEATURE_TABLE_NAME);
PreparedStatement ps = connection.prepareStatement(sql);
ps.setInt(1, visualBody.getPhase());
ps.setDouble(2, visualBody.getBIS());
ps.setDouble(3, visualBody.getHR());
ps.setDouble(4, visualBody.getSBP());
ps.setDouble(5, visualBody.getDBP());
ps.setDouble(6, visualBody.getST());
ps.setDouble(7, visualBody.getTEMP());
ps.setDouble(8, visualBody.getSP02());
ps.setDouble(9, visualBody.getEtCO2());
ps.setDouble(10, visualBody.getPPG());
ps.setDouble(11, visualBody.getABG());
ps.setDouble(12, visualBody.getTOF());
ps.setTimestamp(13, visualBody.getTIME());
ps.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
}
//package com.rax.vital.controller;
//
//import com.rax.common.core.util.R;
//import com.rax.common.security.annotation.Inner;
//import com.rax.vital.common.datasource.DynamicDataSource;
//import com.rax.vital.entity.VisualBody;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.sql.Connection;
//import java.sql.PreparedStatement;
//import java.sql.SQLException;
//import java.util.concurrent.*;
//
///**
// * @project_name: rax-remote-v2
// * @time: 2024/11/5 11:05
// * @author: republicline
// * @description: 仪器端和服务端通信接口
// */
//@RestController
//@RequestMapping("/machine")
//public class MachineController {
//
// // 生命体征表名
// private static final String FEATURE_TABLE_NAME = "featuretable";
//
// // 异步入库
// private ExecutorService executorService = Executors.newFixedThreadPool(5);
//
// // 动态数据源
// private ConcurrentHashMap<String, DynamicDataSource> dynamicDataSources = new ConcurrentHashMap<>();
//
// // 仪器端生命体征数据入库
// @PostMapping("/save")
// @Inner(value = false)
// public R<Object> saveVitalBodyData(VisualBody visualBody) {
// System.out.println("visualBody = " + visualBody);
//
// for (String key : dynamicDataSources.keySet()) System.out.println("key = " + key);
//
// // 校验
// if (visualBody == null) return R.failed("参数不能为空");
//
// if (visualBody.getDatabaseName() == null ||
// visualBody.getPhase() == null || visualBody.getBIS() == null ||
// visualBody.getHR() == null || visualBody.getSBP() == null ||
// visualBody.getDBP() == null || visualBody.getST() == null ||
// visualBody.getTEMP() == null || visualBody.getSP02() == null ||
// visualBody.getEtCO2() == null || visualBody.getPPG() == null ||
// visualBody.getABG() == null || visualBody.getTOF() == null ||
// visualBody.getTIME() == null) {
// return R.failed("参数含有空值");
// }
// saveVitalBodyDataAsync(visualBody);
// return R.ok("success");
// }
//
// // 关闭数据源
// @PostMapping("/close")
// @Inner(value = false)
// public R<Object> closeDataSource(String databaseName) {
// if (databaseName == null) {
// return R.failed("参数不能为空");
// }
// dynamicDataSources.remove(databaseName);
// DynamicDataSource dynamicDataSource = dynamicDataSources.get(databaseName);
// if (dynamicDataSource == null) {
// return R.failed("数据源不存在");
// }
// dynamicDataSource.closeDataSource();
// return R.ok("success");
// }
//
// private void saveVitalBodyDataAsync(VisualBody visualBody) {
// executorService.execute(() -> {
// try {
//
// String databaseName = visualBody.getDatabaseName();
// if (!dynamicDataSources.containsKey(databaseName)) {
// // 创建动态数据源
// System.out.println("连接池创建数据源");
// DynamicDataSource dynamicDataSource = new DynamicDataSource();
// dynamicDataSource.createDataSource(databaseName);
// dynamicDataSources.put(databaseName, dynamicDataSource);
// }
//
// if (dynamicDataSources.get(databaseName) == null) {
// dynamicDataSources.remove(databaseName);
// throw new RuntimeException("数据源不存在");
// }
//
// // 获取连接
// Connection connection = dynamicDataSources.get(databaseName).getConnection();
//
// if (connection == null) {
// throw new RuntimeException("数据库连接失败");
// }
//
// // 数据库操作
// String sql = String.format("""
// INSERT INTO %s
// (Phase, BIS, HR, SBP, DBP, ST, TEMP, SPO2, EtCO2, PPG, ABG, TOF, `TIME`)
// VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?);
// """, FEATURE_TABLE_NAME);
// PreparedStatement ps = connection.prepareStatement(sql);
// ps.setInt(1, visualBody.getPhase());
// ps.setDouble(2, visualBody.getBIS());
// ps.setDouble(3, visualBody.getHR());
// ps.setDouble(4, visualBody.getSBP());
// ps.setDouble(5, visualBody.getDBP());
// ps.setDouble(6, visualBody.getST());
// ps.setDouble(7, visualBody.getTEMP());
// ps.setDouble(8, visualBody.getSP02());
// ps.setDouble(9, visualBody.getEtCO2());
// ps.setDouble(10, visualBody.getPPG());
// ps.setDouble(11, visualBody.getABG());
// ps.setDouble(12, visualBody.getTOF());
// ps.setTimestamp(13, visualBody.getTIME());
// ps.execute();
// } catch (SQLException e) {
// throw new RuntimeException(e);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
//
// });
// }
//}

View File

@ -116,8 +116,8 @@ spring:
port: 16373
password: rax137839
connect-timeout: 5000
database: 0 # 二期
# database: 1 # 一期
# database: 0 # 二期
database: 1 # 一期
# 数据库相关配置
datasource:
@ -125,13 +125,13 @@ spring:
username: root
password: Xg137839
# 一期
# url: jdbc:mysql://110.41.142.124:3306/rax_backend1?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&nullCatalogMeansCurrent=true
url: jdbc:mysql://110.41.142.124:3306/rax_backend1?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&nullCatalogMeansCurrent=true
# 二期
url: jdbc:mysql://110.41.142.124:3306/rax_backend?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&nullCatalogMeansCurrent=true
# url: jdbc:mysql://110.41.142.124:3306/rax_backend?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&nullCatalogMeansCurrent=true
server:
# port: 6679 #一期
port: 6379 #二期
port: 6679 #一期
# port: 6379 #二期
servlet:
context-path: /admin