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() {
|
return R.layout.key_cabinet_activity;
|
}
|
|
@Override
|
public void initView(@Nullable Bundle savedInstanceState) {
|
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);
|
getDB().rcvKm.setAdapter(adapter);
|
}
|
|
@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;
|
}
|
}
|