Merge branch '0.8.X' of https://gitee.com/hdka/klp-oa into 0.8.X

This commit is contained in:
砂糖
2025-08-07 16:46:30 +08:00
6 changed files with 217 additions and 12 deletions

View File

@@ -30,6 +30,12 @@ xxl.job:
# 执行器日志文件保存天数大于3生效
logretentiondays: 30
--- # WMS文件管理配置
klp:
file:
# 开发环境文件存储目录
directory-path: testDirectory
--- # 数据源配置
spring:
datasource:

View File

@@ -1,6 +1,12 @@
--- # 临时文件存储位置 避免临时文件被系统清理报错
spring.servlet.multipart.location: /klp/server/temp
--- # WMS文件管理配置
klp:
file:
# 生产环境文件存储目录
directory-path: /home/ubuntu/oa/folder
--- # 监控中心配置
spring.boot.admin.client:
# 增加客户端开关

View File

@@ -0,0 +1,180 @@
--- # 临时文件存储位置 避免临时文件被系统清理报错
spring.servlet.multipart.location: /klp/server/temp
--- # WMS文件管理配置
klp:
file:
# 开发环境文件存储目录
directory-path: testDirectory
--- # 监控中心配置
spring.boot.admin.client:
# 增加客户端开关
enabled: true
url: http://localhost:9090/admin
instance:
service-host-type: IP
username: klp
password: 123456
--- # xxl-job 配置
xxl.job:
# 执行器开关
enabled: true
# 调度中心地址:如调度中心集群部署存在多个地址则用逗号分隔。
admin-addresses: http://localhost:9100/xxl-job-admin
# 执行器通讯TOKEN非空时启用
access-token: xxl-job
executor:
# 执行器AppName执行器心跳注册分组依据为空则关闭自动注册
appname: xxl-job-executor
# 执行器端口号 执行器从9101开始往后写
port: 9101
# 执行器注册默认IP:PORT
address:
# 执行器IP默认自动获取IP
ip:
# 执行器运行日志文件存储磁盘路径
logpath: ./logs/xxl-job
# 执行器日志文件保存天数大于3生效
logretentiondays: 30
--- # 数据源配置
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
dynamic:
# 性能分析插件(有性能损耗 不建议生产环境使用)
p6spy: false
# 设置默认的数据源或者数据源组,默认值即为 master
primary: master
# 严格模式 匹配不到数据源则报错
strict: true
datasource:
# 主库数据源
master:
type: ${spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://140.143.206.120:3306/klp-oa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username: klp
password: KeLunPu123@
# 从库数据源
slave:
lazy: true
type: ${spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username:
password:
# oracle:
# type: ${spring.datasource.type}
# driverClassName: oracle.jdbc.OracleDriver
# url: jdbc:oracle:thin:@//localhost:1521/XE
# username: ROOT
# password: root
# hikari:
# connectionTestQuery: SELECT 1 FROM DUAL
# postgres:
# type: ${spring.datasource.type}
# driverClassName: org.postgresql.Driver
# url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
# username: root
# password: root
# sqlserver:
# type: ${spring.datasource.type}
# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true
# username: SA
# password: root
hikari:
# 最大连接池数量
maxPoolSize: 20
# 最小空闲线程数量
minIdle: 10
# 配置获取连接等待超时的时间
connectionTimeout: 30000
# 校验超时时间
validationTimeout: 5000
# 空闲连接存活最大时间默认10分钟
idleTimeout: 600000
# 此属性控制池中连接的最长生命周期值0表示无限生命周期默认30分钟
maxLifetime: 1800000
# 连接测试query配置检测连接是否有效
connectionTestQuery: SELECT 1
# 多久检查一次连接的活性
keepaliveTime: 30000
--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
spring:
redis:
# 地址
host: 140.143.206.120
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码(如没有密码请注释掉)
password: KeLunPu123!
# 连接超时时间
timeout: 10s
# 是否开启ssl
ssl: false
redisson:
# redis key前缀
keyPrefix:
# 线程池数量
threads: 16
# Netty线程池数量
nettyThreads: 32
# 单节点配置
singleServerConfig:
# 客户端名称
clientName: ${klp.name}
# 最小空闲连接数
connectionMinimumIdleSize: 32
# 连接池大小
connectionPoolSize: 64
# 连接空闲超时,单位:毫秒
idleConnectionTimeout: 10000
# 命令等待超时,单位:毫秒
timeout: 3000
# 发布和订阅连接池大小
subscriptionConnectionPoolSize: 50
--- # mail 邮件发送
mail:
enabled: false
host: smtp.163.com
port: 465
# 是否需要用户名密码验证
auth: true
# 发送方遵循RFC-822标准
from: xxx@163.com
# 用户名注意如果使用foxmail邮箱此处user为qq号
user: xxx@163.com
# 密码注意某些邮箱需要为SMTP服务单独设置密码详情查看相关帮助
pass: xxxxxxxxxx
# 使用 STARTTLS安全连接STARTTLS是对纯文本通信协议的扩展。
starttlsEnable: true
# 使用SSL安全连接
sslEnable: true
# SMTP超时时长单位毫秒缺省值不超时
timeout: 0
# Socket连接超时值单位毫秒缺省值不超时
connectionTimeout: 0
--- # sms 短信
sms:
enabled: false
# 阿里云 dysmsapi.aliyuncs.com
# 腾讯云 sms.tencentcloudapi.com
endpoint: "dysmsapi.aliyuncs.com"
accessKeyId: xxxxxxx
accessKeySecret: xxxxxx
signName: 测试
# 腾讯专用
sdkAppId:

View File

@@ -12,6 +12,10 @@ klp:
addressEnabled: true
# 缓存懒加载
cacheLazy: false
# 文件管理配置
file:
# 文件存储目录路径
directory-path: ${klp.file.directory-path:testDirectory}
captcha:
# 页面 <参数设置> 可开启关闭 验证码校验

View File

@@ -3,6 +3,7 @@ package com.klp.controller;
import com.klp.domain.FileDetailInfo;
import com.klp.domain.FileInfo;
import com.klp.domain.vo.ApiResponseVo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;
@@ -24,8 +25,9 @@ import java.util.stream.Collectors;
@RequestMapping("/wms/file")
public class WmsFileManagementController {
// 文件目录路径
private static final String DIRECTORY_PATH = "testDirectory";
// 文件目录路径 - 从配置文件读取
@Value("${klp.file.directory-path}")
private String directoryPath;
/**
* 获取目录下所有文件基本信息(不包含文件内容)
@@ -35,11 +37,11 @@ public class WmsFileManagementController {
@ResponseBody
public ResponseEntity<ApiResponseVo<List<FileInfo>>> getAllFiles() {
try {
Path directory = Paths.get(DIRECTORY_PATH);
Path directory = Paths.get(directoryPath);
// 检查目录是否存在
if (!Files.exists(directory)) {
return ResponseEntity.ok(new ApiResponseVo<>(false, "目录不存在: " + DIRECTORY_PATH, null));
return ResponseEntity.ok(new ApiResponseVo<>(false, "目录不存在: " + directoryPath, null));
}
// 获取所有文件基本信息(不读取文件内容)
@@ -73,7 +75,7 @@ public class WmsFileManagementController {
@ResponseBody
public ResponseEntity<ApiResponseVo<FileDetailInfo>> getFileContent(@PathVariable String fileName) {
try {
Path filePath = Paths.get(DIRECTORY_PATH, fileName);
Path filePath = Paths.get(directoryPath, fileName);
// 检查文件是否存在
if (!Files.exists(filePath)) {
@@ -108,7 +110,7 @@ public class WmsFileManagementController {
@ResponseBody
public ResponseEntity<ApiResponseVo<String>> deleteFile(@PathVariable String fileName) {
try {
Path filePath = Paths.get(DIRECTORY_PATH, fileName);
Path filePath = Paths.get(directoryPath, fileName);
// 检查文件是否存在
if (!Files.exists(filePath)) {
@@ -149,7 +151,7 @@ public class WmsFileManagementController {
for (String fileName : fileNames) {
try {
Path filePath = Paths.get(DIRECTORY_PATH, fileName);
Path filePath = Paths.get(directoryPath, fileName);
if (Files.exists(filePath) && Files.isRegularFile(filePath)) {
Files.delete(filePath);
@@ -220,10 +222,10 @@ public class WmsFileManagementController {
*/
private ResponseEntity<ApiResponseVo<Map<String, Object>>> performCleanup() {
try {
Path directory = Paths.get(DIRECTORY_PATH);
Path directory = Paths.get(directoryPath);
if (!Files.exists(directory)) {
return ResponseEntity.ok(new ApiResponseVo<>(false, "目录不存在: " + DIRECTORY_PATH, null));
return ResponseEntity.ok(new ApiResponseVo<>(false, "目录不存在: " + directoryPath, null));
}
// 计算时间范围删除1-3个月前的文件
@@ -333,10 +335,10 @@ public class WmsFileManagementController {
@ResponseBody
public ResponseEntity<ApiResponseVo<Map<String, Object>>> getDirectoryStats() {
try {
Path directory = Paths.get(DIRECTORY_PATH);
Path directory = Paths.get(directoryPath);
if (!Files.exists(directory)) {
return ResponseEntity.ok(new ApiResponseVo<>(false, "目录不存在: " + DIRECTORY_PATH, null));
return ResponseEntity.ok(new ApiResponseVo<>(false, "目录不存在: " + directoryPath, null));
}
Map<String, Object> stats = new HashMap<>();
@@ -354,7 +356,7 @@ public class WmsFileManagementController {
}
}
stats.put("directoryPath", DIRECTORY_PATH);
stats.put("directoryPath", directoryPath);
stats.put("fileCount", fileCount);
stats.put("totalSize", totalSize);
stats.put("totalSizeMB", String.format("%.2f MB", totalSize / (1024.0 * 1024.0)));

View File

@@ -79,6 +79,13 @@
<logging.level>warn</logging.level>
</properties>
</profile>
<profile>
<id>stage</id>
<properties>
<profiles.active>stage</profiles.active>
<logging.level>warn</logging.level>
</properties>
</profile>
</profiles>
<!-- 依赖声明 -->