diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java index ff3f34d1d..87af52f65 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqDeviceController.java @@ -101,6 +101,17 @@ public class EqDeviceController extends BaseController { return R.ok(eqEquipmentService.ota(equipmentCode)); } + /** + * 查看当前版本和最新版本 + * @param equipmentCode + * @return + */ + @GetMapping("/otaVersion") + public R otaVersion(String equipmentCode){ + if (equipmentCode == null) throw new ServiceException("设备编码不能为空"); + return R.ok(eqEquipmentService.otaVersion(equipmentCode)); + } + /** * 控制设备 门 灯光 控制 * 传参设备编码 diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqVersionBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqVersionBo.java new file mode 100644 index 000000000..395f6814c --- /dev/null +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqVersionBo.java @@ -0,0 +1,35 @@ +package org.dromara.web.domain.bo; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @ClassName : EqVersionBo + * @Author : ZZC + * @Date : 2024/10/28 18:52 + * @Discription : 版本信息 + **/ +@Data +public class EqVersionBo implements Serializable { + /** + * 是否需要更新 + */ + private boolean isNeedUpdate; + /** + * 当前版本 + */ + private String currentVersion; + /** + * 最新版本 + */ + private String latestVersion; + /** + * 当前版本id + */ + private String currentVersionId; + /** + * 最新版本id + */ + private String latestVersionId; +} diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java index c2029d4bf..05d520360 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/IEqEquipmentService.java @@ -108,4 +108,5 @@ public interface IEqEquipmentService { EqEquipmentStatisticsVo selectEquipmentStatistic(Integer type, String startTime, String endTime); String ota(String equipmentCode); + public EqVersionBo otaVersion(String equipmentCode); } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/IotService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/IotService.java index b8b9245c4..88686bc41 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/IotService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/IotService.java @@ -220,7 +220,7 @@ public class IotService { * @param deviceProfileId * @return */ - public DeviceOtaPackages httpOtaPackages(String deviceProfileId){ + public DeviceOtaPackages httpOtaLastPackages(String deviceProfileId){ Map map = new HashMap<>(); map.put("deviceProfileId",deviceProfileId); String send = getSend(CommonYmlConfig.URL_IOT_ota_otaPackages, map); @@ -230,6 +230,19 @@ public class IotService { return deviceDto; } + /** + * 获取所有资源包 + * @param deviceProfileId + * @return + */ + public List httpOtaPackages(String deviceProfileId){ + Map map = new HashMap<>(); + map.put("deviceProfileId",deviceProfileId); + String send = getSend(CommonYmlConfig.URL_IOT_ota_otaPackages, map); + List deviceOtaPackages = JSON.parseArray(send, DeviceOtaPackages.class); + return deviceOtaPackages; + } + /** * 查询设备凭证 * @param deviceId diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java index 2cecc1f54..9432adf8c 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java @@ -397,7 +397,7 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { DeviceDto.DeviceProfileId deviceProfileId = deviceDto.getDeviceProfileId(); String profileIdId = deviceProfileId.getId();//获取配置id //2.查询OTA资源包 - DeviceOtaPackages deviceOtaPackages = iotService.httpOtaPackages(profileIdId); + DeviceOtaPackages deviceOtaPackages = iotService.httpOtaLastPackages(profileIdId); //3.查询设备凭证 DeviceCredentials deviceCredentials = iotService.httpCredentials(equipmentCode); String assesToken = deviceCredentials.getCredentialsId(); @@ -407,6 +407,39 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { return iotService.httpPostUpdateOta(assesToken,deviceDto); } + @Override + public EqVersionBo otaVersion(String equipmentCode) { + EqVersionBo eqVersionBo = new EqVersionBo(); + //1.从iot平台设置用户绑定 并获取设备信息 + DeviceDto deviceDto = iotService.httpDeviceGetSend(equipmentCode); + DeviceDto.DeviceProfileId deviceProfileId = deviceDto.getDeviceProfileId(); + String profileIdId = deviceProfileId.getId();//获取配置id + //2.查询OTA资源包 +// DeviceOtaPackages deviceOtaPackages = iotService.httpOtaLastPackages(profileIdId); + List list = iotService.httpOtaPackages(profileIdId); + DeviceOtaPackages lastOtaPackage = list.get(0); + DeviceOtaPackages currentOtaPackage = null; + //设备包版本id + String currentPackageId = deviceDto.getFirmwareId().getId(); + String lastPackageId = lastOtaPackage.getId().getId(); + for (DeviceOtaPackages deviceOtaPackages : list) { + if (deviceOtaPackages.getId().getId().equals(currentPackageId)) + currentOtaPackage = deviceOtaPackages; + } + if (currentOtaPackage == null) throw new RuntimeException("当前设备版本不存在"); + if (currentPackageId.equals(lastPackageId)){ + eqVersionBo.setNeedUpdate(false); + eqVersionBo.setCurrentVersionId(currentPackageId); + eqVersionBo.setCurrentVersion(currentOtaPackage.getVersion()); + }else { + eqVersionBo.setNeedUpdate(true); + eqVersionBo.setCurrentVersionId(currentPackageId); + eqVersionBo.setCurrentVersion(currentOtaPackage.getVersion()); + eqVersionBo.setLatestVersionId(lastPackageId); + eqVersionBo.setLatestVersion(lastOtaPackage.getVersion()); + } + return eqVersionBo; + } /** * 检查要查询的userId 是否为分享给当前用户的userId