wjc
2024-12-23 cb79815beaa49dd657e806539d7fe2d755aad40a
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java
@@ -1,30 +1,37 @@
package com.hdl.photovoltaic.ui.message;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.base.CustomBaseFragment;
import com.hdl.photovoltaic.config.ConstantManage;
import com.hdl.photovoltaic.databinding.FragmentMessageBinding;
import com.hdl.photovoltaic.enums.FilterType;
import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch;
import com.hdl.photovoltaic.enums.MessageFunctionTabSwitch;
import com.hdl.photovoltaic.enums.MessageStateType;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlCommonLogic;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlMessageLogic;
import com.hdl.photovoltaic.ui.bean.BUserInfo;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.ui.adapter.MessageAdapter;
import com.hdl.photovoltaic.ui.bean.MessageBean;
import com.hdl.photovoltaic.ui.bean.UnCountBean;
import com.hdl.photovoltaic.widget.BTypeTitleListDialog;
import com.hdl.photovoltaic.widget.TypeTitleListDialog;
import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
import org.greenrobot.eventbus.EventBus;
@@ -32,21 +39,37 @@
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 消息
 * 消息模块界面
 */
public class MessageFragment extends CustomBaseFragment {
    private FragmentMessageBinding viewBinding;
    //当前显示的fragment
    private static final String CURRENT_FRAGMENT = "state_fragment_show";
    private FragmentManager mFragmentManager;
    private Fragment currentFragment = new Fragment();
    private final List<Fragment> fragmentList = new ArrayList<>();
    private int currentIndex = 0;
    private MessageAdapter mMessageAdapter;
    private boolean isAlarmDeviceClick = true;//true表示告警设备被选中,则false表示报警记录被选中
    private final List<MessageBean> mList = new ArrayList<>();
    private boolean isRefreshTotalCount = true;
    private int mTotalCount = 0; //总条数
    private int mCurrentPage = 0; // 当前页码
    private int mCurrentTotal = 0; // 总页码
    private String mDeviceTypeFilterKye = FilterType.deviceType;//过滤类型 deviceType(INV :逆变器;BMS :BMS控制盒;BATTERY :电池单元;"LOAD_CENTRE":负载控制中心)
    private String mDeviceTypeFilterValue = FilterType.all;//过滤类型值 deviceType(INV :逆变器;BMS :BMS控制盒;BATTERY :电池单元;"LOAD_CENTRE":负载控制中心
    private String mTypeFilterKye = FilterType.all;//过滤类型 type(FAULT :故障; WARN :告警; EVENT :事件(提示));
    private String mTypeFilterValue = FilterType.all;//过滤类型值 type(FAULT :故障; WARN :告警; EVENT :事件(提示));
    private String mTimeTypeFilterKye = FilterType.all;//过滤类型  timeType(TODAY :今天;LAST_3_DAYS: 近3天;LAST_7_DAYS :近7天;LAST_30_DAYS :近30天);
    private String mTimeTypeFilterValue = FilterType.all;//过滤类型值  timeType(TODAY :今天;LAST_3_DAYS: 近3天;LAST_7_DAYS :近7天;LAST_30_DAYS :近30天);
    private boolean isLoadingMore = false; // 标记正在加载更多数据
    @Override
    public Object getContentView() {
@@ -56,165 +79,247 @@
    @Override
    public void onBindView(Bundle savedInstanceState) {
        //初始化碎片
        initFragment(savedInstanceState);
        //初始化界面
        initView();
        //初始化监听器
        initEvent();
        //初始化数据
        initData();
    }
    private void initEvent() {
        //发生中
        viewBinding.messageTabNascentCl.setOnClickListener(new View.OnClickListener() {
        viewBinding.messageTabNascentTitleTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                currentIndex = 0;
                initView();
                showFragment();
                postEventBus(MessageFunctionTabSwitch.nascent);
                if (isAlarmDeviceClick) {
                    return;
                }
                mDeviceTypeFilterKye = FilterType.deviceType;
                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;
                isRefreshTotalCount = true;
                viewBinding.messageTabNascentTitleTv.setTextAppearance(R.style.Text18Style);
                viewBinding.messageTabRecoverTitleTv.setTextAppearance(R.style.Text14Style);
                viewBinding.allClearIv.setVisibility(View.VISIBLE);
                loadNextPageMessageList(true, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
            }
        });
        //已恢复
        viewBinding.messageTabRecoverCl.setOnClickListener(new View.OnClickListener() {
        //报警记录
        viewBinding.messageTabRecoverTitleTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                currentIndex = 1;
                initView();
                showFragment();
                postEventBus(MessageFunctionTabSwitch.recover);
                if (!isAlarmDeviceClick) {
                    return;
                }
                mDeviceTypeFilterKye = FilterType.deviceType;
                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;
                isRefreshTotalCount = true;
                viewBinding.messageTabNascentTitleTv.setTextAppearance(R.style.Text14Style);
                viewBinding.messageTabRecoverTitleTv.setTextAppearance(R.style.Text18Style);
                viewBinding.allClearIv.setVisibility(View.GONE);
                loadNextPageMessageList(true, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
            }
        });
        //搜索消息
        viewBinding.messageSearchCl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String messageStateType;
                if (isAlarmDeviceClick) {
                    messageStateType = MessageStateType.untreated;
                } else {
                    messageStateType = MessageStateType.processed;
                }
                Intent intent = new Intent();
                intent.putExtra("MessageStateType", messageStateType);
                intent.setClass(_mActivity, SearchMessageActivity.class);
                startActivity(intent);
            }
        });
        //全部
        viewBinding.messageTabAllCl.setOnClickListener(new View.OnClickListener() {
        //清空所有未读按钮
        viewBinding.allClearIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                currentIndex = 2;
                initView();
                showFragment();
                postEventBus(MessageFunctionTabSwitch.all);
                showLoading();
                HdlMessageLogic.getInstance().messageAllRead("", new CloudCallBeak<Boolean>() {
                    @Override
                    public void onSuccess(Boolean obj) {
                        hideLoading();
                        loadNextPageMessageList(true, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        hideLoading();
                        HdlThreadLogic.toast(_mActivity, e);
                    }
                });
            }
        });
        //全部设备(全部设备、逆变器、BMS控制盒、电池单元)按钮
        viewBinding.messageTabAllDeviceCl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.up);
                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
                setTypeTitleListDialog(viewBinding.allDeviceTitleTv, FilterType.deviceType, getTypeList(FilterType.deviceType));
            }
        });
        //全部等级(故障、警告、提示)按钮
        viewBinding.messageTabAllGradeCl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.down);
                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.up);
                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.down);
                setTypeTitleListDialog(viewBinding.allGradeTitleTv, FilterType.type, getTypeList(FilterType.type));
            }
        });
        //全部时间(当天、近3天、近7天、近30天)按钮
        viewBinding.messageTabAllTimeCl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewBinding.allDeviceTitleIv.setBackgroundResource(R.drawable.down);
                viewBinding.allGradeTitleIv.setBackgroundResource(R.drawable.down);
                viewBinding.allTimeTitleIv.setBackgroundResource(R.drawable.up);
                setTypeTitleListDialog(viewBinding.allTimeTitleTv, FilterType.timeType, getTypeList(FilterType.timeType));
            }
        });
        //下拉按钮
        viewBinding.messageSrl.setColorSchemeResources(R.color.text_FF245EC3);
        viewBinding.messageSrl.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                viewBinding.messageSrl.setRefreshing(false);
                loadNextPageMessageList(true, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
            }
        });
        //上拉按钮
        viewBinding.messageRcv.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(false, ++mCurrentPage, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, false);
                    }
                }
            }
        });
        if (mMessageAdapter != null) {
            mMessageAdapter.setOnclickListener(new MessageAdapter.OnClickListener() {
                @Override
                public void onClick(int position, MessageBean messageBean) {
                    Intent intent = new Intent();
                    intent.putExtra("messageBean", new Gson().toJson(messageBean));
                    intent.setClass(_mActivity, MessageInfoActivity.class);
                    startActivity(intent);
                }
            });
        }
    }
    /**
     * 类型筛选
     *
     * @param textView   组件显示
     * @param filterType 过滤类型
     * @param stringList 过滤类型值表
     */
    private void setTypeTitleListDialog(TextView textView, String filterType, List<String> stringList) {
        BTypeTitleListDialog typeTitleListDialog = new BTypeTitleListDialog(_mActivity, stringList, textView.getText().toString());
        typeTitleListDialog.show();
        typeTitleListDialog.setOnListener(new BTypeTitleListDialog.OnClickListener() {
            @Override
            public void onClick(int position, String title) {
                textView.setText(title);
                switch (filterType) {
                    case FilterType.deviceType: {
                        mDeviceTypeFilterKye = filterType;
                        mDeviceTypeFilterValue = findFilterValueString(title);
                    }
                    break;
                    case FilterType.type: {
                        mTypeFilterKye = filterType;
                        mTypeFilterValue = findFilterValueString(title);
                    }
                    break;
                    case FilterType.timeType: {
                        mTimeTypeFilterKye = filterType;
                        mTimeTypeFilterValue = findFilterValueString(title);
                    }
                    break;
                }
                loadNextPageMessageList(true, 1, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue, true);
            }
        });
        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);
            }
        });
    }
    private void initView() {
        if (this.currentIndex == 0) {
            viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
            viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
            viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
            viewBinding.line1V.setVisibility(View.VISIBLE);
            viewBinding.line2V.setVisibility(View.GONE);
            viewBinding.line3V.setVisibility(View.GONE);
        } else if (this.currentIndex == 1) {
            viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
            viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
            viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
            viewBinding.line1V.setVisibility(View.GONE);
            viewBinding.line2V.setVisibility(View.VISIBLE);
            viewBinding.line3V.setVisibility(View.GONE);
        } else if (this.currentIndex == 2) {
            viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
            viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null));
            viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null));
            viewBinding.line1V.setVisibility(View.GONE);
            viewBinding.line2V.setVisibility(View.GONE);
            viewBinding.line3V.setVisibility(View.VISIBLE);
        if (isAlarmDeviceClick) {
            viewBinding.messageTabNascentTitleTv.setTextAppearance(R.style.Text18Style);
            viewBinding.messageTabRecoverTitleTv.setTextAppearance(R.style.Text14Style);
        } else {
            viewBinding.messageTabNascentTitleTv.setTextAppearance(R.style.Text18Style);
            viewBinding.messageTabRecoverTitleTv.setTextAppearance(R.style.Text14Style);
        }
//        viewBinding..topMoreBtn.setVisibility(View.VISIBLE);
//        viewBinding.toolbarTopMessageCenterListRl.topMoreIv.setImageResource(R.drawable.clearall);
        mMessageAdapter = new MessageAdapter(_mActivity);
        viewBinding.messageRcv.setLayoutManager(new LinearLayoutManager(_mActivity));
        viewBinding.messageRcv.setAdapter(mMessageAdapter);
    }
    private void initData() {
        //进来读取一次数据(为了更新currentPage,currentTotal这个值),app启动时候读取,为了刷新消息模块的角标
        loadNextPageMessageList(true, 1, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all, true);
    }
    /**
     * 发布点击事件
     *
     * @param tabSwitch -
     */
    private void postEventBus(MessageFunctionTabSwitch tabSwitch) {
        BaseEventBus baseEventBus = new BaseEventBus();
        baseEventBus.setTopic(ConstantManage.message_function_tab_switch);
        baseEventBus.setType(tabSwitch.toString());
        //发送粘性事件(如果不发粘性事件会遇到一个没有加载出来的碎片接收不到信息)
        EventBus.getDefault().postSticky(baseEventBus);
    }
    /**
     * 初始化Fragment
     *
     * @param savedInstanceState -
     */
    private void initFragment(Bundle savedInstanceState) {
        mFragmentManager = _mActivity.getSupportFragmentManager();
        //碎片初始化
        NascentMessageFragment mNascentMessageFragment = new NascentMessageFragment();
        RecoverMessageFragment mRecoverMessageFragment = new RecoverMessageFragment();
        AllMessageFragment mAllMessageFragment = new AllMessageFragment();
        if (savedInstanceState != null) {
            //“内存重启”时调用 获取“内存重启”时保存的索引下标
            currentIndex = savedInstanceState.getInt(CURRENT_FRAGMENT, 0);
            if (fragmentList.size() != 0) {
                fragmentList.clear();
            }
            fragmentList.add(mFragmentManager.findFragmentByTag(0 + ""));
            fragmentList.add(mFragmentManager.findFragmentByTag(1 + ""));
            fragmentList.add(mFragmentManager.findFragmentByTag(2 + ""));
            restoreFragment();//恢复fragment页面
        } else {
            //正常启动时调用
            fragmentList.add(mNascentMessageFragment);
            fragmentList.add(mRecoverMessageFragment);
            fragmentList.add(mAllMessageFragment);
            showFragment();
        }
    }
    /**
     * 使用show() hide()切换页面
     * 显示fragment
     */
    private void showFragment() {
        FragmentTransaction ft = mFragmentManager.beginTransaction();
        //如果之前没有添加过
        if (!fragmentList.get(currentIndex).isAdded()) {
            //第三个参数为添加当前的fragment时绑定一个tag
            ft.hide(currentFragment).add(R.id.message_fcv, fragmentList.get(currentIndex), currentIndex + "");
        } else {
            ft.hide(currentFragment).show(fragmentList.get(currentIndex));
        }
        currentFragment = fragmentList.get(currentIndex);
        ft.commit();
        //把当前显示的fragment记录下来
        currentFragment = fragmentList.get(currentIndex);
    }
    /**
     * 恢复fragment
     */
    private void restoreFragment() {
        FragmentTransaction ft = mFragmentManager.beginTransaction();
        for (int i = 0; i < fragmentList.size(); i++) {
            if (i == currentIndex) {
                ft.show(fragmentList.get(i));
            } else {
                ft.hide(fragmentList.get(i));
            }
        }
        ft.commit();
    }
    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
    public void onEventMessage(BaseEventBus eventBus) {
@@ -227,10 +332,335 @@
            if (eventBus.getType().equals(HomepageTitleTabSwitch.message.toString())) {
                // 取消粘性事件
                EventBus.getDefault().removeStickyEvent(eventBus);
                postEventBus(MessageFunctionTabSwitch.nascent);
                //进来读取一次数据(为了更新currentPage,currentTotal这个值)
//                initData();
                HdlLogLogic.print("正在点击【消息】");
            }
        } else if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) {
            if (eventBus.getType().equals(MessageStateType.untreated)) {
                updateListData();
            }/* else if (eventBus.getType().equals(MessageStateType.processed)) {
                updateListData();
            }*/
        }
    }
    /**
     * 加载一页数据
     *
     * @param pageNo                  页数
     * @param isShowLoading           是否启动加载框 true启动
     * @param deviceType_filter_key   类型(设备,等级,时间)
     * @param deviceType_filter_value deviceType(INV :逆变器;BMS :BMS控制盒;BATTERY :电池单元);
     *                                type(FAULT :故障; WARN :告警; EVENT :事件(提示));
     *                                timeType(TODAY :今天;LAST_3_DAYS: 近3天;LAST_7_DAYS :近7天;LAST_30_DAYS :近30天);
     * @param isClear                 true表示清空缓存
     */
    private void loadNextPageMessageList(
            boolean isShowLoading,
            int pageNo,
            String deviceType_filter_key,
            String deviceType_filter_value,
            String type_filter_key,
            String type_filter_value,
            String timeType_filter_key,
            String timeType_filter_value,
            boolean isClear) {
        if (isClear) {
            //表示从第一页可以读取,默认清空所有缓存数据;
            clearCacheData();
        }
        //第一页读取数据强制读
        if (pageNo > 1 && mCurrentPage > mCurrentTotal) {
            --mCurrentPage;
            //当前页不能大于总页数
            return;
        }
        isLoadingMore = true;//标记读取状态
        if (isShowLoading) {
            showLoading();
        }
        String messageStateType;
        if (isAlarmDeviceClick) {
            messageStateType = MessageStateType.untreated;
        } else {
            messageStateType = MessageStateType.processed;
        }
        HdlMessageLogic.getInstance().getPageNoMessageList("", pageNo, messageStateType, deviceType_filter_key, deviceType_filter_value, type_filter_key, type_filter_value, timeType_filter_key, timeType_filter_value, "", new CloudCallBeak<HdlMessageLogic.MessageListClass>() {
            @Override
            public void onSuccess(HdlMessageLogic.MessageListClass messageListClass) {
                if (messageListClass != null) {
                    mCurrentTotal = (int) messageListClass.getTotalPage();
                    mCurrentPage = (int) messageListClass.getPageNo();
                    mTotalCount = (int) messageListClass.getTotalCount();
                    updateListData();
                }
                isLoadingMore = false;
                if (isShowLoading) {
                    hideLoading();
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (mCurrentPage > 1) {
                    --mCurrentPage;
                }
                isLoadingMore = false;
                if (isShowLoading) {
                    hideLoading();
                }
            }
        });
    }
    /**
     * 刷新列表数据
     */
    private void updateListData() {
        HdlThreadLogic.runMainThread(new Runnable() {
            @Override
            public void run() {
                //读取缓存数据
                updateCacheData();
                //刷新列表
                updateRecyclerViewList();
                //显示未读信息总数量
                getUnreadCount();
                if (isAlarmDeviceClick) {
                    refreshNascentTotalCount(mTotalCount);
                } else {
                    refreshRecoverTotalCount(mTotalCount);
                }
                //显示没数据Ui样式
                nullDataUpdateUi();
            }
        });
    }
    /**
     * 刷新发送中消息总数量
     *
     * @param nascentTotalCount 发送中消息总数量
     */
    private void refreshNascentTotalCount(int nascentTotalCount) {
        HdlThreadLogic.runMainThread(new Runnable() {
            @Override
            public void run() {
                //设备报警总数量
                TextView nascentTv = _mActivity.findViewById(R.id.message_tab_nascent_title_tv);
                if (nascentTv != null) {
                    nascentTv.setText(getText(R.string.message_nascent));
                    if (nascentTotalCount > 0) {
                        String s = getText(R.string.message_nascent) + "(" + nascentTotalCount + ")";
                        nascentTv.setText(s);
                    }
                }
            }
        });
    }
    /**
     * 刷新报警记录消息总数量
     *
     * @param recoverTotalCount 报警记录消息总数量
     */
    private void refreshRecoverTotalCount(int recoverTotalCount) {
        HdlThreadLogic.runMainThread(new Runnable() {
            @Override
            public void run() {
                //报警记录总数量
                TextView recoverTV = _mActivity.findViewById(R.id.message_tab_recover_title_tv);
                if (recoverTV != null) {
                    recoverTV.setText(getText(R.string.alarm_record));
                    if (recoverTotalCount > 0) {
                        String s = getText(R.string.alarm_record) + "(" + recoverTotalCount + ")";
                        recoverTV.setText(s);
                    }
                }
            }
        });
    }
    /**
     * 刷新【消息模块】下角标数值
     *
     * @param unreadCount 未读信息数量总数
     */
    private void refreshUnreadCount(int unreadCount) {
        HdlThreadLogic.runMainThread(new Runnable() {
            @SuppressLint("SetTextI18n")
            @Override
            public void run() {
                TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv);
                if (textView != null) {
                    if (unreadCount == 0) {
                        textView.setVisibility(View.GONE);
                    } else {
                        textView.setVisibility(View.VISIBLE);
                        if (unreadCount > 99) {
                            textView.setText("99+");
                        } else {
                            textView.setText(unreadCount + "");
                        }
                    }
                }
            }
        });
    }
    /**
     * 重新更新列表数据
     */
    private void updateRecyclerViewList() {
        if (mMessageAdapter == null) {
            return;
        }
        mMessageAdapter.setList(mList);
    }
    /**
     * 清空所有缓存数据(获取第一页之前要清空所有缓存数据)
     */
    private void clearCacheData() {
        mList.clear();
        HdlMessageLogic.getInstance().clearListMessage();//表示强制清空所有缓存信息
    }
    /**
     * 更新缓存数据
     */
    private void updateCacheData() {
        mList.clear();
        if (isAlarmDeviceClick) {
            //设备报警
            mList.addAll(HdlMessageLogic.getInstance().getNascentMessageMemoryList());
        } else {
            //报警记录
            mList.addAll(HdlMessageLogic.getInstance().getRecoverMessageMemoryList());
        }
    }
    /**
     * 读取消息【未读数量,未处理总数量,已处理总数量】
     */
    private void getUnreadCount() {
        HdlMessageLogic.getInstance().getMessageUntreatedCount("", new CloudCallBeak<UnCountBean>() {
            @Override
            public void onSuccess(UnCountBean unCountBean) {
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void run() {
                        if (unCountBean == null) {
                            return;
                        }
                        refreshUnreadCount(unCountBean.getUnreadCount());
                        if (isRefreshTotalCount) {
                            isRefreshTotalCount = false;
                            refreshNascentTotalCount(unCountBean.getUntreatedCount());
                            refreshRecoverTotalCount(unCountBean.getProcessedCount());
                        }
                    }
                });
            }
            @Override
            public void onFailure(HDLException e) {
                HdlThreadLogic.runMainThread(new Runnable() {
                    @Override
                    public void run() {
                        TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv);
                        if (textView != null) {
                            textView.setVisibility(View.GONE);
                        }
                    }
                });
            }
        });
    }
    /**
     * 没有消息列表的样式
     */
    private void nullDataUpdateUi() {
        HdlCommonLogic.getInstance().nullDataUpdateUi(_mActivity, viewBinding.nullDataIc.getRoot(), viewBinding.nullDataIc.nullDataGifAnimationIv, viewBinding.nullDataIc.nullDataTv, getString(R.string.message_alarm_data_null), mList.size() > 0);
    }
    /**
     * 查找过滤值
     *
     * @param title 标题
     * @return 过滤值
     */
    public String findFilterValueString(String title) {
        Map<String, String> map = new HashMap<>();
        map.put(getString(R.string.alarm_all_device), "");//设备全部
        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");
        map.put(getString(R.string.alarm_all_grade_tip), "EVENT");
        map.put(getString(R.string.alarm_all_time), "");//时间全部
        map.put(getString(R.string.alarm_all_time_same_day), "TODAY");
        map.put(getString(R.string.alarm_all_time_3), "LAST_3_DAYS");
        map.put(getString(R.string.alarm_all_time_7), "LAST_7_DAYS");
        map.put(getString(R.string.alarm_all_time_30), "LAST_30_DAYS");
        for (Map.Entry<String, String> entry : map.entrySet()) {
            if (title.equals(entry.getKey())) {
                return entry.getValue();
            }
        }
        return "";
    }
    /**
     * 获取类型列表
     *
     * @param filterType 过滤类型
     * @return 返回类型列表
     */
    private List<String> getTypeList(String filterType) {
        List<String> stringList = new ArrayList<>();
        switch (filterType) {
            case FilterType.deviceType: {
                stringList.add(getString(R.string.alarm_all_device));
                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: {
                stringList.add(getString(R.string.alarm_all_grade));
                stringList.add(getString(R.string.alarm_all_grade_malfunction));
                stringList.add(getString(R.string.alarm_all_grade_warning));
                stringList.add(getString(R.string.alarm_all_grade_tip));
            }
            break;
            case FilterType.timeType: {
                stringList.add(getString(R.string.alarm_all_time));
                stringList.add(getString(R.string.alarm_all_time_same_day));
                stringList.add(getString(R.string.alarm_all_time_3));
                stringList.add(getString(R.string.alarm_all_time_7));
                stringList.add(getString(R.string.alarm_all_time_30));
            }
            break;
        }
        return stringList;
    }
}