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 { 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 users = FaceApi.getInstance().getAllUserList(); List printDos = DaoManager.getFingerPrintDao().loadAll(); HashMap mMap = new HashMap<>(); if(users!=null&&users.size()>0) { for(User u:users){ mMap.put(u.getUserId(),u); } } LinkedHashMap pMap = new LinkedHashMap<>(); List 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 numMap = new HashMap<>(); for(String key:pMap.keySet()){ numMap.put(key,pMap.get(key).getCount()); } List 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(); } }