Jelajahi Sumber

合并补充部分上锁人操作逻辑;补充部分便携柜逻辑

Frankensteinly 11 bulan lalu
induk
melakukan
3ddd73d85f

+ 22 - 5
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -20,6 +20,7 @@ import com.grkj.iscs.ble.CustomBleIndicateCallback
 import com.grkj.iscs.ble.CustomBleScanCallback
 import com.grkj.iscs.ble.CustomBleWriteCallback
 import com.grkj.iscs.extentions.removeLeadingZeros
+import com.grkj.iscs.extentions.serialNo
 import com.grkj.iscs.extentions.startsWith
 import com.grkj.iscs.extentions.toByteArray
 import com.grkj.iscs.extentions.toHexStrings
@@ -127,14 +128,13 @@ object BusinessManager {
                                             // TODO 考虑快速拿取
                                             ModBusController.controlLockBuckle(false, dockBean.addr.toInt() - 1, lockBean.idx) { itRst ->
                                                 if (itRst.isNotEmpty()) {
-                                                    // TODO 上报锁具信息
+                                                    // 上报锁具信息
+                                                    NetApi.updateLockReturn(rfid, MyApplication.instance!!.serialNo()) {}
                                                 }
                                             }
                                         }
                                     }
                                 }
-                            } else {
-                                // TODO 上报锁具信息
                             }
                         }
                     }
@@ -150,7 +150,13 @@ object BusinessManager {
                                         ModBusController.readKeyRfid(dockBean.addr.toInt() - 1, deviceBean.idx) { isLeft, res ->
                                             val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                                             ModBusController.updateKeyRfid(dockBean.addr.toInt(), true, rfid)
-                                            // TODO 从HTTP读取Mac
+                                            NetApi.getKeyInfo(rfid) {
+                                                if (it != null && !it.macAddress.isNullOrEmpty()) {
+                                                    ModBusController.updateKeyMac(dockBean.addr.toInt(), isLeft, it.macAddress)
+                                                } else {
+                                                    ToastUtils.tip(R.string.get_key_info_fail)
+                                                }
+                                            }
                                             // TODO 蓝牙通信
                                         }
                                         ModBusController.controlKeyBuckle(false, isLeft = true, dockBean.addr.toInt() - 1)
@@ -159,8 +165,19 @@ object BusinessManager {
                                         ModBusController.readLockRfid(dockBean.addr.toInt() - 1, deviceBean.idx) { res ->
                                             val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                                             ModBusController.updateLockRfid(dockBean.addr.toInt(), deviceBean.idx, rfid)
+
+                                            NetApi.getLockInfo(rfid) {
+                                                if (it != null) {
+                                                    // TODO 考虑快速拿取
+                                                    ModBusController.controlLockBuckle(false, dockBean.addr.toInt() - 1, deviceBean.idx) { itRst ->
+                                                        if (itRst.isNotEmpty()) {
+                                                            // 上报锁具信息
+                                                            NetApi.updateLockReturn(rfid, MyApplication.instance!!.serialNo()) {}
+                                                        }
+                                                    }
+                                                }
+                                            }
                                         }
-                                        ModBusController.controlLockBuckle(false, dockBean.addr.toInt() - 1, deviceBean.idx)
                                     }
                                     DEVICE_TYPE_CARD -> {
                                         ModBusController.readPortalCaseCardRfid(dockBean.addr.toInt() - 1) { res ->

+ 18 - 28
app/src/main/java/com/grkj/iscs/presenter/TicketDetailPresenter.kt

@@ -40,26 +40,6 @@ class TicketDetailPresenter : BasePresenter<ITicketDetailView>() {
         }
     }
 
-    /**
-     * @param needLockCount 需要的锁具的数量(可能在别的机柜取过)
-     */
-    fun startTicket(needLockCount: Int) {
-        BusinessManager.checkEquipCount(needLockCount) { keyPair, lockMap ->
-            // TODO 下发工作票,上传钥匙信息更新作业票
-//            keyPair?.let {
-//                ModBusController.controlKeyBuckle(true, keyPair.second.first, keyPair.first.toInt()) {
-//
-//                }
-//            }
-            lockMap.forEach { dockAddr, lockList ->
-                // TODO 先上传锁具信息更新作业票,再下发锁具
-                ModBusController.controlLockBuckle(true, dockAddr.toInt(), lockList.map { it.idx }.toMutableList()) {
-
-                }
-            }
-        }
-    }
-
     fun doAction(vo: TicketDetailRespVO?) {
         val loginUser = SPUtils.getLoginUser(mContext!!)
         if (loginUser == null || loginUser.userId == 0L) {
@@ -102,8 +82,8 @@ class TicketDetailPresenter : BasePresenter<ITicketDetailView>() {
         }
 
         when(role.jobStatus) {
-            JOB_STATUS_NOT_STARTED -> {
-                // TODO 取锁具、取钥匙
+            JOB_STATUS_NOT_STARTED, JOB_STATUS_ACQUIRE_LOCK -> {
+                // 取锁具、取钥匙
                 val needLockCount = equipDetail.ticketLockVOList?.filter { it.lockId == null }?.size ?: 0
                 BusinessManager.checkEquipCount(needLockCount) { keyPair, lockMap ->
                     val list = mutableListOf<LockTakeUpdateReqVO>()
@@ -131,16 +111,26 @@ class TicketDetailPresenter : BasePresenter<ITicketDetailView>() {
                         }
                     }
                 }
-
-            }
-            JOB_STATUS_ACQUIRE_LOCK -> {
-                // TODO
             }
             JOB_STATUS_ACQUIRE_KEY -> {
-                // TODO
+                // 这个时候锁具已经全了
+                BusinessManager.checkEquipCount(0) { keyPair, _ ->
+                    // null表示锁具数量不够,不给钥匙
+                    if (keyPair != null) {
+                        // 更新钥匙信息
+                        NetApi.updateKeyTake(ticketDetail.ticketId!!, keyPair.second?.rfid!!, mContext!!.serialNo()) {
+                            if (it) {
+                                // 下发工作票
+                                BusinessManager.sendTicketBusiness(keyPair.second?.mac!!, ticketDetail, mvpView as TicketDetailActivity) { b, s ->
+                                    (mvpView as TicketDetailActivity).handleLoading(b, s)
+                                }
+                            }
+                        }
+                    }
+                }
             }
             JOB_STATUS_READY_TO_LOCK -> {
-                // TODO 不用做
+                // TODO 不用做,由钥匙工作票自动更新
             }
             JOB_STATUS_READY_TO_UNLOCK -> {
                 // TODO 弹框,由钥匙工作票自动更新