mac
2024-11-05 e58e66125acccbd9b79573a520f9a6140bc47506
app/src/main/java/com/hdl/photovoltaic/ui/newC/MessageCenterList.java
@@ -1,7 +1,9 @@
package com.hdl.photovoltaic.ui.newC;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
@@ -11,6 +13,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;
@@ -59,10 +62,22 @@
    private int mTotalCount1 = 0;//消息数量总数
    private int mTotalCount2 = 0;//消息数量总数
    private String mFilterKye = FilterType.all;//过滤类型
    private String mFilterValue = FilterType.all;//过滤类型值
    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 :事件(提示));
    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天);
    //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天);
    private boolean isLoadingMore = false; // 标记正在加载更多数据
    LinearLayoutManager mLayoutManager;
    @Override
    public Object getContentView() {
@@ -81,7 +96,7 @@
        //初始化界面监听器
        initEvent();
        //进来读取一次数据(为了更新currentPage,currentTotal这个值)
        loadNextPageMessageList(1, true, FilterType.all, FilterType.all);
        loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
    }
    @Override
@@ -93,7 +108,7 @@
    private void initEvent() {
        //返回按钮
        viewBinding.toolbarTopMessageCenterListRl.topBackBtn.setOnClickListener(new View.OnClickListener() {
        viewBinding.toolbarTopMessageCenterListRl.topBackLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clearCacheData();
@@ -115,8 +130,9 @@
                    @Override
                    public void onSuccess(Boolean obj) {
                        hideLoading();
                        HdlMessageLogic.getInstance().setAllRead(true);
                        updateListData();
                        loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
//                        HdlMessageLogic.getInstance().setAllRead(true);
//                        updateListData();
                    }
                    @Override
@@ -136,17 +152,25 @@
                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
                    public void onClick(int position, String title) {
                        viewBinding.allDeviceTitleTv.setText(title);
                        mFilterKye = FilterType.deviceType;
                        mFilterValue = findFilterValueString(title);
                        loadNextPageMessageList(1, true, mFilterKye, mFilterValue);
                        mDeviceTypeFilterKye = FilterType.deviceType;
                        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);
                    }
                });
@@ -161,15 +185,23 @@
                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
                    public void onClick(int position, String title) {
                        viewBinding.allGradeTitleTv.setText(title);
                        mFilterKye = FilterType.type;
                        mFilterValue = findFilterValueString(title);
                        loadNextPageMessageList(1, true, mFilterKye, mFilterValue);
                        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);
                    }
                });
            }
@@ -182,15 +214,23 @@
                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
                    public void onClick(int position, String title) {
                        viewBinding.allTimeTitleTv.setText(title);
                        mFilterKye = FilterType.timeType;
                        mFilterValue = findFilterValueString(title);
                        loadNextPageMessageList(1, true, mFilterKye, mFilterValue);
                        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);
                    }
                });
            }
@@ -203,9 +243,18 @@
                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, mFilterKye, mFilterValue);
                loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
            }
        });
        //告警记录按钮
@@ -215,9 +264,18 @@
                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, mFilterKye, mFilterValue);
                loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
            }
        });
@@ -228,7 +286,7 @@
            @Override
            public void onRefresh() {
                viewBinding.messageContentSrl.setRefreshing(false);
                loadNextPageMessageList(1, true, mFilterKye, mFilterValue);
                loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
            }
        });
        //上拉按钮
@@ -248,7 +306,7 @@
                    if (!isLoadingMore) {
                        // 滑动到了底部,执行相应的操作
                        HdlLogLogic.print("--->滑动到了底部");
                        loadNextPageMessageList(++mCurrentPage, false, mFilterKye, mFilterValue);
                        loadNextPageMessageList(++mCurrentPage, false, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
                    }
                }
            }
@@ -258,7 +316,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);
                }
@@ -268,14 +326,14 @@
    }
    private void initView() {
        viewBinding.toolbarTopMessageCenterListRl.getRoot().setBackgroundColor(getColor(R.color.text_FFFFFFFF));
        viewBinding.toolbarTopMessageCenterListRl.topBackBtn.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopMessageCenterListRl.getRoot().setBackgroundColor(getColor(R.color.text_FFECECEC));
        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.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);
@@ -284,23 +342,43 @@
        viewBinding.messageContentRl.setLayoutManager(mLayoutManager);
        viewBinding.messageContentRl.setAdapter(messageCenterListAdapter);
        messageCenterListAdapter.setList(mList);
        this.nullDataUpdateUi();
//        this.nullDataUpdateUi();
    }
    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) {
        }
    }
    /**
     * 加载一页数据
     *
     * @param pageNo        页数
     * @param isShowLoading 是否启动加载框 true启动
     * @param filter_key    类型(设备,等级,时间)
     * @param 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 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天);
     */
    private void loadNextPageMessageList(int pageNo, boolean isShowLoading, String filter_key, String filter_value) {
    private void loadNextPageMessageList(int pageNo, boolean isShowLoading,
                                         String deviceType_filter_key, String deviceType_filter_value,
                                         String type_filter_key, String type_filter_value,
                                         String timeType_filter_key, String timeType_filter_value) {
        if (pageNo == 1) {
            //表示从第一页可以读取,默认清空所有缓存数据;
            clearCacheData();
@@ -321,37 +399,42 @@
        } else {
            messageStateType = MessageStateType.processed;
        }
        HdlMessageLogic.getInstance().getPageNoMessageList_C(UserConfigManage.getInstance().getHomeId(), pageNo, messageStateType, filter_key, filter_value, new CloudCallBeak<HdlMessageLogic.MessageListClass>() {
            @Override
            public void onSuccess(HdlMessageLogic.MessageListClass messageListClass) {
                if (messageListClass != null) {
                    mCurrentTotal = (int) messageListClass.getTotalPage();
                    mCurrentPage = (int) messageListClass.getPageNo();
                    int totalCount = (int) messageListClass.getTotalCount();
                    if (isAlarmDeviceClick) {
                        mTotalCount1 = totalCount;
                    } else {
                        mTotalCount2 = totalCount;
        HdlMessageLogic.getInstance().getPageNoMessageList(UserConfigManage.getInstance().getHomeId(), 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();
                            int totalCount = (int) messageListClass.getTotalCount();
                            if (isAlarmDeviceClick) {
                                mTotalCount1 = totalCount;
                            } else {
                                mTotalCount2 = totalCount;
                            }
                            updateListData();
                        }
                        isLoadingMore = false;
                        if (isShowLoading) {
                            hideLoading();
                        }
                    }
                    updateListData();
                }
                isLoadingMore = false;
                if (isShowLoading) {
                    hideLoading();
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (mCurrentPage > 1) {
                    --mCurrentPage;
                }
                isLoadingMore = false;
                if (isShowLoading) {
                    hideLoading();
                }
            }
        });
                    @Override
                    public void onFailure(HDLException e) {
                        if (mCurrentPage > 1) {
                            --mCurrentPage;
                        }
                        isLoadingMore = false;
                        if (isShowLoading) {
                            hideLoading();
                        }
                    }
                });
    }
@@ -419,13 +502,15 @@
                    viewBinding.messageBottomAlarmDeviceLineV.setVisibility(View.VISIBLE);
                    viewBinding.messageBottomAlarmRecordTitleTv.setTextColor(getColor(R.color.text_B2B2B2));
                    viewBinding.messageBottomAlarmRecordLineV.setVisibility(View.GONE);
                    viewBinding.messageBottomAlarmDeviceTitleTv.setTypeface(null, Typeface.BOLD);
                    viewBinding.messageBottomAlarmRecordTitleTv.setTypeface(null, Typeface.NORMAL);
                } 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);
                    viewBinding.messageBottomAlarmDeviceTitleTv.setTypeface(null, Typeface.NORMAL);
                    viewBinding.messageBottomAlarmRecordTitleTv.setTypeface(null, Typeface.BOLD);
                }
            }
@@ -477,7 +562,13 @@
     */
    private void updateCacheData() {
        mList.clear();
        mList.addAll(HdlMessageLogic.getInstance().getAllMessageList());
        if (isAlarmDeviceClick) {
            //设备报警
            mList.addAll(HdlMessageLogic.getInstance().getNascentMessageMemoryList());
        } else {
            //报警记录
            mList.addAll(HdlMessageLogic.getInstance().getRecoverMessageMemoryList());
        }
    }
@@ -500,6 +591,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");
@@ -532,6 +624,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: {