升级调整
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")
|
||||
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.csdevice.api.CsEdDataFeignClient;
|
||||
import com.njcn.csdevice.api.CsSoftInfoFeignClient;
|
||||
import com.njcn.csdevice.api.CsUpgradeLogsFeignClient;
|
||||
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||
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.vo.CsEdDataVO;
|
||||
import com.njcn.csdevice.pojo.po.CsUpgradeLogs;
|
||||
import com.njcn.middle.rocket.domain.BaseMessage;
|
||||
import com.njcn.oss.utils.FileStorageUtil;
|
||||
import com.njcn.redis.pojo.enums.AppRedisKey;
|
||||
@@ -23,7 +25,6 @@ import com.njcn.zlevent.service.IDeviceService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.ZoneId;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -46,6 +47,7 @@ public class DeviceServiceImpl implements IDeviceService {
|
||||
private final RedisUtil redisUtil;
|
||||
private final MqttPublisher publisher;
|
||||
private final FileStorageUtil fileStorageUtil;
|
||||
private final CsUpgradeLogsFeignClient csUpgradeLogsFeignClient;
|
||||
|
||||
@Override
|
||||
public void startWorkingLog(String devId) {
|
||||
@@ -98,9 +100,9 @@ public class DeviceServiceImpl implements IDeviceService {
|
||||
|
||||
@Override
|
||||
public boolean timeSync(String devId) {
|
||||
// List<CsEquipmentDeliveryDTO> listHttpResult = equipmentFeignClient.queryDeviceById(Collections.singletonList(devId)).getData();
|
||||
//
|
||||
// BaseMessage message = new BaseMessage();
|
||||
List<CsEquipmentDeliveryDTO> listHttpResult = equipmentFeignClient.queryDeviceById(Collections.singletonList(devId)).getData();
|
||||
|
||||
BaseMessage message = new BaseMessage();
|
||||
// FileDownloadRequestDTO requestDTO = new FileDownloadRequestDTO();
|
||||
// requestDTO.setGuid(listHttpResult.get(0).getNodeId());
|
||||
// requestDTO.setNode(listHttpResult.get(0).getNodeProcess());
|
||||
@@ -181,97 +183,75 @@ public class DeviceServiceImpl implements IDeviceService {
|
||||
List<CsEquipmentDeliveryDTO> listHttpResult = equipmentFeignClient.queryDeviceById(Collections.singletonList(devId)).getData();
|
||||
CsEquipmentDeliveryDTO csEquipmentDeliveryDTO = listHttpResult.get(0);
|
||||
|
||||
CsEdDataVO csEdDataVO = csEdDataFeignClient.findByDevTypeId(edDataId).getData();
|
||||
String filePath = csEdDataVO.getFilePath();
|
||||
CsEdDataPO csEdDataPO = csEdDataFeignClient.getById(edDataId).getData();
|
||||
String filePath = csEdDataPO.getFilePath();
|
||||
|
||||
FileUploadRequestDTO fileUploadRequestDTO = new FileUploadRequestDTO();
|
||||
fileUploadRequestDTO.setDevId(devId);
|
||||
fileUploadRequestDTO.setGuid(IdUtil.simpleUUID());
|
||||
fileUploadRequestDTO.setNode(csEquipmentDeliveryDTO.getNodeProcess());
|
||||
fileUploadRequestDTO.setFrontId(csEquipmentDeliveryDTO.getNodeId());
|
||||
// 装置升级日志
|
||||
CsUpgradeLogs csUpgradeLogs = new CsUpgradeLogs();
|
||||
csUpgradeLogs.setDevId(devId);
|
||||
csUpgradeLogs.setVersionNo(csEdDataPO.getVersionNo());
|
||||
csUpgradeLogs.setResult(0);
|
||||
|
||||
FileUploadRequestDTO.Detail detail1 = new FileUploadRequestDTO.Detail();
|
||||
detail1.setType(Integer.parseInt(TypeEnum.FILE_UPLOAD.getCode()));
|
||||
UpgradeRequestDTO requestDTO = new UpgradeRequestDTO();
|
||||
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.setRemoteName("");
|
||||
detail1.setMsg(msg);
|
||||
requestDTO.setDetail(detail1);
|
||||
|
||||
fileUploadRequestDTO.setDetail(detail1);
|
||||
|
||||
BaseMessage message1 = new BaseMessage();
|
||||
message1.setMessageBody(JSON.toJSONString(fileUploadRequestDTO));
|
||||
BaseMessage message = new BaseMessage();
|
||||
message.setMessageBody(JSON.toJSONString(requestDTO));
|
||||
|
||||
// 使用 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 等待响应
|
||||
FileUploadResponeDTO responseDTO = JSON.parseObject(sendMessageUtil.waitForResponse(fileUploadRequestDTO.getGuid(), 10), FileUploadResponeDTO.class);
|
||||
FileUploadResponeDTO.Detail detail2 = responseDTO.getDetail();
|
||||
UpgradeResponeDTO responeDTO = JSON.parseObject(sendMessageUtil.waitForResponse(requestDTO.getGuid(), 10), UpgradeResponeDTO.class);
|
||||
UpgradeResponeDTO.Detail detail2 = responeDTO.getDetail();
|
||||
|
||||
if (detail2.getCode() == 200) {
|
||||
UpgradeRequestDTO requestDTO = new UpgradeRequestDTO();
|
||||
requestDTO.setDevId(devId);
|
||||
requestDTO.setGuid(IdUtil.simpleUUID());
|
||||
requestDTO.setNode(csEquipmentDeliveryDTO.getNodeProcess());
|
||||
requestDTO.setFrontId(csEquipmentDeliveryDTO.getNodeId());
|
||||
// 修改数据库记录
|
||||
String softinfoId = csEquipmentDeliveryDTO.getSoftinfoId();
|
||||
|
||||
UpgradeRequestDTO.Detail detail3 = new UpgradeRequestDTO.Detail();
|
||||
detail3.setType(Integer.valueOf(TypeEnum.DEVICE_UPGRADE.getCode()));
|
||||
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;
|
||||
if (StrUtil.isNotBlank(softinfoId)) {
|
||||
csSoftInfoFeignClient.removeSoftInfo(softinfoId);
|
||||
}
|
||||
} 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;
|
||||
}
|
||||
csUpgradeLogsFeignClient.add(csUpgradeLogs);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -284,6 +264,25 @@ public class DeviceServiceImpl implements IDeviceService {
|
||||
requestDTO.setNode(listHttpResult.get(0).getNodeProcess());
|
||||
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