Browse Source

修正钥匙分配逻辑;发送工作票移除准备操作

Frankensteinly 10 tháng trước cách đây
mục cha
commit
96e63ef5eb

+ 15 - 24
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -2,7 +2,6 @@ package com.grkj.iscs
 
 import android.bluetooth.BluetoothGatt
 import android.os.Build
-import android.util.Log
 import androidx.appcompat.app.AppCompatActivity
 import com.clj.fastble.BleManager
 import com.clj.fastble.data.BleDevice
@@ -393,14 +392,13 @@ object BusinessManager {
             }
 
             override fun onScanStarted(success: Boolean) {
-                LogUtil.d("扫描开始:${success}")
+                LogUtil.i("onScanStarted:${success}")
 //                deviceList.clear()
             }
 
             override fun onScanning(bleDevice: BleDevice?) {
                 bleDevice?.let {
-                    LogUtil.d("扫描到的设备:${it.mac}")
-                    // TODO 在这里进行连接
+                    LogUtil.i("onScanning:${it.mac}")
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                         if (!it.name.isNullOrBlank()) {
                             deviceList.add(BleBean(it))
@@ -454,6 +452,7 @@ object BusinessManager {
 
                 override fun onConnectFail(bleDevice: BleDevice?, exception: BleException?) {
                     loadingCallBack?.invoke(false, CommonUtils.getStr(R.string.ble_connect_fail), false)
+                    LogUtil.e("onConnectFail : $bleDevice - ${exception?.description}")
                     prepareDoneCallBack?.invoke(false, null)
                 }
 
@@ -476,7 +475,7 @@ object BusinessManager {
 
                 override fun onDisConnected(isActiveDisConnected: Boolean, device: BleDevice?, gatt: BluetoothGatt?, status: Int) {
                     loadingCallBack?.invoke(false, null, false)
-                    ToastUtils.tip(CommonUtils.getStr(R.string.ble_disconnect))
+                    LogUtil.i("onDisConnected : $device")
                     getBleDeviceByMac(device?.mac)?.let {
                         deviceList.remove(it)
                     }
@@ -567,7 +566,7 @@ object BusinessManager {
     /******************************************蓝牙通用准备结束******************************************/
 
     fun getBleDeviceByMac(mac: String?): BleBean? {
-        return deviceList.find { it.bleDevice.mac == mac }
+        return deviceList.find { it.bleDevice.mac == mac && BleManager.getInstance().isConnected(it.bleDevice) }
     }
 
     /**
@@ -579,24 +578,16 @@ object BusinessManager {
         activity: AppCompatActivity,
         loadingCallBack: ((Boolean, String?, Boolean?) -> Unit)?,
     ) {
-        prepareBle(mac, activity, loadingCallBack) { done, bleBean ->
-            if (done) {
-                Executor.delayOnMain(500) {
-                    // TODO 蓝牙准备操作
-//                    val bleBean = getBleDeviceByMac(mac)
-//                    if (bleBean == null) {
-//                        ToastUtils.tip(R.string.simple_key_is_not_connected)
-//                        return@delayOnMain
-//                    }
-                    // 单bleBean json赋值
-                    bleBean?.ticketSend = generateTicketSendJson(ticketDetail)
-                    bleBean?.ticketSend?.let { itJson ->
-                        sendTicket(itJson, bleBean.bleDevice, loadingCallBack)
-                    }
-                }
-            } else {
-                loadingCallBack?.invoke(false, null, false)
-            }
+        // TODO 蓝牙准备操作
+        val bleBean = getBleDeviceByMac(mac)
+        if (bleBean == null) {
+//            ToastUtils.tip(R.string.simple_key_is_not_connected)
+            return
+        }
+        // 单bleBean json赋值
+        bleBean?.ticketSend = generateTicketSendJson(ticketDetail)
+        bleBean?.ticketSend?.let { itJson ->
+            sendTicket(itJson, bleBean.bleDevice, loadingCallBack)
         }
     }
 

+ 11 - 3
app/src/main/java/com/grkj/iscs/modbus/ModBusController.kt

@@ -1,6 +1,8 @@
 package com.grkj.iscs.modbus
 
 import android.content.Context
+import com.clj.fastble.BleManager
+import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
 import com.grkj.iscs.extentions.removeLeadingZeros
 import com.grkj.iscs.extentions.toHexStrings
@@ -463,7 +465,9 @@ object ModBusController {
     }
 
     /**
-     * 获取一个钥匙(基于钥匙柜和便携柜不存在接一起的情况)
+     * 获取一个钥匙(存在的、有RFID、有Mac、连接的)
+     *
+     * @return 底座地址,钥匙
      */
     fun getOneKey(): Pair<Byte, DockBean.KeyBean?>? {
         val keyDockList = dockList.filter { it.type == DOCK_TYPE_KEY || it.type == DOCK_TYPE_PORTABLE }
@@ -472,11 +476,15 @@ object ModBusController {
             ToastUtils.tip(R.string.key_is_not_enough)
             return null
         }
-        val key = getKeyByRfid(keyList[0].rfid!!)
 
+        val key = keyList.find { it.isExist && it.rfid != null && it.mac != null &&
+                BleManager.getInstance().isConnected(BusinessManager.getBleDeviceByMac(it.mac!!)?.bleDevice) }
         val addr = keyDockList.find { it.getKeyList().any { it.rfid == key?.rfid } }?.addr
 
-        return Pair(addr!!, key)
+        if (key == null || addr == null) {
+            return null
+        }
+        return Pair(addr, key)
     }
 
     /**