wjc
2025-04-28 1a5dbd95a4b61c3c94555bc799a1821aa07930e7
app/src/main/java/com/hdl/photovoltaic/ui/newC/MessageCenterList.java
@@ -1,8 +1,11 @@
package com.hdl.photovoltaic.ui.newC;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.widget.TextView;
@@ -11,6 +14,7 @@
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
@@ -27,10 +31,13 @@
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.other.HdlUniLogic;
import com.hdl.photovoltaic.ui.bean.MessageBean;
import com.hdl.photovoltaic.ui.bean.UnCountBean;
import com.hdl.photovoltaic.ui.message.MessageInfoActivity;
import com.hdl.photovoltaic.ui.newC.adapter.MessageCenterListAdapter;
import com.hdl.photovoltaic.uni.HDLUniMP;
import com.hdl.photovoltaic.widget.TypeTitleListDialog;
import com.hdl.photovoltaic.widget.refreshlayout.BGARefreshLayout;
import com.hdl.photovoltaic.widget.refreshlayout.HDLRefreshViewHolder;
import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -46,6 +53,9 @@
 */
public class MessageCenterList extends CustomBaseActivity {
    private Handler handler;
    private Runnable delayedRunnable;
    private ActivityMessageCenterListBinding viewBinding;
    private MessageCenterListAdapter messageCenterListAdapter;
@@ -59,7 +69,7 @@
    private int mTotalCount1 = 0;//消息数量总数
    private int mTotalCount2 = 0;//消息数量总数
    private String mDeviceTypeFilterKye = FilterType.deviceType;//过滤类型 deviceType(INV :逆变器;BMS :BMS控制盒;BATTERY :电池单元)
    private String mDeviceTypeFilterKye = FilterType.all;//过滤类型 deviceType(INV :逆变器;BMS :BMS控制盒;BATTERY :电池单元)
    private String mDeviceTypeFilterValue = FilterType.all;//过滤类型值 deviceType(INV :逆变器;BMS :BMS控制盒;BATTERY :电池单元)
    private String mTypeFilterKye = FilterType.all;//过滤类型 type(FAULT :故障; WARN :告警; EVENT :事件(提示));
@@ -75,6 +85,7 @@
    private boolean isLoadingMore = false; // 标记正在加载更多数据
    LinearLayoutManager mLayoutManager;
    @Override
    public Object getContentView() {
        viewBinding = ActivityMessageCenterListBinding.inflate(getLayoutInflater());
@@ -83,23 +94,33 @@
    @Override
    public void onBindView(Bundle savedInstanceState) {
        setNotificationBarBackgroundColor(CustomColor.white);
        setStatusBarTextColor();
        setStatusBarTranslucent();
        getWindow().setNavigationBarColor(getColor(R.color.text_FF1C1C1E));
        //初始化数据
        initData();
        //初始化
        initView();
        //初始化界面监听器
        initEvent();
        getUnreadCount();
        //进来读取一次数据(为了更新currentPage,currentTotal这个值)
        loadNextPageMessageList(1, true, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all);
        loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
    }
    @Override
    protected void onResume() {
        super.onResume();
        //进来读取一次数据(为了更新currentPage,currentTotal这个值)
//        loadNextPageMessageList(1, true, mFilterKye, mFilterValue);
    }
    @Override
    protected void onDestroy() {
        if (handler != null && delayedRunnable != null) {
            handler.removeCallbacks(delayedRunnable);
        }
        super.onDestroy();
    }
    private void initEvent() {
@@ -148,7 +169,7 @@
                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
                List<String> stringList = getTypeList(FilterType.deviceType);
                TypeTitleListDialog typeTitleListDialog = new TypeTitleListDialog(_mActivity, stringList);
                TypeTitleListDialog typeTitleListDialog = new TypeTitleListDialog(_mActivity, stringList, viewBinding.allDeviceTitleTv.getText().toString());
                typeTitleListDialog.show();
                typeTitleListDialog.setOnListener(new TypeTitleListDialog.OnClickListener() {
                    @Override
@@ -159,6 +180,14 @@
                        mDeviceTypeFilterValue = findFilterValueString(title);
                        loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
                    }
                });
                typeTitleListDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(DialogInterface dialog) {
                        viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.down);
                        viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
                        viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
                    }
                });
@@ -173,7 +202,7 @@
                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.up);
                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
                List<String> stringList = getTypeList(FilterType.type);
                TypeTitleListDialog typeTitleListDialog = new TypeTitleListDialog(_mActivity, stringList);
                TypeTitleListDialog typeTitleListDialog = new TypeTitleListDialog(_mActivity, stringList, viewBinding.allGradeTitleTv.getText().toString());
                typeTitleListDialog.show();
                typeTitleListDialog.setOnListener(new TypeTitleListDialog.OnClickListener() {
                    @Override
@@ -182,6 +211,14 @@
                        mTypeFilterKye = FilterType.type;
                        mTypeFilterValue = findFilterValueString(title);
                        loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
                    }
                });
                typeTitleListDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(DialogInterface dialog) {
                        viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.down);
                        viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
                        viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
                    }
                });
            }
@@ -194,7 +231,7 @@
                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.up);
                List<String> stringList = getTypeList(FilterType.timeType);
                TypeTitleListDialog typeTitleListDialog = new TypeTitleListDialog(_mActivity, stringList);
                TypeTitleListDialog typeTitleListDialog = new TypeTitleListDialog(_mActivity, stringList, viewBinding.allTimeTitleTv.getText().toString());
                typeTitleListDialog.show();
                typeTitleListDialog.setOnListener(new TypeTitleListDialog.OnClickListener() {
                    @Override
@@ -203,6 +240,14 @@
                        mTimeTypeFilterKye = FilterType.timeType;
                        mTimeTypeFilterValue = findFilterValueString(title);
                        loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
                    }
                });
                typeTitleListDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(DialogInterface dialog) {
                        viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.down);
                        viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
                        viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
                    }
                });
            }
@@ -215,6 +260,15 @@
                if (isAlarmDeviceClick) {
                    return;//防止多次点击
                }
                mDeviceTypeFilterKye = FilterType.all;
                mDeviceTypeFilterValue = FilterType.all;
                mTypeFilterKye = FilterType.all;
                mTypeFilterValue = FilterType.all;
                mTimeTypeFilterKye = FilterType.all;
                mTimeTypeFilterValue = FilterType.all;
                viewBinding.allDeviceTitleTv.setText(getString(R.string.alarm_all_device));
                viewBinding.allGradeTitleTv.setText(getString(R.string.alarm_all_grade));
                viewBinding.allTimeTitleTv.setText(getString(R.string.alarm_all_time));
                isAlarmDeviceClick = true;
                refreshBottomStyle(true);
                loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
@@ -227,42 +281,19 @@
                if (!isAlarmDeviceClick) {
                    return;//防止多次点击
                }
                mDeviceTypeFilterKye = FilterType.all;
                mDeviceTypeFilterValue = FilterType.all;
                mTypeFilterKye = FilterType.all;
                mTypeFilterValue = FilterType.all;
                mTimeTypeFilterKye = FilterType.all;
                mTimeTypeFilterValue = FilterType.all;
                viewBinding.allDeviceTitleTv.setText(getString(R.string.alarm_all_device));
                viewBinding.allGradeTitleTv.setText(getString(R.string.alarm_all_grade));
                viewBinding.allTimeTitleTv.setText(getString(R.string.alarm_all_time));
                isAlarmDeviceClick = false;
                refreshBottomStyle(false);
                loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
            }
        });
        //下拉按钮
        viewBinding.messageContentSrl.setColorSchemeResources(R.color.text_FF245EC3);
        viewBinding.messageContentSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                viewBinding.messageContentSrl.setRefreshing(false);
                loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
            }
        });
        //上拉按钮
        viewBinding.messageContentRl.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
//                super.onScrolled(recyclerView, dx, dy);
                LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
                if (layoutManager == null) {
                    return;
                }
                int visibleItemCount = layoutManager.getChildCount();
                int totalItemCount = layoutManager.getItemCount();
                int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
                if (visibleItemCount > 0 && visibleItemCount + firstVisibleItemPosition == totalItemCount) {
                    if (!isLoadingMore) {
                        // 滑动到了底部,执行相应的操作
                        HdlLogLogic.print("--->滑动到了底部");
                        loadNextPageMessageList(++mCurrentPage, false, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
                    }
                }
            }
        });
        if (messageCenterListAdapter != null) {
@@ -270,7 +301,7 @@
                @Override
                public void onClick(int position, MessageBean messageBean) {
                    Intent intent = new Intent();
                    intent.putExtra("msgId", messageBean.getMsgId().toString());
                    intent.putExtra("messageBean", new Gson().toJson(messageBean));
                    intent.setClass(_mActivity, MessageInfoActivity.class);
                    startActivity(intent);
                }
@@ -280,14 +311,12 @@
    }
    private void initView() {
        viewBinding.toolbarTopMessageCenterListRl.getRoot().setBackgroundColor(getColor(R.color.text_FFFFFFFF));
        viewBinding.toolbarTopMessageCenterListRl.topBackLl.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopMessageCenterListRl.topLeftIv.setImageResource(R.drawable.back_c);
        viewBinding.toolbarTopMessageCenterListRl.topTitleTv.setText(R.string.set_message_center);
        viewBinding.toolbarTopMessageCenterListRl.topMoreBtn.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopMessageCenterListRl.topMoreIv.setImageResource(R.drawable.clearall);
        viewBinding.toolbarTopMessageCenterListRl.topMoreIv.setImageResource(R.drawable.clear_all);
        //默认选中全部设备
        viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.up);
        viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.down);
        viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
        viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
        refreshBottomStyle(true);
@@ -296,10 +325,78 @@
        viewBinding.messageContentRl.setLayoutManager(mLayoutManager);
        viewBinding.messageContentRl.setAdapter(messageCenterListAdapter);
        messageCenterListAdapter.setList(mList);
        this.nullDataUpdateUi();
//        this.nullDataUpdateUi();
        pullToRefresh();
    }
    private void initData() {
        try {
            Intent intent = getIntent();
            if (intent != null) {
                String isShowFault = intent.getStringExtra("isShowFault");
                if (isShowFault != null && isShowFault.equals("true")) {
                    //默认故障全部
                    mDeviceTypeFilterKye = FilterType.all;
                    mDeviceTypeFilterValue = FilterType.all;
                    mTypeFilterKye = FilterType.type;
                    mTypeFilterValue = "FAULT";
                    mTimeTypeFilterKye = FilterType.all;
                    mTimeTypeFilterValue = FilterType.all;
                    viewBinding.allGradeTitleTv.setText(getString(R.string.alarm_all_grade_malfunction));
                }
            }
        } catch (Exception ignored) {
        }
    }
    /**
     * 下拉刷新的逻辑
     */
    protected void pullToRefresh() {
        viewBinding.messageContentSrl.setDelegate(new BGARefreshLayout.BGARefreshLayoutDelegate() {
            @Override
            public void onBGARefreshLayoutBeginRefreshing(BGARefreshLayout refreshLayout) {
                handler = new Handler(Looper.getMainLooper());
                delayedRunnable = new Runnable() {
                    @Override
                    public void run() {
                        viewBinding.messageContentSrl.endRefreshing();
                        loadNextPageMessageList(1, false, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
                    }
                };
                // 延迟 5 秒执行
                handler.postDelayed(delayedRunnable, 1000);
            }
            @Override
            public boolean onBGARefreshLayoutBeginLoadingMore(BGARefreshLayout refreshLayout) {
                handler = new Handler(Looper.getMainLooper());
                delayedRunnable = new Runnable() {
                    @Override
                    public void run() {
                        viewBinding.messageContentSrl.endLoadingMore();
                        if (!isLoadingMore) {
                            // 滑动到了底部,执行相应的操作
                            HdlLogLogic.print("--->滑动到了底部");
                            loadNextPageMessageList(++mCurrentPage, false, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
                        }
                    }
                };
                // 延迟 5 秒执行
                handler.postDelayed(delayedRunnable, 10);
                return true;
            }
        });
        HDLRefreshViewHolder hdlRefreshViewHolder = new HDLRefreshViewHolder(_mActivity, true);
        hdlRefreshViewHolder.setPullDownImageResource(R.mipmap.loading_44);
        hdlRefreshViewHolder.setChangeToReleaseRefreshAnimResId(R.drawable.loading_refresh);
        hdlRefreshViewHolder.setRefreshingAnimResId(R.drawable.loading_refresh_end);
        viewBinding.messageContentSrl.setRefreshViewHolder(hdlRefreshViewHolder);
    }
    /**
@@ -370,12 +467,37 @@
                        if (isShowLoading) {
                            hideLoading();
                        }
                        HdlThreadLogic.toast(_mActivity, e.getMsg() + "(" + e.getCode() + ")");
                    }
                });
    }
    /**
     * 读取消息【未读数量,未处理总数量,已处理总数量】
     */
    private void getUnreadCount() {
        HdlMessageLogic.getInstance().getMessageUntreatedCount(UserConfigManage.getInstance().getHomeId(), new CloudCallBeak<UnCountBean>() {
            @Override
            public void onSuccess(UnCountBean unCountBean) {
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void run() {
                        if (unCountBean == null) {
                            return;
                        }
                        mTotalCount1 = unCountBean.getUntreatedCount();
                        mTotalCount2 = unCountBean.getProcessedCount();
                    }
                });
            }
            @Override
            public void onFailure(HDLException e) {
            }
        });
    }
    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
    public void onEventMessage(BaseEventBus eventBus) {
@@ -435,16 +557,10 @@
            @Override
            public void run() {
                if (typeClick) {
                    viewBinding.messageBottomAlarmDeviceTitleTv.setTextColor(getColor(R.color.text_191919));
                    viewBinding.messageBottomAlarmDeviceLineV.setVisibility(View.VISIBLE);
                    viewBinding.messageBottomAlarmRecordTitleTv.setTextColor(getColor(R.color.text_B2B2B2));
                    viewBinding.messageBottomAlarmRecordLineV.setVisibility(View.GONE);
                } else {
                    viewBinding.messageBottomAlarmDeviceTitleTv.setTextColor(getColor(R.color.text_B2B2B2));
                    viewBinding.messageBottomAlarmDeviceLineV.setVisibility(View.GONE);
                    viewBinding.messageBottomAlarmRecordTitleTv.setTextColor(getColor(R.color.text_191919));
                    viewBinding.messageBottomAlarmRecordLineV.setVisibility(View.VISIBLE);
                }
@@ -526,6 +642,7 @@
        map.put(getString(R.string.alarm_all_device_inverter), "INV");
        map.put(getString(R.string.alarm_all_device_bms), "BMS");
        map.put(getString(R.string.alarm_all_device_battery_cell), "BATTERY");
        map.put(getString(R.string.alarm_all_device_load_centre), "LOAD_CENTRE");
        map.put(getString(R.string.alarm_all_grade), "");//设等级全部
        map.put(getString(R.string.alarm_all_grade_malfunction), "FAULT");
        map.put(getString(R.string.alarm_all_grade_warning), "WARN");
@@ -558,6 +675,7 @@
                stringList.add(getString(R.string.alarm_all_device_inverter));
                stringList.add(getString(R.string.alarm_all_device_bms));
                stringList.add(getString(R.string.alarm_all_device_battery_cell));
                stringList.add(getString(R.string.alarm_all_device_load_centre));
            }
            break;
            case FilterType.type: {