From c7376f8d1091b70597ba4430a281496b585b386e Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期四, 23 十月 2025 21:58:26 +0800
Subject: [PATCH] 钥匙柜
---
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/KeyCabinetActivity.java | 294 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 253 insertions(+), 41 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 03b6978..44934c8 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
@@ -2,7 +2,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import android.os.Bundle;
@@ -10,6 +9,7 @@
import android.os.Message;
import android.text.SpannableString;
import android.text.Spanned;
+import android.text.TextUtils;
import android.text.style.TextAppearanceSpan;
import android.view.View;
import android.widget.TextView;
@@ -19,23 +19,28 @@
import com.doumee.keyCabinet.R;
import com.doumee.keyCabinet.base.MyBaseActivity;
import com.doumee.keyCabinet.bean.KeyCabinetBean;
+import com.doumee.keyCabinet.dao.CabinetGridDo;
+import com.doumee.keyCabinet.dao.DaoManager;
import com.doumee.keyCabinet.databinding.KeyCabinetActivityBinding;
-import com.doumee.keyCabinet.event.KeyDoorEvent;
+import com.doumee.keyCabinet.event.CloseGridOneResultEvent;
import com.doumee.keyCabinet.event.KeyResultEvent;
-import com.doumee.keyCabinet.event.KeyStatusListener;
+import com.doumee.keyCabinet.event.GetKeyStatusEvent;
import com.doumee.keyCabinet.event.OpenGridEvent;
-import com.doumee.keyCabinet.ui.face.adapter.ErrRcvAdapter;
+import com.doumee.keyCabinet.event.OpenGridOneResultEvent;
import com.doumee.keyCabinet.ui.keyCabinet.adapter.CabinetRcvAdapter;
-import com.doumee.lib_coremodel.base.BaseActivity;
+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.SpUtil;
+import com.doumee.lib_coremodel.util.StringUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
import java.util.List;
-import java.util.Random;
import dagger.hilt.android.AndroidEntryPoint;
@@ -55,18 +60,18 @@
public void handleMessage(@NonNull Message msg) {
switch (msg.what){
case 0:
- if (ysDownCount==4) {
+ /*if (ysDownCount==4) {
//棰嗗彇閽ュ寵鍊掕鏃�
doRegister(7,null);
ysDownCount--;
handler.sendEmptyMessageDelayed(0,1000);
}else if (ysDownCount==0) {
//棰嗗彇閽ュ寵鍊掕鏃�
- doRegister(MApplication.nextBoolean()?5:6,null);
+ //doRegister(MApplication.nextBoolean()?5:6,null);
}else {
ysDownCount--;
handler.sendEmptyMessageDelayed(0,1000);
- }
+ }*/
break;
case 1:
@@ -84,6 +89,7 @@
@Override
public void initView(@Nullable Bundle savedInstanceState) {
+ isAddCountTimer = true;
normalConfig();
getDB().setModel(getVM());
flag = MApplication.getLoginBean().getFlag();
@@ -110,6 +116,8 @@
changeBtBg();
adapter.refreshData(beans);
getVM().emptyVisibility.set(View.GONE);
+ //鏇存柊淇℃伅
+ updateDao(beans);
}else {
getVM().emptyVisibility.set(View.VISIBLE);
}
@@ -118,22 +126,78 @@
getVM().getDatas();
}
+ private void updateDao(List<KeyCabinetBean> beans){
+ List<CabinetGridDo> gridDos = DaoManager.getCabinetGridDao().loadAll();
+ HashMap<String,CabinetGridDo> oldMap = new HashMap<>();
+ 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()));
+ if(oldMap.containsKey(key)){
+ //淇敼
+ CabinetGridDo gridDo = oldMap.get(key);
+ gridDo.setGridId(bean.getId());
+ gridDo.setCabinetName(bean.getCode());
+ gridDo.setKeyCode(bean.getKeyCode());
+ gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
+ gridDo.setBindStatus(bean.getBindStatus());
+ gridDo.setGridStatus(bean.getStatus());
+ 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);
+ }
+ DaoManager.getCabinetGridDao().update(upList);
+ }
+ }
+
@Override
protected void timeChange(String djs) {
getDB().tvDjs.setText(djs);
}
+ private boolean isOpening = false;
@Override
protected void doRegister(int type, ActionEventData data) {
+ stopCountTimer();
+ downTime = 30;
switch (type){
case 1:
if(selectBean==null){
Toast.makeText(mContext, "璇烽�夋嫨鏌滈棬", Toast.LENGTH_SHORT).show();
return;
}
+ if(isOpening){
+ return;
+ }
+ isOpening = true;
//寮�鍚煖闂�
getVM().openGridDriver(selectBean);
- EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(),selectBean.getBoardCode()));
+ downTime = 60;
break;
case 2:
getDB().clTip1.setVisibility(View.GONE);
@@ -141,8 +205,10 @@
//閲嶆柊寮�闂�
EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode()));
}
+ downTime = 60;
break;
case 3:
+ isOpening = false;
//寮�鍚け璐�
getDB().btTip.setText("閲嶆柊寮�闂�");
getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
@@ -150,8 +216,10 @@
getDB().tvJg2.setText(getErrPhoneText(),TextView.BufferType.SPANNABLE);
getDB().btTip.setVisibility(View.VISIBLE);
getDB().clTip1.setVisibility(View.VISIBLE);
+ getDB().clTip2.setVisibility(View.GONE);
break;
case 4:
+ isOpening = false;
//寮�鍚垚鍔�
status=1;
if("0".equals(flag)) {
@@ -161,9 +229,10 @@
getDB().imgTip2.setImageResource(R.mipmap.ic_notclose);
getDB().tvTip22.setText("璇峰綊杩橀挜鍖欏悗鍏抽棴鏌滈棬");
}
- getDB().tvTip21.setText(getTipText(selectBean.getCabinetName(),"鏌滈棬鎵撳紑鎴愬姛"), TextView.BufferType.SPANNABLE);
+ getDB().tvTip21.setText(getTipText(selectBean.getCode(),"鏌滈棬鎵撳紑鎴愬姛"), TextView.BufferType.SPANNABLE);
+ getDB().clTip1.setVisibility(View.GONE);
getDB().clTip2.setVisibility(View.VISIBLE);
- EventBus.getDefault().post(new KeyStatusListener(0));
+ EventBus.getDefault().post(new GetKeyStatusEvent());
ysDownCount = 8;
handler.sendEmptyMessageDelayed(0,1000);
break;
@@ -171,18 +240,20 @@
//鎻愰啋鍏虫煖闂�
getDB().imgTip2.setImageResource(R.mipmap.ic_notclose);
getDB().tvTip22.setText("璇峰叧闂煖闂�");
- getDB().tvTip21.setText(getTipText(selectBean.getCabinetName(),"鏌滈棬鏈叧闂�"), TextView.BufferType.SPANNABLE);
+ getDB().tvTip21.setText(getTipText(selectBean.getCode(),"鏌滈棬鏈叧闂�"), TextView.BufferType.SPANNABLE);
getDB().clTip2.setVisibility(View.VISIBLE);
+ getDB().clTip1.setVisibility(View.GONE);
break;
case 5:
//鍏抽棬-閽ュ寵棰嗗彇鎴愬姛
status = 0;
- getDB().clTip2.setVisibility(View.GONE);
getDB().imgJg1.setImageResource(R.mipmap.ic_success);
getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"閽ュ寵棰嗗彇鎴愬姛"), TextView.BufferType.SPANNABLE);
getDB().tvJg2.setText("鏌滈棬宸插叧闂�");
getDB().btTip.setVisibility(View.GONE);
getDB().clTip1.setVisibility(View.VISIBLE);
+ getDB().clTip2.setVisibility(View.GONE);
+ downTime = 10;
break;
case 6:
//鍏抽棬-閽ュ寵棰嗗彇澶辫触
@@ -193,16 +264,27 @@
getDB().tvJg2.setText("鏌滈棬宸插叧闂�");
getDB().btTip.setVisibility(View.VISIBLE);
getDB().clTip1.setVisibility(View.VISIBLE);
+ getDB().clTip2.setVisibility(View.GONE);
+ break;
+ case 10:
+ status = 0;
+ getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
+ getDB().tvJg1.setText("閽ュ寵瀛樻斁浣嶇疆閿欒");
+ getDB().tvJg2.setText(getErrPhoneText(),TextView.BufferType.SPANNABLE);
+ getDB().btTip.setVisibility(View.GONE);
+ getDB().clTip1.setVisibility(View.VISIBLE);
+ getDB().clTip2.setVisibility(View.GONE);
break;
case 8:
//鍏抽棬-閽ュ寵褰掕繕鎴愬姛
status = 0;
- getDB().clTip2.setVisibility(View.GONE);
getDB().imgJg1.setImageResource(R.mipmap.ic_success);
getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"閽ュ寵褰掕繕鎴愬姛"), TextView.BufferType.SPANNABLE);
getDB().tvJg2.setText("鏌滈棬宸插叧闂�");
getDB().btTip.setVisibility(View.GONE);
getDB().clTip1.setVisibility(View.VISIBLE);
+ getDB().clTip2.setVisibility(View.GONE);
+ downTime = 10;
break;
case 9:
//鍏抽棬-閽ュ寵褰掕繕澶辫触
@@ -213,10 +295,12 @@
getDB().tvJg2.setText(getErrPhoneText(), TextView.BufferType.SPANNABLE);
getDB().btTip.setVisibility(View.VISIBLE);
getDB().clTip1.setVisibility(View.VISIBLE);
+ getDB().clTip2.setVisibility(View.GONE);
break;
default:
break;
}
+ initCountTimer();
}
private SpannableString getTipText(String name,String msg){
@@ -244,34 +328,30 @@
}
}
- @Subscribe
- public void KeyDoorEvent(KeyDoorEvent e){
- if(!isFinishing()){
- if("0".equals(e.getResult())){
- //寮�闂ㄦ垚鍔�
- doRegister(4,null);
- }else {
- //澶辫触
- doRegister(3,null);
- }
- }
- }
-
- @Subscribe
+ @Subscribe(threadMode= ThreadMode.MAIN)
public void KeyResultEvent(KeyResultEvent e){
if(!isFinishing()){
- if("0".equals(e.getResult())){
- //鎴愬姛
- if("0".equals(flag)){
- //閽ュ寵鎷胯蛋浜�
- //doRegister(5,null);
- }else {
- //閽ュ寵鏀惧叆浜�
-
+ //閽ュ寵鍙樻洿浜�
+ 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);
+ }
+ }
}
- }else {
- //澶辫触
-
}
}
}
@@ -282,4 +362,136 @@
handler.removeCallbacksAndMessages(null);
handler = null;
}
+
+ private String openTime = "";
+ @Subscribe(threadMode= ThreadMode.MAIN)
+ public void OpenGridOneResultEvent(OpenGridOneResultEvent e){
+ if(!isFinishing()){
+ if(selectBean!=null){
+ String key = SportUtils.intToHex(Integer.parseInt(selectBean.getBoardCode()))
+ +SportUtils.intToHex(Integer.parseInt(selectBean.getChannelCode()));
+ if(key.equals(e.getKey())) {
+ if (e.getIsOpen()==1) {
+ //寮�闂ㄦ垚鍔�
+ if (isOpened) {
+ return;
+ }
+ isOpened = true;
+ openTime = StringUtil.DateToStr(new Date());
+ Toast.makeText(mContext, "鎿嶄綔4", Toast.LENGTH_LONG).show();
+ doRegister(4, null);
+ } else {
+ //澶辫触
+ //濡傛灉鏄挜鍖欎笉瀵圭户缁紑闂�
+ CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
+ if (gridDo != null) {
+ if(gridDo.getUpdateTime().compareTo(openTime)<0){
+ //寮�闂ㄥ墠鏁版嵁锛屼笉鑳戒娇鐢�
+ EventBus.getDefault().post(new GetKeyStatusEvent());
+ return;
+ }
+ if (!gridDo.getCurKeyCode().equals(selectBean.getKeyCode())) {
+ //閽ュ寵涓嶅尮閰�
+ doRegister(10,null);
+ EventBus.getDefault().post(new OpenGridEvent(selectBean.getChannelCode(), selectBean.getBoardCode()));
+ return;
+ }
+ }
+ doRegister(3, null);
+ }
+ }
+ }
+ }
+ }
+
+ private boolean isOpened = false;
+ @Subscribe(threadMode= ThreadMode.MAIN)
+ public void CloseGridOneResultEvent(CloseGridOneResultEvent e){
+ if(!isFinishing()){
+ if(selectBean!=null){
+ String key = SportUtils.intToHex(Integer.parseInt(selectBean.getBoardCode()))
+ +SportUtils.intToHex(Integer.parseInt(selectBean.getChannelCode()));
+ if(key.equals(e.getKey())) {
+ stopCountTimer();
+ if(flag==0) {
+ //棰嗗彇
+ if (e.getIsOpen() == 0) {
+ //鍏抽棬鎴愬姛
+ //鏌ヨ閽ュ寵鍙�
+ CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
+ if (gridDo != null) {
+ if(gridDo.getUpdateTime().compareTo(openTime)<0){
+ //寮�闂ㄥ墠鏁版嵁锛屼笉鑳戒娇鐢�
+ EventBus.getDefault().post(new GetKeyStatusEvent());
+ return;
+ }
+ //Toast.makeText(mContext, "1:"+gridDo.getKeyCode()+"锛�2:"+selectBean.getKeyCode(), Toast.LENGTH_LONG).show();
+ 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);
+ }
+ if (handler.hasMessages(0)) {
+ handler.removeMessages(0);
+ }
+ }else {
+ Toast.makeText(mContext, "鏈煡璇㈠埌", Toast.LENGTH_LONG).show();
+ }
+ } else {
+ //鍏抽棬澶辫触
+ }
+ }else {
+ //褰掕繕
+ if (e.getIsOpen() == 0) {
+ //鍏抽棬鎴愬姛
+ //鏌ヨ閽ュ寵鍙�
+ CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
+ if (gridDo != null) {
+ if(gridDo.getUpdateTime().compareTo(openTime)<0){
+ //寮�闂ㄥ墠鏁版嵁锛屼笉鑳戒娇鐢�
+ EventBus.getDefault().post(new GetKeyStatusEvent());
+ return;
+ }
+ //Toast.makeText(mContext, "1:"+gridDo.getKeyCode()+"锛�2:"+selectBean.getKeyCode(), Toast.LENGTH_LONG).show();
+ 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 {
+ Toast.makeText(mContext, "鏈煡璇㈠埌", Toast.LENGTH_LONG).show();
+ }
+ } else {
+ //鍏抽棬澶辫触
+ }
+ }
+ }
+ }
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3