diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java index 957aa8c8..2d99427d 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/home/HomeController.java @@ -60,8 +60,10 @@ public class HomeController { @Operation(summary = "农场首页-扫描二维码") @GetMapping("/scan-qr") @Parameter(name = "baseId", description = "基地ID") - public CommonResult scanQrCodes(@RequestParam("baseId") String baseId) { - QrDetailsRespVO res = homeService.scanQrCodes(baseId); + @Parameter(name = "tenantId", description = "租户ID") + public CommonResult scanQrCodes(@RequestParam("baseId") String baseId, + @RequestParam("tenantId") String tenantId) { + QrDetailsRespVO res = homeService.scanQrCodes(baseId,tenantId); return success(res); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceclassify/DeviceClassifyService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceclassify/DeviceClassifyService.java index eeed9f71..ffdc17d9 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceclassify/DeviceClassifyService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceclassify/DeviceClassifyService.java @@ -70,4 +70,7 @@ public interface DeviceClassifyService { Map getTypeNameMap(); Map getTypeCodeMap(); + + Map getTypeNameMap(String tenantId); + Map getTypeCodeMap(String tenantId); } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceclassify/DeviceClassifyServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceclassify/DeviceClassifyServiceImpl.java index 6f3fd5d0..7acc8f55 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceclassify/DeviceClassifyServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceclassify/DeviceClassifyServiceImpl.java @@ -232,4 +232,24 @@ public class DeviceClassifyServiceImpl implements DeviceClassifyService { return typeCodeMap; } + public Map getTypeNameMap(String tenantId) { + LambdaQueryWrapperX x = new LambdaQueryWrapperX<>(); + x.eq(DeviceClassifyDO::getTenantId, tenantId); + List deviceClassifyDOS = deviceClassifyMapper.selectList(x); + + Map typeNameMap = deviceClassifyDOS.stream().filter(device -> device.getParentId() != null && device.getParentId() == 0) + .collect(Collectors.toMap(e -> e.getId().toString(), DeviceClassifyDO::getName)); + return typeNameMap; + } + + public Map getTypeCodeMap(String tenantId) { + LambdaQueryWrapperX x = new LambdaQueryWrapperX<>(); + x.eq(DeviceClassifyDO::getTenantId, tenantId); + List deviceClassifyDOS = deviceClassifyMapper.selectList(x); + + Map typeCodeMap = deviceClassifyDOS.stream().filter(device -> device.getParentId() != null && device.getParentId() == 0) + .collect(Collectors.toMap(e -> e.getId().toString(), DeviceClassifyDO::getTypeCode)); + return typeCodeMap; + } + } \ No newline at end of file diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java index b70557e1..6b89df5d 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java @@ -138,7 +138,7 @@ public interface DeviceInfoService { DeviceInfoRespVO getDeviceInfoByDp(String baseId); List deviceList(); - List deviceList(String plotId); + List deviceList(String plotId,String tenantId); /** * 设备统计信息 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 2680adf2..96c6a7da 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 @@ -177,7 +177,22 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { } return target; } + private DeviceInfoDetailV2RespVO.SoilInfo getSoilInfo(String deviceUniqueId,String plotId, Integer dateType,Long tenantId) { +// Long tenantId = getLoginUser().getTenantId(); + UnifiedLoginResponse login = equipmentProducerManager.login(DEVICE_TYPE_SOIL, tenantId, plotId); + String token = login.getData().getToken(); + + // 实时数据 + RealTimeDataReqVO soilRequest = new RealTimeDataReqVO(deviceUniqueId,tenantId); + RealTimeDataResponse realTimeData = equipmentProducerManager.getRealTimeData(DEVICE_TYPE_SOIL, tenantId, token, soilRequest); + + // 历史数据 + HistoryDataListPageReqVO req = HistoryDataListPageReqVO.buildHistoryData(deviceUniqueId, dateType); + HistoryDataResponse historyData = equipmentProducerManager.getHistoryData(DEVICE_TYPE_SOIL, tenantId, token, req); + + return new DeviceInfoDetailV2RespVO.SoilInfo(deviceUniqueId, realTimeData, historyData); + } /** * 土壤墒情传感器 * @param deviceUniqueId 设备地址(唯一编号) @@ -201,6 +216,22 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { return new DeviceInfoDetailV2RespVO.SoilInfo(deviceUniqueId, realTimeData, historyData); } + private DeviceInfoDetailV2RespVO.WfInfo getWfInfo(String deviceUniqueId,String plotId,Long tenantId ) { + // 登录 + UnifiedLoginResponse login = equipmentProducerManager.login(DEVICE_TYPE_WF, tenantId, plotId); + String token = login.getData().getToken(); + + // 获取设备列表 +// DeviceListResponse response = equipmentProducerManager.getDeviceList(DEVICE_TYPE_WF, tenantId, token, null); +// System.out.println("获取设备列表:"+response); + + // 实时数据 + RealTimeDeviceDataReqVO wfRequest = new RealTimeDeviceDataReqVO(deviceUniqueId,tenantId); + RealTimeDataResponse realTimeData = equipmentProducerManager.getRealTimeData(DEVICE_TYPE_WF, tenantId, token, wfRequest); + + return new DeviceInfoDetailV2RespVO.WfInfo(deviceUniqueId,realTimeData); + } + /** * 水肥机 * @param deviceUniqueId 设备地址(唯一编号) @@ -361,13 +392,13 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { } @Override - public List deviceList(String plotId) { + public List deviceList(String plotId,String tenantId) { LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX<>(); wrapperX.eq(DeviceInfoDO::getPlotId, plotId); wrapperX.eq(DeviceInfoDO::getDeleted, CommonConstants.NO_CODE); List doList = deviceInfoMapper.selectList(wrapperX); - return execute(doList); + return execute(doList,tenantId); } @Override @@ -409,11 +440,11 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { return res; } - private List execute(List doList) { + private List execute(List doList,String tenantId) { Map> groupedByDeviceType = doList.stream().collect(Collectors.groupingBy(DeviceInfoDO::getDeviceType)); - Map typeCodeMap = deviceClassifyService.getTypeCodeMap(); - Map typeNameMap = deviceClassifyService.getTypeNameMap(); + Map typeCodeMap = deviceClassifyService.getTypeCodeMap(tenantId); + Map typeNameMap = deviceClassifyService.getTypeNameMap(tenantId); List res = new ArrayList<>(); @@ -422,7 +453,7 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { List list = d.getValue(); String typeCode = typeCodeMap.getOrDefault(deviceType, "其他"); - List rows = this.getRealTimeList(typeCode, list); + List rows = this.getRealTimeList(typeCode, list,tenantId); res.add(new DeviceMonitorDataRespVO(typeNameMap.get(deviceType), rows)); } @@ -438,7 +469,32 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { List doList = deviceInfoMapper.selectList(wrapperX); - return execute(doList); + return execute(doList,tenantId.toString()); + } + + private List getRealTimeList(String typeCode, List doList,String tenantId) { + List rows = new ArrayList<>(); + + for (DeviceInfoDO d : doList) { + // 获取设备商数据 + switch (typeCode) { + case DEVICE_TYPE_SOIL: + DeviceInfoDetailV2RespVO.SoilInfo soilInfo = getSoilInfo(d.getDeviceUniqueId(), d.getPlotId(), 12,Long.valueOf(d.getTenantId())); + List rows1 = this.getSoilData(d.getDeviceName(), soilInfo); + rows.addAll(rows1); + break; + case DEVICE_TYPE_WF: + DeviceInfoDetailV2RespVO.WfInfo wfInfo = getWfInfo(d.getDeviceUniqueId(), d.getPlotId(),Long.valueOf(d.getTenantId())); + List rows2 = this.getWfData( wfInfo); + rows.addAll(rows2); + break; + case DEVICE_TYPE_VIDEO_MONITOR: + rows.add(new DeviceMonitorDataRespVO.Row(d.getDeviceName(),DEVICE_STATE_MAP.get(d.getDeviceState()),d.getDeviceUrl())); + break; + } + } + + return rows; } private List getRealTimeList(String typeCode, List doList) { diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeService.java index 24b11150..6d492f40 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeService.java @@ -30,5 +30,5 @@ public interface HomeService { * @param baseId * @return */ - QrDetailsRespVO scanQrCodes(String baseId); + QrDetailsRespVO scanQrCodes(String baseId,String tenantId); } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeServiceImpl.java index aa037eaf..53a9b406 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/home/HomeServiceImpl.java @@ -267,7 +267,7 @@ public class HomeServiceImpl implements HomeService { } @Override - public QrDetailsRespVO scanQrCodes(String baseId) { + public QrDetailsRespVO scanQrCodes(String baseId,String tenantId) { BaseInfoDO bObj = baseInfoService.getBaseInfo(baseId); if (ObjectUtils.isEmpty(bObj)) { return null; @@ -277,7 +277,7 @@ public class HomeServiceImpl implements HomeService { List plotInfos = plotInfoService.getPlotInfos(baseId); for (PlotInfoDO p : plotInfos) { List ls = this.getLs(p.getId()); - List ds = this.getDs(p.getId()); + List ds = this.getDs(p.getId(),tenantId); QrDetailsRespVO.PlotInfo targetP = new QrDetailsRespVO.PlotInfo(); targetP.setPlotName(p.getPlotName()); @@ -304,8 +304,8 @@ public class HomeServiceImpl implements HomeService { } - private List getDs(String plotId) { - List res = deviceService.deviceList(plotId); + private List getDs(String plotId,String tenantId) { + List res = deviceService.deviceList(plotId,tenantId); return res; }