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/KeyCabinetActivity.java | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 423 insertions(+), 7 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 79e4c29..f062a3f 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
@@ -1,25 +1,60 @@
package com.doumee.keyCabinet.ui.keyCabinet;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.Observer;
import android.os.Bundle;
+import android.os.Handler;
+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;
+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.KeyCabinetBean;
+import com.doumee.keyCabinet.dao.CabinetGridDo;
+import com.doumee.keyCabinet.dao.DaoManager;
import com.doumee.keyCabinet.databinding.KeyCabinetActivityBinding;
-import com.doumee.keyCabinet.ui.face.adapter.ErrRcvAdapter;
+import com.doumee.keyCabinet.event.CloseGridOneResultEvent;
+import com.doumee.keyCabinet.event.KeyResultEvent;
+import com.doumee.keyCabinet.event.GetKeyStatusEvent;
+import com.doumee.keyCabinet.event.OpenGridEvent;
+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 dagger.hilt.android.AndroidEntryPoint;
@AndroidEntryPoint
public class KeyCabinetActivity extends MyBaseActivity<KeyCabinetVM, KeyCabinetActivityBinding> {
private CabinetRcvAdapter adapter;
+ private KeyCabinetBean selectBean;
+ //0=鍙� 1=杩�
+ private int flag;
+
+ //鐘舵�侊紝0锛氬緟寮�闂紝1锛氬緟鍏抽棬
+ private int status;
+
+ private int ysDownCount = 10;
@Override
public int getLayoutId() {
@@ -28,14 +63,14 @@
@Override
public void initView(@Nullable Bundle savedInstanceState) {
- isAddCountTimer = false;
+ isAddCountTimer = true;
normalConfig();
getDB().setModel(getVM());
-
+ flag = MApplication.getLoginBean().getFlag();
adapter = new CabinetRcvAdapter(this, R.layout.cabinet_rcv_item, new CabinetRcvAdapter.OnItemClick() {
@Override
public void onItemClick(KeyCabinetBean item) {
-
+ selectBean = item;
}
});
RecyclerHelp.bindVG(this,getDB().rcvKm,3,30);
@@ -44,6 +79,387 @@
@Override
public void initData(@Nullable Bundle savedInstanceState) {
+ getVM().getDatasLD().observe(this, new Observer<List<KeyCabinetBean>>() {
+ @Override
+ public void onChanged(List<KeyCabinetBean> beans) {
+ if(beans.size()>0){
+ beans.get(0).getIsSelected().set(true);
+ beans.get(0).getText1Color().set(0xffffffff);
+ beans.get(0).getText2Color().set(0xffffffff);
+ selectBean = beans.get(0);
+ changeBtBg();
+ adapter.refreshData(beans);
+ getVM().emptyVisibility.set(View.GONE);
+ //鏇存柊淇℃伅
+ updateDao(beans);
+ }else {
+ getVM().emptyVisibility.set(View.VISIBLE);
+ }
+ }
+ });
+ 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);
+ downTime = 60;
+ break;
+ case 2:
+ getDB().clTip1.setVisibility(View.GONE);
+ if(status==0) {
+ //閲嶆柊寮�闂�
+ openTime = StringUtil.DateToStr(new Date());
+ 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);
+ getDB().tvJg1.setText("寮�闂ㄥけ璐ワ紝璇疯仈绯荤鐞嗗憳");
+ 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)) {
+ getDB().imgTip2.setImageResource(R.mipmap.ic_notclose_key);
+ getDB().tvTip22.setText("璇烽鍙栭挜鍖欏悗鍏抽棴鏌滈棬");
+ }else {
+ getDB().imgTip2.setImageResource(R.mipmap.ic_notclose);
+ getDB().tvTip22.setText("璇峰綊杩橀挜鍖欏悗鍏抽棴鏌滈棬");
+ }
+ 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;
+ break;
+ case 7:
+ //鎻愰啋鍏虫煖闂�
+ getDB().imgTip2.setImageResource(R.mipmap.ic_notclose);
+ getDB().tvTip22.setText("璇峰叧闂煖闂�");
+ 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().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:
+ //鍏抽棬-閽ュ寵棰嗗彇澶辫触
+ status = 0;
+ getDB().btTip.setText("閲嶆柊寮�闂�");
+ getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
+ getDB().tvJg1.setText(getTipText(selectBean.getCarCode(),"閽ュ寵鏈鍙�"), TextView.BufferType.SPANNABLE);
+ 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().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:
+ //鍏抽棬-閽ュ寵褰掕繕澶辫触
+ status = 0;
+ getDB().btTip.setText("閲嶆柊褰掕繕");
+ getDB().imgJg1.setImageResource(R.mipmap.ic_jjfail);
+ getDB().tvJg1.setText("鏈瘑鍒埌閽ュ寵");
+ 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){
+ String text = name+msg;
+ SpannableString styledText = new SpannableString(text);
+ styledText.setSpan(new TextAppearanceSpan(this, R.style.style_tip1), 0, name.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip2), name.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ return styledText;
+ }
+
+ private SpannableString getErrPhoneText(){
+ 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);
+ styledText.setSpan(new TextAppearanceSpan(this,R.style.style_tip1), text.length()-phone.length()+1, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ return styledText;
+ }
+
+ private void changeBtBg(){
+ if(selectBean!=null){
+ 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.getCurKeyCode())){
+ //绌轰簡
+ doRegister(7,null);
+ }
+ }else {
+ //杩�
+ if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
+ //鏈夐挜鍖欎簡
+ doRegister(7,null);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ }
+
+ 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;
+ 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);
+ }
+ }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