소스 검색

refactor(硬件):
- 优化钥匙在位检测逻辑,过滤不存在和非新硬件的钥匙
- 修复`ModBusHardwareHelper`中控制充电和锁扣方法参数错误问题
- `BaseActivity`中`EVENT_TOAST_CODE`事件类型强转为`ToastEvent`

周文健 2 달 전
부모
커밋
5b5f323b99

+ 15 - 13
data/src/main/java/com/grkj/data/hardware/can/CanHardwareHelper.kt

@@ -40,7 +40,7 @@ class CanHardwareHelper : IHardwareHelper {
 
     override fun getExistsKeyMac(): List<String> {
         val keyDevices = CanHelper.getDeviceByDeviceType(DeviceConst.DEVICE_TYPE_KEY)
-        return keyDevices.flatMap { it.value }.filterIsInstance<DeviceModel.DeviceKey>()
+        return keyDevices.flatMap { it.value }.filterIsInstance<DeviceModel.DeviceKey>().filter { it.isExist }
             .map { it.mac }
     }
 
@@ -48,18 +48,20 @@ class CanHardwareHelper : IHardwareHelper {
         val deviceData = CanHelper.getDeviceByDeviceType(CanDeviceConst.DEVICE_KEY_DOCK)
         val keyDock = deviceData.map {
             DockData.KeyDock().apply {
-                keyData.addAll(it.value.filterIsInstance<DeviceModel.DeviceKey>().map {
-                    DockData.KeyDock.KeyBean().apply {
-                        this.addr = it.nodeId
-                        this.idx = it.id
-                        this.row = it.nodeId
-                        this.rfid = it.rfid
-                        this.mac = it.mac
-                        this.isExist = it.isExist
-                        this.type = it.deviceType
-                        this.newHardware = it.newHardware
-                    }
-                })
+                keyData.addAll(
+                    it.value.filterIsInstance<DeviceModel.DeviceKey>()
+                        .filter { it.isExist && it.newHardware }.map {
+                        DockData.KeyDock.KeyBean().apply {
+                            this.addr = it.nodeId
+                            this.idx = it.id
+                            this.row = it.nodeId
+                            this.rfid = it.rfid
+                            this.mac = it.mac
+                            this.isExist = it.isExist
+                            this.type = it.deviceType
+                            this.newHardware = it.newHardware
+                        }
+                    })
             }
         }
         return keyDock

+ 17 - 16
data/src/main/java/com/grkj/data/hardware/modbus/ModBusHardwareHelper.kt

@@ -49,7 +49,7 @@ class ModBusHardwareHelper : IHardwareHelper {
         val dockData =
             ModBusController.dockList.filter { it.type == DeviceConst.DOCK_TYPE_LOCK || it.type == DeviceConst.DOCK_TYPE_KEY || it.type == DeviceConst.DOCK_TYPE_PORTABLE }
         return dockData.filter { it.type == DeviceConst.DOCK_TYPE_KEY }.flatMap { it.deviceList }
-            .filterIsInstance<DockBean.KeyBean>().map { it.mac ?: "" }
+            .filterIsInstance<DockBean.KeyBean>().filter { it.isExist }.map { it.mac ?: "" }
     }
 
     override fun controlKeyLockAndCharge(
@@ -66,18 +66,20 @@ class ModBusHardwareHelper : IHardwareHelper {
             ModBusController.dockList.filter { it.type == DeviceConst.DOCK_TYPE_LOCK || it.type == DeviceConst.DOCK_TYPE_KEY || it.type == DeviceConst.DOCK_TYPE_PORTABLE }
         return dockData.filter { it.type == DeviceConst.DOCK_TYPE_KEY }.map {
             DockData.KeyDock().apply {
-                keyData.addAll(it.deviceList.filterIsInstance<DockBean.KeyBean>().map {
-                    DockData.KeyDock.KeyBean().apply {
-                        this.addr = it.addr.toInt()
-                        this.idx = it.idx
-                        this.row = it.row
-                        this.rfid = it.rfid ?: ""
-                        this.mac = it.mac ?: ""
-                        this.isExist = it.isExist
-                        this.type = it.type
-                        this.newHardware = it.newHardware
-                    }
-                })
+                keyData.addAll(
+                    it.deviceList.filterIsInstance<DockBean.KeyBean>()
+                        .filter { it.isExist && it.newHardware }.map {
+                            DockData.KeyDock.KeyBean().apply {
+                                this.addr = it.addr.toInt()
+                                this.idx = it.idx
+                                this.row = it.row
+                                this.rfid = it.rfid ?: ""
+                                this.mac = it.mac ?: ""
+                                this.isExist = it.isExist
+                                this.type = it.type
+                                this.newHardware = it.newHardware
+                            }
+                        })
             }
         }
     }
@@ -192,7 +194,7 @@ class ModBusHardwareHelper : IHardwareHelper {
     ) {
         ModBusController.controlKeyCharge(
             !isOpen, idx,
-            slaveAddress?.toByte()
+            slaveAddress?.toByte(), done
         )
     }
 
@@ -202,11 +204,10 @@ class ModBusHardwareHelper : IHardwareHelper {
         lockIdxList: Int,
         done: ((ByteArray) -> Unit)?
     ) {
-
         ModBusController.controlLockBuckle(
             isOpen,
             slaveAddress?.toByte(),
-            lockIdxList,
+            lockIdxList, done
         )
     }
 

+ 2 - 1
ui-base/src/main/java/com/grkj/ui_base/base/BaseActivity.kt

@@ -19,6 +19,7 @@ import com.grkj.data.config.ISCSConfig
 import com.grkj.ui_base.dialog.LoadingDialog
 import com.grkj.ui_base.utils.event.JumpViewEvent
 import com.grkj.data.utils.event.LoadingEvent
+import com.grkj.data.utils.event.ToastEvent
 import com.grkj.ui_base.utils.extension.checkPermissions
 import com.grkj.ui_base.utils.extension.tip
 import com.grkj.ui_base.widget.CustomNavBar
@@ -134,7 +135,7 @@ abstract class BaseActivity<V : ViewDataBinding> : AppCompatActivity(), CustomAd
             }
 
             EventConstants.EVENT_TOAST_CODE -> {
-                (event.data as LoadingEvent).apply {
+                (event.data as ToastEvent).apply {
                     msg?.let {
                         showToast(it)
                     }