package com.doumee.keyCabinet.ui.keyCabinet; import androidx.annotation.NonNull; import androidx.annotation.Nullable; 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.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.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 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 { private CabinetRcvAdapter adapter; private KeyCabinetBean selectBean; //0=取 1=还 private int flag; //状态,0:待开门,1:待关门 private int status; private int ysDownCount = 10; @Override public int getLayoutId() { return R.layout.key_cabinet_activity; } @Override public void initView(@Nullable Bundle savedInstanceState) { 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); getDB().rcvKm.setAdapter(adapter); } @Override public void initData(@Nullable Bundle savedInstanceState) { getVM().getDatasLD().observe(this, new Observer>() { @Override public void onChanged(List 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 beans){ List gridDos = DaoManager.getCabinetGridDao().loadAll(); HashMap oldMap = new HashMap<>(); for(CabinetGridDo d:gridDos){ oldMap.put(d.getGridKey(),d); } List addList = new ArrayList<>(); List 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