升级调整
This commit is contained in:
@@ -0,0 +1,56 @@
|
|||||||
|
package com.njcn.zlevent.pojo.dto;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author caozehui
|
||||||
|
* @data 2026-04-27
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class TimeSyncRequestDTO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消息请求的唯一标识
|
||||||
|
*/
|
||||||
|
@JSONField(name = "guid")
|
||||||
|
private String guid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备ID
|
||||||
|
*/
|
||||||
|
@JSONField(name = "Dev_id")
|
||||||
|
private String devId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前置Id
|
||||||
|
*/
|
||||||
|
@JSONField(name = "FrontId")
|
||||||
|
private String frontId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 前置进程号
|
||||||
|
*/
|
||||||
|
@JSONField(name = "Node")
|
||||||
|
private Integer node;
|
||||||
|
|
||||||
|
@JSONField(name = "Detail")
|
||||||
|
private TimeSyncRequestDTO.Detail detail;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class Detail {
|
||||||
|
/**
|
||||||
|
* 数据类型,代表特定功能
|
||||||
|
*/
|
||||||
|
@JSONField(name = "Type")
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 详情
|
||||||
|
*/
|
||||||
|
@JSONField(name = "Msg")
|
||||||
|
private Map<String, Object> msg;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -50,6 +50,12 @@ public class UpgradeRequestDTO {
|
|||||||
* 详情
|
* 详情
|
||||||
*/
|
*/
|
||||||
@JSONField(name = "Msg")
|
@JSONField(name = "Msg")
|
||||||
private Map<String, Object> msg;
|
private UpgradeRequestDTO.Msg msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class Msg {
|
||||||
|
@JSONField(name = "Name")
|
||||||
|
private String name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,12 @@ import com.njcn.access.enums.TypeEnum;
|
|||||||
import com.njcn.access.utils.SendMessageUtil;
|
import com.njcn.access.utils.SendMessageUtil;
|
||||||
import com.njcn.csdevice.api.CsEdDataFeignClient;
|
import com.njcn.csdevice.api.CsEdDataFeignClient;
|
||||||
import com.njcn.csdevice.api.CsSoftInfoFeignClient;
|
import com.njcn.csdevice.api.CsSoftInfoFeignClient;
|
||||||
|
import com.njcn.csdevice.api.CsUpgradeLogsFeignClient;
|
||||||
import com.njcn.csdevice.api.EquipmentFeignClient;
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsEdDataPO;
|
||||||
import com.njcn.csdevice.pojo.po.CsSoftInfoPO;
|
import com.njcn.csdevice.pojo.po.CsSoftInfoPO;
|
||||||
import com.njcn.csdevice.pojo.vo.CsEdDataVO;
|
import com.njcn.csdevice.pojo.po.CsUpgradeLogs;
|
||||||
import com.njcn.middle.rocket.domain.BaseMessage;
|
import com.njcn.middle.rocket.domain.BaseMessage;
|
||||||
import com.njcn.oss.utils.FileStorageUtil;
|
import com.njcn.oss.utils.FileStorageUtil;
|
||||||
import com.njcn.redis.pojo.enums.AppRedisKey;
|
import com.njcn.redis.pojo.enums.AppRedisKey;
|
||||||
@@ -23,7 +25,6 @@ import com.njcn.zlevent.service.IDeviceService;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -46,6 +47,7 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
private final RedisUtil redisUtil;
|
private final RedisUtil redisUtil;
|
||||||
private final MqttPublisher publisher;
|
private final MqttPublisher publisher;
|
||||||
private final FileStorageUtil fileStorageUtil;
|
private final FileStorageUtil fileStorageUtil;
|
||||||
|
private final CsUpgradeLogsFeignClient csUpgradeLogsFeignClient;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startWorkingLog(String devId) {
|
public void startWorkingLog(String devId) {
|
||||||
@@ -98,9 +100,9 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean timeSync(String devId) {
|
public boolean timeSync(String devId) {
|
||||||
// List<CsEquipmentDeliveryDTO> listHttpResult = equipmentFeignClient.queryDeviceById(Collections.singletonList(devId)).getData();
|
List<CsEquipmentDeliveryDTO> listHttpResult = equipmentFeignClient.queryDeviceById(Collections.singletonList(devId)).getData();
|
||||||
//
|
|
||||||
// BaseMessage message = new BaseMessage();
|
BaseMessage message = new BaseMessage();
|
||||||
// FileDownloadRequestDTO requestDTO = new FileDownloadRequestDTO();
|
// FileDownloadRequestDTO requestDTO = new FileDownloadRequestDTO();
|
||||||
// requestDTO.setGuid(listHttpResult.get(0).getNodeId());
|
// requestDTO.setGuid(listHttpResult.get(0).getNodeId());
|
||||||
// requestDTO.setNode(listHttpResult.get(0).getNodeProcess());
|
// requestDTO.setNode(listHttpResult.get(0).getNodeProcess());
|
||||||
@@ -181,97 +183,75 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
List<CsEquipmentDeliveryDTO> listHttpResult = equipmentFeignClient.queryDeviceById(Collections.singletonList(devId)).getData();
|
List<CsEquipmentDeliveryDTO> listHttpResult = equipmentFeignClient.queryDeviceById(Collections.singletonList(devId)).getData();
|
||||||
CsEquipmentDeliveryDTO csEquipmentDeliveryDTO = listHttpResult.get(0);
|
CsEquipmentDeliveryDTO csEquipmentDeliveryDTO = listHttpResult.get(0);
|
||||||
|
|
||||||
CsEdDataVO csEdDataVO = csEdDataFeignClient.findByDevTypeId(edDataId).getData();
|
CsEdDataPO csEdDataPO = csEdDataFeignClient.getById(edDataId).getData();
|
||||||
String filePath = csEdDataVO.getFilePath();
|
String filePath = csEdDataPO.getFilePath();
|
||||||
|
|
||||||
FileUploadRequestDTO fileUploadRequestDTO = new FileUploadRequestDTO();
|
// 装置升级日志
|
||||||
fileUploadRequestDTO.setDevId(devId);
|
CsUpgradeLogs csUpgradeLogs = new CsUpgradeLogs();
|
||||||
fileUploadRequestDTO.setGuid(IdUtil.simpleUUID());
|
csUpgradeLogs.setDevId(devId);
|
||||||
fileUploadRequestDTO.setNode(csEquipmentDeliveryDTO.getNodeProcess());
|
csUpgradeLogs.setVersionNo(csEdDataPO.getVersionNo());
|
||||||
fileUploadRequestDTO.setFrontId(csEquipmentDeliveryDTO.getNodeId());
|
csUpgradeLogs.setResult(0);
|
||||||
|
|
||||||
FileUploadRequestDTO.Detail detail1 = new FileUploadRequestDTO.Detail();
|
UpgradeRequestDTO requestDTO = new UpgradeRequestDTO();
|
||||||
detail1.setType(Integer.parseInt(TypeEnum.FILE_UPLOAD.getCode()));
|
requestDTO.setDevId(devId);
|
||||||
|
requestDTO.setGuid(IdUtil.simpleUUID());
|
||||||
|
requestDTO.setNode(csEquipmentDeliveryDTO.getNodeProcess());
|
||||||
|
requestDTO.setFrontId(csEquipmentDeliveryDTO.getNodeId());
|
||||||
|
|
||||||
FileUploadRequestDTO.Msg msg = new FileUploadRequestDTO.Msg();
|
UpgradeRequestDTO.Detail detail1 = new UpgradeRequestDTO.Detail();
|
||||||
|
detail1.setType(Integer.valueOf(TypeEnum.DEVICE_UPGRADE.getCode()));
|
||||||
|
UpgradeRequestDTO.Msg msg = new UpgradeRequestDTO.Msg();
|
||||||
msg.setName(filePath);
|
msg.setName(filePath);
|
||||||
msg.setRemoteName("");
|
|
||||||
detail1.setMsg(msg);
|
detail1.setMsg(msg);
|
||||||
|
requestDTO.setDetail(detail1);
|
||||||
|
|
||||||
fileUploadRequestDTO.setDetail(detail1);
|
BaseMessage message = new BaseMessage();
|
||||||
|
message.setMessageBody(JSON.toJSONString(requestDTO));
|
||||||
BaseMessage message1 = new BaseMessage();
|
|
||||||
message1.setMessageBody(JSON.toJSONString(fileUploadRequestDTO));
|
|
||||||
|
|
||||||
// 使用 Redis 存储 guid 用于后续查询
|
// 使用 Redis 存储 guid 用于后续查询
|
||||||
redisUtil.saveByKeyWithExpire(AppRedisKey.COMMON_REQUEST + fileUploadRequestDTO.getGuid(), "pending", 120L);
|
redisUtil.saveByKeyWithExpire(AppRedisKey.COMMON_REQUEST + requestDTO.getGuid(), "pending", 120L);
|
||||||
|
|
||||||
// 发送
|
// 发送
|
||||||
commonProducer.send(message1, fileUploadRequestDTO.getFrontId());
|
commonProducer.send(message, requestDTO.getFrontId());
|
||||||
|
|
||||||
// 轮询 Redis 等待响应
|
// 轮询 Redis 等待响应
|
||||||
FileUploadResponeDTO responseDTO = JSON.parseObject(sendMessageUtil.waitForResponse(fileUploadRequestDTO.getGuid(), 10), FileUploadResponeDTO.class);
|
UpgradeResponeDTO responeDTO = JSON.parseObject(sendMessageUtil.waitForResponse(requestDTO.getGuid(), 10), UpgradeResponeDTO.class);
|
||||||
FileUploadResponeDTO.Detail detail2 = responseDTO.getDetail();
|
UpgradeResponeDTO.Detail detail2 = responeDTO.getDetail();
|
||||||
|
|
||||||
if (detail2.getCode() == 200) {
|
if (detail2.getCode() == 200) {
|
||||||
UpgradeRequestDTO requestDTO = new UpgradeRequestDTO();
|
// 修改数据库记录
|
||||||
requestDTO.setDevId(devId);
|
String softinfoId = csEquipmentDeliveryDTO.getSoftinfoId();
|
||||||
requestDTO.setGuid(IdUtil.simpleUUID());
|
|
||||||
requestDTO.setNode(csEquipmentDeliveryDTO.getNodeProcess());
|
|
||||||
requestDTO.setFrontId(csEquipmentDeliveryDTO.getNodeId());
|
|
||||||
|
|
||||||
UpgradeRequestDTO.Detail detail3 = new UpgradeRequestDTO.Detail();
|
if (StrUtil.isNotBlank(softinfoId)) {
|
||||||
detail3.setType(Integer.valueOf(TypeEnum.DEVICE_UPGRADE.getCode()));
|
csSoftInfoFeignClient.removeSoftInfo(softinfoId);
|
||||||
detail3.setMsg(new HashMap<>());
|
|
||||||
|
|
||||||
requestDTO.setDetail(detail3);
|
|
||||||
BaseMessage message2 = new BaseMessage();
|
|
||||||
message2.setMessageBody(JSON.toJSONString(requestDTO));
|
|
||||||
|
|
||||||
// 使用 Redis 存储 guid 用于后续查询
|
|
||||||
redisUtil.saveByKeyWithExpire(AppRedisKey.COMMON_REQUEST + requestDTO.getGuid(), "pending", 120L);
|
|
||||||
|
|
||||||
// 发送
|
|
||||||
commonProducer.send(message2, requestDTO.getFrontId());
|
|
||||||
|
|
||||||
// 轮询 Redis 等待响应
|
|
||||||
UpgradeResponeDTO responeDTO = JSON.parseObject(sendMessageUtil.waitForResponse(requestDTO.getGuid(), 10), UpgradeResponeDTO.class);
|
|
||||||
UpgradeResponeDTO.Detail detail4 = responeDTO.getDetail();
|
|
||||||
|
|
||||||
if (detail4.getCode() == 200) {
|
|
||||||
// 修改数据库记录
|
|
||||||
String softinfoId = csEquipmentDeliveryDTO.getSoftinfoId();
|
|
||||||
|
|
||||||
CsSoftInfoPO softInfoPO = null;
|
|
||||||
if (StrUtil.isNotBlank(softinfoId)) {
|
|
||||||
csSoftInfoFeignClient.removeSoftInfo(softinfoId);
|
|
||||||
}
|
|
||||||
softInfoPO = new CsSoftInfoPO();
|
|
||||||
softInfoPO.setId(IdUtil.fastSimpleUUID());
|
|
||||||
softInfoPO.setAppCheck(csEdDataVO.getCrc());
|
|
||||||
softInfoPO.setAppDate(csEdDataVO.getVersionDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
|
|
||||||
softInfoPO.setAppVersion(csEdDataVO.getVersionNo());
|
|
||||||
softInfoPO.setOpAttr("r");
|
|
||||||
softInfoPO.setOsName("VxWorks");
|
|
||||||
softInfoPO.setOsVersion("VxWorks");
|
|
||||||
softInfoPO.setSoftUpdate("yes");
|
|
||||||
csSoftInfoFeignClient.saveSoftInfo(softInfoPO);
|
|
||||||
equipmentFeignClient.updateSoftInfo(csEquipmentDeliveryDTO.getNdid(), softInfoPO.getId());
|
|
||||||
|
|
||||||
// 重新获取升级后的版本信息
|
|
||||||
DevVersionResponeDTO.VersionInfo newVersionInfo = this.getDeviceVersion(devId);
|
|
||||||
if (newVersionInfo.getAppVersion().equals(csEdDataVO.getVersionNo()) && newVersionInfo.getCloudProtocolVer().equals(csEdDataVO.getVersionAgreement())) {
|
|
||||||
// 修改数据库记录
|
|
||||||
equipmentFeignClient.updateSoftInfo(csEquipmentDeliveryDTO.getNdid(), softInfoPO.getId());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
} else {
|
CsSoftInfoPO softInfoPO = new CsSoftInfoPO();
|
||||||
|
softInfoPO.setId(IdUtil.fastSimpleUUID());
|
||||||
|
softInfoPO.setAppCheck(csEdDataPO.getCrc());
|
||||||
|
softInfoPO.setAppDate(csEdDataPO.getVersionDate());
|
||||||
|
softInfoPO.setAppVersion(csEdDataPO.getVersionNo());
|
||||||
|
softInfoPO.setOpAttr("r");
|
||||||
|
softInfoPO.setOsName("VxWorks");
|
||||||
|
softInfoPO.setOsVersion("VxWorks");
|
||||||
|
softInfoPO.setSoftUpdate("yes");
|
||||||
|
csSoftInfoFeignClient.saveSoftInfo(softInfoPO);
|
||||||
|
equipmentFeignClient.updateSoftInfo(csEquipmentDeliveryDTO.getNdid(), softInfoPO.getId());
|
||||||
|
|
||||||
|
// 重新获取升级后的版本信息
|
||||||
|
DevVersionResponeDTO.VersionInfo newVersionInfo = this.getDeviceVersion(devId);
|
||||||
|
if (newVersionInfo.getAppVersion().equals(csEdDataPO.getVersionNo()) && newVersionInfo.getCloudProtocolVer().equals(csEdDataPO.getVersionAgreement())) {
|
||||||
|
// 修改数据库记录
|
||||||
|
equipmentFeignClient.updateSoftInfo(csEquipmentDeliveryDTO.getNdid(), softInfoPO.getId());
|
||||||
|
csUpgradeLogs.setResult(1);
|
||||||
|
|
||||||
|
csUpgradeLogsFeignClient.add(csUpgradeLogs);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
csUpgradeLogsFeignClient.add(csUpgradeLogs);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
csUpgradeLogsFeignClient.add(csUpgradeLogs);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -284,6 +264,25 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
requestDTO.setNode(listHttpResult.get(0).getNodeProcess());
|
requestDTO.setNode(listHttpResult.get(0).getNodeProcess());
|
||||||
requestDTO.setFrontId(listHttpResult.get(0).getNodeId());
|
requestDTO.setFrontId(listHttpResult.get(0).getNodeId());
|
||||||
|
|
||||||
return true;
|
RebootRequestDTO.Detail detail1 = new RebootRequestDTO.Detail();
|
||||||
|
detail1.setType(Integer.parseInt(TypeEnum.DEVICE_REBOOT.getCode()));
|
||||||
|
detail1.setMsg(new HashMap<>());
|
||||||
|
requestDTO.setDetail(detail1);
|
||||||
|
|
||||||
|
BaseMessage message = new BaseMessage();
|
||||||
|
message.setMessageBody(JSON.toJSONString(requestDTO));
|
||||||
|
|
||||||
|
// 使用 Redis 存储 guid 用于后续查询
|
||||||
|
redisUtil.saveByKeyWithExpire(AppRedisKey.COMMON_REQUEST + requestDTO.getGuid(), "pending", 120L);
|
||||||
|
|
||||||
|
// 发送
|
||||||
|
commonProducer.send(message, requestDTO.getFrontId());
|
||||||
|
|
||||||
|
// 轮询 Redis 等待响应
|
||||||
|
RebootResponeDTO responeDTO = JSON.parseObject(sendMessageUtil.waitForResponse(requestDTO.getGuid(), 10), RebootResponeDTO.class);
|
||||||
|
if (responeDTO.getDetail().getCode() == 200) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user