diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/EnvironmentIndexConfigController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/EnvironmentIndexConfigController.java index d83048fe..5135aaf3 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/EnvironmentIndexConfigController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/environmentindexconfig/EnvironmentIndexConfigController.java @@ -55,10 +55,10 @@ public class EnvironmentIndexConfigController { return success(true); } - @DeleteMapping("/delete") + @DeleteMapping("/delete/{id}") @Operation(summary = "删除环境指标配置") @Parameter(name = "id", description = "编号", required = true) - public CommonResult deleteEnvironmentIndexConfig(@RequestParam("id") String id) { + public CommonResult deleteEnvironmentIndexConfig(@PathVariable("id") String id) { environmentIndexConfigService.deleteEnvironmentIndexConfig(id); return success(true); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/ProductionPlanController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/ProductionPlanController.java index 611a8297..7f0c11d2 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/ProductionPlanController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/productionplan/ProductionPlanController.java @@ -84,7 +84,6 @@ public class ProductionPlanController { @GetMapping("/page") @Operation(summary = "获得种植中心-生产计划-生产计划分页") - public CommonResult> getProductionPlanPage(@Valid ProductionPlanPageReqVO pageReqVO) { PageResult pageResult = productionPlanService.getProductionPlanPage(pageReqVO); return success(BeanUtils.toBean(pageResult, ProductionPlanRespVO.class)); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java index 5380ab3f..81d90f68 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibraryRespVO.java @@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.LocalDateTime; +import java.util.List; + import cn.idev.excel.annotation.*; @Schema(description = "管理后台 - 物种库维护 Response VO") @@ -17,7 +19,7 @@ public class SpeciesLibraryRespVO { @Schema(description = "物种类别") @ExcelProperty("物种类别") - private String category; + private Long category; @Schema(description = "物种类别名称", example = "芋艿") @ExcelProperty("物种类别名称") @@ -38,6 +40,7 @@ public class SpeciesLibraryRespVO { @Schema(description = "图片") @ExcelProperty("图片") private String image; + private List imageList; @Schema(description = "0=启用,1=停用", example = "1") @ExcelProperty("0=启用,1=停用") diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibrarySaveReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibrarySaveReqVO.java index 6ff88248..0229762b 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibrarySaveReqVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesLibrarySaveReqVO.java @@ -3,6 +3,8 @@ package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import java.util.List; + @Schema(description = "管理后台 - 物种库维护新增/修改 Request VO") @Data public class SpeciesLibrarySaveReqVO { @@ -27,6 +29,7 @@ public class SpeciesLibrarySaveReqVO { @Schema(description = "图片") private String image; + private List imageList; @Schema(description = "0=启用,1=停用", example = "1") private Integer useStatus; diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/traceabilitycode/vo/TraceabilityCodePageReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/traceabilitycode/vo/TraceabilityCodePageReqVO.java index ecb50931..7c166783 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/traceabilitycode/vo/TraceabilityCodePageReqVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/traceabilitycode/vo/TraceabilityCodePageReqVO.java @@ -35,7 +35,7 @@ public class TraceabilityCodePageReqVO extends PageParam { private String tenantId; @Schema(description = "采收时间") - private String harvestDate; + private String[] harvestDate; @Schema(description = "采收时间范围查询-开始时间") @DateTimeFormat(pattern = "yyyy-MM-dd") diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/specieslibrary/SpeciesLibraryDO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/specieslibrary/SpeciesLibraryDO.java index 6bfe6aec..dc37372f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/specieslibrary/SpeciesLibraryDO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/dal/dataobject/specieslibrary/SpeciesLibraryDO.java @@ -31,7 +31,7 @@ public class SpeciesLibraryDO extends BaseDO { /** * 物种类别 */ - private String category; + private Long category; /** * 物种类别名称 */ diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/enums/ErrorCodeConstants.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/enums/ErrorCodeConstants.java index c3058ff4..84e1baa9 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/enums/ErrorCodeConstants.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/enums/ErrorCodeConstants.java @@ -118,6 +118,7 @@ public interface ErrorCodeConstants { ErrorCode TWO_DICT_NOT_EXISTS = new ErrorCode(1_050_035_000, "字典不存在"); ErrorCode PLOT_AREA_ERRORS = new ErrorCode(1_050_036_000, "地块面积总和大于基地面积"); + ErrorCode PLOT_AREA_EXISTS_ERRORS = new ErrorCode(1_050_036_001, "该基地下存在地块,不可删除"); ErrorCode INDICATOR_NAME_NOT_EXISTS = new ErrorCode(1_050_037_000, "指标名称不存在"); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/environmentindexconfig/EnvironmentIndexConfigServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/environmentindexconfig/EnvironmentIndexConfigServiceImpl.java index 0015f145..7994203d 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/environmentindexconfig/EnvironmentIndexConfigServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/environmentindexconfig/EnvironmentIndexConfigServiceImpl.java @@ -41,12 +41,13 @@ public class EnvironmentIndexConfigServiceImpl implements EnvironmentIndexConfig public String createEnvironmentIndexConfig(EnvironmentIndexConfigSaveReqVO createReqVO) { LoginUser user = getLoginUser(); // 物种类型 - SpeciesLibraryDO speciesLibraryDO = speciesLibraryMapper.selectOne("cultivar_name", createReqVO.getCultivarName()); + SpeciesLibraryDO speciesLibraryDO = speciesLibraryMapper.selectOne("id", createReqVO.getCultivarName()); // 插入 EnvironmentIndexConfigDO environmentIndexConfig = BeanUtils.toBean(createReqVO, EnvironmentIndexConfigDO.class); environmentIndexConfig.setId(IdUtil.fastUUID()); environmentIndexConfig.setTenantId(String.valueOf(user.getTenantId())); - environmentIndexConfig.setCultivarName(speciesLibraryDO.getSpeciesName()); + environmentIndexConfig.setCultivarName(speciesLibraryDO.getCultivarName()); + environmentIndexConfig.setSpeciesName(speciesLibraryDO.getSpeciesName()); environmentIndexConfigMapper.insert(environmentIndexConfig); // 返回 @@ -57,8 +58,11 @@ public class EnvironmentIndexConfigServiceImpl implements EnvironmentIndexConfig public void updateEnvironmentIndexConfig(EnvironmentIndexConfigSaveReqVO updateReqVO) { // 校验存在 validateEnvironmentIndexConfigExists(updateReqVO.getId()); + SpeciesLibraryDO speciesLibraryDO = speciesLibraryMapper.selectOne("id", updateReqVO.getCultivarName()); // 更新 EnvironmentIndexConfigDO updateObj = BeanUtils.toBean(updateReqVO, EnvironmentIndexConfigDO.class); + updateObj.setCultivarName(speciesLibraryDO.getCultivarName()); + updateObj.setSpeciesName(speciesLibraryDO.getSpeciesName()); environmentIndexConfigMapper.updateById(updateObj); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java index f555011f..7d6fd664 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementServiceImpl.java @@ -104,10 +104,11 @@ public class ModelManagementServiceImpl implements ModelManagementService { modelManagement.setSuitablePlantingAreasList(createReqVO.getSuitablePlantingAreas()); } // 处理speciesImage字段,优先使用图片集合 - if (createReqVO.getSpeciesImageList() != null && !createReqVO.getSpeciesImageList().isEmpty()) { - modelManagement.setSpeciesImageList(createReqVO.getSpeciesImageList()); + SpeciesLibraryDO libraryDO = speciesLibraryService.getSpeciesLibrary(createReqVO.getSpeciesId()); + if (libraryDO.getImageList() != null && !libraryDO.getImageList().isEmpty()) { + modelManagement.setSpeciesImageList(libraryDO.getImageList()); } else if (createReqVO.getSpeciesImage() != null) { - modelManagement.setSpeciesImage(createReqVO.getSpeciesImage()); + modelManagement.setSpeciesImageList(libraryDO.getImageList()); } modelManagementMapper.insert(modelManagement); @@ -228,12 +229,12 @@ public class ModelManagementServiceImpl implements ModelManagementService { } // 物种图片:支持清空(传空数组)与更新(传非空数组),其次支持单字符串 - if (updateReqVO.getSpeciesImageList() != null) { - existing.setSpeciesImageList(updateReqVO.getSpeciesImageList()); + SpeciesLibraryDO libraryDO = speciesLibraryService.getSpeciesLibrary(updateReqVO.getSpeciesId()); + if (libraryDO.getImageList() != null && !libraryDO.getImageList().isEmpty()) { + existing.setSpeciesImageList(libraryDO.getImageList()); } else if (updateReqVO.getSpeciesImage() != null) { - existing.setSpeciesImage(updateReqVO.getSpeciesImage()); + existing.setSpeciesImageList(libraryDO.getImageList()); } - // 允许切换发布状态仅通过专用接口,不在此处处理 isRelease/releaseTime modelManagementMapper.updateById(existing); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java index e26f4b7d..5ff46ac3 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoService.java @@ -76,4 +76,11 @@ public interface PlotInfoService { * @return */ Integer getPlotTotalCount(String tenantId); + + /** + * 基地下存在地块,则不可删除 + * @param id + * @return + */ + boolean validatePlotExistByBaseId(String id); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java index ec733027..e13f184f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/plotinfo/PlotInfoServiceImpl.java @@ -150,6 +150,12 @@ public class PlotInfoServiceImpl implements PlotInfoService { return count.intValue(); } + @Override + public boolean validatePlotExistByBaseId(String id) { + Long count = plotInfoMapper.selectCount("base_id", id); + return count <= 0; + } + /** * 验证: 地块总面积不得大于基地面积 * diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java index a7a19fd5..e9423f25 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryServiceImpl.java @@ -70,41 +70,22 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { speciesLibrary.setId(id); speciesLibrary.setTenantId(String.valueOf(user.getTenantId())); speciesLibrary.setCreateTime(LocalDateTime.now()); - TwoDictDO dictDO3 = twoDictService.getTwoDict(Long.valueOf(speciesLibrary.getCategory())); - TwoDictDO dictDO2 = twoDictService.getTwoDict(dictDO3.getParentId()); - if (dictDO2.getParentId() != null) { - TwoDictDO dictDO1 = twoDictService.getTwoDict(dictDO2.getParentId()); - speciesLibrary.setSpeciesName(dictDO1.getName() + "/" + dictDO2.getName() + "/" + dictDO3.getName()); +// TwoDictDO dictDO3 = twoDictService.getTwoDict(Long.valueOf(speciesLibrary.getCategory())); +// TwoDictDO dictDO2 = twoDictService.getTwoDict(dictDO3.getParentId()); +// if (dictDO2.getParentId() != null) { +// TwoDictDO dictDO1 = twoDictService.getTwoDict(dictDO2.getParentId()); +// speciesLibrary.setSpeciesName(dictDO1.getName() + "/" + dictDO2.getName() + "/" + dictDO3.getName()); +// } + String speciesName = twoDictService.appendToSpeciesName(String.valueOf(speciesLibrary.getCategory())); + speciesLibrary.setSpeciesName(speciesName); + for (String image : createReqVO.getImageList()) { + speciesLibrary.setImage(image); } speciesLibraryMapper.insert(speciesLibrary); // 返回 return speciesLibrary.getId(); } - private void syncCreateDict(String id) { - SpeciesLibraryDO aDo = speciesLibraryMapper.selectById(id); - String category = aDo.getCategory(); // 物种二级编号 - String cultivarName = aDo.getCultivarName(); // 物种三级名称 - - SysDictReqVO query = new SysDictReqVO(); - query.setDictTypeCode(DICT_TYPE_CODE_3); - query.setField2Code(category); - SysDictDO obj = sysDictService.selectDictByMaxField2Code(query); - - SysDictDO insertObj = new SysDictDO(); - insertObj.setDictTypeCode(DICT_TYPE_CODE_3); - insertObj.setDictTypeName("物种类别"); - insertObj.setField1Code(obj.getField1Code()); - insertObj.setField1Name(obj.getField1Name()); - insertObj.setField2Code(category); - insertObj.setField2Name(obj.getField2Name()); - insertObj.setField3Code(generate()); - insertObj.setField3Name(cultivarName); - insertObj.setStatus(CommonConstants.YES_CODE); - insertObj.setDeleted(false); - sysDictService.insertOne(insertObj); - } - @Override public void updateSpeciesLibrary(SpeciesLibrarySaveReqVO updateReqVO) { // 校验存在 @@ -124,38 +105,22 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { // 更新 SpeciesLibraryDO updateObj = BeanUtils.toBean(updateReqVO, SpeciesLibraryDO.class); - TwoDictDO dictDO3 = twoDictService.getTwoDict(Long.valueOf(updateObj.getCategory())); - TwoDictDO dictDO2 = twoDictService.getTwoDict(dictDO3.getParentId()); - if (dictDO2.getParentId() != null) { - TwoDictDO dictDO1 = twoDictService.getTwoDict(dictDO2.getParentId()); - updateObj.setSpeciesName(dictDO1.getName() + "/" + dictDO2.getName() + "/" + dictDO3.getName()); +// TwoDictDO dictDO3 = twoDictService.getTwoDict(Long.valueOf(updateObj.getCategory())); +// TwoDictDO dictDO2 = twoDictService.getTwoDict(dictDO3.getParentId()); +// if (dictDO2.getParentId() != null) { +// TwoDictDO dictDO1 = twoDictService.getTwoDict(dictDO2.getParentId()); +// updateObj.setSpeciesName(dictDO1.getName() + "/" + dictDO2.getName() + "/" + dictDO3.getName()); +// } + String speciesName = twoDictService.appendToSpeciesName(String.valueOf(updateObj.getCategory())); + updateObj.setSpeciesName(speciesName); + for (String image : updateObj.getImageList()) { + updateObj.setImage(image); } speciesLibraryMapper.updateById(updateObj); // 同步 // this.syncUpdateDict(updateObj.getId()); } - private void syncUpdateDict(String id) { - SpeciesLibraryDO aDo = speciesLibraryMapper.selectById(id); - String category = aDo.getCategory(); // 物种二级编号 - String cultivarName = aDo.getCultivarName(); // 物种三级名称 - - SysDictReqVO query = new SysDictReqVO(); - query.setDictTypeCode(DICT_TYPE_CODE_3); - query.setField2Code(category); - SysDictDO obj = sysDictService.selectDictByMaxField2Code(query); - - SysDictDO updateObj = new SysDictDO(); - updateObj.setId(Integer.valueOf(id)); - updateObj.setField1Code(obj.getField1Code()); - updateObj.setField1Name(obj.getField1Name()); - updateObj.setField2Code(category); - updateObj.setField2Name(obj.getField2Name()); - updateObj.setField3Code(obj.getField3Code()); - updateObj.setField3Name(cultivarName); - sysDictService.updateById(updateObj); - } - @Override public void deleteSpeciesLibrary(String id) { // 校验存在 @@ -165,23 +130,6 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { } - private void syncDeleteDict(String id) { - - SpeciesLibraryDO aDo = speciesLibraryMapper.selectById(id); - String category = aDo.getCategory(); // 物种二级编号 - - SysDictReqVO query = new SysDictReqVO(); - query.setDictTypeCode(DICT_TYPE_CODE_3); - query.setField2Code(category); - SysDictDO obj = sysDictService.selectDictByMaxField2Code(query); - - SysDictDO updateObj = new SysDictDO(); - updateObj.setId(obj.getId()); - updateObj.setDeleted(false); - sysDictService.updateById(obj); - - } - @Override public void deleteSpeciesLibraryListByIds(List ids) { // 删除 @@ -309,7 +257,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { .collect(Collectors.toList()); // 批量查询所有二级分类下的物种,避免 N+1 查询 - Map> categoryToSpeciesMap; + Map> categoryToSpeciesMap; if (level2Ids.isEmpty()) { categoryToSpeciesMap = java.util.Collections.emptyMap(); } else { @@ -321,8 +269,7 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { List allSpecies = speciesLibraryMapper.selectList(queryWrapper); // 按分类ID分组 - categoryToSpeciesMap = allSpecies.stream() - .collect(Collectors.groupingBy(SpeciesLibraryDO::getCategory)); + categoryToSpeciesMap = allSpecies.stream().collect(Collectors.groupingBy(SpeciesLibraryDO::getCategory)); } List result = new ArrayList<>(); @@ -848,4 +795,5 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { } return result; } + } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/twodict/TwoDictService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/twodict/TwoDictService.java index 1dc86c5b..27fb2936 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/twodict/TwoDictService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/twodict/TwoDictService.java @@ -66,4 +66,6 @@ public interface TwoDictService { */ List getTwoDictTree(); + String appendToSpeciesName(String id); + } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/twodict/TwoDictServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/twodict/TwoDictServiceImpl.java index 8b76c378..48018869 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/twodict/TwoDictServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/twodict/TwoDictServiceImpl.java @@ -13,9 +13,9 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; @@ -124,4 +124,47 @@ public class TwoDictServiceImpl implements TwoDictService { return treeList; } + + /** + * 物种名称id 反差其父类名称, 并使用/分割返回 + * @param id 最底层id + * @return 自上而下的 name 拼接, 通过"/"分割 + */ + public String appendToSpeciesName(String id) { + if (id == null || id.trim().isEmpty()) { + return ""; + } + + // 存储从底层到顶层的名称(后续会反转) + List nameList = new ArrayList<>(); + + // 获取当前节点信息 + TwoDictDO current = twoDictMapper.selectOne("id", id); + if (current == null) { + return ""; + } + + // 添加当前节点名称 + nameList.add(current.getName()); + + // 递归向上查找父节点 + Long parentId = current.getParentId(); + while (parentId != null) { + TwoDictDO parent = twoDictMapper.selectOne("id", parentId.toString()); + if (parent == null) { + break; + } + + nameList.add(parent.getName()); + parentId = parent.getParentId(); + } + + // 反转列表,使顺序变为从顶层到底层 + Collections.reverse(nameList); + + // 使用"/"拼接名称 + return String.join("/", nameList); + + } + } \ No newline at end of file