From 8d970b35f17574046f1152df7de231c6a77ab4ba Mon Sep 17 00:00:00 2001 From: 王彪总 Date: Fri, 29 May 2026 17:14:41 +0800 Subject: [PATCH] feat(garden): 添加GIS道路管理和坐标转换功能 --- urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/problemtype/GardenProblemTypeMapper.java | 15 +++++++++++++++ urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java | 1 + urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java | 12 ++++++++++++ 3 files changed, 28 insertions(+), 0 deletions(-) diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/problemtype/GardenProblemTypeMapper.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/problemtype/GardenProblemTypeMapper.java index 8805a5a..7b008cb 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/problemtype/GardenProblemTypeMapper.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/dal/mysql/problemtype/GardenProblemTypeMapper.java @@ -63,12 +63,27 @@ public interface GardenProblemTypeMapper extends BaseMapperX() + .eq(GardenProblemTypeDO::getTypeName, typeName) + .eq(GardenProblemTypeDO::getParentCode, parentCode) + .eq(GardenProblemTypeDO::getLevel, level) + .last("LIMIT 1")); + } + + /** * 生成下一个编码:父级编码 + 5位递增序号 * 如 parentCode=BIZ_GARDEN → BIZ_GARDEN00001, BIZ_GARDEN00002 + * 注意:加 LENGTH 条件避免匹配到子级编码(如 yl0000100001 干扰 yl 下的二级编码) */ default String generateNextCode(String parentCode) { + int expectedLength = parentCode.length() + 5; List list = selectList(new LambdaQueryWrapperX() .likeRight(GardenProblemTypeDO::getTypeCode, parentCode) + .apply("LENGTH(type_code) = {0}", expectedLength) .orderByDesc(GardenProblemTypeDO::getTypeCode) .last("LIMIT 1")); if (list == null || list.isEmpty()) { diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java index e03d6ba..a7f3906 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/enums/ErrorCodeConstants.java @@ -150,6 +150,7 @@ public interface ErrorCodeConstants { // ========== 问题类型配置 1-100-009-000 ========== ErrorCode PROBLEM_TYPE_NOT_EXISTS = new ErrorCode(1100009000, "问题类型不存在"); ErrorCode PROBLEM_TYPE_CODE_EXISTS = new ErrorCode(1100009001, "问题类型编码已存在"); + ErrorCode PROBLEM_TYPE_NAME_DUPLICATE = new ErrorCode(1100009002, "同级下问题类型名称已存在,一级、二级、三级类型名称不能同时重复"); // ========== 一树一档案巡检与风险评估 1-100-008-000 ========== ErrorCode TREE_INSPECTION_NOT_EXISTS = new ErrorCode(1100008001, "巡检评估记录不存在"); diff --git a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java index f9edb4c..23cd519 100644 --- a/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java +++ b/urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/problemtype/GardenProblemTypeServiceImpl.java @@ -43,6 +43,9 @@ public class GardenProblemTypeServiceImpl implements GardenProblemTypeService { public Long createProblemType(ProblemTypeSaveReqVO createReqVO) { // 校验编码唯一性 validateTypeCodeUnique(createReqVO.getTypeCode(), null); + // 校验名称在同级父节点下唯一 + validateTypeNameUniqueUnderParent(createReqVO.getTypeName(), + createReqVO.getParentCode(), createReqVO.getLevel(), null); // 插入 GardenProblemTypeDO problemType = BeanUtils.toBean(createReqVO, GardenProblemTypeDO.class); gardenProblemTypeMapper.insert(problemType); @@ -81,6 +84,15 @@ public class GardenProblemTypeServiceImpl implements GardenProblemTypeService { } } + private void validateTypeNameUniqueUnderParent(String typeName, String parentCode, + Integer level, Long excludeId) { + GardenProblemTypeDO exist = gardenProblemTypeMapper.selectByNameAndParentAndLevel( + typeName, parentCode, level); + if (exist != null && (excludeId == null || !exist.getId().equals(excludeId))) { + throw exception(PROBLEM_TYPE_NAME_DUPLICATE); + } + } + @Override public GardenProblemTypeDO getProblemType(Long id) { return gardenProblemTypeMapper.selectById(id); -- libgit2 0.21.4