From 81e258e6aa59dafce998b4f41b1271a9f5c9aff5 Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期四, 30 十月 2025 20:07:26 +0800
Subject: [PATCH] 钥匙柜

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java |  241 +++++++++++++++++++++++++++++++----------------
 1 files changed, 158 insertions(+), 83 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java
index 44934c8..77415dc 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java
@@ -25,13 +25,17 @@
 import com.doumee.keyCabinet.event.CloseGridOneResultEvent;
 import com.doumee.keyCabinet.event.KeyResultEvent;
 import com.doumee.keyCabinet.event.GetKeyStatusEvent;
+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.ui.keyCabinet.adapter.CabinetRcvAdapter;
 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.doumee.lib_coremodel.view.ToastView;
+import com.example.datalibrary.utils.ToastUtils;
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
@@ -55,32 +59,7 @@
     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;
-            }
-        }
-    };
+    private boolean isChose;
 
     @Override
     public int getLayoutId() {
@@ -96,6 +75,9 @@
         adapter = new CabinetRcvAdapter(this, R.layout.cabinet_rcv_item, new CabinetRcvAdapter.OnItemClick() {
             @Override
             public void onItemClick(KeyCabinetBean item) {
+                if(isChose){
+                    return;
+                }
                 selectBean = item;
             }
         });
@@ -132,7 +114,6 @@
         for(CabinetGridDo d:gridDos){
             oldMap.put(d.getGridKey(),d);
         }
-        List<CabinetGridDo> addList = new ArrayList<>();
         List<CabinetGridDo> updateList = new ArrayList<>();
         for(KeyCabinetBean bean:beans){
             String key = SportUtils.intToHex(Integer.parseInt(bean.getBoardCode()))+SportUtils.intToHex(Integer.parseInt(bean.getChannelCode()));
@@ -148,23 +129,7 @@
                 gridDo.setKeyStatus(bean.getKeyStatus());
                 gridDo.setWorkingStatus(bean.getWorkingStatus());
                 updateList.add(gridDo);
-            }else {
-                //鏂板
-                CabinetGridDo gridDo = new CabinetGridDo();
-                gridDo.setGridId(bean.getId());
-                gridDo.setCabinetName(bean.getCode());
-                gridDo.setGridKey(key);
-                gridDo.setKeyCode(bean.getKeyCode());
-                gridDo.setBindStatus(bean.getBindStatus());
-                gridDo.setGridStatus(bean.getStatus());
-                gridDo.setKeyStatus(bean.getKeyStatus());
-                gridDo.setWorkingStatus(bean.getWorkingStatus());
-                gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
-                addList.add(gridDo);
             }
-        }
-        if(addList.size()>0){
-            DaoManager.getCabinetGridDao().insert(addList);
         }
         if(updateList.size()>0){
             CabinetGridDo[] upList = new CabinetGridDo[updateList.size()];
@@ -191,6 +156,10 @@
                     Toast.makeText(mContext, "璇烽�夋嫨鏌滈棬", Toast.LENGTH_SHORT).show();
                     return;
                 }
+                if(isChose){
+                    return;
+                }
+                isChose = true;
                 if(isOpening){
                     return;
                 }
@@ -203,6 +172,7 @@
                 getDB().clTip1.setVisibility(View.GONE);
                 if(status==0) {
                     //閲嶆柊寮�闂�
+                    openTime = StringUtil.DateToStr(new Date());
                     EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode()));
                 }
                 downTime = 60;
@@ -222,7 +192,7 @@
                 isOpening = false;
                 //寮�鍚垚鍔�
                 status=1;
-                if("0".equals(flag)) {
+                if(flag==0) {
                     getDB().imgTip2.setImageResource(R.mipmap.ic_notclose_key);
                     getDB().tvTip22.setText("璇烽鍙栭挜鍖欏悗鍏抽棴鏌滈棬");
                 }else {
@@ -232,9 +202,7 @@
                 getDB().tvTip21.setText(getTipText(selectBean.getCode(),"鏌滈棬鎵撳紑鎴愬姛"), TextView.BufferType.SPANNABLE);
                 getDB().clTip1.setVisibility(View.GONE);
                 getDB().clTip2.setVisibility(View.VISIBLE);
-                EventBus.getDefault().post(new GetKeyStatusEvent());
                 ysDownCount = 8;
-                handler.sendEmptyMessageDelayed(0,1000);
                 break;
             case 7:
                 //鎻愰啋鍏虫煖闂�
@@ -312,7 +280,7 @@
     }
 
     private SpannableString getErrPhoneText(){
-        String phone = "15899098765";
+        String phone = MApplication.getConfigBean().getLinkPhone();
         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);
@@ -325,34 +293,6 @@
             getDB().tvKm.setBackgroundResource(R.drawable.shape_r25_blue_bg);
         }else {
             getDB().tvKm.setBackgroundResource(R.drawable.shape_mb_bt_faile);
-        }
-    }
-
-    @Subscribe(threadMode= ThreadMode.MAIN)
-    public void KeyResultEvent(KeyResultEvent e){
-        if(!isFinishing()){
-            //閽ュ寵鍙樻洿浜�
-            if(selectBean!=null) {
-                String key = SportUtils.intToHex(Integer.parseInt(selectBean.getBoardCode()))
-                        + SportUtils.intToHex(Integer.parseInt(selectBean.getChannelCode()));
-                //鏌ヨ鏌滄牸
-                CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
-                if (gridDo != null) {
-                    if(flag==0){
-                        //鍙�
-                        if(TextUtils.isEmpty(gridDo.getKeyCode())){
-                            //绌轰簡
-                            doRegister(7,null);
-                        }
-                    }else {
-                        //杩�
-                        if(!TextUtils.isEmpty(gridDo.getKeyCode())){
-                            //鏈夐挜鍖欎簡
-                            doRegister(7,null);
-                        }
-                    }
-                }
-            }
         }
     }
 
@@ -370,6 +310,10 @@
             if(selectBean!=null){
                 String key = SportUtils.intToHex(Integer.parseInt(selectBean.getBoardCode()))
                         +SportUtils.intToHex(Integer.parseInt(selectBean.getChannelCode()));
+                //寮�闂ㄦ垚鍔燂紝绉婚櫎寮�闂�
+                if(handler.hasMessages(1)){
+                    handler.removeMessages(1);
+                }
                 if(key.equals(e.getKey())) {
                     if (e.getIsOpen()==1) {
                         //寮�闂ㄦ垚鍔�
@@ -377,7 +321,6 @@
                             return;
                         }
                         isOpened = true;
-                        openTime = StringUtil.DateToStr(new Date());
                         Toast.makeText(mContext, "鎿嶄綔4", Toast.LENGTH_LONG).show();
                         doRegister(4, null);
                     } else {
@@ -404,11 +347,23 @@
         }
     }
 
+    private Long keyTime;
     private boolean isOpened = false;
     @Subscribe(threadMode= ThreadMode.MAIN)
     public void CloseGridOneResultEvent(CloseGridOneResultEvent e){
         if(!isFinishing()){
-            if(selectBean!=null){
+            //鍏抽棬鎴愬姛锛岀Щ闄ゅ紑闂�
+            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);
+            /*if(selectBean!=null){
                 String key = SportUtils.intToHex(Integer.parseInt(selectBean.getBoardCode()))
                         +SportUtils.intToHex(Integer.parseInt(selectBean.getChannelCode()));
                 if(key.equals(e.getKey())) {
@@ -434,7 +389,7 @@
                                         getVM().closeGrid(gridDo);
                                     }else {
                                         //閽ュ寵涓嶅尮閰�
-                                        Toast.makeText(mContext, "鎿嶄綔10", Toast.LENGTH_LONG).show();
+                                        //Toast.makeText(mContext, "鎿嶄綔10", Toast.LENGTH_LONG).show();
                                         doRegister(10,null);
                                         EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode()));
                                     }
@@ -444,11 +399,8 @@
                                     doRegister(5, null);
                                     getVM().closeGrid(gridDo);
                                 }
-                                if (handler.hasMessages(0)) {
-                                    handler.removeMessages(0);
-                                }
                             }else {
-                                Toast.makeText(mContext, "鏈煡璇㈠埌", Toast.LENGTH_LONG).show();
+                                ToastView.show(MApplication.mContext, "鏈煡璇㈠埌瑙勬牸淇℃伅");
                             }
                         } else {
                             //鍏抽棬澶辫触
@@ -484,14 +436,137 @@
                                     getVM().closeGrid(gridDo);
                                 }
                             }else {
-                                Toast.makeText(mContext, "鏈煡璇㈠埌", Toast.LENGTH_LONG).show();
+                                ToastView.show(MApplication.mContext, "鏈煡璇㈠埌瑙勬牸淇℃伅");
                             }
                         } else {
                             //鍏抽棬澶辫触
                         }
                     }
                 }
+            }*/
+        }
+    }
+
+    @Subscribe(threadMode= ThreadMode.MAIN)
+    public void OpenErrEvent(OpenErrEvent e){
+        //寮�闂ㄥけ璐�
+        if(!isFinishing()){
+            //寮�闂�
+            if(handler.hasMessages(1)){
+                handler.removeMessages(1);
+            }
+            EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode()));
+            handler.sendEmptyMessageDelayed(1,1000);
+        }
+    }
+
+    @Subscribe(threadMode= ThreadMode.MAIN)
+    public void KeyResultEvent(KeyResultEvent e){
+        if(!isFinishing()){
+            if(selectBean!=null){
+                //鏍¢獙鏃堕棿
+                if(keyTime==null){
+                    return;
+                }
+                if(keyTime!=null&&keyTime>System.currentTimeMillis()){
+                    //鏍¢獙杩斿洖鏃堕棿<鍛戒护鏃堕棿
+                    return;
+                }
+                if(handler.hasMessages(0)){
+                    handler.removeMessages(0);
+                }
+                String key = SportUtils.intToHex(Integer.parseInt(selectBean.getBoardCode()))
+                        +SportUtils.intToHex(Integer.parseInt(selectBean.getChannelCode()));
+                if(flag==0) {
+                    //棰嗗彇
+                    //鏌ヨ閽ュ寵鍙�
+                    CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
+                    if (gridDo != null) {
+                        if (gridDo.getIsOpen() == 0) {
+                            //鍏抽棬鎴愬姛
+                            if (!TextUtils.isEmpty(gridDo.getCurKeyCode())) {
+                                if (gridDo.getCurKeyCode().equals(selectBean.getKeyCode())) {
+                                    //棰嗗彇澶辫触
+                                    isOpened = false;
+                                    doRegister(6, null);
+                                    getVM().closeGrid(gridDo);
+                                }else {
+                                    //閽ュ寵涓嶅尮閰�
+                                    //Toast.makeText(mContext, "鎿嶄綔10", Toast.LENGTH_LONG).show();
+                                    doRegister(10,null);
+                                    EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode()));
+                                }
+                            } else {
+                                //閽ュ寵鎷胯蛋浜�
+                                isOpened = false;
+                                doRegister(5, null);
+                                getVM().closeGrid(gridDo);
+                            }
+                        }else {
+                            //娌″叧闂�
+                            if(TextUtils.isEmpty(gridDo.getCurKeyCode())){
+                                //绌轰簡
+                                doRegister(7,null);
+                            }
+                        }
+                    }else {
+                        ToastView.show(MApplication.mContext, "鏈煡璇㈠埌瑙勬牸淇℃伅");
+                    }
+                }else {
+                    //褰掕繕
+                    CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
+                    if (gridDo != null) {
+                        if (gridDo.getIsOpen() == 0) {
+                            //鍏抽棬鎴愬姛
+                            if (!TextUtils.isEmpty(gridDo.getCurKeyCode())) {
+                                if (gridDo.getCurKeyCode().equals(selectBean.getKeyCode())) {
+                                    //鐩稿悓褰掕繕鎴愬姛
+                                    isOpened = false;
+                                    doRegister(8, null);
+                                    getVM().closeGrid(gridDo);
+                                }else {
+                                    //閽ュ寵涓嶅尮閰�
+                                    doRegister(10,null);
+                                    EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode()));
+                                }
+                            } else {
+                                //閽ュ寵鏈綊杩�
+                                isOpened = false;
+                                doRegister(9, null);
+                                getVM().closeGrid(gridDo);
+                            }
+                        }else {
+                            //娌″叧闂�
+                            if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
+                                //鏈夐挜鍖欎簡
+                                doRegister(7,null);
+                            }
+                        }
+                    } else {
+                        ToastView.show(MApplication.mContext, "鏈煡璇㈠埌瑙勬牸淇℃伅");
+                    }
+                }
             }
         }
     }
+
+    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(selectBean.getChannelCode(), selectBean.getBoardCode()));
+                    handler.sendEmptyMessageDelayed(1,1000);
+                    break;
+                default:
+                    break;
+            }
+        }
+    };
 }
\ No newline at end of file

--
Gitblit v1.9.3