fix (farm): 农场首页

- 接口优化
This commit is contained in:
达富斌
2025-08-31 20:36:24 +08:00
parent d9fb3bb32d
commit 869bc7cd86
8 changed files with 33 additions and 99 deletions

View File

@@ -6,7 +6,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 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.BaseNamePlanRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNameRespVO; import cn.iocoder.yudao.module.farm.controller.admin.baseinfo.vo.BaseNameRespVO;
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.FarmingTypeRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.SpeciesClassifyLibraryRespVO;
import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictRespVO; import cn.iocoder.yudao.module.farm.controller.admin.dict.vo.sys.SysDictRespVO;
@@ -27,14 +26,12 @@ import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLi
import cn.iocoder.yudao.module.farm.controller.admin.specieslibrary.vo.SpeciesLibraryRespVO; 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.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.controller.admin.twodict.vo.TwoDictTreeRespVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO; import cn.iocoder.yudao.module.farm.dal.dataobject.disasterdata.DisasterDataDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.farmingnamemaintenance.FarmingNameMaintenanceDO; 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.farmingtypemaintenance.FarmingTypeMaintenanceDO;
import cn.iocoder.yudao.module.farm.dal.dataobject.inputlibrary.InputLibraryDO; 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.dataobject.specieslibrary.SpeciesLibraryDO;
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.service.baseinfo.BaseInfoService; 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.disasterdata.DisasterDataService;
import cn.iocoder.yudao.module.farm.service.farmingtypemaintenance.FarmingTypeMaintenanceService; import cn.iocoder.yudao.module.farm.service.farmingtypemaintenance.FarmingTypeMaintenanceService;
@@ -44,7 +41,6 @@ import cn.iocoder.yudao.module.farm.service.speciesclassifylibrary.SpeciesClassi
import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService; import cn.iocoder.yudao.module.farm.service.specieslibrary.SpeciesLibraryService;
import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService; import cn.iocoder.yudao.module.farm.service.sysDict.SysDictService;
import cn.iocoder.yudao.module.farm.service.twodict.TwoDictService; import cn.iocoder.yudao.module.farm.service.twodict.TwoDictService;
import cn.iocoder.yudao.module.farm.utils.TreeStructureUtil;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid; import jakarta.validation.Valid;
@@ -53,9 +49,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;

View File

@@ -35,30 +35,26 @@ public class HomeController {
@Operation(summary = "农场首页") @Operation(summary = "农场首页")
@GetMapping("/{baseId}") @GetMapping("/{baseId}")
public CommonResult<HomeInfo> getBaseInfo(@PathVariable("baseId") String baseId) { public CommonResult<HomeInfo> getBaseInfo(@PathVariable("baseId") String baseId) {
HomeInfo res = homeService.getHomeInfo(baseId); return success(homeService.getHomeInfo(baseId));
return success(res);
} }
@Parameter(name = "baseId", description = "基地ID", required = true) @Parameter(name = "baseId", description = "基地ID", required = true)
@Operation(summary = "农场首页-概要信息") @Operation(summary = "农场首页-概要信息")
@GetMapping("/outlined/{baseId}") @GetMapping("/outlined/{baseId}")
public CommonResult<OutlinedInfoVO> getWeatherInfo(@PathVariable("baseId") String baseId) { public CommonResult<OutlinedInfoVO> getWeatherInfo(@PathVariable("baseId") String baseId) {
OutlinedInfoVO res = homeService.getOutlinedInfo(baseId); return success(homeService.getOutlinedInfo(baseId));
return success(res);
} }
@Operation(summary = "农场首页-基地名称列表") @Operation(summary = "农场首页-基地名称列表")
@GetMapping("/baseNames") @GetMapping("/baseNames")
public CommonResult<List<BaseNameVO>> getBaseNameList() { public CommonResult<List<BaseNameVO>> getBaseNameList() {
List<BaseNameVO> res = homeService.getBaseNameList(); return success(homeService.getBaseNameList());
return success(res);
} }
@Operation(summary = "农场首页-公司基地及种植") @Operation(summary = "农场首页-公司基地及种植")
@GetMapping("/companyBaseFarming") @GetMapping("/companyBaseFarming")
public CommonResult<Object> getCompanyBaseFarming() { public CommonResult<Object> getCompanyBaseFarming() {
Map<String, Object> res = homeService.getCompanyBaseFarming(); return success(homeService.getCompanyBaseFarming());
return success(res);
} }
} }

View File

@@ -1,6 +1,8 @@
package cn.iocoder.yudao.module.farm.controller.admin.home.vo; package cn.iocoder.yudao.module.farm.controller.admin.home.vo;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
/** /**
* @description: 基地名称下拉列表 * @description: 基地名称下拉列表
@@ -8,6 +10,8 @@ import lombok.Data;
* @date: 2025/8/15 18:04 * @date: 2025/8/15 18:04
*/ */
@Data @Data
@AllArgsConstructor
@NoArgsConstructor
public class BaseNameVO { public class BaseNameVO {
public String baseId; public String baseId;
public String baseName; public String baseName;

View File

@@ -26,6 +26,21 @@ public class HomeInfo {
private List<PlotInfo> plotInfos; private List<PlotInfo> plotInfos;
@Schema(description = "计划集合") @Schema(description = "计划集合")
private List<PlanInfo> planInfos; private List<PlanInfo> planInfos;
@Schema(description = "统计信息")
private StatisticalInfo statisticalInfo;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class StatisticalInfo {
@Schema(description = "今日任务数量")
private Integer taskCount;
@Schema(description = "告警数量")
private Integer warningCount;
@Schema(description = "物联设备数量")
private Integer iotCount;
}
@Data @Data
@AllArgsConstructor @AllArgsConstructor

View File

@@ -50,6 +50,7 @@ public interface BaseInfoService {
* @return 基地 * @return 基地
*/ */
BaseInfoDO getBaseInfo(String id); BaseInfoDO getBaseInfo(String id);
List<BaseInfoDO> getBaseInfos();
/** /**
* 获得基地分页 * 获得基地分页

View File

@@ -111,6 +111,12 @@ public class BaseInfoServiceImpl implements BaseInfoService {
return baseInfoMapper.selectById(id); return baseInfoMapper.selectById(id);
} }
@Override
public List<BaseInfoDO> getBaseInfos() {
String tenantId = String.valueOf(getLoginUser().getTenantId());
return baseInfoMapper.selectList("tenant_id", tenantId);
}
@Override @Override
public PageResult<BaseInfoDO> getBaseInfoPage(BaseInfoPageReqVO pageReqVO) { public PageResult<BaseInfoDO> getBaseInfoPage(BaseInfoPageReqVO pageReqVO) {
return baseInfoMapper.selectPage(pageReqVO); return baseInfoMapper.selectPage(pageReqVO);

View File

@@ -21,8 +21,6 @@ public interface HomeService {
*/ */
HomeInfo getHomeInfo(String baseId); HomeInfo getHomeInfo(String baseId);
HomeInfo2VO getHomeInfo2(String baseId);
/** /**
* 首页概要信息 * 首页概要信息
* @param baseId 基地ID * @param baseId 基地ID

View File

@@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.BaseNameVO; import cn.iocoder.yudao.module.farm.controller.admin.home.vo.BaseNameVO;
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.HomeInfo; import cn.iocoder.yudao.module.farm.controller.admin.home.vo.HomeInfo;
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.HomeInfo.*; import cn.iocoder.yudao.module.farm.controller.admin.home.vo.HomeInfo.*;
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.HomeInfo2VO;
import cn.iocoder.yudao.module.farm.controller.admin.home.vo.OutlinedInfoVO; import cn.iocoder.yudao.module.farm.controller.admin.home.vo.OutlinedInfoVO;
import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO; 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.dataobject.plotinfo.PlotInfoDO;
@@ -21,6 +20,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
@@ -138,87 +138,6 @@ public class HomeServiceImpl implements HomeService {
return targetList; return targetList;
} }
@Override
public HomeInfo2VO getHomeInfo2(String baseId) {
// 地块信息
List<HomeInfo2VO.PlotInfoVO> plotInfoVOs = this.getPlots(baseId);
int plotCount = 0; // 在种地块
int plotTotalCount = 0; // 地块总数
// 任务信息
int cropCount = 0; // 在种作物
int cropTotalCount = 0; // 作物总数
// 基地信息
BaseInfoDO baseInfoDO = baseInfoService.getBaseInfo(baseId);
HomeInfo2VO.BaseInfoVO baseInfoVO = new HomeInfo2VO.BaseInfoVO();
baseInfoVO.setId(baseInfoDO.getId());
baseInfoVO.setArea(baseInfoDO.getArea());
baseInfoVO.setPointName(""); // todo 需要从坐标json中解析坐标名称
baseInfoVO.setManager(baseInfoDO.getManager());
baseInfoVO.setPlotCount(plotCount);
baseInfoVO.setPlotTotalCount(plotTotalCount);
baseInfoVO.setCropCount(cropCount);
baseInfoVO.setCropTotalCount(cropTotalCount);
HomeInfo2VO res = new HomeInfo2VO();
res.setBaseInfo(baseInfoVO);
res.setPlotInfoVOS(plotInfoVOs);
return res;
}
/**
* 构建地块信息
*
* @param baseId 基地ID
* @return 地块集合
*/
private List<HomeInfo2VO.PlotInfoVO> getPlots(String baseId) {
// 地块信息
List<PlotInfoDO> plotInfos = plotInfoService.getPlotInfos(baseId);
List<HomeInfo2VO.PlotInfoVO> resList = new ArrayList<>();
plotInfos.forEach(e -> {
String plotId = e.getPlotId();
// 任务信息
List<ProductionPlanDO> productionPlanInfos = productionPlanService.getProductionPlans(plotId);
List<HomeInfo2VO.ProductionPlanVO> plans = new ArrayList<>();
productionPlanInfos.forEach(ee -> {
HomeInfo2VO.ProductionPlanVO planVO = new HomeInfo2VO.ProductionPlanVO();
planVO.setId(ee.getId());
// planVO.setPlantSpecies(ee.getPlantSpecies());
// planVO.setCultivationAreaId(ee.getCultivationAreaId());
planVO.setManagementCycleName(""); // todo 当前管理周期名称
planVO.setManagementCyclePlan(""); // todo 当前管理周期计划进度
planVO.setCultivatedArea(0); // todo 种植面积
// planVO.setEstimatedOutput(ee.getEstimatedOutput()); // todo 预产数量
planVO.setTaskCount(0); // todo 任务数量
planVO.setManager(""); //
plans.add(planVO); // todo 任务负责人
});
HomeInfo2VO.PlotInfoVO plotVO = new HomeInfo2VO.PlotInfoVO();
plotVO.setPlotId(plotId);
plotVO.setPlotName(e.getPlotName());
plotVO.setPlotArea(e.getPlotArea());
plotVO.setCropName(""); // todo 种植作物名称,使用逗号分割
plotVO.setCropCount(0); // todo 地块在种作物数量
plotVO.setProductionPlanCount(0); // todo 农事任务数量
plotVO.setIotCount(0); // todo 物联网设备数据
plotVO.setManager(e.getEmployeeId()); // todo 负责人id -> name
plotVO.setQrCodeUrl(""); // 二维码URL
plotVO.setProductionPlanVOS(plans);
resList.add(plotVO);
});
return resList;
}
@Override @Override
public OutlinedInfoVO getOutlinedInfo(String baseId) { public OutlinedInfoVO getOutlinedInfo(String baseId) {
OutlinedInfoVO res = new OutlinedInfoVO(); OutlinedInfoVO res = new OutlinedInfoVO();
@@ -230,7 +149,8 @@ public class HomeServiceImpl implements HomeService {
@Override @Override
public List<BaseNameVO> getBaseNameList() { public List<BaseNameVO> getBaseNameList() {
return null; List<BaseInfoDO> baseNameList = baseInfoService.getBaseInfos();
return baseNameList.stream().map(e -> new BaseNameVO(e.getId(), e.getName())).collect(Collectors.toList());
} }
@Override @Override