app/src/main/java/com/hdl/photovoltaic/config/ConstantManage.java
@@ -16,6 +16,8 @@ //all public static final String message_function_tab_switch = "message_function_tab_switch"; //消息警告解决或者未解决 public static final String message_function_push_post = "message_function_push"; public static final String homepage_title_tab_switch = "homepage_title_tab_switch"; //网络状态发生变化 public static final String network_change_post = "network_change"; app/src/main/java/com/hdl/photovoltaic/enums/MessageAlarmStateType.java
New file @@ -0,0 +1,19 @@ package com.hdl.photovoltaic.enums; import static java.lang.annotation.RetentionPolicy.SOURCE; import androidx.annotation.StringDef; import java.lang.annotation.Retention; @Retention(SOURCE) @StringDef({MessageAlarmStateType.fault, MessageAlarmStateType.warn, MessageAlarmStateType.event}) public @interface MessageAlarmStateType { //故障 String fault = "FAULT"; //告警 String warn = "WARN"; //事件 String event = "EVENT"; } app/src/main/java/com/hdl/photovoltaic/enums/MessageStateType.java
@@ -4,18 +4,17 @@ import androidx.annotation.StringDef; import com.hdl.sdk.link.gateway.type.GatewayMasterType; import java.lang.annotation.Retention; @Retention(SOURCE) @StringDef({MessageStateType.untreated, MessageStateType.processed}) @StringDef({MessageStateType.untreated, MessageStateType.processed, MessageStateType.all}) public @interface MessageStateType { //未处理 String untreated = "UNTREATED"; //已处理 String processed = "PROCESSED"; //已处理 //全部 String all = "ALL"; app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java
@@ -41,7 +41,7 @@ /** * 获取发生中缓存列表 */ public List<MessageBean> getRecoverMessageMemoryList() { public List<MessageBean> getNascentMessageMemoryList() { if (this.mListMessage == null || this.mListMessage.size() == 0) { return new ArrayList<>(); } @@ -57,9 +57,9 @@ } /** * 获取处理中缓存列表 * 获取恢复中缓存列表 */ public List<MessageBean> getNascentMessageMemoryList() { public List<MessageBean> getRecoverMessageMemoryList() { if (this.mListMessage == null || this.mListMessage.size() == 0) { return new ArrayList<>(); } @@ -67,6 +67,7 @@ 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); } @@ -78,6 +79,11 @@ return mListMessage; } /** * 添加消息到列表里面 * * @param list - */ public void setListMessage(List<MessageBean> list) { try { if (list == null || list.size() == 0) { @@ -87,23 +93,37 @@ this.mListMessage.addAll(list); return; } List<MessageBean> newList = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { MessageBean messageBean = list.get(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 j = 0; j < mListMessage.size(); j++) { if (mListMessage.get(j).toString().equals(messageBean.getMsgId().toString())) { mListMessage.remove(j); mListMessage.add(j, messageBean); 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) { newList.add(messageBean); //没有添加 this.mListMessage.add(messageBean); } } this.mListMessage.addAll(newList); } catch (Exception ignored) { } } @@ -146,7 +166,16 @@ * @param cloudCallBeak - */ public void getAllMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) { getMessageList(MessageStatus.all, cloudCallBeak); getMessageList(MessageStateType.all, cloudCallBeak); } /** * 获取恢复中列表 * * @param cloudCallBeak - */ public void getRecoverMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) { getMessageList(MessageStateType.processed, cloudCallBeak); } /** @@ -154,33 +183,22 @@ * * @param cloudCallBeak - */ public void getRecoverMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) { getMessageList(MessageStatus.untreated, cloudCallBeak); } /** * 获取处理中列表 * * @param cloudCallBeak - */ public void getNascentMessageList(CloudCallBeak<List<MessageBean>> cloudCallBeak) { getMessageList(MessageStatus.processed, cloudCallBeak); getMessageList(MessageStateType.untreated, cloudCallBeak); } /** * 获取消息列表 * * @param messageStatus all:全部,untreated:未处理,processed:已处理; * @param messageStateType all:全部,UNTREATED:未处理,PROCESSED:已处理; * @param cloudCallBeak - */ public void getMessageList(MessageStatus messageStatus, CloudCallBeak<List<MessageBean>> cloudCallBeak) { private void getMessageList(String messageStateType, CloudCallBeak<List<MessageBean>> cloudCallBeak) { String requestUrl = HttpApi.POST_Message_List; JsonObject json = new JsonObject(); if (messageStatus == MessageStatus.untreated) { json.addProperty("status", "UNTREATED");//未处理 } else if (messageStatus == MessageStatus.processed) { json.addProperty("status", "PROCESSED");//已处理 if (!MessageStateType.all.equals(messageStateType)) { json.addProperty("status", messageStateType); } json.addProperty("pageNo", 1);//页码 json.addProperty("pageSize", 50);//页数 @@ -315,14 +333,6 @@ } public enum MessageStatus { all,//全部 untreated,//未处理 processed,//已处理 } static class MessageListClass { app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java
@@ -94,6 +94,10 @@ * 改变组件样式 * * @param textView 显示组件 * 如果设备从来没上报过数据数据 状态:连接中 * 设备在线 但是当前处于故障 状态:故障 * 设备在线(有上报过数据,没有故障) 状态:在线 * 设备离线 状态:离线 * @param state_value 电站状态(1:正常(运行),2:离线,3:连接中,4:故障) */ private void setTextViewStyle(TextView textView, int state_value) { app/src/main/java/com/hdl/photovoltaic/ui/adapter/MessageAdapter.java
@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.enums.MessageAlarmStateType; import com.hdl.photovoltaic.ui.bean.MessageBean; import com.hdl.photovoltaic.utils.TimeUtils; @@ -46,13 +47,13 @@ holder.item_time_tv.setText(date); String type = "";//FAULT:故障,WARN:告警,EVENT:事件 Drawable drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_ffb300); if (messageBean.getType().equals("FAULT")) { if (messageBean.getType().equals(MessageAlarmStateType.fault)) { type = mContext.getString(R.string.my_power_station_malfunction); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_e34343); } else if (messageBean.getType().equals("WARN")) { } else if (messageBean.getType().equals(MessageAlarmStateType.warn)) { type = mContext.getString(R.string.message_alarm); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_ffb300); } else if (messageBean.getType().equals("EVENT")) { } else if (messageBean.getType().equals(MessageAlarmStateType.event)) { type = "事件"; drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_ffb300); } app/src/main/java/com/hdl/photovoltaic/ui/bean/MessageBean.java
@@ -26,7 +26,7 @@ private String address;//详细地址 private boolean isRead;//是否已经读取 private boolean isRead;//是否已经读取(true=读取) private HouseInfoBean.Location location = new HouseInfoBean.Location();//电站地址 app/src/main/java/com/hdl/photovoltaic/ui/message/AllMessageFragment.java
@@ -12,6 +12,7 @@ import com.hdl.photovoltaic.config.ConstantManage; import com.hdl.photovoltaic.databinding.FragmentMessageAllBinding; import com.hdl.photovoltaic.enums.MessageFunctionTabSwitch; import com.hdl.photovoltaic.enums.MessageStateType; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlLogLogic; @@ -79,6 +80,9 @@ messageAllAdapter.setNoOnclickListener(new MessageAdapter.OnclickListener() { @Override public void onClick(int position, MessageBean item) { if (position < 0 || position > mList.size()) { return; } Intent intent = new Intent(); intent.putExtra("msgId", item.getMsgId().toString()); intent.setClass(_mActivity, MessageInfoActivity.class); @@ -128,7 +132,7 @@ if (isShowLoading) { showLoading(); } HdlMessageLogic.getInstance().getMessageList(HdlMessageLogic.MessageStatus.all, new CloudCallBeak<List<MessageBean>>() { HdlMessageLogic.getInstance().getAllMessageList(new CloudCallBeak<List<MessageBean>>() { @Override public void onSuccess(List<MessageBean> list) { if (isShowLoading) { app/src/main/java/com/hdl/photovoltaic/ui/message/MessageInfoActivity.java
@@ -10,12 +10,18 @@ import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.config.ConstantManage; import com.hdl.photovoltaic.databinding.ActivityMessageInfoBinding; import com.hdl.photovoltaic.enums.MessageAlarmStateType; import com.hdl.photovoltaic.enums.MessageStateType; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlMessageLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.ui.bean.MessageBean; import com.hdl.photovoltaic.utils.TimeUtils; import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus; import org.greenrobot.eventbus.EventBus; /** * 消息详情 @@ -76,18 +82,24 @@ String type = "";//FAULT:故障,WARN:告警,EVENT:事件 Drawable drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.alarm_ffb300); if (mMessageBean.getType().equals("FAULT")) { if (mMessageBean.getType().equals(MessageAlarmStateType.fault)) { type = _mActivity.getString(R.string.my_power_station_malfunction); drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.alarm_e34343); } else if (mMessageBean.getType().equals("WARN")) { } else if (mMessageBean.getType().equals(MessageAlarmStateType.warn)) { type = _mActivity.getString(R.string.message_alarm); drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.alarm_ffb300); } else if (mMessageBean.getType().equals("EVENT")) { } else if (mMessageBean.getType().equals(MessageAlarmStateType.event)) { type = "事件"; drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.alarm_ffb300); } viewBinding.messageInfoAlarmStateTv.setText(type); viewBinding.messageInfoAlarmStateTv.setBackground(drawable); if (mMessageBean.getStatus().equals(MessageStateType.processed)) { //已经解决掉的隐藏 viewBinding.messageInfoBackTv.setVisibility(View.GONE); viewBinding.messageInfoSolveTv.setVisibility(View.GONE); } } }); } @@ -104,6 +116,16 @@ viewBinding.toolbarTopIn.topBackBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //恢复进来只是查看的 if (mMessageBean.getStatus().equals(MessageStateType.untreated)) { mMessageBean.setRead(true); mMessageBean.setStatus(MessageStateType.untreated); HdlMessageLogic.getInstance().setListMessage(mMessageBean); BaseEventBus baseEventBus = new BaseEventBus(); baseEventBus.setTopic(ConstantManage.message_function_push_post); baseEventBus.setType(MessageStateType.untreated); EventBus.getDefault().post(baseEventBus); } finish(); } }); @@ -121,7 +143,20 @@ HdlMessageLogic.getInstance().getMessageMessageSolve(mMsgId, new CloudCallBeak<Boolean>() { @Override public void onSuccess(Boolean obj) { //恢复进来只是查看的 if (mMessageBean.getStatus().equals(MessageStateType.untreated)) { //重置变量 mMessageBean.setRead(true); mMessageBean.setStatus(MessageStateType.processed); HdlMessageLogic.getInstance().setListMessage(mMessageBean); BaseEventBus baseEventBus = new BaseEventBus(); baseEventBus.setTopic(ConstantManage.message_function_push_post); baseEventBus.setType(MessageStateType.processed); EventBus.getDefault().post(baseEventBus); } finish(); } @Override app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java
@@ -7,15 +7,14 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.google.gson.Gson; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseFragment; import com.hdl.photovoltaic.config.ConstantManage; import com.hdl.photovoltaic.databinding.FragmentNascentMessageBinding; import com.hdl.photovoltaic.enums.MessageFunctionTabSwitch; import com.hdl.photovoltaic.enums.MessageStateType; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlCommonLogic; import com.hdl.photovoltaic.other.HdlMessageLogic; import com.hdl.photovoltaic.ui.adapter.MessageAdapter; import com.hdl.photovoltaic.ui.bean.MessageBean; @@ -43,7 +42,7 @@ @Override public void onBindView(Bundle savedInstanceState) { //初始化数据 initData(); // initData(); //初始化界面 initView(); //初始化监听器 @@ -51,7 +50,8 @@ } private void initData() { getNascentMessageList(true); mList.clear(); mList.addAll(HdlMessageLogic.getInstance().getNascentMessageMemoryList()); } private void initEvent() { @@ -67,6 +67,9 @@ messageNascentAdapter.setNoOnclickListener(new MessageAdapter.OnclickListener() { @Override public void onClick(int position, MessageBean item) { if (position < 0 || position > mList.size()) { return; } Intent intent = new Intent(); intent.putExtra("msgId", item.getMsgId().toString()); intent.setClass(_mActivity, MessageInfoActivity.class); @@ -98,7 +101,14 @@ //接收外部点击事件 if (eventBus.getTopic().equals(ConstantManage.message_function_tab_switch)) { if (eventBus.getType().equals(MessageFunctionTabSwitch.nascent.toString())) { initData(); getNascentMessageList(true); } } else if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) { if (eventBus.getType().equals(MessageStateType.untreated)) { initData(); updateListData(); } } } @@ -113,7 +123,7 @@ if (isShowLoading) { showLoading(); } HdlMessageLogic.getInstance().getMessageList(HdlMessageLogic.MessageStatus.untreated, new CloudCallBeak<List<MessageBean>>() { HdlMessageLogic.getInstance().getNascentMessageList(new CloudCallBeak<List<MessageBean>>() { @Override public void onSuccess(List<MessageBean> list) { if (isShowLoading) { app/src/main/java/com/hdl/photovoltaic/ui/message/RecoverMessageFragment.java
@@ -13,6 +13,7 @@ import com.hdl.photovoltaic.config.ConstantManage; import com.hdl.photovoltaic.databinding.FragmentRecoverMessageBinding; import com.hdl.photovoltaic.enums.MessageFunctionTabSwitch; import com.hdl.photovoltaic.enums.MessageStateType; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlMessageLogic; @@ -44,7 +45,7 @@ public void onBindView(Bundle savedInstanceState) { //初始化数据 initData(); // initData(); //初始化界面 initView(); //初始化监听器 @@ -52,14 +53,8 @@ } private void initData() { // for (int i = 0; i < 2; i++) { // MessageBean messageBean = new MessageBean(); //// messageBean.setContent("来了一条告警信息" + i); // messageBean.setHomeName(i + ""); //// messageBean.setTime("2023-12-06-15"); // messageBean.setRead(false); // mList.add(messageBean); // } mList.clear(); mList.addAll(HdlMessageLogic.getInstance().getRecoverMessageMemoryList()); } private void initEvent() { @@ -76,6 +71,9 @@ messageRecoverAdapter.setNoOnclickListener(new MessageAdapter.OnclickListener() { @Override public void onClick(int position, MessageBean item) { if (position < 0 || position > mList.size()) { return; } Intent intent = new Intent(); intent.putExtra("msgId", item.getMsgId().toString()); intent.setClass(_mActivity, MessageInfoActivity.class); @@ -108,7 +106,13 @@ if (eventBus.getTopic().equals(ConstantManage.message_function_tab_switch)) { if (eventBus.getType().equals(MessageFunctionTabSwitch.recover.toString())) { HdlLogLogic.print("正在点击【已恢复】"); initData(); getRecoverMessageList(true); } } else if (eventBus.getTopic().equals(ConstantManage.message_function_push_post)) { if (eventBus.getType().equals(MessageStateType.processed)) { initData(); updateListData(); } } } @@ -125,7 +129,7 @@ if (isShowLoading) { showLoading(); } HdlMessageLogic.getInstance().getMessageList(HdlMessageLogic.MessageStatus.processed, new CloudCallBeak<List<MessageBean>>() { HdlMessageLogic.getInstance().getRecoverMessageList(new CloudCallBeak<List<MessageBean>>() { @Override public void onSuccess(List<MessageBean> list) { if (isShowLoading) {