From afe46e7a96bc408cf1f6bb2d4a798eaf344047a1 Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期五, 23 一月 2026 15:27:14 +0800
Subject: [PATCH] 钥匙柜同步柜格实际钥匙数据

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 102 insertions(+), 12 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 b9c2d26..f669dc7 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
@@ -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);
@@ -71,7 +76,6 @@
 
     public void devLogin(){
         //娓呴櫎鐧诲綍淇℃伅
-        MApplication.saveConfigBean(new DevConfigBean());
         EventBus.getDefault().post(new HttpEvent("鑾峰彇閽ュ寵鏌滃熀鏈俊鎭�-璇锋眰"));
         getRetrofitService(Apis.class).getCabinetInfoForDriver(LMobileInfo.getDeviceUniqueId())
                 .compose(RxUtils.schedulersTransformer())
@@ -89,6 +93,7 @@
                                 toast(MApplication.mContext.getString(R.string.guide_toast_1));
                             }
                         }else {
+                            MApplication.saveConfigBean(new DevConfigBean());
                             toast(response.getMessage());
                         }
                     }
@@ -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,21 +184,21 @@
         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);
-        }
-
-        //todo 鍘绘帀
-        CabinetGridDo gridDo = oldMap.get("0101");
-        if(gridDo!=null){
-            EventBus.getDefault().post(new HttpEvent(StringUtil.DateToStrSS(new Date())+"=================>鏇存柊鏁版嵁褰撳墠閽ュ寵1锛�"+gridDo.getCurKeyCode()));
         }
 
         if(updateList.size()>0){
@@ -171,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(){
@@ -330,7 +416,7 @@
                 .subscribe(new SimpleObserver<BaseResponse>(rxJavaGcManager) {
                     @Override
                     public void onNext(@NonNull BaseResponse response) {
-                        toast("鍏抽棬鎺ュ彛璋冪敤鎴愬姛");
+
                     }
 
                     @Override
@@ -348,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);*/
     }
 }

--
Gitblit v1.9.3