Эх сурвалжийг харах

补充部分取钥匙、锁具流程

Frankensteinly 11 сар өмнө
parent
commit
8dd74c2230

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

@@ -463,7 +463,7 @@ object ModBusController {
         }
         val key = getKeyByRfid(keyList[0].rfid!!)
 
-        val addr = keyDockList.find { it.getKeyList().contains(key) }?.addr
+        val addr = keyDockList.find { it.getKeyList().any { it.rfid == key?.rfid } }?.addr
 
         return Pair(addr!!, Pair(key!!.isLeft, key.rfid!!))
     }

+ 17 - 2
app/src/main/java/com/grkj/iscs/presenter/TicketDetailPresenter.kt

@@ -3,6 +3,7 @@ package com.grkj.iscs.presenter
 import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
 import com.grkj.iscs.base.BasePresenter
+import com.grkj.iscs.extentions.serialNo
 import com.grkj.iscs.iview.ITicketDetailView
 import com.grkj.iscs.modbus.ModBusController
 import com.grkj.iscs.model.Constants.JOB_STATUS_ACQUIRE_KEY
@@ -13,6 +14,7 @@ import com.grkj.iscs.model.Constants.JOB_STATUS_READY_TO_UNLOCK
 import com.grkj.iscs.model.Constants.JOB_STATUS_UNLOCKED
 import com.grkj.iscs.model.Constants.USER_TYPE_COLOCKER
 import com.grkj.iscs.model.Constants.USER_TYPE_LOCKER
+import com.grkj.iscs.model.vo.lock.LockTakeUpdateReqVO
 import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
 import com.grkj.iscs.model.vo.ticket.TicketEquipDetailRespVO
 import com.grkj.iscs.util.Executor
@@ -102,8 +104,21 @@ class TicketDetailPresenter : BasePresenter<ITicketDetailView>() {
                 // TODO 取锁具、取钥匙
                 val needLockCount = equipDetail.ticketLockVOList?.filter { it.lockId == null }?.size ?: 0
                 BusinessManager.checkEquipCount(needLockCount) { keyPair, lockMap ->
-                    // 机柜锁具数量不够
-                    if (keyPair == null) {
+                    val list = mutableListOf<LockTakeUpdateReqVO>()
+                    lockMap.forEach { (_, lockList) ->
+                        list.addAll(lockList.map { LockTakeUpdateReqVO(ticketDetail.ticketId, it.rfid, mContext!!.serialNo()) })
+                    }
+                    NetApi.updateLockTake(list) {
+                        if (it == true) {
+                            lockMap.forEach { (addr, lockList) ->
+                                // 开锁卡扣
+                                ModBusController.controlLockBuckle(true, addr.toInt(), lockList.map { it.idx }.toMutableList())
+                            }
+                        }
+                    }
+                    // null表示锁具数量不够,不给钥匙
+                    if (keyPair != null) {
+                        // TODO 下发工作票、更新钥匙信息
 
                     }
                 }