From c88f44a7d604bf91e22a5cb076018884a01a6261 Mon Sep 17 00:00:00 2001
From: Van333 <van666666@foxmail.com>
Date: 星期六, 19 十一月 2022 15:11:17 +0800
Subject: [PATCH] 替换阿里oss为本地minio,关闭对时存在定时任务时睡眠10min
---
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java | 176 ++++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 132 insertions(+), 44 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java
index 72c8918..5104a94 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java
@@ -6,20 +6,27 @@
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.iot.model.v20180120.*;
import com.sandu.common.execption.BusinessException;
+import com.sandu.ximon.admin.dto.DeviceStatus;
+import com.sandu.ximon.admin.localMQTT.util.HexFrameUtils;
+import com.sandu.ximon.admin.localMQTT.util.MqttClientUtil;
import com.sandu.ximon.admin.manager.iot.frame.IRequestFrame;
import com.sandu.ximon.admin.manager.iot.frame.inner.BaseResponseInnerFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.dto.CommonFrame;
import com.sandu.ximon.admin.manager.iot.rrpc.dto.InvokeParam;
import com.sandu.ximon.admin.manager.iot.rrpc.dto.WrapResponseCommonFrame;
+import com.sandu.ximon.admin.manager.iot.rrpc.enums.DeviceStateEnum;
import com.sandu.ximon.admin.manager.iot.rrpc.topic.IBaseTopic;
import com.sandu.ximon.admin.manager.iot.rrpc.topic.ICustomizeTopic;
import com.sandu.ximon.admin.manager.iot.rrpc.util.FrameUtils;
-import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
+import java.util.ArrayList;
+import java.util.Base64;
import java.util.List;
import java.util.Map;
+
+import static com.sandu.ximon.admin.localMQTT.callback.StatusMqttCallBack.localMqttConnectStatusMap;
/**
* @author chenjiantian
@@ -52,20 +59,59 @@
}
@Override
- public CommonFrame sendRRPC(String deviceName, IRequestFrame iRequestFrame) {
- InvokeParam param = new InvokeParam();
- param.setOperate("1001");
- param.setFrame(iRequestFrame.getEncodeFrame());
- InvokeThingServiceResponse.Data data = invokeThing(deviceName, param);
- if (data == null) {
- return null;
- }
- String result = data.getResult();
- result = result.replace("\\", "");
- Map map = JSON.parseObject(result, Map.class);
- result = (String) map.get("msg");
- return FrameUtils.transformMessageToFrame(result);
+ public CommonFrame sendRRPC(String deviceName, InvokeParam invokeParam) {
+// InvokeThingServiceResponse.Data data = invokeThing(deviceName, invokeParam, false);
+// if (data == null) {
+// return null;
+// }
+// String result = data.getResult();
+// result = result.replace("\\", "");
+// Map map = JSON.parseObject(result, Map.class);
+// result = (String) map.get("msg");
+ String result = MqttClientUtil.sendMqttMsg(deviceName,invokeParam.getFrame());
+ return HexFrameUtils.transformMessageToFrame(result);
}
+
+ @Override
+ public CommonFrame sendRRPC(String deviceName, IRequestFrame iRequestFrame) {
+// InvokeParam param = new InvokeParam();
+// param.setOperate("1001");
+// param.setFrame(iRequestFrame.getEncodeFrame());
+// InvokeThingServiceResponse.Data data = invokeThing(deviceName, param, false);
+// if (data == null) {
+// return null;
+// }
+// String result = data.getResult();
+// result = result.replace("\\", "");
+// Map map = JSON.parseObject(result, Map.class);
+// result = (String) map.get("msg");
+ String frame = FrameUtils.transformMessageToFrame(iRequestFrame.getEncodeFrame()).toString();
+ String result = MqttClientUtil.sendMqttMsg(deviceName,frame);
+ log.info("鑷畾涔塻endRRPC:璇锋眰甯э細{},\n,鍝嶅簲甯�:{}",iRequestFrame.toString(),result);
+ return HexFrameUtils.transformMessageToFrame(result);
+ }
+
+ @Override
+ public CommonFrame sendRRPC(String deviceName, IRequestFrame iRequestFrame, boolean resendFlag) {
+// InvokeParam param = new InvokeParam();
+// param.setOperate("1001");
+// param.setFrame(iRequestFrame.getEncodeFrame());
+// InvokeThingServiceResponse.Data data = invokeThing(deviceName, param, true);
+// if (data == null) {
+// return null;
+// }
+// String result = data.getResult();
+// result = result.replace("\\", "");
+// Map map = JSON.parseObject(result, Map.class);
+// result = (String) map.get("msg");
+ String frame = FrameUtils.transformMessageToFrame(iRequestFrame.getEncodeFrame()).toString();
+ String result = MqttClientUtil.sendMqttMsg(deviceName,frame);
+ return HexFrameUtils.transformMessageToFrame(result);
+ }
+
+
+
+
/**
* 鍩虹閫氫俊鍚屾璋冪敤
@@ -143,14 +189,23 @@
@Override
public List<BatchGetDeviceStateResponse.DeviceStatus> batchGetDeviceState(List<String> deviceNames) {
- BatchGetDeviceStateRequest request = new BatchGetDeviceStateRequest();
- request.setDeviceNames(deviceNames);
- request.setProductKey(getProductKey());
- BatchGetDeviceStateResponse response = invokeSync(request);
- if (response != null && response.getSuccess()) {
- return response.getDeviceStatusList();
- }
- return null;
+ List<BatchGetDeviceStateResponse.DeviceStatus> statusList = new ArrayList<>();
+
+ deviceNames.forEach(l -> {
+ BatchGetDeviceStateResponse.DeviceStatus deviceStatus = new BatchGetDeviceStateResponse.DeviceStatus();
+ deviceStatus.setDeviceName(l);
+
+ if (localMqttConnectStatusMap.get(l)!=null &&
+ localMqttConnectStatusMap.get(l)== 0){
+ deviceStatus.setStatus("OFFLINE");
+ }else {
+ deviceStatus.setStatus("ONLINE");
+ }
+ statusList.add(deviceStatus);
+ });
+
+
+ return statusList;
}
/**
@@ -161,20 +216,26 @@
* @param param 鍙傛暟
* @return 璁惧杩斿洖鐨勭粨鏋�
*/
- protected InvokeThingServiceResponse.Data invokeThing(String deviceName, InvokeParam param) {
+ protected InvokeThingServiceResponse.Data invokeThing(String deviceName, InvokeParam param, boolean resendFlag) {
// 濉厖鏈嶅姟璋冪敤鐨勫弬鏁�
InvokeThingServiceRequest request = new InvokeThingServiceRequest();
// 璁惧璇佷功涔媝roductKey
request.setProductKey(getProductKey());
// 璁惧璇佷功涔媎eviceName
request.setDeviceName(deviceName);
+ request.setSysReadTimeout(5000);
// 瑕佽皟鐢ㄧ殑鏈嶅姟鏍囪瘑绗︼紝鍙栧喅浜庢湇鍔$瀹氫箟 鐩墠rrpc鏍囪瘑浠h〃鍚屾璋冪敤
request.setIdentifier("rrpc");
request.setArgs(JSON.toJSONString(param));
-
// 鑾峰緱鏈嶅姟璋冪敤鍝嶅簲
- return getAcsResponse(request, 1);
+ if (resendFlag) {
+ return getAcsResponse(request, true, 1);
+
+ } else {
+ return getAcsResponse(request, false, null);
+
+ }
}
/**
@@ -183,29 +244,56 @@
* @param request
* @return
*/
- private InvokeThingServiceResponse.Data getAcsResponse(InvokeThingServiceRequest request, int time) {
- if (time <= 3) {
+ private InvokeThingServiceResponse.Data getAcsResponse(InvokeThingServiceRequest request, boolean resendFlag, Integer time) {
+
+ if (resendFlag) {
+ //闇�瑕侀噸鍙�
+ if (time <= 2) {
+ InvokeThingServiceResponse response = null;
+ try {
+ response = getClient().getAcsResponse(request);
+ if (response == null) {
+ log.error("璋冪敤rrpc澶辫触锛屽搷搴斾负绌猴紒");
+ return getAcsResponse(request, true, time + 1);
+ }
+ if (!response.getSuccess()) {
+ log.error("璋冪敤rrpc澶辫触锛�" + response.getErrorMessage());
+ return getAcsResponse(request, true, time + 1);
+ } else {
+ // 鏈嶅姟璋冪敤鎴愬姛锛屼粎浠h〃鍙戦�佹湇鍔℃寚浠ょ殑鎴愬姛锛屼笉浠h〃鎵ц鏈嶅姟鏈韩鏄惁鎴愬姛
+ return response.getData();
+ }
+ } catch (Exception e) {
+ return getAcsResponse(request, true, time + 1);
+// throw new BusinessException("閿欒淇℃伅锛�" + e.getMessage());
+ }
+ } else {
+ throw new BusinessException("纭欢璇锋眰澶辫触锛岃妫�鏌ョ‖浠惰澶囷紒");
+ }
+
+ } else {
+ //涓嶉渶瑕侀噸鍙�
InvokeThingServiceResponse response = null;
try {
response = getClient().getAcsResponse(request);
- if (response == null) {
- log.error("璋冪敤rrpc澶辫触锛屽搷搴斾负绌猴紒");
- Thread.sleep(100);
- return getAcsResponse(request, time + 1);
- }
- if (!response.getSuccess()) {
- log.error("璋冪敤rrpc澶辫触锛�" + response.getErrorMessage());
- Thread.sleep(100);
- return getAcsResponse(request, time + 1);
- } else {
- // 鏈嶅姟璋冪敤鎴愬姛锛屼粎浠h〃鍙戦�佹湇鍔℃寚浠ょ殑鎴愬姛锛屼笉浠h〃鎵ц鏈嶅姟鏈韩鏄惁鎴愬姛
- return response.getData();
- }
- } catch (Exception e) {
- throw new BusinessException("閿欒淇℃伅锛�" + e.getMessage());
+ } catch (ClientException e) {
+ e.printStackTrace();
+ throw new BusinessException("纭欢璇锋眰澶辫触锛岃妫�鏌ョ‖浠惰澶囷紒");
}
- } else {
- throw new BusinessException("纭欢璇锋眰澶辫触锛岃妫�鏌ョ‖浠惰澶囷紒");
+ if (response == null) {
+ throw new BusinessException("璋冪敤rrpc澶辫触锛屽搷搴斾负绌猴紒");
+ }
+ if (!response.getSuccess()) {
+ throw new BusinessException("璋冪敤rrpc澶辫触锛�" + response.getErrorMessage());
+ }
+ // 鏈嶅姟璋冪敤鎴愬姛锛屼粎浠h〃鍙戦�佹湇鍔℃寚浠ょ殑鎴愬姛锛屼笉浠h〃鎵ц鏈嶅姟鏈韩鏄惁鎴愬姛
+ if (response.getSuccess()) {
+ // 浠呭悓姝ユ湇鍔℃湁result
+ return response.getData();
+ }
+ return null;
}
+
+
}
}
--
Gitblit v1.9.3