diff --git a/pqs-common/common-db/pom.xml b/pqs-common/common-db/pom.xml
index 399d07938..5d865cb69 100644
--- a/pqs-common/common-db/pom.xml
+++ b/pqs-common/common-db/pom.xml
@@ -74,6 +74,12 @@
mybatis-plus-boot-starter
+
+ com.baomidou
+ dynamic-datasource-spring-boot-starter
+ 3.5.1
+
+
diff --git a/pqs-device/common-device-biz/pom.xml b/pqs-device/common-device-biz/pom.xml
index ab6181178..339b7e5fa 100644
--- a/pqs-device/common-device-biz/pom.xml
+++ b/pqs-device/common-device-biz/pom.xml
@@ -60,6 +60,7 @@
pqs-influx
${project.version}
+
diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/mapper/OverLimitWlMapper.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/mapper/OverLimitWlMapper.java
new file mode 100644
index 000000000..1208e32bd
--- /dev/null
+++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/mapper/OverLimitWlMapper.java
@@ -0,0 +1,22 @@
+package com.njcn.device.biz.mapper;
+
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.njcn.device.biz.pojo.po.Overlimit;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author xy
+ * @since 2022-01-04
+ */
+@DS("sjzx")
+@Mapper
+public interface OverLimitWlMapper extends BaseMapper {
+
+
+}
diff --git a/pqs-harmonic/harmonic-boot/src/main/resources/bootstrap.yml b/pqs-harmonic/harmonic-boot/src/main/resources/bootstrap.yml
index db9f602b3..432cfc284 100644
--- a/pqs-harmonic/harmonic-boot/src/main/resources/bootstrap.yml
+++ b/pqs-harmonic/harmonic-boot/src/main/resources/bootstrap.yml
@@ -35,11 +35,11 @@ spring:
- data-id: share-config.yaml
refresh: true
#数据中心使用
-# - data-Id: share-config-datasource-db.yaml
-# refresh: true
- #PMS使用
- - data-Id: share-config-harmonic-db.yaml
+ - data-Id: share-config-datasource-db.yaml
refresh: true
+ #PMS使用
+# - data-Id: share-config-harmonic-db.yaml
+# refresh: true
main:
allow-bean-definition-overriding: true
servlet:
diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java
index 471affbc1..5a79c6753 100644
--- a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java
+++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/AuditServiceImpl.java
@@ -53,6 +53,7 @@ import com.njcn.user.api.UserFeignClient;
import com.njcn.user.pojo.po.User;
import com.njcn.web.utils.RequestUtil;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.IOUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
@@ -77,11 +78,12 @@ import static com.njcn.common.pojo.constant.LogInfo.UNKNOWN_USER;
*/
@Service
@RequiredArgsConstructor
+@Slf4j
public class AuditServiceImpl extends ServiceImpl implements AuditService {
private final AuditMapper auditMapper;
- @Value("${spring.datasource.druid.url}")
+ @Value("${spring.datasource.dynamic.datasource.sjzx.url}")
private String urls;
private final GeneralInfo generalInfo;
@@ -435,8 +437,41 @@ public class AuditServiceImpl extends ServiceImpl implem
@Override
public Float getMemoInfo() {
- String schema = urls.substring(urls.lastIndexOf("/") + 1, urls.lastIndexOf("?"));
- return this.baseMapper.getMemoInfo(schema);
+ // 1. 判空兜底,防止@Value注入为空/空字符串
+ if (StrUtil.isBlank(urls)) {
+ log.error("getMemoInfo error: 数据库链接地址urls为空,无法截取schema");
+ return 0.0F;
+ }
+ String schema = null;
+ try {
+ // 2. 先获取最后一个/的下标,截取库名起始位
+ int lastSlashIndex = urls.lastIndexOf("/");
+ // 3. 先获取?的下标,截取库名结束位
+ int questionMarkIndex = urls.indexOf("?");
+ // 4. 兼容两种场景:有问号参数、无问号参数
+ if (lastSlashIndex > -1) {
+ if (questionMarkIndex > lastSlashIndex) {
+ // 正常场景:url带?后缀参数 → 截取 / 和 ? 之间的库名
+ schema = urls.substring(lastSlashIndex + 1, questionMarkIndex);
+ } else {
+ // 兼容场景:url不带?后缀参数 → 截取 / 之后的全部内容作为库名
+ schema = urls.substring(lastSlashIndex + 1);
+ }
+ }
+ } catch (Exception e) {
+ // 5. 捕获所有异常(下标越界、格式异常等),兜底处理
+ log.error("getMemoInfo 截取数据库schema失败,urls={}, 异常信息:{}", urls, e);
+ return 0.0F;
+ }
+ // 6. 最终判空,防止截取结果为空
+ if (StrUtil.isBlank(schema)) {
+ log.error("getMemoInfo 截取到的数据库schema为空,urls={}", urls);
+ return 0.0F;
+ }
+ // 7. 调用mapper查询,返回结果
+ Float memoInfo = this.baseMapper.getMemoInfo(schema);
+ // 8. 兼容mapper返回null的情况,避免接口返回null报错
+ return ObjectUtil.isNull(memoInfo) ? 0.0F : memoInfo;
}
@Override