mac
2024-03-11 17484333e6621a0285b61d50ceedc8698861120b
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -18,6 +18,7 @@
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.linkpm.sdk.core.exception.HDLException;
@@ -70,6 +71,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import io.dcloud.feature.unimp.DCUniMPJSCallback;
import okhttp3.ResponseBody;
@@ -166,6 +168,11 @@
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD: {
                        this.uniAddInverterDeviceToCloud(mode_type, data, callback);
                    }
                    //添加多个逆变器到云端
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD_All: {
                        this.uniAddAllInverterDeviceToCloud(mode_type, data, callback);
                    }
                    break;
                    //删除云端逆变器
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_DEL: {
@@ -1182,6 +1189,7 @@
    }
    /**
     * 逆变器添加到云端上
     *
@@ -1231,6 +1239,73 @@
    }
    /**
     * 多个逆变器添加到云端上
     *
     * @param data     uni数据
     * @param callback uni回调
     */
    private void uniAddAllInverterDeviceToCloud(String type, Object data, DCUniMPJSCallback callback) {
//        com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(data);
        String mac = getKeyValue("mac", getKeyValue("data", data));
        String homeId = UserConfigManage.getInstance().getHomeId();
        GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(mac);
        if (gatewayBean == null) {
            uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback);
            return;
        }
        List<GatewayBean> list = new ArrayList<>();
        //记录条数
        AtomicInteger atomicInteger = new AtomicInteger(0);
        final boolean[] is_boolean = {false};
        for (int i = 0; i < list.size(); i++) {
            HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, mac, new LinkCallBack<Boolean>() {
                @Override
                public void onSuccess(Boolean obj) {
                    HdlDeviceLogic.getInstance().editGatewayParam(mac, new LinkCallBack<Boolean>() {
                        @Override
                        public void onSuccess(Boolean obj) {
                            atomicInteger.set(atomicInteger.get() + 1);
                            //最后一条才做添加逆变器逻辑处理
                            if (atomicInteger.get() == list.size()) {
                                HdlDeviceLogic.getInstance().addAllInverterDeviceToCloud(homeId, mac,list , new CloudCallBeak<Boolean>() {
                                    @Override
                                    public void onSuccess(Boolean obj) {
                                        uniCallbackData(type, null, callback);
                                    }
                                    @Override
                                    public void onFailure(HDLException e) {
                                        uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                                    }
                                });
                            }
                        }
                        @Override
                        public void onError(HDLLinkException e) {
                            uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                            is_boolean[0] = true;
                        }
                    });
                }
                @Override
                public void onError(HDLLinkException e) {
                    uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
                    is_boolean[0] = true;
                }
            });
            if (is_boolean[0]) {
                //只有中间有一条指令设置失败,默认全部失败;
                break;
            }
        }
    }
    /**
     * 删除云端上逆变器
     *
     * @param data     uni数据