app/build.gradle
@@ -131,7 +131,7 @@ implementation project(path: ':third-zxing') //Link本地库(在线依赖网络库) implementation 'com.hdl.android:pmsdk:1.0.2' implementation 'com.hdl.android:debugsdk:1.0.22' implementation 'com.hdl.android:debugsdk:1.0.23' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -20,9 +20,12 @@ import com.hdl.photovoltaic.config.AppConfigManage; import com.hdl.photovoltaic.config.ConstantManage; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.enums.LowerTagType; import com.hdl.photovoltaic.enums.NetworkType; import com.hdl.photovoltaic.other.HdlDeviceLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlMessageLogic; import com.hdl.photovoltaic.other.HdlResidenceLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.ui.LoginActivity; import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; @@ -59,6 +62,7 @@ //声明一个公共的信息映射,可当作全局变量使用; public HashMap<String, String> mInfoMap = new HashMap<>(); //利用单例模式获取当前应用的唯一实例 public static HDLApp getInstance() { return mHDLApp; @@ -67,7 +71,6 @@ @Override public void onCreate() { super.onCreate(); // 获取当前进程的PID Log.d("进程===", android.os.Process.myPid() + ""); mHDLApp = this; @@ -195,6 +198,10 @@ //清空消息缓存数据 HdlMessageLogic.getInstance().clearListMessage(); //清空电站缓存数据 HdlResidenceLogic.getInstance().clearHouseList(); //清空设备缓存数据 HdlDeviceLogic.getInstance().clearDeviceList(); //清空缓存数据 if (mInfoMap != null) { mInfoMap.clear(); app/src/main/java/com/hdl/photovoltaic/enums/LowerTagType.java
New file @@ -0,0 +1,8 @@ package com.hdl.photovoltaic.enums; public enum LowerTagType { home, power_station, message, me } app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
@@ -17,6 +17,7 @@ import com.hdl.photovoltaic.config.ConstantManage; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch; import com.hdl.photovoltaic.enums.LowerTagType; import com.hdl.photovoltaic.enums.UnitType; import com.hdl.photovoltaic.utils.GlideUtils; import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus; @@ -40,6 +41,9 @@ private static volatile HdlCommonLogic sHdlCommonLogic; public static LowerTagType lowerTagType = LowerTagType.home; /** * 获取当前对象 * app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -75,9 +75,7 @@ } private List<DeviceBean> mListDevice = new ArrayList<>(); public void clearDeviceList() { @@ -1393,6 +1391,7 @@ gatewayBean.setSystemStatusDesc(cloudInverterDeviceBean.getSystemStatusDesc());//设备状态 gatewayBean.setHwVersion(cloudInverterDeviceBean.getHwVersion());//软件版本号 gatewayBean.setCategorySecondName(cloudInverterDeviceBean.getCategorySecondName());//设备类型(产品二级分类名称 gatewayBean.setDeviceType(cloudInverterDeviceBean.getDeviceType());//设备类型(INV:逆变器;BMS:BMS控制盒;BATTERY:电池单元) gatewayBean.setAddresses(cloudInverterDeviceBean.getAddresses());//子网号/设备号,逆变器地址 gatewayBean.setPowerPvNow(cloudInverterDeviceBean.getPowerPvNow());//发电功率 gatewayBean.setTotalElectricityPvToday(cloudInverterDeviceBean.getTotalElectricityPvToday());//今日发电量 app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -93,7 +93,7 @@ public class HdlUniLogic implements HDLUniMPSDKManager.IOnOtherUniMPEventCallBack { private static volatile HdlUniLogic sHdlUniLogic; public final static String separator="---"; public final static String separator = "---"; /** * 获取当前对象 @@ -563,6 +563,7 @@ */ private void uniGetAndSetNetwork(String type, Object data, String TopicApi, DCUniMPJSCallback callback) { String mac = getKeyValue("mac", getKeyValue("data", data)); JsonArray jsonArray = new JsonArray(); JsonObject jObject = null; String attribute_data = getKeyValue("attribute_data", getKeyValue("data", data)); if (!TextUtils.isEmpty(attribute_data)) { @@ -572,8 +573,9 @@ jObject = new JsonObject(); } } jsonArray.add(jObject); //解密负载数据(写密钥给网关一定是明文,因为那时网关还没有密钥) TcpClient.getInstance().sendDataToLinkGateway(mac, false, TopicApi, jObject, "", new HDLLinkCallBack() { TcpClient.getInstance().sendDataToLinkGateway(mac, false, TopicApi, jsonArray, "", new HDLLinkCallBack() { @Override public void onSuccess(String msg) { if (callback != null) { app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java
@@ -31,6 +31,7 @@ import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.databinding.ActivityMyPowerStationBinding; import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch; import com.hdl.photovoltaic.enums.LowerTagType; import com.hdl.photovoltaic.enums.NetworkType; import com.hdl.photovoltaic.enums.PowerStationStatusType; import com.hdl.photovoltaic.listener.CloudCallBeak; @@ -308,6 +309,7 @@ currentFragmentIndex = 0; bottomViewChangeOfStyle(); showFragment(); HdlCommonLogic.lowerTagType = LowerTagType.home; HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.homepage.toString()); } }); @@ -320,6 +322,7 @@ currentFragmentIndex = 1; bottomViewChangeOfStyle(); showFragment(); HdlCommonLogic.lowerTagType = LowerTagType.power_station; HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.powerstation.toString()); } }); @@ -332,6 +335,7 @@ currentFragmentIndex = 2; bottomViewChangeOfStyle(); showFragment(); HdlCommonLogic.lowerTagType = LowerTagType.message; HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.message.toString()); } }); @@ -344,6 +348,7 @@ currentFragmentIndex = 3; bottomViewChangeOfStyle(); showFragment(); HdlCommonLogic.lowerTagType = LowerTagType.me; HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.me.toString()); } }); app/src/main/java/com/hdl/photovoltaic/ui/LoginActivity.java
@@ -486,9 +486,10 @@ */ private void getDialog() { ConfirmationCancelDialog1 dialog = new ConfirmationCancelDialog1(_mActivity); dialog.setTitle(getString(R.string.loading_privacy)); dialog.setContent(getString(R.string.loading_privacy_server)); dialog.show(); // dialog.setTitle(getString(R.string.loading_privacy)); dialog.isHideTitle(true); dialog.setContent(getString(R.string.loading_privacy_server)); setStringDifferentColors(dialog.getContentTextView()); dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { @Override app/src/main/java/com/hdl/photovoltaic/ui/adapter/DeviceInfoAdapter.java
@@ -1,6 +1,7 @@ package com.hdl.photovoltaic.ui.adapter; import android.content.Context; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -9,6 +10,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.content.res.AppCompatResources; import androidx.recyclerview.widget.RecyclerView; import com.hdl.photovoltaic.R; @@ -50,7 +52,7 @@ holder.device_label_power_value_tv.setText(HdlCommonLogic.getConvertDoubleUnit(deviceBean.getPowerPvNow(), UnitType.kW)); holder.device_label_day_value_tv.setText(HdlCommonLogic.getConvertDoubleUnit(deviceBean.getPowerPvNow(), UnitType.kWh)); holder.device_label_location_tv.setText(deviceBean.getHomeAddress()); setTextViewStyle(holder.device_label_state_tv, deviceBean.getDeviceStatus()); holder.itemView.setTag(position); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override @@ -87,6 +89,44 @@ } /** * 改变组件样式 * * @param textView 显示组件 * @param state_value 设备状态(1:连接中,2:故障,3:正常(运行),4:离线) */ private void setTextViewStyle(TextView textView, int state_value) { String text = mContext.getString(R.string.my_power_station_operation); Drawable drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_06b92a); switch (state_value) { case 1: { text = mContext.getString(R.string.my_power_station_connecting); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_ffb300); } break; case 2: { text = mContext.getString(R.string.my_power_station_malfunction); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_e34343); } break; case 3: { text = mContext.getString(R.string.my_power_station_operation); } break; case 4: { text = mContext.getString(R.string.my_power_station_off_line); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_b9b9b9); } break; } textView.setText(text); textView.setBackground(drawable); } /** * 一行布局容器 */ static class MyViewHolder extends RecyclerView.ViewHolder { @@ -98,7 +138,7 @@ public TextView device_label_power_value_tv;//有功功率 public TextView device_label_day_value_tv;//当日发电量 public TextView device_label_location_tv;//电站地址 public TextView device_label_state_tv;//电站状态(连接中,运行,离线,故障); public TextView device_label_state_tv;//设备状态(1:连接中,2:故障,3:正常(运行),4:离线) public MyViewHolder(@NonNull View itemView) { app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java
@@ -145,7 +145,7 @@ * 设备在线 但是当前处于故障 状态:故障 * 设备在线(有上报过数据,没有故障) 状态:在线 * 设备离线 状态:离线 * @param state_value 电站状态(1:正常(运行),2:离线,3:连接中,4:故障) * @param state_value 电站状态(1:正常(运行),2:离线,3:连接中,4:故障,5:离线有故障) */ private void setTextViewStyle(TextView textView, int state_value) { String text = mContext.getString(R.string.my_power_station_operation); @@ -170,6 +170,12 @@ text = mContext.getString(R.string.my_power_station_malfunction); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_e34343); } //5:离线有故障Offline_fault break; case 5: { text = mContext.getString(R.string.Offline_fault); drawable = AppCompatResources.getDrawable(mContext, R.drawable.state_e34343); } break; } textView.setText(text); app/src/main/java/com/hdl/photovoltaic/ui/bean/CloudInverterDeviceBean.java
@@ -38,6 +38,7 @@ private String hwVersion;//软件版本号 private String categorySecondName;//设备类型(产品二级分类名称) private String deviceType;//(设备类型INV : 逆变器,BMS : BMS控制盒,BATTERY : 电池单元) public String getSystemStatusDesc() { return systemStatusDesc == null ? "" : systemStatusDesc; @@ -193,5 +194,11 @@ this.online = online; } public String getDeviceType() { return deviceType == null ? "" : deviceType; } public void setDeviceType(String deviceType) { this.deviceType = deviceType; } } app/src/main/java/com/hdl/photovoltaic/ui/bean/DeviceBean.java
@@ -11,7 +11,6 @@ private String homeId; private String homeName; private String deviceType;//设备类型(INV逆变器,BMS控制盒,BATTERY电池单元) private String outputActivePower;//逆变器输出有功功率 private String address;//详细地址 private HouseInfoBean.Location location;//电站地址 @@ -56,13 +55,6 @@ this.location = location; } public String getDeviceType() { return TextUtils.isEmpty(deviceType) ? "" : deviceType; } public void setDeviceType(String deviceType) { this.deviceType = deviceType; } /** * 拼住宅地址 app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java
@@ -286,6 +286,7 @@ String timeDateFormat = TimeUtils.getTimeDateFormat(timeType); Calendar calendar = TimeUtils.stringToCalendar(currDate, timeDateFormat); String time = TimeUtils.subtractDayMonthYearFromDate(calendar, 1, timeDateFormat, timeType); //不需要限制最小日期,因为是查询账号下所有电站,无法知道最小建站日期 viewBinding.yearMonthDayTv.setText(time); getStatistics(); app/src/main/java/com/hdl/photovoltaic/ui/me/SetActivity.java
@@ -120,9 +120,9 @@ private void logoutRequest() { // 二次确认提示框 ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(this); dialog.setTitle(getString(R.string.loading_title_tip)); dialog.setContent(getString(R.string.loading_log_out)); dialog.show(); dialog.setContent(getString(R.string.loading_log_out)); dialog.isHideTitle(true); dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { @Override public void Confirm() { app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java
@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView; 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; @@ -219,15 +220,8 @@ mMessageAdapter.setOnclickListener(new MessageAdapter.OnClickListener() { @Override public void onClick(int position, MessageBean messageBean) { String messageStateType; if (isAlarmDeviceClick) { messageStateType = MessageStateType.untreated; } else { messageStateType = MessageStateType.processed; } Intent intent = new Intent(); intent.putExtra("msgId", messageBean.getMsgId().toString()); intent.putExtra("messageStateType", messageStateType); intent.putExtra("messageBean",new Gson().toJson(messageBean)); intent.setClass(_mActivity, MessageInfoActivity.class); startActivity(intent); } app/src/main/java/com/hdl/photovoltaic/ui/message/MessageInfoActivity.java
@@ -4,9 +4,11 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; import android.widget.TextView; import androidx.appcompat.content.res.AppCompatResources; import com.google.gson.Gson; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; @@ -16,6 +18,7 @@ import com.hdl.photovoltaic.enums.MessageAlarmStateType; 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.other.HdlThreadLogic; import com.hdl.photovoltaic.ui.bean.MessageBean; @@ -33,8 +36,6 @@ private MessageBean mMessageBean; private String mMsgId; private String mMessageStateType; @Override public Object getContentView() { @@ -47,8 +48,11 @@ setNotificationBarBackgroundColor(CustomColor.white); setStatusBarTextColor(); try { mMsgId = getIntent().getStringExtra("msgId"); mMessageStateType = getIntent().getStringExtra("messageStateType"); String json = getIntent().getStringExtra("messageBean"); mMessageBean = new Gson().fromJson(json, MessageBean.class); if (mMessageBean == null) { mMessageBean = new MessageBean(); } } catch (Exception ignored) { } @@ -63,7 +67,7 @@ private void readData() { // showLoading(); HdlMessageLogic.getInstance().getMessageInfo(mMsgId, new CloudCallBeak<MessageBean>() { HdlMessageLogic.getInstance().getMessageInfo(mMessageBean.getMsgId().toString(), new CloudCallBeak<MessageBean>() { @Override public void onSuccess(MessageBean msg) { HdlThreadLogic.runMainThread(new Runnable() { @@ -82,21 +86,7 @@ viewBinding.messageInfoPowerStationLocationIn.rightContentTv.setText(mMessageBean.getLocationAddress()); String date = TimeUtils.getTimeFromTimestamp(mMessageBean.getCreateTime()); viewBinding.messageInfoAlarmTimeIn.rightContentTv.setText(date); String type = "";//FAULT:故障,WARN:告警,EVENT:事件 Drawable drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.alarm_ffb300); 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(MessageAlarmStateType.warn)) { type = _mActivity.getString(R.string.message_alarm); drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.alarm_ffb300); } else if (mMessageBean.getType().equals(MessageAlarmStateType.event)) { type = _mActivity.getString(R.string.loading_title_tip); drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.state_b9b9b9); } viewBinding.messageInfoAlarmStateTv.setText(type); viewBinding.messageInfoAlarmStateTv.setBackground(drawable); stateStyle(viewBinding.messageInfoAlarmStateTv); if (mMessageBean.getStatus().equals(MessageStateType.processed)) { //已经解决掉的隐藏 @@ -126,14 +116,11 @@ } //未处理 if (mMessageBean.getStatus().equals(MessageStateType.untreated)) { //改变缓存状态 if (mMessageBean.getType().equals(MessageAlarmStateType.fault)) { HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.untreated); BaseEventBus baseEventBus = new BaseEventBus(); baseEventBus.setTopic(ConstantManage.message_function_push_post); baseEventBus.setType(MessageStateType.untreated); EventBus.getDefault().post(baseEventBus); //通知未处理要更新数据 HdlCommonLogic.getInstance().postEventBus(ConstantManage.message_function_push_post, MessageStateType.untreated); } else { //除“故障”外,其他等级信息“已读”后,自动移出“发生中”列表并加入“历史记录”列表 HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.processed); @@ -157,10 +144,8 @@ //改变缓存状态 if (mMessageBean.getType().equals(MessageAlarmStateType.fault)) { HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.untreated); BaseEventBus baseEventBus = new BaseEventBus(); baseEventBus.setTopic(ConstantManage.message_function_push_post); baseEventBus.setType(MessageStateType.untreated); EventBus.getDefault().post(baseEventBus); //通知未处理要更新数据 HdlCommonLogic.getInstance().postEventBus(ConstantManage.message_function_push_post, MessageStateType.untreated); } else { //除“故障”外,其他等级信息“已读”后,自动移出“发生中”列表并加入“历史记录”列表 HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.processed); @@ -175,7 +160,7 @@ viewBinding.messageInfoSolveTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { HdlMessageLogic.getInstance().getMessageMessageSolve(mMsgId, new CloudCallBeak<Boolean>() { HdlMessageLogic.getInstance().getMessageMessageSolve(mMessageBean.getMsgId().toString(), new CloudCallBeak<Boolean>() { @Override public void onSuccess(Boolean obj) { if (mMessageBean == null) { @@ -206,15 +191,9 @@ */ private void sendEventBus() { //通知已处理要更新数据 BaseEventBus processedBus = new BaseEventBus(); processedBus.setTopic(ConstantManage.message_function_push_post); processedBus.setType(MessageStateType.processed); EventBus.getDefault().post(processedBus); HdlCommonLogic.getInstance().postEventBus(ConstantManage.message_function_push_post, MessageStateType.processed); //通知未处理要更新数据 BaseEventBus untreatedBus = new BaseEventBus(); untreatedBus.setTopic(ConstantManage.message_function_push_post); untreatedBus.setType(MessageStateType.untreated); EventBus.getDefault().post(untreatedBus); HdlCommonLogic.getInstance().postEventBus(ConstantManage.message_function_push_post, MessageStateType.untreated); } @@ -237,16 +216,43 @@ viewBinding.messageInfoPowerStationLocationIn.leftTitleTv.setText(R.string.message_alarm_detailspower_station_location); viewBinding.messageInfoAlarmTimeIn.leftTitleTv.setText(R.string.message_alarm_details_time); viewBinding.messageInfoAlarmContentIn.rightContentTv.setText(""); viewBinding.messageInfoAlarmDeviceIn.rightContentTv.setText(""); viewBinding.messageInfoAlarmRangeIn.rightContentTv.setText(""); viewBinding.messageInfoPowerStationLocationIn.rightContentTv.setText(""); viewBinding.messageInfoAlarmTimeIn.rightContentTv.setText(""); viewBinding.messageInfoHomeNameTv.setText(mMessageBean.getHomeName()); viewBinding.messageInfoAlarmContentIn.rightContentTv.setText(mMessageBean.getTitle()); viewBinding.messageInfoAlarmDeviceIn.rightContentTv.setText(mMessageBean.getDeviceDesc()); viewBinding.messageInfoAlarmRangeIn.rightContentTv.setText(mMessageBean.getEffectScopeDesc()); viewBinding.messageInfoPowerStationLocationIn.rightContentTv.setText(mMessageBean.getLocationAddress()); String date = TimeUtils.getTimeFromTimestamp(mMessageBean.getCreateTime()); viewBinding.messageInfoAlarmTimeIn.rightContentTv.setText(date); stateStyle(viewBinding.messageInfoAlarmStateTv); if (mMessageStateType.equals(MessageStateType.processed)) { if (mMessageBean.getStatus().equals(MessageStateType.processed)) { //已经解决掉的隐藏 viewBinding.messageInfoBackTv.setVisibility(View.GONE); viewBinding.messageInfoSolveTv.setVisibility(View.GONE); } } /** * 状态样式 * * @param textView 组件 */ private void stateStyle(TextView textView) { String type = "";//FAULT:故障,WARN:告警,EVENT:事件 Drawable drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.alarm_ffb300); 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(MessageAlarmStateType.warn)) { type = _mActivity.getString(R.string.message_alarm); drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.alarm_ffb300); } else if (mMessageBean.getType().equals(MessageAlarmStateType.event)) { type = _mActivity.getString(R.string.loading_title_tip); drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.state_b9b9b9); } textView.setText(type); textView.setBackground(drawable); } } app/src/main/java/com/hdl/photovoltaic/ui/message/SearchMessageActivity.java
@@ -182,8 +182,7 @@ @Override public void onClick(int position, MessageBean messageBean) { Intent intent = new Intent(); intent.putExtra("msgId", messageBean.getMsgId().toString()); intent.putExtra("messageStateType", mMessageStateType); intent.putExtra("messageBean",new Gson().toJson(messageBean)); intent.setClass(_mActivity, MessageInfoActivity.class); startActivity(intent); } app/src/main/java/com/hdl/photovoltaic/ui/newC/MessageCenterList.java
@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.R; @@ -269,17 +270,8 @@ messageCenterListAdapter.setNoOnclickListener(new MessageCenterListAdapter.OnclickListener() { @Override public void onClick(int position, MessageBean messageBean) { String messageStateType; if (isAlarmDeviceClick) { messageStateType = MessageStateType.untreated; } else { messageStateType = MessageStateType.processed; } Intent intent = new Intent(); intent.putExtra("msgId", messageBean.getMsgId().toString()); intent.putExtra("messageStateType", messageStateType); intent.putExtra("messageBean", new Gson().toJson(messageBean)); intent.setClass(_mActivity, MessageInfoActivity.class); startActivity(intent); } app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListEdit.java
@@ -261,7 +261,7 @@ JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("homeId", houseIdBean.getHomeId()); jsonObject.addProperty("homeName", houseIdBean.getHomeName()); jsonObject.addProperty("powerStationStatus", houseIdBean.getPowerStationStatus()+""); jsonObject.addProperty("powerStationStatus", houseIdBean.getPowerStationStatus() + ""); HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_REFRESH_DETAILS); uniCallBackBaseBean.setData(jsonObject); app/src/main/java/com/hdl/photovoltaic/ui/powerstation/DeviceSearchActivity.java
@@ -24,10 +24,14 @@ import com.hdl.photovoltaic.other.HdlFileLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; import com.hdl.photovoltaic.other.HdlUniLogic; import com.hdl.photovoltaic.ui.adapter.DeviceInfoAdapter; import com.hdl.photovoltaic.ui.adapter.SearchDeviceAdapter; import com.hdl.photovoltaic.ui.adapter.SearchHistoryAdapter; import com.hdl.photovoltaic.ui.bean.DeviceBean; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.utils.URLEncodingUtils; import com.hdl.sdk.link.core.bean.gateway.GatewayBean; import java.util.ArrayList; import java.util.Collections; @@ -174,11 +178,26 @@ viewBinding.powerStationSearchEt.setText(title); } }); //电站点击是事件 //设备点击是事件 searchDeviceAdapter.setOnclickListener(new DeviceInfoAdapter.OnClickListener() { @Override public void onClick(int position, DeviceBean deviceBean) { GatewayBean gatewayBean = new GatewayBean(); gatewayBean.setCategorySecondName(deviceBean.getCategorySecondName()); gatewayBean.setDevice_mac(deviceBean.getOsn()); gatewayBean.setDevice_model(deviceBean.getOmodel()); gatewayBean.setOid(deviceBean.getOid()); gatewayBean.setGatewayId(deviceBean.getGatewayId()); gatewayBean.setAddresses(deviceBean.getAddresses()); gatewayBean.setSid(deviceBean.getSid()); gatewayBean.setDeviceId(deviceBean.getDeviceId()); gatewayBean.setDevice_name(deviceBean.getName()); gatewayBean.setDeviceStatus(deviceBean.getDeviceStatus()); gatewayBean.setHomeId(deviceBean.getHomeId()); gatewayBean.setDeviceType(deviceBean.getDeviceType()); String jsonEncryption = URLEncodingUtils.encodeURIComponent(new Gson().toJson(gatewayBean)); String path = HDLUniMP.UNI_EVENT_OPEN_DEVICE_DETAILS + "?inverterInfo=" + jsonEncryption; HdlUniLogic.getInstance().openUniMP(path, null); } }); @@ -346,7 +365,7 @@ } boolean if_boolean = false; for (int i = 0; i < deviceList.size(); i++) { if (deviceList.get(i).getHomeId().equals(deviceBean.getHomeId())) { if (deviceList.get(i).getOsn().equals(deviceBean.getOsn())) { //存在替换 deviceList.remove(i); deviceList.add(i, deviceBean); app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseAndDeviceFragment.java
@@ -1,5 +1,6 @@ package com.hdl.photovoltaic.ui.powerstation; import android.app.job.JobInfo; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; @@ -22,6 +23,7 @@ import com.hdl.photovoltaic.databinding.FragmentHouseListBinding; import com.hdl.photovoltaic.base.CustomBaseFragment; import com.hdl.photovoltaic.enums.HomepageTitleTabSwitch; import com.hdl.photovoltaic.enums.LowerTagType; import com.hdl.photovoltaic.enums.PowerStationStatus; import com.hdl.photovoltaic.enums.ShowErrorMode; import com.hdl.photovoltaic.enums.SortType; @@ -41,6 +43,7 @@ import com.hdl.photovoltaic.ui.bean.StatusOverviewBean; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.utils.PermissionUtils; import com.hdl.photovoltaic.utils.URLEncodingUtils; import com.hdl.photovoltaic.widget.DefaultFilteringDialog; import com.hdl.photovoltaic.widget.DelayedConfirmationCancelDialog; import com.hdl.sdk.link.common.exception.HDLLinkException; @@ -96,6 +99,7 @@ @Override public void onBindView(Bundle savedInstanceState) { getStatusOverview(); initData(); //初始化 initView(); @@ -297,10 +301,11 @@ public void onDelClick(int position, HouseIdBean houseIdBean) { DelayedConfirmationCancelDialog delayedConfirmationCancelDialog = new DelayedConfirmationCancelDialog(_mActivity); delayedConfirmationCancelDialog.setTitleContent(getString(R.string.loading_title_tip)); delayedConfirmationCancelDialog.show(); delayedConfirmationCancelDialog.isHideTitle(true); String homeName = "\"" + houseIdBean.getHomeName() + "\""; delayedConfirmationCancelDialog.setContent(getString(R.string.delete_power_station).replace("%s", homeName)); delayedConfirmationCancelDialog.show(); delayedConfirmationCancelDialog.startCountdown(4); delayedConfirmationCancelDialog.setYesOnclickListener(new DelayedConfirmationCancelDialog.onYesOnclickListener() { @Override @@ -407,7 +412,22 @@ deviceInfoAdapter.setOnclickListener(new DeviceInfoAdapter.OnClickListener() { @Override public void onClick(int position, DeviceBean deviceBean) { GatewayBean gatewayBean = new GatewayBean(); gatewayBean.setCategorySecondName(deviceBean.getCategorySecondName()); gatewayBean.setDevice_mac(deviceBean.getOsn()); gatewayBean.setDevice_model(deviceBean.getOmodel()); gatewayBean.setOid(deviceBean.getOid()); gatewayBean.setGatewayId(deviceBean.getGatewayId()); gatewayBean.setAddresses(deviceBean.getAddresses()); gatewayBean.setSid(deviceBean.getSid()); gatewayBean.setDeviceId(deviceBean.getDeviceId()); gatewayBean.setDevice_name(deviceBean.getName()); gatewayBean.setDeviceStatus(deviceBean.getDeviceStatus()); gatewayBean.setHomeId(deviceBean.getHomeId()); gatewayBean.setDeviceType(deviceBean.getDeviceType()); String jsonEncryption = URLEncodingUtils.encodeURIComponent(new Gson().toJson(gatewayBean)); String path = HDLUniMP.UNI_EVENT_OPEN_DEVICE_DETAILS + "?inverterInfo=" + jsonEncryption; HdlUniLogic.getInstance().openUniMP(path, null); } }); //设备设置下拉箭头颜色 @@ -578,15 +598,20 @@ } else if (HDLUniMP.UNI_EVENT_REPLY_HOME_CLOSE_HOME_DETAILS_PAGE.equals(eventBus.getType())) { // 取消粘性事件 EventBus.getDefault().removeStickyEvent(eventBus); //uin关闭住宅详情界面通知 if (MqttRecvClient.getInstance() != null) { MqttRecvClient.getInstance().removeAllTopic(); //是在电站列表页才进来这里 if (HdlCommonLogic.lowerTagType == LowerTagType.power_station && isClickPowerStationLabel) { //uin关闭住宅详情界面通知 if (MqttRecvClient.getInstance() != null) { MqttRecvClient.getInstance().removeAllTopic(); } loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true); } loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true); } else if (HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST.equals(eventBus.getType())) { // 取消粘性事件 EventBus.getDefault().removeStickyEvent(eventBus); // if (!isClickPowerStationLabel) { // return; // } //进去住宅详情uni读取逆变器列表成功后通知 for (int i = 0; i < HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId()).size(); i++) { String gatewayId = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId()).get(i).getGatewayId(); @@ -616,9 +641,14 @@ } else if (eventBus.getType().equals(PowerStationStatus.connecting)) { viewBinding.powerStationConnectedIl.parentLl.performClick(); } else if (eventBus.getType().equals(ConstantManage.station_edit)) { //更新一下住宅 loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true); //编辑后更新一下住宅列表 //loadNextPageHouseList(false, key, value, installedCapacityMinValue, installedCapacityMaxValue, gridTypeValue, powerStationStatusValue, 1, true); // getStatusOverview(); if (houseInfoAdapter != null) { initData(); //更新UI houseInfoAdapter.setList(houseListBeanIDList); } } } } app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
@@ -130,8 +130,10 @@ public final static String UNI_EVENT_OPEN_HOME_EDIT = "pages/powerStation/powerStationEdit";//住宅【电站】编辑 public final static String UNI_EVENT_OPEN_HOME_DETAILS = "pages/powerStationDetail/index";//住宅【电站】详情 public final static String UNI_EVENT_OPEN_HOME_DETAILS_C = "pages/powerStationDetail/tabbarPage";//C端打开【电站】详情 public final static String UNI_EVENT_OPEN_HOME_Null_C = "pages/powerStationDetail/tabbarPage";//无电站时(不需要传参数) public final static String UNI_EVENT_OPEN_DEVICE_DETAILS = "pages/powerStationDetail/childPage/device/detail";//设备详情 public final static String UNI_EVENT_OPEN_HOME_DEl = "del";//住宅【电站】删除 /*********设备模块*********/ //设备模块打开页面全路径 app/src/main/java/com/hdl/photovoltaic/utils/URLEncodingUtils.java
New file @@ -0,0 +1,20 @@ package com.hdl.photovoltaic.utils; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; /** * 编码加码 */ public class URLEncodingUtils { public static String encodeURIComponent(String value) { try { return URLEncoder.encode(value, "UTF-8") .replace("+", "%20") .replace("*", "%2A") .replace("%7E", "~"); } catch (Exception e) { return ""; } } } app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationCancelDialog.java
@@ -62,6 +62,19 @@ } /** * 隐藏自定义"标题"组件 * * @param isHideTitle true 隐藏 */ public void isHideTitle(boolean isHideTitle) { if (isHideTitle) { if (viewBinding != null) { viewBinding.loadingConfirmationTitleTv.setVisibility(View.GONE); } } } /** * 自定义"确认"文本 * * @param confirm 内容 app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationCancelDialog1.java
@@ -61,6 +61,19 @@ } /** * 隐藏自定义"标题"组件 * * @param isHideTitle true 隐藏 */ public void isHideTitle(boolean isHideTitle) { if (isHideTitle) { if (viewBinding != null) { viewBinding.loadingConfirmationTitleTv.setVisibility(View.GONE); } } } /** * 自定义"确认"文本 * * @param confirm 内容 app/src/main/java/com/hdl/photovoltaic/widget/DelayedConfirmationCancelDialog.java
@@ -11,12 +11,13 @@ import androidx.annotation.NonNull; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.BaseDialog; import com.hdl.photovoltaic.databinding.DialogConfirmCancelBinding; /** * 延时确认框 */ public class DelayedConfirmationCancelDialog extends Dialog { public class DelayedConfirmationCancelDialog extends BaseDialog { public DelayedConfirmationCancelDialog(@NonNull Context context) { super(context, R.style.Custom_Dialog); this.mContext = context; @@ -64,6 +65,19 @@ } /** * 隐藏自定义"标题"组件 * * @param isHideTitle true 隐藏 */ public void isHideTitle(boolean isHideTitle) { if (isHideTitle) { if (viewBinding != null) { viewBinding.loadingConfirmationTitleTv.setVisibility(View.GONE); } } } /** * 自定义"确认"文本 * * @param confirm 内容 app/src/main/res/layout/activity_home_login.xml
@@ -122,7 +122,6 @@ android:layout_height="@dimen/dp_20" android:layout_marginEnd="@dimen/dp_32" android:src="@drawable/clear" android:visibility="gone" app:layout_constraintBottom_toBottomOf="@+id/home_login_account_et" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/home_login_account_et" /> app/src/main/res/layout/activity_start.xml
@@ -8,6 +8,7 @@ tools:context="com.hdl.photovoltaic.ui.StartActivity"> <TextView android:id="@+id/start_tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_5" @@ -23,4 +24,15 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.093" /> <ImageView android:id="@+id/as_regards_icon_iv" android:layout_width="53.5dp" android:layout_height="53.5dp" android:layout_marginTop="@dimen/dp_29" android:src="@drawable/logo" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/start_tv" /> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/dialog_agree_onagree.xml
@@ -21,11 +21,11 @@ <TextView android:id="@+id/loading_confirmation_title_tv" android:layout_width="0dp" android:gravity="center" android:layout_height="@dimen/dp_25" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_24" android:layout_marginEnd="@dimen/dp_20" android:gravity="center" android:textColor="@color/text_030D1C" android:textSize="@dimen/text_18" app:layout_constraintEnd_toEndOf="parent" @@ -37,12 +37,12 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_43" android:layout_marginEnd="@dimen/dp_20" android:layout_marginBottom="@dimen/dp_34" android:singleLine="false" android:textColor="@color/text_030D1C" android:tag="click" android:textColor="@color/text_030D1C" app:layout_constraintBottom_toTopOf="@+id/dialog_confirm_bottom_line_ly" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app/src/main/res/layout/dialog_confirm_cancel.xml
@@ -2,8 +2,7 @@ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > android:layout_height="match_parent"> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/loading_confirmation_cl" @@ -37,12 +36,13 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_20" android:layout_marginTop="@dimen/dp_34" android:layout_marginTop="@dimen/dp_43" android:layout_marginEnd="@dimen/dp_20" android:layout_marginBottom="@dimen/dp_34" android:gravity="center" android:singleLine="false" android:textColor="@color/text_030D1C" android:textColor="@color/text_222222" android:textSize="@dimen/text_18" app:layout_constraintBottom_toTopOf="@+id/dialog_confirm_bottom_line_ly" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app/src/main/res/layout/fragment_home_page.xml
@@ -437,7 +437,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:text="PV power generation" android:text="@string/pv_power" android:textColor="@color/text_E6000000" android:textSize="@dimen/text_12" /> app/src/main/res/layout/fragment_house_list.xml
@@ -23,7 +23,7 @@ android:layout_height="match_parent" android:layout_centerVertical="true" android:gravity="center_vertical" android:text="Power Station" android:text="@string/power_station" android:textColor="@color/text_E6000000" android:textSize="@dimen/text_20" android:textStyle="bold" /> @@ -32,13 +32,12 @@ android:id="@+id/device_label" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerVertical="true" android:layout_marginStart="@dimen/dp_21" android:layout_marginEnd="@dimen/dp_4" android:layout_marginStart="19dp" android:layout_marginEnd="7dp" android:layout_toStartOf="@+id/edit_iv" android:layout_toEndOf="@+id/power_station_label" android:gravity="start|center_vertical" android:text="Equipment" android:text="@string/device" android:textColor="@color/text_66000000" android:textSize="@dimen/text_16" app/src/main/res/layout/fragment_message.xml
@@ -8,7 +8,7 @@ <RelativeLayout android:id="@+id/message_rl" android:layout_width="match_parent" android:layout_height="@dimen/dp_31" android:layout_height="@dimen/dp_36" android:layout_marginStart="@dimen/dp_16" android:layout_marginTop="@dimen/dp_44" android:layout_marginEnd="@dimen/dp_16" app/src/main/res/layout/item_device_details.xml
@@ -116,7 +116,7 @@ android:layout_height="@dimen/dp_17" android:layout_marginTop="3dp" android:gravity="center" android:text="@string/generated_power" android:text="@string/active_power" android:textColor="@color/text_66000000" android:textSize="@dimen/text_12" /> app/src/main/res/layout/swipe_right_layout.xml
@@ -7,7 +7,7 @@ <View android:layout_width="wrap_content" android:layout_height="@dimen/dp_24" /> android:layout_height="@dimen/dp_16" /> <ImageView android:id="@+id/move_home_iv" app/src/main/res/values/strings.xml
@@ -301,4 +301,8 @@ <string name="search_station">搜索电站</string> <string name="enter_the_device_sn_and_device_name">输入设备SN号/设备名称</string> <string name="enter_alarm_name">输入报警名称</string> <string name="device">设备</string> <string name="Offline_fault">离线有故障</string> <string name="active_power">有功功率</string> </resources>