mac
2024-02-02 ba84a556dc93fcf75e6ec76f999344d3f96ad788
app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java
@@ -1,5 +1,6 @@
package com.hdl.photovoltaic.other;
import android.os.Build;
import android.text.TextUtils;
import com.google.gson.Gson;
@@ -12,6 +13,7 @@
import com.hdl.photovoltaic.ui.bean.MessageBean;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
@@ -21,7 +23,9 @@
public class HdlMessageLogic {
    private static volatile HdlMessageLogic sHdlMessageLogic;
    private int pageSize = 50;//页数
    private final int pageSize = 50;//页数
    private List<MessageBean> mListMessage = new ArrayList<>();
    /**
     * 获取当前对象
@@ -40,6 +44,12 @@
        return sHdlMessageLogic;
    }
    public void clearListMessage() {
        if (mListMessage.size() > 0) {
            mListMessage.clear();
        }
    }
    /**
     * 获取发生中缓存列表
     */
@@ -50,13 +60,17 @@
        List<MessageBean> newList = new ArrayList<>();
        for (int i = 0; i < mListMessage.size(); i++) {
            MessageBean messageBean = mListMessage.get(i);
            if (messageBean == null) {
                continue;
            }
            if (messageBean.getStatus().equals(MessageStateType.untreated)) {
                newList.add(messageBean);
            }
        }
        return newList;
        return sortList(newList);
    }
    /**
     * 获取恢复中缓存列表
@@ -73,6 +87,49 @@
            }
        }
        return sortList(newList);
    }
    /**
     * 列表进行排序
     *
     * @param list 源数据
     * @return -
     */
    private List<MessageBean> sortList(List<MessageBean> list) {
        List<MessageBean> newList = new ArrayList<>();
        List<MessageBean> readList = new ArrayList<>();
        List<MessageBean> unReadList = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            MessageBean messageBean = list.get(i);
            if (messageBean.isRead()) {
                //已读
                readList.add(messageBean);
            } else {
                //未读
                unReadList.add(messageBean);
            }
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            readList.sort(new Comparator<MessageBean>() {
                @Override
                public int compare(MessageBean o1, MessageBean o2) {
                    if (o1 == null && o2 == null) {
                        return -1;
                    }
                    //倒序(顺序 Long.compare(o2.getCreateTime(), o1.getCreateTime()))
                    return Long.compare(o1.getCreateTime(), o2.getCreateTime());
                }
            });
        }
        if (unReadList.size() > 0) {
            newList.addAll(unReadList);
        }
        if (readList.size() > 0) {
            newList.addAll(readList);
        }
        return newList;
    }
@@ -80,22 +137,31 @@
        return mListMessage;
    }
    /**
     * 添加消息到列表里面
     * 设置读取状态
     *
     * @param list -
     * @param msgId            -消息ID
     * @param read             是否已读取 true表示已读取
     * @param messageStateType UNTREATED : 未处理,PROCESSED : 已处理
     */
    public void setListMessage(List<MessageBean> list) {
    public void setMessageState(long msgId, boolean read, String messageStateType) {
        try {
            if (list == null || list.size() == 0) {
            if (msgId == 0) {
                return;
            }
            if (this.mListMessage.size() == 0) {
                this.mListMessage.addAll(list);
                return;
            }
            for (int i = 0; i < list.size(); i++) {
                this.setListMessage(list.get(i));
            for (int i = 0; i < mListMessage.size(); i++) {
                MessageBean messageBean = mListMessage.get(i);
                if (messageBean == null) {
                    continue;
                }
                if (messageBean.getMsgId() == msgId) {
                    messageBean.setRead(read);
                    if (!TextUtils.isEmpty(messageStateType)) {
                        messageBean.setStatus(messageStateType);
                    }
                    break;
                }
            }
        } catch (Exception ignored) {
        }
@@ -125,13 +191,88 @@
                //没有添加
                this.mListMessage.add(messageBean);
            }
        } catch (Exception e) {
            String mes = e.getMessage();
            HdlLogLogic.print("--->" + mes);
        }
    }
    /**
     * 添加消息到列表里面
     *
     * @param messageBean -
     * @param position    表示加到列表的位置
     */
    public void setListMessage(MessageBean messageBean, int position) {
        try {
            if (messageBean == null) {
                return;
            }
            boolean if_boolean = false;
            for (int i = 0; i < mListMessage.size(); i++) {
                if (mListMessage.get(i).getMsgId().toString().equals(messageBean.getMsgId().toString())) {
                    //存在替换
                    mListMessage.remove(i);
                    mListMessage.add(i, messageBean);
                    if_boolean = true;
                    break;
                }
            }
            if (!if_boolean) {
                //没有添加
                this.mListMessage.add(position, messageBean);
            }
        } catch (Exception e) {
            String mes = e.getMessage();
            HdlLogLogic.print("--->" + mes);
        }
    }
    /**
     * 添加消息到列表里面
     *
     * @param list -
     */
    public void setListMessage(List<MessageBean> list) {
        try {
            if (list == null || list.size() == 0) {
                return;
            }
            if (this.mListMessage.size() == 0) {
                this.mListMessage.addAll(list);
                return;
            }
            for (int i = 0; i < list.size(); i++) {
                this.setListMessage(list.get(i));
            }
        } catch (Exception ignored) {
        }
    }
    private List<MessageBean> mListMessage = new ArrayList<>();
    /**
     * 获取未处理缓存消息数量
     */
    public String getMessageUntreatedMemoryCount() {
        if (this.mListMessage == null || this.mListMessage.size() == 0) {
            return "0";
        }
        List<MessageBean> newList = new ArrayList<>();
        for (int i = 0; i < mListMessage.size(); i++) {
            MessageBean messageBean = mListMessage.get(i);
            if (messageBean == null) {
                continue;
            }
            if (!messageBean.getStatus().equals(MessageStateType.untreated)) {
                continue;
            }
            if (!messageBean.isRead()) {
                newList.add(messageBean);
            }
        }
        return newList.size() + "";
    }
    /**
     * 获取未处理消息数量
@@ -202,7 +343,7 @@
            json.addProperty("status", messageStateType);
        }
        json.addProperty("pageNo", 1);//页码
        json.addProperty("pageSize", 50);//页数
        json.addProperty("pageSize", pageSize);//页数
        List<MessageBean> list = new ArrayList<>();
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
@@ -215,11 +356,11 @@
                    return;
                }
                Gson gson = new Gson();
                MessageListClass messageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                list.addAll(messageListClass.getList());
                setListMessage(messageListClass.getList());
                MessageListClass oldMessageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                list.addAll(oldMessageListClass.getList());
                setListMessage(oldMessageListClass.getList());
                //总共有多少页
                long totalPage = messageListClass.totalPage;
                long totalPage = oldMessageListClass.totalPage;
                if (totalPage < 2) {
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(list);
@@ -235,9 +376,9 @@
                        @Override
                        public void onSuccess(String jsonStr) {
                            atomicInteger.set(atomicInteger.get() + 1);
                            MessageListClass messageListClass1 = gson.fromJson(jsonStr, MessageListClass.class);
                            list.addAll(messageListClass1.getList());
                            setListMessage(messageListClass.getList());
                            MessageListClass newMessageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                            list.addAll(newMessageListClass.getList());
                            setListMessage(newMessageListClass.getList());
                            if (atomicInteger.get() == totalPage - 1) {
                                //最后一条退出
                                if (cloudCallBeak != null) {
@@ -272,74 +413,36 @@
    }
    /**
     * 获取消息列表
     * 获取指定页的获取消息列表
     *
     * @param pageNo           页码
     * @param messageStateType all:全部,UNTREATED:未处理,PROCESSED:已处理;
     * @param cloudCallBeak    -
     */
    private void getMessageList(int pageNo, String messageStateType, CloudCallBeak<List<MessageBean>> cloudCallBeak) {
    public void getPageNoMessageList(int pageNo, String messageStateType, CloudCallBeak<MessageListClass> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Message_List;
        JsonObject json = new JsonObject();
        if (!MessageStateType.all.equals(messageStateType)) {
            json.addProperty("status", messageStateType);
        }
        json.addProperty("pageNo", 1);//页码
        json.addProperty("pageNo", pageNo);//页码
        json.addProperty("pageSize", pageSize);//页数
        List<MessageBean> list = new ArrayList<>();
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
            @Override
            public void onSuccess(String jsonStr) {
                if (TextUtils.isEmpty(jsonStr)) {
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(new ArrayList<>());
                        cloudCallBeak.onSuccess(new MessageListClass());
                    }
                    return;
                }
                Gson gson = new Gson();
                MessageListClass messageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                list.addAll(messageListClass.getList());
                setListMessage(messageListClass.getList());
                //总共有多少页
                long totalPage = messageListClass.totalPage;
                if (totalPage < 2) {
                    if (cloudCallBeak != null) {
                        cloudCallBeak.onSuccess(list);
                    }
                    return;
                }
                //记录请求条数
                AtomicInteger atomicInteger = new AtomicInteger(0);
                //从第二页获取数据
                for (int i = 2; i <= totalPage; i++) {
                    json.addProperty("pageNo", i);//更新页码
                    HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
                        @Override
                        public void onSuccess(String jsonStr) {
                            atomicInteger.set(atomicInteger.get() + 1);
                            MessageListClass messageListClass1 = gson.fromJson(jsonStr, MessageListClass.class);
                            list.addAll(messageListClass1.getList());
                            setListMessage(messageListClass.getList());
                            if (atomicInteger.get() == totalPage - 1) {
                                //最后一条退出
                                if (cloudCallBeak != null) {
                                    cloudCallBeak.onSuccess(list);
                                }
                            }
                        }
                        @Override
                        public void onFailure(HDLException e) {
                            atomicInteger.set(atomicInteger.get() + 1);
                            if (atomicInteger.get() == totalPage - 1) {
                                //最后一条退出
                                if (cloudCallBeak != null) {
                                    cloudCallBeak.onSuccess(list);
                                }
                            }
                        }
                    });
                MessageListClass oldMessageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                setListMessage(oldMessageListClass.getList());
                if (cloudCallBeak != null) {
                    cloudCallBeak.onSuccess(oldMessageListClass);
                }
            }
@@ -421,7 +524,7 @@
    }
    static class MessageListClass {
    public static class MessageListClass {
        //总条数
        private long totalCount;