mac
2024-05-22 e808338698915f51ff128e8861d7d580ae1a84b1
Merge branch 'wjc_new' into wxw_new
2个文件已添加
34个文件已修改
422 ■■■■ 已修改文件
app/build.gradle 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/HDLApp.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/enums/LowerTagType.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/BPowerStationActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/LoginActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/adapter/DeviceInfoAdapter.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/adapter/HouseInfoAdapter.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/CloudInverterDeviceBean.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/bean/DeviceBean.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/home/HomePageFragment.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/me/SetActivity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageFragment.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageInfoActivity.java 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/message/SearchMessageActivity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/newC/MessageCenterList.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListEdit.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/DeviceSearchActivity.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseAndDeviceFragment.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/utils/URLEncodingUtils.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationCancelDialog.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationCancelDialog1.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/widget/DelayedConfirmationCancelDialog.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_home_login.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_start.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_agree_onagree.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_confirm_cancel.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_home_page.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_house_list.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_message.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_device_details.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/swipe_right_layout.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>