fix (farm): 大屏数据维护
- 基地统计
This commit is contained in:
@@ -113,7 +113,7 @@ public class ApiController {
|
|||||||
@PostMapping("/digital-cockpit/chart/device-state")
|
@PostMapping("/digital-cockpit/chart/device-state")
|
||||||
@Operation(summary = "数字驾驶舱-设备总览")
|
@Operation(summary = "数字驾驶舱-设备总览")
|
||||||
public CommonResult<DeviceStateRespVO> getDeviceStateStatistics(@Valid @RequestBody DeviceStateReqVO req) {
|
public CommonResult<DeviceStateRespVO> getDeviceStateStatistics(@Valid @RequestBody DeviceStateReqVO req) {
|
||||||
return deviceInfoService.getDeviceStateStatistics(req);
|
return deviceInfoService.getDeviceStateStatistics(req); // TODO: 2025/9/24
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,12 +63,27 @@ public class DeviceInfoDetailV2RespVO {
|
|||||||
@Schema(description = "水肥机")
|
@Schema(description = "水肥机")
|
||||||
private WfInfo wfInfo;
|
private WfInfo wfInfo;
|
||||||
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public static class SoilInfo{
|
public static class SoilInfo{
|
||||||
private String deviceUniqueId;
|
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
|
@Data
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ import cn.iocoder.yudao.module.farm.service.plotinfo.PlotInfoService;
|
|||||||
import cn.iocoder.yudao.module.farm.service.productionplan.ProductionPlanService;
|
import cn.iocoder.yudao.module.farm.service.productionplan.ProductionPlanService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.validation.annotation.Validated;
|
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 static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
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,
|
public CommonResult<List<CropStatisticsRespVO>> getCropStatisticsInfo(@RequestParam("baseId") String baseId,
|
||||||
@RequestParam("year") String year) {
|
@RequestParam("year") String year) {
|
||||||
List<CropStatisticsRespVO> res = new ArrayList<>();
|
List<CropStatisticsRespVO> res = new ArrayList<>();
|
||||||
|
res.add(new CropStatisticsRespVO("香菜",1000,1200));
|
||||||
return success(res);
|
return success(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,6 +132,7 @@ public class DigitalCockpit {
|
|||||||
@RequestParam("year") String year) {
|
@RequestParam("year") String year) {
|
||||||
|
|
||||||
List<YieldStatisticsRespVO> res = new ArrayList<>();
|
List<YieldStatisticsRespVO> res = new ArrayList<>();
|
||||||
|
res.add(new YieldStatisticsRespVO("香菜",10000,16000));
|
||||||
return success(res);
|
return success(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,6 +144,7 @@ public class DigitalCockpit {
|
|||||||
@RequestParam("year") String year) {
|
@RequestParam("year") String year) {
|
||||||
|
|
||||||
List<ActualYieldStatisticsRespVO> res = new ArrayList<>();
|
List<ActualYieldStatisticsRespVO> res = new ArrayList<>();
|
||||||
|
res.add(new ActualYieldStatisticsRespVO("香菜",10000,10001));
|
||||||
return success(res);
|
return success(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,6 +173,13 @@ public class DigitalCockpit {
|
|||||||
@Parameter(name = "baseId", description = "基地ID", required = true)
|
@Parameter(name = "baseId", description = "基地ID", required = true)
|
||||||
public CommonResult<DeviceInfoRespVO> getDeviceInfo(@RequestParam("baseId") String baseId) {
|
public CommonResult<DeviceInfoRespVO> getDeviceInfo(@RequestParam("baseId") String baseId) {
|
||||||
DeviceInfoRespVO res = new DeviceInfoRespVO();
|
DeviceInfoRespVO res = new DeviceInfoRespVO();
|
||||||
|
res.setTotal(17);
|
||||||
|
res.setDeviceInfos(
|
||||||
|
Arrays.asList(
|
||||||
|
new DeviceInfoRespVO.DeviceInfo("水肥机", 1),
|
||||||
|
new DeviceInfoRespVO.DeviceInfo("土壤墒情", 16)
|
||||||
|
)
|
||||||
|
);
|
||||||
return success(res);
|
return success(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import lombok.AllArgsConstructor;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description:
|
* @description:
|
||||||
* @author: binda
|
* @author: binda
|
||||||
@@ -14,8 +16,17 @@ import lombok.NoArgsConstructor;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class DeviceInfoRespVO {
|
public class DeviceInfoRespVO {
|
||||||
|
|
||||||
|
private Integer total;
|
||||||
|
private List<DeviceInfo> deviceInfos;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public static class DeviceInfo{
|
||||||
@Schema(description = "设备类型名称")
|
@Schema(description = "设备类型名称")
|
||||||
private String deviceTypeName;
|
private String deviceTypeName;
|
||||||
@Schema(description = "设备数量")
|
@Schema(description = "设备数量")
|
||||||
private String deviceCount;
|
private Integer deviceCount;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,8 +18,6 @@ public class YieldStatisticsRespVO {
|
|||||||
private String speciesName;
|
private String speciesName;
|
||||||
@Schema(description = "实际产量")
|
@Schema(description = "实际产量")
|
||||||
private Integer practicalYields;
|
private Integer practicalYields;
|
||||||
@Schema(description = "预计产量")
|
|
||||||
private Integer predictedYields;
|
|
||||||
@Schema(description = "总产量")
|
@Schema(description = "总产量")
|
||||||
private Integer totalYield;
|
private Integer totalYield;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.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.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.RealTimeDataReqVO;
|
||||||
import cn.iocoder.yudao.module.farm.manager.devices.soil.dto.RealTimeDataRespVO;
|
import cn.iocoder.yudao.module.farm.manager.devices.soil.dto.RealTimeDataRespVO;
|
||||||
import cn.iocoder.yudao.module.farm.manager.devices.wf.WaterFertilizerService;
|
import cn.iocoder.yudao.module.farm.manager.devices.wf.WaterFertilizerService;
|
||||||
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -29,26 +32,50 @@ public class DeviceManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DeviceInfoDetailV2RespVO getRealData(String deviceUniqueId) {
|
public DeviceInfoDetailV2RespVO getRealData(String deviceUniqueId) {
|
||||||
DeviceInfoDetailV2RespVO.SoilInfo soilInfo = this.getSoilRealData(deviceUniqueId);
|
DeviceInfoDetailV2RespVO.SoilInfo soilInfo = this.getSoilData(deviceUniqueId);
|
||||||
DeviceInfoDetailV2RespVO.WfInfo wfInfo = this.coverToWf(deviceUniqueId);
|
DeviceInfoDetailV2RespVO.WfInfo wfInfo = this.getWfData(deviceUniqueId);
|
||||||
|
return new DeviceInfoDetailV2RespVO(deviceUniqueId, null, null);
|
||||||
return new DeviceInfoDetailV2RespVO(deviceUniqueId, soilInfo, wfInfo);
|
}
|
||||||
|
|
||||||
|
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());
|
String tenantId = String.valueOf(getLoginUser().getTenantId());
|
||||||
if (!soilService.validateUserToken(tenantId)) {
|
if (!soilService.validateUserToken(tenantId)) {
|
||||||
soilService.userLogin();
|
soilService.userLogin();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<RealTimeDataRespVO> realTimeData = soilService.getRealTimeData(new RealTimeDataReqVO(deviceUniqueId));
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public DeviceInfoDetailV2RespVO.WfInfo coverToWf(String deviceUniqueId) {
|
public DeviceInfoDetailV2RespVO.WfInfo getWfData(String deviceUniqueId) {
|
||||||
String tenantId = String.valueOf(getLoginUser().getTenantId());
|
String tenantId = String.valueOf(getLoginUser().getTenantId());
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -126,18 +126,21 @@ public class DeviceInfoServiceImpl implements DeviceInfoService {
|
|||||||
@Override
|
@Override
|
||||||
public DeviceInfoDetailV2RespVO getDeviceRealTimeInfo(String id) {
|
public DeviceInfoDetailV2RespVO getDeviceRealTimeInfo(String id) {
|
||||||
|
|
||||||
DeviceInfoDO deviceInfo = this.getDeviceInfo(id);
|
|
||||||
DeviceInfoDetailV2RespVO target = BeanUtils.toBean(deviceInfo, DeviceInfoDetailV2RespVO.class);
|
|
||||||
|
|
||||||
List<DeviceClassifyDO> deviceClassifyDOS = deviceClassifyMapper.selectList();
|
List<DeviceClassifyDO> deviceClassifyDOS = deviceClassifyMapper.selectList();
|
||||||
Map<String, String> map = deviceClassifyDOS.stream()
|
Map<String, String> map = deviceClassifyDOS.stream()
|
||||||
.filter(device -> device.getParentId() != null && device.getParentId() == 0)
|
.filter(device -> device.getParentId() != null && device.getParentId() == 0)
|
||||||
.collect(Collectors.toMap(e -> e.getId().toString(), DeviceClassifyDO::getName));
|
.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(), ""));
|
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;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user