| | |
| | | package com.sandu.ximon.admin.controller; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.sandu.common.domain.ResponseVO; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.util.ResponseUtil; |
| | |
| | | import com.sandu.ximon.admin.param.RemotePrarm; |
| | | import com.sandu.ximon.admin.param.RemoteUpdateParam; |
| | | import com.sandu.ximon.admin.security.PermissionConfig; |
| | | import com.sandu.ximon.admin.security.SecurityUtils; |
| | | import com.sandu.ximon.admin.service.RemoteUpdateService; |
| | | import com.sandu.ximon.admin.utils.RedisUtils; |
| | | import com.sandu.ximon.admin.vo.RemoteUpgradeProgress; |
| | | import com.sandu.ximon.dao.enums.MenuEnum; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import static com.sandu.ximon.admin.manager.iot.rrpc.enums.RemoteUpdateTypeEnum.MQTT_MAIN; |
| | | |
| | | /** |
| | | * 固件升级Controller |
| | |
| | | //启动远程升级命令 |
| | | boolean startRemoteUpdateFlag = remoteUpdateService.StartRemoteUpdate(orderType, remotePrarm.getMac(), remotePrarm.getHardwareVersion() |
| | | , remotePrarm.getSoftwareVersion(), remotePrarm.getUpdateFlag()); |
| | | //存入升级进度 |
| | | RemoteUpgradeProgress progress = new RemoteUpgradeProgress(); |
| | | RedisUtils.getBean().set(remotePrarm.getDeviceType() + ":" + SecurityUtils.getUserId() + remotePrarm.getMac(), JSON.toJSON(progress)); |
| | | |
| | | if (startRemoteUpdateFlag) { |
| | | //服务器下发升级文件信息 |
| | | //"C:\\Users\\Administrator\\Desktop\\test\\MQTT-过滤大气版本1-09-20220310.bin" |
| | |
| | | |
| | | if (remoteFileDto != null) { |
| | | System.out.println(remoteFileDto.getList().size()); |
| | | progress.setTotalProgress(remoteFileDto.getList().size() + 1); |
| | | for (int i = 0; i < remoteFileDto.getList().size(); i++) { |
| | | //升级包数据 |
| | | remoteUpdateService.UpdateData(orderType, remotePrarm.getMac(), i, remoteFileDto.getList().get(i)); |
| | | progress.setCurrentProgress(i + 1); |
| | | if (i != remoteFileDto.getList().size()) { |
| | | RedisUtils.getBean().set(remotePrarm.getDeviceType() + ":" + SecurityUtils.getUserId() + remotePrarm.getMac(), JSON.toJSON(progress)); |
| | | } |
| | | } |
| | | |
| | | //服务器下发查询漏包帧 |
| | | boolean searchLoseDataFlag = remoteUpdateService.SearchLoseData(orderType, remotePrarm.getMac(), remoteFileDto, 0); |
| | | if (searchLoseDataFlag) { |
| | | //无漏包情况 更新最后进度为100% 否则最高卡在99% |
| | | RedisUtils.getBean().set(remotePrarm.getDeviceType() + ":" + SecurityUtils.getUserId() + remotePrarm.getMac(), JSON.toJSON(progress)); |
| | | //服务器下发结束升级帧 |
| | | boolean finishUpdateFlag = remoteUpdateService.FinishUpdate(orderType, remotePrarm.getMac()); |
| | | UpdateFlag = finishUpdateFlag; |
| | |
| | | } |
| | | } |
| | | |
| | | RedisUtils.getBean().delete(remotePrarm.getDeviceType() + ":" + SecurityUtils.getUserId() + remotePrarm.getMac()); |
| | | if (UpdateFlag) { |
| | | return ResponseUtil.success("升级成功!"); |
| | | } else { |