mac
2024-03-20 5ca2b601848c62607d88fee5afdae6af80f6eea7
app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java
@@ -23,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 +42,15 @@
        }
        return sHdlMessageLogic;
    }
    public void clearListMessage() {
        if (mListMessage == null) {
            return;
        }
        if (mListMessage.size() > 0) {
            mListMessage.clear();
        }
    }
    /**
@@ -61,6 +72,21 @@
        }
        return sortList(newList);
    }
    /**
     * 消息全部已读(本地缓存)
     *
     * @param isRead 是否读取(true已读取)
     */
    public void setAllRead(boolean isRead) {
        for (int i = 0; i < mListMessage.size(); i++) {
            MessageBean messageBean = mListMessage.get(i);
            if (messageBean == null) {
                continue;
            }
            messageBean.setRead(isRead);
        }
    }
@@ -126,7 +152,7 @@
    }
    public List<MessageBean> getAllMessageList() {
        return mListMessage;
        return sortList(mListMessage);
    }
@@ -190,9 +216,9 @@
    }
    /**
     * 添加消息到列表里面
     * 添加消息到列表里面(单个插入)
     *
     * @param messageBean -
     * @param messageBean 单个
     * @param position    表示加到列表的位置
     */
    public void setListMessage(MessageBean messageBean, int position) {
@@ -223,7 +249,7 @@
    /**
     * 添加消息到列表里面
     *
     * @param list -
     * @param list 列表
     */
    public void setListMessage(List<MessageBean> list) {
        try {
@@ -242,17 +268,41 @@
    }
    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() + "";
    }
    /**
     * 获取未处理消息数量
     *
     * @param cloudCallBeak -
     */
    public void getMessageUntreatedCount(CloudCallBeak<String> cloudCallBeak) {
    public void getMessageUntreatedCount(String homeId, CloudCallBeak<String> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Message_UntreatedCount;
        JsonObject json = new JsonObject();
        if (!TextUtils.isEmpty(homeId)) {
            json.addProperty("homeId", homeId);
        }
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
            @Override
            public void onSuccess(String str) {
@@ -314,7 +364,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>() {
@@ -384,74 +434,36 @@
    }
    /**
     * 获取消息列表
     * 获取指定页的获取消息列表(用于B端)
     *
     * @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("pageSize", 50);//页数
        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 oldMessageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                list.addAll(oldMessageListClass.getList());
                setListMessage(oldMessageListClass.getList());
                //总共有多少页
                long totalPage = oldMessageListClass.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 newMessageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                            list.addAll(newMessageListClass.getList());
                            setListMessage(newMessageListClass.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);
                                }
                            }
                        }
                    });
                if (cloudCallBeak != null) {
                    cloudCallBeak.onSuccess(oldMessageListClass);
                }
            }
@@ -466,6 +478,60 @@
    }
    /**
     * 获取指定页的获取消息列表(用于C端)
     *
     * @param homeId           电站id
     * @param pageNo           页码
     * @param messageStateType all:全部,UNTREATED:未处理,PROCESSED:已处理;
     * @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 cloudCallBeak    -
     */
    public void getPageNoMessageList_C(String homeId, int pageNo, String messageStateType, String filter_key, String filter_value, CloudCallBeak<MessageListClass> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Message_List;
        JsonObject json = new JsonObject();
        if (!TextUtils.isEmpty(homeId)) {
            json.addProperty("homeId", homeId);
        }
        if (!MessageStateType.all.equals(messageStateType)) {
            json.addProperty("status", messageStateType);
        }
        if (!TextUtils.isEmpty(filter_key) && !TextUtils.isEmpty(filter_value)) {
            json.addProperty(filter_key, filter_value);
        }
        json.addProperty("pageNo", pageNo);//页码
        json.addProperty("pageSize", pageSize);//页数
        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 MessageListClass());
                    }
                    return;
                }
                Gson gson = new Gson();
                MessageListClass oldMessageListClass = gson.fromJson(jsonStr, MessageListClass.class);
                setListMessage(oldMessageListClass.getList());
                if (cloudCallBeak != null) {
                    cloudCallBeak.onSuccess(oldMessageListClass);
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(e);
                }
            }
        });
    }
    /**
     * 获取消息详情
@@ -532,8 +598,37 @@
    }
    /**
     * 消息全部已读
     *
     * @param homeId        消息id
     * @param cloudCallBeak -
     */
    public void messageAllRead(String homeId, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Message_AllRead;
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
            @Override
            public void onSuccess(String str) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onSuccess(true);
                }
            }
    static class MessageListClass {
            @Override
            public void onFailure(HDLException e) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(e);
                }
            }
        });
    }
    public static class MessageListClass {
        //总条数
        private long totalCount;