feat (farm): 物种三级列表与模型关联
- 新增接口
This commit is contained in:
@@ -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<List<SpeciesAndModelTreeRespVO>> getSpeciesAndModelTree() {
|
||||
return success(speciesLibraryService.getSpeciesAndModelTree());
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出物种库维护 Excel")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<SpeciesThreeLevelTreeRespVO> getSpeciesThreeLevelTree();
|
||||
|
||||
/**
|
||||
* 物种与模型
|
||||
* @return
|
||||
*/
|
||||
List<SpeciesAndModelTreeRespVO> getSpeciesAndModelTree();
|
||||
}
|
||||
@@ -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<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());
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user