From 3b354155a33f34daa4fda695c6c4ac0f0686306c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A1=BE=E5=90=9B=E7=A6=B9?= <2673609096@qq.com> Date: Sat, 23 Aug 2025 22:22:19 +0800 Subject: [PATCH] =?UTF-8?q?farm=E6=A8=A1=E5=9D=97-=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=B8=89=E7=BA=A7=E6=A0=91=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/dict/DictController.java | 27 ++++-- .../ModelManagementController.java | 6 ++ .../ModelManagementService.java | 1 + .../ModelManagementServiceImpl.java | 6 ++ .../module/farm/utils/TreeStructureUtil.java | 91 +++++++++++++++++++ 5 files changed, 125 insertions(+), 6 deletions(-) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java index 1c1ec9fe..fa2d0e0f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/DictController.java @@ -280,17 +280,32 @@ public class DictController { return success(BeanUtils.toBean(res, FarmingTypeRespVO.class)); } - @Operation(summary = "字典数据维护-下拉框列表-物种类别") - @GetMapping("/list/species-classify-library") - public CommonResult> getSpeciesClassifyLibraryList() { + @Operation(summary = "字典数据维护-下拉框列表-三级物种类别") + @GetMapping("/list/three-library") + public CommonResult> getTreeLibraryList() { try { // 获取物种类别字典数据 List dictList = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_3); // 使用工具类构建树结构 - List treeList = TreeStructureUtil.buildSpeciesClassifyTree(dictList); - return success(treeList); + List threeList = TreeStructureUtil.buildSpeciesClassifyTree(dictList); + return success(threeList); } catch (Exception e) { - log.error("获取物种类别列表失败", e); + log.error("获取三级物种类别列表失败", e); + return success(new ArrayList<>()); + } + } + + @Operation(summary = "字典数据维护-下拉框列表-二级物种类别") + @GetMapping("/list/two-library") + public CommonResult> getTwoLibraryList() { + try { + // 获取物种类别字典数据 + List dictList = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_3); + // 使用工具类构建二级树结构 + List twoList = TreeStructureUtil.buildTwoLevelTree(dictList); + return success(twoList); + } catch (Exception e) { + log.error("获取二级物种类别列表失败", e); return success(new ArrayList<>()); } } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java index 55bdfc59..2828e065 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/modelmanagement/ModelManagementController.java @@ -41,6 +41,12 @@ public class ModelManagementController { return success(modelManagementService.createModelManagement(createReqVO)); } + @PostMapping("/copyModel") + @Operation(summary = "复制模型管理") + public CommonResult copyModelManagement(@Valid @RequestBody ModelManagementSaveReqVO createReqVO) { + return success(modelManagementService.copyModelManagement(createReqVO)); + } + @PutMapping("/update") @Operation(summary = "更新模型管理") public CommonResult updateModelManagement(@Valid @RequestBody ModelManagementSaveReqVO updateReqVO) { diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementService.java index 4334edec..25e35ff8 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/modelmanagement/ModelManagementService.java @@ -62,4 +62,5 @@ public interface ModelManagementService { */ PageResult getModelManagementPage(ModelManagementPageReqVO pageReqVO); + String copyModelManagement(@Valid ModelManagementSaveReqVO createReqVO); } \ No newline at end of file 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 d48fc26c..23f97a7d 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 @@ -218,4 +218,10 @@ public class ModelManagementServiceImpl implements ModelManagementService { return modelManagementMapper.selectPage(pageReqVO); } + @Override + public String copyModelManagement(ModelManagementSaveReqVO createReqVO) { +// createModelManagementCase(createReqVO.getId()); + return ""; + } + } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/utils/TreeStructureUtil.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/utils/TreeStructureUtil.java index cee152ef..9208cf9a 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/utils/TreeStructureUtil.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/utils/TreeStructureUtil.java @@ -49,6 +49,39 @@ public class TreeStructureUtil { } } + /** + * 构建物种类别二级树结构 + * + * @param dictList 字典数据列表 + * @return 二级树形结构列表 + */ + public static List buildTwoLevelTree(List dictList) { + if (dictList == null || dictList.isEmpty()) { + return new ArrayList<>(); + } + + try { + // 按一级分类分组 + Map> groupedByLevel1 = dictList.stream() + .filter(dict -> isValidLevel1Node(dict)) + .collect(Collectors.groupingBy( + SysDictDO::getField1Code, + Collectors.toList() + )); + + // 构建二级树形结构 + return groupedByLevel1.entrySet().stream() + .map(entry -> buildTwoLevelNode(entry.getKey(), entry.getValue())) + .filter(Objects::nonNull) + .sorted(Comparator.comparing(SpeciesClassifyLibraryRespVO::getSpeciesClassName)) + .collect(Collectors.toList()); + + } catch (Exception e) { + // 记录错误日志,返回空列表 + return new ArrayList<>(); + } + } + /** * 构建通用树结构 * @@ -209,4 +242,62 @@ public class TreeStructureUtil { level2Node.setChildren(level3Nodes); return level2Node; } + + /** + * 构建二级树节点(只包含一级和二级,不包含三级) + */ + private static SpeciesClassifyLibraryRespVO buildTwoLevelNode(String level1Code, List level1Children) { + if (level1Children == null || level1Children.isEmpty()) { + return null; + } + + // 获取一级分类名称 + String level1Name = level1Children.stream() + .filter(TreeStructureUtil::isValidLevel1Node) + .map(SysDictDO::getField1Name) + .findFirst() + .orElse(""); + + if (level1Name.isEmpty()) { + return null; + } + + // 创建一级节点 + SpeciesClassifyLibraryRespVO level1Node = new SpeciesClassifyLibraryRespVO(level1Code, level1Name); + + // 按二级分类分组 + Map> groupedByLevel2 = level1Children.stream() + .filter(dict -> isValidLevel2Node(dict)) + .collect(Collectors.groupingBy( + SysDictDO::getField2Code, + Collectors.toList() + )); + + // 构建二级节点列表(不包含三级) + List level2Nodes = groupedByLevel2.entrySet().stream() + .map(entry -> { + String level2Code = entry.getKey(); + List level2Children = entry.getValue(); + + // 获取二级分类名称 + String level2Name = level2Children.stream() + .filter(TreeStructureUtil::isValidLevel2Node) + .map(SysDictDO::getField2Name) + .findFirst() + .orElse(""); + + if (level2Name.isEmpty()) { + return null; + } + + // 创建二级节点(不设置children,即不包含三级分类) + return new SpeciesClassifyLibraryRespVO(level2Code, level2Name); + }) + .filter(Objects::nonNull) + .sorted(Comparator.comparing(SpeciesClassifyLibraryRespVO::getSpeciesClassName)) + .collect(Collectors.toList()); + + level1Node.setChildren(level2Nodes); + return level1Node; + } }