From a4e8dee87338beef6f45f053d8fa9c36dc74ed09 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期一, 06 五月 2024 19:53:17 +0800 Subject: [PATCH] 2024年05月06日19:53:11 --- app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java | 229 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 171 insertions(+), 58 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java index 43e9624..c3e0a85 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java +++ b/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); + } } @@ -104,6 +130,18 @@ } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + unReadList.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(o2.getCreateTime(), o1.getCreateTime()); + } + }); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { readList.sort(new Comparator<MessageBean>() { @Override public int compare(MessageBean o1, MessageBean o2) { @@ -111,11 +149,10 @@ return -1; } //鍊掑簭锛堥『搴� Long.compare(o2.getCreateTime(), o1.getCreateTime())锛� - return Long.compare(o1.getCreateTime(), o2.getCreateTime()); + return Long.compare(o2.getCreateTime(), o1.getCreateTime()); } }); } - if (unReadList.size() > 0) { newList.addAll(unReadList); } @@ -126,7 +163,7 @@ } public List<MessageBean> getAllMessageList() { - return mListMessage; + return sortList(mListMessage); } @@ -155,7 +192,8 @@ break; } } - } catch (Exception ignored) { + } catch (Exception e) { + String ss = e.getMessage(); } } @@ -190,9 +228,9 @@ } /** - * 娣诲姞娑堟伅鍒板垪琛ㄩ噷闈� + * 娣诲姞娑堟伅鍒板垪琛ㄩ噷闈�(鍗曚釜鎻掑叆) * - * @param messageBean - + * @param messageBean 鍗曚釜 * @param position 琛ㄧず鍔犲埌鍒楄〃鐨勪綅缃� */ public void setListMessage(MessageBean messageBean, int position) { @@ -223,7 +261,7 @@ /** * 娣诲姞娑堟伅鍒板垪琛ㄩ噷闈� * - * @param list - + * @param list 鍒楄〃 */ public void setListMessage(List<MessageBean> list) { try { @@ -242,17 +280,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 +376,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 +446,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 +490,66 @@ } + /** + * 鑾峰彇鎸囧畾椤电殑鑾峰彇娑堟伅鍒楄〃(鐢ㄤ簬C绔�) + * + * @param homeId 鐢电珯id + * @param pageNo 椤电爜 + * @param messageStateType all:鍏ㄩ儴,UNTREATED:鏈鐞�,PROCESSED:宸插鐞�; + * @param deviceType_filter_key 绫诲瀷锛堣澶囷紝绛夌骇锛屾椂闂达級 + * @param deviceType_filter_value deviceType锛圛NV 锛氶�嗗彉鍣紱BMS 锛欱MS鎺у埗鐩掞紱BATTERY 锛氱數姹犲崟鍏冿級锛� + * type锛團AULT 锛氭晠闅滐紱 WARN 锛氬憡璀︼紱 EVENT 锛氫簨浠�(鎻愮ず)锛夛紱 + * timeType锛圱ODAY 锛氫粖澶╋紱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 deviceType_filter_key, String deviceType_filter_value, String type_filter_key, String type_filter_value, String timeType_filter_key, String timeType_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(deviceType_filter_key) && !TextUtils.isEmpty(deviceType_filter_value)) { + json.addProperty(deviceType_filter_key, deviceType_filter_value); + } + if (!TextUtils.isEmpty(type_filter_key) && !TextUtils.isEmpty(type_filter_value)) { + json.addProperty(type_filter_key, type_filter_value); + } + if (!TextUtils.isEmpty(timeType_filter_key) && !TextUtils.isEmpty(timeType_filter_value)) { + json.addProperty(timeType_filter_key, timeType_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 +616,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; -- Gitblit v1.8.0