Browse Source

补充本地钥匙、锁具数量检查提示逻辑;添加根据NFC编号获取钥匙详情接口;补充更新钥匙Mac逻辑

Frankensteinly 11 months ago
parent
commit
770bece9b3

+ 16 - 8
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -38,6 +38,7 @@ import com.grkj.iscs.model.bo.WorkTicketSendBO
 import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
 import com.grkj.iscs.util.CommonUtils
 import com.grkj.iscs.util.Executor
+import com.grkj.iscs.util.NetApi
 import com.grkj.iscs.util.SPUtils
 import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.util.log.LogUtil
@@ -86,7 +87,11 @@ object BusinessManager {
                                 ModBusController.readKeyRfid(dockBean.addr.toInt() - 1, if (keyBean.isLeft) 0 else 1) { isLeft, res ->
                                     val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                                     ModBusController.updateKeyRfid(dockBean.addr.toInt(), keyBean.isLeft, rfid)
-                                    // TODO 从HTTP读取Mac
+                                    NetApi.getKeyInfo(rfid) {
+                                        if (it != null && !it.macAddress.isNullOrEmpty()) {
+                                            ModBusController.updateKeyMac(dockBean.addr.toInt(), keyBean.isLeft, it.macAddress)
+                                        }
+                                    }
                                     // TODO 蓝牙通信
                                 }
                                 ModBusController.controlKeyBuckle(false, isLeft = true, dockBean.addr.toInt() - 1)
@@ -217,20 +222,23 @@ object BusinessManager {
         keyDockList.forEach {
             keyCount += it.getKeyList().size
         }
-        // TODO 待完善锁具数量判断
+        var tipStr = ""
         if (lockCount < pointCount) {
             val msg = MyApplication.instance!!.applicationContext.resources.getString(R.string.lock_is_not_enough)
             LogUtil.w(msg)
-            ToastUtils.tip(msg)
-            // TODO 是否用户确认
-            return
+            tipStr = msg
         }
         if (keyCount == 0) {
             val msg = MyApplication.instance!!.applicationContext.resources.getString(R.string.key_is_not_enough)
             LogUtil.w(msg)
-            ToastUtils.tip(msg)
-            // TODO 是否用户确认
-            return
+            tipStr = if (tipStr.isEmpty()) {
+                msg
+            } else {
+                tipStr + "\n" + msg
+            }
+        }
+        if (tipStr.isNotEmpty()) {
+            ToastUtils.tip(tipStr)
         }
         // TODO 弹出锁、弹出钥匙
     }

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

@@ -301,6 +301,13 @@ object ModBusController {
         dockList.find { it.addr.toInt() == slaveIdx }?.getKeyList()?.find { it.isLeft == isLeft }?.rfid = rfid
     }
 
+    /**
+     * 更新钥匙MAC
+     */
+    fun updateKeyMac(slaveIdx: Int, isLeft: Boolean, mac: String) {
+        dockList.find { it.addr.toInt() == slaveIdx }?.getKeyList()?.find { it.isLeft == isLeft }?.mac = mac
+    }
+
     /**
      * 通过RFID更新对应的Mac
      */

+ 5 - 0
app/src/main/java/com/grkj/iscs/model/UrlConsts.kt

@@ -71,4 +71,9 @@ object UrlConsts {
      * 获取刷卡信息
      */
     const val CARD_INFO = "/iscs/card/selectIsJobCardByLoginUser"
+
+    /**
+     * 通过NFC编号获取钥匙详细信息
+     */
+    const val KEY_INFO = "/iscs/key/selectIsKeyByNfc"
 }

+ 11 - 0
app/src/main/java/com/grkj/iscs/model/vo/key/KeyInfoRespVO.kt

@@ -0,0 +1,11 @@
+package com.grkj.iscs.model.vo.key
+
+data class KeyInfoRespVO(
+    val keyId: Long?,
+    val keyCode: String?,
+    val keyName: String?,
+    val hardwareId: Long?,
+    val keyNfc: String?,
+    val macAddress: String?,
+    val delFlag: String?
+)

+ 17 - 0
app/src/main/java/com/grkj/iscs/util/NetApi.kt

@@ -5,6 +5,7 @@ import com.grkj.iscs.model.Token
 import com.grkj.iscs.model.UrlConsts
 import com.grkj.iscs.model.vo.card.CardInfoRespVO
 import com.grkj.iscs.model.vo.dept.DeptListRespVO
+import com.grkj.iscs.model.vo.key.KeyInfoRespVO
 import com.grkj.iscs.model.vo.sop.SopInfoRespVO
 import com.grkj.iscs.model.vo.sop.SopPageRespVO
 import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
@@ -247,4 +248,20 @@ object NetApi {
             }, isGet = true, isAuth = true
         )
     }
+
+    /**
+     * 通过nfc编号获取key信息
+     */
+    fun getKeyInfo(keyNfc: String, callBack: (KeyInfoRespVO?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.KEY_INFO,
+            false,
+            mapOf("nfc" to keyNfc),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(getRefBean(it))
+                }
+            }, isGet = true, isAuth = true
+        )
+    }
 }