weimingfei
15 小时以前 afe46e7a96bc408cf1f6bb2d4a798eaf344047a1
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
@@ -27,6 +27,7 @@
import com.doumee.keyCabinet.http.param.DevLoginParam;
import com.doumee.keyCabinet.http.param.FaceUserParam;
import com.doumee.keyCabinet.http.param.RequestBaseObject;
import com.doumee.keyCabinet.http.param.SyncGridDataParam;
import com.doumee.keyCabinet.http.param.TimeOutUnCloseAlarmParam;
import com.doumee.keyCabinet.utils.BraceletLogUtils;
import com.doumee.keyCabinet.utils.LMobileInfo;
@@ -58,7 +59,11 @@
    private MutableLiveData<List<FaceUserBean>> faceLD = new MutableLiveData<>();
    private MutableLiveData<DevConfigBean> confidLD = new MutableLiveData<>();
    private boolean isSubmit = false;
    public void setSubmit(boolean submit) {
        isSubmit = submit;
    }
    @ViewModelInject
    public MainVM(@NonNull Application application, BaseModel model) {
        super(application, model);
@@ -106,6 +111,7 @@
                });
    }
    private void updateDao(List<ManageKeyCabinetBean> beans){
        List<CabinetGridDo> gridDos = DaoManager.getCabinetGridDao().loadAll();
        HashMap<String,CabinetGridDo> oldMap = new HashMap<>();
@@ -114,6 +120,7 @@
        }
        List<CabinetGridDo> addList = new ArrayList<>();
        List<CabinetGridDo> updateList = new ArrayList<>();
        List<SyncGridDataParam.GridDTO> errList = new ArrayList<>();
        for(ManageKeyCabinetBean bean:beans){
            String key = SportUtils.intToHex(Integer.parseInt(bean.getBoardCode()))+SportUtils.intToHex(Integer.parseInt(bean.getChannelCode()));
            if(oldMap.containsKey(key)){
@@ -129,6 +136,36 @@
                gridDo.setWorkingStatus(bean.getWorkingStatus());
                updateList.add(gridDo);
                oldMap.remove(key);
                if(isSubmit){
                    boolean isSb = false;
                    //钥匙状态 1在位 2借出
                    if(1==gridDo.getKeyStatus()){
                        //判断是否一致
                        if(!isCheck(gridDo.getKeyCode(),gridDo.getCurKeyCode())){
                            //不一致
                            SyncGridDataParam.GridDTO errDo = new SyncGridDataParam.GridDTO();
                            errDo.setActualLable(gridDo.getCurKeyCode());
                            errDo.setBoardCode(bean.getBoardCode());
                            errDo.setChannelCode(bean.getChannelCode());
                            errList.add(errDo);
                            isSb = true;
                        }
                    }else if(2==gridDo.getKeyStatus()){
                        //借出
                        //当前不为空
                        if(!TextUtils.isEmpty(gridDo.getCurKeyCode())){
                            //不一致
                            SyncGridDataParam.GridDTO errDo = new SyncGridDataParam.GridDTO();
                            errDo.setActualLable(gridDo.getCurKeyCode());
                            errDo.setBoardCode(bean.getBoardCode());
                            errDo.setChannelCode(bean.getChannelCode());
                            errList.add(errDo);
                            isSb = true;
                        }
                    }
                    addInfo2(gridDo.getGridKey()+",钥匙状态:"+gridDo.getKeyStatus()+",目标钥匙:"+gridDo.getKeyCode()+",当前钥匙:"+
                            gridDo.getCurKeyCode()+"。是否上报:"+(isSb?"上报":"不上报"));
                }
            }else {
                //新增
                CabinetGridDo gridDo = new CabinetGridDo();
@@ -147,12 +184,18 @@
        if(oldMap.size()>0) {
            CabinetGridDo[] dels = new CabinetGridDo[oldMap.size()];
            int i=0;
            StringBuilder sb = new StringBuilder();
            for (String key : oldMap.keySet()) {
                dels[i] = oldMap.get(key);
                i++;
                if(sb.length()>0){
                    sb.append(",");
                }
                sb.append(oldMap.get(key).getKeyCode());
            }
            //删除多的
            DaoManager.getCabinetGridDao().delete(dels);
            addInfo("删除规格:"+dels.length);
        }
        if(addList.size()>0){
            DaoManager.getCabinetGridDao().insert(addList);
@@ -165,6 +208,55 @@
            }
            DaoManager.getCabinetGridDao().update(upList);
        }
        if(errList.size()>0){
            addInfo2("不一致数据:"+errList.size());
            syncGridData(errList);
        }
    }
    private boolean isCheck(String v1,String v2){
        if(TextUtils.isEmpty(v1)&&TextUtils.isEmpty(v2)){
            return true;
        }else if(TextUtils.isEmpty(v1)&&!TextUtils.isEmpty(v2)){
            return false;
        }else if(!TextUtils.isEmpty(v1)&&TextUtils.isEmpty(v2)){
            return false;
        }
        return v1.equals(v2);
    }
    public void syncGridData(List<SyncGridDataParam.GridDTO> errList){
        SyncGridDataParam param = new SyncGridDataParam();
        param.setCode(LMobileInfo.getDeviceUniqueId());
        param.setGridDTOList(errList);
        StringBuilder sb = new StringBuilder();
        for(SyncGridDataParam.GridDTO d:errList){
            if(sb.length()>0){
                sb.append(",");
            }
            sb.append(d.getBoardCode()+"_"+d.getChannelCode()+":"+d.getActualLable());
        }
        EventBus.getDefault().post(new HttpEvent("上报错误钥匙信息===》"+sb.toString()));
        addInfo2("不一致数据:"+sb.toString());
        getRetrofitService(Apis.class).syncGridData(ParamsUtil.encodeRequestBody(param))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse response) {
                        addInfo2("同步柜格实际钥匙数据"+response.getMessage());
                    }
                    @Override
                    public void onError(@NonNull Throwable e) {
                        addInfo2("同步柜格实际钥匙数据错误;"+e.getMessage());
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    public void devHeart(){
@@ -342,10 +434,14 @@
    public MutableLiveData<DevConfigBean> getConfidLD() {
        return confidLD;
    }
    public void addInfo(String info){
        String s = infoObs.get();
    public void addInfo2(String info){
        /*String s = infoObs.get();
        s=info+"\n"+s;
        infoObs.set(s);
        infoObs.set(s);*/
    }
    public void addInfo(String info){
        /*String s = infoObs.get();
        s=info+"\n"+s;
        infoObs.set(s);*/
    }
}