Переглянути джерело

refactor(更新) :
- 指纹录入提示修改
- 断开连接清理deviceList

周文健 3 місяців тому
батько
коміт
47731f57dc

+ 4 - 1
app/src/main/java/com/grkj/iscs_mars/BusinessManager.kt

@@ -155,7 +155,7 @@ object BusinessManager {
                             if (it.data.res == 1) {
                                 // 只能在这里断开,不能全部断开
                                 BleManager.getInstance().disconnect(it.data.bleBean.bleDevice)
-
+                                deviceList.removeIf { device -> device.bleDevice.mac == it.data.bleBean.bleDevice.mac }
                                 // 打开钥匙卡扣
                                 val keyBean =
                                     ModBusController.getKeyByMac(it.data.bleBean.bleDevice.mac)
@@ -1352,6 +1352,7 @@ object BusinessManager {
                             sendLoadingEventMsg(null, false)
                             ToastUtils.tip(R.string.continue_the_ticket)
                             BleManager.getInstance().disconnect(bleDevice)
+                            deviceList.removeIf { device -> device.bleDevice.mac == bleDevice.mac }
                             // 打开卡扣,防止初始化的时候选择不处理钥匙导致无法使用
                             val dock = ModBusController.getDockByKeyMac(bleDevice.mac)
                             val keyBean = dock?.getKeyList()?.find { it.mac == bleDevice.mac }
@@ -1451,6 +1452,7 @@ object BusinessManager {
                                     sendLoadingEventMsg(null, false)
                                     ToastUtils.tip(R.string.continue_the_ticket)
                                     BleManager.getInstance().disconnect(bleDevice)
+                                    deviceList.removeIf { device -> device.bleDevice.mac == bleDevice.mac }
                                     // 打开卡扣,防止初始化的时候选择不处理钥匙导致无法使用
                                     if (workTicketGetBO.data?.all { it.dataList?.all { it.closed == 1 } == true } == true) {
                                         workTicketGetBO.data?.firstOrNull()?.taskCode?.toLong()
@@ -1830,6 +1832,7 @@ object BusinessManager {
                         //连上之后没有工作票要下发就断开 看是否还有设备等待连接,没有就不断开,有就让路,一般是初始化的时候
                         if (BleConnectionManager.hasConnectWait()) {
                             BleManager.getInstance().disconnect(currentModeMsg.bleBean.bleDevice)
+                            deviceList.removeIf { device -> device.bleDevice.mac == currentModeMsg.bleBean.bleDevice.mac }
                         }
                     }
                 }

+ 4 - 0
app/src/main/java/com/grkj/iscs_mars/ble/BleConnectionManager.kt

@@ -103,6 +103,7 @@ object BleConnectionManager {
                 if (connectNow && !isDisconnectAll) {
                     LogUtil.i("蓝牙连接-超过最大连接数,但是需要立即连接,断开所有连接进行连接")
                     BleManager.getInstance().disconnectAllDevice()
+                    deviceList.clear()
                     checkAndConnect(true)
                 } else {
                     ThreadUtils.runOnIODelayed(500) {
@@ -287,6 +288,7 @@ object BleConnectionManager {
         )
         ThreadUtils.runOnIO {
             BleManager.getInstance().disconnect(bleDevice)
+            deviceList.removeIf { device -> device.bleDevice.mac == bleDevice.mac }
             delay(300)
             BleUtil.instance?.connectBySelect(
                 bleDevice, object : CustomBleGattCallback() {
@@ -655,6 +657,7 @@ object BleConnectionManager {
                         justWrite: ByteArray?
                     ) {
                         BleManager.getInstance().disconnect(bleDevice)
+                        deviceList.removeIf { device -> device.bleDevice.mac == bleDevice.mac }
                         ThreadUtils.runOnIO {
                             delay(800)
                             cont.resume(true)
@@ -686,6 +689,7 @@ object BleConnectionManager {
                     justWrite: ByteArray?
                 ) {
                     BleManager.getInstance().disconnect(bleDevice)
+                    deviceList.removeIf { device -> device.bleDevice.mac == bleDevice.mac }
                     LogUtil.i("设备录入-切换模式发送成功 : ${bleDevice.mac}")
                 }
 

+ 4 - 1
app/src/main/java/com/grkj/iscs_mars/modbus/ModBusController.kt

@@ -24,6 +24,7 @@ import com.grkj.iscs_mars.util.NetApi
 import com.grkj.iscs_mars.util.ToastUtils
 import com.grkj.iscs_mars.util.log.LogUtil
 import com.sik.sikcore.thread.ThreadUtils
+import kotlinx.coroutines.delay
 import java.util.concurrent.atomic.AtomicInteger
 import java.util.stream.Collectors
 
@@ -226,7 +227,9 @@ object ModBusController {
                                 if (keyInfo != null && !keyInfo.macAddress.isNullOrEmpty()) {
                                     // 更新mac
                                     updateKeyMac(dockBean.addr, key.isLeft, keyInfo.macAddress)
-                                    ThreadUtils.runOnIO {
+                                    controlKeyCharge(true, key.isLeft, dockBean.addr)
+                                    ThreadUtils.runOnMain {
+                                        delay(500)
                                         val isConnect =
                                             BleConnectionManager.tryConnectWithOptionalCharge(
                                                 keyInfo.macAddress

+ 3 - 1
app/src/main/java/com/grkj/iscs_mars/view/dialog/FingerScanDialog.kt

@@ -2,6 +2,7 @@ package com.grkj.iscs_mars.view.dialog
 
 import android.content.Context
 import android.graphics.Bitmap
+import android.widget.TextView
 import com.grkj.iscs_mars.databinding.DialogFingerScanBinding
 import com.grkj.iscs_mars.util.FingerprintUtil
 import com.grkj.iscs_mars.view.base.BaseDialog
@@ -9,7 +10,7 @@ import com.grkj.iscs_mars.view.base.BaseDialog
 /**
  * 指纹采集弹框
  */
-class FingerScanDialog(val ctx: Context, var callback: (Bitmap?) -> Unit,var clear:()-> Unit) :
+class FingerScanDialog(val ctx: Context, var callback: (Bitmap?) -> Unit,var clear:()-> Unit,var updateTip:(TextView?)-> Unit) :
     BaseDialog<DialogFingerScanBinding>(ctx) {
     override val viewBinding: DialogFingerScanBinding
         get() = DialogFingerScanBinding.inflate(layoutInflater)
@@ -19,6 +20,7 @@ class FingerScanDialog(val ctx: Context, var callback: (Bitmap?) -> Unit,var cle
             clear()
             dismiss()
         }
+        updateTip(mBinding?.pressTip)
     }
 
     override fun show() {

+ 18 - 1
app/src/main/java/com/grkj/iscs_mars/view/fragment/FingerprintConfigFragment.kt

@@ -1,5 +1,6 @@
 package com.grkj.iscs_mars.view.fragment
 
+import android.widget.TextView
 import com.grkj.iscs_mars.R
 import com.grkj.iscs_mars.databinding.FragmentFingerprintConfigBinding
 import com.grkj.iscs_mars.model.vo.characteristic.CharacteristicPageRespVO
@@ -30,6 +31,7 @@ class FingerprintConfigFragment :
     private var mFingerprintGroupName: String = ""
     private val maxPressTimes = 3
     private val inputFingerprintErrorTimes = 3
+    private var pressTip: TextView? = null
     private val inputFingerprintIds: MutableList<Long> = mutableListOf()
 
     override val viewBinding: FragmentFingerprintConfigBinding
@@ -130,11 +132,19 @@ class FingerprintConfigFragment :
                                 mFingerprintGroupName = UUID.randomUUID().toString()
                                 mFingerprintPressTimes = 0
                                 mFingerprintInputErrorTimes = 0
+                                pressTip?.text = getString(
+                                    R.string.fingerprint_scan_tip,
+                                    maxPressTimes - mFingerprintPressTimes
+                                )
                                 presenter?.deleteFinger(inputFingerprintIds.joinToString(",")) {
                                     refreshFingerList()
                                 }
                                 ToastUtils.tip(R.string.please_re_press_fingerprint_again)
                             } else {
+                                pressTip?.text = getString(
+                                    R.string.fingerprint_scan_tip,
+                                    maxPressTimes - mFingerprintPressTimes
+                                )
                                 ToastUtils.tip(R.string.please_press_fingerprint_again)
                             }
                         } else {
@@ -143,6 +153,10 @@ class FingerprintConfigFragment :
                                 mFingerprintGroupName = UUID.randomUUID().toString()
                                 mFingerprintPressTimes = 0
                                 mFingerprintInputErrorTimes = 0
+                                pressTip?.text = getString(
+                                    R.string.fingerprint_scan_tip,
+                                    maxPressTimes - mFingerprintPressTimes
+                                )
                                 presenter?.deleteFinger(inputFingerprintIds.joinToString(",")) {
                                     refreshFingerList()
                                 }
@@ -151,10 +165,13 @@ class FingerprintConfigFragment :
                         }
                     }
                 }
-            }) {
+            }, {
+                pressTip = null
                 presenter?.deleteFinger(inputFingerprintIds.joinToString(",")) {
                     refreshFingerList()
                 }
+            }) {
+                pressTip = it
             }
         }
         mFingerprintPressTimes = 0

+ 2 - 2
app/src/main/java/com/grkj/iscs_mars/view/presenter/JobProgressPresenter.kt

@@ -147,8 +147,8 @@ class JobProgressPresenter : BasePresenter<IJobProgressView>() {
                         ToastUtils.tip(R.string.please_take_out_ready_device_first)
                     }
                     val isNeedKey =
-//                        ticketDetail.ticketKeyVOList?.filter { it.keyId == null }?.size != 1
-//                                &&
+                        ticketDetail.ticketKeyVOList?.filter { it.keyId == null }?.size != 1
+                                &&
                                 BusinessManager.mDeviceTakeList.none { it.deviceType == DEVICE_TYPE_KEY && it.ticketId == ticketId }
                     LogUtil.i("needLockCount = $needLockCount , readyLockCount = $readyLockCount, realCount = $realCount, isNeedKey = $isNeedKey")
                     BusinessManager.checkEquipCount(realCount, isNeedKey) { keyPair, lockMap ->

+ 1 - 0
app/src/main/java/com/grkj/iscs_mars/view/viewmodel/DeviceRegistrationKeyAndLockViewModel.kt

@@ -98,6 +98,7 @@ class DeviceRegistrationKeyAndLockViewModel : BaseViewModel() {
 //                BleConnectionManager.scanOnlineKeyLockMacAndSwitchModeToClose()
 //            LogUtil.i("设备录入-是否所有关闭命令发送成功:${allDeviceCloseCmdSend}")
             BleManager.getInstance().disconnectAllDevice()
+            BusinessManager.deviceList.clear()
             BusinessManager.registerInitListener {
                 if (isStartCheckKey) {
                     return@registerInitListener

+ 1 - 0
app/src/main/res/layout/dialog_finger_scan.xml

@@ -22,6 +22,7 @@
             android:background="@mipmap/login_fingerprint" />
 
         <TextView
+            android:id="@+id/press_tip"
             style="@style/CommonTextView"
             android:layout_marginVertical="@dimen/common_spacing_small"
             android:text="@string/fingerprint_scan_tip" />

+ 1 - 1
app/src/main/res/values-en/strings.xml

@@ -227,7 +227,7 @@
     <string name="fingerprint_config_tip">Up to %1$d fingerprints can be added</string>
     <string name="fingerprint">Fingerprint</string>
     <string name="fingerprint_delete_confirm_tip">Confirm to delete %s?</string>
-    <string name="fingerprint_scan_tip">Please press fingerprint sensor</string>
+    <string name="fingerprint_scan_tip">Please press the fingerprint recognition area %d times in succession</string>
     <string name="fingerprint_add_success_tip">Fingerprint added successfully</string>
     <string name="exception_type_tip">Please select exception type</string>
     <string name="exception_level_tip">Please select severity level</string>

+ 1 - 1
app/src/main/res/values-zh/strings.xml

@@ -227,7 +227,7 @@
     <string name="fingerprint_config_tip">最多可以添加%1$d个指纹数据</string>
     <string name="fingerprint">指纹</string>
     <string name="fingerprint_delete_confirm_tip">确定要删除%s吗?</string>
-    <string name="fingerprint_scan_tip">请按压指纹识别区</string>
+    <string name="fingerprint_scan_tip">请连续按压%d次指纹识别区</string>
     <string name="fingerprint_add_success_tip">已成功添加指纹数据</string>
     <string name="exception_type_tip">请选择异常类型</string>
     <string name="exception_level_tip">请选择异常等级</string>

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -227,7 +227,7 @@
     <string name="fingerprint_config_tip">最多可以添加%1$d个指纹数据</string>
     <string name="fingerprint">指纹</string>
     <string name="fingerprint_delete_confirm_tip">确定要删除%s吗?</string>
-    <string name="fingerprint_scan_tip">请按压指纹识别区</string>
+    <string name="fingerprint_scan_tip">请连续按压%d次指纹识别区</string>
     <string name="fingerprint_add_success_tip">已成功添加指纹数据</string>
     <string name="exception_type_tip">请选择异常类型</string>
     <string name="exception_level_tip">请选择异常等级</string>