weimingfei
9 天以前 221c873ee48ed5f44680578d32b0bbf19fd9e4c1
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java
@@ -1,25 +1,81 @@
package com.doumee.keyCabinet.ui.keyCabinet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.TextAppearanceSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.doumee.keyCabinet.MApplication;
import com.doumee.keyCabinet.R;
import com.doumee.keyCabinet.base.MyBaseActivity;
import com.doumee.keyCabinet.bean.KeyCabinetBean;
import com.doumee.keyCabinet.databinding.KeyCabinetActivityBinding;
import com.doumee.keyCabinet.event.KeyDoorEvent;
import com.doumee.keyCabinet.event.KeyResultEvent;
import com.doumee.keyCabinet.event.KeyStatusListener;
import com.doumee.keyCabinet.event.OpenGridEvent;
import com.doumee.keyCabinet.ui.face.adapter.ErrRcvAdapter;
import com.doumee.keyCabinet.ui.keyCabinet.adapter.CabinetRcvAdapter;
import com.doumee.lib_coremodel.base.BaseActivity;
import com.doumee.lib_coremodel.bean.event.ActionEventData;
import com.doumee.lib_coremodel.util.RecyclerHelp;
import com.doumee.lib_coremodel.util.SpUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.util.List;
import java.util.Random;
import dagger.hilt.android.AndroidEntryPoint;
@AndroidEntryPoint
public class KeyCabinetActivity extends MyBaseActivity<KeyCabinetVM, KeyCabinetActivityBinding> {
    private CabinetRcvAdapter adapter;
    private KeyCabinetBean selectBean;
    //0=取 1=还
    private int flag;
    //状态,0:待开门,1:待关门
    private int status;
    private int ysDownCount = 10;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            switch (msg.what){
                case 0:
                    if (ysDownCount==4) {
                        //领取钥匙倒计时
                        doRegister(7,null);
                        ysDownCount--;
                        handler.sendEmptyMessageDelayed(0,1000);
                    }else if (ysDownCount==0) {
                        //领取钥匙倒计时
                        doRegister(MApplication.nextBoolean()?5:6,null);
                    }else {
                        ysDownCount--;
                        handler.sendEmptyMessageDelayed(0,1000);
                    }
                    break;
                case 1:
                    break;
                default:
                    break;
            }
        }
    };
    @Override
    public int getLayoutId() {
@@ -28,14 +84,13 @@
    @Override
    public void initView(@Nullable Bundle savedInstanceState) {
        isAddCountTimer = false;
        normalConfig();
        getDB().setModel(getVM());
        flag = MApplication.getLoginBean().getFlag();
        adapter = new CabinetRcvAdapter(this, R.layout.cabinet_rcv_item, new CabinetRcvAdapter.OnItemClick() {
            @Override
            public void onItemClick(KeyCabinetBean item) {
                selectBean = item;
            }
        });
        RecyclerHelp.bindVG(this,getDB().rcvKm,3,30);
@@ -44,6 +99,187 @@
    @Override
    public void initData(@Nullable Bundle savedInstanceState) {
        getVM().getDatasLD().observe(this, new Observer<List<KeyCabinetBean>>() {
            @Override
            public void onChanged(List<KeyCabinetBean> beans) {
                if(beans.size()>0){
                    beans.get(0).getIsSelected().set(true);
                    beans.get(0).getText1Color().set(0xffffffff);
                    beans.get(0).getText2Color().set(0xffffffff);
                    selectBean = beans.get(0);
                    changeBtBg();
                    adapter.refreshData(beans);
                    getVM().emptyVisibility.set(View.GONE);
                }else {
                    getVM().emptyVisibility.set(View.VISIBLE);
                }
            }
        });
        getVM().getDatas();
    }
    @Override
    protected void timeChange(String djs) {
        getDB().tvDjs.setText(djs);
    }
    @Override
    protected void doRegister(int type, ActionEventData data) {
        switch (type){
            case 1:
                if(selectBean==null){
                    Toast.makeText(mContext, "请选择柜门", Toast.LENGTH_SHORT).show();
                    return;
                }
                //开启柜门
                getVM().openGridDriver(selectBean);
                EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(),selectBean.getBoardCode()));
                break;
            case 2:
                getDB().clTip1.setVisibility(View.GONE);
                if(status==0) {
                    //重新开门
                    EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode()));
                }
                break;
            case 3:
                //开启失败
                getDB().btTip.setText("重新开门");
                getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
                getDB().tvJg1.setText("开门失败,请联系管理员");
                getDB().tvJg2.setText(getErrPhoneText(),TextView.BufferType.SPANNABLE);
                getDB().btTip.setVisibility(View.VISIBLE);
                getDB().clTip1.setVisibility(View.VISIBLE);
                break;
            case 4:
                //开启成功
                status=1;
                if("0".equals(flag)) {
                    getDB().imgTip2.setImageResource(R.mipmap.ic_notclose_key);
                    getDB().tvTip22.setText("请领取钥匙后关闭柜门");
                }else {
                    getDB().imgTip2.setImageResource(R.mipmap.ic_notclose);
                    getDB().tvTip22.setText("请归还钥匙后关闭柜门");
                }
                getDB().tvTip21.setText(getTipText(selectBean.getCabinetName(),"柜门打开成功"), TextView.BufferType.SPANNABLE);
                getDB().clTip2.setVisibility(View.VISIBLE);
                EventBus.getDefault().post(new KeyStatusListener(0));
                ysDownCount = 8;
                handler.sendEmptyMessageDelayed(0,1000);
                break;
            case 7:
                //提醒关柜门
                getDB().imgTip2.setImageResource(R.mipmap.ic_notclose);
                getDB().tvTip22.setText("请关闭柜门");
                getDB().tvTip21.setText(getTipText(selectBean.getCabinetName(),"柜门未关闭"), TextView.BufferType.SPANNABLE);
                getDB().clTip2.setVisibility(View.VISIBLE);
                break;
            case 5:
                //关门-钥匙领取成功
                status = 0;
                getDB().clTip2.setVisibility(View.GONE);
                getDB().imgJg1.setImageResource(R.mipmap.ic_success);
                getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"钥匙领取成功"), TextView.BufferType.SPANNABLE);
                getDB().tvJg2.setText("柜门已关闭");
                getDB().btTip.setVisibility(View.GONE);
                getDB().clTip1.setVisibility(View.VISIBLE);
                break;
            case 6:
                //关门-钥匙领取失败
                status = 0;
                getDB().btTip.setText("重新开门");
                getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
                getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"钥匙未领取"), TextView.BufferType.SPANNABLE);
                getDB().tvJg2.setText("柜门已关闭");
                getDB().btTip.setVisibility(View.VISIBLE);
                getDB().clTip1.setVisibility(View.VISIBLE);
                break;
            case 8:
                //关门-钥匙归还成功
                status = 0;
                getDB().clTip2.setVisibility(View.GONE);
                getDB().imgJg1.setImageResource(R.mipmap.ic_success);
                getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"钥匙归还成功"), TextView.BufferType.SPANNABLE);
                getDB().tvJg2.setText("柜门已关闭");
                getDB().btTip.setVisibility(View.GONE);
                getDB().clTip1.setVisibility(View.VISIBLE);
                break;
            case 9:
                //关门-钥匙归还失败
                status = 0;
                getDB().btTip.setText("重新归还");
                getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
                getDB().tvJg1.setText("未识别到钥匙");
                getDB().tvJg2.setText(getErrPhoneText(), TextView.BufferType.SPANNABLE);
                getDB().btTip.setVisibility(View.VISIBLE);
                getDB().clTip1.setVisibility(View.VISIBLE);
                break;
            default:
                break;
        }
    }
    private SpannableString getTipText(String name,String msg){
        String text = name+msg;
        SpannableString styledText = new SpannableString(text);
        styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip1), 0, name.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip2), name.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        return styledText;
    }
    private SpannableString getErrPhoneText(){
        String phone = "15899098765";
        String text = "如有问题请联系管理员"+phone;
        SpannableString styledText = new SpannableString(text);
        styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip2), 0, text.length()-phone.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip1), text.length()-phone.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        return styledText;
    }
    private void changeBtBg(){
        if(selectBean!=null){
            getDB().tvKm.setBackgroundResource(R.drawable.shape_r25_blue_bg);
        }else {
            getDB().tvKm.setBackgroundResource(R.drawable.shape_mb_bt_faile);
        }
    }
    @Subscribe
    public void KeyDoorEvent(KeyDoorEvent e){
        if(!isFinishing()){
            if("0".equals(e.getResult())){
                //开门成功
                doRegister(4,null);
            }else {
                //失败
                doRegister(3,null);
            }
        }
    }
    @Subscribe
    public void KeyResultEvent(KeyResultEvent e){
        if(!isFinishing()){
            if("0".equals(e.getResult())){
                //成功
                if("0".equals(flag)){
                    //钥匙拿走了
                    //doRegister(5,null);
                }else {
                    //钥匙放入了
                }
            }else {
                //失败
            }
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacksAndMessages(null);
        handler = null;
    }
}