|
|
@@ -24,8 +24,8 @@ import com.grkj.iscs_mars.modbus.DockBean
|
|
|
import com.grkj.iscs_mars.modbus.ModBusController
|
|
|
import com.grkj.iscs_mars.modbus.ModBusController.dockList
|
|
|
import com.grkj.iscs_mars.modbus.ModBusController.getOneKey
|
|
|
-import com.grkj.iscs_mars.model.Constants
|
|
|
import com.grkj.iscs_mars.model.Constants.USER_TYPE_LOCKER
|
|
|
+import com.grkj.iscs_mars.model.DeviceConst
|
|
|
import com.grkj.iscs_mars.model.DeviceConst.DEVICE_TYPE_CARD
|
|
|
import com.grkj.iscs_mars.model.DeviceConst.DEVICE_TYPE_FINGERPRINT
|
|
|
import com.grkj.iscs_mars.model.DeviceConst.DEVICE_TYPE_KEY
|
|
|
@@ -84,7 +84,6 @@ import com.sik.sikcore.date.TimeUtils
|
|
|
import com.sik.sikcore.thread.ThreadUtils
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
import kotlinx.coroutines.async
|
|
|
-import kotlinx.coroutines.coroutineScope
|
|
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
|
|
import kotlinx.coroutines.withContext
|
|
|
import kotlin.coroutines.resume
|
|
|
@@ -251,19 +250,16 @@ object BusinessManager {
|
|
|
val result = suspendCancellableCoroutine<Boolean> { cont ->
|
|
|
NetApi.getMySelfState {
|
|
|
if (it) {
|
|
|
- val maxPowerMac = getMaxPowerKey(mac ?: "").mac
|
|
|
- if (maxPowerMac != mac) {
|
|
|
- BleSendDispatcher.scheduleDisconnect(mac ?: "", delayMillis)
|
|
|
- connectExistsKey(listOf(mac ?: ""))
|
|
|
- } else {
|
|
|
- connectExistsKey()
|
|
|
+ LogUtil.i("蓝牙连接-存在上锁解锁待办")
|
|
|
+ if (BleSendDispatcher.canConnect()) {
|
|
|
+ LogUtil.i("蓝牙连接-发送队列可以连接")
|
|
|
+ mac?.let {
|
|
|
+ connectExistsKey(listOf(it))
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
- mac?.let {
|
|
|
- BleSendDispatcher.scheduleDisconnect(mac, delayMillis)
|
|
|
- } ?: let {
|
|
|
- BleSendDispatcher.disconnectAll(delayMillis)
|
|
|
- }
|
|
|
+ LogUtil.i("蓝牙连接-没有待办数据,延迟断开所有发送连接")
|
|
|
+ BleSendDispatcher.disconnectAll(delayMillis)
|
|
|
}
|
|
|
if (cont.isActive) {
|
|
|
cont.resume(it)
|
|
|
@@ -370,13 +366,6 @@ object BusinessManager {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 获取最多电量的钥匙
|
|
|
- */
|
|
|
- fun getMaxPowerKey(mac: String): DockBean.KeyBean {
|
|
|
- return ModBusController.getMaxPowerKey(mac)
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 硬件状态
|
|
|
* 1、检测到有钥匙
|
|
|
@@ -652,6 +641,28 @@ object BusinessManager {
|
|
|
ModBusController.updateSwitchStatus(done)
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 钥匙归还提示确认弹窗,当前策略:作业票未完成是否强制上传数据
|
|
|
+ */
|
|
|
+ private fun showKeyReturnUploadDataForceDialog(onConfirm: () -> Unit, onCancel: () -> Unit) {
|
|
|
+ val ctx = ActivityUtils.currentActivity() as BaseActivity<*>
|
|
|
+ val dlg = TipDialog(ctx)
|
|
|
+ dlg.setTip(ctx.getString(R.string.key_return_force_tip))
|
|
|
+ dlg.setType(TipDialog.TYPE_ALL)
|
|
|
+ // 加个选择判断,如果是直接取消弹框而不是点击“确定”,当成确定
|
|
|
+ var state = 0
|
|
|
+ dlg.setConfirmListener {
|
|
|
+ state = 1
|
|
|
+ onConfirm.invoke()
|
|
|
+ }
|
|
|
+ dlg.setOnDismissListener {
|
|
|
+ if (state == 0) {
|
|
|
+ onConfirm.invoke()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dlg.show()
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 钥匙归还提示确认弹框,当前策略:作业票未完成禁止归还钥匙
|
|
|
*/
|
|
|
@@ -854,8 +865,7 @@ object BusinessManager {
|
|
|
* 注册连接监听
|
|
|
*/
|
|
|
fun registerConnectListener(
|
|
|
- mac: String, connectNow: Boolean = false,
|
|
|
- isSend: Boolean = true, callBack: ((
|
|
|
+ mac: String, connectNow: Boolean = false, isSend: Boolean = true, callBack: ((
|
|
|
Boolean, BleBean?
|
|
|
) -> Unit)? = null
|
|
|
) {
|
|
|
@@ -894,14 +904,11 @@ object BusinessManager {
|
|
|
activity: AppCompatActivity,
|
|
|
isNeedLoading: Boolean = false,
|
|
|
) {
|
|
|
- registerConnectListener(mac, true, true) { isDone, bleBean ->
|
|
|
- if (!isDone) {
|
|
|
- sendTicketBusiness(isLock, mac, ticketDetail, lockList, activity, isNeedLoading)
|
|
|
- return@registerConnectListener
|
|
|
- }
|
|
|
+ if (BleSendDispatcher.isConnected(mac)) {
|
|
|
+ val bleBean = getBleDeviceByMac(mac)
|
|
|
if (bleBean == null) {
|
|
|
LogUtil.e("sendTicketBusiness fail : $mac, bleBean is null")
|
|
|
- return@registerConnectListener
|
|
|
+ return
|
|
|
}
|
|
|
// 单bleBean json赋值
|
|
|
bleBean.retryCount = 0
|
|
|
@@ -909,6 +916,10 @@ object BusinessManager {
|
|
|
bleBean.ticketSend?.let { itJson ->
|
|
|
sendTicketWithRetry(itJson, bleBean.bleDevice, isNeedLoading)
|
|
|
}
|
|
|
+ } else {
|
|
|
+ ThreadUtils.runOnIODelayed(1000) {
|
|
|
+ sendTicketBusiness(isLock, mac, ticketDetail, lockList, activity, isNeedLoading)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -946,18 +957,21 @@ object BusinessManager {
|
|
|
private fun getTicketStatusBusiness(
|
|
|
mac: String, isNeedLoading: Boolean = false
|
|
|
) {
|
|
|
- registerConnectListener(mac, true, false) { isDone, bleBean ->
|
|
|
- if (isDone) {
|
|
|
- Executor.delayOnMain(500) {
|
|
|
- getTicketStatusWithRetry(bleBean!!.bleDevice, isNeedLoading)
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (isNeedLoading) sendEventMsg(
|
|
|
- MsgEvent(
|
|
|
- MSG_EVENT_LOADING, LoadingMsg(false, null, false)
|
|
|
- )
|
|
|
+ LogUtil.i("检查钥匙连接情况")
|
|
|
+ if (BleReturnDispatcher.isConnected(mac)) {
|
|
|
+ getBleDeviceByMac(mac)?.bleDevice?.let {
|
|
|
+ LogUtil.i("开始读取作业票")
|
|
|
+ getTicketStatusWithRetry(
|
|
|
+ it,
|
|
|
+ isNeedLoading
|
|
|
)
|
|
|
}
|
|
|
+ } else {
|
|
|
+ if (isNeedLoading) sendEventMsg(
|
|
|
+ MsgEvent(
|
|
|
+ MSG_EVENT_LOADING, LoadingMsg(false, null, false)
|
|
|
+ )
|
|
|
+ )
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1062,27 +1076,28 @@ object BusinessManager {
|
|
|
taskCode = vo.ticketId.toString(), codeId = 1
|
|
|
)
|
|
|
val taskList = ArrayList<WorkTicketSendBO.DataBO.DataListBO>()
|
|
|
- vo.ticketPointsVOList?.let { itList ->
|
|
|
- itList.forEach { pointVO ->
|
|
|
- if (vo.noUnlockTicketPointsVOSet?.any { it.pointId == pointVO.pointId } == true && isLock == false) {
|
|
|
- return@forEach
|
|
|
- }
|
|
|
- val task = WorkTicketSendBO.DataBO.DataListBO(
|
|
|
- dataId = pointVO.pointId?.toInt(),
|
|
|
- equipRfidNo = pointVO.pointNfc,
|
|
|
- equipName = pointVO.pointName,
|
|
|
- target = if (isLock) 0 else 1
|
|
|
- )
|
|
|
- if (!isLock) {
|
|
|
- task.infoRfidNo = pointVO.lockNfc
|
|
|
- }
|
|
|
- pointVO.prePointId?.let {
|
|
|
- task.prevId = it.toInt()
|
|
|
+ vo.ticketPointsVOList?.filter { it.pointStatus == if (isLock) "0" else "1" }
|
|
|
+ ?.let { itList ->
|
|
|
+ itList.forEach { pointVO ->
|
|
|
+ if (vo.noUnlockTicketPointsVOSet?.any { it.pointId == pointVO.pointId } == true && !isLock) {
|
|
|
+ return@forEach
|
|
|
+ }
|
|
|
+ val task = WorkTicketSendBO.DataBO.DataListBO(
|
|
|
+ dataId = pointVO.pointId?.toInt(),
|
|
|
+ equipRfidNo = pointVO.pointNfc,
|
|
|
+ equipName = pointVO.pointName,
|
|
|
+ target = if (isLock) 0 else 1
|
|
|
+ )
|
|
|
+ if (!isLock) {
|
|
|
+ task.infoRfidNo = pointVO.lockNfc
|
|
|
+ }
|
|
|
+ pointVO.prePointId?.let {
|
|
|
+ task.prevId = it.toInt()
|
|
|
+ }
|
|
|
+ // TODO partCode待补充
|
|
|
+ taskList.add(task)
|
|
|
}
|
|
|
- // TODO partCode待补充
|
|
|
- taskList.add(task)
|
|
|
}
|
|
|
- }
|
|
|
dataBO.dataList = taskList
|
|
|
bo.data = mutableListOf(dataBO)
|
|
|
if (isLock) {
|
|
|
@@ -1150,8 +1165,7 @@ object BusinessManager {
|
|
|
if (isSuccess) {
|
|
|
//尝试使用命令作为心跳 ,获取token完成之后就要建立心跳了
|
|
|
BleCmdManager.getPower(
|
|
|
- bleBean.bleDevice.mac,
|
|
|
- null
|
|
|
+ bleBean.bleDevice.mac, null
|
|
|
)
|
|
|
}
|
|
|
}
|
|
|
@@ -1291,10 +1305,21 @@ object BusinessManager {
|
|
|
if (isTimeout) {
|
|
|
LogUtil.e("getCurrentStatus timeout : mac = ${bleDevice.mac}, retryCount = $retryCount")
|
|
|
if (retryCount > 0) {
|
|
|
- Executor.delayOnMain(1000) {
|
|
|
- getCurrentStatus(from, bleDevice, retryCount - 1, timeoutCallBack)
|
|
|
+ if (from != 4) {
|
|
|
+ val canConnect = BleSendDispatcher.canConnect()
|
|
|
+ LogUtil.i("发送队列是否可以连接:${canConnect}")
|
|
|
+ if (BleSendDispatcher.isConnected(bleDevice.mac)) {
|
|
|
+ BleSendDispatcher.scheduleDisconnect(bleDevice.mac)
|
|
|
+ }
|
|
|
+ BleSendDispatcher.submit(bleDevice.mac) {
|
|
|
+ getCurrentStatus(
|
|
|
+ from, bleDevice, retryCount - 1, timeoutCallBack
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
+ BleSendDispatcher.scheduleDisconnect(bleDevice.mac)
|
|
|
+ BleReturnDispatcher.scheduleDisconnect(bleDevice.mac)
|
|
|
ModBusController.getKeyByMac(bleDevice.mac)?.rfid?.let {
|
|
|
addExceptionKey(it)
|
|
|
timeoutCallBack?.invoke(true)
|
|
|
@@ -1329,7 +1354,10 @@ object BusinessManager {
|
|
|
LogUtil.i("getCurrentStatus fail : ${bleDevice.mac}")
|
|
|
isTimeout = false
|
|
|
Executor.delayOnMain(1000) {
|
|
|
- getCurrentStatus(from, bleDevice, timeoutCallBack = timeoutCallBack)
|
|
|
+ getCurrentStatus(
|
|
|
+ from, bleDevice,
|
|
|
+ retryCount - 1, timeoutCallBack = timeoutCallBack
|
|
|
+ )
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
@@ -1459,7 +1487,20 @@ object BusinessManager {
|
|
|
} else {
|
|
|
// 当前策略:作业票未完成禁止归还钥匙
|
|
|
withContext(Dispatchers.Main) {
|
|
|
- showKeyReturnDialog {
|
|
|
+ showKeyReturnUploadDataForceDialog({
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ }) {
|
|
|
sendLoadingEventMsg(null, false)
|
|
|
ToastUtils.tip(R.string.continue_the_ticket)
|
|
|
BleReturnDispatcher.scheduleDisconnect(bleDevice.mac)
|
|
|
@@ -1495,20 +1536,21 @@ object BusinessManager {
|
|
|
val keyNfc = ModBusController.getKeyByMac(bleDevice.mac)?.rfid ?: "key rfid lost"
|
|
|
workTicketGetBO?.data?.forEach { data ->
|
|
|
val updateList = mutableListOf<LockPointUpdateReqVO>()
|
|
|
- data.dataList?.forEach { dataListDTO ->
|
|
|
- data.taskCode?.toLong()?.let {
|
|
|
- SPUtils.returnKey(it)
|
|
|
+ data.dataList?.filter { it.closed == 1 && it.status == it.target }
|
|
|
+ ?.forEach { dataListDTO ->
|
|
|
+ data.taskCode?.toLong()?.let {
|
|
|
+ SPUtils.returnKey(it)
|
|
|
+ }
|
|
|
+ val updateVO = LockPointUpdateReqVO(
|
|
|
+ data.taskCode?.toLong(),
|
|
|
+ dataListDTO.infoRfidNo,
|
|
|
+ dataListDTO.equipRfidNo,
|
|
|
+ keyNfc,
|
|
|
+ dataListDTO.target,
|
|
|
+ dataListDTO.status
|
|
|
+ )
|
|
|
+ updateList.add(updateVO)
|
|
|
}
|
|
|
- val updateVO = LockPointUpdateReqVO(
|
|
|
- data.taskCode?.toLong(),
|
|
|
- dataListDTO.infoRfidNo,
|
|
|
- dataListDTO.equipRfidNo,
|
|
|
- keyNfc,
|
|
|
- dataListDTO.target,
|
|
|
- dataListDTO.status
|
|
|
- )
|
|
|
- updateList.add(updateVO)
|
|
|
- }
|
|
|
|
|
|
sendLoadingEventMsg(null, false)
|
|
|
if (CAN_RETURN) {
|
|
|
@@ -1750,6 +1792,10 @@ object BusinessManager {
|
|
|
0 -> {
|
|
|
mDeviceTakeList.find { it.deviceType == DEVICE_TYPE_KEY && it.nfc == deviceTakeUpdateBO.nfc }
|
|
|
?.let { info ->
|
|
|
+ if (mDeviceTakeList.any { it.deviceType == DeviceConst.DEVICE_TYPE_LOCK && it.ticketId == info.ticketId }) {
|
|
|
+ LogUtil.i("存在未取出的挂锁,不继续操作")
|
|
|
+ return
|
|
|
+ }
|
|
|
sendLoadingEventMsg(null, false)
|
|
|
SPUtils.takeKey(info.ticketId)
|
|
|
NetApi.updateKeyTake(
|
|
|
@@ -1927,45 +1973,20 @@ object BusinessManager {
|
|
|
return
|
|
|
}
|
|
|
updateBo?.let { itBO ->
|
|
|
- NetApi.getStepDetail(itBO.ticketId) {
|
|
|
- var step = 0
|
|
|
- it?.filter { it.stepStatus == "1" }
|
|
|
- ?.maxByOrNull { it.stepIndex!! }?.stepIndex?.let {
|
|
|
- step = it
|
|
|
- }
|
|
|
- NetApi.getTicketDetail(itBO.ticketId) { ticketDetail, _ ->
|
|
|
- if (ticketDetail == null) {
|
|
|
- return@getTicketDetail
|
|
|
- }
|
|
|
- val role = ticketDetail?.ticketUserVOList?.find {
|
|
|
- it.userId == SPUtils.getLoginUser(MyApplication.instance?.applicationContext!!)?.userId && it.userType == USER_TYPE_LOCKER
|
|
|
- }
|
|
|
- if (role == null) {
|
|
|
- ToastUtils.tip(R.string.you_are_not_locker_tip)
|
|
|
- return@getTicketDetail
|
|
|
- }
|
|
|
- if (step == 4) { // 上锁工作票
|
|
|
- sendTicketBusiness(
|
|
|
- true,
|
|
|
- currentModeMsg.bleBean.bleDevice.mac,
|
|
|
- ticketDetail,
|
|
|
- ticketDetail.ticketLockVOList?.filter { it.lockStatus != "2" }
|
|
|
- ?.map { it.lockNfc }?.toMutableList(),
|
|
|
- ActivityUtils.currentActivity() as BaseActivity<*>,
|
|
|
- true
|
|
|
- )
|
|
|
- } else if (step == 7) { // 解锁工作票
|
|
|
- sendTicketBusiness(
|
|
|
- false,
|
|
|
- currentModeMsg.bleBean.bleDevice.mac,
|
|
|
- ticketDetail,
|
|
|
- null,
|
|
|
- ActivityUtils.currentActivity() as BaseActivity<*>,
|
|
|
- true
|
|
|
- )
|
|
|
- }
|
|
|
+ if (BleReturnDispatcher.isConnected(currentModeMsg.bleBean.bleDevice.mac)) {
|
|
|
+ LogUtil.i("当前钥匙在归还队列,断开连接")
|
|
|
+ BleReturnDispatcher.scheduleDisconnect(currentModeMsg.bleBean.bleDevice.mac)
|
|
|
+ }
|
|
|
+ if (BleSendDispatcher.isConnected(currentModeMsg.bleBean.bleDevice.mac)) {
|
|
|
+ LogUtil.i("当前钥匙已在发送队列连接")
|
|
|
+ checkAndSendTicket(currentModeMsg, itBO)
|
|
|
+ } else {
|
|
|
+ LogUtil.i("当前钥匙未加入发送队列,连接后发送")
|
|
|
+ BleSendDispatcher.submit(currentModeMsg.bleBean.bleDevice.mac) {
|
|
|
+ checkAndSendTicket(currentModeMsg, itBO)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
} ?: let {
|
|
|
ModBusController.updateKeyReadyStatus(
|
|
|
currentModeMsg.bleBean.bleDevice.mac, true, 4
|
|
|
@@ -1977,6 +1998,16 @@ object BusinessManager {
|
|
|
checkMyTodoForHandleKey(currentModeMsg.bleBean.bleDevice.mac)
|
|
|
}
|
|
|
}
|
|
|
+ } ?: let {
|
|
|
+ ModBusController.updateKeyReadyStatus(
|
|
|
+ currentModeMsg.bleBean.bleDevice.mac, true, 4
|
|
|
+ )
|
|
|
+ sendLoadingEventMsg(null, false)
|
|
|
+ BleReturnDispatcher.scheduleDisconnect(currentModeMsg.bleBean.bleDevice.mac)
|
|
|
+ //连上之后没有工作票要下发就断开 看是否还有设备等待连接,没有就不断开,有就让路,一般是初始化的时候
|
|
|
+ ThreadUtils.runOnIO {
|
|
|
+ checkMyTodoForHandleKey(currentModeMsg.bleBean.bleDevice.mac)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
// 故障模式
|
|
|
@@ -1989,6 +2020,54 @@ object BusinessManager {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查并下发作业票
|
|
|
+ */
|
|
|
+ private fun checkAndSendTicket(currentModeMsg: CurrentModeMsg, itBO: DeviceTakeUpdateBO) {
|
|
|
+ NetApi.getStepDetail(itBO.ticketId) {
|
|
|
+ var step = 0
|
|
|
+ it?.filter { it.stepStatus == "1" }
|
|
|
+ ?.maxByOrNull { it.stepIndex!! }?.stepIndex?.let {
|
|
|
+ step = it
|
|
|
+ }
|
|
|
+ NetApi.getTicketDetail(itBO.ticketId) { ticketDetail, _ ->
|
|
|
+ if (ticketDetail == null) {
|
|
|
+ return@getTicketDetail
|
|
|
+ }
|
|
|
+ val role = ticketDetail?.ticketUserVOList?.find {
|
|
|
+ it.userId == SPUtils.getLoginUser(MyApplication.instance?.applicationContext!!)?.userId && it.userType == USER_TYPE_LOCKER
|
|
|
+ }
|
|
|
+ if (role == null) {
|
|
|
+ ToastUtils.tip(R.string.you_are_not_locker_tip)
|
|
|
+ return@getTicketDetail
|
|
|
+ }
|
|
|
+ if (step == 4) { // 上锁工作票
|
|
|
+ sendTicketBusiness(
|
|
|
+ true,
|
|
|
+ currentModeMsg.bleBean.bleDevice.mac,
|
|
|
+ ticketDetail,
|
|
|
+ ticketDetail.ticketLockVOList?.filter {
|
|
|
+ ticketDetail.ticketPointsVOList?.mapNotNull { it.lockId }
|
|
|
+ ?.contains(it.lockId) != true
|
|
|
+ }?.map { it.lockNfc }?.toMutableList(),
|
|
|
+ ActivityUtils.currentActivity() as BaseActivity<*>,
|
|
|
+ true
|
|
|
+ )
|
|
|
+ } else if (step == 7) { // 解锁工作票
|
|
|
+ sendTicketBusiness(
|
|
|
+ false,
|
|
|
+ currentModeMsg.bleBean.bleDevice.mac,
|
|
|
+ ticketDetail,
|
|
|
+ null,
|
|
|
+ ActivityUtils.currentActivity() as BaseActivity<*>,
|
|
|
+ true
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 检查步骤和作业票详情并且下发作业票
|
|
|
*/
|
|
|
@@ -2014,8 +2093,10 @@ object BusinessManager {
|
|
|
true,
|
|
|
mac,
|
|
|
ticketDetail,
|
|
|
- ticketDetail.ticketLockVOList?.filter { it.lockStatus != "2" }
|
|
|
- ?.map { it.lockNfc }?.toMutableList(),
|
|
|
+ ticketDetail.ticketLockVOList?.filter {
|
|
|
+ ticketDetail.ticketPointsVOList?.mapNotNull { it.lockId }
|
|
|
+ ?.contains(it.lockId) != true
|
|
|
+ }?.map { it.lockNfc }?.toMutableList(),
|
|
|
ActivityUtils.currentActivity() as BaseActivity<*>,
|
|
|
true
|
|
|
)
|