| | |
| | | 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() { |
| | |
| | | |
| | | @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); |
| | |
| | | |
| | | @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; |
| | | } |
| | | } |