2021与蓝度共同重构项目,服务端
chenjiantian
2021-12-13 3b676f0cf83872a79bf627a9024e37b3d1820e3d
基础通信
已修改3个文件
108 ■■■■■ 文件已修改
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/mainboard/MainBoardInvokeSyncService.java 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/topic/ICustomizeTopic.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/BaseInvokeSyncService.java
@@ -13,8 +13,11 @@
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
@@ -30,7 +33,37 @@
     * @param clz           内部帧响应实体类 如果不想自己解析 可带上
     * @return 返回的解码帧实体类 同时把内部帧解码之后也携带上
     */
    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;
    }
    /**
     * 基础通信同步调用
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/mainboard/MainBoardInvokeSyncService.java
@@ -33,49 +33,45 @@
        return PRODUCT_KEY;
    }
    @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;
    }
//    @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;
//    }
//
//    @Override
//    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 <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;
    }
    public static void main(String[] args) {
        String s = "FEA581000BFE010003FFFF004597147735AB2D28";
        System.out.println(FrameUtils.decodeReportMessage(s));
    }
    private static class SingletonClassInstance {
        private static final MainBoardInvokeSyncService INSTANCE = new MainBoardInvokeSyncService();
    }
    private MainBoardInvokeSyncService() {
    protected MainBoardInvokeSyncService() {
    }
    public static MainBoardInvokeSyncService getInstance() {
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/topic/ICustomizeTopic.java
@@ -2,8 +2,10 @@
import com.aliyuncs.iot.model.v20180120.InvokeThingServiceResponse;
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;
/**
 * @author chenjiantian
@@ -27,4 +29,5 @@
     * @return 返回的解码帧实体类
     */
    CommonFrame sendRRPC(String deviceName, IRequestFrame iRequestFrame);
}