diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index f6f1da5f..097422c2 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -17,6 +17,7 @@
+
@@ -46,6 +47,7 @@
+
diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
index a6ced4e2..4bc21a3c 100644
--- a/.idea/dataSources.xml
+++ b/.idea/dataSources.xml
@@ -13,5 +13,17 @@
$ProjectFileDir$
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+
+
+
+
+
+ $ProjectFileDir$
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index cb1ea2b1..a3acbe97 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -9,6 +9,7 @@
+
diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
index 3b1f255e..4a7477eb 100644
--- a/.idea/sqldialects.xml
+++ b/.idea/sqldialects.xml
@@ -1,6 +1,7 @@
-
+
+
\ No newline at end of file
diff --git a/1-sql/2025-12-23/flowable/asny_task_record.sql b/1-sql/2025-12-23/flowable/asny_task_record.sql
new file mode 100644
index 00000000..2b859f7e
--- /dev/null
+++ b/1-sql/2025-12-23/flowable/asny_task_record.sql
@@ -0,0 +1,38 @@
+-- 1. 先删除原唯一索引(因索引关联原字段名,需先删后重建)
+ALTER TABLE `async_task_record` DROP INDEX `async_task_id`;
+
+-- 2. 删除原普通索引
+ALTER TABLE `async_task_record` DROP INDEX `idx_async_task_id`;
+
+-- 3. 重命名字段(按驼峰规则逐个修改)
+ALTER TABLE `async_task_record`
+ -- 主键ID(原id保留,本身无下划线)
+ CHANGE COLUMN `id` `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID,自增',
+ -- 异步任务唯一标识
+ CHANGE COLUMN `async_task_id` `asyncTaskId` varchar(64) NOT NULL COMMENT '异步任务唯一标识,全局唯一,用于定位单个异步任务',
+ -- 流程实例ID
+ CHANGE COLUMN `process_instance_id` `processInstanceId` varchar(64) DEFAULT NULL COMMENT '流程实例ID,关联工作流引擎的流程实例(如Camunda的processInstanceId)',
+ -- 流程执行ID
+ CHANGE COLUMN `execution_id` `executionId` varchar(64) DEFAULT NULL COMMENT '流程执行ID,关联工作流引擎的执行实例(如Camunda的executionId)',
+ -- 接收任务ID
+ CHANGE COLUMN `receive_task_id` `receiveTaskId` varchar(64) DEFAULT NULL COMMENT '接收任务ID,关联工作流中接收任务节点的ID(用于异步回调触发流程继续)',
+ -- 业务处理器类型
+ CHANGE COLUMN `handler_type` `handlerType` varchar(64) DEFAULT NULL COMMENT '业务处理器类型,标识任务对应的业务处理逻辑,例如:HPC(高性能计算)/OCR(图文识别)/AI(智能分析)',
+ -- 任务请求参数
+ CHANGE COLUMN `request_json` `requestJson` text COMMENT '任务请求参数,JSON格式字符串,存储触发异步任务时的入参信息',
+ -- 任务执行结果
+ CHANGE COLUMN `result_json` `resultJson` text COMMENT '任务执行结果,JSON格式字符串,存储异步任务完成后的返回数据(成功/失败均记录)',
+ -- 任务状态(原status无下划线,保留)
+ CHANGE COLUMN `status` `status` varchar(32) DEFAULT 'INIT' COMMENT '任务状态:INIT(初始化)/RUNNING(执行中)/SUCCESS(执行成功)/FAIL(执行失败)',
+ -- 创建时间
+ CHANGE COLUMN `create_time` `createTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '任务创建时间,默认当前时间',
+ -- 更新时间
+ CHANGE COLUMN `update_time` `updateTime` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '任务更新时间,数据变更时自动更新为当前时间';
+
+-- 4. 重建唯一索引(关联新的驼峰字段名)
+ALTER TABLE `async_task_record`
+ ADD UNIQUE KEY `uk_asyncTaskId` (`asyncTaskId`);
+
+-- 5. 重建普通索引(关联新的驼峰字段名,更新索引注释)
+ALTER TABLE `async_task_record`
+ ADD KEY `idx_asyncTaskId` (`asyncTaskId`) COMMENT '异步任务ID索引,加速任务唯一标识的查询';
\ No newline at end of file
diff --git a/sql/flowable/base b/1-sql/flowable/base
similarity index 100%
rename from sql/flowable/base
rename to 1-sql/flowable/base
diff --git a/sql/spdmbaseline/base.sql b/1-sql/spdmbaseline/base.sql
similarity index 100%
rename from sql/spdmbaseline/base.sql
rename to 1-sql/spdmbaseline/base.sql
diff --git a/capability/src/main/resources/application-dev-190.yml b/capability/src/main/resources/application-dev-190.yml
new file mode 100644
index 00000000..fcfac719
--- /dev/null
+++ b/capability/src/main/resources/application-dev-190.yml
@@ -0,0 +1,114 @@
+server:
+ port: 7107
+
+spring:
+ application:
+ name: capability
+ datasource:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ hikari:
+ maximum-pool-size: 450 # 连接池最大连接数(关键!)
+ minimum-idle: 50 # 最小空闲连接数(与最大一致,避免频繁创建销毁)
+ idle-timeout: 300000 # 空闲连接超时时间(5分钟)
+ max-lifetime: 600000 # 连接最大存活时间(10分钟)
+ connection-timeout: 30000 # 获取连接超时时间(30秒,避免线程阻塞)
+ master:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ slave:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ enable: true
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.190.161:8848
+ group: DEV_GROUP
+# server-addr: 127.0.0.1:8848
+ enabled: true
+# username: nacos
+# password: ENC(+QKYnI6gAYu1SbLaZQTkZA==)
+ data:
+ redis:
+ # Redis默认情况下有16个分片(库),这里配置具体使用的分片,默认是0
+ database: 0
+ # redis服务器地址(填写自己的服务器地址)
+ host: 192.168.2.166
+ # redis端口(默认6379)
+ port: 6379
+ #redis连接超时等待,10秒
+ timeout: PT10S
+ # redis访问密码(默认为空)
+ password:
+ lettuce:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制) 默认 8
+ max-active: 50
+ # 连接池中的最大空闲连接 默认 8
+ max-idle: 20
+ # 连接池中的最小空闲连接 默认 0
+ min-idle: 1
+ # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1,这里配置10s
+ max-wait: PT10S
+# password:
+# sentinel:
+# master: mymaster
+# nodes: 10.18.109.50:26379,10.18.109.51:26379,10.18.109.52:26379
+ servlet:
+ multipart:
+ # 单个文件的最大值
+ max-file-size: 500MB
+ # 上传文件总的最大值
+ max-request-size: 10240MB
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info
+ endpoint:
+ health:
+ show-details: always
+
+mybatis-plus:
+ configuration:
+ map-underscore-to-camel-case: true
+ auto-mapping-behavior: full
+# cache-enabled: true
+ # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ mapper-locations: classpath*:mapper/**/*.xml
+ global-config:
+ # 逻辑删除配置
+ db-config:
+ # 删除前
+ logic-not-delete-value: 1
+ # 删除后
+ logic-delete-value: 0
+
+#showSql
+#logging:
+# level:
+# com.sdm.dao: debug
+
+lombok:
+ anyConstructor:
+ addConstructorProperties: true
+
+file:
+ rootPath: /data/home/sdm
+
+security:
+ whitelist:
+ paths:
+ - /pbs/jobFileCallback
+ - /flow/approveHandleNotice
+
+#logging:
+# config: ./config/logback.xml
\ No newline at end of file
diff --git a/capability/src/main/resources/bin/190/log.sh b/capability/src/main/resources/bin/190/log.sh
new file mode 100644
index 00000000..74b49935
--- /dev/null
+++ b/capability/src/main/resources/bin/190/log.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+# Spring Boot 项目日志查看脚本
+LOG_HOME="/home/app/capability/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/capability/src/main/resources/bin/190/restart.sh b/capability/src/main/resources/bin/190/restart.sh
new file mode 100644
index 00000000..2a8c0852
--- /dev/null
+++ b/capability/src/main/resources/bin/190/restart.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+# Spring Boot 项目重启脚本
+
+echo "=== 开始重启项目 ==="
+# 调用停止脚本
+./stop.sh
+# 调用启动脚本
+./start.sh
+echo "=== 重启操作完成 ==="
diff --git a/capability/src/main/resources/bin/190/start.sh b/capability/src/main/resources/bin/190/start.sh
new file mode 100644
index 00000000..57ec92f4
--- /dev/null
+++ b/capability/src/main/resources/bin/190/start.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+# Spring Boot 项目启动脚本
+JAR_PATH="/home/app/capability"
+JAR_NAME="capability-0.0.1-SNAPSHOT.jar"
+FULL_JAR_PATH="${JAR_PATH}/${JAR_NAME}"
+
+# 与logback.xml保持一致的日志路径
+LOG_HOME="/home/app/capability/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# JVM参数
+JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_HOME}/heapdump.hprof"
+
+# 检查Jar包是否存在
+check_jar_exists() {
+ if [ ! -f "${FULL_JAR_PATH}" ]; then
+ echo "ERROR: Jar包不存在!路径:${FULL_JAR_PATH}"
+ exit 1
+ fi
+}
+
+# 获取运行中的进程PID
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 启动服务
+check_jar_exists
+
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目已在运行中!PID: ${PID}"
+ exit 0
+fi
+
+# 确保日志目录存在
+if [ ! -d "${LOG_HOME}" ]; then
+ mkdir -p "${LOG_HOME}"
+ echo "日志目录不存在,已自动创建:${LOG_HOME}"
+fi
+
+echo "正在启动项目..."
+
+# 启动项目,保留控制台输出
+nohup java ${JVM_OPTS} -Dspring.profiles.active=dev-190 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5001 -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
+
+
+
+
diff --git a/capability/src/main/resources/bin/190/status.sh b/capability/src/main/resources/bin/190/status.sh
new file mode 100644
index 00000000..b045d50e
--- /dev/null
+++ b/capability/src/main/resources/bin/190/status.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+# Spring Boot 项目状态查看脚本
+JAR_NAME="capability-0.0.1-SNAPSHOT.jar"
+LOG_HOME="/home/app/capability/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# 获取运行中的进程PID
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+ PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目运行中!PID: ${PID}"
+ echo "日志文件路径:${LOG_FILE}"
+else
+ echo "项目未在运行中"
+fi
diff --git a/capability/src/main/resources/bin/190/stop.sh b/capability/src/main/resources/bin/190/stop.sh
new file mode 100644
index 00000000..b058a183
--- /dev/null
+++ b/capability/src/main/resources/bin/190/stop.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# Spring Boot 项目停止脚本
+JAR_NAME="capability-0.0.1-SNAPSHOT.jar"
+
+# 获取运行中的进程PID
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 停止服务
+ PID=$(get_running_pid)
+if [ -z "${PID}" ]; then
+ echo "项目未在运行中,无需停止"
+ exit 0
+fi
+
+echo "正在停止项目... PID: ${PID}"
+kill -15 "${PID}"
+
+ WAIT=0
+while [ ${WAIT} -lt 10 ]; do
+ if [ -z "$(get_running_pid)" ]; then
+ echo "项目已优雅停止"
+ exit 0
+ fi
+ sleep 1
+ WAIT=$((WAIT + 1))
+done
+
+echo "优雅停止超时,强制终止进程... PID: ${PID}"
+kill -9 "${PID}"
+
+sleep 2
+if [ -z "$(get_running_pid)" ]; then
+ echo "项目已强制停止"
+else
+ echo "ERROR: 进程终止失败!请手动检查:ps -ef | grep ${JAR_NAME}"
+ exit 1
+fi
diff --git a/data/src/main/java/com/sdm/data/controller/DataFileController.java b/data/src/main/java/com/sdm/data/controller/DataFileController.java
index 107c3cdb..3eb08ead 100644
--- a/data/src/main/java/com/sdm/data/controller/DataFileController.java
+++ b/data/src/main/java/com/sdm/data/controller/DataFileController.java
@@ -285,9 +285,9 @@ public class DataFileController implements IDataFeignClient {
* @param req
* @param response
*/
- @GetMapping("/downloadFile")
+ @PostMapping("/downloadFile")
@Operation(summary = "下载文件", description = "以流的方式下载指定文件")
- public void downloadFile(@Validated DownloadFileReq req, HttpServletResponse response) {
+ public void downloadFile(@RequestBody DownloadFileReq req, HttpServletResponse response) {
IDataFileService.downloadFile(req, response);
}
diff --git a/data/src/main/java/com/sdm/data/service/IMinioService.java b/data/src/main/java/com/sdm/data/service/IMinioService.java
index 82f7292d..0c2622ff 100644
--- a/data/src/main/java/com/sdm/data/service/IMinioService.java
+++ b/data/src/main/java/com/sdm/data/service/IMinioService.java
@@ -84,11 +84,21 @@ public interface IMinioService {
byte[] downloadFile(String objectName, String bucketName) throws Exception;
/**
- * 从MinIO下载文件到response
+ * 输入流 写到 HttpServletResponse 直接触发前段下载
* @param objectName 文件名(objectKey)
*/
void downloadFile(String objectName, String bucketName, HttpServletResponse response,String encodedFileName,Boolean preview, String contentType) throws Exception;
+ /**
+ * 输入流 写到 HttpServletResponse 不触发前端下载,由前端控制
+ * @param objectName
+ * @param bucketName
+ * @param response
+ * @param encodedFileName
+ * @param contentType
+ */
+ void streamFile(String objectName, String bucketName, HttpServletResponse response, String encodedFileName, String contentType)throws Exception ;
+
InputStream getMinioInputStream(String objectName, String bucketName);
/**
diff --git a/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java
index e5c24dae..b7ca9916 100644
--- a/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java
+++ b/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java
@@ -240,19 +240,19 @@ public class DimensionTemplateServiceImpl extends ServiceImpl> nodeTaskList = simuluationNodeFeignClient.getNodeTaskList(chooseUuids);
- if (nodeTaskList.isSuccess()) {
- uuids.addAll(nodeTaskList.getData().stream().map(AllNodeByProjectIdAndTypeResp::getUuid).toList());
- log.info("获取节点下task的uudis:{}", uuids);
- }
+ // 3、获取当前节点下的任务、算列
+ SdmResponse> nodeTaskList = simuluationNodeFeignClient.getNodeTaskList(chooseUuids);
+ if (nodeTaskList.isSuccess()) {
+ uuids.addAll(nodeTaskList.getData().stream().map(AllNodeByProjectIdAndTypeResp::getUuid).toList());
+ log.info("获取节点下task的uudis:{}", uuids);
+ }
- SdmResponse> taskRunList = simuluationNodeFeignClient.getTaskRunList(chooseUuids);
- if (taskRunList.isSuccess()) {
- uuids.addAll(taskRunList.getData().stream().map(AllNodeByProjectIdAndTypeResp::getUuid).toList());
- log.info("获取节点下taskRun的uudis:{}", uuids);
- }
+ SdmResponse> taskRunList = simuluationNodeFeignClient.getTaskRunList(chooseUuids);
+ if (taskRunList.isSuccess()) {
+ uuids.addAll(taskRunList.getData().stream().map(AllNodeByProjectIdAndTypeResp::getUuid).toList());
+ log.info("获取节点下taskRun的uudis:{}", uuids);
}
}
}
diff --git a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java
index 83e2c9dd..88e4f0c3 100644
--- a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java
+++ b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java
@@ -1303,7 +1303,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService {
}*/
// 从MinIO下载文件
String encodedFileName = URLEncoder.encode(fileMetadataInfo.getOriginalName(), StandardCharsets.UTF_8);
- minioService.downloadFile(fileObjectKey,fileMetadataInfo.getBucketName(),response,encodedFileName,false,"");
+ minioService.streamFile(fileObjectKey, fileMetadataInfo.getBucketName(), response, encodedFileName, "");
} catch (Exception e) {
log.error("下载文件失败", e);
try {
diff --git a/data/src/main/java/com/sdm/data/service/minio/MinioService.java b/data/src/main/java/com/sdm/data/service/minio/MinioService.java
index 404a35f2..b49824ec 100644
--- a/data/src/main/java/com/sdm/data/service/minio/MinioService.java
+++ b/data/src/main/java/com/sdm/data/service/minio/MinioService.java
@@ -428,6 +428,46 @@ public class MinioService implements IMinioService {
}
+
+ public void streamFile(String objectName, String bucketName, HttpServletResponse response, String encodedFileName, String contentType) throws Exception {
+ StatObjectResponse stat = minioClient.statObject(
+ StatObjectArgs.builder()
+ .bucket(getBucketName(bucketName))
+ .object(objectName)
+ .build());
+ long fileSize = stat.size();
+
+ try (InputStream stream = minioClient.getObject(
+ GetObjectArgs.builder()
+ .bucket(getBucketName(bucketName))
+ .object(objectName)
+ .build());
+ ReadableByteChannel inChannel = Channels.newChannel(stream);
+ WritableByteChannel outChannel = Channels.newChannel(response.getOutputStream())) {
+ String mediaType = org.apache.commons.lang3.StringUtils.isBlank(contentType) ?
+ MediaType.APPLICATION_OCTET_STREAM_VALUE : contentType;
+ response.setContentType(mediaType);
+ response.setHeader(HttpHeaders.CONTENT_DISPOSITION, encodedFileName);
+ response.setHeader(HttpHeaders.ACCEPT_RANGES, "bytes");
+ response.addHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(fileSize));
+
+ ByteBuffer buffer = ByteBuffer.allocateDirect(minioConfig.getDirectMemory() <= NumberConstants.ZERO ?
+ DEFAULT_BUFFER_SIZE : minioConfig.getDirectMemory());
+ while (inChannel.read(buffer) != -1) {
+ buffer.flip();
+ outChannel.write(buffer);
+ buffer.compact();
+ }
+ buffer.flip();
+ while (buffer.hasRemaining()) {
+ outChannel.write(buffer);
+ }
+ response.flushBuffer();
+ }
+ }
+
+
+
public InputStream getMinioInputStream(String objectName, String bucketName) {
try {
return minioClient.getObject(
diff --git a/data/src/main/java/com/sdm/data/service/minio/MinioTenantInitializer.java b/data/src/main/java/com/sdm/data/service/minio/MinioTenantInitializer.java
index c5403159..157b0ea6 100644
--- a/data/src/main/java/com/sdm/data/service/minio/MinioTenantInitializer.java
+++ b/data/src/main/java/com/sdm/data/service/minio/MinioTenantInitializer.java
@@ -34,7 +34,7 @@ public class MinioTenantInitializer implements CommandLineRunner {
private IDataFileService dataFileService;
// 配置重试策略
- private static final int MAX_RETRIES = 12; // 最多重试12次
+ private static final int MAX_RETRIES = 5; // 最多重试5次
private static final int RETRY_DELAY_SECONDS = 5; // 每次间隔5秒,共覆盖60秒启动延迟
@Override
diff --git a/data/src/main/resources/application-dev-190.yml b/data/src/main/resources/application-dev-190.yml
new file mode 100644
index 00000000..6562b65e
--- /dev/null
+++ b/data/src/main/resources/application-dev-190.yml
@@ -0,0 +1,133 @@
+server:
+ port: 7104
+
+spring:
+ application:
+ name: data
+ datasource:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ hikari:
+ # 设置连接池能够容纳的最大连接数。建议值:CPU核心数 * 2 + 有效磁盘I/O数。一个常见的经验值是 10-20。
+ maximum-pool-size: 20
+ # 连接池在空闲时保持的最小连接数。
+ minimum-idle: 5
+ # 一个连接在被标记为空闲之前可以保持空闲状态的最长时间(毫秒)。当连接的空闲时间超过此值后,它可能会被连接池 evict(驱逐)。
+ idle-timeout: 60000 # 1 min
+ # 一个连接从被创建开始,其生命周期的最大时长(毫秒)。HikariCP的默认值就是30分钟,这是一个非常合理的设置。
+ max-lifetime: 1800000 # 30 min(Hikari 默认)
+ # 应用程序尝试从连接池获取一个连接时,等待的最长时间(毫秒)。建议值:30-60秒。
+ connection-timeout: 30000 # 30s
+ master:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ slave:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ enable: true
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.190.161:8848
+ group: DEV_GROUP
+ # server-addr: 127.0.0.1:8848
+ enabled: true
+ servlet:
+ multipart:
+ # 单个文件的最大值
+ max-file-size: 500MB
+ # 上传文件总的最大值
+ max-request-size: 10240MB
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info
+ endpoint:
+ health:
+ show-details: always
+ group:
+ readiness:
+ include: discoveryComposite,ping,refreshScope
+ health:
+ redis:
+ enabled: false
+ db:
+ enabled: false
+
+mybatis-plus:
+ configuration:
+ map-underscore-to-camel-case: true
+ auto-mapping-behavior: full
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ # cache-enabled: true
+ mapper-locations: classpath*:mapper/**/*.xml
+ global-config:
+ # 逻辑删除配置
+ db-config:
+ # 删除前
+ logic-not-delete-value: 1
+ # 删除后
+ logic-delete-value: 0
+
+# MyBatis SQL日志配置
+logging:
+ level:
+ com.baomidou.mybatisplus.core.MybatisConfiguration: debug
+ com.baomidou.mybatisplus.core.override.MybatisMapperRegistry: trace
+ com.sdm.data.mapper: debug
+ java.sql: debug
+ java.sql.Connection: debug
+ java.sql.Statement: debug
+ java.sql.PreparedStatement: debug
+
+lombok:
+ anyConstructor:
+ addConstructorProperties: true
+
+file:
+ rootPath: /data/home/sdm
+ privatePath: /data/home
+
+#logging:
+# config: ./config/logback.xml
+
+# 配置文件系统类型
+fileSystem:
+ minio: minio
+ system: system
+ chose: minio # 这里选择minio或者system
+
+# spdmadmin/spdmadmin 作为普通用户只能看到spdm桶的数据
+minio:
+ endpoint: 192.168.190.161
+ port: 9000
+ access-key: minioadmin
+ secret-key: minioadmin
+ secure: false
+ secret-business-bucket: secretbusiness # 存放保密业务代码、脚本的桶(仅超级管理员访问)
+ spdm-bucket: spdm # 普通业务数据桶(分配给用户读写权限)
+ directMemory: 16384 # 16kb
+ lifecycleConfig: '{"auto-expire-1d":"1d"}'
+
+security:
+ whitelist:
+ paths:
+ - /data/previewImage
+ - /data/approveDataFile
+ - /data/downloadFile
+ - /data/flowableUpFileToLocal
+ - /data/flowableUpFileToLocalMerge
+ - /data/getFileBaseInfo
+ - /data/uploadFiles
+
+data:
+ storage-monitor:
+ cron: 0 0 9 * * ?
\ No newline at end of file
diff --git a/data/src/main/resources/bin/190/log.sh b/data/src/main/resources/bin/190/log.sh
new file mode 100644
index 00000000..2dc63d51
--- /dev/null
+++ b/data/src/main/resources/bin/190/log.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# Spring Boot 项目日志查看脚本
+LOG_HOME="/home/app/data/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/data/src/main/resources/bin/190/restart.sh b/data/src/main/resources/bin/190/restart.sh
new file mode 100644
index 00000000..daed40e3
--- /dev/null
+++ b/data/src/main/resources/bin/190/restart.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# Spring Boot 项目重启脚本
+
+# 定义基础路径(公共参数)
+BASE_DIR="/home/app/data"
+
+echo "=== 开始重启项目 ==="
+
+# 先停止服务
+if [ -f "${BASE_DIR}/stop.sh" ]; then
+ "${BASE_DIR}/stop.sh"
+else
+ echo "错误:未找到停止脚本 ${BASE_DIR}/stop.sh"
+ exit 1
+fi
+
+# 再启动服务
+if [ -f "${BASE_DIR}/start.sh" ]; then
+ "${BASE_DIR}/start.sh"
+else
+ echo "错误:未找到启动脚本 ${BASE_DIR}/start.sh"
+ exit 1
+fi
+
+echo "=== 重启操作完成 ==="
\ No newline at end of file
diff --git a/data/src/main/resources/bin/190/start.sh b/data/src/main/resources/bin/190/start.sh
new file mode 100644
index 00000000..882a1769
--- /dev/null
+++ b/data/src/main/resources/bin/190/start.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# Spring Boot 项目启动脚本
+JAR_PATH="/home/app/data"
+JAR_NAME="data-0.0.1-SNAPSHOT.jar"
+FULL_JAR_PATH="${JAR_PATH}/${JAR_NAME}"
+
+# 与logback.xml保持一致的日志路径
+LOG_HOME="/home/app/data/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# JVM参数
+JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_HOME}/heapdump.hprof"
+
+# 函数定义
+check_jar_exists() {
+ if [ ! -f "${FULL_JAR_PATH}" ]; then
+ echo "ERROR: Jar包不存在!路径:${FULL_JAR_PATH}"
+ exit 1
+ fi
+}
+
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 检查是否已运行
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目已在运行中!PID: ${PID}"
+ exit 0
+fi
+
+# 检查Jar包是否存在
+check_jar_exists
+
+# 确保日志目录存在
+if [ ! -d "${LOG_HOME}" ]; then
+ mkdir -p "${LOG_HOME}"
+ echo "日志目录不存在,已自动创建:${LOG_HOME}"
+fi
+
+
+# 启动项目
+echo "正在启动项目..."
+nohup java ${JVM_OPTS} -Dspring.profiles.active=dev-190 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5002 -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
\ No newline at end of file
diff --git a/data/src/main/resources/bin/190/status.sh b/data/src/main/resources/bin/190/status.sh
new file mode 100644
index 00000000..52cc4ca5
--- /dev/null
+++ b/data/src/main/resources/bin/190/status.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+# Spring Boot 项目状态查询脚本
+JAR_NAME="data-0.0.1-SNAPSHOT.jar"
+LOG_HOME="/home/app/data/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 查看服务状态
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目运行中!PID: ${PID}"
+ echo "日志文件路径:${LOG_FILE}"
+else
+ echo "项目未在运行中"
+fi
diff --git a/data/src/main/resources/bin/190/stop.sh b/data/src/main/resources/bin/190/stop.sh
new file mode 100644
index 00000000..2b96b228
--- /dev/null
+++ b/data/src/main/resources/bin/190/stop.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# Spring Boot 项目停止脚本
+JAR_NAME="data-0.0.1-SNAPSHOT.jar"
+
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 停止服务
+PID=$(get_running_pid)
+if [ -z "${PID}" ]; then
+ echo "项目未在运行中,无需停止"
+ exit 0
+fi
+
+echo "正在停止项目... PID: ${PID}"
+kill -15 "${PID}"
+
+WAIT=0
+while [ ${WAIT} -lt 10 ]; do
+ if [ -z "$(get_running_pid)" ]; then
+ echo "项目已优雅停止"
+ exit 0
+ fi
+ sleep 1
+ WAIT=$((WAIT + 1))
+done
+
+echo "优雅停止超时,强制终止进程... PID: ${PID}"
+kill -9 "${PID}"
+
+sleep 2
+if [ -z "$(get_running_pid)" ]; then
+ echo "项目已强制停止"
+else
+ echo "ERROR: 进程终止失败!请手动检查:ps -ef | grep ${JAR_NAME}"
+ exit 1
+fi
diff --git a/flowable/src/main/java/com/sdm/flowable/entity/AsyncTaskRecord.java b/flowable/src/main/java/com/sdm/flowable/entity/AsyncTaskRecord.java
index 21bcaf8d..6de8a077 100644
--- a/flowable/src/main/java/com/sdm/flowable/entity/AsyncTaskRecord.java
+++ b/flowable/src/main/java/com/sdm/flowable/entity/AsyncTaskRecord.java
@@ -1,5 +1,6 @@
package com.sdm.flowable.entity;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -33,33 +34,43 @@ public class AsyncTaskRecord implements Serializable {
private Long id;
@ApiModelProperty(value = "异步任务唯一标识,全局唯一,用于定位单个异步任务")
+ @TableField(value = "asyncTaskId")
private String asyncTaskId;
@ApiModelProperty(value = "流程实例ID,关联工作流引擎的流程实例(如Camunda的processInstanceId)")
+ @TableField(value = "processInstanceId")
private String processInstanceId;
@ApiModelProperty(value = "流程执行ID,关联工作流引擎的执行实例(如Camunda的executionId)")
+ @TableField(value = "executionId")
private String executionId;
@ApiModelProperty(value = "接收任务ID,关联工作流中接收任务节点的ID(用于异步回调触发流程继续)")
+ @TableField(value = "receiveTaskId")
private String receiveTaskId;
@ApiModelProperty(value = "业务处理器类型,标识任务对应的业务处理逻辑,例如:HPC(高性能计算)/OCR(图文识别)/AI(智能分析)")
+ @TableField(value = "handlerType")
private String handlerType;
@ApiModelProperty(value = "任务请求参数,JSON格式字符串,存储触发异步任务时的入参信息")
+ @TableField(value = "requestJson")
private String requestJson;
@ApiModelProperty(value = "任务执行结果,JSON格式字符串,存储异步任务完成后的返回数据(成功/失败均记录)")
+ @TableField(value = "resultJson")
private String resultJson;
@ApiModelProperty(value = "任务状态:INIT(初始化)/RUNNING(执行中)/SUCCESS(执行成功)/FAIL(执行失败)")
+ @TableField(value = "status")
private String status;
@ApiModelProperty(value = "任务创建时间,默认当前时间")
+ @TableField(value = "createTime")
private LocalDateTime createTime;
@ApiModelProperty(value = "任务更新时间,数据变更时自动更新为当前时间")
+ @TableField(value = "updateTime")
private LocalDateTime updateTime;
diff --git a/flowable/src/main/resources/application-dev-190.yml b/flowable/src/main/resources/application-dev-190.yml
new file mode 100644
index 00000000..e8ec3f9d
--- /dev/null
+++ b/flowable/src/main/resources/application-dev-190.yml
@@ -0,0 +1,40 @@
+server:
+ port: 7106
+spring:
+ application:
+ name: flowable
+ datasource:
+ url: jdbc:mysql://192.168.190.161:3306/flowable?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
+ username: root
+ password: mysql
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ flowable:
+ # ?????????
+ database-schema-update: true
+ # ??????JOB
+ async-executor-activate: true
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.190.161:8848
+ group: DEV_GROUP
+ enabled: true
+
+logging:
+ level:
+ org:
+ flowable: INFO
+
+mybatis-plus:
+ mapper-locations: classpath*:/mapper/**/*.xml
+ type-aliases-package: com.sdm.flowable.model.entity
+ configuration:
+ map-underscore-to-camel-case: true
+ global-config:
+ db-config:
+ id-type: auto
+security:
+ whitelist:
+ paths:
+ - /process/testHpc
+ - /process/asyncCallback
diff --git a/flowable/src/main/resources/bin/190/log.sh b/flowable/src/main/resources/bin/190/log.sh
new file mode 100644
index 00000000..03d8b2a0
--- /dev/null
+++ b/flowable/src/main/resources/bin/190/log.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# Spring Boot 项目日志查看脚本
+LOG_HOME="/home/app/flowable/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/flowable/src/main/resources/bin/190/restart.sh b/flowable/src/main/resources/bin/190/restart.sh
new file mode 100644
index 00000000..17bb2695
--- /dev/null
+++ b/flowable/src/main/resources/bin/190/restart.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# Spring Boot 项目重启脚本
+
+# 定义基础路径(公共参数)
+BASE_DIR="/home/app/flowable"
+
+echo "=== 开始重启项目 ==="
+
+# 先停止服务
+if [ -f "${BASE_DIR}/stop.sh" ]; then
+ "${BASE_DIR}/stop.sh"
+else
+ echo "错误:未找到停止脚本 ${BASE_DIR}/stop.sh"
+ exit 1
+fi
+
+# 再启动服务
+if [ -f "${BASE_DIR}/start.sh" ]; then
+ "${BASE_DIR}/start.sh"
+else
+ echo "错误:未找到启动脚本 ${BASE_DIR}/start.sh"
+ exit 1
+fi
+
+echo "=== 重启操作完成 ==="
\ No newline at end of file
diff --git a/flowable/src/main/resources/bin/190/start.sh b/flowable/src/main/resources/bin/190/start.sh
new file mode 100644
index 00000000..7f41d623
--- /dev/null
+++ b/flowable/src/main/resources/bin/190/start.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# Spring Boot 项目启动脚本
+JAR_PATH="/home/app/flowable"
+JAR_NAME="flowable-0.0.1-SNAPSHOT.jar"
+FULL_JAR_PATH="${JAR_PATH}/${JAR_NAME}"
+
+# 与logback.xml保持一致的日志路径
+LOG_HOME="/home/app/flowable/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# JVM参数
+JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_HOME}/heapdump.hprof"
+
+# 函数定义
+check_jar_exists() {
+ if [ ! -f "${FULL_JAR_PATH}" ]; then
+ echo "ERROR: Jar包不存在!路径:${FULL_JAR_PATH}"
+ exit 1
+ fi
+}
+
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 检查是否已运行
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目已在运行中!PID: ${PID}"
+ exit 0
+fi
+
+# 检查Jar包是否存在
+check_jar_exists
+
+# 确保日志目录存在
+if [ ! -d "${LOG_HOME}" ]; then
+ mkdir -p "${LOG_HOME}"
+ echo "日志目录不存在,已自动创建:${LOG_HOME}"
+fi
+
+
+# 启动项目
+echo "正在启动项目..."
+nohup java ${JVM_OPTS} -Dspring.profiles.active=dev-190 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5003 -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
diff --git a/flowable/src/main/resources/bin/190/status.sh b/flowable/src/main/resources/bin/190/status.sh
new file mode 100644
index 00000000..251f861a
--- /dev/null
+++ b/flowable/src/main/resources/bin/190/status.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+# Spring Boot 项目状态查询脚本
+JAR_NAME="flowable-0.0.1-SNAPSHOT.jar"
+LOG_HOME="/home/app/flowable/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 查看服务状态
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目运行中!PID: ${PID}"
+ echo "日志文件路径:${LOG_FILE}"
+else
+ echo "项目未在运行中"
+fi
diff --git a/flowable/src/main/resources/bin/190/stop.sh b/flowable/src/main/resources/bin/190/stop.sh
new file mode 100644
index 00000000..d10acb17
--- /dev/null
+++ b/flowable/src/main/resources/bin/190/stop.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# Spring Boot 项目停止脚本
+JAR_NAME="flowable-0.0.1-SNAPSHOT.jar"
+
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 停止服务
+PID=$(get_running_pid)
+if [ -z "${PID}" ]; then
+ echo "项目未在运行中,无需停止"
+ exit 0
+fi
+
+echo "正在停止项目... PID: ${PID}"
+kill -15 "${PID}"
+
+WAIT=0
+while [ ${WAIT} -lt 10 ]; do
+ if [ -z "$(get_running_pid)" ]; then
+ echo "项目已优雅停止"
+ exit 0
+ fi
+ sleep 1
+ WAIT=$((WAIT + 1))
+done
+
+echo "优雅停止超时,强制终止进程... PID: ${PID}"
+kill -9 "${PID}"
+
+sleep 2
+if [ -z "$(get_running_pid)" ]; then
+ echo "项目已强制停止"
+else
+ echo "ERROR: 进程终止失败!请手动检查:ps -ef | grep ${JAR_NAME}"
+ exit 1
+fi
diff --git a/flowable/src/main/resources/bin/log.sh b/flowable/src/main/resources/bin/log.sh
index e69de29b..03d8b2a0 100644
--- a/flowable/src/main/resources/bin/log.sh
+++ b/flowable/src/main/resources/bin/log.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# Spring Boot 项目日志查看脚本
+LOG_HOME="/home/app/flowable/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/flowable/src/main/resources/bin/stop.sh b/flowable/src/main/resources/bin/stop.sh
index e69de29b..d10acb17 100644
--- a/flowable/src/main/resources/bin/stop.sh
+++ b/flowable/src/main/resources/bin/stop.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# Spring Boot 项目停止脚本
+JAR_NAME="flowable-0.0.1-SNAPSHOT.jar"
+
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 停止服务
+PID=$(get_running_pid)
+if [ -z "${PID}" ]; then
+ echo "项目未在运行中,无需停止"
+ exit 0
+fi
+
+echo "正在停止项目... PID: ${PID}"
+kill -15 "${PID}"
+
+WAIT=0
+while [ ${WAIT} -lt 10 ]; do
+ if [ -z "$(get_running_pid)" ]; then
+ echo "项目已优雅停止"
+ exit 0
+ fi
+ sleep 1
+ WAIT=$((WAIT + 1))
+done
+
+echo "优雅停止超时,强制终止进程... PID: ${PID}"
+kill -9 "${PID}"
+
+sleep 2
+if [ -z "$(get_running_pid)" ]; then
+ echo "项目已强制停止"
+else
+ echo "ERROR: 进程终止失败!请手动检查:ps -ef | grep ${JAR_NAME}"
+ exit 1
+fi
diff --git a/gateway2/src/main/resources/application-dev-190.yml b/gateway2/src/main/resources/application-dev-190.yml
new file mode 100644
index 00000000..30eac46f
--- /dev/null
+++ b/gateway2/src/main/resources/application-dev-190.yml
@@ -0,0 +1,123 @@
+server:
+ port: 7100
+
+spring:
+ application:
+ name: gateway2
+ cloud:
+ nacos:
+ config:
+ server-addr: 192.168.190.161:8848
+ file-extension: yaml
+ import-check:
+ enabled: false
+ discovery:
+ server-addr: 192.168.190.161:8848
+ group: DEV_GROUP
+ enabled: true
+ gateway:
+ httpclient:
+ connect-timeout: 10000
+ response-timeout: 10000
+ routes:
+ - id: approve-service
+ uri: lb://approve
+ predicates:
+ - Path=/simulation/approve/**
+ filters:
+ - StripPrefix=2
+ - id: capability-service
+ uri: lb://capability
+ predicates:
+ - Path=/simulation/capability/**
+ filters:
+ - StripPrefix=2
+ - id: data-service
+ uri: lb://data
+ predicates:
+ - Path=/simulation/data/**
+ filters:
+ - StripPrefix=2
+ metadata:
+ group: DEV_GROUP # 指定目标服务的分组
+ - id: pbs-service
+ uri: lb://pbs
+ predicates:
+ - Path=/simulation/pbs/**
+ filters:
+ - StripPrefix=2
+ - id: performance-service
+ uri: lb://performance
+ predicates:
+ - Path=/simulation/performance/**
+ filters:
+ - StripPrefix=2
+ - id: project-service
+ uri: lb://project
+ predicates:
+ - Path=/simulation/project/**
+ filters:
+ - StripPrefix=2
+ metadata:
+ group: DEV_GROUP # 指定目标服务的分组
+ - id: system-service
+ uri: lb://system
+ predicates:
+ - Path=/simulation/system/**
+ filters:
+ - StripPrefix=2
+ metadata:
+ group: DEV_GROUP # 指定目标服务的分组
+ - id: task-service
+ uri: lb://task
+ predicates:
+ - Path=/simulation/task/**
+ filters:
+ - StripPrefix=2
+ metadata:
+ group: DEV_GROUP # 指定目标服务的分组
+ - id: flowable-service
+ uri: lb://flowable
+ predicates:
+ - Path=/simulation/flowable/**
+ filters:
+ - StripPrefix=2
+ metadata:
+ group: LOCAL_GROUP # 指定目标服务的分组
+ discovery:
+ locator:
+ enabled: true
+ lower-case-service-id: true
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info
+ endpoint:
+ health:
+ show-details: always
+ group:
+ readiness:
+ include: discoveryComposite,ping,refreshScope
+ health:
+ redis:
+ enabled: false
+ db:
+ enabled: false
+
+logging:
+ level:
+ com.sdm.gateway2: INFO
+ org.springframework.cloud.gateway: INFO
+ reactor.netty: INFO
+
+# 0单机处理,1负载均衡轮询
+serverType: 0
+serverIp: 192.168.190.161
+#serverIp: 192.168.65.73
+
+security:
+ whitelist:
+ paths:
+ - aa
\ No newline at end of file
diff --git a/gateway2/src/main/resources/bin/190/log.sh b/gateway2/src/main/resources/bin/190/log.sh
new file mode 100644
index 00000000..6f49008f
--- /dev/null
+++ b/gateway2/src/main/resources/bin/190/log.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+# Spring Boot 网关项目日志查看脚本
+LOG_HOME="/home/app/gateway2/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/gateway2/src/main/resources/bin/190/restart.sh b/gateway2/src/main/resources/bin/190/restart.sh
new file mode 100644
index 00000000..d02388c5
--- /dev/null
+++ b/gateway2/src/main/resources/bin/190/restart.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# Spring Boot 项目重启脚本
+
+# 定义基础路径(公共参数)
+BASE_DIR="/home/app/gateway2"
+
+echo "=== 开始重启项目 ==="
+
+# 先停止服务
+if [ -f "${BASE_DIR}/stop.sh" ]; then
+ "${BASE_DIR}/stop.sh"
+else
+ echo "错误:未找到停止脚本 ${BASE_DIR}/stop.sh"
+ exit 1
+fi
+
+# 再启动服务
+if [ -f "${BASE_DIR}/start.sh" ]; then
+ "${BASE_DIR}/start.sh"
+else
+ echo "错误:未找到启动脚本 ${BASE_DIR}/start.sh"
+ exit 1
+fi
+
+echo "=== 重启操作完成 ==="
\ No newline at end of file
diff --git a/gateway2/src/main/resources/bin/190/start.sh b/gateway2/src/main/resources/bin/190/start.sh
new file mode 100644
index 00000000..0dd51014
--- /dev/null
+++ b/gateway2/src/main/resources/bin/190/start.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+# Spring Boot 网关项目启动脚本
+JAR_PATH="/home/app/gateway2"
+JAR_NAME="gateway2-0.0.1-SNAPSHOT.jar"
+FULL_JAR_PATH="${JAR_PATH}/${JAR_NAME}"
+
+# 与logback.xml保持一致的日志路径
+LOG_HOME="/home/app/gateway2/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# JVM参数
+JVM_OPTS="-Xmx2g -Xms2g -XX:MaxDirectMemorySize=2g -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_HOME}/heapdump.hprof"
+
+
+# 函数定义
+check_jar_exists() {
+ if [ ! -f "${FULL_JAR_PATH}" ]; then
+ echo "ERROR: Jar包不存在!路径:${FULL_JAR_PATH}"
+ exit 1
+ fi
+}
+
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+
+
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目已在运行中!PID: ${PID}"
+ exit 0
+fi
+
+# 检查jar包是否存在
+check_jar_exists
+
+# 确保日志目录存在
+if [ ! -d "${LOG_HOME}" ]; then
+ mkdir -p "${LOG_HOME}"
+ echo "日志目录不存在,已自动创建:${LOG_HOME}"
+fi
+
+# 启动项目
+echo "正在启动项目..."
+nohup java ${JVM_OPTS} -Dspring.profiles.active=dev-190 -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
+
+
diff --git a/gateway2/src/main/resources/bin/190/status.sh b/gateway2/src/main/resources/bin/190/status.sh
new file mode 100644
index 00000000..16acbb8a
--- /dev/null
+++ b/gateway2/src/main/resources/bin/190/status.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+# Spring Boot 网关项目状态查询脚本
+JAR_NAME="gateway2-0.0.1-SNAPSHOT.jar"
+LOG_HOME="/home/app/gateway2/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 查看服务状态
+local PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目运行中!PID: ${PID}"
+ echo "日志文件路径:${LOG_FILE}"
+else
+ echo "项目未在运行中"
+fi
diff --git a/gateway2/src/main/resources/bin/190/stop.sh b/gateway2/src/main/resources/bin/190/stop.sh
new file mode 100644
index 00000000..66924f09
--- /dev/null
+++ b/gateway2/src/main/resources/bin/190/stop.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# Spring Boot 项目强制停止脚本
+JAR_NAME="gateway2-0.0.1-SNAPSHOT.jar"
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 停止服务
+PID=$(get_running_pid)
+if [ -z "${PID}" ]; then
+ echo "项目未在运行中,无需停止"
+ exit 0
+fi
+
+echo "正在停止项目... PID: ${PID}"
+kill -15 "${PID}"
+
+WAIT=0
+while [ ${WAIT} -lt 10 ]; do
+ if [ -z "$(get_running_pid)" ]; then
+ echo "项目已优雅停止"
+ exit 0
+ fi
+ sleep 1
+ WAIT=$((WAIT + 1))
+done
+
+echo "优雅停止超时,强制终止进程... PID: ${PID}"
+kill -9 "${PID}"
+
+sleep 2
+if [ -z "$(get_running_pid)" ]; then
+ echo "项目已强制停止"
+else
+ echo "ERROR: 进程终止失败!请手动检查:ps -ef | grep ${JAR_NAME}"
+ exit 1
+fi
diff --git a/gateway2/src/main/resources/bin/restart.bat b/gateway2/src/main/resources/bin/restart.bat
deleted file mode 100644
index 3c2aedf5..00000000
--- a/gateway2/src/main/resources/bin/restart.bat
+++ /dev/null
@@ -1,13 +0,0 @@
-@echo off
-echo Restarting gateway2 service...
-
-REM 调用停止脚本
-call stop.bat
-
-REM 等待3秒
-timeout /t 3 /nobreak >nul
-
-REM 调用启动脚本
-call start.bat
-
-echo gateway2 service restarted.
diff --git a/gateway2/src/main/resources/bin/start.bat b/gateway2/src/main/resources/bin/start.bat
deleted file mode 100644
index ac2ad511..00000000
--- a/gateway2/src/main/resources/bin/start.bat
+++ /dev/null
@@ -1,13 +0,0 @@
-@echo off
-echo Starting gateway2 service...
-
-REM 设置日志路径
-set LOG_PATH=C:\Users\admin\Desktop\gateway\logs
-
-REM 创建日志目录
-if not exist "%LOG_PATH%" mkdir "%LOG_PATH%"
-
-REM 后台启动应用,退出命令窗口后继续运行
-start /b javaw -DLOG_PATH=%LOG_PATH% -jar gateway2-0.0.1-SNAPSHOT.jar
-
-echo gateway2 service started in background.
diff --git a/gateway2/src/main/resources/bin/stop.bat b/gateway2/src/main/resources/bin/stop.bat
deleted file mode 100644
index 81d98712..00000000
--- a/gateway2/src/main/resources/bin/stop.bat
+++ /dev/null
@@ -1,17 +0,0 @@
-@echo off
-echo Stopping gateway2 service...
-
-REM 第一步:找到 gateway2-0.0.1-SNAPSHOT.jar 对应的进程 ID(PID)
-for /f "tokens=1" %%p in ('jps -l ^| findstr "gateway2-0.0.1-SNAPSHOT.jar"') do (
- set PID=%%p
-)
-
-REM 第二步:如果找到 PID,就终止进程
-if defined PID (
- taskkill /f /pid %PID% >nul 2>&1
- echo Killed process with PID: %PID%
-) else (
- echo gateway2 service is not running.
-)
-
-echo gateway2 service stopped.
\ No newline at end of file
diff --git a/pbs/src/main/resources/application-dev-190.yml b/pbs/src/main/resources/application-dev-190.yml
new file mode 100644
index 00000000..c6d849a8
--- /dev/null
+++ b/pbs/src/main/resources/application-dev-190.yml
@@ -0,0 +1,141 @@
+server:
+ port: 7105
+
+spring:
+ application:
+ name: pbs
+ datasource:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ hikari:
+ # 设置连接池能够容纳的最大连接数。建议值:CPU核心数 * 2 + 有效磁盘I/O数。一个常见的经验值是 10-20。
+ maximum-pool-size: 20
+ # 连接池在空闲时保持的最小连接数。
+ minimum-idle: 5
+ # 一个连接在被标记为空闲之前可以保持空闲状态的最长时间(毫秒)。当连接的空闲时间超过此值后,它可能会被连接池 evict(驱逐)。
+ idle-timeout: 60000 # 1 min
+ # 一个连接从被创建开始,其生命周期的最大时长(毫秒)。HikariCP的默认值就是30分钟,这是一个非常合理的设置。
+ max-lifetime: 1800000 # 30 min(Hikari 默认)
+ # 应用程序尝试从连接池获取一个连接时,等待的最长时间(毫秒)。建议值:30-60秒。
+ connection-timeout: 30000 # 30s
+ master:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ slave:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ enable: true
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.190.161:8848
+ group: DEV_GROUP
+ enabled: true
+# namespace: 3
+# username: nacos
+# password: ENC(+QKYnI6gAYu1SbLaZQTkZA==)
+ data:
+ redis:
+ # Redis默认情况下有16个分片(库),这里配置具体使用的分片,默认是0
+ database: 0
+ # redis服务器地址(填写自己的服务器地址)
+ host: 192.168.2.166
+ # redis端口(默认6379)
+ port: 6379
+ #redis连接超时等待,10秒
+ timeout: PT10S
+ # redis访问密码(默认为空)
+ password:
+ lettuce:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制) 默认 8
+ max-active: 50
+ # 连接池中的最大空闲连接 默认 8
+ max-idle: 20
+ # 连接池中的最小空闲连接 默认 0
+ min-idle: 1
+ # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1,这里配置10s
+ max-wait: PT10S
+# password:
+# sentinel:
+# master: mymaster
+# nodes: 10.18.109.50:26379,10.18.109.51:26379,10.18.109.52:26379
+ servlet:
+ multipart:
+ # 单个文件的最大值
+ max-file-size: 500MB
+ # 上传文件总的最大值
+ max-request-size: 10240MB
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info
+ endpoint:
+ health:
+ show-details: always
+
+mybatis-plus:
+ configuration:
+ map-underscore-to-camel-case: true
+ auto-mapping-behavior: full
+# cache-enabled: true
+ # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ mapper-locations: classpath*:mapper/**/*.xml
+ global-config:
+ # 逻辑删除配置
+ db-config:
+ # 删除前
+ logic-not-delete-value: 1
+ # 删除后
+ logic-delete-value: 0
+
+#showSql
+#logging:
+# level:
+# com.sdm.dao: debug
+
+lombok:
+ anyConstructor:
+ addConstructorProperties: true
+
+file:
+ rootPath: /data/home/sdm
+
+hpc:
+ url: http://172.27.3.135/JSONAPI/JSONAPI.ashx
+ # 这个是spdm mock执行cmd命令
+# remoteCmdUrl: http://127.0.0.1:9097/doProcess
+ # remote: hpc借助工具http远程调用,local:该服务和hpc部署在同一机器
+ excuteWay: remote
+ remoteCmdUrl: http://192.168.65.55:9097/doProcess
+ remoteCreateDirUrl: http://192.168.65.55:9097/createDir
+ remoteScanDirUrl: http://192.168.65.55:9097/scanDir
+ remoteDownLoadFileUrl: http://192.168.65.55:9097/hpcDownload
+# remoteDownLoadFileUrl: http://127.0.0.1:9097/hpcDownload
+ remoteUploadFileUrl: http://192.168.65.55:9097/uploadHpcFile
+ callHpcUpload: http://192.168.65.55:9097/addJobQueue
+
+
+#logging:
+# config: ./config/logback.xml
+# pbs 作业提交相关配置
+pbs:
+ task:
+ hpc: hpc
+ qusb: qusb
+ impl: hpc
+
+security:
+ whitelist:
+ paths:
+ - /pbs/jobFileCallback
+ - /pbs/netTest
+ - /pbs/adapterSubmitHpcJob
\ No newline at end of file
diff --git a/pbs/src/main/resources/bin/190/log.sh b/pbs/src/main/resources/bin/190/log.sh
new file mode 100644
index 00000000..5b0f38d2
--- /dev/null
+++ b/pbs/src/main/resources/bin/190/log.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# Spring Boot 项目日志查看脚本
+LOG_HOME="/home/app/pbs/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/pbs/src/main/resources/bin/190/restart.sh b/pbs/src/main/resources/bin/190/restart.sh
new file mode 100644
index 00000000..82f7899a
--- /dev/null
+++ b/pbs/src/main/resources/bin/190/restart.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# Spring Boot 项目重启脚本
+
+# 定义基础路径(公共参数)
+BASE_DIR="/home/app/pbs"
+
+echo "=== 开始重启项目 ==="
+
+# 先停止服务
+if [ -f "${BASE_DIR}/stop.sh" ]; then
+ "${BASE_DIR}/stop.sh"
+else
+ echo "错误:未找到停止脚本 ${BASE_DIR}/stop.sh"
+ exit 1
+fi
+
+# 再启动服务
+if [ -f "${BASE_DIR}/start.sh" ]; then
+ "${BASE_DIR}/start.sh"
+else
+ echo "错误:未找到启动脚本 ${BASE_DIR}/start.sh"
+ exit 1
+fi
+
+echo "=== 重启操作完成 ==="
\ No newline at end of file
diff --git a/pbs/src/main/resources/bin/190/start.sh b/pbs/src/main/resources/bin/190/start.sh
new file mode 100644
index 00000000..4ce3508c
--- /dev/null
+++ b/pbs/src/main/resources/bin/190/start.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# Spring Boot 项目启动脚本
+JAR_PATH="/home/app/pbs"
+JAR_NAME="pbs-0.0.1-SNAPSHOT.jar"
+FULL_JAR_PATH="${JAR_PATH}/${JAR_NAME}"
+
+# 与logback.xml保持一致的日志路径
+LOG_HOME="/home/app/pbs/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# JVM参数
+JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_HOME}/heapdump.hprof"
+
+# 函数定义
+check_jar_exists() {
+ if [ ! -f "${FULL_JAR_PATH}" ]; then
+ echo "ERROR: Jar包不存在!路径:${FULL_JAR_PATH}"
+ exit 1
+ fi
+}
+
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 检查是否已运行
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目已在运行中!PID: ${PID}"
+ exit 0
+fi
+
+# 检查Jar包是否存在
+check_jar_exists
+
+# 确保日志目录存在
+if [ ! -d "${LOG_HOME}" ]; then
+ mkdir -p "${LOG_HOME}"
+ echo "日志目录不存在,已自动创建:${LOG_HOME}"
+fi
+
+
+# 启动项目
+echo "正在启动项目..."
+nohup java ${JVM_OPTS} -Dspring.profiles.active=dev-190 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5004 -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
diff --git a/pbs/src/main/resources/bin/190/status.sh b/pbs/src/main/resources/bin/190/status.sh
new file mode 100644
index 00000000..66701385
--- /dev/null
+++ b/pbs/src/main/resources/bin/190/status.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+# Spring Boot 项目状态查询脚本
+JAR_NAME="pbs-0.0.1-SNAPSHOT.jar"
+LOG_HOME="/home/app/pbs/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 查看服务状态
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目运行中!PID: ${PID}"
+ echo "日志文件路径:${LOG_FILE}"
+else
+ echo "项目未在运行中"
+fi
diff --git a/pbs/src/main/resources/bin/190/stop.sh b/pbs/src/main/resources/bin/190/stop.sh
new file mode 100644
index 00000000..f42b3392
--- /dev/null
+++ b/pbs/src/main/resources/bin/190/stop.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+# Spring Boot 项目强制停止脚本
+JAR_NAME="pbs-0.0.1-SNAPSHOT.jar"
+
+# 函数定义:获取运行中的进程ID
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 获取进程ID
+PID=$(get_running_pid)
+
+# 检查进程是否存在
+if [ -z "${PID}" ]; then
+ echo "项目未在运行中,无需停止"
+ exit 0
+fi
+
+# 强制停止进程
+echo "正在强制停止项目... PID: ${PID}"
+kill -9 "${PID}"
+
+# 检查是否成功停止
+sleep 5
+if [ -z "$(get_running_pid)" ]; then
+ echo "项目已强制停止成功"
+ exit 0
+else
+ echo "ERROR: 进程终止失败!请手动检查:ps -ef | grep ${JAR_NAME}"
+ exit 1
+fi
diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java
index efd3e9e9..6ee857d6 100644
--- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java
+++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java
@@ -937,7 +937,7 @@ public class NodeServiceImpl extends ServiceImpl simulationRunList = simulationRunService.lambdaQuery().eq(SimulationRun::getTaskId, uuids).list();
+ List simulationRunList = simulationRunService.lambdaQuery().in(SimulationRun::getTaskId, uuids).list();
if(CollectionUtils.isEmpty(simulationRunList)){
return SdmResponse.success();
}
diff --git a/project/src/main/resources/application-dev-190.yml b/project/src/main/resources/application-dev-190.yml
new file mode 100644
index 00000000..1ad23f15
--- /dev/null
+++ b/project/src/main/resources/application-dev-190.yml
@@ -0,0 +1,139 @@
+server:
+ port: 7101
+
+spring:
+ application:
+ name: project
+ datasource:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ hikari:
+ # 设置连接池能够容纳的最大连接数。建议值:CPU核心数 * 2 + 有效磁盘I/O数。一个常见的经验值是 10-20。
+ maximum-pool-size: 20
+ # 连接池在空闲时保持的最小连接数。
+ minimum-idle: 5
+ # 一个连接在被标记为空闲之前可以保持空闲状态的最长时间(毫秒)。当连接的空闲时间超过此值后,它可能会被连接池 evict(驱逐)。
+ idle-timeout: 60000 # 1 min
+ # 一个连接从被创建开始,其生命周期的最大时长(毫秒)。HikariCP的默认值就是30分钟,这是一个非常合理的设置。
+ max-lifetime: 1800000 # 30 min(Hikari 默认)
+ # 应用程序尝试从连接池获取一个连接时,等待的最长时间(毫秒)。建议值:30-60秒。
+ connection-timeout: 30000 # 30s
+ master:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ slave:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ enable: true
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.190.161:8848
+ enabled: true
+ group: DEV_GROUP
+# username: nacos
+# password: ENC(+QKYnI6gAYu1SbLaZQTkZA==)
+ data:
+ redis:
+ # Redis默认情况下有16个分片(库),这里配置具体使用的分片,默认是0
+ database: 0
+ # redis服务器地址(填写自己的服务器地址)
+ host: 192.168.2.166
+ # redis端口(默认6379)
+ port: 6379
+ #redis连接超时等待,10秒
+ timeout: PT10S
+ # redis访问密码(默认为空)
+ password:
+ lettuce:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制) 默认 8
+ max-active: 50
+ # 连接池中的最大空闲连接 默认 8
+ max-idle: 20
+ # 连接池中的最小空闲连接 默认 0
+ min-idle: 1
+ # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1,这里配置10s
+ max-wait: PT10S
+# password:
+# sentinel:
+# master: mymaster
+# nodes: 10.18.109.50:26379,10.18.109.51:26379,10.18.109.52:26379
+ servlet:
+ multipart:
+ # 单个文件的最大值
+ max-file-size: 500MB
+ # 上传文件总的最大值
+ max-request-size: 10240MB
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info
+ endpoint:
+ health:
+ show-details: always
+ group:
+ readiness:
+ include: discoveryComposite,ping,refreshScope
+ health:
+ redis:
+ enabled: false
+ db:
+ enabled: false
+
+mybatis-plus:
+ configuration:
+ map-underscore-to-camel-case: true
+ auto-mapping-behavior: full
+ cache-enabled: true
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ mapper-locations: classpath*:mapper/**/*.xml
+ global-config:
+ # 逻辑删除配置
+ db-config:
+ # 删除前
+ logic-not-delete-value: 1
+ # 删除后
+ logic-delete-value: 0
+
+#showSql
+logging:
+ level:
+ com.sdm.dao: debug
+
+lombok:
+ anyConstructor:
+ addConstructorProperties: true
+
+file:
+ rootPath: /data/home/sdm
+
+security:
+ whitelist:
+ paths:
+ - /run/deliverableApproveCallback
+ - /run/getSimulationKeyResultFileIds
+ - /run/generateReportInternal
+#logging:
+# config: ./config/logback.xml
+
+YA:
+ backend:
+ backendPublicKey : MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo4hmt4m5CpMIE5DL8G60cg63X6nEiNPt1yWB+kXDXQA0RaiqXhT4O78HT9BldrQVpyj6g4Z2mwPMfLBP6LjR8QyLlwfMBJ2uUV5B4PlEWiF9pUK9tU0lPlByS+p0oIxX8XlvzbbGbkyWQaOQ6SflFxB7eHu3r/hDOYtsMDcNe4hsuz1BnrAuRY6Yj+Hq2d4zPDetDgXeXs066z3qO6bLN9r/2UkHZc4tdkpMJgxucwTuvAvmgRgdDfnd6sAVDHYPaIVuJHqWnEnEcQzq6zWb1YPItc2FgDbXWpi8noz7wSjXDfBiTHU11nU5vv//xLVF83h5mbhk8dWHKq7bLUGp9QIDAQAB
+
+ frontend:
+ #publicKeyUrl : http://s279983e.natappfree.cc/api-auth/clients/getPublicKey
+ publicKeyUrl : http://pisxwh.8866.org:8015/gateway/api-auth/clients/getPublicKey
+ frontendPrivateKey : MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjz2pItCtM2Itf3knLhA1ZWzTVtKKY692Eptk3ZUy4qjlv+2e6u78/cBYZsVa/1nOyHPtb2j9xZAsHYGKZGoh64UWSewUhRdUO15xBRr5DyGEdTWHjwc1GHf7c99rKCjKDO2Xdp7cpqYABOAxgkSA2vP5zqhSCq0FCqwleEPLG1aAa/kh/oUzCZLUoSjZIdqQOgHJTZojqNeQCOC6U8Q+kUcHdKbptewu1A6XK8DHV0WqiJJEG3kyaoAZ1kGtr6ETtGy++aRvJT9gZN4M4bIgucKtAu2dcqQHj9jZ1i2xwhY3nmLjqaz3y313/IEYpMTG8pnPb8eP5usHDaDmH8RqJAgMBAAECggEAAzz05WYGWxkGvEjpHYhJOUR3yWeuNSaodNhVf+ZVO2tGAmQuWz8d2zOshCqAw/8Jv3IaN+kbCvNG0okBufQP0ZoFZY1f/xXhzc7OTG4JEc7yuIEQl897btDl+lk97nOAJx7z9ws7MCwlFyEUAY6s29glkYTBrgmTmy1FXKIqImsLfVV3LgfL2Mkixn0YSSsbUh2b+dki1zxjct3hTGZVh29bKOpbflOaG0LqEO0UwSX92Y/ir+fKmC8zEFbi5HZANYODivm8DiwF7khpraayf78kG3liccOTMMLVxIHwNiS9wcLG8WPuVEphlXMT4Ev4lq5VFM3mVxtd9g21ESbuvwKBgQDmsgE8u66qKVBsndp2K9FV9VWYDA4fYfRswDAWnZDCzIdanT0NFPp8s3nZCVU4FfX4m958yOrJ/MVp6d58z6fgkYQh2qL2Wy6zRPaIxCc6JG3FheFSxfWyULU/mBBK02ntUZCXEs8XKjAfDvmxaVVeonv0nCSgVwxJ4ypB5BZ+owKBgQC1x0GDnWtMbNGUMx6tYtFGWQIgop4hVQe6ZNgkKaQX7gtMa5egEda6ga6wCTV3+ZvQ9tBa1DxUFb5N/TrtQdFm39gOSXyhWSrntUKqaSFo03GvXXvvze2D3+uXpk7S8yzWuuD3OYyYj9S3nFVZffymabfukuY7oY3AN0E0PALw4wKBgQDQiyGrMU6X7HkTdy9BnCLEvd7+cAdkPzyiAqp2B0IRlqrVM0c5SDmX+PaxSEqNROzyLJVX4Ji+t44OTKgf0+hCjckQgYDHi24QCMuEny2G1d+Vq40hMmsFIwh10JUJz0v2iMFYkFw86JpPuU3nHv1ZazD60xwZBhfJw10z62iaWQKBgH+EVgsUJS8pryO9cKnFBnXI/tsR+Mf9NDynfZBwvbIjxT1IxMb/fJi9XGQVMbMGIS5H1gXBmMiLsEJZgDrrzw/Ru2jaWFl/ib+dwjR1J4C3w6p3c/fXh+TY8hYiDm2hNTU1R5dmgaCMVXawbpcm8FN1Ghh8aJIwVJYgrNcNuiptAoGAO14DHGqUXZZ//erIYWVfL0CAMXqy38dqNmfbzSAXYyLDl6cn49CCHF0GXOfCOesQN9ToQbqpLrntFgcFe0hil5dIWYafk9fHjjR8N8g74ijErQmCEAQy22b06V0q7rLzEsU/HDVL+RZg2aY4hDN+ODHRdpdFkOxsCYV73gevVeo=
+
+scheduler:
+ todo: 10.10.00
+ project: 10.11.00
\ No newline at end of file
diff --git a/project/src/main/resources/bin/190/log.sh b/project/src/main/resources/bin/190/log.sh
new file mode 100644
index 00000000..08d1fd32
--- /dev/null
+++ b/project/src/main/resources/bin/190/log.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# Spring Boot 项目日志查看脚本
+LOG_HOME="/home/app/project/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/project/src/main/resources/bin/190/restart.sh b/project/src/main/resources/bin/190/restart.sh
new file mode 100644
index 00000000..15071485
--- /dev/null
+++ b/project/src/main/resources/bin/190/restart.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# Spring Boot 项目重启脚本
+
+# 定义基础路径(公共参数)
+BASE_DIR="/home/app/project"
+
+echo "=== 开始重启项目 ==="
+
+# 先停止服务
+if [ -f "${BASE_DIR}/stop.sh" ]; then
+ "${BASE_DIR}/stop.sh"
+else
+ echo "错误:未找到停止脚本 ${BASE_DIR}/stop.sh"
+ exit 1
+fi
+
+# 再启动服务
+if [ -f "${BASE_DIR}/start.sh" ]; then
+ "${BASE_DIR}/start.sh"
+else
+ echo "错误:未找到启动脚本 ${BASE_DIR}/start.sh"
+ exit 1
+fi
+
+echo "=== 重启操作完成 ==="
\ No newline at end of file
diff --git a/project/src/main/resources/bin/190/start.sh b/project/src/main/resources/bin/190/start.sh
new file mode 100644
index 00000000..0199ff76
--- /dev/null
+++ b/project/src/main/resources/bin/190/start.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# Spring Boot 项目启动脚本
+JAR_PATH="/home/app/project"
+JAR_NAME="project-0.0.1-SNAPSHOT.jar"
+FULL_JAR_PATH="${JAR_PATH}/${JAR_NAME}"
+
+# 与logback.xml保持一致的日志路径
+LOG_HOME="/home/app/project/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# JVM参数
+JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_HOME}/heapdump.hprof"
+
+# 函数定义
+check_jar_exists() {
+ if [ ! -f "${FULL_JAR_PATH}" ]; then
+ echo "ERROR: Jar包不存在!路径:${FULL_JAR_PATH}"
+ exit 1
+ fi
+}
+
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 检查是否已运行
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目已在运行中!PID: ${PID}"
+ exit 0
+fi
+
+# 启动服务
+check_jar_exists
+
+# 确保日志目录存在
+if [ ! -d "${LOG_HOME}" ]; then
+ mkdir -p "${LOG_HOME}"
+ echo "日志目录不存在,已自动创建:${LOG_HOME}"
+fi
+
+echo "正在启动项目... "
+
+# 启动项目并保留控制台输出
+nohup java ${JVM_OPTS} -Dspring.profiles.active=dev-190 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
diff --git a/project/src/main/resources/bin/190/status.sh b/project/src/main/resources/bin/190/status.sh
new file mode 100644
index 00000000..5400f647
--- /dev/null
+++ b/project/src/main/resources/bin/190/status.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+# Spring Boot 项目状态查询脚本
+JAR_NAME="project-0.0.1-SNAPSHOT.jar"
+LOG_HOME="/home/app/project/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 查看服务状态
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目运行中!PID: ${PID}"
+ echo "日志文件路径:${LOG_FILE}"
+else
+ echo "项目未在运行中"
+fi
diff --git a/project/src/main/resources/bin/190/stop.sh b/project/src/main/resources/bin/190/stop.sh
new file mode 100644
index 00000000..b04ad531
--- /dev/null
+++ b/project/src/main/resources/bin/190/stop.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+# Spring Boot 项目强制停止脚本
+JAR_NAME="project-0.0.1-SNAPSHOT.jar"
+
+# 函数定义:获取运行中的进程ID
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 获取进程ID
+PID=$(get_running_pid)
+
+# 检查进程是否存在
+if [ -z "${PID}" ]; then
+ echo "项目未在运行中,无需停止"
+ exit 0
+fi
+
+# 强制停止进程
+echo "正在强制停止项目... PID: ${PID}"
+kill -9 "${PID}"
+
+# 检查是否成功停止
+sleep 5
+if [ -z "$(get_running_pid)" ]; then
+ echo "项目已强制停止成功"
+ exit 0
+else
+ echo "ERROR: 进程终止失败!请手动检查:ps -ef | grep ${JAR_NAME}"
+ exit 1
+fi
diff --git a/project/src/main/resources/bin/log.sh b/project/src/main/resources/bin/log.sh
new file mode 100644
index 00000000..08d1fd32
--- /dev/null
+++ b/project/src/main/resources/bin/log.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# Spring Boot 项目日志查看脚本
+LOG_HOME="/home/app/project/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/system/src/main/resources/application-dev-190.yml b/system/src/main/resources/application-dev-190.yml
new file mode 100644
index 00000000..39937dcd
--- /dev/null
+++ b/system/src/main/resources/application-dev-190.yml
@@ -0,0 +1,188 @@
+server:
+ port: 7103
+
+spring:
+ application:
+ name: system
+ datasource:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ hikari:
+ # 设置连接池能够容纳的最大连接数。建议值:CPU核心数 * 2 + 有效磁盘I/O数。一个常见的经验值是 10-20。
+ maximum-pool-size: 20
+ # 连接池在空闲时保持的最小连接数。
+ minimum-idle: 5
+ # 一个连接在被标记为空闲之前可以保持空闲状态的最长时间(毫秒)。当连接的空闲时间超过此值后,它可能会被连接池 evict(驱逐)。
+ idle-timeout: 60000 # 1 min
+ # 一个连接从被创建开始,其生命周期的最大时长(毫秒)。HikariCP的默认值就是30分钟,这是一个非常合理的设置。
+ max-lifetime: 1800000 # 30 min(Hikari 默认)
+ # 应用程序尝试从连接池获取一个连接时,等待的最长时间(毫秒)。建议值:30-60秒。
+ connection-timeout: 30000 # 30s
+ master:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ slave:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ enable: true
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.190.161:8848
+ group: DEV_GROUP
+# server-addr: 127.0.0.1:8848
+ enabled: true
+ data:
+ redis:
+ # Redis默认情况下有16个分片(库),这里配置具体使用的分片,默认是0
+ database: 0
+ # redis服务器地址(填写自己的服务器地址)
+ host: 192.168.2.166
+ # redis端口(默认6379)
+ port: 6379
+ #redis连接超时等待,10秒
+ timeout: PT10S
+ # redis访问密码(默认为空)
+ password:
+ lettuce:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制) 默认 8
+ max-active: 50
+ # 连接池中的最大空闲连接 默认 8
+ max-idle: 20
+ # 连接池中的最小空闲连接 默认 0
+ min-idle: 1
+ # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1,这里配置10s
+ max-wait: PT10S
+ # password:
+ # sentinel:
+ # master: mymaster
+ # nodes: 10.18.109.50:26379,10.18.109.51:26379,10.18.109.52:26379
+ servlet:
+ multipart:
+ # 单个文件的最大值
+ max-file-size: 500MB
+ # 上传文件总的最大值
+ max-request-size: 10240MB
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info
+ endpoint:
+ health:
+ show-details: always
+ group:
+ readiness:
+ include: discoveryComposite,ping,refreshScope
+ health:
+ redis:
+ enabled: false
+ db:
+ enabled: false
+
+mybatis-plus:
+ configuration:
+ map-underscore-to-camel-case: true
+ auto-mapping-behavior: full
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ # cache-enabled: true
+ mapper-locations: classpath*:mapper/**/*.xml
+ global-config:
+ # 逻辑删除配置
+ db-config:
+ # 删除前
+ logic-not-delete-value: 1
+ # 删除后
+ logic-delete-value: 0
+
+# MyBatis SQL日志配置
+logging:
+ level:
+ com.baomidou.mybatisplus.core.MybatisConfiguration: debug
+ com.baomidou.mybatisplus.core.override.MybatisMapperRegistry: trace
+ com.sdm.data.mapper: debug
+ java.sql: debug
+ java.sql.Connection: debug
+ java.sql.Statement: debug
+ java.sql.PreparedStatement: debug
+
+
+lombok:
+ anyConstructor:
+ addConstructorProperties: true
+
+file:
+ rootPath: /data/home/sdm
+
+
+system:
+ useCidSwitch: true
+
+userSystem:
+ cidUser: cid
+ localUser: local
+
+roleSystem:
+ cidRole: cid
+ localRole: local
+
+tenantSystem:
+ cidTenant: cid
+ localTenant: local
+
+cid:
+ url: http://192.168.65.162:8989/honeycom-spdm # 请根据实际CID服务地址修改
+ #url: http://192.168.65.75:8989/honeycom-spdm # 朱欣茹地址
+ user:
+ listUser: /spdm-user/listUser
+ queryUserDetail: /spdm-user/queryUserDetail
+ listUserByIds: /spdm-user/listUserByIds
+ queryUserRole: /spdm-user/queryUserRole
+ queryGroup: /spdm-user/queryGroup
+ queryGroupDetail: /spdm-user/queryGroupDetail
+ queryGroupMember: /spdm-user/queryGroupMember
+ getUserToken: /spdm-user/getUserToken
+ role:
+ getRoleByRoleName: /spdm-role/getRoleByRoleName
+ getRoleByRoleCode: /spdm-role/getRoleByRoleCode
+ getRoleById: /spdm-role/getRoleById
+ listRoles: /spdm-role/listRoles
+ tenant:
+ getTenantDetailById: /spdm-tenant/getTenantDetailById
+ listTenant: /spdm-tenant/listTenant
+ flow:
+ launchApprove: /spdm-flow/startFlow
+ queryFlowTemplate: /spdm-flow/listProcessByGroup
+ queryApproveDetail: /spdm-flow/queryFlowNodeDetail
+ stopApproveFlow: /spdm-flow/stopFlow
+ group: SPDM
+ # 单次批量查询cid审批流详情的条数
+ batchCount: 500
+ # 批量查询的cid 接口,配合上面url使用
+ batchInterfacePath: /spdm-flow/listFlowNodeDetail
+ msg:
+ sendMessage: /spdm-msg/sendMessage
+ log:
+ saveLog: /spdm-log/saveLog
+
+thirdparty:
+ api:
+ # 即时通消息通知
+ freeLinkUrl: http://freelink.haihui.com/wechat/InformApi/FreelinkAndDingdingInform
+
+security:
+ whitelist:
+ paths:
+ - /systemApprove/approveStatusNotice
+ - /user/getUserToken
+ - /systemMsg/sendMessage
+ - /systemLog/saveLog
+ - /tenant/list
\ No newline at end of file
diff --git a/system/src/main/resources/bin/190/log.sh b/system/src/main/resources/bin/190/log.sh
new file mode 100644
index 00000000..a3e001ec
--- /dev/null
+++ b/system/src/main/resources/bin/190/log.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# Spring Boot 项目日志查看脚本
+LOG_HOME="/home/app/system/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/system/src/main/resources/bin/190/restart.sh b/system/src/main/resources/bin/190/restart.sh
new file mode 100644
index 00000000..15e3a604
--- /dev/null
+++ b/system/src/main/resources/bin/190/restart.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# Spring Boot 项目重启脚本
+
+# 定义基础路径(公共参数)
+BASE_DIR="/home/app/system"
+
+echo "=== 开始重启项目 ==="
+
+# 先停止服务
+if [ -f "${BASE_DIR}/stop.sh" ]; then
+ "${BASE_DIR}/stop.sh"
+else
+ echo "错误:未找到停止脚本 ${BASE_DIR}/stop.sh"
+ exit 1
+fi
+
+# 再启动服务
+if [ -f "${BASE_DIR}/start.sh" ]; then
+ "${BASE_DIR}/start.sh"
+else
+ echo "错误:未找到启动脚本 ${BASE_DIR}/start.sh"
+ exit 1
+fi
+
+echo "=== 重启操作完成 ==="
\ No newline at end of file
diff --git a/system/src/main/resources/bin/190/start.sh b/system/src/main/resources/bin/190/start.sh
new file mode 100644
index 00000000..d9e167c8
--- /dev/null
+++ b/system/src/main/resources/bin/190/start.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+# Spring Boot 项目启动脚本(不修改logback配置,实时打印日志)
+JAR_PATH="/home/app/system"
+JAR_NAME="system-0.0.1-SNAPSHOT.jar"
+FULL_JAR_PATH="${JAR_PATH}/${JAR_NAME}"
+
+# 与logback.xml保持一致的日志路径
+LOG_HOME="/home/app/system/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# JVM参数
+JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_HOME}/heapdump.hprof"
+
+
+# 函数定义
+check_jar_exists() {
+ if [ ! -f "${FULL_JAR_PATH}" ]; then
+ echo "ERROR: Jar包不存在!路径:${FULL_JAR_PATH}"
+ exit 1
+ fi
+}
+
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 启动服务
+check_jar_exists
+
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目已在运行中!PID: ${PID}"
+ exit 0
+fi
+
+# 确保日志目录存在
+if [ ! -d "${LOG_HOME}" ]; then
+ mkdir -p "${LOG_HOME}"
+ echo "日志目录不存在,已自动创建:${LOG_HOME}"
+fi
+
+echo "正在启动项目..."
+
+# 启动项目,保留控制台输出
+nohup java ${JVM_OPTS} -Dspring.profiles.active=dev-190 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5006 -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
+
diff --git a/system/src/main/resources/bin/190/status.sh b/system/src/main/resources/bin/190/status.sh
new file mode 100644
index 00000000..6afe6255
--- /dev/null
+++ b/system/src/main/resources/bin/190/status.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+# Spring Boot 项目状态查看脚本
+JAR_NAME="system-0.0.1-SNAPSHOT.jar"
+LOG_HOME="/home/app/system/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+
+# 函数定义
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 查看服务状态
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目运行中!PID: ${PID}"
+ echo "日志文件路径:${LOG_FILE}"
+else
+ echo "项目未在运行中"
+fi
diff --git a/system/src/main/resources/bin/190/stop.sh b/system/src/main/resources/bin/190/stop.sh
new file mode 100644
index 00000000..8bb58d7f
--- /dev/null
+++ b/system/src/main/resources/bin/190/stop.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+# Spring Boot 项目强制停止脚本
+JAR_NAME="sysytem-0.0.1-SNAPSHOT.jar"
+
+# 函数定义:获取运行中的进程ID
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 获取进程ID
+PID=$(get_running_pid)
+
+# 检查进程是否存在
+if [ -z "${PID}" ]; then
+ echo "项目未在运行中,无需停止"
+ exit 0
+fi
+
+# 强制停止进程
+echo "正在强制停止项目... PID: ${PID}"
+kill -9 "${PID}"
+
+# 检查是否成功停止
+sleep 5
+if [ -z "$(get_running_pid)" ]; then
+ echo "项目已强制停止成功"
+ exit 0
+else
+ echo "ERROR: 进程终止失败!请手动检查:ps -ef | grep ${JAR_NAME}"
+ exit 1
+fi
diff --git a/task/src/main/resources/application-dev-190.yml b/task/src/main/resources/application-dev-190.yml
new file mode 100644
index 00000000..5222c44e
--- /dev/null
+++ b/task/src/main/resources/application-dev-190.yml
@@ -0,0 +1,130 @@
+# 前后端联调使用该配置文件,本地调试使用local
+server:
+ port: 7102
+
+spring:
+ application:
+ name: task
+ datasource:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ hikari:
+ # 设置连接池能够容纳的最大连接数。建议值:CPU核心数 * 2 + 有效磁盘I/O数。一个常见的经验值是 10-20。
+ maximum-pool-size: 20
+ # 连接池在空闲时保持的最小连接数。
+ minimum-idle: 5
+ # 一个连接在被标记为空闲之前可以保持空闲状态的最长时间(毫秒)。当连接的空闲时间超过此值后,它可能会被连接池 evict(驱逐)。
+ idle-timeout: 60000 # 1 min
+ # 一个连接从被创建开始,其生命周期的最大时长(毫秒)。HikariCP的默认值就是30分钟,这是一个非常合理的设置。
+ max-lifetime: 1800000 # 30 min(Hikari 默认)
+ # 应用程序尝试从连接池获取一个连接时,等待的最长时间(毫秒)。建议值:30-60秒。
+ connection-timeout: 30000 # 30s
+ master:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ slave:
+ username: root
+ password: mysql
+ jdbc-url: jdbc:mysql://192.168.190.161:3306/spdm_baseline?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ enable: true
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 192.168.190.161:8848
+ group: DEV_GROUP
+ # server-addr: 127.0.0.1:8848
+ enabled: true
+ # username: nacos
+ # password: ENC(+QKYnI6gAYu1SbLaZQTkZA==)
+ data:
+ redis:
+ # Redis默认情况下有16个分片(库),这里配置具体使用的分片,默认是0
+ database: 0
+ # redis服务器地址(填写自己的服务器地址)
+ host: 192.168.2.166
+ # redis端口(默认6379)
+ port: 6379
+ #redis连接超时等待,10秒
+ timeout: PT10S
+ # redis访问密码(默认为空)
+ password:
+ lettuce:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制) 默认 8
+ max-active: 50
+ # 连接池中的最大空闲连接 默认 8
+ max-idle: 20
+ # 连接池中的最小空闲连接 默认 0
+ min-idle: 1
+ # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1,这里配置10s
+ max-wait: PT10S
+ # password:
+ # sentinel:
+ # master: mymaster
+ # nodes: 10.18.109.50:26379,10.18.109.51:26379,10.18.109.52:26379
+ servlet:
+ multipart:
+ # 单个文件的最大值
+ max-file-size: 500MB
+ # 上传文件总的最大值
+ max-request-size: 10240MB
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info
+ endpoint:
+ health:
+ show-details: always
+ group:
+ readiness:
+ include: discoveryComposite,ping,refreshScope
+ health:
+ redis:
+ enabled: false
+ db:
+ enabled: false
+
+mybatis-plus:
+ configuration:
+ map-underscore-to-camel-case: true
+ auto-mapping-behavior: full
+ # cache-enabled: true
+ # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ mapper-locations: classpath*:mapper/**/*.xml
+ global-config:
+ # 逻辑删除配置
+ db-config:
+ # 删除前
+ logic-not-delete-value: 1
+ # 删除后
+ logic-delete-value: 0
+
+#showSql
+#logging:
+# level:
+# com.sdm.dao: debug
+
+lombok:
+ anyConstructor:
+ addConstructorProperties: true
+
+file:
+ rootPath: /data/home/sdm
+ scriptPath : /opt/script
+approve:
+ replyUrl: http:192.168.190.161:7102/simulation/task/taskpool/approveHandleNotice
+#logging:
+# config: ./config/logback.xml
+
+security:
+ whitelist:
+ paths:
+ - /taskpool/approveHandleNotice
+ - /taskPerformance/getRunPerformance
\ No newline at end of file
diff --git a/task/src/main/resources/bin/190/log.sh b/task/src/main/resources/bin/190/log.sh
new file mode 100644
index 00000000..099f64c4
--- /dev/null
+++ b/task/src/main/resources/bin/190/log.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+# Spring Boot 项目日志查看脚本
+LOG_HOME="/home/app/task/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# 查看实时日志
+if [ ! -f "${LOG_FILE}" ]; then
+ echo "日志文件不存在:${LOG_FILE}(可能项目未启动)"
+ exit 1
+fi
+echo "正在查看实时运行日志(按 Ctrl+C 退出)... 日志路径:${LOG_FILE}"
+tail -f "${LOG_FILE}"
diff --git a/task/src/main/resources/bin/190/restart.sh b/task/src/main/resources/bin/190/restart.sh
new file mode 100644
index 00000000..31c7617a
--- /dev/null
+++ b/task/src/main/resources/bin/190/restart.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# Spring Boot 项目重启脚本
+
+# 定义基础路径(公共参数)
+BASE_DIR="/home/app/task"
+
+echo "=== 开始重启项目 ==="
+
+# 先停止服务
+if [ -f "${BASE_DIR}/stop.sh" ]; then
+ "${BASE_DIR}/stop.sh"
+else
+ echo "错误:未找到停止脚本 ${BASE_DIR}/stop.sh"
+ exit 1
+fi
+
+# 再启动服务
+if [ -f "${BASE_DIR}/start.sh" ]; then
+ "${BASE_DIR}/start.sh"
+else
+ echo "错误:未找到启动脚本 ${BASE_DIR}/start.sh"
+ exit 1
+fi
+
+echo "=== 重启操作完成 ==="
\ No newline at end of file
diff --git a/task/src/main/resources/bin/190/start.sh b/task/src/main/resources/bin/190/start.sh
new file mode 100644
index 00000000..2f4c8093
--- /dev/null
+++ b/task/src/main/resources/bin/190/start.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+# Spring Boot 项目启动脚本
+JAR_PATH="/home/app/task"
+JAR_NAME="task-0.0.1-SNAPSHOT.jar"
+FULL_JAR_PATH="${JAR_PATH}/${JAR_NAME}"
+
+# 与logback.xml保持一致的日志路径
+LOG_HOME="/home/app/task/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# JVM参数
+JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_HOME}/heapdump.hprof"
+
+# 检查Jar包是否存在
+check_jar_exists() {
+ if [ ! -f "${FULL_JAR_PATH}" ]; then
+ echo "ERROR: Jar包不存在!路径:${FULL_JAR_PATH}"
+ exit 1
+ fi
+}
+
+# 获取运行中的进程PID
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 启动服务
+check_jar_exists
+
+PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目已在运行中!PID: ${PID}"
+ exit 0
+fi
+
+# 确保日志目录存在
+if [ ! -d "${LOG_HOME}" ]; then
+ mkdir -p "${LOG_HOME}"
+ echo "日志目录不存在,已自动创建:${LOG_HOME}"
+fi
+
+echo "正在启动项目..."
+echo "======================================================================"
+
+# 启动项目,保留控制台输出
+nohup java ${JVM_OPTS} -Dspring.profiles.active=dev-190 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5007 -jar "${FULL_JAR_PATH}" > "${LOG_FILE}" 2>&1 &
+
diff --git a/task/src/main/resources/bin/190/status.sh b/task/src/main/resources/bin/190/status.sh
new file mode 100644
index 00000000..5a5c8504
--- /dev/null
+++ b/task/src/main/resources/bin/190/status.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+# Spring Boot 项目状态查看脚本
+JAR_NAME="task-0.0.1-SNAPSHOT.jar"
+LOG_HOME="/home/app/task/logs"
+LOG_FILE="${LOG_HOME}/running.log"
+
+# 获取运行中的进程PID
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+local PID=$(get_running_pid)
+if [ -n "${PID}" ]; then
+ echo "项目运行中!PID: ${PID}"
+ echo "日志文件路径:${LOG_FILE}"
+else
+ echo "项目未在运行中"
+fi
diff --git a/task/src/main/resources/bin/190/stop.sh b/task/src/main/resources/bin/190/stop.sh
new file mode 100644
index 00000000..1ce195c9
--- /dev/null
+++ b/task/src/main/resources/bin/190/stop.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+# Spring Boot 项目强制停止脚本
+JAR_NAME="task-0.0.1-SNAPSHOT.jar"
+
+# 函数定义:获取运行中的进程ID
+get_running_pid() {
+ ps -ef | grep "${JAR_NAME}" | grep -v "grep" | awk '{print $2}'
+}
+
+# 获取进程ID
+PID=$(get_running_pid)
+
+# 检查进程是否存在
+if [ -z "${PID}" ]; then
+ echo "项目未在运行中,无需停止"
+ exit 0
+fi
+
+# 强制停止进程
+echo "正在强制停止项目... PID: ${PID}"
+kill -9 "${PID}"
+
+# 检查是否成功停止
+sleep 5
+if [ -z "$(get_running_pid)" ]; then
+ echo "项目已强制停止成功"
+ exit 0
+else
+ echo "ERROR: 进程终止失败!请手动检查:ps -ef | grep ${JAR_NAME}"
+ exit 1
+fi