|
@@ -650,11 +650,39 @@ object BusinessManager {
|
|
|
// 单bleBean json赋值
|
|
// 单bleBean json赋值
|
|
|
bleBean.ticketSend = generateTicketSendJson(ticketDetail, lockList)
|
|
bleBean.ticketSend = generateTicketSendJson(ticketDetail, lockList)
|
|
|
bleBean.ticketSend?.let { itJson ->
|
|
bleBean.ticketSend?.let { itJson ->
|
|
|
- sendTicket(itJson, bleBean.bleDevice, loadingCallBack)
|
|
|
|
|
|
|
+ sendTicketWithRetry(itJson, bleBean.bleDevice, loadingCallBack)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 带重试的下发工作票,重试次数3,间隔500ms
|
|
|
|
|
+ */
|
|
|
|
|
+ private fun sendTicketWithRetry(
|
|
|
|
|
+ json: String,
|
|
|
|
|
+ bleDevice: BleDevice,
|
|
|
|
|
+ loadingCallBack: ((Boolean, String?, Boolean?) -> Unit)?,
|
|
|
|
|
+ maxRetries: Int = 3,
|
|
|
|
|
+ delayMillis: Long = 500
|
|
|
|
|
+ ) {
|
|
|
|
|
+ var retryCount = 0
|
|
|
|
|
+
|
|
|
|
|
+ fun attemptSend() {
|
|
|
|
|
+ sendTicket(json, bleDevice, loadingCallBack) { sendRst ->
|
|
|
|
|
+ if (!sendRst && retryCount < maxRetries) {
|
|
|
|
|
+ retryCount++
|
|
|
|
|
+ // 等待一段时间后再次尝试
|
|
|
|
|
+ Executor.delayOnMain(delayMillis) {
|
|
|
|
|
+ LogUtil.i("Retry attempt, mac : ${bleDevice.mac}, retryCount : $retryCount")
|
|
|
|
|
+ attemptSend()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ attemptSend()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 读取工作票完成情况
|
|
* 读取工作票完成情况
|
|
|
*/
|
|
*/
|
|
@@ -674,7 +702,7 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private fun sendTicket(jsonStr: String, bleDevice: BleDevice, loadingCallBack: ((Boolean, String?, Boolean?) -> Unit)?) {
|
|
|
|
|
|
|
+ private fun sendTicket(jsonStr: String, bleDevice: BleDevice, loadingCallBack: ((Boolean, String?, Boolean?) -> Unit)?, processCallback: ((Boolean) -> Unit)? = null) {
|
|
|
loadingCallBack?.invoke(true, "开始下发工作票...", null)
|
|
loadingCallBack?.invoke(true, "开始下发工作票...", null)
|
|
|
BleCmdManager.sendWorkTicket(jsonStr, bleDevice = bleDevice, callback = object : CustomBleWriteCallback() {
|
|
BleCmdManager.sendWorkTicket(jsonStr, bleDevice = bleDevice, callback = object : CustomBleWriteCallback() {
|
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
@@ -685,6 +713,7 @@ object BusinessManager {
|
|
|
override fun onWriteFailure(exception: BleException?) {
|
|
override fun onWriteFailure(exception: BleException?) {
|
|
|
LogUtil.e("sendTicket fail : ${bleDevice.mac}")
|
|
LogUtil.e("sendTicket fail : ${bleDevice.mac}")
|
|
|
loadingCallBack?.invoke(false, "工作票下发失败", null)
|
|
loadingCallBack?.invoke(false, "工作票下发失败", null)
|
|
|
|
|
+ processCallback?.invoke(false)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|