diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/BaseInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/BaseInfoController.java index a9f7bc84..a3130e92 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/BaseInfoController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/BaseInfoController.java @@ -97,11 +97,4 @@ public class BaseInfoController { BeanUtils.toBean(list, BaseInfoRespVO.class)); } - @GetMapping("/get/baser-name-list") - @Operation(summary = "获得基地名称-下拉列表") - public CommonResult> getBaseNameList() { - List res = baseInfoService.getBaseNameList(); - return success(res); - } - } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseNamePlanRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseNamePlanRespVO.java new file mode 100644 index 00000000..aeea5367 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseNamePlanRespVO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +/** + * @description: 基地,地块,计划 + * @author: binda + * @date: 2025/8/21 21:47 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BaseNamePlanRespVO { + + @Schema(description = "基地id") + private String id; + @Schema(description = "基地名称") + private String name; + private List children; + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class PlotInfoVO { + @Schema(description = "地块ID") + private String plotId; + @Schema(description = "地块名称") + private String plotName; + private List children; + } + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class PlanInfoVO { + @Schema(description = "计划编号") + private String planNumber; + @JsonFormat(pattern = "yyyy-MM-dd") + @Schema(description = "排产开始日期") + private LocalDate productionStartDate; + @JsonFormat(pattern = "yyyy-MM-dd") + @Schema(description = "排产结束日期") + private LocalDate productionEndDate; + } + +} 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 d9967ad6..5bec5aec 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 @@ -3,6 +3,9 @@ package cn.iocoder.yudao.module.farm.controller.admin.dict; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNamePlanRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNameRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.*; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.CommonDictRespVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.FarmingTypeRespVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO; @@ -29,18 +32,21 @@ import cn.iocoder.yudao.module.farm.dal.dataobject.farmingtypemaintenance.Farmin import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputLibraryDO; import cn.iocoder.yudao.module.farm.dal.dataobject.specieslibrary.SpeciesLibraryDO; 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.baseinfo.BaseInfoService; import cn.iocoder.yudao.module.farm.service.disasterdata.DisasterDataService; import cn.iocoder.yudao.module.farm.service.farmingnamemaintenance.FarmingNameMaintenanceService; import cn.iocoder.yudao.module.farm.service.farmingtypemaintenance.FarmingTypeMaintenanceService; import cn.iocoder.yudao.module.farm.service.inputlibrary.InputLibraryService; +import cn.iocoder.yudao.module.farm.service.productionplan.ProductionPlanService; import cn.iocoder.yudao.module.farm.service.speciesclassifylibrary.SpeciesClassifyLibraryService; import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService; import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService; import cn.iocoder.yudao.module.farm.utils.TreeStructureUtil; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import org.redisson.misc.Hash; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import lombok.extern.slf4j.Slf4j; @@ -50,6 +56,7 @@ import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import java.util.*; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -71,22 +78,22 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Slf4j public class DictController { - private final FarmingTypeMaintenanceService farmingTypeMaintenanceService; - private final FarmingNameMaintenanceService farmingNameMaintenanceService; private final SpeciesLibraryService speciesLibraryService; private final SpeciesClassifyLibraryService speciesClassifyLibraryService; private final InputLibraryService inputLibraryService; private final DisasterDataService disasterDataService; private final SysDictService sysDictService; + private final ProductionPlanService productionPlanService; + private final BaseInfoService baseInfoService; - public DictController(FarmingTypeMaintenanceService farmingTypeMaintenanceService, FarmingNameMaintenanceService farmingNameMaintenanceService, SpeciesLibraryService speciesLibraryService, SpeciesClassifyLibraryService speciesClassifyLibraryService, InputLibraryService inputLibraryService, DisasterDataService disasterDataService, SysDictService sysDictService) { - this.farmingTypeMaintenanceService = farmingTypeMaintenanceService; - this.farmingNameMaintenanceService = farmingNameMaintenanceService; + public DictController(SpeciesLibraryService speciesLibraryService, SpeciesClassifyLibraryService speciesClassifyLibraryService, InputLibraryService inputLibraryService, DisasterDataService disasterDataService, SysDictService sysDictService, ProductionPlanService productionPlanService, BaseInfoService baseInfoService) { this.speciesLibraryService = speciesLibraryService; this.speciesClassifyLibraryService = speciesClassifyLibraryService; this.inputLibraryService = inputLibraryService; this.disasterDataService = disasterDataService; this.sysDictService = sysDictService; + this.productionPlanService = productionPlanService; + this.baseInfoService = baseInfoService; } // 农事类型 @@ -290,6 +297,27 @@ public class DictController { log.error("获取物种类别列表失败", e); return success(new ArrayList<>()); } + return success(sysDictService.getSpeciesClassifyLibraryList()); + } + + @Operation(summary = "字典数据维护-下拉框列表-物种类别与模型") + @GetMapping("/list/species-classify-model") + public CommonResult> getSpeciesClassifyAndModelList(){ + return success(sysDictService.getSpeciesClassifyAndModelList()); + } + + @GetMapping("/list/base-name") + @Operation(summary = "字典数据维护-下拉框列表-基地,地块二级联动") + public CommonResult> getBaseNameList() { + List res = baseInfoService.getBaseNameList(); + return success(res); + } + + @GetMapping("/list/base-name-plan") + @Operation(summary = "字典数据维护-下拉框列表-基地,地块,任务三级联动") + public CommonResult> getBaseNameAndPlanList() { + List res = productionPlanService.getBaseNameAndPlanList(); + return success(res); } @Operation(summary = "字典数据维护-下拉框列表-通用字典分类查询") 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 43e368bc..4157d3e2 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 @@ -16,19 +16,16 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor public class SpeciesClassifyLibraryRespVO { - @Schema(description = "ID") - private String id; + @Schema(description = "一级分类-编码") - private String SpeciesClassCode; + private String speciesClassCode; @Schema(description = "一级分类-名称") - private String SpeciesClassName; - @Schema(description = "使用状态") - private String useStatus; + private String speciesClassName; private List children; public SpeciesClassifyLibraryRespVO(String speciesClassCode, String speciesClassName) { - SpeciesClassCode = speciesClassCode; - SpeciesClassName = speciesClassName; + this.speciesClassCode = speciesClassCode; + this.speciesClassName = speciesClassName; } } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoService.java index 151e5252..9c01a179 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoService.java @@ -64,7 +64,7 @@ public interface BaseInfoService { int getBaseCount(Long tenantId); /** - * 基地名称-下拉列表 + * 基地,地块-下拉列表(两级联动) * @return */ List getBaseNameList(); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanService.java index 163b3e2b..6f06e0b0 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanService.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.farm.service.productionplan; +import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNamePlanRespVO; import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanSaveReqVO; import cn.iocoder.yudao.module.farm.dal.dataobject.productionplan.ProductionPlanDO; @@ -67,5 +68,10 @@ public interface ProductionPlanService { */ PageResult getProductionPlanPage(ProductionPlanPageReqVO pageReqVO); + /** + * 基地,地块,计划 - 下拉列表(三级联动) + * @return + */ + List getBaseNameAndPlanList(); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanServiceImpl.java index 3e79157c..29751a80 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/productionplan/ProductionPlanServiceImpl.java @@ -2,8 +2,10 @@ package cn.iocoder.yudao.module.farm.service.productionplan; import cn.hutool.core.util.IdUtil; +import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNamePlanRespVO; import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.productionplan.vo.ProductionPlanSaveReqVO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -17,7 +19,10 @@ import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.module.farm.dal.mysql.productionplan.ProductionPlanMapper; +import java.util.ArrayList; 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; @@ -93,4 +98,62 @@ public class ProductionPlanServiceImpl implements ProductionPlanService { return null; } + @Override + public List getBaseNameAndPlanList() { + LoginUser user = getLoginUser(); + if (user == null) { + return new ArrayList<>(); + } + + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("tenant_id", user.getTenantId()); + List productionPlanDOS = productionPlanMapper.selectList(qw); + + // 按基地ID分组 + Map> baseGroup = productionPlanDOS.stream().collect(Collectors.groupingBy(ProductionPlanDO::getBaseId)); + + List result = new ArrayList<>(); + + for (Map.Entry> baseEntry : baseGroup.entrySet()) { + String baseId = baseEntry.getKey(); + List basePlans = baseEntry.getValue(); + + // 创建基地响应对象 + BaseNamePlanRespVO baseVO = new BaseNamePlanRespVO(); + baseVO.setId(baseId); + baseVO.setName(basePlans.get(0).getBaseName()); // 取第一个计划的基地名称 + baseVO.setChildren(new ArrayList<>()); + + // 按地块ID分组 + Map> plotGroup = basePlans.stream().collect(Collectors.groupingBy(ProductionPlanDO::getPlotId)); + + for (Map.Entry> plotEntry : plotGroup.entrySet()) { + String plotId = plotEntry.getKey(); + List plotPlans = plotEntry.getValue(); + + // 创建地块响应对象 + BaseNamePlanRespVO.PlotInfoVO plotVO = new BaseNamePlanRespVO.PlotInfoVO(); + plotVO.setPlotId(plotId); + plotVO.setPlotName(plotPlans.get(0).getPlotName()); // 取第一个计划的地块名称 + plotVO.setChildren(new ArrayList<>()); + + // 创建计划信息列表 + for (ProductionPlanDO plan : plotPlans) { + BaseNamePlanRespVO.PlanInfoVO planVO = new BaseNamePlanRespVO.PlanInfoVO(); + planVO.setPlanNumber(plan.getPlanNumber()); + planVO.setProductionStartDate(plan.getProductionStartDate()); + planVO.setProductionEndDate(plan.getProductionEndDate()); + plotVO.getChildren().add(planVO); + } + + baseVO.getChildren().add(plotVO); + } + + result.add(baseVO); + } + + return result; + + } + } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictService.java index 675129bf..dd15cfdd 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.farm.service.sysDict; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.FarmingNameMaintenancePageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.FarmingNameMaintenanceSaveReqVO; @@ -26,6 +27,9 @@ public interface SysDictService { PageResult selectDictByPage(SysDictPageReqVO reqVO); + List getSpeciesClassifyLibraryList(); + + List getSpeciesClassifyAndModelList(); /** * 农事类型 diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictServiceImpl.java index cced63a3..f6a9d929 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/sysDict/SysDictServiceImpl.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.farm.service.sysDict; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.security.core.LoginUser; +import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictReqVO; import cn.iocoder.yudao.module.farm.controller.admin.farmingnamemaintenance.vo.FarmingNameMaintenancePageReqVO; @@ -9,15 +11,21 @@ import cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance.vo.F import cn.iocoder.yudao.module.farm.controller.admin.farmingtypemaintenance.vo.FarmingTypeMaintenanceSaveReqVO; import cn.iocoder.yudao.module.farm.dal.dataobject.farmingnamemaintenance.FarmingNameMaintenanceDO; import cn.iocoder.yudao.module.farm.dal.dataobject.farmingtypemaintenance.FarmingTypeMaintenanceDO; +import cn.iocoder.yudao.module.farm.dal.dataobject.modelmanagement.ModelManagementDO; +import cn.iocoder.yudao.module.farm.dal.mysql.modelmanagement.ModelManagementMapper; import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictDO; import cn.iocoder.yudao.module.farm.dal.mysql.sysDict.SysDictMapper; +import cn.iocoder.yudao.module.farm.enums.CommonConstants; import cn.iocoder.yudao.module.farm.utils.StrHelperUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Service; -import java.util.List; +import java.util.*; +import java.util.function.Function; 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; import static cn.iocoder.yudao.module.farm.enums.ErrorCodeConstants.FARMING_TYPE_MAINTENANCE_NOT_EXISTS; /** @@ -33,9 +41,11 @@ public class SysDictServiceImpl implements SysDictService { private final SysDictMapper sysDictMapper; + private final ModelManagementMapper modelManagementMapper; - public SysDictServiceImpl(SysDictMapper sysDictMapper) { + public SysDictServiceImpl(SysDictMapper sysDictMapper, ModelManagementMapper modelManagementMapper) { this.sysDictMapper = sysDictMapper; + this.modelManagementMapper = modelManagementMapper; } @Override @@ -73,6 +83,117 @@ public class SysDictServiceImpl implements SysDictService { } } + @Override + public List getSpeciesClassifyLibraryList() { + return getSpeciesClassifyLibraryList(1); + } + + private List getSpeciesClassifyLibraryList2() { + return getSpeciesClassifyLibraryList(2); + } + + private List getSpeciesClassifyLibraryList(int level) { + List list = this.getByTypeCode(CommonConstants.DICT_TYPE_CODE_3); + + if (level == 1) { + // 一,二级联动 + return this.build(list, SysDictDO::getField1Code, SysDictDO::getField1Name, SysDictDO::getField2Code, SysDictDO::getField2Name, SysDictDO::getField1Code + ); + } else if (level == 2) { + // 二,三级联动 + return this.build(list, SysDictDO::getField2Code, SysDictDO::getField2Name, SysDictDO::getField3Code, SysDictDO::getField3Name, SysDictDO::getField2Code + ); + } else { + throw new IllegalArgumentException("Unsupported level: " + level); + } + + } + + private List build( + List list, + Function parentKeyExtractor, + Function parentValueExtractor, + Function childKeyExtractor, + Function childValueExtractor, + Function parentFilterExtractor) { + + // 获取父级映射(去重) + Map parentMap = list.stream() + .collect(Collectors.toMap( + parentKeyExtractor, + parentValueExtractor, + (existing, replacement) -> existing + )); + + List result = new ArrayList<>(); + + // 按父级代码分组,提前组织子级数据 + Map> groupedByParent = list.stream().collect(Collectors.groupingBy(parentFilterExtractor)); + + for (Map.Entry entry : parentMap.entrySet()) { + String parentKey = entry.getKey(); + SpeciesClassifyLibraryRespVO parentVO = new SpeciesClassifyLibraryRespVO(parentKey, entry.getValue()); + + // 获取该父级下的所有子项 + List childrenItems = groupedByParent.getOrDefault(parentKey, Collections.emptyList()); + + // 去重处理子项 + Map childMap = childrenItems.stream() + .filter(e -> childKeyExtractor.apply(e) != null && !childKeyExtractor.apply(e).isEmpty()) + .collect(Collectors.toMap( + childKeyExtractor, + childValueExtractor, + (existing, replacement) -> existing + )); + + // 构建子级VO列表 + List childList = childMap.entrySet().stream() + .map(childEntry -> new SpeciesClassifyLibraryRespVO(childEntry.getKey(), childEntry.getValue())) + .collect(Collectors.toList()); + + parentVO.setChildren(childList); + result.add(parentVO); + } + + return result; + } + + @Override + public List getSpeciesClassifyAndModelList() { + LoginUser user = getLoginUser(); + if (user == null) { + return new ArrayList<>(); + } + + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("tenant_id", user.getTenantId()); + qw.eq("type", CommonConstants.MODEL_TYPE_1); + List modelList = modelManagementMapper.selectList(qw); + + Map> modelMap = modelList.stream() + .collect(Collectors.groupingBy( + ModelManagementDO::getSpeciesId, + Collectors.toMap(ModelManagementDO::getId, ModelManagementDO::getModelName) + )); + + List rootList = this.getSpeciesClassifyLibraryList2(); + for (SpeciesClassifyLibraryRespVO vo : rootList) { + for (SpeciesClassifyLibraryRespVO child : vo.getChildren()) { + + if (!modelMap.containsKey(child.getSpeciesClassCode())) { + continue; + } + + Map stringStringMap = modelMap.get(child.getSpeciesClassCode()); + List collect = stringStringMap.entrySet().stream().map(e -> new SpeciesClassifyLibraryRespVO(e.getKey(), e.getValue())).collect(Collectors.toList()); + child.setChildren(collect); + + } + } + + return rootList; + } + @Override public PageResult getFarmingTypeMaintenancePage(FarmingTypeMaintenancePageReqVO reqVO) {