wjc
2025-04-15 cdf49871675e42a5576f725a93eec7ca15294c6f
app/src/main/java/com/hdl/photovoltaic/ui/message/MessageInfoActivity.java
@@ -4,22 +4,27 @@
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;
import com.hdl.photovoltaic.config.ConstantManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.databinding.ActivityMessageInfoBinding;
import com.hdl.photovoltaic.enums.MessageAlarmStateType;
import com.hdl.photovoltaic.enums.MessageStateType;
import com.hdl.photovoltaic.listener.CloudCallBeak;
import com.hdl.photovoltaic.other.HdlCommonLogic;
import com.hdl.photovoltaic.other.HdlMessageLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import com.hdl.photovoltaic.ui.bean.MessageBean;
import com.hdl.photovoltaic.utils.TimeUtils;
import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
import com.jaeger.library.StatusBarUtil;
import org.greenrobot.eventbus.EventBus;
@@ -32,7 +37,6 @@
    private MessageBean mMessageBean;
    private String mMsgId;
    @Override
    public Object getContentView() {
@@ -42,10 +46,14 @@
    @Override
    public void onBindView(Bundle savedInstanceState) {
        setNotificationBarBackgroundColor(CustomColor.white);
        setStatusBarTextColor();
       setStatusBarTranslucent();
        getWindow().setNavigationBarColor(getColor(R.color.text_FF000000));
        try {
            mMsgId = getIntent().getStringExtra("msgId");
            String json = getIntent().getStringExtra("messageBean");
            mMessageBean = new Gson().fromJson(json, MessageBean.class);
            if (mMessageBean == null) {
                mMessageBean = new MessageBean();
            }
        } catch (Exception ignored) {
        }
@@ -60,7 +68,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() {
@@ -79,24 +87,16 @@
                        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.event);
                            drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.alarm_ffb300);
                        }
                        viewBinding.messageInfoAlarmStateTv.setText(type);
                        viewBinding.messageInfoAlarmStateTv.setBackground(drawable);
                        stateStyle(viewBinding.messageInfoAlarmStateTv);
                        if (mMessageBean.getStatus().equals(MessageStateType.processed)) {
                            //已经解决掉的隐藏
                            viewBinding.messageInfoBackTv.setVisibility(View.GONE);
                            viewBinding.messageInfoSolveTv.setVisibility(View.GONE);
                        } else {
                            if (mMessageBean.getType().equals(MessageAlarmStateType.fault)) {
                                return;
                            }
                            viewBinding.messageInfoBackTv.setVisibility(View.GONE);
                            viewBinding.messageInfoSolveTv.setVisibility(View.GONE);
                        }
@@ -113,69 +113,72 @@
    }
    private void initEvent() {
        viewBinding.toolbarTopIn.topBackBtn.setOnClickListener(new View.OnClickListener() {
        //后退的事件
        viewBinding.toolbarTopRl.topBackLl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mMessageBean == null) {
                    finish();
                    return;
                }
                //恢复进来只是查看的
                //未处理
                if (mMessageBean.getStatus().equals(MessageStateType.untreated)) {
                    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);
                    //改变缓存状态
                    if (mMessageBean.getType().equals(MessageAlarmStateType.fault)) {
                        HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.untreated);
                        //通知未处理要更新数据
                        HdlCommonLogic.getInstance().postEventBus(ConstantManage.message_function_push_post, MessageStateType.untreated);
                    } else {
                        //除“故障”外,其他等级信息“已读”后,自动移出“发生中”列表并加入“历史记录”列表
                        HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.processed);
                        sendEventBus();
                    }
                }
                finish();
            }
        });
        //返回的事件
        viewBinding.messageInfoBackTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mMessageBean == null) {
                    finish();
                    return;
                }
                //恢复进来只是查看的
                //未处理
                if (mMessageBean.getStatus().equals(MessageStateType.untreated)) {
                    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);
                    //改变缓存状态
                    if (mMessageBean.getType().equals(MessageAlarmStateType.fault)) {
                        HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.untreated);
                        //通知未处理要更新数据
                        HdlCommonLogic.getInstance().postEventBus(ConstantManage.message_function_push_post, MessageStateType.untreated);
                    } else {
                        //除“故障”外,其他等级信息“已读”后,自动移出“发生中”列表并加入“历史记录”列表
                        HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.processed);
                        sendEventBus();
                    }
                }
                finish();
            }
        });
        //已处理的事件
        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) {
                            return;
                        }
                        //恢复进来只是查看的
                        //未处理
                        if (mMessageBean.getStatus().equals(MessageStateType.untreated)) {
                            HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.processed);
                            //已处理要更新数据
                            BaseEventBus processedBus = new BaseEventBus();
                            processedBus.setTopic(ConstantManage.message_function_push_post);
                            processedBus.setType(MessageStateType.processed);
                            EventBus.getDefault().post(processedBus);
                            //未处理要更新数据
                            BaseEventBus untreatedBus = new BaseEventBus();
                            untreatedBus.setTopic(ConstantManage.message_function_push_post);
                            untreatedBus.setType(MessageStateType.untreated);
                            EventBus.getDefault().post(untreatedBus);
                            sendEventBus();
                        }
                        finish();
                    }
                    @Override
@@ -190,12 +193,21 @@
    }
    /**
     * 通知出去外面更新数据
     */
    private void sendEventBus() {
        //通知已处理要更新数据
        HdlCommonLogic.getInstance().postEventBus(ConstantManage.message_function_push_post, MessageStateType.processed);
        //通知未处理要更新数据
        HdlCommonLogic.getInstance().postEventBus(ConstantManage.message_function_push_post, MessageStateType.untreated);
    }
    private void initView() {
        viewBinding.toolbarTopIn.topTitleTv.setText(R.string.message_alarm_info);
        viewBinding.toolbarTopIn.topTitleTv.setTextColor(getResources().getColor(R.color.text_030D1C, null));
        viewBinding.toolbarTopIn.topBackBtn.setVisibility(View.VISIBLE);
        viewBinding.toolbarTopIn.topBarView.setBackgroundColor(getResources().getColor(R.color.text_FFFFFFFF, null));
        viewBinding.toolbarTopRl.topTitleTv.setText(R.string.message_alarm_info);
        viewBinding.toolbarTopRl.topBackLl.setVisibility(View.VISIBLE);
        viewBinding.messageInfoAlarmContentIn.leftTitleTv.setText(R.string.messagealarm_details_content);
        viewBinding.messageInfoAlarmDeviceIn.leftTitleTv.setText(R.string.messagealarm_details_device);
@@ -203,10 +215,64 @@
        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 (mMessageBean.getStatus().equals(MessageStateType.untreated) && mMessageBean.getType().equals(MessageAlarmStateType.fault)) {
            //发生中的消息且是故障才要显示
            viewBinding.messageInfoWorkOut.setVisibility(View.VISIBLE);
        }
    }
    /**
     * 状态样式
     *
     * @param textView 组件
     */
    private void stateStyle(TextView textView) {
        String type = "";//FAULT:故障,WARN:告警,EVENT:事件
        Drawable drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.device_satte_ffb300);
        if (mMessageBean.getType().equals(MessageAlarmStateType.fault)) {
            type = _mActivity.getString(R.string.my_power_station_malfunction);
            drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.device_state_fff55252);
        } else if (mMessageBean.getType().equals(MessageAlarmStateType.warn)) {
            type = _mActivity.getString(R.string.message_alarm);
            drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.device_satte_ffb300);
        } else if (mMessageBean.getType().equals(MessageAlarmStateType.event)) {
            type = _mActivity.getString(R.string.loading_title_tip);
            drawable = AppCompatResources.getDrawable(_mActivity, R.drawable.device_state_ffb9b9b9);
        }
//        textView.setText(type);
        textView.setBackground(drawable);
    }
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        if (mMessageBean == null) {
            return;
        }
        //未处理
        if (mMessageBean.getStatus().equals(MessageStateType.untreated)) {
            //改变缓存状态
            if (mMessageBean.getType().equals(MessageAlarmStateType.fault)) {
                HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.untreated);
                //通知未处理要更新数据
                HdlCommonLogic.getInstance().postEventBus(ConstantManage.message_function_push_post, MessageStateType.untreated);
            } else {
                //除“故障”外,其他等级信息“已读”后,自动移出“发生中”列表并加入“历史记录”列表
                HdlMessageLogic.getInstance().setMessageState(mMessageBean.getMsgId(), true, MessageStateType.processed);
                sendEventBus();
            }
        }
    }
}