From c04d741f6daddd9e445a0d00adc42d1c8c45f67f Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期五, 23 一月 2026 10:40:33 +0800
Subject: [PATCH] 钥匙柜同步柜格实际钥匙数据
---
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java | 6 ++
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/SyncGridDataParam.java | 61 ++++++++++++++++++++
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainVM.java | 66 ++++++++++++++++++++++
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java | 2
4 files changed, 135 insertions(+), 0 deletions(-)
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java
index cecbf1b..8769d26 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/Apis.java
@@ -46,6 +46,12 @@
Observable<BaseResponse> heart(@Query("id")Integer id);
/**
+ * 鍚屾鏌滄牸瀹為檯閽ュ寵鏁版嵁
+ */
+ @POST("visitsAdmin/cloudService/web/cabinet/syncGridData")
+ Observable<BaseResponse> syncGridData(@Body RequestBody requestBody);
+
+ /**
* 涓婁紶鎶ラ敊淇℃伅
*/
@POST("do?c=360313")
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/SyncGridDataParam.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/SyncGridDataParam.java
new file mode 100644
index 0000000..53cfa2f
--- /dev/null
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/http/param/SyncGridDataParam.java
@@ -0,0 +1,61 @@
+package com.doumee.keyCabinet.http.param;
+
+import java.io.Serializable;
+import java.util.List;
+
+//鍚屾鏌滄牸瀹為檯閽ュ寵鏁版嵁
+public class SyncGridDataParam implements Serializable {
+ //閽ュ寵鏌滅紪鍙�
+ private String code;
+
+ private List<GridDTO> gridDTOList;
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public List<GridDTO> getGridDTOList() {
+ return gridDTOList;
+ }
+
+ public void setGridDTOList(List<GridDTO> gridDTOList) {
+ this.gridDTOList = gridDTOList;
+ }
+
+ public static class GridDTO{
+ //瀹為檯閽ュ寵缂栫爜
+ private String actualLable;
+ //鏉垮彿
+ private String boardCode;
+ //閫氶亾鍙�
+ private String channelCode;
+
+ public String getActualLable() {
+ return actualLable;
+ }
+
+ public void setActualLable(String actualLable) {
+ this.actualLable = actualLable;
+ }
+
+ public String getBoardCode() {
+ return boardCode;
+ }
+
+ public void setBoardCode(String boardCode) {
+ this.boardCode = boardCode;
+ }
+
+ public String getChannelCode() {
+ return channelCode;
+ }
+
+ public void setChannelCode(String channelCode) {
+ this.channelCode = channelCode;
+ }
+ }
+}
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
index 05076d2..6562451 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
@@ -477,6 +477,7 @@
protected void onResume() {
super.onResume();
isShowing = true;
+ getVM().setSubmit(true);
YNHAPI mAPI = YNHAPI.getInstance();
mAPI.setNavigationBarVisibility(YNHAPI.NavigationBarVisibility.ALWAYS_INVISIBLE);
mAPI.setBootLaunchApk("com.doumee.keyCabinet", true);
@@ -752,6 +753,7 @@
super.onPause();
showTime = null;
isShowing = false;
+ getVM().setSubmit(false);
}
private int finishCount;
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 7b81892..f7418c1 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);
@@ -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,13 @@
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();
@@ -147,12 +161,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 +185,52 @@
}
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 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 void devHeart(){
--
Gitblit v1.9.3