From fab8c02a0aa8f941a507bdcb3e4d72deb6eb2242 Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期五, 24 十月 2025 14:53:18 +0800
Subject: [PATCH] 钥匙柜

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetActivity.java |  146 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 118 insertions(+), 28 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetActivity.java
index ef9eb5a..f982e43 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ManageCabinetActivity.java
@@ -20,9 +20,11 @@
 import com.doumee.keyCabinet.dao.CabinetGridDo;
 import com.doumee.keyCabinet.dao.DaoManager;
 import com.doumee.keyCabinet.databinding.ManageCabinetActivityBinding;
+import com.doumee.keyCabinet.event.CloseGridOneResultEvent;
 import com.doumee.keyCabinet.event.HttpEvent;
 import com.doumee.keyCabinet.event.ManageOpenGridResultEvent;
 import com.doumee.keyCabinet.event.OpenAllGridEvent;
+import com.doumee.keyCabinet.event.OpenGridEvent;
 import com.doumee.keyCabinet.event.OpenGridListEvent;
 import com.doumee.keyCabinet.event.TimeClockEvent;
 import com.doumee.keyCabinet.ui.keyCabinet.adapter.ManageCabinetRcvAdapter;
@@ -45,9 +47,12 @@
 @AndroidEntryPoint
 public class ManageCabinetActivity extends MyBaseActivity<ManageCabinetVM, ManageCabinetActivityBinding> {
     private ManageCabinetRcvAdapter adapter;
-    //1寰呭叏寮�锛�2寰呮壒閲忓紑
-    private int status;
-    private boolean isCanCZ = false;
+
+    //鏄惁鍙壒閲忔搷浣�
+    private boolean isCanPL = false;
+    //鍙爣璁帮細鍏ㄥ�熷嚭銆佸叏鏁呴殰
+    private boolean isCanBJ = false;
+    private int keyStatus = -1;
 
     @Override
     public int getLayoutId() {
@@ -64,21 +69,7 @@
         adapter = new ManageCabinetRcvAdapter(this, R.layout.manage_cabinet_rcv_item, new ManageCabinetRcvAdapter.OnItemClick() {
             @Override
             public void onItemClick(ManageKeyCabinetBean item) {
-                List<ManageKeyCabinetBean> datas = adapter.getListData();
-                isCanCZ = false;
-                for(ManageKeyCabinetBean d:datas){
-                    if(d.getIsSelected().get()){
-                        isCanCZ = true;
-                        break;
-                    }
-                }
-                if(isCanCZ){
-                    getDB().tvPlOpen.setBackgroundResource(R.drawable.shape_mb_bt_ok);
-                    getDB().tvBj.setBackgroundResource(R.drawable.shape_mb_bt_ok);
-                }else {
-                    getDB().tvPlOpen.setBackgroundResource(R.drawable.shape_mb_bt_faile);
-                    getDB().tvBj.setBackgroundResource(R.drawable.shape_mb_bt_faile);
-                }
+                updateBtnStatus();
             }
         });
         RecyclerHelp.bindVG(this,getDB().rcvKm,3,30);
@@ -90,6 +81,9 @@
         getVM().getDatasLD().observe(this, new Observer<List<ManageKeyCabinetBean>>() {
             @Override
             public void onChanged(List<ManageKeyCabinetBean> gridInfoBeans) {
+                if(getDB().clCz.getVisibility()==View.VISIBLE){
+                    getDB().clCz.setVisibility(View.GONE);
+                }
                 if(gridInfoBeans.size()>0){
                     adapter.refreshData(gridInfoBeans);
                     getVM().emptyVisibility.set(View.GONE);
@@ -101,6 +95,45 @@
             }
         });
         getVM().getCabinetDetail();
+    }
+
+    private void updateBtnStatus(){
+        List<ManageKeyCabinetBean> datas = adapter.getListData();
+        isCanPL = false;
+        isCanBJ = false;
+        keyStatus = -1;
+        for(ManageKeyCabinetBean d:datas){
+            if(d.getIsSelected().get()){
+                isCanPL = true;
+                if(keyStatus==-1){
+                    keyStatus = getGridStatus(d);
+                }else {
+                    if(keyStatus!=getGridStatus(d)){
+                        //涓嶅悓
+                        keyStatus = -2;
+                    }
+                }
+            }
+        }
+        if(isCanPL){
+            getDB().tvPlOpen.setBackgroundResource(R.drawable.shape_mb_bt_ok);
+        }else {
+            getDB().tvPlOpen.setBackgroundResource(R.drawable.shape_mb_bt_faile);
+        }
+        if(keyStatus==2||keyStatus==4){
+            isCanBJ = true;
+            getDB().tvBj.setBackgroundResource(R.drawable.shape_mb_bt_ok);
+        }else {
+            getDB().tvBj.setBackgroundResource(R.drawable.shape_mb_bt_faile);
+        }
+    }
+
+    private int getGridStatus(ManageKeyCabinetBean grid){
+        if(grid.getWorkingStatus()==1){
+            return 4;
+        }else {
+            return grid.getKeyStatus();
+        }
     }
 
     private void updateDao(List<ManageKeyCabinetBean> beans){
@@ -153,7 +186,6 @@
     }
 
     private List<Integer> bjIds = new ArrayList<>();
-    private boolean isGz = true;
     private boolean isAllOpen = false;
     @Override
     protected void doRegister(int type, ActionEventData data) {
@@ -168,7 +200,6 @@
             case 2:
             {
                 //鍏ㄥ紑
-                status = 1;
                 //鎵归噺寮�闂紝鏍¢獙鏄惁鍙墦寮�
                 List<Integer> ids = new ArrayList<>();
                 List<ManageKeyCabinetBean> datas = adapter.getListData();
@@ -183,7 +214,7 @@
             }
                 break;
             case 3: {
-                if(!isCanCZ){
+                if(!isCanPL){
                     return;
                 }
                 //鎵归噺寮�闂紝鏍¢獙鏄惁鍙墦寮�
@@ -228,34 +259,33 @@
                 }break;
             case 4: {
                 //鏍囪
-                if(!isCanCZ){
+                if(!isCanPL){
                     return;
                 }
                 bjIds.clear();
-                isGz = true;
+
                 List<ManageKeyCabinetBean> datas = adapter.getListData();
                 for (ManageKeyCabinetBean bean : datas) {
                     if (bean.getIsSelected().get()) {
                         bjIds.add(bean.getId());
-                        if(bean.getWorkingStatus()==0){
-                            isGz = false;
-                        }
                     }
                 }
                 if (bjIds.size() == 0) {
                     Toast.makeText(mContext, "璇烽�夋嫨鏌滄牸", Toast.LENGTH_SHORT).show();
                     return;
                 }
-                if(isGz){
+                if(keyStatus==4){
                     //鍏ㄤ负鏁呴殰
                     getDB().tvBjgz.setText("鏍囪涓烘甯�");
                     getDB().tvBjgz.setTextColor(0xff279BAA);
                     getDB().tvBjgz.setBackgroundResource(R.drawable.shape_mb_cz_2_bg);
+                    getDB().tvBy.setVisibility(View.GONE);
                 }else {
                     //鏍囪鏁呴殰
                     getDB().tvBjgz.setText("鏍囪涓烘晠闅�");
                     getDB().tvBjgz.setTextColor(0xffFF3600);
                     getDB().tvBjgz.setBackgroundResource(R.drawable.shape_mb_cz_1_bg);
+                    getDB().tvBy.setVisibility(View.VISIBLE);
                 }
                 getDB().clCz.setVisibility(View.VISIBLE);
                 }break;
@@ -267,7 +297,7 @@
                 getVM().markRepair(bjIds);
                 break;
             case 7:
-                if(isGz) {
+                if(keyStatus==4) {
                     //姝e父
                     getVM().cancelFault(bjIds);
                 }else {
@@ -276,6 +306,7 @@
                 }
                 break;
             case 9: {
+                updateBtnStatus();
                 if(isShowOpenTip==true) {
                     //娓呯┖寮�闂ㄦ彁閱�
                     isShowOpenTip = false;
@@ -284,6 +315,9 @@
                     getDB().clKmTip.setVisibility(View.GONE);
                 }
                 }break;
+            case 11:
+                updateBtnStatus();
+                break;
             default:
                 break;
         }
@@ -370,6 +404,17 @@
         return styledText;
     }
 
+    private void showKeyErrTip(CabinetGridDo gridDo){
+        getDB().imgClKm1.setImageResource(R.mipmap.ic_jjfail);
+        getDB().tvClKm1.setText("璇嗗埆澶辫触");
+        getDB().tvClKm2.setText(getTipText2("閽ュ寵鏌�",gridDo.getCabinetName(),"璇嗗埆澶辫触"), TextView.BufferType.SPANNABLE);
+        getDB().tvClKmClose.setText("閲嶆柊瀛樻斁");
+        getDB().tvClKmClose.setTextColor(0xffffffff);
+        getDB().tvClKmClose.setBackgroundResource(R.drawable.shape_mb_bt_ok);
+        isShowOpenTip = false;
+        getDB().clKmTip.setVisibility(View.VISIBLE);
+    }
+
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         if(keyCode == KeyEvent.KEYCODE_BACK){
@@ -380,6 +425,10 @@
         return super.onKeyDown(keyCode, event);
     }
 
+    /**
+     * 寮�闂ㄨ繑鍥�
+     * @param e
+     */
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void ManageOpenGridResultEvent(ManageOpenGridResultEvent e){
         if(!isFinishing()){
@@ -397,6 +446,10 @@
                 }
             }
             if(waitOpenMap.size()==0){
+                if(getDB().clKmTip.getVisibility()==View.VISIBLE){
+                    //宸插脊鍑哄氨涓嶆彁绀轰簡
+                    return;
+                }
                 EventBus.getDefault().post(new HttpEvent("鍏ㄩ儴鎵撳紑浜�:"+waitOpenMap.size()));
                 //鎵撳紑鎴愬姛
                 if(isAllOpen){
@@ -464,4 +517,41 @@
             waitOpenMap.clear();
         }
     }
+
+    /**
+     * 鍏抽棬
+     * @param e
+     */
+    @Subscribe(threadMode= ThreadMode.MAIN)
+    public void CloseGridOneResultEvent(CloseGridOneResultEvent e){
+        if(!isFinishing()){
+            //鏍¢獙鍗″彿
+            CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(e.getKey());
+            if(gridDo!=null){
+                //鏍¢獙閽ュ寵鏄惁鍖归厤
+                if(gridDo.getGridKey()==null){
+                    if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
+                        //鏈粦瀹氱殑瀛樻斁浜嗛挜鍖�
+                        showKeyErrTip(gridDo);
+                        //寮�闂�
+                        EventBus.getDefault().post(new OpenGridEvent(Integer.parseInt(e.getKey().substring(2,4), 16)+"",
+                                Integer.parseInt(e.getKey().substring(0,2), 16)+""));
+                        return;
+                    }
+                }else {
+                    if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
+                        if(!gridDo.getCurKeyCode().equals(gridDo.getKeyCode())){
+                            //閽ュ寵涓嶅尮閰�
+                            showKeyErrTip(gridDo);
+                            //寮�闂�
+                            EventBus.getDefault().post(new OpenGridEvent(Integer.parseInt(e.getKey().substring(2,4), 16)+"",
+                                    Integer.parseInt(e.getKey().substring(0,2), 16)+""));
+                            return;
+                        }
+                    }
+                }
+                getVM().closeGrid(gridDo);
+            }
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3