Просмотр исходного кода

bugfix:
1、OTA升级-发布升级-新建的升级任务信息在最后面
2、OTA升级发布至任务中心
3、OTA升级-发布升级-新建任务选择多个升级设备,升级异常

lihao16 5 месяцев назад
Родитель
Сommit
a32618c589

+ 3 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/domain/constants/DeviceTaskConstants.java

@@ -35,6 +35,9 @@ public class DeviceTaskConstants {
     /** 电源定时任务 */
     public static final Integer DEVICE_TASK_POWER_SCHEDULE = 1013;
 
+    /** OTA升级 */
+    public static final Integer DEVICE_TASK_OTA = 1014;
+
     /** 设备任务类型 end */
 
     /** 设备任务状态 begin */

+ 8 - 1
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/SmsbDeviceServiceImpl.java

@@ -42,6 +42,7 @@ import org.dromara.common.sse.dto.SseMessageContentTypeDto;
 import org.dromara.common.sse.dto.SseMessageDto;
 import org.dromara.common.sse.utils.SseMessageUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.CachePut;
 import org.springframework.cache.annotation.Cacheable;
@@ -73,6 +74,9 @@ public class SmsbDeviceServiceImpl implements ISmsbDeviceService {
 
     private final SmsbDeviceHeartRecordMapper smsbDeviceHeartRecordMapper;
 
+    @Value("${server.minio.ip}")
+    private String minioServerIp;
+
     /**
      * 查询设备
      *
@@ -312,6 +316,9 @@ public class SmsbDeviceServiceImpl implements ISmsbDeviceService {
         SmsbDeviceRunInfoVo result = new SmsbDeviceRunInfoVo();
         // 设备基础详情
         SmsbDeviceVo deviceVo = getDeviceCacheById(deviceId);
+        if (null == deviceVo) {
+            deviceVo = baseMapper.selectVoById(deviceId);
+        }
         SmsbDeviceRunInfo cacheRunInfo = RedisUtils.getCacheObject(DeviceConstants.REDIS_DEVICE_RUN_INFO_KEY + deviceVo.getIdentifier());
         if (cacheRunInfo == null) {
             // 设备运行详情
@@ -362,7 +369,7 @@ public class SmsbDeviceServiceImpl implements ISmsbDeviceService {
         } catch (IOException e) {
             return R.fail(Integer.parseInt(ResultCodeEnum.UPLOAD_FAIL.getValue()), ResultCodeEnum.UPLOAD_FAIL.getMessage());
         }
-        String imageUrl = uploadResult.getUrl();
+        String imageUrl = uploadResult.getUrl().replace("127.0.0.1",minioServerIp);
         // 保存到redis
         // RedisUtils.setObjectIfExists(redisKey, imageUrl, Duration.ofMinutes(1));
         // 发送sse消息,前端展示

+ 1 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/SmsbOtaPackageServiceImpl.java

@@ -84,6 +84,7 @@ public class SmsbOtaPackageServiceImpl implements ISmsbOtaPackageService {
         lqw.eq(StringUtils.isNotBlank(bo.getVersionCode()), SmsbOtaPackage::getVersionCode, bo.getVersionCode());
         lqw.like(StringUtils.isNotBlank(bo.getCreateUser()), SmsbOtaPackage::getCreateUser, bo.getCreateUser());
         lqw.eq(SmsbOtaPackage::getIsDel, 0);
+        lqw.orderByDesc(SmsbOtaPackage::getCreateTime);
         return lqw;
     }
 

+ 11 - 10
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/SmsbOtaRecordServiceImpl.java

@@ -96,6 +96,7 @@ public class SmsbOtaRecordServiceImpl implements ISmsbOtaRecordService {
         lqw.eq(bo.getOtaStatus() != null, SmsbOtaRecord::getOtaStatus, bo.getOtaStatus());
         lqw.eq(StringUtils.isNotBlank(bo.getCreateUser()), SmsbOtaRecord::getCreateUser, bo.getCreateUser());
         lqw.eq(bo.getIsDel() != null, SmsbOtaRecord::getIsDel, bo.getIsDel());
+        lqw.orderByDesc(SmsbOtaRecord::getCreateTime);
         return lqw;
     }
 
@@ -108,25 +109,25 @@ public class SmsbOtaRecordServiceImpl implements ISmsbOtaRecordService {
     @Override
     @Transactional
     public R<Void> insertByBo(SmsbOtaRecordBo bo) {
-        SmsbOtaRecord add = MapstructUtils.convert(bo, SmsbOtaRecord.class);
         List<Long> deviceIds = bo.getDeviceIds();
         if (CollectionUtil.isEmpty(deviceIds)) {
             return R.fail(Integer.parseInt(ResultCodeEnum.DEVICE_IDS_IS_NULL.getValue()), ResultCodeEnum.DEVICE_IDS_IS_NULL.getMessage());
         }
         // 根据fileId 查询OTA升级文件
         SmsbOtaPackageVo smsbOtaPackageVo = smsbOtaPackageMapper.selectVoById(bo.getFileId());
-        add.setFileName(smsbOtaPackageVo.getFileName());
-        add.setFileUrl(smsbOtaPackageVo.getFileUrl());
-        add.setMd5(smsbOtaPackageVo.getMd5());
-        add.setFileSize(Math.toIntExact(smsbOtaPackageVo.getFileSize()));
-        add.setVersionCode(smsbOtaPackageVo.getVersionCode());
-        add.setVersionName(smsbOtaPackageVo.getVersionName());
-        add.setOtaStatus(DeviceConstants.DEVICE_OTA_STATUS_1);
-        add.setCreateUser(LoginHelper.getLoginUser().getUsername());
-        add.setIsDel(DeviceConstants.DEVICE_DEL_FLAG_NO);
         List<SmsbOtaRecord> addList = new ArrayList<>();
         for (Long deviceId : deviceIds) {
+            SmsbOtaRecord add = MapstructUtils.convert(bo, SmsbOtaRecord.class);
             SmsbDeviceVo smsbDeviceVo = smsbDeviceService.getDeviceCacheById(deviceId);
+            add.setFileName(smsbOtaPackageVo.getFileName());
+            add.setFileUrl(smsbOtaPackageVo.getFileUrl());
+            add.setMd5(smsbOtaPackageVo.getMd5());
+            add.setFileSize(Math.toIntExact(smsbOtaPackageVo.getFileSize()));
+            add.setVersionCode(smsbOtaPackageVo.getVersionCode());
+            add.setVersionName(smsbOtaPackageVo.getVersionName());
+            add.setOtaStatus(DeviceConstants.DEVICE_OTA_STATUS_1);
+            add.setCreateUser(LoginHelper.getLoginUser().getUsername());
+            add.setIsDel(DeviceConstants.DEVICE_DEL_FLAG_NO);
             add.setDeviceId(deviceId);
             add.setDeviceName(smsbDeviceVo.getName());
             add.setId(null);

+ 4 - 0
smsb-modules/smsb-netty/src/main/java/com/inspur/netty/controller/DeviceController.java

@@ -320,6 +320,10 @@ public class DeviceController {
             for (Long deviceId : deviceIds) {
                 SmsbDeviceVo deviceVo = smsbDeviceService.getDeviceCacheById(deviceId);
                 if (deviceVo != null) {
+                    // 创建任务中心
+                    String taskParam = PushMessageType.DEVICE_CHECK_OTA.getValue();
+                    deviceTaskService.createNewDeviceTask(DeviceTaskConstants.DEVICE_TASK_OTA, deviceVo, taskParam);
+                    // 发送升级命令
                     String upgradeCmd = deviceVo.getIdentifier() + PushMessageType.DEVICE_CHECK_OTA.getValue() + NettyConstants.DATA_PACK_SEPARATOR;
                     boolean isSend = PushMsgUtil.sendV2(deviceVo.getIdentifier(), upgradeCmd);
                     log.info("发送设备 :{} 升级指令 : {}", deviceId, isSend);

+ 2 - 2
smsb-plus-ui/src/views/smsb/otaPackage/index.vue

@@ -33,13 +33,13 @@
         <el-table v-loading="loading" :data="otaPackageList" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="55" align="center" />
           <el-table-column label="主键ID" align="left" prop="id" v-if="true" width="180" />
-          <el-table-column label="版本名称" align="center" prop="versionName" width="100" />
+          <el-table-column label="版本名称" align="center" prop="versionName" width="120" :show-overflow-tooltip="true"/>
           <el-table-column label="版本号" align="left" prop="versionCode" width="100" :show-overflow-tooltip="true" />
           <el-table-column label="文件大小" align="left" prop="fileSize" width="100" :show-overflow-tooltip="true" />
           <el-table-column label="文件名称" align="left" prop="fileName" width="250" :show-overflow-tooltip="true" />
           <el-table-column label="下载路径" align="left" prop="fileUrl" :show-overflow-tooltip="true" width="200" />
           <el-table-column label="MD5" align="left" prop="md5" width="250" :show-overflow-tooltip="true" />
-          <el-table-column label="状态" align="center" prop="status" width="80" />
+<!--          <el-table-column label="状态" align="center" prop="status" width="80" />-->
           <el-table-column label="创建时间" align="left" prop="createTime" width="160" />
           <el-table-column label="创建人" align="center" prop="createUser" width="80" :show-overflow-tooltip="true" />
           <el-table-column label="备注" align="left" prop="remark" :show-overflow-tooltip="true" />