From dc8ae12444d1d887394eb525e2b80dd120dc4c87 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期二, 20 二月 2024 13:43:56 +0800 Subject: [PATCH] Merge branch 'wjc' into dev-hxb --- app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java | 581 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 581 insertions(+), 0 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 new file mode 100644 index 0000000..f0f7534 --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java @@ -0,0 +1,581 @@ +package com.hdl.photovoltaic.other; + +import android.os.Build; +import android.text.TextUtils; + +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.hdl.linkpm.sdk.core.exception.HDLException; +import com.hdl.photovoltaic.enums.MessageStateType; +import com.hdl.photovoltaic.internet.HttpClient; +import com.hdl.photovoltaic.internet.api.HttpApi; +import com.hdl.photovoltaic.listener.CloudCallBeak; +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; + +/** + * 璀︽姤娑堟伅涓績閫昏緫 + */ +public class HdlMessageLogic { + private static volatile HdlMessageLogic sHdlMessageLogic; + + private final int pageSize = 50;//椤垫暟 + private List<MessageBean> mListMessage = new ArrayList<>(); + + + /** + * 鑾峰彇褰撳墠瀵硅薄 + * + * @return HdlAccountLogic + */ + public static synchronized HdlMessageLogic getInstance() { + if (sHdlMessageLogic == null) { + synchronized (HdlMessageLogic.class) { + if (sHdlMessageLogic == null) { + sHdlMessageLogic = new HdlMessageLogic(); + } + } + + } + return sHdlMessageLogic; + } + + public void clearListMessage() { + if (mListMessage.size() > 0) { + mListMessage.clear(); + } + } + + /** + * 鑾峰彇鍙戠敓涓紦瀛樺垪琛� + */ + public List<MessageBean> getNascentMessageMemoryList() { + if (this.mListMessage == null || this.mListMessage.size() == 0) { + return new ArrayList<>(); + } + 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 sortList(newList); + } + + + /** + * 鑾峰彇鎭㈠涓紦瀛樺垪琛� + */ + public List<MessageBean> getRecoverMessageMemoryList() { + if (this.mListMessage == null || this.mListMessage.size() == 0) { + return new ArrayList<>(); + } + List<MessageBean> newList = new ArrayList<>(); + for (int i = 0; i < mListMessage.size(); i++) { + MessageBean messageBean = mListMessage.get(i); + if (messageBean.getStatus().equals(MessageStateType.processed)) { + newList.add(messageBean); + } + + } + 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; + } + + public List<MessageBean> getAllMessageList() { + return mListMessage; + } + + + /** + * 璁剧疆璇诲彇鐘舵�� + * + * @param msgId -娑堟伅ID + * @param read 鏄惁宸茶鍙� true琛ㄧず宸茶鍙� + * @param messageStateType UNTREATED : 鏈鐞嗭紝PROCESSED 锛� 宸插鐞� + */ + public void setMessageState(long msgId, boolean read, String messageStateType) { + try { + if (msgId == 0) { + 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; + } + } + } 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; + } + } + if (!if_boolean) { + //娌℃湁娣诲姞 + 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) { + } + } + + + /** + * 鑾峰彇鏈鐞嗙紦瀛樻秷鎭暟閲� + */ + 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) { + String requestUrl = HttpApi.POST_Message_UntreatedCount; + JsonObject json = new JsonObject(); + HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { + @Override + public void onSuccess(String str) { + if (cloudCallBeak != null) { + cloudCallBeak.onSuccess(str); + } + } + + @Override + public void onFailure(HDLException e) { + if (cloudCallBeak != null) { + cloudCallBeak.onFailure(e); + } + } + }); + + + } + + + /** + * 鑾峰彇鍏ㄩ儴鍒楄〃 + * + * @param cloudCallBeak - + */ + public void getAllMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) { + getMessageList(MessageStateType.all, cloudCallBeak); + } + + /** + * 鑾峰彇鎭㈠涓垪琛� + * + * @param cloudCallBeak - + */ + public void getRecoverMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) { + getMessageList(MessageStateType.processed, cloudCallBeak); + } + + /** + * 鑾峰彇鍙戠敓涓垪琛� + * + * @param cloudCallBeak - + */ + public void getNascentMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) { + getMessageList(MessageStateType.untreated, cloudCallBeak); + } + + /** + * 鑾峰彇娑堟伅鍒楄〃 + * + * @param messageStateType all:鍏ㄩ儴,UNTREATED:鏈鐞�,PROCESSED:宸插鐞�; + * @param cloudCallBeak - + */ + private void getMessageList(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 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); + } + } + } + }); + } + } + + @Override + public void onFailure(HDLException e) { + if (cloudCallBeak != null) { + cloudCallBeak.onFailure(e); + } + } + }); + + + } + + /** + * 鑾峰彇鎸囧畾椤电殑鑾峰彇娑堟伅鍒楄〃 + * + * @param pageNo 椤电爜 + * @param messageStateType all:鍏ㄩ儴,UNTREATED:鏈鐞�,PROCESSED:宸插鐞�; + * @param 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", 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); + } + } + }); + + + } + + + /** + * 鑾峰彇娑堟伅璇︽儏 + * + * @param msgId 娑堟伅id + * @param cloudCallBeak - + */ + public void getMessageInfo(String msgId, CloudCallBeak<MessageBean> cloudCallBeak) { + String requestUrl = HttpApi.POST_Message_Info; + JsonObject json = new JsonObject(); + json.addProperty("msgId", msgId); + HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { + @Override + public void onSuccess(String jsonStr) { + if (TextUtils.isEmpty(jsonStr)) { + if (cloudCallBeak != null) { + cloudCallBeak.onSuccess(null); + } + } + Gson gson = new Gson(); + MessageBean messageBean = gson.fromJson(jsonStr, MessageBean.class); + if (cloudCallBeak != null) { + cloudCallBeak.onSuccess(messageBean); + } + } + + @Override + public void onFailure(HDLException e) { + if (cloudCallBeak != null) { + cloudCallBeak.onFailure(e); + } + } + }); + + + } + + /** + * 娑堟伅鏍囪宸茶(宸茶В闄�) + * + * @param msgId 娑堟伅id + * @param cloudCallBeak - + */ + public void getMessageMessageSolve(String msgId, CloudCallBeak<Boolean> cloudCallBeak) { + String requestUrl = HttpApi.POST_Message_Solve; + JsonObject json = new JsonObject(); + json.addProperty("msgId", msgId); + HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { + @Override + public void onSuccess(String str) { + if (cloudCallBeak != null) { + cloudCallBeak.onSuccess(true); + } + } + + @Override + public void onFailure(HDLException e) { + if (cloudCallBeak != null) { + cloudCallBeak.onFailure(e); + } + } + }); + + + } + + + public static class MessageListClass { + + //鎬绘潯鏁� + private long totalCount; + //鎬婚〉鏁� + private long totalPage; + //褰撳墠椤� + private long pageNo; + //椤垫暟 + private long pageSize; + //娑堟伅鍒楄〃 + private List<MessageBean> list; + + public long getTotalCount() { + return totalCount; + } + + public void setTotalCount(long totalCount) { + this.totalCount = totalCount; + } + + public long getTotalPage() { + return totalPage; + } + + public void setTotalPage(long totalPage) { + this.totalPage = totalPage; + } + + public long getPageNo() { + return pageNo; + } + + public void setPageNo(long pageNo) { + this.pageNo = pageNo; + } + + public long getPageSize() { + return pageSize; + } + + public void setPageSize(long pageSize) { + this.pageSize = pageSize; + } + + public List<MessageBean> getList() { + return list == null ? new ArrayList<>() : list; + } + + public void setList(List<MessageBean> list) { + this.list = list; + } + } + +} -- Gitblit v1.8.0