diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java index 56fc8b94..a4101905 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/SpeciesLibraryController.java @@ -1,9 +1,6 @@ package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary; -import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryRespVO; -import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO; -import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesThreeLevelTreeRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.*; import org.springframework.web.bind.annotation.*; import jakarta.validation.Valid; import jakarta.servlet.http.HttpServletResponse; @@ -93,6 +90,12 @@ public class SpeciesLibraryController { return success(speciesLibraryService.getSpeciesThreeLevelTree()); } + @GetMapping("/tree-model") + @Operation(summary = "物种库三级树-模型(speciesName1->speciesName2->cultivarName->modelName)") + public CommonResult> getSpeciesAndModelTree() { + return success(speciesLibraryService.getSpeciesAndModelTree()); + } + @GetMapping("/export-excel") @Operation(summary = "导出物种库维护 Excel") @ApiAccessLog(operateType = EXPORT) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesAndModelTreeRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesAndModelTreeRespVO.java new file mode 100644 index 00000000..539cb69a --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/specieslibrary/vo/SpeciesAndModelTreeRespVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +public class SpeciesAndModelTreeRespVO { + + @Schema(description = "节点名称") + private String name; + + @Schema(description = "节点ID(叶子为品种ID,非叶子为空)") + private String id; + + @Schema(description = "子节点") + private List children; + + @Schema(description = "模型版本") + private List models; + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class ModelInfoRespVO{ + private String id; + private String name; + private String harvest; + } +} + + 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 b71f26b8..4d54dae7 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 @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.farm.service.specieslibrary; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesAndModelTreeRespVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesThreeLevelTreeRespVO; @@ -73,4 +74,9 @@ public interface SpeciesLibraryService { */ List getSpeciesThreeLevelTree(); + /** + * 物种与模型 + * @return + */ + List getSpeciesAndModelTree(); } \ 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 08f55047..bc1b2842 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 @@ -6,14 +6,18 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictThreeLvRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesAndModelTreeRespVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesThreeLevelTreeRespVO; +import cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement.ModelManagementDO; import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO; +import cn.iocoder.yudao.module.farm.dal.mysql.modelmanagement.ModelManagementMapper; import cn.iocoder.yudao.module.farm.dal.mysql.specieslibrary.SpeciesLibraryMapper; import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO; import cn.iocoder.yudao.module.farm.enums.CommonConstants; import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import jakarta.annotation.Resource; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; @@ -43,6 +47,8 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { private SpeciesLibraryMapper speciesLibraryMapper; @Resource private SysDictService sysDictService; + @Resource + private ModelManagementMapper modelManagementMapper; @Override @@ -263,4 +269,37 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService { } return ""; } + + @Override + public List getSpeciesAndModelTree() { + List sourceTree = this.getSpeciesThreeLevelTree(); + List targetTree = BeanUtils.toBean(sourceTree, SpeciesAndModelTreeRespVO.class); + this.loopTree(targetTree); + return targetTree; + } + + private void loopTree(List targetTree) { + for (SpeciesAndModelTreeRespVO obj : targetTree) { + if (obj.getChildren() == null || obj.getChildren().isEmpty()) { + // 叶子节点:通过ID获取模型数据 + obj.setModels(this.getModelList(obj.getId())); + } else { + // 非叶子节点:递归处理子节点 + this.loopTree(obj.getChildren()); + } + } + } + + private List getModelList(String speciesId) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ModelManagementDO::getTenantId, getLoginUser().getTenantId()); + lambdaQueryWrapper.eq(ModelManagementDO::getType, CommonConstants.MODEL_TYPE_1); + lambdaQueryWrapper.eq(ModelManagementDO::getSpeciesId, speciesId); + List modelList = modelManagementMapper.selectList(lambdaQueryWrapper); + + return modelList.stream() + .map(e -> new SpeciesAndModelTreeRespVO.ModelInfoRespVO(e.getId(), e.getModelName(), e.getHarvest())) + .collect(Collectors.toList()); + + } } \ No newline at end of file