feat (farm): 物种三级列表与模型关联

- 新增接口
This commit is contained in:
达富斌
2025-08-27 15:35:09 +08:00
parent fa70ed39ee
commit 83a2828d0d
4 changed files with 87 additions and 4 deletions

View File

@@ -1,9 +1,6 @@
package cn.iocoder.yudao.module.farm.controller.admin.specieslibrary; 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.*;
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 org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
@@ -93,6 +90,12 @@ public class SpeciesLibraryController {
return success(speciesLibraryService.getSpeciesThreeLevelTree()); return success(speciesLibraryService.getSpeciesThreeLevelTree());
} }
@GetMapping("/tree-model")
@Operation(summary = "物种库三级树-模型(speciesName1->speciesName2->cultivarName->modelName)")
public CommonResult<List<SpeciesAndModelTreeRespVO>> getSpeciesAndModelTree() {
return success(speciesLibraryService.getSpeciesAndModelTree());
}
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出物种库维护 Excel") @Operation(summary = "导出物种库维护 Excel")
@ApiAccessLog(operateType = EXPORT) @ApiAccessLog(operateType = EXPORT)

View File

@@ -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<SpeciesAndModelTreeRespVO> children;
@Schema(description = "模型版本")
private List<ModelInfoRespVO> models;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class ModelInfoRespVO{
private String id;
private String name;
private String harvest;
}
}

View File

@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.farm.service.specieslibrary; package cn.iocoder.yudao.module.farm.service.specieslibrary;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.SpeciesLibraryPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO; 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.SpeciesThreeLevelTreeRespVO;
@@ -73,4 +74,9 @@ public interface SpeciesLibraryService {
*/ */
List<SpeciesThreeLevelTreeRespVO> getSpeciesThreeLevelTree(); List<SpeciesThreeLevelTreeRespVO> getSpeciesThreeLevelTree();
/**
* 物种与模型
* @return
*/
List<SpeciesAndModelTreeRespVO> getSpeciesAndModelTree();
} }

View File

@@ -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.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.SysDictReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictThreeLvRespVO; 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.SpeciesLibraryPageReqVO;
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibrarySaveReqVO; 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.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.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.specieslibrary.SpeciesLibraryMapper;
import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO; import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO;
import cn.iocoder.yudao.module.farm.enums.CommonConstants; import cn.iocoder.yudao.module.farm.enums.CommonConstants;
import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService; import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -43,6 +47,8 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
private SpeciesLibraryMapper speciesLibraryMapper; private SpeciesLibraryMapper speciesLibraryMapper;
@Resource @Resource
private SysDictService sysDictService; private SysDictService sysDictService;
@Resource
private ModelManagementMapper modelManagementMapper;
@Override @Override
@@ -263,4 +269,37 @@ public class SpeciesLibraryServiceImpl implements SpeciesLibraryService {
} }
return ""; return "";
} }
@Override
public List<SpeciesAndModelTreeRespVO> getSpeciesAndModelTree() {
List<SpeciesThreeLevelTreeRespVO> sourceTree = this.getSpeciesThreeLevelTree();
List<SpeciesAndModelTreeRespVO> targetTree = BeanUtils.toBean(sourceTree, SpeciesAndModelTreeRespVO.class);
this.loopTree(targetTree);
return targetTree;
}
private void loopTree(List<SpeciesAndModelTreeRespVO> 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<SpeciesAndModelTreeRespVO.ModelInfoRespVO> getModelList(String speciesId) {
LambdaQueryWrapper<ModelManagementDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(ModelManagementDO::getTenantId, getLoginUser().getTenantId());
lambdaQueryWrapper.eq(ModelManagementDO::getType, CommonConstants.MODEL_TYPE_1);
lambdaQueryWrapper.eq(ModelManagementDO::getSpeciesId, speciesId);
List<ModelManagementDO> modelList = modelManagementMapper.selectList(lambdaQueryWrapper);
return modelList.stream()
.map(e -> new SpeciesAndModelTreeRespVO.ModelInfoRespVO(e.getId(), e.getModelName(), e.getHarvest()))
.collect(Collectors.toList());
}
} }