weimingfei
7 小时以前 8ff90d87687b6d38158809aae776b6c709d7b60a
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
@@ -13,30 +13,24 @@
import com.doumee.keyCabinet.bean.CabinetFaceBean;
import com.doumee.keyCabinet.bean.DevConfigBean;
import com.doumee.keyCabinet.bean.FaceUserBean;
import com.doumee.keyCabinet.bean.KeyCabinetBean;
import com.doumee.keyCabinet.bean.LoginBean;
import com.doumee.keyCabinet.bean.ManageKeyCabinetBean;
import com.doumee.keyCabinet.dao.CabinetGridDo;
import com.doumee.keyCabinet.dao.DaoManager;
import com.doumee.keyCabinet.event.DevConfigEvent;
import com.doumee.keyCabinet.event.HttpEvent;
import com.doumee.keyCabinet.http.Apis;
import com.doumee.keyCabinet.http.param.BaseResponse;
import com.doumee.keyCabinet.http.param.CloseGridParam;
import com.doumee.keyCabinet.http.param.DevErrInfoParam;
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;
import com.doumee.keyCabinet.utils.LanguageUtil;
import com.doumee.keyCabinet.utils.ParamsUtil;
import com.doumee.keyCabinet.utils.i485.SportUtils;
import com.doumee.lib_coremodel.base.BaseModel;
import com.doumee.lib_coremodel.base.DataViewModel;
import com.doumee.lib_coremodel.http.rxJava.SimpleObserver;
import com.doumee.lib_coremodel.http.utils.GsonTools;
import com.doumee.lib_coremodel.http.utils.RxUtils;
import com.doumee.lib_coremodel.util.SpUtil;
import com.doumee.lib_coremodel.util.StringUtil;
@@ -48,9 +42,6 @@
import java.util.HashMap;
import java.util.List;
import okhttp3.Headers;
import retrofit2.Response;
public class MainVM extends DataViewModel {
    public ObservableField<String> dayObs = new ObservableField<>("");
    public ObservableField<String> timeObs = new ObservableField<>("");
@@ -58,6 +49,12 @@
    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) {
@@ -71,17 +68,16 @@
    public void devLogin(){
        //清除登录信息
        MApplication.saveConfigBean(new DevConfigBean());
        EventBus.getDefault().post(new HttpEvent("获取钥匙柜基本信息-请求"));
        getRetrofitService(Apis.class).getCabinetInfoForDriver(LMobileInfo.getDeviceUniqueId())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse<DevConfigBean>>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse<DevConfigBean> response) {
                        EventBus.getDefault().post(new HttpEvent("获取钥匙柜基本信息-返回:"+ GsonTools.changeGsonToJson(response)));
                        if(200==response.getCode()){
                            if(response.getData()!=null){
                                MApplication.saveConfigBean(response.getData());
                                EventBus.getDefault().post(new HttpEvent("酒精检测开关:"+response.getData().getAlcoholStatus()));
                                confidLD.setValue(response.getData());
                                if(response.getData().getCabinetGridInfoVOList()!=null){
                                    updateDao(response.getData().getCabinetGridInfoVOList());
@@ -90,6 +86,7 @@
                                toast(MApplication.mContext.getString(R.string.guide_toast_1));
                            }
                        }else {
                            MApplication.saveConfigBean(new DevConfigBean());
                            toast(response.getMessage());
                        }
                    }
@@ -115,6 +112,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 +127,14 @@
                gridDo.setKeyStatus(bean.getKeyStatus());
                gridDo.setWorkingStatus(bean.getWorkingStatus());
                updateList.add(gridDo);
                oldMap.remove(key);
                if(isSubmit&&!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);
                }
            }else {
                //新增
                CabinetGridDo gridDo = new CabinetGridDo();
@@ -144,9 +150,20 @@
                addList.add(gridDo);
            }
        }
        if(oldMap.size()>0) {
            CabinetGridDo[] dels = new CabinetGridDo[oldMap.size()];
            int i=0;
            for (String key : oldMap.keySet()) {
                dels[i] = oldMap.get(key);
                i++;
            }
            //删除多的
            DaoManager.getCabinetGridDao().delete(dels);
        }
        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++){
@@ -154,6 +171,20 @@
            }
            DaoManager.getCabinetGridDao().update(upList);
        }
        if(errList.size()>0){
            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 devHeart(){
@@ -180,15 +211,45 @@
                });
    }
    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()));
        getRetrofitService(Apis.class).syncGridData(ParamsUtil.encodeRequestBody(param))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse response) {
                    }
                    @Override
                    public void onError(@NonNull Throwable e) {
                    }
                    @Override
                    public void onComplete() {
                    }
                });
    }
    public MutableLiveData<List<FaceUserBean>> getFaceLD() {
        return faceLD;
    }
    public void getFaceDatas() {
        if (true) {
            return;
        }
        //showLoading(true);
        addInfo("查询人脸数据======》调用接口");
        getRetrofitService(Apis.class).allFaceList( LMobileInfo.getDeviceUniqueId())
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse<CabinetFaceBean>>(rxJavaGcManager) {
@@ -201,13 +262,13 @@
                                List<FaceUserBean> datas = new ArrayList<>();
                                if(faceBean!=null&&faceBean.getAutoFaceList()!=null){
                                    for(FaceUserBean bean:faceBean.getAutoFaceList()){
                                        bean.setGroupId("1");
                                        bean.setGroupId("0");
                                    }
                                    datas.addAll(faceBean.getAutoFaceList());
                                }
                                if(faceBean!=null&&faceBean.getDriverFaceList()!=null){
                                    for(FaceUserBean bean:faceBean.getDriverFaceList()){
                                        bean.setGroupId("0");
                                        bean.setGroupId("1");
                                    }
                                    datas.addAll(faceBean.getDriverFaceList());
                                }
@@ -266,13 +327,6 @@
        return DaoManager.getCabinetGridDao().getOpenGrids();
    }
    public void insertGrids(List<CabinetGridDo> addList){
        if(addList.size()>0){
            DaoManager.getCabinetGridDao().insert(addList);
        }
        addInfo("更新库数据:新增" + addList.size());
    }
    public void updateGrids(List<CabinetGridDo> updateList){
        if(updateList.size()>0){
            CabinetGridDo[] upList = new CabinetGridDo[updateList.size()];
@@ -290,12 +344,13 @@
        param.setCabinetId(MApplication.getConfigBean().getId());
        param.setMemberId(loginBean.getMemberId());
        param.setGridId(gridDo.getGridId());
        EventBus.getDefault().post(new HttpEvent("===>超时未关门-请求"));
        getRetrofitService(Apis.class).timeOutUnCloseAlarm(ParamsUtil.encodeRequestBody(param))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse response) {
                        toast("===>超时未关门-返回");
                    }
                    @Override
@@ -318,12 +373,13 @@
        param.setMemberId(loginBean.getMemberId());
        param.setGridId(gridDo.getGridId());
        param.setKeyStatus(!TextUtils.isEmpty(gridDo.getCurKeyCode())?1:2);
        EventBus.getDefault().post(new HttpEvent("===>首页关闭柜格-请求"));
        getRetrofitService(Apis.class).closeGrid(ParamsUtil.encodeRequestBody(param))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                    @Override
                    public void onNext(@NonNull BaseResponse response) {
                        EventBus.getDefault().post(new HttpEvent("===>首页关闭柜格-返回"));
                    }
                    @Override
@@ -344,7 +400,7 @@
    public void addInfo(String info){
        String s = infoObs.get();
        s+=info+"\n";
        s=info+"\n"+s;
        infoObs.set(s);
    }
}