|  |  | 
 |  |  | 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; | 
 |  |  | 
 |  |  | @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() { | 
 |  |  | 
 |  |  |         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); | 
 |  |  | 
 |  |  |         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); | 
 |  |  | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |         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){ | 
 |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private List<Integer> bjIds = new ArrayList<>(); | 
 |  |  |     private boolean isGz = true; | 
 |  |  |     private boolean isAllOpen = false; | 
 |  |  |     @Override | 
 |  |  |     protected void doRegister(int type, ActionEventData data) { | 
 |  |  | 
 |  |  |             case 2: | 
 |  |  |             { | 
 |  |  |                 //全开 | 
 |  |  |                 status = 1; | 
 |  |  |                 //批量开门,校验是否可打开 | 
 |  |  |                 List<Integer> ids = new ArrayList<>(); | 
 |  |  |                 List<ManageKeyCabinetBean> datas = adapter.getListData(); | 
 |  |  | 
 |  |  |             } | 
 |  |  |                 break; | 
 |  |  |             case 3: { | 
 |  |  |                 if(!isCanCZ){ | 
 |  |  |                 if(!isCanPL){ | 
 |  |  |                     return; | 
 |  |  |                 } | 
 |  |  |                 //批量开门,校验是否可打开 | 
 |  |  | 
 |  |  |                 }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; | 
 |  |  | 
 |  |  |                 getVM().markRepair(bjIds); | 
 |  |  |                 break; | 
 |  |  |             case 7: | 
 |  |  |                 if(isGz) { | 
 |  |  |                 if(keyStatus==4) { | 
 |  |  |                     //正常 | 
 |  |  |                     getVM().cancelFault(bjIds); | 
 |  |  |                 }else { | 
 |  |  | 
 |  |  |                 } | 
 |  |  |                 break; | 
 |  |  |             case 9: { | 
 |  |  |                 updateBtnStatus(); | 
 |  |  |                 if(isShowOpenTip==true) { | 
 |  |  |                     //清空开门提醒 | 
 |  |  |                     isShowOpenTip = false; | 
 |  |  | 
 |  |  |                     getDB().clKmTip.setVisibility(View.GONE); | 
 |  |  |                 } | 
 |  |  |                 }break; | 
 |  |  |             case 11: | 
 |  |  |                 updateBtnStatus(); | 
 |  |  |                 break; | 
 |  |  |             default: | 
 |  |  |                 break; | 
 |  |  |         } | 
 |  |  | 
 |  |  |         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){ | 
 |  |  | 
 |  |  |         return super.onKeyDown(keyCode, event); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 开门返回 | 
 |  |  |      * @param e | 
 |  |  |      */ | 
 |  |  |     @Subscribe(threadMode = ThreadMode.MAIN) | 
 |  |  |     public void ManageOpenGridResultEvent(ManageOpenGridResultEvent e){ | 
 |  |  |         if(!isFinishing()){ | 
 |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if(waitOpenMap.size()==0){ | 
 |  |  |                 if(getDB().clKmTip.getVisibility()==View.VISIBLE){ | 
 |  |  |                     //已弹出就不提示了 | 
 |  |  |                     return; | 
 |  |  |                 } | 
 |  |  |                 EventBus.getDefault().post(new HttpEvent("全部打开了:"+waitOpenMap.size())); | 
 |  |  |                 //打开成功 | 
 |  |  |                 if(isAllOpen){ | 
 |  |  | 
 |  |  |             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); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |