From a3fc7b63aeadfc6fba014f38791b077cd42a6b9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=BE=E5=AF=8C=E6=96=8C?= Date: Wed, 24 Sep 2025 20:34:17 +0800 Subject: [PATCH] =?UTF-8?q?fix=20(farm):=20=E5=A4=A7=E5=B1=8F=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=B4=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 基地统计 --- .../controller/admin/api/ApiController.java | 2 +- .../vo/v2/DeviceInfoDetailV2RespVO.java | 17 +++++++- .../admin/digitalcockpit/DigitalCockpit.java | 12 +++++- .../digitalcockpit/vo/DeviceInfoRespVO.java | 19 +++++++-- .../vo/YieldStatisticsRespVO.java | 2 - .../farm/manager/devices/DeviceManager.java | 41 +++++++++++++++---- .../deviceinfo/DeviceInfoServiceImpl.java | 15 ++++--- 7 files changed, 86 insertions(+), 22 deletions(-) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/api/ApiController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/api/ApiController.java index 505c2859..123a850f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/api/ApiController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/api/ApiController.java @@ -113,7 +113,7 @@ public class ApiController { @PostMapping("/digital-cockpit/chart/device-state") @Operation(summary = "数字驾驶舱-设备总览") public CommonResult getDeviceStateStatistics(@Valid @RequestBody DeviceStateReqVO req) { - return deviceInfoService.getDeviceStateStatistics(req); + return deviceInfoService.getDeviceStateStatistics(req); // TODO: 2025/9/24 } } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/v2/DeviceInfoDetailV2RespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/v2/DeviceInfoDetailV2RespVO.java index 3fc1fa13..7b2e8131 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/v2/DeviceInfoDetailV2RespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/v2/DeviceInfoDetailV2RespVO.java @@ -63,12 +63,27 @@ public class DeviceInfoDetailV2RespVO { @Schema(description = "水肥机") private WfInfo wfInfo; - @Data @AllArgsConstructor @NoArgsConstructor public static class SoilInfo{ private String deviceUniqueId; + private RealTimeData realTimeData; + private List historyDataListPages; + } + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class RealTimeData{ + private String code; + } + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class HistoryDataListPage{ + private String code; } @Data diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/DigitalCockpit.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/DigitalCockpit.java index a008c646..cd23e6e5 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/DigitalCockpit.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/DigitalCockpit.java @@ -14,12 +14,12 @@ import cn.iocoder.yudao.module.farm.service.plotinfo.PlotInfoService; import cn.iocoder.yudao.module.farm.service.productionplan.ProductionPlanService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -120,6 +120,7 @@ public class DigitalCockpit { public CommonResult> getCropStatisticsInfo(@RequestParam("baseId") String baseId, @RequestParam("year") String year) { List res = new ArrayList<>(); + res.add(new CropStatisticsRespVO("香菜",1000,1200)); return success(res); } @@ -131,6 +132,7 @@ public class DigitalCockpit { @RequestParam("year") String year) { List res = new ArrayList<>(); + res.add(new YieldStatisticsRespVO("香菜",10000,16000)); return success(res); } @@ -142,6 +144,7 @@ public class DigitalCockpit { @RequestParam("year") String year) { List res = new ArrayList<>(); + res.add(new ActualYieldStatisticsRespVO("香菜",10000,10001)); return success(res); } @@ -170,6 +173,13 @@ public class DigitalCockpit { @Parameter(name = "baseId", description = "基地ID", required = true) public CommonResult getDeviceInfo(@RequestParam("baseId") String baseId) { DeviceInfoRespVO res = new DeviceInfoRespVO(); + res.setTotal(17); + res.setDeviceInfos( + Arrays.asList( + new DeviceInfoRespVO.DeviceInfo("水肥机", 1), + new DeviceInfoRespVO.DeviceInfo("土壤墒情", 16) + ) + ); return success(res); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/vo/DeviceInfoRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/vo/DeviceInfoRespVO.java index 931d79cf..19c2ccbe 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/vo/DeviceInfoRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/vo/DeviceInfoRespVO.java @@ -5,6 +5,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + /** * @description: * @author: binda @@ -14,8 +16,17 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class DeviceInfoRespVO { - @Schema(description = "设备类型名称") - private String deviceTypeName; - @Schema(description = "设备数量") - private String deviceCount; + + private Integer total; + private List deviceInfos; + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class DeviceInfo{ + @Schema(description = "设备类型名称") + private String deviceTypeName; + @Schema(description = "设备数量") + private Integer deviceCount; + } } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/vo/YieldStatisticsRespVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/vo/YieldStatisticsRespVO.java index 841dd99b..8831f66e 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/vo/YieldStatisticsRespVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/digitalcockpit/vo/YieldStatisticsRespVO.java @@ -18,8 +18,6 @@ public class YieldStatisticsRespVO { private String speciesName; @Schema(description = "实际产量") private Integer practicalYields; - @Schema(description = "预计产量") - private Integer predictedYields; @Schema(description = "总产量") private Integer totalYield; } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/devices/DeviceManager.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/devices/DeviceManager.java index 11676a2b..ecdb8e63 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/devices/DeviceManager.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/devices/DeviceManager.java @@ -2,9 +2,12 @@ package cn.iocoder.yudao.module.farm.manager.devices; import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.DeviceInfoDetailV2RespVO; import cn.iocoder.yudao.module.farm.manager.devices.soil.SoilService; +import cn.iocoder.yudao.module.farm.manager.devices.soil.dto.HistoryDataListPageReqVO; +import cn.iocoder.yudao.module.farm.manager.devices.soil.dto.HistoryDataListPageRespVO; import cn.iocoder.yudao.module.farm.manager.devices.soil.dto.RealTimeDataReqVO; import cn.iocoder.yudao.module.farm.manager.devices.soil.dto.RealTimeDataRespVO; import cn.iocoder.yudao.module.farm.manager.devices.wf.WaterFertilizerService; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import java.util.List; @@ -29,26 +32,50 @@ public class DeviceManager { } public DeviceInfoDetailV2RespVO getRealData(String deviceUniqueId) { - DeviceInfoDetailV2RespVO.SoilInfo soilInfo = this.getSoilRealData(deviceUniqueId); - DeviceInfoDetailV2RespVO.WfInfo wfInfo = this.coverToWf(deviceUniqueId); - - return new DeviceInfoDetailV2RespVO(deviceUniqueId, soilInfo, wfInfo); + DeviceInfoDetailV2RespVO.SoilInfo soilInfo = this.getSoilData(deviceUniqueId); + DeviceInfoDetailV2RespVO.WfInfo wfInfo = this.getWfData(deviceUniqueId); + return new DeviceInfoDetailV2RespVO(deviceUniqueId, null, null); } - public DeviceInfoDetailV2RespVO.SoilInfo getSoilRealData(String deviceUniqueId) { + public DeviceInfoDetailV2RespVO.SoilInfo getSoilData(String deviceUniqueId) { + // 判断该deviceUniqueId是否来源于土壤墒情 + boolean flag = false; + if (flag) { + return null; + } + String tenantId = String.valueOf(getLoginUser().getTenantId()); if (!soilService.validateUserToken(tenantId)) { soilService.userLogin(); } + List realTimeData = soilService.getRealTimeData(new RealTimeDataReqVO(deviceUniqueId)); -// soilService.getHistoryDataList(); + HistoryDataListPageRespVO historyDataList = soilService.getHistoryDataList(new HistoryDataListPageReqVO()); + return new DeviceInfoDetailV2RespVO.SoilInfo(deviceUniqueId, coverToSoil(realTimeData), coverToSoil(historyDataList)); + } + + public DeviceInfoDetailV2RespVO.RealTimeData coverToSoil(List realTimeData) { + if (ObjectUtils.isEmpty(realTimeData)) { + return null; + } + + + + return null; + } + + public List coverToSoil(HistoryDataListPageRespVO historyDataList ) { + if (ObjectUtils.isEmpty(historyDataList)) { + return null; + } + return null; } - public DeviceInfoDetailV2RespVO.WfInfo coverToWf(String deviceUniqueId) { + public DeviceInfoDetailV2RespVO.WfInfo getWfData(String deviceUniqueId) { String tenantId = String.valueOf(getLoginUser().getTenantId()); diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java index f2d6ad02..8dfd47a8 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java @@ -126,18 +126,21 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { @Override public DeviceInfoDetailV2RespVO getDeviceRealTimeInfo(String id) { - DeviceInfoDO deviceInfo = this.getDeviceInfo(id); - DeviceInfoDetailV2RespVO target = BeanUtils.toBean(deviceInfo, DeviceInfoDetailV2RespVO.class); - List deviceClassifyDOS = deviceClassifyMapper.selectList(); Map map = deviceClassifyDOS.stream() .filter(device -> device.getParentId() != null && device.getParentId() == 0) .collect(Collectors.toMap(e -> e.getId().toString(), DeviceClassifyDO::getName)); + + DeviceInfoDO deviceInfo = this.getDeviceInfo(id); + DeviceInfoDetailV2RespVO target = BeanUtils.toBean(deviceInfo, DeviceInfoDetailV2RespVO.class); + // 设备类型名称 target.setDeviceTypeName(map.getOrDefault(target.getDeviceType(), "")); -// DeviceInfoDetailV2RespVO realData = deviceManager.getRealData(id); -// target.setSoilInfo(realData.getSoilInfo()); -// target.setWfInfo(realData.getWfInfo()); + + // 从设备商服务 获取设备实时/历史数据 + DeviceInfoDetailV2RespVO realData = deviceManager.getRealData(id); + target.setSoilInfo(realData.getSoilInfo()); + target.setWfInfo(realData.getWfInfo()); return target; }