fix (farm): 大屏数据维护

- 基地统计
This commit is contained in:
达富斌
2025-09-24 20:34:17 +08:00
parent 8823d549c6
commit a3fc7b63ae
7 changed files with 86 additions and 22 deletions

View File

@@ -113,7 +113,7 @@ public class ApiController {
@PostMapping("/digital-cockpit/chart/device-state")
@Operation(summary = "数字驾驶舱-设备总览")
public CommonResult<DeviceStateRespVO> getDeviceStateStatistics(@Valid @RequestBody DeviceStateReqVO req) {
return deviceInfoService.getDeviceStateStatistics(req);
return deviceInfoService.getDeviceStateStatistics(req); // TODO: 2025/9/24
}
}

View File

@@ -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<HistoryDataListPage> historyDataListPages;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class RealTimeData{
private String code;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class HistoryDataListPage{
private String code;
}
@Data

View File

@@ -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<List<CropStatisticsRespVO>> getCropStatisticsInfo(@RequestParam("baseId") String baseId,
@RequestParam("year") String year) {
List<CropStatisticsRespVO> res = new ArrayList<>();
res.add(new CropStatisticsRespVO("香菜",1000,1200));
return success(res);
}
@@ -131,6 +132,7 @@ public class DigitalCockpit {
@RequestParam("year") String year) {
List<YieldStatisticsRespVO> res = new ArrayList<>();
res.add(new YieldStatisticsRespVO("香菜",10000,16000));
return success(res);
}
@@ -142,6 +144,7 @@ public class DigitalCockpit {
@RequestParam("year") String year) {
List<ActualYieldStatisticsRespVO> 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<DeviceInfoRespVO> 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);
}

View File

@@ -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 {
private Integer total;
private List<DeviceInfo> deviceInfos;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class DeviceInfo{
@Schema(description = "设备类型名称")
private String deviceTypeName;
@Schema(description = "设备数量")
private String deviceCount;
private Integer deviceCount;
}
}

View File

@@ -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;
}

View File

@@ -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 getSoilData(String deviceUniqueId) {
// 判断该deviceUniqueId是否来源于土壤墒情
boolean flag = false;
if (flag) {
return null;
}
public DeviceInfoDetailV2RespVO.SoilInfo getSoilRealData(String deviceUniqueId) {
String tenantId = String.valueOf(getLoginUser().getTenantId());
if (!soilService.validateUserToken(tenantId)) {
soilService.userLogin();
}
List<RealTimeDataRespVO> 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<RealTimeDataRespVO> realTimeData) {
if (ObjectUtils.isEmpty(realTimeData)) {
return null;
}
return null;
}
public List<DeviceInfoDetailV2RespVO.HistoryDataListPage> 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());

View File

@@ -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<DeviceClassifyDO> deviceClassifyDOS = deviceClassifyMapper.selectList();
Map<String, String> 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;
}