mac
2024-04-01 6ec45c8853d3cb6a592ecbe1d062094a77653b0f
app/src/main/java/com/hdl/photovoltaic/ui/newC/MessageCenterList.java
@@ -11,8 +11,6 @@
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonObject;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.R;
@@ -61,8 +59,19 @@
    private int mTotalCount1 = 0;//消息数量总数
    private int mTotalCount2 = 0;//消息数量总数
    private String mFilterKye = FilterType.all;//过滤类型
    private String mFilterValue = FilterType.all;//过滤类型值
    private String mDeviceTypeFilterKye = FilterType.deviceType;//过滤类型 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;
@@ -83,7 +92,7 @@
        //初始化界面监听器
        initEvent();
        //进来读取一次数据(为了更新currentPage,currentTotal这个值)
        loadNextPageMessageList(1, true, FilterType.all, FilterType.all);
        loadNextPageMessageList(1, true, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all, FilterType.all);
    }
    @Override
@@ -100,11 +109,11 @@
            public void onClick(View v) {
                clearCacheData();
                HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
                uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_REFRESH_USERINFO);
                uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_REFRESH_REFRESH_UNREAD_NUMBER);
                JsonObject jsonObject = new JsonObject();
                jsonObject.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
                uniCallBackBaseBean.setData(jsonObject);
                HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_REFRESH_REFRESH_UNREAD_NUMBER, uniCallBackBaseBean);
                HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
                finish();
            }
        });
@@ -117,7 +126,9 @@
                    @Override
                    public void onSuccess(Boolean obj) {
                        hideLoading();
                        loadNextPageMessageList(1, true, mFilterKye, mFilterValue);
                        loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
//                        HdlMessageLogic.getInstance().setAllRead(true);
//                        updateListData();
                    }
                    @Override
@@ -144,9 +155,9 @@
                    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);
                    }
                });
@@ -168,9 +179,9 @@
                    @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);
                    }
                });
            }
@@ -189,9 +200,9 @@
                    @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);
                    }
                });
            }
@@ -206,7 +217,7 @@
                }
                isAlarmDeviceClick = true;
                refreshBottomStyle(true);
                loadNextPageMessageList(1, true, mFilterKye, mFilterValue);
                loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
            }
        });
        //告警记录按钮
@@ -218,7 +229,7 @@
                }
                isAlarmDeviceClick = false;
                refreshBottomStyle(false);
                loadNextPageMessageList(1, true, mFilterKye, mFilterValue);
                loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
            }
        });
@@ -229,7 +240,7 @@
            @Override
            public void onRefresh() {
                viewBinding.messageContentSrl.setRefreshing(false);
                loadNextPageMessageList(1, true, mFilterKye, mFilterValue);
                loadNextPageMessageList(1, true, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
            }
        });
        //上拉按钮
@@ -249,7 +260,7 @@
                    if (!isLoadingMore) {
                        // 滑动到了底部,执行相应的操作
                        HdlLogLogic.print("--->滑动到了底部");
                        loadNextPageMessageList(++mCurrentPage, false, mFilterKye, mFilterValue);
                        loadNextPageMessageList(++mCurrentPage, false, mDeviceTypeFilterKye, mDeviceTypeFilterValue, mTypeFilterKye, mTypeFilterValue, mTimeTypeFilterKye, mTimeTypeFilterValue);
                    }
                }
            }
@@ -294,14 +305,17 @@
    /**
     * 加载一页数据
     *
     * @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();
@@ -322,75 +336,43 @@
        } else {
            messageStateType = MessageStateType.processed;
        }
        HdlMessageLogic.getInstance().getPageNoMessageList_C(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;
                    }
                    updateListData();
                }
                isLoadingMore = false;
                if (isShowLoading) {
                    hideLoading();
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (mCurrentPage > 1) {
                    --mCurrentPage;
                }
                isLoadingMore = false;
                if (isShowLoading) {
                    hideLoading();
                }
            }
        });
    }
    /**
     * 读取消息【未读数量】
     */
    private void getUnreadCount() {
        HdlMessageLogic.getInstance().getMessageUntreatedCount(new CloudCallBeak<String>() {
            @Override
            public void onSuccess(String data) {
                HdlThreadLogic.runMainThread(new Runnable() {
        HdlMessageLogic.getInstance().getPageNoMessageList_C(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 run() {
                        JSONObject jsonObject = JSON.parseObject(data);
                        if (jsonObject.containsKey("untreatedCount")) {
                            //未处理数量
                            String untreatedCount = jsonObject.getString("untreatedCount");
                            refreshCount();
                    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();
                        }
                        if (jsonObject.containsKey("unreadCount")) {
                            //未读数量
                            String unreadCount = jsonObject.getString("unreadCount");
                        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) {
                TextView textView = _mActivity.findViewById(R.id.my_message_bottom_il2).findViewById(R.id.red_count_tv);
                if (textView != null) {
                    textView.setVisibility(View.GONE);
                }
            }
        });
    }
@@ -514,7 +496,13 @@
     */
    private void updateCacheData() {
        mList.clear();
        mList.addAll(HdlMessageLogic.getInstance().getAllMessageList());
        if (isAlarmDeviceClick) {
            //设备报警
            mList.addAll(HdlMessageLogic.getInstance().getNascentMessageMemoryList());
        } else {
            //报警记录
            mList.addAll(HdlMessageLogic.getInstance().getRecoverMessageMemoryList());
        }
    }
@@ -589,4 +577,19 @@
        }
        return stringList;
    }
    /**
     * 物理按键返回事件
     */
    @Override
    public void onBackPressed() {
        clearCacheData();
        HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
        uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_REFRESH_REFRESH_UNREAD_NUMBER);
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("homeId", UserConfigManage.getInstance().getHomeId());
        uniCallBackBaseBean.setData(jsonObject);
        HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
        super.onBackPressed();
    }
}