package com.hdl.photovoltaic.other;
|
|
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.List;
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
/**
|
* 警报消息中心逻辑
|
*/
|
public class HdlMessageLogic {
|
private static volatile HdlMessageLogic sHdlMessageLogic;
|
|
/**
|
* 获取当前对象
|
*
|
* @return HdlAccountLogic
|
*/
|
public static synchronized HdlMessageLogic getInstance() {
|
if (sHdlMessageLogic == null) {
|
synchronized (HdlMessageLogic.class) {
|
if (sHdlMessageLogic == null) {
|
sHdlMessageLogic = new HdlMessageLogic();
|
}
|
}
|
|
}
|
return sHdlMessageLogic;
|
}
|
|
/**
|
* 获取发生中缓存列表
|
*/
|
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.getStatus().equals(MessageStateType.untreated)) {
|
newList.add(messageBean);
|
}
|
|
}
|
return 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)) {
|
messageBean.setRead(true);//默认已读
|
newList.add(messageBean);
|
}
|
|
}
|
return newList;
|
}
|
|
public List<MessageBean> getListMessage() {
|
return mListMessage;
|
}
|
|
/**
|
* 添加消息到列表里面
|
*
|
* @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) {
|
}
|
}
|
|
/**
|
* 添加消息到列表里面
|
*
|
* @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 ignored) {
|
}
|
}
|
|
|
private List<MessageBean> mListMessage = new ArrayList<>();
|
|
|
/**
|
* 获取未处理消息数量
|
*
|
* @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", 50);//页数
|
|
List<MessageBean> list = new ArrayList<>();
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String jsonStr) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(new ArrayList<>());
|
}
|
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.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);
|
}
|
}
|
});
|
|
|
}
|
|
|
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;
|
}
|
}
|
|
}
|