From 95d6ce997b2460af99e00825f54f932f099c2f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Sun, 24 Aug 2025 18:44:30 +0800 Subject: [PATCH] =?UTF-8?q?feat=20(farm):=20=E7=89=A9=E7=A7=8D=E5=BA=93?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 物种库 三级联动,返回物种生命周期字段 --- .../controller/admin/dict/DictController.java | 5 ++++- .../dict/vo/SpeciesClassifyLibraryRespVO.java | 8 ++++++++ .../specieslibrary/SpeciesLibraryService.java | 7 +++++++ .../SpeciesLibraryServiceImpl.java | 13 +++++++++++++ .../module/farm/utils/TreeStructureUtil.java | 18 ++++++++---------- 5 files changed, 40 insertions(+), 11 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 f9102f60..9c968701 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 @@ -52,6 +52,7 @@ import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -291,10 +292,12 @@ public class DictController { @GetMapping("/list/three-library") public CommonResult> getTreeLibraryList() { try { + // 获取物种生命周期 + Map lifeCycMap = speciesLibraryService.getSpeciesLibraryForLifeCycMap(); // 获取物种类别字典数据 List dictList = sysDictService.getByTypeCode(CommonConstants.DICT_TYPE_CODE_3); // 使用工具类构建树结构 - List threeList = TreeStructureUtil.buildSpeciesClassifyTree(dictList); + List threeList = TreeStructureUtil.buildSpeciesClassifyTree(dictList,lifeCycMap); return success(threeList); } catch (Exception e) { log.error("获取三级物种类别列表失败", e); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/vo/SpeciesClassifyLibraryRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/vo/SpeciesClassifyLibraryRespVO.java index 4157d3e2..3a87e1a1 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/vo/SpeciesClassifyLibraryRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/dict/vo/SpeciesClassifyLibraryRespVO.java @@ -21,6 +21,8 @@ public class SpeciesClassifyLibraryRespVO { private String speciesClassCode; @Schema(description = "一级分类-名称") private String speciesClassName; + @Schema(description = "生命周期") + private String lifeCycle; private List children; @@ -28,4 +30,10 @@ public class SpeciesClassifyLibraryRespVO { this.speciesClassCode = speciesClassCode; this.speciesClassName = speciesClassName; } + + public SpeciesClassifyLibraryRespVO(String speciesClassCode, String speciesClassName, String lifeCycle) { + this.speciesClassCode = speciesClassCode; + this.speciesClassName = speciesClassName; + this.lifeCycle = lifeCycle; + } } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java index 4b156575..091c2dcc 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/specieslibrary/SpeciesLibraryService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibrary import jakarta.validation.Valid; import java.util.List; +import java.util.Map; /** * 物种库维护 Service 接口 @@ -60,4 +61,10 @@ public interface SpeciesLibraryService { */ PageResult getSpeciesLibraryPage(SpeciesLibraryPageReqVO pageReqVO); + /** + * 物种名称与生命周期 + * @return + */ + Map getSpeciesLibraryForLifeCycMap(); + } \ No newline at end of file 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 987f113d..210a3336 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 @@ -18,6 +18,8 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.util.List; +import java.util.Map; +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; @@ -182,4 +184,15 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { return pageResult; } + @Override + public Map getSpeciesLibraryForLifeCycMap() { + + List list = speciesLibraryMapper.selectList(); + return list.stream().collect(Collectors.toMap( + SpeciesLibraryDO::getCultivarName, + e -> String.valueOf(e.getLifeCycle()), + (v1, v2) -> v1 + )); + + } } \ 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 9208cf9a..4113bb62 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 @@ -1,7 +1,6 @@ package cn.iocoder.yudao.module.farm.utils; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO; -import cn.iocoder.yudao.module.farm.dal.dataobject.speciesclassifylibrary.SpeciesClassifyLibraryDO; import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO; import java.util.*; @@ -22,7 +21,7 @@ public class TreeStructureUtil { * @param dictList 字典数据列表 * @return 树形结构列表 */ - public static List buildSpeciesClassifyTree(List dictList) { + public static List buildSpeciesClassifyTree(List dictList, Map lifeCycMap) { if (dictList == null || dictList.isEmpty()) { return new ArrayList<>(); } @@ -38,7 +37,7 @@ public class TreeStructureUtil { // 构建三级树形结构 return groupedByLevel1.entrySet().stream() - .map(entry -> buildLevel1Node(entry.getKey(), entry.getValue(), dictList)) + .map(entry -> buildLevel1Node(entry.getKey(), entry.getValue(), dictList,lifeCycMap)) .filter(Objects::nonNull) .sorted(Comparator.comparing(SpeciesClassifyLibraryRespVO::getSpeciesClassName)) .collect(Collectors.toList()); @@ -168,7 +167,8 @@ public class TreeStructureUtil { /** * 构建一级节点(包含二级和三级) */ - private static SpeciesClassifyLibraryRespVO buildLevel1Node(String level1Code, List level1Children, List allDictList) { + private static SpeciesClassifyLibraryRespVO buildLevel1Node(String level1Code, List level1Children, + List allDictList,Map lifeCycMap) { if (level1Children == null || level1Children.isEmpty()) { return null; } @@ -197,7 +197,7 @@ public class TreeStructureUtil { // 构建二级节点列表 List level2Nodes = groupedByLevel2.entrySet().stream() - .map(entry -> buildLevel2Node(entry.getKey(), entry.getValue(), allDictList)) + .map(entry -> buildLevel2Node(entry.getKey(), entry.getValue(), allDictList,lifeCycMap)) .filter(Objects::nonNull) .sorted(Comparator.comparing(SpeciesClassifyLibraryRespVO::getSpeciesClassName)) .collect(Collectors.toList()); @@ -209,7 +209,8 @@ public class TreeStructureUtil { /** * 构建二级节点(包含三级) */ - private static SpeciesClassifyLibraryRespVO buildLevel2Node(String level2Code, List level2Children, List allDictList) { + private static SpeciesClassifyLibraryRespVO buildLevel2Node(String level2Code, List level2Children, + List allDictList,Map lifeCycMap) { if (level2Children == null || level2Children.isEmpty()) { return null; } @@ -232,10 +233,7 @@ public class TreeStructureUtil { List level3Nodes = allDictList.stream() .filter(dict -> isValidLevel3Node(dict) && level2Code.equals(dict.getField2Code())) - .map(dict -> new SpeciesClassifyLibraryRespVO( - dict.getField3Code(), - dict.getField3Name() - )) + .map(dict -> new SpeciesClassifyLibraryRespVO(dict.getField3Code(), dict.getField3Name(),lifeCycMap.get(dict.getField3Name()))) .sorted(Comparator.comparing(SpeciesClassifyLibraryRespVO::getSpeciesClassName)) .collect(Collectors.toList());