wjc
2023-06-27 da8bb15e0d0293d373071b44b89f2b953ecc0830
2023年06月27日11:00:19

更新
1个文件已删除
10个文件已修改
595 ■■■■ 已修改文件
.idea/deploymentTargetDropDown.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/HDLApp.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java 75 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/deploymentTargetDropDown.xml
File was deleted
app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -1,12 +1,17 @@
package com.hdl.photovoltaic;
import android.Manifest;
import android.app.Application;
import android.content.pm.PackageManager;
import androidx.annotation.NonNull;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
import com.hdl.photovoltaic.utils.PermissionUtils;
import com.hdl.photovoltaic.utils.SharedPreUtils;
import java.util.HashMap;
@@ -94,4 +99,5 @@
    }
}
app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java
@@ -7,6 +7,7 @@
import com.hdl.photovoltaic.other.HdlFileLogic;
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;
@@ -159,18 +160,18 @@
    /**
     * 当前住宅
     */
    private HouseListBean m_Home = null;
    private HouseInfoBean m_Home = null;
    /**
     * 当前住宅
     */
    public HouseListBean home() {
    public HouseInfoBean home() {
        if (m_Home != null) {
            return m_Home;
        }
        m_Home = HdlResidenceLogic.getInstance().getHouseByHouseId(homeId);
        m_Home = HdlResidenceLogic.getInstance().getHouse(homeId);
        if (m_Home == null) {
            m_Home = new HouseListBean();
            m_Home = new HouseInfoBean();
        }
        return m_Home;
    }
app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java
@@ -86,7 +86,6 @@
            @Override
            public void run() {
                try {
                    HdlLogLogic.print("http->发送->", fullUrl + "\r\n" + json);
                    OkHttpClient okHttpClient = new OkHttpClient();
                    RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), getJson(json));
app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java
@@ -1,5 +1,9 @@
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;
import com.hdl.photovoltaic.bean.HttpResponsePack;
@@ -11,13 +15,19 @@
import com.hdl.photovoltaic.ui.bean.HouseInfoBean;
import com.hdl.photovoltaic.ui.bean.HouseListBean;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * 住宅逻辑界面
 */
public class HdlResidenceLogic {
    public static final int pageSize = 50;
    private static volatile HdlResidenceLogic sHdlResidenceLogic;
@@ -59,24 +69,93 @@
    //住宅详情列表
    private List<HouseInfoBean> houseInfoList = new ArrayList<>();
    public HouseListBean getHouseByHouseId(String homeId) {
        return new HouseListBean();
    }
    /**
     * 获取住宅列表
     *
     * @param cloudCallBeak -
     */
    public void getHouseList(CloudCallBeak<Boolean> cloudCallBeak) {
        //获取住宅列表
        getResidenceList("", "", new CloudCallBeak<List<HouseListBean>>() {
            @Override
            public void onSuccess(List<HouseListBean> houseListBeanList) {
                if (houseListBeanList != null && houseListBeanList.size() > 0) {
                    houseList.clear();
                    houseList.addAll(houseListBeanList);
                    //标记最后一条
                    AtomicInteger atomicInteger = new AtomicInteger(0);
                    for (int i = 0; i < houseList.size(); i++) {
                        HouseListBean houseListBean = houseList.get(i);
                        atomicInteger.set(i);
                        //获取住宅详情列表
                        getResidenceInfo(houseListBean.getHomeId(), new CloudCallBeak<HouseInfoBean>() {
                            @Override
                            public void onSuccess(HouseInfoBean houseInfoBean) {
                                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:故障)
                                    //添加到本地缓存
                                    addHouseToLocalMemory(houseInfoBean);
                                }
                                if (atomicInteger.get() == houseList.size() - 1) {
                                    //最后一条退出
                                    if (cloudCallBeak != null) {
                                        cloudCallBeak.onSuccess(true);
                                    }
                                }
                            }
                            @Override
                            public void onFailure(Exception exception) {
                                if (atomicInteger.get() == houseList.size() - 1) {
                                    if (cloudCallBeak != null) {
                                        cloudCallBeak.onFailure(exception);
                                    }
                                }
                            }
                        });
                    }
                } else {
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(true);
                    }
                }
            }
            @Override
            public void onFailure(Exception exception) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(exception);
                }
            }
        });
    }
    /**
     * 获取住宅(电站)列表
     *
     * @param pageNo   当前页数
     * @param pageSize 一页大小
     * @param pageNo   当前页数 开始默认1
     * @param pageSize 一页大小 开始默认50
     * @param key      发电功率排序(powerSort);今日发电量排序(todayElectricitySort);创建时间排序(createTimeSort);
     * @param keyValue (descending:降序ascending:升序),
     */
    public void getResidenceList(int pageNo, int pageSize, CloudCallBeak<Boolean> cloudCallBeak) {
    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");//创建时间排序
@@ -91,6 +170,7 @@
                    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;
@@ -100,7 +180,14 @@
                        }
                        return;
                    }
                    getResidenceList(pageNo + 1, 100, cloudCallBeak);
                    if (pageNo > totalPage) {
                        //当前请求的页数大于总页数,云端出错了立即返回去;
                        if (cloudCallBeak != null) {
                            cloudCallBeak.onSuccess(true);
                        }
                        return;
                    }
                    getResidenceList(pageNo + 1, pageSize, key, keyValue, cloudCallBeak);
                }
            }
@@ -115,6 +202,87 @@
        });
    }
    public void getResidenceList(String key, String keyValue, CloudCallBeak<List<HouseListBean>> cloudCallBeak) {
        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", 1);//页码
        json.addProperty("pageSize", pageSize);//页数
        List<HouseListBean> 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);
                    list.addAll(houseInfoBeanClass.getList());
                    //总共有多少页
                    long totalPage = houseInfoBeanClass.totalPage;
                    if (totalPage < 2) {
                        if (cloudCallBeak != null) {
                            cloudCallBeak.onSuccess(list);
                        }
                        return;
                    }
                    //标记最后一条
                    AtomicBoolean isLast = new AtomicBoolean(false);
                    //从第二页获取数据
                    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) {
                                Gson gson = new Gson();
                                String jsonStr = gson.toJson(httpResponsePack.getData());
                                HouseInfoBeanClass houseInfoBeanClass = gson.fromJson(jsonStr, HouseInfoBeanClass.class);
                                list.addAll(houseInfoBeanClass.getList());
                                if (isLast.get()) {
                                    if (cloudCallBeak != null) {
                                        cloudCallBeak.onSuccess(list);
                                    }
                                }
                            }
                            @Override
                            public void onFailure(Exception exception) {
                                if (isLast.get()) {
                                    if (cloudCallBeak != null) {
                                        cloudCallBeak.onSuccess(list);
                                    }
                                }
                            }
                        });
                    }
                } else {
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(list);
                    }
                }
            }
            @Override
            public void onFailure(Exception exception) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(exception);
                }
            }
        });
    }
    /**
     * 获取住宅(电站)详情
@@ -134,6 +302,7 @@
                    Gson gson = new Gson();
                    String jsonStr = gson.toJson(httpResponsePack.getData());
                    HouseInfoBean houseInfoBean = gson.fromJson(jsonStr, HouseInfoBean.class);
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(houseInfoBean);
                    }
@@ -153,7 +322,7 @@
    /**
     * 编辑住宅(电站)
     * 编辑住宅(电站),
     *
     * @param houseInfoBean -
     * @param cloudCallBeak -
@@ -232,12 +401,12 @@
    }
    /**
     * 添加住宅(电站)
     * 添加住宅(电站)到云端
     *
     * @param houseInfoBean -
     * @param cloudCallBeak -
     */
    public void addResidence(HouseInfoBean houseInfoBean, CloudCallBeak<Boolean> cloudCallBeak) {
    public void addHouseToCloud(HouseInfoBean houseInfoBean, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.POST_PowerStation_Create;
        JsonObject json = new JsonObject();
        JsonObject location = new JsonObject();
@@ -282,6 +451,87 @@
    }
    /**
     * 切换住宅
     *
     * @param homeId 住宅id
     */
    public Boolean switchHouse(String homeId) {
        UserConfigManage.getInstance().setHomeId(homeId);
        HdlThreadLogic.runThread(new Runnable() {
            @Override
            public void run() {
                //搜索一下住宅设备
            }
        }, null, null);
        //关闭进度条
        return true;
    }
    /**
     * 添加【住宅详情】到本地缓存
     *
     * @param houseInfoBean 住宅详情
     */
    public void addHouseToLocalMemory(HouseInfoBean houseInfoBean) {
        if (houseInfoBean == null) {
            return;
        }
        int index = isExistHouse(houseInfoBean.getHomeId());
        if (index > -1) {
            houseInfoList.remove(index);
            houseInfoList.add(index, houseInfoBean);
        } else {
            houseInfoList.add(houseInfoBean);
        }
    }
    /**
     * 查询本地缓存住宅列表是否存在住宅
     *
     * @param homeId 住宅id
     * @return 列表索引
     */
    public int isExistHouse(String homeId) {
        int index = -1;
        for (int i = 0; i < houseInfoList.size(); i++) {
            if (houseInfoList.get(i).getHomeId().equals(homeId)) {
                index = i;
                break;
            }
        }
        return index;
    }
    /**
     * 获取住宅详情
     *
     * @param homeId 住宅id
     * @return 住宅找不到返回null
     */
    public HouseInfoBean getHouse(String homeId) {
        int position = isExistHouse(homeId);
        if (position > -1) {
            return houseInfoList.get(position);
        }
        return null;
    }
    /**
     * 删除住宅
     *
     * @param homeId 住宅id
     */
    public void delHouse(String homeId) {
        int position = isExistHouse(homeId);
        if (position > -1) {
            houseInfoList.remove(position);
        }
    }
    static class HouseInfoBeanClass {
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -1,10 +1,14 @@
package com.hdl.photovoltaic.other;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
import com.hdl.photovoltaic.utils.WifiUtils;
import org.json.JSONObject;
@@ -44,19 +48,74 @@
     */
    @Override
    public void onOtherUniMPEventReceive(String appId, String event, Object data, DCUniMPJSCallback callback) {
        if (!HDLUniMP.UNI_APP_ID.equals(appId)) {
            return;
        }
        try {
            org.json.JSONObject jsonObject = null;
            if (data != null) {
                jsonObject = new org.json.JSONObject(data.toString());
            if (!HDLUniMP.UNI_APP_ID.equals(appId)) {
                return;
            }
            //住宅模块
            if (HDLUniMP.UNI_EVENT_REPLY_HOME_LIST.equals(event)) {
            String json = data == null ? "{}" : data.toString();
            json = json.equals("") ? "{}" : json;
            org.json.JSONObject jsonObject = new org.json.JSONObject(json);
            String type_value = "";
            if (jsonObject.has("type")) {
                type_value = jsonObject.getString("type");
            }
            if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(event)) {
                //住宅模块
                switch (type_value) {
                    case HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION: {
                        //创建
                        HdlResidenceLogic.getInstance().getResidenceList(1, 100, "", "", null);
                    }
                    break;
                    case HDLUniMP.UNI_EVENT_REPLY_HOME_DETAILS: {
                        //详情
                    }
                    break;
                }
                if (callback != null) {
                    uniCallbackData(null, "0", "", callback);
                }
            } else if (HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODEL.equals(event)) {
                //设备模块
                switch (type_value) {
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ADD: {
                        //添加
                    }
                    break;
                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST: {
                        //获取设备列表
                    }
                    break;
                }
            } else if (HDLUniMP.UNI_EVENT_REPLY_WIFI_MODEL.equals(event)) {
                WifiUtils wifiUtils = new WifiUtils(HDLApp.getInstance());
                //wifi模块
                switch (type_value) {
                    case HDLUniMP.UNI_EVENT_REPLY_WIFI_LIST: {
                        //获取wifi列表
                        if (callback != null) {
                            uniCallbackData(wifiUtils.getScanResult(), "0", "", callback);
                        }
                    }
                    break;
                    case HDLUniMP.UNI_EVENT_REPLY_WIFI_INFO: {
                        //当前wifi详情
                        if (callback != null) {
                            uniCallbackData(wifiUtils.getCurrentConnectWifiInfo(), "0", "", callback);
                        }
                    }
                    break;
                    case HDLUniMP.UNI_EVENT_REPLY_WIFI_CONNECT: {
                        //wifi连接
                    }
                    break;
                }
            }
            HdlLogLogic.print("uni===原生接收uni发来的数据", event + "\r\n" + data);
        } catch (Exception e) {
app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
@@ -20,6 +20,9 @@
import androidx.annotation.NonNull;
import androidx.appcompat.content.res.AppCompatResources;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseActivity;
@@ -33,6 +36,7 @@
import com.hdl.photovoltaic.other.HdlAccountLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.ui.device.FastScanActivity;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.utils.PermissionUtils;
import com.hdl.photovoltaic.utils.WifiUtils;
@@ -198,27 +202,21 @@
                        HdlAccountLogic.getInstance().loginByPassword(account, password, new CloudCallBeak<LoginUserBean>() {
                            @Override
                            public void onSuccess(LoginUserBean obj) {
                                HdlThreadLogic.runMainThread(new Runnable() {
                                HdlResidenceLogic.getInstance().getResidenceList(1,50,"","",new CloudCallBeak<Boolean>() {
                                    @Override
                                    public void run() {
                                        HdlResidenceLogic.getInstance().getResidenceList(1, 100, new CloudCallBeak<Boolean>() {
                                            @Override
                                            public void onSuccess(Boolean obj) {
                                                hideLoading();
                                                restoreButtonStyleToInitializeState();
                                                startActivity(MyPowerStationActivity.class);
                                            }
                                            @Override
                                            public void onFailure(Exception exception) {
                                                hideLoading();
                                                restoreButtonStyleToInitializeState();
                                                startActivity(MyPowerStationActivity.class);
                                            }
                                        });
                                    public void onSuccess(Boolean obj) {
                                        hideLoading();
                                        restoreButtonStyleToInitializeState();
                                        startActivity(MyPowerStationActivity.class);
                                    }
                                }, null, null);
                                    @Override
                                    public void onFailure(Exception exception) {
                                        hideLoading();
                                        restoreButtonStyleToInitializeState();
                                        startActivity(MyPowerStationActivity.class);
                                    }
                                });
                            }
                            @Override
@@ -243,12 +241,6 @@
            public void onClick(View v) {
//                requestPermissions();
//                startActivity(MyPowerStationActivity.class);
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void run() {
                        int s = 1 / 0;
                    }
                }, _mActivity, ShowErrorMode.YES);
            }
        });
@@ -298,10 +290,15 @@
     * 恢复组件样式到初始化状态
     */
    private void restoreButtonStyleToInitializeState() {
        viewBinding.homeLoginLine1V.setBackgroundColor(getColor(R.color.text_E1E1E1));
        viewBinding.homeLoginAccountTextErrorTv.setText("");
        viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_E1E1E1));
        viewBinding.homeLoginPasswordTextErrorTv.setText("");
        HdlThreadLogic.runMainThread(new Runnable() {
            @Override
            public void run() {
                viewBinding.homeLoginLine1V.setBackgroundColor(getColor(R.color.text_E1E1E1));
                viewBinding.homeLoginAccountTextErrorTv.setText("");
                viewBinding.homeLoginLine2V.setBackgroundColor(getColor(R.color.text_E1E1E1));
                viewBinding.homeLoginPasswordTextErrorTv.setText("");
            }
        }, null, null);
    }
    /**
@@ -319,33 +316,4 @@
    }
    private void requestPermissions() {
        String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION});
        if (ary.length > 0) {
            requestPermissions(ary, PermissionUtils.STATUS_SUCCESS);
        } else {
            wifi();
        }
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == PermissionUtils.STATUS_SUCCESS) {
            for (int i = 0; i < permissions.length; i++) {
                if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                    wifi();
                }
            }
        }
    }
    public void wifi() {
        WifiUtils wifiUtils = new WifiUtils(HDLApp.getInstance());
//        wifiUtils.getCurrentConnectWifiInfo();
//        wifiUtils.getScanResult();
        wifiUtils.connectWiFi("Application", "12345678", 3);
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
@@ -81,5 +81,47 @@
        }
    }
    public void requestPermissions() {
        String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION});
        if (ary.length > 0) {
            requestPermissions(ary, PermissionUtils.STATUS_SUCCESS);
        } else {
            if (mPermissionsResultCallback != null) {
                mPermissionsResultCallback.succeed();
            }
        }
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == PermissionUtils.STATUS_SUCCESS) {
            for (int i = 0; i < permissions.length; i++) {
                if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                    if (mPermissionsResultCallback != null) {
                        mPermissionsResultCallback.succeed();
                    }
                }
            }
        }
    }
    private PermissionsResultCallback mPermissionsResultCallback;
    public void setPermissionsResultCallback(PermissionsResultCallback permissionsResultCallback) {
        mPermissionsResultCallback = permissionsResultCallback;
    }
    public interface PermissionsResultCallback {
        void succeed();
        void failing();
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java
@@ -1,11 +1,15 @@
package com.hdl.photovoltaic.ui;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.utils.PermissionUtils;
public class StartActivity extends AppCompatActivity {
@@ -21,4 +25,7 @@
    }
}
app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseInfoBean.java
@@ -1,31 +1,20 @@
package com.hdl.photovoltaic.ui.bean;
public class HouseInfoBean {
    private String homeId;//电站id
public class HouseInfoBean extends HouseListBean {
    private Location location;//电站地址
    private String address;//详细地址
    private String latitude;//纬度
    private String longitude;//经度
    private String homeName;//电站名称
    private String timezone;//时区
    private int powerStationType;//电站类型(DOMESTIC_ROOF:家用屋顶,COMMERCIAL_ROOF:商业用屋顶,INDUSTRIAL_ROOF:工业用屋顶,SURFACE_POWER_STATION:地面电站)
    private int workMode;//工作模式(self_use:自发自用,peak_load_shifting:削峰填谷,battery_priority:电池优先,auto:智能模式)
    private String installedCapacity;//装机容量
    private String powerStationType;//电站类型(DOMESTIC_ROOF:家用屋顶,COMMERCIAL_ROOF:商业用屋顶,INDUSTRIAL_ROOF:工业用屋顶,SURFACE_POWER_STATION:地面电站)
    private String workMode;//工作模式(self_use:自发自用,peak_load_shifting:削峰填谷,battery_priority:电池优先,auto:智能模式)
    private long productionTime;//投产日志
    private String monetaryUnit;//货币单位
    private String electrovalence;//电价
    private String totalCost;//总成本
    private String zoneType;//区域
    public String getHomeId() {
        return homeId == null ? "" : homeId;
    }
    public void setHomeId(String homeId) {
        this.homeId = homeId;
    }
    public Location getLocation() {
        return location == null ? new Location() : location;
@@ -59,13 +48,6 @@
        this.longitude = longitude;
    }
    public String getHomeName() {
        return homeName == null ? "" : homeName;
    }
    public void setHomeName(String homeName) {
        this.homeName = homeName;
    }
    public String getTimezone() {
        return timezone == null ? "" : timezone;
@@ -75,29 +57,22 @@
        this.timezone = timezone;
    }
    public int getPowerStationType() {
        return powerStationType;
    public String getPowerStationType() {
        return powerStationType == null ? "" : powerStationType;
    }
    public void setPowerStationType(int powerStationType) {
    public void setPowerStationType(String powerStationType) {
        this.powerStationType = powerStationType;
    }
    public int getWorkMode() {
        return workMode;
    public String getWorkMode() {
        return workMode == null ? "" : workMode;
    }
    public void setWorkMode(int workMode) {
    public void setWorkMode(String workMode) {
        this.workMode = workMode;
    }
    public String getInstalledCapacity() {
        return installedCapacity == null ? "" : installedCapacity;
    }
    public void setInstalledCapacity(String installedCapacity) {
        this.installedCapacity = installedCapacity;
    }
    public long getProductionTime() {
        return productionTime;
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -24,6 +24,7 @@
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;
@@ -72,8 +73,21 @@
        viewBinding.toolbarTopFragmentHouseListRl.topMoreIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 打开小程序页面
                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null);
//                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null);
                requestPermissions(new PermissionsResultCallback() {
                    @Override
                    public void succeed() {
                        // 打开小程序页面
                        HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null);
                    }
                    @Override
                    public void failing() {
                    }
                });
            }
        });
        //设置下拉箭头颜色
@@ -128,12 +142,19 @@
    /**
     * 申请权限
     */
    private void requestPermissions() {
        String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.CAMERA});
    private void requestPermissions(PermissionsResultCallback permissionsResultCallback) {
        mPermissionsResultCallback = permissionsResultCallback;
        //Manifest.permission.CAMERA,
        String[] s = new String[]{
                Manifest.permission.ACCESS_FINE_LOCATION
        };
        String[] ary = PermissionUtils.checkPermission(_mActivity, s);
        if (ary.length > 0) {
            requestPermissions(ary, PermissionUtils.STATUS_SUCCESS);
        } else {
            startActivity(FastScanActivity.class);
            if (mPermissionsResultCallback != null) {
                mPermissionsResultCallback.succeed();
            }
        }
    }
@@ -143,7 +164,9 @@
        if (requestCode == PermissionUtils.STATUS_SUCCESS) {
            for (int i = 0; i < permissions.length; i++) {
                if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
                    startActivity(FastScanActivity.class);
                    if (mPermissionsResultCallback != null) {
                        mPermissionsResultCallback.succeed();
                    }
                }
            }
@@ -151,4 +174,14 @@
    }
    private PermissionsResultCallback mPermissionsResultCallback;
    public interface PermissionsResultCallback {
        void succeed();
        void failing();
    }
}