From b9cc7390e8e8ce64c41c26fb369c98ce669d660c Mon Sep 17 00:00:00 2001 From: wjc <1243177876@qq.com> Date: 星期三, 07 五月 2025 15:02:30 +0800 Subject: [PATCH] Merge branch '1.2.0' --- app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java | 397 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 324 insertions(+), 73 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 f6c19bb..05d0f10 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java +++ b/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; @@ -10,8 +11,10 @@ import com.hdl.photovoltaic.internet.api.HttpApi; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.ui.bean.MessageBean; +import com.hdl.photovoltaic.ui.bean.UnCountBean; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; @@ -21,7 +24,9 @@ public class HdlMessageLogic { private static volatile HdlMessageLogic sHdlMessageLogic; - private int pageSize = 50;//椤垫暟 + private final int pageSize = 100;//椤垫暟 + private List<MessageBean> mListMessage = new ArrayList<>(); + /** * 鑾峰彇褰撳墠瀵硅薄 @@ -40,6 +45,15 @@ return sHdlMessageLogic; } + public void clearListMessage() { + if (mListMessage == null) { + return; + } + if (mListMessage.size() > 0) { + mListMessage.clear(); + } + } + /** * 鑾峰彇鍙戠敓涓紦瀛樺垪琛� */ @@ -50,13 +64,32 @@ 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); } + + /** + * 娑堟伅鍏ㄩ儴宸茶(鏈湴缂撳瓨) + * + * @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); + } + } + /** * 鑾峰彇鎭㈠涓紦瀛樺垪琛� @@ -73,31 +106,95 @@ } } + 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) { + 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) { + if (o1 == null && o2 == null) { + return -1; + } + //鍊掑簭锛堥『搴� Long.compare(o2.getCreateTime(), o1.getCreateTime())锛� + return Long.compare(o2.getCreateTime(), o1.getCreateTime()); + } + }); + } + if (unReadList.size() > 0) { + newList.addAll(unReadList); + } + if (readList.size() > 0) { + newList.addAll(readList); + } return newList; } public List<MessageBean> getAllMessageList() { - return mListMessage; + return sortList(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 < 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; + } } - for (int i = 0; i < list.size(); i++) { - this.setListMessage(list.get(i)); - } - } catch (Exception ignored) { + } catch (Exception e) { + String ss = e.getMessage(); } } @@ -125,27 +222,113 @@ //娌℃湁娣诲姞 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() + ""; + } /** * 鑾峰彇鏈鐞嗘秷鎭暟閲� * * @param cloudCallBeak - */ - public void getMessageUntreatedCount(CloudCallBeak<String> cloudCallBeak) { + public void getMessageUntreatedCount(String homeId, CloudCallBeak<UnCountBean> 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) { + if (TextUtils.isEmpty(str)) { + if (cloudCallBeak != null) { + cloudCallBeak.onSuccess(new UnCountBean()); + } + return; + } + + UnCountBean unCountBean = new Gson().fromJson(str, UnCountBean.class); if (cloudCallBeak != null) { - cloudCallBeak.onSuccess(str); + cloudCallBeak.onSuccess(unCountBean); } } @@ -202,7 +385,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 +398,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 +418,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 +455,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("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); } } @@ -354,6 +499,81 @@ } + + /** + * 鑾峰彇鎸囧畾椤电殑鑾峰彇娑堟伅鍒楄〃 + * + * @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 search_title 鎶ヨ鍚嶇О + * @param cloudCallBeak - + */ + public void getPageNoMessageList( + 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, + String search_title, 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); + } + if (!TextUtils.isEmpty(search_title)) { + json.addProperty("title", search_title); + } + 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); + } + } + }); + + + } /** * 鑾峰彇娑堟伅璇︽儏 @@ -420,8 +640,39 @@ } + /** + * 娑堟伅鍏ㄩ儴宸茶 + * + * @param homeId 娑堟伅id(涓嶄紶宸茶鎵�鏈夌數绔欑殑锛屼紶鍊煎凡璇绘寚瀹氱數绔欑殑) + * @param cloudCallBeak - + */ + public void messageAllRead(String homeId, CloudCallBeak<Boolean> cloudCallBeak) { + String requestUrl = HttpApi.POST_Message_AllRead; + 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) { + 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