Explorar el Código

1.修复实验室信息更新会导致应用崩溃的BUG
2.设置物联设备"烟感"设备的单位为空字符
3.重写物联控制页面

JaycePC hace 2 días
padre
commit
d2aa9a1f97

+ 3 - 1
app/build.gradle

@@ -19,7 +19,7 @@ android {
         minSdk 31
         targetSdk 35
         versionCode 2
-        versionName "2.4"
+        versionName "2.5"
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         room {
@@ -134,4 +134,6 @@ dependencies {
     implementation libs.jsoup
     // pdfView
     implementation libs.android.pdf.viewer
+    // banner
+    implementation 'com.github.zhpanvip:bannerviewpager:3.5.12'
 }

+ 16 - 7
app/src/main/java/xn/xxp/HomeActivity.java

@@ -36,8 +36,8 @@ import http.vo.response.LabPersonVo;
 import http.vo.response.LabWarnVo;
 import kotlin.Unit;
 import kotlin.jvm.functions.Function1;
-import xn.xxp.app.InitActivity;
-import xn.xxp.home.setting.SettingActivity;
+import xn.xxp.app.InitTool;
+import xn.xxp.app.LabApp;
 import xn.xxp.app.SyncFaceTool;
 import xn.xxp.databinding.ActivityHomeBinding;
 import xn.xxp.home.AccessVerify;
@@ -49,6 +49,7 @@ import xn.xxp.home.auth.ChoiceAuthActivity;
 import xn.xxp.home.fragment.AccessPersonFragment;
 import xn.xxp.home.fragment.DutyPersonFragment;
 import xn.xxp.home.lab_info.LabDescActivity;
+import xn.xxp.home.setting.SettingActivity;
 import xn.xxp.home.window.WindowFragment;
 import xn.xxp.mqtt.MqttManager;
 import xn.xxp.mqtt.event.BulletinBoardEvent;
@@ -390,18 +391,26 @@ public class HomeActivity extends BaseCountDownActivity<ActivityHomeBinding> imp
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onLabInfoEvent(LabInfoEvent event) {
         if (!TextUtils.isEmpty(event.getMessage())) {
-            ActivityUtils.finishToActivity(HomeActivity.class, false);
             showLoading("实验室信息更改,即将重新初始化!");
-            ThreadUtils.runOnUiThreadDelayed(new Runnable() {
+            ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<Object>() {
+                @Override
+                public Object doInBackground() throws Throwable {
+                    InitTool.INSTANCE.queryLabConfig(deviceConfig.getDevId());
+                    InitTool.INSTANCE.queryLabInfo(LabApp.laboratory.subId, null);
+                    deviceConfig = deviceConfigDao.getDeviceConfig();
+                    labConfig = labConfigDao.getLabConfig();
+                    return null;
+                }
+
                 @Override
-                public void run() {
+                public void onSuccess(Object result) {
                     dismissLoading();
-                    ActivityUtils.finishToActivity(InitActivity.class, false);
                 }
-            }, 3000);
+            });
         }
     }
 
+
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onOnlineUserEvent(OnlineUserEvent event) {
         help.queryPerson();

+ 17 - 25
app/src/main/java/xn/xxp/app/InitActivity.java

@@ -221,18 +221,22 @@ public class InitActivity extends BaseActivity<ActivityInitBinding> {
             runOnUiThread(() -> binding.tips.setText("正在查询实验室信息..."));
         }
         LabConfig labConfig = RoomTool.getInstance().labConfigDao().getLabConfig();
-        addDisposable(ApiRepository.INSTANCE.laboratoryInfo(true, String.valueOf(labConfig.getLabId())).subscribe(new Consumer<LaboratoryVo>() {
+        addDisposable(InitTool.INSTANCE.queryLabInfo(String.valueOf(labConfig.getLabId()), new androidx.core.util.Consumer<Boolean>() {
             @Override
-            public void accept(LaboratoryVo laboratoryVo) throws Exception {
-                LabApp.laboratory = laboratoryVo;
-                isGetLabInfo = true;
-                reTryCount = 0;
+            public void accept(Boolean aBoolean) {
+                if (aBoolean) {
+                    isGetLabInfo = true;
+                    reTryCount = 0;
+                } else {
+                    reTryCount++;
+                    ThreadUtils.runOnUiThreadDelayed(new Runnable() {
+                        @Override
+                        public void run() {
+                            queryLabInfo();
+                        }
+                    }, 1000L * ThreadLocalRandom.current().nextInt(10, 20));
+                }
             }
-        }, throwable -> {
-            LogUtils.e(Log.getStackTraceString(throwable));
-            showNetError(throwable);
-            reTryCount++;
-            ThreadUtils.runOnUiThreadDelayed(this::queryLabInfo, 1000L * ThreadLocalRandom.current().nextInt(10, 20));
         }));
     }
 
@@ -246,21 +250,9 @@ public class InitActivity extends BaseActivity<ActivityInitBinding> {
             } else {
                 runOnUiThread(() -> binding.tips.setText("正在查询实验室配置..."));
             }
-            Response response = HttpTool.queryLabConfig(deviceConfig.getDevId());
-            if (response.isSuccessful()) {
-                String json = response.body().string();
-                LogUtils.d(json);
-                JSONObject jsonObject = new JSONObject(json);
-                int code = jsonObject.getInt("code");
-                if (200 == code) {
-                    LabConfig labConfig = GsonUtils.fromJson(jsonObject.getJSONObject("data").toString(), LabConfig.class);
-                    RoomTool.getInstance().labConfigDao().clear();
-                    RoomTool.getInstance().labConfigDao().insert(labConfig);
-                    reTryCount = 0;
-                    return;
-                } else {
-                    ToastUtils.showLong(jsonObject.getString("message"));
-                }
+            if (InitTool.INSTANCE.queryLabConfig(deviceConfig.getDevId())) {
+                reTryCount = 0;
+                return;
             }
         } catch (Exception e) {
             LogUtils.e(Log.getStackTraceString(e));

+ 74 - 0
app/src/main/java/xn/xxp/app/InitTool.java

@@ -0,0 +1,74 @@
+package xn.xxp.app;
+
+import android.util.Log;
+
+import androidx.annotation.WorkerThread;
+
+import com.blankj.utilcode.util.GsonUtils;
+import com.blankj.utilcode.util.LogUtils;
+import com.blankj.utilcode.util.ToastUtils;
+
+import org.json.JSONObject;
+
+import http.client.ApiRepository;
+import http.client.HttpTool;
+import http.vo.response.LaboratoryVo;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.functions.Consumer;
+import okhttp3.Response;
+import xn.xxp.room.RoomTool;
+import xn.xxp.room.bean.LabConfig;
+
+public enum InitTool {
+    INSTANCE;
+
+    /**
+     * 查询实验室配置
+     */
+    @WorkerThread
+    public boolean queryLabConfig(String devID) {
+        try {
+            Response response = HttpTool.queryLabConfig(devID);
+            if (response.isSuccessful()) {
+                String json = response.body().string();
+                LogUtils.d(json);
+                JSONObject jsonObject = new JSONObject(json);
+                int code = jsonObject.getInt("code");
+                if (200 == code) {
+                    LabConfig labConfig = GsonUtils.fromJson(jsonObject.getJSONObject("data").toString(), LabConfig.class);
+                    RoomTool.getInstance().labConfigDao().clear();
+                    RoomTool.getInstance().labConfigDao().insert(labConfig);
+                    return true;
+                } else {
+                    ToastUtils.showLong(jsonObject.getString("message"));
+                }
+            }
+        } catch (Exception e) {
+            LogUtils.e(Log.getStackTraceString(e));
+        }
+
+        return false;
+    }
+
+    /**
+     * 查询实验室信息
+     */
+    @WorkerThread
+    public Disposable queryLabInfo(String labId, androidx.core.util.Consumer<Boolean> consumer) {
+        return ApiRepository.INSTANCE.laboratoryInfo(true, labId).subscribe(new Consumer<LaboratoryVo>() {
+            @Override
+            public void accept(LaboratoryVo laboratoryVo) throws Exception {
+                LabApp.laboratory = laboratoryVo;
+                if (null != consumer) {
+                    consumer.accept(true);
+                }
+            }
+        }, throwable -> {
+            if (null != consumer) {
+                consumer.accept(false);
+            }
+            LogUtils.e(Log.getStackTraceString(throwable));
+            ToastUtils.showLong(throwable.getMessage());
+        });
+    }
+}

+ 3 - 0
app/src/main/java/xn/xxp/app/SyncFaceTool.java

@@ -24,6 +24,7 @@ import com.google.gson.reflect.TypeToken;
 import com.njlz.event.BuildModelEvent;
 import com.njlz.face.FaceUtils;
 import com.njlz.smartdata.FaceBuildBean;
+import com.njlz.smartdata.FaceConfig;
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
@@ -87,6 +88,8 @@ public enum SyncFaceTool {
         try {
             // 同步人脸
             FaceUtils.getInstance().init(Utils.getApp());
+            FaceConfig faceConfig = FaceUtils.getInstance().getFaceConfig();
+            LogUtils.json("底库配置", faceConfig);
             EventBus.getDefault().register(this);
             // http请求同步
             List<Pair<String, String>> faceUrlList = getLabFaceList();

+ 2 - 2
app/src/main/java/xn/xxp/home/adapter/HomeBoardAdapter.kt

@@ -74,14 +74,14 @@ public class HomeBoardAdapter :
             if (itemVal?.value == "0") {
                 itemView.setSensorValue(
                     "正常",
-                    itemVal.unit,
+                    "",
                     mWarningSet.contains(item.deviceNo),
                     item.online
                 )
             } else {
                 itemView.setSensorValue(
                     "异常",
-                    itemVal?.unit,
+                    "",
                     mWarningSet.contains(item.deviceNo),
                     item.online
                 )

+ 1 - 0
app/src/main/java/xn/xxp/main/things/ThingsListActivity.java

@@ -54,6 +54,7 @@ public class ThingsListActivity extends BaseCountDownActivity<ActivityThingsList
         EventBus.getDefault().register(this);
         labConfig = RoomTool.getInstance().labConfigDao().getLabConfig();
         thingsListAdapter = new ThingsListAdapter(lotDeviceVoList);
+        binding.iotThings.setAdapter(thingsListAdapter);
         binding.iotThings.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

+ 4 - 4
app/src/main/java/xn/xxp/widget/IotControllerView.kt

@@ -31,10 +31,10 @@ class IotControllerView @JvmOverloads constructor(
         val lotOn = typeArray.getBoolean(R.styleable.LotControllerView_lotOn, false)
         typeArray.recycle()
 
-        viewBinding.lotSwitch.setOnClickListener { view ->
-            val switchOn = view.tag as? Boolean ?: false
-            mSwitchListener?.invoke(view, switchOn)
-        }
+//        viewBinding.lotSwitch.setOnClickListener { view ->
+//            val switchOn = view.tag as? Boolean ?: false
+//            mSwitchListener?.invoke(view, switchOn)
+//        }
         controller(lotOn)
     }