wjc
2023-06-27 3d94f1da938ec81c6e666a1d6e09088769e0e538
2023年06月27日13:47:26

解决for请求网络问题
8个文件已修改
1 文件已重命名
216 ■■■■■ 已修改文件
app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java
@@ -8,7 +8,6 @@
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlResidenceLogic;
import com.hdl.photovoltaic.ui.bean.HouseInfoBean;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import java.util.ArrayList;
import java.util.List;
app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java
@@ -90,7 +90,7 @@
                    OkHttpClient okHttpClient = new OkHttpClient();
                    RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), getJson(json));
                    final Request request = new Request.Builder()
                            .url(fullUrl)//请求的url//
                            .url(fullUrl)//请求的url
                            .addHeader("Authorization", UserConfigManage.getInstance().getHeaderPrefix() + UserConfigManage.getInstance().getToken())
                            .post(requestBody)
                            .build();
@@ -111,7 +111,6 @@
                        call.enqueue(new Callback() {//异步
                            @Override
                            public void onFailure(@NonNull Call call, @NonNull IOException e) {
                                System.out.println("失败" + e.toString());
                                HdlLogLogic.print("http->回复->", "\r\n" + e.getMessage());
                            }
app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java
@@ -1,8 +1,6 @@
package com.hdl.photovoltaic.other;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
@@ -13,13 +11,10 @@
import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.ui.bean.HouseInfoBean;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import org.w3c.dom.Text;
import com.hdl.photovoltaic.ui.bean.HouseIdBean;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -48,6 +43,11 @@
        return sHdlResidenceLogic;
    }
    /**
     * 获取住宅列表
     *
     * @return 住宅列表
     */
    public List<HouseInfoBean> getHouseInfoList() {
        return houseInfoList;
    }
@@ -56,16 +56,21 @@
        this.houseInfoList = houseInfoList;
    }
    public List<HouseListBean> getHouseInfoBeanList() {
        return houseList;
    /**
     * 获取住宅ID列表
     *
     * @return 住宅ID列表
     */
    public List<HouseIdBean> getHouseIdList() {
        return houseIdList;
    }
    public void setHouseInfoBeanList(List<HouseListBean> houseListBeanList) {
        this.houseList = houseListBeanList;
    public void setHouseIdList(List<HouseIdBean> houseIdList) {
        this.houseIdList = houseIdList;
    }
    //住宅列表
    private List<HouseListBean> houseList = new ArrayList<>();
    //住宅ID列表
    private List<HouseIdBean> houseIdList = new ArrayList<>();
    //住宅详情列表
    private List<HouseInfoBean> houseInfoList = new ArrayList<>();
@@ -76,32 +81,32 @@
     * @param cloudCallBeak -
     */
    public void getHouseList(CloudCallBeak<Boolean> cloudCallBeak) {
        //获取住宅列表
        getResidenceList("", "", new CloudCallBeak<List<HouseListBean>>() {
        //获取住宅ID列表
        getResidenceList("", "", new CloudCallBeak<List<HouseIdBean>>() {
            @Override
            public void onSuccess(List<HouseListBean> houseListBeanList) {
                if (houseListBeanList != null && houseListBeanList.size() > 0) {
                    houseList.clear();
                    houseList.addAll(houseListBeanList);
                    //标记最后一条
            public void onSuccess(List<HouseIdBean> houseListBeanIDList) {
                if (houseListBeanIDList != null && houseListBeanIDList.size() > 0) {
                    houseIdList.clear();
                    houseIdList.addAll(houseListBeanIDList);
                    //记录请求条数
                    AtomicInteger atomicInteger = new AtomicInteger(0);
                    for (int i = 0; i < houseList.size(); i++) {
                        HouseListBean houseListBean = houseList.get(i);
                        atomicInteger.set(i);
                    for (int i = 0; i < houseIdList.size(); i++) {
                        HouseIdBean houseIdBean = houseIdList.get(i);
                        //获取住宅详情列表
                        getResidenceInfo(houseListBean.getHomeId(), new CloudCallBeak<HouseInfoBean>() {
                        getResidenceInfo(houseIdBean.getHomeId(), new CloudCallBeak<HouseInfoBean>() {
                            @Override
                            public void onSuccess(HouseInfoBean houseInfoBean) {
                                atomicInteger.set(atomicInteger.get() + 1);
                                if (houseInfoBean != null) {
                                    houseInfoBean.setHomeImage(houseListBean.getHomeImage());//电站图片
                                    houseInfoBean.setInstalledCapacity(houseListBean.getInstalledCapacity());//装机容量
                                    houseInfoBean.setPower(houseListBean.getPower());//发电功率
                                    houseInfoBean.setTodayElectricity(houseListBean.getTodayElectricity());//今天发电量
                                    houseInfoBean.setPowerStationStatus(houseListBean.getPowerStationStatus());//电站状态(电站状态    1:正常(运行),2:离线,3:连接中,4:故障)
                                    houseInfoBean.setHomeImage(houseIdBean.getHomeImage());//电站图片
                                    houseInfoBean.setInstalledCapacity(houseIdBean.getInstalledCapacity());//装机容量
                                    houseInfoBean.setPower(houseIdBean.getPower());//发电功率
                                    houseInfoBean.setTodayElectricity(houseIdBean.getTodayElectricity());//今天发电量
                                    houseInfoBean.setPowerStationStatus(houseIdBean.getPowerStationStatus());//电站状态(电站状态    1:正常(运行),2:离线,3:连接中,4:故障)
                                    //添加到本地缓存
                                    addHouseToLocalMemory(houseInfoBean);
                                }
                                if (atomicInteger.get() == houseList.size() - 1) {
                                if (atomicInteger.get() == houseIdList.size()) {
                                    //最后一条退出
                                    if (cloudCallBeak != null) {
                                        cloudCallBeak.onSuccess(true);
@@ -112,7 +117,9 @@
                            @Override
                            public void onFailure(Exception exception) {
                                if (atomicInteger.get() == houseList.size() - 1) {
                                atomicInteger.set(atomicInteger.get() + 1);
                                if (atomicInteger.get() == houseIdList.size()) {
                                    //最后一条退出
                                    if (cloudCallBeak != null) {
                                        cloudCallBeak.onFailure(exception);
                                    }
@@ -139,71 +146,12 @@
    }
    /**
     * 获取住宅(电站)列表
     * 获取住宅(电站)ID列表
     *
     * @param pageNo   当前页数 开始默认1
     * @param pageSize 一页大小 开始默认50
     * @param key      发电功率排序(powerSort);今日发电量排序(todayElectricitySort);创建时间排序(createTimeSort);
     * @param keyValue (descending:降序ascending:升序),
     */
    public void getResidenceList(int pageNo, int pageSize, String key, String keyValue, CloudCallBeak<Boolean> cloudCallBeak) {
        if (pageNo == 1) {
            //第一次进来清空列表
            houseList.clear();
        }
        String requestUrl = HttpApi.POST_PowerStation_List;
        JsonObject json = new JsonObject();
        if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(keyValue)) {
            json.addProperty(key, keyValue);//发电功率排序(descending:降序ascending:升序)
        }
//        json.addProperty("powerSort", "descending");//发电功率排序(descending:降序ascending:升序)
//        json.addProperty("todayElectricitySort", "descending");//今日发电量排序
//        json.addProperty("createTimeSort", "descending");//创建时间排序
//        json.addProperty("zoneType", "password");//区域
        json.addProperty("pageNo", pageNo);//页码
        json.addProperty("pageSize", pageSize);//页数
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(HttpResponsePack httpResponsePack) {
                if (httpResponsePack != null && httpResponsePack.getData() != null) {
                    Gson gson = new Gson();
                    String jsonStr = gson.toJson(httpResponsePack.getData());
                    HouseInfoBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseInfoBeanClass.class);
                    //添加【住宅】到本地缓存
                    houseList.addAll(houseInfoBeanClass.getList());
                    //总共有多少页
                    long totalPage = houseInfoBeanClass.totalPage;
                    if (totalPage == houseInfoBeanClass.getPageNo()) {
                        if (cloudCallBeak != null) {
                            cloudCallBeak.onSuccess(true);
                        }
                        return;
                    }
                    if (pageNo > totalPage) {
                        //当前请求的页数大于总页数,云端出错了立即返回去;
                        if (cloudCallBeak != null) {
                            cloudCallBeak.onSuccess(true);
                        }
                        return;
                    }
                    getResidenceList(pageNo + 1, pageSize, key, keyValue, cloudCallBeak);
                }
            }
            @Override
            public void onFailure(Exception exception) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(exception);
                }
            }
        });
    }
    public void getResidenceList(String key, String keyValue, CloudCallBeak<List<HouseListBean>> cloudCallBeak) {
    public void getResidenceList(String key, String keyValue, CloudCallBeak<List<HouseIdBean>> cloudCallBeak) {
        String requestUrl = HttpApi.POST_PowerStation_List;
        JsonObject json = new JsonObject();
@@ -216,14 +164,14 @@
//        json.addProperty("zoneType", "password");//区域
        json.addProperty("pageNo", 1);//页码
        json.addProperty("pageSize", pageSize);//页数
        List<HouseListBean> list = new ArrayList<>();
        List<HouseIdBean> list = new ArrayList<>();
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
            @Override
            public void onSuccess(HttpResponsePack httpResponsePack) {
                if (httpResponsePack != null && httpResponsePack.getData() != null) {
                    Gson gson = new Gson();
                    String jsonStr = gson.toJson(httpResponsePack.getData());
                    HouseInfoBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseInfoBeanClass.class);
                    HouseBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseBeanClass.class);
                    list.addAll(houseInfoBeanClass.getList());
                    //总共有多少页
                    long totalPage = houseInfoBeanClass.totalPage;
@@ -233,22 +181,21 @@
                        }
                        return;
                    }
                    //标记最后一条
                    AtomicBoolean isLast = new AtomicBoolean(false);
                    //记录请求条数
                    AtomicInteger atomicInteger = new AtomicInteger(0);
                    //从第二页获取数据
                    for (int i = 2; i <= totalPage; i++) {
                        if (totalPage == i) {
                            isLast.set(true);
                        }
                        json.addProperty("pageNo", i);//更新页码
                        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() {
                            @Override
                            public void onSuccess(HttpResponsePack httpResponsePack) {
                                atomicInteger.set(atomicInteger.get() + 1);
                                Gson gson = new Gson();
                                String jsonStr = gson.toJson(httpResponsePack.getData());
                                HouseInfoBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseInfoBeanClass.class);
                                HouseBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseBeanClass.class);
                                list.addAll(houseInfoBeanClass.getList());
                                if (isLast.get()) {
                                if (atomicInteger.get() == totalPage - 1) {
                                    //最后一条退出
                                    if (cloudCallBeak != null) {
                                        cloudCallBeak.onSuccess(list);
                                    }
@@ -257,7 +204,9 @@
                            @Override
                            public void onFailure(Exception exception) {
                                if (isLast.get()) {
                                atomicInteger.set(atomicInteger.get() + 1);
                                if (atomicInteger.get() == totalPage - 1) {
                                    //最后一条退出
                                    if (cloudCallBeak != null) {
                                        cloudCallBeak.onSuccess(list);
                                    }
@@ -285,7 +234,7 @@
    }
    /**
     * 获取住宅(电站)详情
     * 获取住宅(电站)ID详情
     *
     * @param homeId        住宅id
     * @param cloudCallBeak 回调
@@ -533,7 +482,7 @@
    }
    static class HouseInfoBeanClass {
    static class HouseBeanClass {
        //总条数
        private long totalCount;
@@ -544,7 +493,7 @@
        //页数
        private long pageSize;
        //电站列表
        private List<HouseListBean> list;
        private List<HouseIdBean> list;
        public long getTotalCount() {
            return totalCount;
@@ -578,11 +527,11 @@
            this.pageSize = pageSize;
        }
        public List<HouseListBean> getList() {
        public List<HouseIdBean> getList() {
            return list == null ? new ArrayList<>() : list;
        }
        public void setList(List<HouseListBean> list) {
        public void setList(List<HouseIdBean> list) {
            this.list = list;
        }
    }
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -65,7 +65,7 @@
                switch (type_value) {
                    case HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION: {
                        //创建
                        HdlResidenceLogic.getInstance().getResidenceList(1, 100, "", "", null);
                        HdlResidenceLogic.getInstance().getResidenceList("", "", null);
                    }
                    break;
app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
@@ -202,7 +202,7 @@
                        HdlAccountLogic.getInstance().loginByPassword(account, password, new CloudCallBeak<LoginUserBean>() {
                            @Override
                            public void onSuccess(LoginUserBean obj) {
                                HdlResidenceLogic.getInstance().getResidenceList(1,50,"","",new CloudCallBeak<Boolean>() {
                                HdlResidenceLogic.getInstance().getHouseList(new CloudCallBeak<Boolean>() {
                                    @Override
                                    public void onSuccess(Boolean obj) {
                                        hideLoading();
app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java
@@ -10,16 +10,16 @@
import androidx.recyclerview.widget.RecyclerView;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import com.hdl.photovoltaic.ui.bean.HouseIdBean;
import java.util.List;
public class HouseInfoAdapter extends RecyclerView.Adapter<HouseInfoAdapter.MyViewHolder> {
    private List<HouseListBean> mList;
    private List<HouseIdBean> mList;
    private OnclickListener noOnclickListener;//点击了的监听器
    public HouseInfoAdapter(List<HouseListBean> list) {
    public HouseInfoAdapter(List<HouseIdBean> list) {
        this.mList = list;
    }
@@ -32,8 +32,8 @@
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        HouseListBean houseListBean = this.mList.get(position);
        holder.homeNameTv.setText(houseListBean.getHomeName());
        HouseIdBean houseIdBean = this.mList.get(position);
        holder.homeNameTv.setText(houseIdBean.getHomeName());
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
@@ -51,7 +51,7 @@
    }
    public void setList(List<HouseListBean> list) {
    public void setList(List<HouseIdBean> list) {
        this.mList = list;
    }
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java
File was renamed from app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseListBean.java
@@ -2,7 +2,7 @@
import java.io.Serializable;
public class HouseListBean implements Serializable {
public class HouseIdBean implements Serializable {
    private String homeId;//电站id
    private String homeImage;//电站图片
    private String homeName;//电站名称
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java
@@ -1,6 +1,6 @@
package com.hdl.photovoltaic.ui.bean;
public class HouseInfoBean extends HouseListBean {
public class HouseInfoBean extends HouseIdBean {
    private Location location;//电站地址
    private String address;//详细地址
    private String latitude;//纬度
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -5,7 +5,6 @@
import android.content.pm.PackageManager;
import android.hardware.camera2.CameraManager;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
@@ -13,40 +12,26 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.FragmentHouseListBinding;
import com.hdl.photovoltaic.base.CustomBaseFragment;
import com.hdl.photovoltaic.databinding.LoadingConfirmInputBinding;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlResidenceLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.other.HdlUniLogic;
import com.hdl.photovoltaic.ui.MyPowerStationActivity;
import com.hdl.photovoltaic.ui.adapter.HouseInfoAdapter;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import com.hdl.photovoltaic.ui.device.FastScanActivity;
import com.hdl.photovoltaic.ui.bean.HouseIdBean;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
import com.hdl.photovoltaic.utils.PermissionUtils;
import com.hdl.photovoltaic.widget.ConfirmationInputDialog;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import io.dcloud.feature.unimp.DCUniMPJSCallback;
public class HouseListFragment extends CustomBaseFragment {
    private FragmentHouseListBinding viewBinding;
    private HouseInfoAdapter houseInfoAdapter;
    private CameraManager manager;
    private List<HouseListBean> houseListBeanList = null;
    private List<HouseIdBean> houseListBeanIDList = null;
    @Override
@@ -105,11 +90,11 @@
            public void onClick(int position) {
                //点击住宅详情
                HdlLogLogic.print("====点击住宅详情" + position);
                if (houseListBeanList == null || houseListBeanList.size() <= 0) {
                if (houseListBeanIDList == null || houseListBeanIDList.size() <= 0) {
                    return;
                }
                HouseListBean houseListBean = houseListBeanList.get(position);
                String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS + "?homeId=" + houseListBean.getHomeId();
                HouseIdBean houseIdBean = houseListBeanIDList.get(position);
                String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS + "?homeId=" + houseIdBean.getHomeId();
                HdlUniLogic.getInstance().openUniMP(path, null);
            }
        });
@@ -120,7 +105,7 @@
        viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setImageResource(R.drawable.add);
        LinearLayoutManager linearLayout = new LinearLayoutManager(_mActivity);
        houseInfoAdapter = new HouseInfoAdapter(this.houseListBeanList);
        houseInfoAdapter = new HouseInfoAdapter(this.houseListBeanIDList);
        viewBinding.fragmentHouseSrlListRc.setLayoutManager(linearLayout);
        viewBinding.fragmentHouseSrlListRc.setAdapter(houseInfoAdapter);
@@ -128,13 +113,13 @@
    }
    private void initData() {
        this.houseListBeanList = new ArrayList<>();
        this.houseListBeanIDList = new ArrayList<>();
//        for (int i = 0; i < 11; i++) {
//            HouseListBean houseListBean = new HouseListBean();
//            houseListBean.setHomeName("电站" + i);
//            this.houseListBeanList.add(houseListBean);
//        }
        this.houseListBeanList.addAll(HdlResidenceLogic.getInstance().getHouseInfoBeanList());
        this.houseListBeanIDList.addAll(HdlResidenceLogic.getInstance().getHouseInfoBeanList());
    }