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