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 34e5708f..a9f7bc84 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 @@ -100,8 +100,8 @@ public class BaseInfoController { @GetMapping("/get/baser-name-list") @Operation(summary = "获得基地名称-下拉列表") public CommonResult> getBaseNameList() { - List res = baseInfoService.getBaseNameList(); - return success(BeanUtils.toBean(res,BaseNameRespVO.class)); + 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/BaseNameRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseNameRespVO.java index 5b6ee976..491f0517 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseNameRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/baseinfo/vo/BaseNameRespVO.java @@ -5,6 +5,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + /** * @description: TODO * @author: binda @@ -20,4 +22,22 @@ public class BaseNameRespVO { @Schema(description = "基地名称", example = "张三") private String name; + + private List children; + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class PlotInfoVO { + @Schema(description = "地块ID", example = "4027") + private String plotId; + + @Schema(description = "地块名称", example = "王五") + private String plotName; + } + + public BaseNameRespVO(String id, String name) { + this.id = id; + this.name = name; + } } 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 35e626ec..151e5252 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 @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.farm.service.baseinfo; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseInfoPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseInfoSaveReqVO; +import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNameRespVO; import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO; import jakarta.validation.Valid; @@ -66,5 +67,5 @@ public interface BaseInfoService { * 基地名称-下拉列表 * @return */ - List getBaseNameList(); + List getBaseNameList(); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoServiceImpl.java index e49018b6..a147ffc8 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/baseinfo/BaseInfoServiceImpl.java @@ -6,13 +6,19 @@ 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.baseinfo.vo.BaseInfoPageReqVO; import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseInfoSaveReqVO; +import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNameRespVO; import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO; +import cn.iocoder.yudao.module.farm.dal.dataobject.plotinfo.PlotInfoDO; import cn.iocoder.yudao.module.farm.dal.mysql.baseinfo.BaseInfoMapper; +import cn.iocoder.yudao.module.farm.dal.mysql.plotinfo.PlotInfoMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +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; @@ -29,6 +35,8 @@ public class BaseInfoServiceImpl implements BaseInfoService { @Resource private BaseInfoMapper baseInfoMapper; + @Resource + private PlotInfoMapper plotInfoMapper; @Override public String createBaseInfo(BaseInfoSaveReqVO createReqVO) { @@ -61,12 +69,12 @@ public class BaseInfoServiceImpl implements BaseInfoService { } @Override - public void deleteBaseInfoListByIds(List ids) { + public void deleteBaseInfoListByIds(List ids) { // 删除 baseInfoMapper.deleteByIds(ids); - } + } -private void validateBaseInfoExists(String id) { + private void validateBaseInfoExists(String id) { if (baseInfoMapper.selectById(id) == null) { throw exception(BASE_INFO_NOT_EXISTS); } @@ -88,9 +96,31 @@ private void validateBaseInfoExists(String id) { } @Override - public List getBaseNameList() { + public List getBaseNameList() { - return baseInfoMapper.selectList(); + List res = new ArrayList<>(); + + // 地块 + List plotInfoDOS = plotInfoMapper.selectList(); + // 基地 + List baseInfoDOS = baseInfoMapper.selectList(); + Map baseNameMap = baseInfoDOS.stream().collect(Collectors.toMap(BaseInfoDO::getId, BaseInfoDO::getName, (v1, v2) -> v1)); + + for (Map.Entry entry : baseNameMap.entrySet()) { + String key = entry.getKey(); + BaseNameRespVO obj = new BaseNameRespVO(key, entry.getValue()); + + List childList = new ArrayList<>(); + for (PlotInfoDO aDo : plotInfoDOS) { + if (aDo.getBaseId().equals(key)) { + childList.add(new BaseNameRespVO.PlotInfoVO(aDo.getPlotId(), aDo.getPlotName())); + } + } + obj.setChildren(childList); + res.add(obj); + } + + return BeanUtils.toBean(res, BaseNameRespVO.class); }