diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdAiboxBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdAiboxBHServiceImpl.java index ed8fdd92..e44b24d4 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdAiboxBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdAiboxBHServiceImpl.java @@ -1,9 +1,11 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdAiboxBH; import com.yfd.platform.qgc_base.mapper.SdAiboxBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; @@ -12,6 +14,7 @@ import com.yfd.platform.utils.CodeToNameMetadataBo; import com.yfd.platform.utils.DataSourceRequestUtil; import com.yfd.platform.utils.DictCodeToNameConverter; import com.yfd.platform.utils.SecurityUtils; +import com.yfd.platform.utils.StcdUniqueValidator; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,6 +34,9 @@ public class SdAiboxBHServiceImpl extends ServiceImpl @@ -71,6 +77,11 @@ public class SdAiboxBHServiceImpl extends ServiceImpl CODE_TO_NAME_META_LIST = new ArrayList<>(); static { @@ -57,6 +57,11 @@ public class SdAimonitorBHServiceImpl extends ServiceImpl @@ -64,6 +68,11 @@ public class SdArtsgBHServiceImpl extends ServiceImpl impleme @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -66,6 +66,11 @@ public class SdDwBHServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdDwBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index 0ae3d892..597827e0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -23,6 +23,7 @@ import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.GroupHelper; import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.vo.*; import com.yfd.platform.qgc_data.domain.SysUserDataScope; import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; @@ -134,6 +135,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl impleme @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -66,6 +66,11 @@ public class SdEqBHServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdEqBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFbrdBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFbrdBHServiceImpl.java index 976942db..0e78c200 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFbrdBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFbrdBHServiceImpl.java @@ -1,8 +1,10 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdFbrdBH; import com.yfd.platform.qgc_base.mapper.SdFbrdBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; @@ -10,6 +12,7 @@ import com.yfd.platform.qgc_base.service.ISdFbrdBHService; import com.yfd.platform.utils.CodeToNameMetadataBo; import com.yfd.platform.utils.DataSourceRequestUtil; import com.yfd.platform.utils.DictCodeToNameConverter; +import com.yfd.platform.utils.StcdUniqueValidator; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,7 +30,8 @@ public class SdFbrdBHServiceImpl extends ServiceImpl i @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -63,6 +67,11 @@ public class SdFbrdBHServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdFbrdBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFhbtBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFhbtBHServiceImpl.java index b4949034..c6d4f7c9 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFhbtBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFhbtBHServiceImpl.java @@ -1,17 +1,16 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdFhbtBH; import com.yfd.platform.qgc_base.mapper.SdFhbtBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; import com.yfd.platform.qgc_base.service.ISdFhbtBHService; -import com.yfd.platform.utils.CodeToNameMetadataBo; -import com.yfd.platform.utils.DataSourceRequestUtil; -import com.yfd.platform.utils.DictCodeToNameConverter; -import com.yfd.platform.utils.SecurityUtils; +import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,7 +29,8 @@ public class SdFhbtBHServiceImpl extends ServiceImpl i @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -67,6 +67,11 @@ public class SdFhbtBHServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdFhbtBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssBHServiceImpl.java index 3a09c579..a0ac0133 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdFpssBHServiceImpl.java @@ -1,10 +1,12 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdEngInfoBH; import com.yfd.platform.qgc_base.domain.SdFpssBH; import com.yfd.platform.qgc_base.mapper.SdEngInfoBHMapper; @@ -14,10 +16,7 @@ import com.yfd.platform.qgc_base.service.ISdFpssBHService; import com.yfd.platform.qgc_data.domain.SysUserDataScope; import com.yfd.platform.qgc_data.mapper.SysUserDataScopeMapper; import com.yfd.platform.system.service.IAdminAuthService; -import com.yfd.platform.utils.CodeToNameMetadataBo; -import com.yfd.platform.utils.DataSourceRequestUtil; -import com.yfd.platform.utils.DictCodeToNameConverter; -import com.yfd.platform.utils.SecurityUtils; +import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -42,7 +41,8 @@ public class SdFpssBHServiceImpl extends ServiceImpl i @Resource private IMsOperationLogService msOperationLogService; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -213,6 +213,11 @@ public class SdFpssBHServiceImpl extends ServiceImpl i @Override public boolean add(SdFpssBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdOpinfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdOpinfoBHServiceImpl.java index d7d35a7e..8fc5ade3 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdOpinfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdOpinfoBHServiceImpl.java @@ -1,17 +1,16 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdOpinfoBH; import com.yfd.platform.qgc_base.mapper.SdOpinfoBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; import com.yfd.platform.qgc_base.service.ISdOpinfoBHService; -import com.yfd.platform.utils.CodeToNameMetadataBo; -import com.yfd.platform.utils.DataSourceRequestUtil; -import com.yfd.platform.utils.DictCodeToNameConverter; -import com.yfd.platform.utils.SecurityUtils; +import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,7 +29,8 @@ public class SdOpinfoBHServiceImpl extends ServiceImpl @@ -67,6 +67,11 @@ public class SdOpinfoBHServiceImpl extends ServiceImpl i @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -66,6 +70,11 @@ public class SdOtteBHServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdOtteBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdOtweBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdOtweBHServiceImpl.java index 266c4bb4..f7cadf09 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdOtweBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdOtweBHServiceImpl.java @@ -1,8 +1,10 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdOtweBH; import com.yfd.platform.qgc_base.mapper.SdOtweBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; @@ -10,6 +12,7 @@ import com.yfd.platform.qgc_base.service.ISdOtweBHService; import com.yfd.platform.utils.CodeToNameMetadataBo; import com.yfd.platform.utils.DataSourceRequestUtil; import com.yfd.platform.utils.DictCodeToNameConverter; +import com.yfd.platform.utils.StcdUniqueValidator; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,7 +29,8 @@ public class SdOtweBHServiceImpl extends ServiceImpl i private IMsOperationLogService msOperationLogService; @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -64,6 +68,11 @@ public class SdOtweBHServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdOtweBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdSonarBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdSonarBHServiceImpl.java index 24438e9a..b1a5c16c 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdSonarBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdSonarBHServiceImpl.java @@ -1,17 +1,16 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdSonarBH; import com.yfd.platform.qgc_base.mapper.SdSonarBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; import com.yfd.platform.qgc_base.service.ISdSonarBHService; -import com.yfd.platform.utils.CodeToNameMetadataBo; -import com.yfd.platform.utils.DataSourceRequestUtil; -import com.yfd.platform.utils.DictCodeToNameConverter; -import com.yfd.platform.utils.SecurityUtils; +import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -29,7 +28,8 @@ public class SdSonarBHServiceImpl extends ServiceImpl @@ -69,6 +69,11 @@ public class SdSonarBHServiceImpl extends ServiceImpl impleme private IMsOperationLogService msOperationLogService; @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -64,6 +68,11 @@ public class SdTeBHServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdTeBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVaBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVaBHServiceImpl.java index 3e81ad52..74c4c63a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVaBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVaBHServiceImpl.java @@ -1,17 +1,16 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdVaBH; import com.yfd.platform.qgc_base.mapper.SdVaBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; import com.yfd.platform.qgc_base.service.ISdVaBHService; -import com.yfd.platform.utils.CodeToNameMetadataBo; -import com.yfd.platform.utils.DataSourceRequestUtil; -import com.yfd.platform.utils.DictCodeToNameConverter; -import com.yfd.platform.utils.SecurityUtils; +import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -29,7 +28,8 @@ public class SdVaBHServiceImpl extends ServiceImpl impleme private IMsOperationLogService msOperationLogService; @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -65,6 +65,11 @@ public class SdVaBHServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdVaBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVdinfoBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVdinfoBServiceImpl.java index 02d1be85..0f43ff9b 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVdinfoBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVdinfoBServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdVdinfoB; import com.yfd.platform.qgc_base.mapper.SdVdinfoBMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; @@ -11,6 +12,7 @@ import com.yfd.platform.qgc_base.service.ISdVdinfoBService; import com.yfd.platform.utils.CodeToNameMetadataBo; import com.yfd.platform.utils.DataSourceRequestUtil; import com.yfd.platform.utils.DictCodeToNameConverter; +import com.yfd.platform.utils.StcdUniqueValidator; import jakarta.annotation.Resource; import org.checkerframework.checker.units.qual.C; import org.springframework.stereotype.Service; @@ -28,7 +30,8 @@ public class SdVdinfoBServiceImpl extends ServiceImpl @@ -67,6 +70,11 @@ public class SdVdinfoBServiceImpl extends ServiceImpl impleme private IMsOperationLogService msOperationLogService; @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -65,6 +65,11 @@ public class SdVpBHServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdVpBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWeBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWeBHServiceImpl.java index 63c4040d..a95bcbe2 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWeBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWeBHServiceImpl.java @@ -1,8 +1,10 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdWeBH; import com.yfd.platform.qgc_base.mapper.SdWeBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; @@ -10,6 +12,7 @@ import com.yfd.platform.qgc_base.service.ISdWeBHService; import com.yfd.platform.utils.CodeToNameMetadataBo; import com.yfd.platform.utils.DataSourceRequestUtil; import com.yfd.platform.utils.DictCodeToNameConverter; +import com.yfd.platform.utils.StcdUniqueValidator; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,7 +30,8 @@ public class SdWeBHServiceImpl extends ServiceImpl impleme @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -66,6 +70,11 @@ public class SdWeBHServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdWeBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWqBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWqBHServiceImpl.java index 1dbbf910..846dfc2a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWqBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWqBHServiceImpl.java @@ -1,17 +1,16 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdWqBH; import com.yfd.platform.qgc_base.mapper.SdWqBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; import com.yfd.platform.qgc_base.service.ISdWqBHService; -import com.yfd.platform.utils.CodeToNameMetadataBo; -import com.yfd.platform.utils.DataSourceRequestUtil; -import com.yfd.platform.utils.DictCodeToNameConverter; -import com.yfd.platform.utils.SecurityUtils; +import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,7 +29,8 @@ public class SdWqBHServiceImpl extends ServiceImpl impleme @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -68,6 +68,11 @@ public class SdWqBHServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdWqBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWtBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWtBHServiceImpl.java index c179bc38..65af743a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWtBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdWtBHServiceImpl.java @@ -1,18 +1,17 @@ package com.yfd.platform.qgc_base.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.exception.BizException; import com.yfd.platform.qgc_base.domain.SdWtBH; import com.yfd.platform.qgc_base.mapper.SdWtBHMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; import com.yfd.platform.qgc_base.service.ISdWtBHService; -import com.yfd.platform.utils.CodeToNameMetadataBo; -import com.yfd.platform.utils.DataSourceRequestUtil; -import com.yfd.platform.utils.DictCodeToNameConverter; -import com.yfd.platform.utils.SecurityUtils; +import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -32,7 +31,8 @@ public class SdWtBHServiceImpl extends ServiceImpl impleme @Resource private DictCodeToNameConverter dictCodeToNameConverter; - + @Resource + private StcdUniqueValidator stcdUniqueValidator; /** * 代码转名称元数据配置列表(静态初始化) *

@@ -70,6 +70,11 @@ public class SdWtBHServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public boolean add(SdWtBH entity, String source) { + if (entity == null || StrUtil.isBlank(entity.getStcd())) { + throw new BizException("站点编码不能为空"); + } + // 检查 STCD 在 V_MS_STBPRP_T 视图中是否已存在 + stcdUniqueValidator.throwIfExists(entity.getStcd()); boolean result = this.save(entity); if (result) { dictCodeToNameConverter.convertCodeToName(entity, CODE_TO_NAME_META_LIST); diff --git a/backend/src/main/java/com/yfd/platform/utils/StcdUniqueValidator.java b/backend/src/main/java/com/yfd/platform/utils/StcdUniqueValidator.java new file mode 100644 index 00000000..203736f4 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/utils/StcdUniqueValidator.java @@ -0,0 +1,56 @@ +package com.yfd.platform.utils; + +import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.common.exception.BizException; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * STCD 唯一性校验组件,通过 V_MS_STBPRP_T 视图跨所有站点类型校验 + *

+ * 使用方式:注入即可 + *

+ * {@code @Resource private StcdUniqueValidator stcdUniqueValidator;}
+ * {@code stcdUniqueValidator.throwIfExists(stcd);}
+ * 
+ */ +@Component +public class StcdUniqueValidator { + + @Resource + private MicroservicDynamicSQLMapper microservicDynamicSQLMapper; + + /** + * 校验 STCD 是否已在 V_MS_STBPRP_T 视图中存在,存在则抛异常 + * + * @param stcd 站点编码 + * @throws BizException 站点编码已存在时抛出 + */ + public void throwIfExists(String stcd) { + if (exists(stcd)) { + throw new BizException("当前站点编码已存在"); + } + } + + /** + * 检查 STCD 是否已在 V_MS_STBPRP_T 视图中存在 + * + * @param stcd 站点编码 + * @return true=已存在 + */ + public boolean exists(String stcd) { + String sql = "SELECT COUNT(1) AS cnt FROM V_MS_STBPRP_T WHERE STCD = #{map.stcd}"; + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + List> result = microservicDynamicSQLMapper.getAllList(sql, paramMap); + if (result != null && !result.isEmpty()) { + Object cntObj = result.get(0).get("CNT"); + return cntObj != null && Long.parseLong(cntObj.toString()) > 0; + } + return false; + } +}