From 3b676f0cf83872a79bf627a9024e37b3d1820e3d Mon Sep 17 00:00:00 2001
From: chenjiantian <214228265@qq.com>
Date: 星期一, 13 十二月 2021 11:08:18 +0800
Subject: [PATCH] 基础通信
---
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java | 62 +++++++++++++++++++++---------
1 files changed, 43 insertions(+), 19 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 d1f2407..dcdb366 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
@@ -13,30 +13,17 @@
import com.sandu.ximon.admin.manager.iot.rrpc.dto.WrapResponseCommonFrame;
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 org.springframework.beans.BeanUtils;
import java.util.List;
+import java.util.Map;
/**
* @author chenjiantian
* @date 2021/12/2 18:21
*/
public abstract class BaseInvokeSyncService implements IInvoke, IBaseTopic, ICustomizeTopic {
-
- /**
- * 鑾峰彇浜у搧鍚�
- *
- * @return 浜у搧鍚�
- */
- public abstract String getProductKey();
-
- /**
- * 鍙戦�乺rpc 璇锋眰
- *
- * @param deviceName 璁惧鍚�
- * @param iRequestFrame 缂栫爜甯�
- * @return 杩斿洖鐨勮В鐮佸抚瀹炰綋绫�
- */
- public abstract CommonFrame sendRRPC(String deviceName, IRequestFrame iRequestFrame);
/**
* 鍙戦�乺rpc 璇锋眰
@@ -46,7 +33,37 @@
* @param clz 鍐呴儴甯у搷搴斿疄浣撶被 濡傛灉涓嶆兂鑷繁瑙f瀽 鍙甫涓�
* @return 杩斿洖鐨勮В鐮佸抚瀹炰綋绫� 鍚屾椂鎶婂唴閮ㄥ抚瑙g爜涔嬪悗涔熸惡甯︿笂
*/
- public abstract <T extends BaseResponseInnerFrame<T>> WrapResponseCommonFrame<T> sendRRPC(String deviceName, IRequestFrame iRequestFrame, Class<T> clz);
+ public <T extends BaseResponseInnerFrame<T>> WrapResponseCommonFrame<T> sendRRPC(String deviceName, IRequestFrame iRequestFrame, Class<T> clz){
+ CommonFrame commonFrame = sendRRPC(deviceName, iRequestFrame);
+ if (commonFrame == null) {
+ throw new BusinessException("rrpc璇锋眰澶辫触");
+ }
+ WrapResponseCommonFrame<T> responseCommonFrame = new WrapResponseCommonFrame<>();
+ BeanUtils.copyProperties(commonFrame, responseCommonFrame);
+ try {
+ responseCommonFrame.setResponseInnerFrame(clz.newInstance().transformFrame(responseCommonFrame.getPayload()));
+ } catch (InstantiationException | IllegalAccessException e) {
+ throw new BusinessException(String.format("鎵句笉鍒�%s鐨勬瀯閫犲嚱鏁�", clz.getName()));
+ }
+ return responseCommonFrame;
+ }
+
+ @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");
+ CommonFrame connectFrame = FrameUtils.transformMessageToFrame(result);
+ return connectFrame;
+ }
/**
* 鍩虹閫氫俊鍚屾璋冪敤
@@ -134,8 +151,15 @@
return null;
}
- @Override
- public InvokeThingServiceResponse.Data invokeThing(String deviceName, InvokeParam param) {
+ /**
+ * 璋冪敤鑷畾涔塼opic
+ * https://help.aliyun.com/document_detail/69584.htm?spm=a2c4g.11186623.0.0.25b33982bSQSom#reference-snk-mrz-wdb
+ *
+ * @param deviceName 璁惧鍚�
+ * @param param 鍙傛暟
+ * @return 璁惧杩斿洖鐨勭粨鏋�
+ */
+ protected InvokeThingServiceResponse.Data invokeThing(String deviceName, InvokeParam param) {
// 濉厖鏈嶅姟璋冪敤鐨勫弬鏁�
InvokeThingServiceRequest request = new InvokeThingServiceRequest();
// 璁惧璇佷功涔媝roductKey
--
Gitblit v1.9.3