wjc
2 天以前 db937c029a3f9dbaec86cbbc944ebbee3ece13be
app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -159,7 +159,6 @@
            }
//            //模拟设备列表数据
//            List<GatewayBean> mockData = getGatewayDeviceListMockData(3);
//            if (mockData.size() > 0) {
@@ -726,7 +725,7 @@
        }
        String requestUrl = HttpApi.POST_Device_Oid;
        JsonObject json = new JsonObject();
        json.addProperty("operationSource", "PROGRAM_ENERGY");//
        json.addProperty("operationSource", "PROGRAM_ENERGY");//操作来源:固定传:PROGRAM_ENERGY  = 能源,PROGRAM = studio 默认
        json.addProperty("homeId", homeId);
        JsonArray jsonArray = new JsonArray();
        for (int i = 0; i < oidList.size(); i++) {
@@ -786,6 +785,7 @@
        String requestUrl = HttpApi.POST_Device_IncrAdd;
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.addProperty("operationSource", "PROGRAM_ENERGY");//操作来源:固定传:PROGRAM_ENERGY  = 能源,PROGRAM = studio 默认
        JsonArray jsonArray = new JsonArray();
        for (int i = 0; i < oidList.size(); i++) {
            OidBean oidBean = oidList.get(i);
@@ -1156,6 +1156,33 @@
    }
    /**
     * 删除oid(逆变器,bms,电池包)
     *
     * @param mac          网关mac
     * @param linkCallBack 回调
     */
    public void deleteOid(String mac, JsonArray oidList, LinkCallBack<Boolean> linkCallBack) {
        String requestUrl = TopicApi.DELETE_DEVICE;
        TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, oidList, "", new HDLLinkCallBack() {
            @Override
            public void onSuccess(String json) {
                if (linkCallBack != null) {
                    linkCallBack.onSuccess(true);
                }
            }
            @Override
            public void onError(HDLLinkException e) {
                if (linkCallBack != null) {
                    linkCallBack.onError(e);
                }
            }
        });
    }
    /**
     * 获取逆变器列表,整合云端逆变器列表和本地逆变器列表(设备类型有:并网逆变器,离线逆变器,负载中心设备);
     * 注意:有外网,以云端设备列表为准;云端没有,本地存在,则删除本地;否则,没有外网只有局域网,以本地为主,搜索多少个设备就显示多少个
@@ -1204,7 +1231,7 @@
                                if (loadCentreDeviceList == null) {
                                    if (cloudCallBeak != null) {
                                        //没有数据,默认返回本地逆变器列表;
                                        cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, null,false));
                                        cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, null, false));
                                    }
                                    return;
                                }
@@ -1216,7 +1243,7 @@
                            public void onFailure(HDLException e) {
                                //向云端获取负载中心设备列表失败后,默认返回本地逆变器列表;
                                if (cloudCallBeak != null) {
                                    cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, null,false));
                                    cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, null, false));
                                }
                            }
                        });
@@ -1295,13 +1322,27 @@
        if (list == null || list.size() == 0) {
            //云端没有绑定逆变器,默认返回本地逆变器列表;
            if (cloudCallBeak != null) {
                cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, list,false));
                cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, list, false));
            }
            return;
        }
        AtomicInteger atomicInteger = new AtomicInteger(0);
        for (int i = 0; i < list.size(); i++) {
            CloudInverterDeviceBean cloudInverterDeviceBean = list.get(i);
            if (cloudInverterDeviceBean == null || !cloudInverterDeviceBean.isActivate()) {
                //未激活设备
                atomicInteger.set(atomicInteger.get() + 1);
                //注意:这个逆变器只能本地控制(因为拿不到mqtt通讯秘钥以及GatewayID,无法远程控制)
                //更新逆变器本地缓存信息
                refreshGatewayCacheData(false, cloudInverterDeviceBean, null, homeId);
                //到最后一条,才处理回调
                if (atomicInteger.get() == list.size()) {
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, list, false));
                    }
                }
                HdlLogLogic.print("设备未激活(mac:" + cloudInverterDeviceBean.getOsn() + "))", true);
            }
            //获取远程设备通讯信息(拿到网关ID,mqtt通讯秘钥)
            getDeviceRemoteInfo(homeId, cloudInverterDeviceBean.getSpk(), cloudInverterDeviceBean.getOsn(), new CloudCallBeak<DeviceRemoteInfo>() {
                @Override
@@ -1312,7 +1353,7 @@
                    //到最后一条,才处理回调
                    if (atomicInteger.get() == list.size()) {
                        if (cloudCallBeak != null) {
                            cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, list,false));
                            cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, list, false));
                        }
                    }
                }
@@ -1326,7 +1367,7 @@
                    //到最后一条,才处理回调
                    if (atomicInteger.get() == list.size()) {
                        if (cloudCallBeak != null) {
                            cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, list,false));
                            cloudCallBeak.onSuccess(IntegrateCloudAndLocalData(homeId, list, false));
                        }
                    }
                    HdlLogLogic.print("获取设备远程通讯信息失败(mac:" + cloudInverterDeviceBean.getOsn() + ")------" + e.getMsg() + "(" + e.getCode() + ")", true);
@@ -1804,6 +1845,7 @@
            gatewayBean.setDevice_model(cloudInverterDeviceBean.getOmodel());//设备型号
        }
        gatewayBean.setSpk(cloudInverterDeviceBean.getSpk());//设备spk
        gatewayBean.setActivate(cloudInverterDeviceBean.isActivate());//是否激活设备(true:激活;false:未激活)
    }