mac
2024-01-02 d1ebb94e1a17b7c25d4fcf73d85345d92cc86b5c
app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java
@@ -21,6 +21,8 @@
public class HdlMessageLogic {
    private static volatile HdlMessageLogic sHdlMessageLogic;
    private int pageSize = 50;//页数
    /**
     * 获取当前对象
     *
@@ -41,7 +43,7 @@
    /**
     * 获取发生中缓存列表
     */
    public List<MessageBean> getRecoverMessageMemoryList() {
    public List<MessageBean> getNascentMessageMemoryList() {
        if (this.mListMessage == null || this.mListMessage.size() == 0) {
            return new ArrayList<>();
        }
@@ -57,9 +59,9 @@
    }
    /**
     * 获取处理中缓存列表
     * 获取恢复中缓存列表
     */
    public List<MessageBean> getNascentMessageMemoryList() {
    public List<MessageBean> getRecoverMessageMemoryList() {
        if (this.mListMessage == null || this.mListMessage.size() == 0) {
            return new ArrayList<>();
        }
@@ -74,10 +76,15 @@
        return newList;
    }
    public List<MessageBean> getListMessage() {
    public List<MessageBean> getAllMessageList() {
        return mListMessage;
    }
    /**
     * 添加消息到列表里面
     *
     * @param list -
     */
    public void setListMessage(List<MessageBean> list) {
        try {
            if (list == null || list.size() == 0) {
@@ -87,23 +94,37 @@
                this.mListMessage.addAll(list);
                return;
            }
            List<MessageBean> newList = new ArrayList<>();
            for (int i = 0; i < list.size(); i++) {
                MessageBean messageBean = list.get(i);
                boolean if_boolean = false;
                for (int j = 0; j < mListMessage.size(); j++) {
                    if (mListMessage.get(j).toString().equals(messageBean.getMsgId().toString())) {
                        mListMessage.remove(j);
                        mListMessage.add(j, messageBean);
                        if_boolean = true;
                        break;
                    }
                }
                if (!if_boolean) {
                    newList.add(messageBean);
                this.setListMessage(list.get(i));
            }
        } catch (Exception ignored) {
        }
    }
    /**
     * 添加消息到列表里面
     *
     * @param messageBean -
     */
    public void setListMessage(MessageBean messageBean) {
        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;
                }
            }
            this.mListMessage.addAll(newList);
            if (!if_boolean) {
                //没有添加
                this.mListMessage.add(messageBean);
            }
        } catch (Exception ignored) {
        }
    }
@@ -146,7 +167,16 @@
     * @param cloudCallBeak -
     */
    public void getAllMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) {
        getMessageList(MessageStatus.all, cloudCallBeak);
        getMessageList(MessageStateType.all, cloudCallBeak);
    }
    /**
     * 获取恢复中列表
     *
     * @param cloudCallBeak -
     */
    public void getRecoverMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) {
        getMessageList(MessageStateType.processed, cloudCallBeak);
    }
    /**
@@ -154,33 +184,22 @@
     *
     * @param cloudCallBeak -
     */
    public void getRecoverMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) {
        getMessageList(MessageStatus.untreated, cloudCallBeak);
    }
    /**
     * 获取处理中列表
     *
     * @param cloudCallBeak -
     */
    public void getNascentMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) {
        getMessageList(MessageStatus.processed, cloudCallBeak);
        getMessageList(MessageStateType.untreated, cloudCallBeak);
    }
    /**
     * 获取消息列表
     *
     * @param messageStatus all:全部,untreated:未处理,processed:已处理;
     * @param cloudCallBeak -
     * @param messageStateType all:全部,UNTREATED:未处理,PROCESSED:已处理;
     * @param cloudCallBeak    -
     */
    public void getMessageList(MessageStatus messageStatus, CloudCallBeak<List<MessageBean>> cloudCallBeak) {
    private void getMessageList(String messageStateType, CloudCallBeak<List<MessageBean>> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Message_List;
        JsonObject json = new JsonObject();
        if (messageStatus == MessageStatus.untreated) {
            json.addProperty("status", "UNTREATED");//未处理
        } else if (messageStatus == MessageStatus.processed) {
            json.addProperty("status", "PROCESSED");//已处理
        if (!MessageStateType.all.equals(messageStateType)) {
            json.addProperty("status", messageStateType);
        }
        json.addProperty("pageNo", 1);//页码
        json.addProperty("pageSize", 50);//页数
@@ -189,8 +208,94 @@
        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<>());
                    }
                    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);
                                }
                            }
                        }
                    });
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onSuccess(new ArrayList<>());
                    cloudCallBeak.onFailure(e);
                }
            }
        });
    }
    /**
     * 获取消息列表
     *
     * @param messageStateType all:全部,UNTREATED:未处理,PROCESSED:已处理;
     * @param cloudCallBeak    -
     */
    private void getMessageList(int pageNo, String messageStateType, CloudCallBeak<List<MessageBean>> 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("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<>());
                    }
                    return;
                }
                Gson gson = new Gson();
                MessageListClass messageListClass = gson.fromJson(jsonStr, MessageListClass.class);
@@ -315,14 +420,6 @@
    }
    public enum MessageStatus {
        all,//全部
        untreated,//未处理
        processed,//已处理
    }
    static class MessageListClass {