Procházet zdrojové kódy

refactor(更新) :
- 修改钥匙连接策略

周文健 před 4 měsíci
rodič
revize
9ba38f9d4c

+ 11 - 0
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -1333,6 +1333,17 @@ object BusinessManager {
                 if (finishedStatus.first) {
                     Executor.delayOnMain(500) {
                         handleKeyReturn(bleDevice, workTicketGetBO, finishedStatus.second)
+                        //检查钥匙是否代取,如果是的话给钥匙
+                        val keyBean = ModBusController.getKeyByMac(bleDevice.mac)
+                        mDeviceTakeList.find { it.deviceType == DEVICE_TYPE_KEY && it.nfc == keyBean?.rfid }
+                            ?.let { itKey ->
+                                sendLoadingEventMsg(
+                                    MyApplication.instance?.applicationContext!!.getString(
+                                        R.string.ble_connecting
+                                    )
+                                )
+                                handleGiveKey(itKey)
+                            }
                     }
                 } else {
                     // 当前策略:作业票未完成禁止归还钥匙

+ 7 - 5
app/src/main/java/com/grkj/iscs/modbus/ModBusController.kt

@@ -718,7 +718,6 @@ object ModBusController {
             .forEach { dock ->
                 dock.type?.let { dockType ->
                     ModBusCMDHelper.generateAllKeyBuckleOpenCmd(dockType).let { cmd ->
-                        LogUtil.i("硬件:打开所有钥匙锁仓,${dock.addr},${cmd.data}")
                         modBusManager?.sendTo(dock.addr, cmd) { res ->
                         }
                     }
@@ -765,9 +764,7 @@ object ModBusController {
     ) {
         slaveAddress?.let {
             ModBusCMDHelper.generateKeyBuckleChargeCmd(isOpen, if (isLeft) 0 else 1)?.let { cmd ->
-                LogUtil.i("钥匙充电:${isOpen},${isLeft},${slaveAddress},${cmd.data.toHexStrings()}")
                 modBusManager?.sendTo(it, cmd) { res ->
-                    LogUtil.i("钥匙充电接收:${isOpen},${isLeft},${slaveAddress},${res.toHexStrings()}")
                     done?.invoke(res)
                 }
             }
@@ -1024,7 +1021,7 @@ object ModBusController {
             dockList.filter { it.type == DOCK_TYPE_KEY || it.type == DOCK_TYPE_PORTABLE }
                 .sortedBy { it.addr }.onEach { it.deviceList.sortBy { dev -> dev.idx } }
 
-        val keyList = keyDockList.flatMap { it.deviceList }.apply {
+        var keyList = keyDockList.flatMap { it.deviceList }.apply {
             LogUtil.i("keyStatus:${this}")
         }.filterIsInstance<DockBean.KeyBean>()
             .filterIndexed { idx, _ -> (idx + 1) !in slotCols }.filter { kb ->
@@ -1036,7 +1033,12 @@ object ModBusController {
             ToastUtils.tip(R.string.no_available_key)
             return null
         }
-        keyList.sortedBy { BusinessManager.getBleDeviceByMac(it.mac)?.token != null }
+        keyList = keyList.sortedWith(
+            compareByDescending<DockBean.KeyBean> {
+                BleManager.getInstance().isConnected(it.mac)
+            }    // 主键:在线优先
+                .thenByDescending { BusinessManager.getBleDeviceByMac(it.mac)?.token != null } // 次键:有 token 优先
+        )
 
         for (kb in keyList) {
             val mac = kb.mac ?: continue