weimingfei
14 小时以前 8ff90d87687b6d38158809aae776b6c709d7b60a
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetActivity.java
@@ -1,10 +1,13 @@
package com.doumee.keyCabinet.ui.keyCabinet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
@@ -14,6 +17,7 @@
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.ManageKeyCabinetBean;
@@ -27,16 +31,19 @@
import com.doumee.keyCabinet.event.KeyResultEvent;
import com.doumee.keyCabinet.event.ManageOpenGridResultEvent;
import com.doumee.keyCabinet.event.OpenAllGridEvent;
import com.doumee.keyCabinet.event.OpenErrEvent;
import com.doumee.keyCabinet.event.OpenGridEvent;
import com.doumee.keyCabinet.event.OpenGridListEvent;
import com.doumee.keyCabinet.event.OpenGridOneResultEvent;
import com.doumee.keyCabinet.event.TimeClockEvent;
import com.doumee.keyCabinet.ui.keyCabinet.adapter.ManageCabinetRcvAdapter;
import com.doumee.keyCabinet.utils.MCUtils;
import com.doumee.keyCabinet.utils.i485.SportUtils;
import com.doumee.lib_coremodel.bean.event.ActionEventData;
import com.doumee.lib_coremodel.util.RecyclerHelp;
import com.doumee.lib_coremodel.util.StringUtil;
import com.example.datalibrary.db.DBManager;
import com.mc.enjoysdk.McSystemUi;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -100,6 +107,15 @@
            }
        });
        getVM().getCabinetDetail();
        getDB().tvTitle.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                //可以下拉
                McSystemUi mcSystemUi = McSystemUi.getInstance(ManageCabinetActivity.this);
                MCUtils.show(mcSystemUi);
                return true;
            }
        });
    }
    private void updateBtnStatus(){
@@ -168,11 +184,6 @@
            CabinetGridDo[] upList = new CabinetGridDo[updateList.size()];
            for(int i=0;i<updateList.size();i++){
                upList[i] = updateList.get(i);
            }
            //todo 去掉
            CabinetGridDo gridDo = oldMap.get("0101");
            if(gridDo!=null){
                EventBus.getDefault().post(new HttpEvent(StringUtil.DateToStrSS(new Date())+"=================>更新数据当前钥匙2:"+gridDo.getCurKeyCode()));
            }
            DaoManager.getCabinetGridDao().update(upList);
@@ -344,7 +355,7 @@
        }
        if(isShowOpenTip){
            if(openTipDownCount==0){
                doRegister(9,null);
                getVM().doAction(9);
            }else {
                openTipDownCount--;
                getDB().tvClKmClose.setText(openTipDownCount+"s 自动关闭");
@@ -526,15 +537,14 @@
        }
    }
    private String sygKey;
    @Subscribe
    public void OpenGridOneResultEvent(OpenGridOneResultEvent e){
        if(!isFinishing()){
            //开门成功,移除开门
            if(handler.hasMessages(1)){
                handler.removeMessages(1);
            }
            if(e.getIsOpen()==0){
                if(e.getKey().equals(sygKey)){
                    return;
                }
                sygKey = e.getKey();
                //开门失败,重新开门
                EventBus.getDefault().post(new OpenGridEvent(Integer.parseInt(e.getKey().substring(2,4), 16)+"",
                        Integer.parseInt(e.getKey().substring(0,2), 16)+""));
@@ -542,6 +552,8 @@
        }
    }
    private Long keyTime;
    private HashMap<String,String> closeMap = new HashMap<>();
    /**
     * 关门
     * @param e
@@ -549,12 +561,23 @@
    @Subscribe(threadMode= ThreadMode.MAIN)
    public void CloseGridOneResultEvent(CloseGridOneResultEvent e){
        if(!isFinishing()){
            //获取卡号
            EventBus.getDefault().post(new GetKeyStatusEvent());
            if(isShowTip){
                isShowTip = false;
                getDB().clTip.setVisibility(View.GONE); 
            }
            //关门成功,移除开门
            if(handler.hasMessages(1)){
                handler.removeMessages(1);
            }
            //发送查询钥匙号
            EventBus.getDefault().post(new GetKeyStatusEvent());
            keyTime = new Date().getTime()+500;
            if(handler.hasMessages(0)){
                handler.removeMessages(0);
            }
            handler.sendEmptyMessageDelayed(0,1200);
            closeMap.put(e.getKey(),"");
            /*111
            //校验卡号
            CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(e.getKey());
            if(gridDo!=null){
@@ -580,20 +603,51 @@
                        }
                    }
                }
                EventBus.getDefault().post(new HttpEvent(StringUtil.DateToStrSS(new Date())+"门关闭成功==>目标:"+gridDo.getKeyCode()+",当前:"+gridDo.getCurKeyCode()));
                EventBus.getDefault().post(new HttpEvent(StringUtil.DateToStrSS(new Date())+"门关闭成功***************************>目标:"+gridDo.getKeyCode()+",当前:"+gridDo.getCurKeyCode()));
                getVM().closeGrid(gridDo);
            }*/
        }
    }
    @Subscribe(threadMode= ThreadMode.MAIN)
    public void OpenErrEvent(OpenErrEvent e){
        //开门失败
        if(!isFinishing()){
            //开门
            if(handler.hasMessages(1)){
                handler.removeMessages(1);
            }
            EventBus.getDefault().post(new OpenGridEvent(e.getKey()));
            Message msg = Message.obtain();
            msg.what=1;
            msg.obj = e.getKey();
            handler.sendMessageDelayed(msg,1000);
        }
    }
    @Subscribe
    public void KeyResultEvent(KeyResultEvent e){
        if(!isFinishing()){
            //校验时间
            if(keyTime==null){
                return;
            }
            if(keyTime!=null&&keyTime>System.currentTimeMillis()){
                //校验返回时间<命令时间
                return;
            }
            if(handler.hasMessages(0)){
                handler.removeMessages(0);
            }
            HashMap<String,String> copyMap = new HashMap<>();
            copyMap.putAll(closeMap);
            closeMap.clear();
            //校验卡号不对的,直接弹出
            List<CabinetGridDo> gridDos = DaoManager.getCabinetGridDao().loadAll();
            List<String> keys = new ArrayList<>();
            StringBuilder sb = new StringBuilder();
            for(CabinetGridDo gridDo:gridDos){
                boolean isFail = false;
                if(TextUtils.isEmpty(gridDo.getGridKey())){
                    if(!TextUtils.isEmpty(gridDo.getCurKeyCode())&&gridDo.getIsOpen()==0){
                        //未绑定的存放了钥匙
@@ -602,6 +656,7 @@
                            sb.append("、");
                        }
                        sb.append(gridDo.getCabinetName());
                        isFail = true;
                    }
                }else {
                    if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
@@ -612,6 +667,31 @@
                                sb.append("、");
                            }
                            sb.append(gridDo.getCabinetName());
                            isFail = true;
                        }
                    }
                }
                if(!isFail){
                    if(copyMap.containsKey(gridDo.getGridKey())){
                        //关门成功
                        boolean isSend = false;
                        String bh = gridDo.getGridKey().substring(0,2);
                        if("1".equals(e.getType())){
                            //1号板
                            if("01".equals(bh)){
                                isSend = true;
                            }
                        }else if("2".equals(e.getType())){
                            //2号板
                            if("02".equals(bh)){
                                isSend = true;
                            }
                        }else {
                            isSend = true;
                        }
                        if(isSend) {
                            EventBus.getDefault().post(new HttpEvent(StringUtil.DateToStrSS(new Date()) + "门关闭成功***************************>目标:" + gridDo.getKeyCode() + ",当前:" + gridDo.getCurKeyCode()));
                            getVM().closeGrid(gridDo);
                        }
                    }
                }
@@ -625,4 +705,31 @@
            }
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacksAndMessages(null);
        handler = null;
    }
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            switch (msg.what){
                case 0:
                    //重新发送钥匙查询
                    //发送查询钥匙号
                    EventBus.getDefault().post(new GetKeyStatusEvent());
                    handler.sendEmptyMessageDelayed(0,1200);
                    break;
                case 1:
                    EventBus.getDefault().post(new OpenGridEvent((String) msg.obj));
                    handler.sendEmptyMessageDelayed(1,1000);
                    break;
                default:
                    break;
            }
        }
    };
}