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/ManageCabinetActivity.java | 221 ++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 193 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 f982e43..3ffcd14 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
@@ -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,24 +17,32 @@
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;
import com.doumee.keyCabinet.dao.CabinetGridDo;
import com.doumee.keyCabinet.dao.DaoManager;
import com.doumee.keyCabinet.databinding.ManageCabinetActivityBinding;
+import com.doumee.keyCabinet.event.CheckGridStatusEvent;
import com.doumee.keyCabinet.event.CloseGridOneResultEvent;
+import com.doumee.keyCabinet.event.GetKeyStatusEvent;
import com.doumee.keyCabinet.event.HttpEvent;
+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.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.innohi.YNHAPI;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -95,6 +106,15 @@
}
});
getVM().getCabinetDetail();
+ getDB().tvTitle.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ //鍙互涓嬫媺
+ YNHAPI mAPI = YNHAPI.getInstance();
+ mAPI.setNavigationBarVisibility(YNHAPI.NavigationBarVisibility.VISIBLE);
+ return true;
+ }
+ });
}
private void updateBtnStatus(){
@@ -105,6 +125,7 @@
for(ManageKeyCabinetBean d:datas){
if(d.getIsSelected().get()){
isCanPL = true;
+ isCanBJ = true;
if(keyStatus==-1){
keyStatus = getGridStatus(d);
}else {
@@ -120,8 +141,7 @@
}else {
getDB().tvPlOpen.setBackgroundResource(R.drawable.shape_mb_bt_faile);
}
- if(keyStatus==2||keyStatus==4){
- isCanBJ = true;
+ if(isCanBJ){
getDB().tvBj.setBackgroundResource(R.drawable.shape_mb_bt_ok);
}else {
getDB().tvBj.setBackgroundResource(R.drawable.shape_mb_bt_faile);
@@ -142,7 +162,6 @@
for(CabinetGridDo d:gridDos){
oldMap.put(d.getGridKey(),d);
}
- List<CabinetGridDo> addList = new ArrayList<>();
List<CabinetGridDo> updateList = new ArrayList<>();
for(ManageKeyCabinetBean bean:beans){
String key = SportUtils.intToHex(Integer.parseInt(bean.getBoardCode()))+SportUtils.intToHex(Integer.parseInt(bean.getChannelCode()));
@@ -158,29 +177,19 @@
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()];
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);
}
}
@@ -240,6 +249,7 @@
SportUtils.intToHex(Integer.parseInt(bean.getChannelCode()));
waitOpenMap.put(key,bean.getCode());
}
+ waitResultCount = 2;
EventBus.getDefault().post(new OpenAllGridEvent());
}break;
case 10: {
@@ -255,11 +265,12 @@
keys.add(key);
}
}
+ waitResultCount = keys.size();
EventBus.getDefault().post(new OpenGridListEvent(keys));
}break;
case 4: {
//鏍囪
- if(!isCanPL){
+ if(!isCanBJ){
return;
}
bjIds.clear();
@@ -285,7 +296,12 @@
getDB().tvBjgz.setText("鏍囪涓烘晠闅�");
getDB().tvBjgz.setTextColor(0xffFF3600);
getDB().tvBjgz.setBackgroundResource(R.drawable.shape_mb_cz_1_bg);
- getDB().tvBy.setVisibility(View.VISIBLE);
+ if(keyStatus==2) {
+ //0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭 3缁翠慨淇濆吇
+ getDB().tvBy.setVisibility(View.VISIBLE);
+ }else {
+ getDB().tvBy.setVisibility(View.GONE);
+ }
}
getDB().clCz.setVisibility(View.VISIBLE);
}break;
@@ -336,7 +352,6 @@
if(tipDownCount==0){
isShowTip = false;
getDB().clTip.setVisibility(View.GONE);
- finish();
}else {
tipDownCount--;
getDB().tvDjs.setText(tipDownCount+"s");
@@ -404,10 +419,10 @@
return styledText;
}
- private void showKeyErrTip(CabinetGridDo gridDo){
+ private void showKeyErrTip(String name){
getDB().imgClKm1.setImageResource(R.mipmap.ic_jjfail);
getDB().tvClKm1.setText("璇嗗埆澶辫触");
- getDB().tvClKm2.setText(getTipText2("閽ュ寵鏌�",gridDo.getCabinetName(),"璇嗗埆澶辫触"), TextView.BufferType.SPANNABLE);
+ getDB().tvClKm2.setText(getTipText2("閽ュ寵鏌�",name,"璇嗗埆澶辫触"), TextView.BufferType.SPANNABLE);
getDB().tvClKmClose.setText("閲嶆柊瀛樻斁");
getDB().tvClKmClose.setTextColor(0xffffffff);
getDB().tvClKmClose.setBackgroundResource(R.drawable.shape_mb_bt_ok);
@@ -425,6 +440,7 @@
return super.onKeyDown(keyCode, event);
}
+ private int waitResultCount = 0;
/**
* 寮�闂ㄨ繑鍥�
* @param e
@@ -432,6 +448,13 @@
@Subscribe(threadMode = ThreadMode.MAIN)
public void ManageOpenGridResultEvent(ManageOpenGridResultEvent e){
if(!isFinishing()){
+ if(waitResultCount>0){
+ waitResultCount--;
+ }
+ if(waitResultCount>0){
+ return;
+ }
+ EventBus.getDefault().post(new CheckGridStatusEvent());
//鏍¢獙鏄惁宸插叏寮�
List<CabinetGridDo> gridDos = DaoManager.getCabinetGridDao().loadAll();
List<String> msgList = new ArrayList<>();
@@ -518,6 +541,23 @@
}
}
+ @Subscribe
+ public void OpenGridOneResultEvent(OpenGridOneResultEvent e){
+ if(!isFinishing()){
+ //寮�闂ㄦ垚鍔燂紝绉婚櫎寮�闂�
+ if(handler.hasMessages(1)){
+ handler.removeMessages(1);
+ }
+ if(e.getIsOpen()==0){
+ //寮�闂ㄥけ璐�,閲嶆柊寮�闂�
+ EventBus.getDefault().post(new OpenGridEvent(Integer.parseInt(e.getKey().substring(2,4), 16)+"",
+ Integer.parseInt(e.getKey().substring(0,2), 16)+""));
+ }
+ }
+ }
+
+ private Long keyTime;
+ private HashMap<String,String> closeMap = new HashMap<>();
/**
* 鍏抽棬
* @param e
@@ -525,14 +565,30 @@
@Subscribe(threadMode= ThreadMode.MAIN)
public void CloseGridOneResultEvent(CloseGridOneResultEvent e){
if(!isFinishing()){
+ 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){
- //鏍¢獙閽ュ寵鏄惁鍖归厤
- if(gridDo.getGridKey()==null){
+ if(TextUtils.isEmpty(gridDo.getGridKey())){
if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
//鏈粦瀹氱殑瀛樻斁浜嗛挜鍖�
- showKeyErrTip(gridDo);
+ showKeyErrTip(gridDo.getCabinetName()+"-"+gridDo.getCurKeyCode());
//寮�闂�
EventBus.getDefault().post(new OpenGridEvent(Integer.parseInt(e.getKey().substring(2,4), 16)+"",
Integer.parseInt(e.getKey().substring(0,2), 16)+""));
@@ -542,7 +598,8 @@
if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
if(!gridDo.getCurKeyCode().equals(gridDo.getKeyCode())){
//閽ュ寵涓嶅尮閰�
- showKeyErrTip(gridDo);
+ showKeyErrTip(gridDo.getCabinetName()+"-"+gridDo.getCurKeyCode());
+ EventBus.getDefault().post(new HttpEvent(StringUtil.DateToStrSS(new Date())+"閽ュ寵涓嶅尮閰�==>鐩爣锛�"+gridDo.getKeyCode()+",褰撳墠锛�"+gridDo.getCurKeyCode()));
//寮�闂�
EventBus.getDefault().post(new OpenGridEvent(Integer.parseInt(e.getKey().substring(2,4), 16)+"",
Integer.parseInt(e.getKey().substring(0,2), 16)+""));
@@ -550,8 +607,116 @@
}
}
}
+ 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){
+ //鏈粦瀹氱殑瀛樻斁浜嗛挜鍖�
+ keys.add(gridDo.getGridKey());
+ if(sb.length()>0){
+ sb.append("銆�");
+ }
+ sb.append(gridDo.getCabinetName());
+ isFail = true;
+ }
+ }else {
+ if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
+ if(!gridDo.getCurKeyCode().equals(gridDo.getKeyCode())&&gridDo.getIsOpen()==0){
+ //閽ュ寵涓嶅尮閰�
+ keys.add(gridDo.getGridKey());
+ if(sb.length()>0){
+ sb.append("銆�");
+ }
+ sb.append(gridDo.getCabinetName());
+ isFail = true;
+ }
+ }
+ }
+ if(!isFail){
+ if(copyMap.containsKey(gridDo.getGridKey())){
+ //鍏抽棬鎴愬姛
+ EventBus.getDefault().post(new HttpEvent(StringUtil.DateToStrSS(new Date())+"闂ㄥ叧闂垚鍔�***************************>鐩爣锛�"+gridDo.getKeyCode()+",褰撳墠锛�"+gridDo.getCurKeyCode()));
+ getVM().closeGrid(gridDo);
+ }
+ }
+ }
+ if(sb.length()>0){
+ showKeyErrTip(sb.toString());
+ }
+ if(keys.size()>0){
+ //寮�闂�
+ EventBus.getDefault().post(new OpenGridListEvent(keys));
}
}
}
+
+ @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;
+ }
+ }
+ };
}
\ No newline at end of file
--
Gitblit v1.9.3