From 76407ef42394ff1046c508a106c0b51812df2a0f Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 10 十二月 2025 18:12:53 +0800
Subject: [PATCH] 钥匙柜开门添加 指纹方式

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ZWListActivity.java |  150 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 150 insertions(+), 0 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ZWListActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ZWListActivity.java
new file mode 100644
index 0000000..2219028
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/keyCabinet/ZWListActivity.java
@@ -0,0 +1,150 @@
+package com.doumee.keyCabinet.ui.keyCabinet;
+
+import androidx.annotation.Nullable;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.Toast;
+
+import com.doumee.keyCabinet.R;
+import com.doumee.keyCabinet.base.MyBaseActivity;
+import com.doumee.keyCabinet.bean.FingerPrintVo;
+import com.doumee.keyCabinet.dao.DaoManager;
+import com.doumee.keyCabinet.dao.FingerPrintDo;
+import com.doumee.keyCabinet.databinding.ZwlistActivityBinding;
+import com.doumee.keyCabinet.event.HttpEvent;
+import com.doumee.keyCabinet.event.RefreshFingerEvent;
+import com.doumee.keyCabinet.ui.keyCabinet.adapter.ZwListRcvAdapter;
+import com.doumee.keyCabinet.utils.usb.DevComm;
+import com.doumee.keyCabinet.utils.usb.IUsbConnState;
+import com.doumee.lib_coremodel.bean.event.ActionEventData;
+import com.doumee.lib_coremodel.util.RecyclerHelp;
+import com.example.datalibrary.api.FaceApi;
+import com.example.datalibrary.model.User;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+
+import dagger.hilt.android.AndroidEntryPoint;
+
+@AndroidEntryPoint
+public class ZWListActivity extends MyBaseActivity<ZWListVM, ZwlistActivityBinding> {
+    private ZwListRcvAdapter adapter;
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.zwlist_activity;
+    }
+
+    @Override
+    public void initView(@Nullable Bundle savedInstanceState) {
+        isAddCountTimer = false;
+        normalConfig();
+        getDB().setModel(getVM());
+        adapter = new ZwListRcvAdapter(this, R.layout.zwlist_rcv_item);
+        RecyclerHelp.bindVL(this,getDB().recyclerView,30,false);
+        getDB().recyclerView.setAdapter(adapter);
+    }
+
+    @Override
+    public void initData(@Nullable Bundle savedInstanceState) {
+        getDatas();
+    }
+
+    private void getDatas(){
+        List<User> users = FaceApi.getInstance().getAllUserList();
+        List<FingerPrintDo> printDos = DaoManager.getFingerPrintDao().loadAll();
+        HashMap<String,User> mMap = new HashMap<>();
+        if(users!=null&&users.size()>0) {
+            for(User u:users){
+                mMap.put(u.getUserId(),u);
+            }
+        }
+        LinkedHashMap<String,FingerPrintVo> pMap = new LinkedHashMap<>();
+        List<FingerPrintDo> updateList = new ArrayList<>();
+        for(FingerPrintDo d:printDos){
+            FingerPrintVo vo = null;
+            if(pMap.containsKey(d.getMemberId()+"")){
+                vo = pMap.get(d.getMemberId()+"");
+            }else {
+                vo = new FingerPrintVo();
+                pMap.put(d.getMemberId()+"",vo);
+            }
+            vo.setMemberName(d.getMemberName());
+            vo.setMemberId(d.getMemberId());
+            vo.setFace(d.getFace());
+            vo.setGroupId(d.getGroupId());
+            vo.setCount(vo.getCount()+1);
+            if(mMap.containsKey(d.getMemberId()+"")){
+                //鏇存柊淇℃伅
+                User user = mMap.get(d.getMemberId()+"");
+                d.setFace(user.getImageName());
+                d.setMemberName(user.getUserName());
+                updateList.add(d);
+            }
+        }
+        HashMap<String,Integer> numMap = new HashMap<>();
+        for(String key:pMap.keySet()){
+            numMap.put(key,pMap.get(key).getCount());
+        }
+        List<FingerPrintVo> vos = new ArrayList<>();
+        if(users!=null&&users.size()>0) {
+            for(User u:users){
+                FingerPrintVo vo = new FingerPrintVo();
+                vo.setMemberId(Integer.parseInt(u.getUserId()));
+                vo.setMemberName(u.getUserName());
+                vo.setFace(u.getImageName());
+                vo.setGroupId(u.getGroupId());
+                if(numMap.containsKey(u.getUserId())){
+                    vo.setCount(numMap.get(u.getUserId()));
+                    pMap.remove(u.getUserId());
+                }
+                vos.add(vo);
+            }
+        }
+        if(pMap.size()>0){
+            for(String key:pMap.keySet()){
+                vos.add(pMap.get(key));
+            }
+        }
+        if(vos.size()>0) {
+            adapter.refreshData(vos);
+            getVM().emptyVisibility.set(View.GONE);
+        }else {
+            getVM().emptyVisibility.set(View.VISIBLE);
+        }
+        if(updateList.size()>0){
+            DaoManager.getFingerPrintDao().update(updateList.toArray(new FingerPrintDo[updateList.size()]));
+        }
+    }
+
+    @Override
+    protected void doRegister(int type, ActionEventData data) {
+        switch (type){
+            default:
+                break;
+        }
+    }
+
+    @Subscribe
+    public void RefreshFingerEvent(RefreshFingerEvent e){
+        if(!isFinishing()){
+            getDatas();
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.9.3