mac
2024-05-21 b73aeebc90267339a4851a68a6ebd396b7c66aea
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseAndDeviceFragment.java
File was renamed from app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -4,8 +4,11 @@
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
@@ -19,6 +22,7 @@
import com.hdl.photovoltaic.databinding.FragmentHouseListBinding;
import com.hdl.photovoltaic.base.CustomBaseFragment;
import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
import com.hdl.photovoltaic.enums.PowerStationStatus;
import com.hdl.photovoltaic.enums.ShowErrorMode;
import com.hdl.photovoltaic.enums.SortType;
import com.hdl.photovoltaic.enums.SortValue;
@@ -44,13 +48,19 @@
import com.hdl.sdk.link.core.bean.gateway.GatewayBean;
import com.hdl.sdk.link.core.utils.mqtt.MqttRecvClient;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
/**
 * 电站和设备-界面
 */
public class HouseListFragment extends CustomBaseFragment {
public class HouseAndDeviceFragment extends CustomBaseFragment {
    private boolean isReadData = false;
    private FragmentHouseListBinding viewBinding;
    private HouseInfoAdapter houseInfoAdapter;
@@ -58,8 +68,6 @@
    private List<HouseIdBean> houseListBeanIDList;
    private List<DeviceBean> deviceInfoList;
    private int currentHouseListPage = 0; // 当前电站列表页码
    private int currentHouseListTotal = 0; // 电站列表总页码
    private boolean isHouseLoadingMore = false; // 标记电站列表正在加载更多数据
@@ -75,7 +83,7 @@
    private String installedCapacityMinValue = "";//最小组串容量(装机容量)
    private String installedCapacityMaxValue = "";//最大组串容量(装机容量)
    private String gridTypeValue = "";//并网状态(全部 不传该过滤参数,FULL_GRID:并网,OFFLINE:离网)
    private String powerStationStatusValue = "";//电站状态(全部 不传该过滤参数,1:正常(运行),2:离线,3:待接入,4:故障)
    private String powerStationStatusValue = PowerStationStatus.All;//电站状态(全部 不传该过滤参数,1:正常(运行),2:离线,3:待接入,4:故障)
    private final long pageSize = 20;//页数
@@ -111,7 +119,11 @@
                viewBinding.addIv.setVisibility(View.VISIBLE);//添加图标隐藏
                viewBinding.powerStationLabelParent.setVisibility(View.VISIBLE);//电站标签【父容器】显示
                viewBinding.deviceLabelParent.setVisibility(View.GONE);//设备标签【父容器】隐藏
                if (viewBinding.deviceNullDataIc.getRoot().getVisibility() == View.VISIBLE) {
                    viewBinding.deviceNullDataIc.getRoot().setVisibility(View.GONE);
                }
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
                getStatusOverview();
            }
        });
        //设备标签
@@ -128,7 +140,46 @@
                viewBinding.addIv.setVisibility(View.GONE);//添加图标隐藏
                viewBinding.powerStationLabelParent.setVisibility(View.GONE);//电站标签【父容器】隐藏
                viewBinding.deviceLabelParent.setVisibility(View.VISIBLE);//设备标签【父容器】显示
                if (viewBinding.homeNullDataIc.getRoot().getVisibility() == View.VISIBLE) {
                    viewBinding.homeNullDataIc.getRoot().setVisibility(View.GONE);
                }
                loadNextPageDeviceList(true, 1, true);
            }
        });
        //全部
        viewBinding.powerStationAllIl.parentLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                powerStationStatusValue = PowerStationStatus.All;
                selectedStationStyle(viewBinding.powerStationAllIl.parentLl, viewBinding.powerStationAllIl.stationTotalTv, viewBinding.powerStationAllIl.stationTitleTv, true);
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
            }
        });
        //故障
        viewBinding.powerStationFaultsIl.parentLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                powerStationStatusValue = PowerStationStatus.malfunction;
                selectedStationStyle(viewBinding.powerStationFaultsIl.parentLl, viewBinding.powerStationFaultsIl.stationTotalTv, viewBinding.powerStationFaultsIl.stationTitleTv, true);
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
            }
        });
        //离线
        viewBinding.powerStationOfflineIl.parentLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                powerStationStatusValue = PowerStationStatus.off;
                selectedStationStyle(viewBinding.powerStationOfflineIl.parentLl, viewBinding.powerStationOfflineIl.stationTotalTv, viewBinding.powerStationOfflineIl.stationTitleTv, true);
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
            }
        });
        //待接入
        viewBinding.powerStationConnectedIl.parentLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                powerStationStatusValue = PowerStationStatus.connecting;
                selectedStationStyle(viewBinding.powerStationConnectedIl.parentLl, viewBinding.powerStationConnectedIl.stationTotalTv, viewBinding.powerStationConnectedIl.stationTitleTv, true);
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
            }
        });
@@ -176,6 +227,7 @@
            public void onRefresh() {
                viewBinding.fragmentHouseSrl.setRefreshing(false);
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
                getStatusOverview();
            }
        });
        //电站上拉读取
@@ -312,6 +364,7 @@
                viewBinding.stationNameIv.setSelected(isSelected);
                key = SortType.homeNameSort;
                value = isSelected ? SortValue.ascending : SortValue.descending;
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
            }
        });
        //电站发电功率筛选
@@ -323,6 +376,7 @@
                viewBinding.stationPowerIv.setSelected(isSelected);
                key = SortType.powerSort;
                value = isSelected ? SortValue.ascending : SortValue.descending;
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
            }
        });
        //电站当日发电量筛选
@@ -334,6 +388,7 @@
                viewBinding.stationDayIv.setSelected(isSelected);
                key = SortType.todayElectricitySort;
                value = isSelected ? SortValue.ascending : SortValue.descending;
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
            }
        });
        //电站当月发电量筛选
@@ -345,6 +400,7 @@
                viewBinding.stationMonthIv.setSelected(isSelected);
                key = SortType.monthElectricitySort;
                value = isSelected ? SortValue.ascending : SortValue.descending;
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
            }
        });
        //设备点击
@@ -386,7 +442,7 @@
                }
            }
        });
        //设备添搜索
        //设备搜索
        viewBinding.deviceSearchCl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
@@ -401,6 +457,13 @@
    private void initView() {
        viewBinding.powerStationLabelParent.setVisibility(View.VISIBLE);
        viewBinding.deviceLabelParent.setVisibility(View.GONE);
        viewBinding.powerStationAllIl.stationTitleTv.setText(getString(R.string.message_all));
        viewBinding.powerStationFaultsIl.stationTitleTv.setText(getString(R.string.my_power_station_malfunction));
        viewBinding.powerStationOfflineIl.stationTitleTv.setText(getString(R.string.my_power_station_off_line));
        viewBinding.powerStationConnectedIl.stationTitleTv.setText(getString(R.string.to_be_added));
        selectedStationStyle(viewBinding.powerStationAllIl.parentLl, viewBinding.powerStationAllIl.stationTotalTv, viewBinding.powerStationAllIl.stationTitleTv, true);
        //电站标签
        houseInfoAdapter = new HouseInfoAdapter(_mActivity);
        viewBinding.fragmentHouseSrlListRc.setLayoutManager(new LinearLayoutManager(_mActivity));
@@ -416,14 +479,48 @@
    }
    /**
     * 显示选中状态样式
     *
     * @param linearLayout         组件
     * @param numberTv             组件
     * @param titleTv              组件
     * @param isShowSelectedStatus 是否显示状态样式
     */
    private void selectedStationStyle(LinearLayout linearLayout, TextView numberTv, TextView titleTv, boolean isShowSelectedStatus) {
        viewBinding.powerStationAllIl.parentLl.setBackground(AppCompatResources.getDrawable(_mActivity, R.drawable.station_status_no_ffffff));
        viewBinding.powerStationFaultsIl.parentLl.setBackground(AppCompatResources.getDrawable(_mActivity, R.drawable.station_status_no_ffffff));
        viewBinding.powerStationOfflineIl.parentLl.setBackground(AppCompatResources.getDrawable(_mActivity, R.drawable.station_status_no_ffffff));
        viewBinding.powerStationConnectedIl.parentLl.setBackground(AppCompatResources.getDrawable(_mActivity, R.drawable.station_status_no_ffffff));
        viewBinding.powerStationAllIl.stationTotalTv.setTextColor(getResources().getColor(R.color.text_E6000000, null));
        viewBinding.powerStationAllIl.stationTitleTv.setTextColor(getResources().getColor(R.color.text_66000000, null));
        viewBinding.powerStationFaultsIl.stationTotalTv.setTextColor(getResources().getColor(R.color.text_E6000000, null));
        viewBinding.powerStationFaultsIl.stationTitleTv.setTextColor(getResources().getColor(R.color.text_66000000, null));
        viewBinding.powerStationOfflineIl.stationTotalTv.setTextColor(getResources().getColor(R.color.text_E6000000, null));
        viewBinding.powerStationOfflineIl.stationTitleTv.setTextColor(getResources().getColor(R.color.text_66000000, null));
        viewBinding.powerStationConnectedIl.stationTotalTv.setTextColor(getResources().getColor(R.color.text_E6000000, null));
        viewBinding.powerStationConnectedIl.stationTitleTv.setTextColor(getResources().getColor(R.color.text_66000000, null));
        if (isShowSelectedStatus) {
            linearLayout.setBackground(AppCompatResources.getDrawable(_mActivity, R.drawable.selected_8_38c494));
            numberTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
            titleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
        }
    }
    private void initData() {
        if (isClickPowerStationLabel) {
            this.houseListBeanIDList = new ArrayList<>();
            this.houseListBeanIDList.addAll(HdlResidenceLogic.getInstance().getHouseIdList());
        } else {
            this.deviceInfoList = new ArrayList<>();
            this.deviceInfoList.add(new DeviceBean());
//            this.deviceInfoList.addAll(HdlDeviceLogic.getInstance().getListDevice());
            this.deviceInfoList.addAll(HdlDeviceLogic.getInstance().getDeviceList());
        }
@@ -434,11 +531,13 @@
     *
     * @param eventBus 数据
     */
    @Override
    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
    public void onEventMessage(BaseEventBus eventBus) {
        super.onEventMessage(eventBus);
        if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(eventBus.getTopic())) {
            if (HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION.equals(eventBus.getType())) {
                // 取消粘性事件
                EventBus.getDefault().removeStickyEvent(eventBus);
                //uin创建电站成功后通知
                loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
                if (eventBus.getData() != null) {
@@ -449,6 +548,8 @@
                }
            } else if (HDLUniMP.UNI_EVENT_REPLY_HOME_EDIT.equals(eventBus.getType())) {
                // 取消粘性事件
                EventBus.getDefault().removeStickyEvent(eventBus);
                //todo 现在默认刷新全部
                //uin编辑住宅通知
//                String homeId = HdlUniLogic.getInstance().getKeyValue("homeId", eventBus.getData());
@@ -475,6 +576,8 @@
            }
        } else if (HDLUniMP.UNI_EVENT_REPLY_HOME_CLOSE_HOME_DETAILS_PAGE.equals(eventBus.getType())) {
            // 取消粘性事件
            EventBus.getDefault().removeStickyEvent(eventBus);
            //uin关闭住宅详情界面通知
            if (MqttRecvClient.getInstance() != null) {
                MqttRecvClient.getInstance().removeAllTopic();
@@ -482,6 +585,8 @@
            loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
        } else if (HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST.equals(eventBus.getType())) {
            // 取消粘性事件
            EventBus.getDefault().removeStickyEvent(eventBus);
            //进去住宅详情uni读取逆变器列表成功后通知
            for (int i = 0; i < HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId()).size(); i++) {
                String gatewayId = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId()).get(i).getGatewayId();
@@ -493,13 +598,31 @@
        } else if (eventBus.getTopic().equals(ConstantManage.homepage_title_tab_switch)) {
            //接收外部点击事件
            if (eventBus.getType().equals(HomepageTitleTabSwitch.powerstation.toString())) {
                // 取消粘性事件
                EventBus.getDefault().removeStickyEvent(eventBus);
                HdlLogLogic.print("正在点击【电站】");
                loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
                getStatusOverview();
                if (!isReadData) {
                    //1,从首页-故障-进来-电站(不读取)
                    //1,从电站-进来-电站(读取一次,后面进来不在读取)
                    loadNextPageHouseList(true, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
                    getStatusOverview();
                }
            } else if (eventBus.getType().equals(PowerStationStatus.All)) {
                viewBinding.powerStationAllIl.parentLl.performClick();
            } else if (eventBus.getType().equals(PowerStationStatus.malfunction)) {
                viewBinding.powerStationFaultsIl.parentLl.performClick();
            } else if (eventBus.getType().equals(PowerStationStatus.off)) {
                viewBinding.powerStationOfflineIl.parentLl.performClick();
            } else if (eventBus.getType().equals(PowerStationStatus.connecting)) {
                viewBinding.powerStationConnectedIl.parentLl.performClick();
            } else if (eventBus.getType().equals(ConstantManage.station_edit)) {
                //更新一下住宅
                loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true);
//                getStatusOverview();
            }
        }
    }
    /**
     * 电站状态概览
@@ -511,10 +634,10 @@
                if (statusOverviewBean == null) {
                    return;
                }
                viewBinding.screeningConditionNumber1Tv.setText(statusOverviewBean.getTotal());
                viewBinding.screeningConditionNumber2Tv.setText(statusOverviewBean.getFault());
                viewBinding.screeningConditionNumber3Tv.setText(statusOverviewBean.getOffline());
                viewBinding.screeningConditionNumber4Tv.setText(statusOverviewBean.getConnecting());
                viewBinding.powerStationAllIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getTotal()));
                viewBinding.powerStationFaultsIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getFault()));
                viewBinding.powerStationOfflineIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getOffline()));
                viewBinding.powerStationConnectedIl.stationTotalTv.setText(HdlCommonLogic.convertString(statusOverviewBean.getConnecting()));
            }
            @Override
@@ -541,15 +664,8 @@
     * @param pageNo               页码
     * @param isClear              是否清除数据
     */
    private void loadNextPageHouseList(boolean isRefreshing,
                                       String key,
                                       String keyValue,
                                       String installedCapacityMin,
                                       String installedCapacityMax,
                                       String gridType,
                                       String powerStationStatus,
                                       long pageNo,
                                       boolean isClear) {
    private void loadNextPageHouseList(boolean isRefreshing, String key, String keyValue, String installedCapacityMin, String installedCapacityMax, String gridType, String powerStationStatus, long pageNo, boolean isClear) {
        isReadData = true;
        if (isClear) {
            clearData();
        }
@@ -565,57 +681,50 @@
        }
        //获取住宅(电站)ID列表
        HdlResidenceLogic.getInstance().getResidenceIdList(
                key,
                keyValue,
                installedCapacityMin,
                installedCapacityMax,
                gridType,
                powerStationStatus,
                pageNo, pageSize, new CloudCallBeak<HdlResidenceLogic.HouseBeanClass>() {
        HdlResidenceLogic.getInstance().getResidenceIdList(key, keyValue, installedCapacityMin, installedCapacityMax, gridType, powerStationStatus, pageNo, pageSize, new CloudCallBeak<HdlResidenceLogic.HouseBeanClass>() {
            @Override
            public void onSuccess(HdlResidenceLogic.HouseBeanClass houseBeanClass) {
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void onSuccess(HdlResidenceLogic.HouseBeanClass houseBeanClass) {
                        HdlThreadLogic.runMainThread(new Runnable() {
                            @Override
                            public void run() {
                                if (isRefreshing) {
                                    hideLoading();
                                }
                                isHouseLoadingMore = false;
                                if (houseBeanClass != null) {
                                    currentHouseListTotal = (int) houseBeanClass.getTotalPage();
                                    currentHouseListPage = (int) houseBeanClass.getPageNo();
                                    //更新缓存
                                    HdlResidenceLogic.getInstance().setHouseIdList(houseBeanClass.getList());
                                    if (houseInfoAdapter != null) {
                                        initData();
                                        //更新UI
                                        houseInfoAdapter.setList(houseListBeanIDList);
                                    }
                                }
                                nullDataUpdateUi();
                    public void run() {
                        if (isRefreshing) {
                            hideLoading();
                        }
                        isHouseLoadingMore = false;
                        if (houseBeanClass != null) {
                            currentHouseListTotal = (int) houseBeanClass.getTotalPage();
                            currentHouseListPage = (int) houseBeanClass.getPageNo();
                            //更新缓存
                            HdlResidenceLogic.getInstance().setHouseIdList(houseBeanClass.getList());
                            if (houseInfoAdapter != null) {
                                initData();
                                //更新UI
                                houseInfoAdapter.setList(houseListBeanIDList);
                            }
                        }, _mActivity, ShowErrorMode.YES);
                        }
                        nullDataUpdateUi();
                    }
                }, _mActivity, ShowErrorMode.YES);
            }
            @Override
            public void onFailure(HDLException e) {
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void run() {
                        if (currentHouseListPage > 1) {
                            --currentHouseListPage;
                        }
                        isHouseLoadingMore = false;
                        if (isRefreshing) {
                            hideLoading();
                        }
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        HdlThreadLogic.runMainThread(new Runnable() {
                            @Override
                            public void run() {
                                if (currentHouseListPage > 1) {
                                    --currentHouseListPage;
                                }
                                isHouseLoadingMore = false;
                                if (isRefreshing) {
                                    hideLoading();
                                }
                            }
                        }, _mActivity, ShowErrorMode.YES);
                    }
                });
                }, _mActivity, ShowErrorMode.YES);
            }
        });
    }
    /**
@@ -718,11 +827,15 @@
        if (isClickPowerStationLabel) {
            is_data = houseListBeanIDList != null && houseListBeanIDList.size() > 0;
            tipText = getString(R.string.my_power_station_data_null);
            HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.homeNullDataIc.getRoot(), viewBinding.homeNullDataIc.nullDataGifAnimationIv, viewBinding.homeNullDataIc.nullDataTv, tipText, is_data);
        } else {
            is_data = deviceInfoList != null && deviceInfoList.size() > 0;
            tipText = getString(R.string.no_equipment);
            HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.deviceNullDataIc.getRoot(), viewBinding.deviceNullDataIc.nullDataGifAnimationIv, viewBinding.deviceNullDataIc.nullDataTv, tipText, is_data);
        }
        HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, tipText, is_data);
    }
    /**