app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/ui/bean/MessageBean.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -5,6 +5,24 @@ //region **********【B端】和【C端】共用接口********** //mqtt连接需要(语雀接口地址:https://hdl-gz.yuque.com/wnkbmh/cdrglh/totdnt#40b28997) public static final String POST_Mqtt_GetRemoteInfo = "/home-wisdom/app/mqtt/getRemoteInfo"; //region -----警报消息中心(住宅)--------- //获取未处理消息数量 public static final String POST_Message_UntreatedCount = "/home-wisdom/app/powerStation/message/untreatedCount"; //消息列表 public static final String POST_Message_List = "/home-wisdom/app/powerStation/message/listByPage"; //获取消息详情 public static final String POST_Message_Info = "/home-wisdom/app/powerStation/message/info"; //消息标记已读(已解除) public static final String POST_Message_Solve = "/home-wisdom/app/powerStation/message/solve"; //endregion //region -----C摄氏度,F华氏度(住宅)--------- //用户自定义配置 public static final String POST_C_F_CustomConfig = "/home-wisdom/app/powerStation/user/customConfig"; //用户自定义配置详情 public static final String POST_C_F_CustomConfigInfo = "/home-wisdom/app/powerStation/user/customConfigInfo"; //endregion //region -----电站管理(住宅)--------- //电站列表 app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
@@ -4,6 +4,7 @@ import android.text.TextUtils; import com.dcloud.zxing2.WriterException; import com.google.gson.Gson; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.common.BitMatrix; @@ -17,6 +18,7 @@ public class HdlCommonLogic { private static volatile HdlCommonLogic sHdlCommonLogic; /** * 获取当前对象 @@ -36,6 +38,10 @@ } /** * 生成二维码 * app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -939,6 +939,9 @@ } /** * 获取网关支持spk列表 * app/src/main/java/com/hdl/photovoltaic/other/HdlMessageLogic.java
New file @@ -0,0 +1,275 @@ 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.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; } /** * 获取未处理消息数量 * * @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 messageStatus all:全部,untreated:未处理,processed:已处理; * @param cloudCallBeak - */ public void getMessageList(MessageStatus messageStatus, 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");//已处理 } 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()); //总共有多少页 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()); 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 cloudCallBeak - */ public void getMessageInfo(CloudCallBeak<MessageBean> cloudCallBeak) { String requestUrl = HttpApi.POST_Message_Info; JsonObject json = new JsonObject(); 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 getMessageUntreatedCount(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 enum MessageStatus { all,//全部 untreated,//未处理 processed,//已处理 } 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; } } } app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java
@@ -16,6 +16,7 @@ import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean; import com.hdl.photovoltaic.ui.bean.HouseInfoBean; import com.hdl.photovoltaic.ui.bean.HouseIdBean; import com.hdl.photovoltaic.ui.bean.MessageBean; import com.hdl.sdk.link.common.exception.HDLLinkException; import com.hdl.sdk.link.core.bean.gateway.GatewayBean; import com.hdl.sdk.link.core.callback.GatewayCallBack; @@ -55,7 +56,7 @@ } /** * 获取住宅列表 * 获取缓存住宅列表 * * @return 住宅列表 */ @@ -71,7 +72,7 @@ } /** * 获取住宅ID列表 * 获取缓存住宅ID列表 * * @return 住宅ID列表 */ @@ -93,7 +94,7 @@ /** * 获取住宅列表 * 获取住宅列表,包括获取住宅id列表,住宅详情列表; * * @param cloudCallBeak - */ @@ -447,6 +448,70 @@ } /** * 用户自定义配置温度单位 * * @param homeId 住宅id * @param tempType 温度单位类型 (C :摄氏度, F :华氏度) * @param cloudCallBeak - */ public void setResidenceTemperatureUnit(String homeId, String tempType, CloudCallBeak<Boolean> cloudCallBeak) { String requestUrl = HttpApi.POST_C_F_CustomConfig; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId); json.addProperty("tempType", tempType); 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); } } }); } /** * 获取用户自定义配置温度单位详情 * * @param homeId 住宅id * @param cloudCallBeak - */ public void getResidenceTemperatureUnit(String homeId, CloudCallBeak<String> cloudCallBeak) { String requestUrl = HttpApi.POST_C_F_CustomConfigInfo; JsonObject json = new JsonObject(); json.addProperty("homeId", homeId); 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(jsonStr); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 添加【住宅详情】到本地缓存 * app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -460,12 +460,12 @@ } else { HdlFileLogic.getInstance().deleteFile(firmwarePathFileName);//下载失败,删除不完整固件文件; } HdlLogLogic.print("写入新固件文件到内存成功.", false); HdlLogLogic.print("写入新固件文件到内存成功.", true); } @Override public void onFailure(HDLException e) { HdlLogLogic.print("下载固件文件到内存失败.", false); HdlLogLogic.print("下载固件文件到内存失败.", true); uniCallbackData(null, e.getCode(), e.getMsg(), callback); } }); @@ -507,12 +507,12 @@ HdlOtaLogic.getInstance().pushUpgradePacketInfo(deviceMac, oid, hardwareModel, version, data.length() + "", upgradeFileLocalPathUrl, md5, new LinkCallBack<String>() { @Override public void onSuccess(String obj) { HdlLogLogic.print("通知给网关升级固件文件地址成功.", false); HdlLogLogic.print("通知给网关升级固件文件地址成功.", true); } @Override public void onError(HDLLinkException e) { HdlLogLogic.print("通知给网关升级固件文件地址失败,无法升级.", false); HdlLogLogic.print("通知给网关升级固件文件地址失败,无法升级.", true); uniCallbackData(null, -2, "通知给网关升级固件文件地址失败,无法升级,", callback); } }); @@ -657,12 +657,12 @@ } else { HdlFileLogic.getInstance().deleteFile(drivePathFileName);//下载失败,删除不完整驱动文件; } HdlLogLogic.print("写入新驱动文件到内存成功.", false); HdlLogLogic.print("写入新驱动文件到内存成功.", true); } @Override public void onFailure(HDLException e) { HdlLogLogic.print("下载驱动文件到内存失败.", false); HdlLogLogic.print("下载驱动文件到内存失败.", true); uniCallbackData(null, e.getCode(), e.getMsg(), callback); } }); app/src/main/java/com/hdl/photovoltaic/ui/bean/MessageBean.java
@@ -2,21 +2,129 @@ import java.io.Serializable; /** * 警告消息实体 */ public class MessageBean implements Serializable { private Long msgId;//消息id private String type;//FAULT:故障,WARN:告警,EVENT:事件 private String title;//标题 private String homeId;//电站id private String homeName;//电站名称 private String status;//UNTREATED:未处理,PROCESSED:已处理 private Long createTime;//消息时间(报警时间) private String content;//内容 private String homeName;//住宅名称 private String time;//时间 private int grade;//等级 private String deviceOidId;//设备oid id private String deviceOid;//设备oid private String deviceDesc;//设备备注 private String typeDesc;//类型描述 private String effectScope;//影响范围 NO_EFFECT : 无影响范围报警 private String effectScopeDesc;//影响范围描述 private String address;//详细地址 private boolean isRead;//是否已经读取 public String getContent() { return content == null ? "" : content; private HouseInfoBean.Location location = new HouseInfoBean.Location();//电站地址 public String getDeviceOidId() { return deviceOidId == null ? "" : deviceOidId; } public void setContent(String content) { this.content = content; public void setDeviceOidId(String deviceOidId) { this.deviceOidId = deviceOidId; } public String getDeviceOid() { return deviceOid == null ? "" : deviceOid; } public void setDeviceOid(String deviceOid) { this.deviceOid = deviceOid; } public String getDeviceDesc() { return deviceDesc == null ? "" : deviceDesc; } public void setDeviceDesc(String deviceDesc) { this.deviceDesc = deviceDesc; } public String getTypeDesc() { return typeDesc == null ? "" : typeDesc; } public void setTypeDesc(String typeDesc) { this.typeDesc = typeDesc; } public String getEffectScope() { return effectScope == null ? "" : effectScope; } public void setEffectScope(String effectScope) { this.effectScope = effectScope; } public String getEffectScopeDesc() { return effectScopeDesc == null ? "" : effectScopeDesc; } public void setEffectScopeDesc(String effectScopeDesc) { this.effectScopeDesc = effectScopeDesc; } public String getAddress() { return address == null ? "" : address; } public void setAddress(String address) { this.address = address; } public HouseInfoBean.Location getLocation() { return location; } public void setLocation(HouseInfoBean.Location location) { this.location = location; } public Long getMsgId() { return msgId; } public void setMsgId(Long msgId) { this.msgId = msgId; } public String getType() { return type == null ? "" : type; } public void setType(String type) { this.type = type; } public String getTitle() { return title == null ? "" : title; } public void setTitle(String title) { this.title = title; } public String getHomeId() { return homeId == null ? "" : homeId; } public void setHomeId(String homeId) { this.homeId = homeId; } public String getHomeName() { @@ -27,20 +135,20 @@ this.homeName = homeName; } public String getTime() { return time == null ? "" : time; public String getStatus() { return status == null ? "" : status; } public void setTime(String time) { this.time = time; public void setStatus(String status) { this.status = status; } public int getGrade() { return grade; public Long getCreateTime() { return createTime; } public void setGrade(int grade) { this.grade = grade; public void setCreateTime(Long createTime) { this.createTime = createTime; } app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java
@@ -59,6 +59,36 @@ } private void initEvent() { //发生中 viewBinding.messageTabNascentCl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.line1V.setVisibility(View.GONE); viewBinding.line2V.setVisibility(View.VISIBLE); viewBinding.line3V.setVisibility(View.GONE); showFragment(0); postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.nascent); } }); //已恢复 viewBinding.messageTabRecoverCl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); viewBinding.line1V.setVisibility(View.GONE); viewBinding.line2V.setVisibility(View.GONE); viewBinding.line3V.setVisibility(View.VISIBLE); showFragment(1); postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.recover); } }); //全部 viewBinding.messageTabAllCl.setOnClickListener(new View.OnClickListener() { @Override @@ -69,55 +99,27 @@ viewBinding.line1V.setVisibility(View.VISIBLE); viewBinding.line2V.setVisibility(View.GONE); viewBinding.line3V.setVisibility(View.GONE); showFragment(0); showFragment(2); postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.all); } }); viewBinding.messageTabNascentCl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.line1V.setVisibility(View.GONE); viewBinding.line2V.setVisibility(View.VISIBLE); viewBinding.line3V.setVisibility(View.GONE); showFragment(1); postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.nascent); } }); viewBinding.messageTabRecoverCl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); viewBinding.line1V.setVisibility(View.GONE); viewBinding.line2V.setVisibility(View.GONE); viewBinding.line3V.setVisibility(View.VISIBLE); showFragment(2); postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.recover); } }); } private void initView() { viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.messageTabAllTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.messageTabNascentTitleTv.setTextColor(getResources().getColor(R.color.text_FFFFFFFF, null)); viewBinding.messageTabRecoverTitleTv.setTextColor(getResources().getColor(R.color.text80_FFFFFF, null)); viewBinding.line1V.setVisibility(View.VISIBLE); viewBinding.line2V.setVisibility(View.GONE); viewBinding.line1V.setVisibility(View.GONE); viewBinding.line2V.setVisibility(View.VISIBLE); viewBinding.line3V.setVisibility(View.GONE); if (this.currentIndex == 0) { postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.all); } else if (this.currentIndex == 1) { postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.nascent); } else if (this.currentIndex == 2) { } else if (this.currentIndex == 1) { postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.recover); } else if (this.currentIndex == 2) { postEventBus(HdlCommonLogic.MessageFunctionTabSwitch.all); } } @@ -145,9 +147,10 @@ private void initFragment(Bundle savedInstanceState) { mFragmentManager = _mActivity.getSupportFragmentManager(); //碎片内需要使用权限和forresult mAllMessageFragment = new AllMessageFragment(); mNascentMessageFragment = new NascentMessageFragment(); mRecoverMessageFragment = new RecoverMessageFragment(); mAllMessageFragment = new AllMessageFragment(); if (savedInstanceState != null) { //“内存重启”时调用 获取“内存重启”时保存的索引下标 currentIndex = savedInstanceState.getInt(CURRENT_FRAGMENT, 0); app/src/main/java/com/hdl/photovoltaic/ui/message/NascentMessageFragment.java
@@ -83,6 +83,7 @@ if (eventBus.getTopic().equals(ConstantManage.message_function_tab_switch)) { if (eventBus.getType().equals(HdlCommonLogic.MessageFunctionTabSwitch.nascent.toString())) { HdlLogLogic.print("正在点击【进行中】"); updateListData(); } } }