From 8ff90d87687b6d38158809aae776b6c709d7b60a Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期四, 04 十二月 2025 12:01:41 +0800
Subject: [PATCH] 指纹钥匙柜

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java |  110 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 83 insertions(+), 27 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
index 16c401a..39ca636 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java
+++ b/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);
     }
 }

--
Gitblit v1.9.3