|
|
@@ -449,11 +449,11 @@ object ModBusController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 打开一个钥匙卡扣(基于钥匙柜和便携柜不存在接一起的情况)
|
|
|
+ * 获取一个钥匙(基于钥匙柜和便携柜不存在接一起的情况)
|
|
|
*
|
|
|
- * @return 打开的钥匙RFID
|
|
|
+ * @return 获取的钥匙RFID,如果数量不足,返回null
|
|
|
*/
|
|
|
- fun openOneKeyBuckle(): String? {
|
|
|
+ fun getOneKey(): String? {
|
|
|
val keyDockList = dockList.filter { it.type == DOCK_TYPE_KEY || it.type == DOCK_TYPE_PORTABLE }
|
|
|
val keyList = keyDockList.flatMap { it.getKeyList() }.filter { it.isExist }
|
|
|
if (keyList.isEmpty()) {
|
|
|
@@ -464,22 +464,28 @@ object ModBusController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 根据数量打开锁具卡扣(基于锁柜和便携柜不存在接一起的情况)
|
|
|
+ * 根据数量获取锁具(基于锁柜和便携柜不存在接一起的情况)
|
|
|
*
|
|
|
- * @param lockCount 需要打开的锁具数量
|
|
|
+ * @param needLockCount 需要打开的锁具数量
|
|
|
*
|
|
|
- * @return 打开的锁具RFID列表
|
|
|
+ * @return key: dock地址,value: 锁具RFID列表
|
|
|
*/
|
|
|
- fun openLockBuckle(lockCount: Int): MutableList<String> {
|
|
|
+ fun getLocks(needLockCount: Int): MutableMap<Byte, MutableList<String>> {
|
|
|
+ val map = mutableMapOf<Byte, MutableList<String>>()
|
|
|
val lockDockList = dockList.filter { it.type == DOCK_TYPE_LOCK || it.type == DOCK_TYPE_PORTABLE }
|
|
|
- val lockList = lockDockList.flatMap { it.getLockList() }.filter { it.isExist }
|
|
|
- if (lockList.size < lockCount) {
|
|
|
- ToastUtils.tip(R.string.lock_is_not_enough)
|
|
|
- }
|
|
|
- val rfidList = mutableListOf<String>()
|
|
|
- for (i in 0 until lockCount.coerceAtMost(lockList.size)) {
|
|
|
- lockList[i].rfid?.let { rfidList.add(it) }
|
|
|
+
|
|
|
+ var provideCount = 0
|
|
|
+ lockDockList.forEach loop@ { lockDock ->
|
|
|
+ val lockList = lockDock.getLockList().filter { it.isExist }
|
|
|
+ if (lockList.size < (needLockCount - provideCount)) {
|
|
|
+ provideCount += lockList.size
|
|
|
+ map[lockDock.addr] = lockList.mapNotNull { it.rfid }.toMutableList()
|
|
|
+ } else {
|
|
|
+ val rfidList = lockList.subList(0, needLockCount - provideCount).mapNotNull { it.rfid }.toMutableList()
|
|
|
+ map[lockDock.addr] = rfidList
|
|
|
+ return@loop
|
|
|
+ }
|
|
|
}
|
|
|
- return rfidList
|
|
|
+ return map
|
|
|
}
|
|
|
}
|