Przeglądaj źródła

补充展示demo业务

Frankensteinly 1 rok temu
rodzic
commit
c1a93c608e

+ 1 - 8
app/src/main/java/com/grkj/iscs/activity/PresentationLoginActivity.kt

@@ -11,11 +11,6 @@ import com.grkj.iscs.extentions.removeLeadingZeros
 import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.modbus.ModBusController
 import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_CARD
-import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_FINGERPRINT
-import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_KEY
-import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_LOCK
-import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_KEY
-import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_LOCK
 import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_PORTABLE
 import com.grkj.iscs.presentation.LockerTogetherActivity
 import com.grkj.iscs.presentation.PresentationActivity
@@ -23,7 +18,6 @@ import com.grkj.iscs.presentation.PresentationManager
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.FileUtil
 import com.grkj.iscs.util.ToastUtils
-import com.grkj.iscs.util.log.LogUtil
 
 class PresentationLoginActivity : BaseActivity<ActivityPresentationLoginBinding>() {
 
@@ -41,7 +35,7 @@ class PresentationLoginActivity : BaseActivity<ActivityPresentationLoginBinding>
         }
         println("Mac Json : $str")
         PresentationManager.cardList =
-            Gson().fromJson(str, object : TypeToken<List<PresentationManager.CardInfoBean>>() {}.type)
+            Gson().fromJson(str, object : TypeToken<List<PresentationManager.PCardInfoBean>>() {}.type)
 
         handleLoading(true, "正在初始化设备...")
         BusinessManager.connectDock(1, true)
@@ -64,7 +58,6 @@ class PresentationLoginActivity : BaseActivity<ActivityPresentationLoginBinding>
                                             startActivity(Intent(this, PresentationActivity::class.java))
                                             return@readPortalCaseCardRfid
                                         } else if (PresentationManager.cardList.any { it.rfid == rfid && !it.isLocker}) {
-                                            // TODO 共锁人界面
                                             ToastUtils.tip("登录成功,欢迎 $rfid")
                                             startActivity(Intent(this, LockerTogetherActivity::class.java))
                                             return@readPortalCaseCardRfid

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

@@ -366,6 +366,12 @@ object ModBusController {
         return dockList.filter { it.type == type }
     }
 
+    fun getKeyByDockType(type: Byte): MutableList<DockBean.KeyBean>? {
+        return dockList.find { it.type == type }?.let {
+             it.getKeyList()
+        }
+    }
+
     fun openAllLockBuckles() {
         dockList.filter { it.type == DOCK_TYPE_LOCK || it.type == DOCK_TYPE_PORTABLE }.forEach { dockBean ->
             val list = dockBean.getLockList().stream().map { it.idx }.collect(Collectors.toList())

+ 29 - 0
app/src/main/java/com/grkj/iscs/presentation/LockerTogetherActivity.kt

@@ -1,7 +1,13 @@
 package com.grkj.iscs.presentation
 
+import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.base.BaseMvpActivity
 import com.grkj.iscs.databinding.ActivityLockerTogetherBinding
+import com.grkj.iscs.extentions.removeLeadingZeros
+import com.grkj.iscs.extentions.toHexStrings
+import com.grkj.iscs.modbus.ModBusController
+import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_CARD
+import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_PORTABLE
 
 /**
  * 共锁人
@@ -12,7 +18,30 @@ class LockerTogetherActivity : BaseMvpActivity<ILockerTogetherView, LockerTogeth
         get() = ActivityLockerTogetherBinding.inflate(layoutInflater)
 
     override fun initView() {
+        BusinessManager.registerStatusListener(this) { dockBean ->
+            when (dockBean.type) {
+                DOCK_TYPE_PORTABLE -> {
+                    dockBean.deviceList.forEach { deviceBean ->
+                        if (deviceBean.isExist) {
+                            when (deviceBean.type) {
+                                DEVICE_TYPE_CARD -> {
+                                    ModBusController.readPortalCaseCardRfid(dockBean.addr.toInt() - 1) { res ->
+                                        val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
+                                        println("卡片RFID : $rfid")
+                                        // TODO 根据工作票状态开始/结束工作
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 
+    override fun onDestroy() {
+        super.onDestroy()
+        ModBusController.unregisterListener(this)
     }
 
     override fun initPresenter(): LockerTogetherPresenter {

+ 31 - 19
app/src/main/java/com/grkj/iscs/presentation/PresentationActivity.kt

@@ -73,8 +73,8 @@ class PresentationActivity :
         }
 
         (mBinding?.rvLockerTogether?.layoutManager as LinearLayoutManager).orientation =  LinearLayoutManager.HORIZONTAL
-        mBinding?.rvLockerTogether?.adapter = object : CommonAdapter<PresentationManager.LockerTogetherBean>(this, R.layout.item_rv_locker_together, PresentationManager.mLockerTogetherList) {
-            override fun convert(holder: ViewHolder, data: PresentationManager.LockerTogetherBean, position: Int) {
+        mBinding?.rvLockerTogether?.adapter = object : CommonAdapter<PresentationManager.PLockerTogetherBean>(this, R.layout.item_rv_locker_together, PresentationManager.mLockerTogetherList) {
+            override fun convert(holder: ViewHolder, data: PresentationManager.PLockerTogetherBean, position: Int) {
                 holder.setText(R.id.tv_name, data.name)
                 holder.setChecked(R.id.cb, data.isChecked)
                 holder.getView<CheckBox>(R.id.cb).setOnCheckedChangeListener { _, b ->
@@ -85,29 +85,41 @@ class PresentationActivity :
     }
 
     private fun confirm() {
-        BusinessManager.sendTicket("64:E8:33:47:59:7A", this) { b, s ->
-            handleLoading(b, s)
+        // 蓝牙钥匙
+        val keyList = ModBusController.getKeyByDockType(DeviceConst.DOCK_TYPE_KEY)
+        if (keyList.isNullOrEmpty()) {
+            ToastUtils.tip("没有找到钥匙")
+            return
         }
-        val lockBean0 = ModBusController.getLockByRfid("706BD295")
-        val lockBean2 = ModBusController.getLockByRfid("1068D495")
-        val lockIdxList = mutableListOf(lockBean0!!.idx, lockBean2!!.idx)
+        val rfid = keyList[0].rfid
+        if (rfid.isNullOrEmpty()) {
+            ToastUtils.tip("没有找到钥匙的RFID")
+            return
+        }
+//        BusinessManager.sendTicket(rfid, this) { b, s ->
+//            handleLoading(b, s)
+//        }
+
+        // 锁
         val dockList = ModBusController.getDockByType(DeviceConst.DOCK_TYPE_PORTABLE)
-        if (dockList.isNotEmpty()) {
-            ToastUtils.tip("地址是 : ${dockList[0].addr.toInt()}")
-            ModBusController.controlLockBuckle(true, dockList[0].addr.toInt() - 1, lockIdxList) { res ->
-                LogUtil.i("confirm开锁卡扣 : ${res.toHexStrings()}")
-            }
+        if (dockList.isEmpty()) {
+            ToastUtils.tip("没有找到移动柜")
+            return
+        }
+        val lockList = dockList[0].getLockList()
+        if (lockList.isEmpty()) {
+            ToastUtils.tip("没有找到移动柜的锁")
+            return
+        }
+
+        val lockIdxList = lockList.filter { it.rfid == rfid }.map { it.idx } as MutableList
+        ToastUtils.tip("地址是 : ${dockList[0].addr.toInt()}")
+        ModBusController.controlLockBuckle(true, dockList[0].addr.toInt() - 1, lockIdxList) { res ->
+            LogUtil.i("confirm开锁卡扣 : ${res.toHexStrings()}")
         }
     }
 
     override fun initPresenter(): PresentationPresenter {
         return PresentationPresenter()
     }
-
-    override fun onDestroy() {
-        super.onDestroy()
-        BusinessManager.disconnectDock()
-    }
-
-
 }

+ 11 - 5
app/src/main/java/com/grkj/iscs/presentation/PresentationManager.kt

@@ -3,8 +3,8 @@ package com.grkj.iscs.presentation
 object PresentationManager {
 
 //    val cardList = mutableListOf("267747D5", "34A347D5", "464947D5")
-    data class CardInfoBean(val rfid: String, val isLocker: Boolean)
-    var cardList: List<PresentationManager.CardInfoBean> = mutableListOf()
+
+    var cardList: List<PCardInfoBean> = mutableListOf()
 
     val mSopList = mutableListOf(
         PresentationBean(
@@ -32,10 +32,16 @@ object PresentationManager {
     // 安全员
     val mSafetyList = mutableListOf("安全员1", "安全员2", "安全员3")
 
-    data class LockerTogetherBean(var name: String? = null, var isChecked: Boolean = false)
+
     // 共锁人
     val mLockerTogetherList = mutableListOf(
-        LockerTogetherBean("共锁人1", false),
-        LockerTogetherBean("共锁人2", false)
+        PLockerTogetherBean("共锁人1", false, null),
+        PLockerTogetherBean("共锁人2", false, null)
     )
+
+
+    // 卡片信息
+    data class PCardInfoBean(val rfid: String, val isLocker: Boolean)
+    // 共锁人
+    data class PLockerTogetherBean(var name: String? = null, var isChecked: Boolean = false, var rfid: String?)
 }