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

添加换钥匙触发逻辑;将modbus主监听改到application里

Frankensteinly 9 сар өмнө
parent
commit
91efe253dc

+ 2 - 0
app/src/main/java/com/grkj/iscs/MyApplication.kt

@@ -28,6 +28,8 @@ class MyApplication : Application() {
 //        CrashUtil.instance.init(applicationContext)
         BleUtil.instance?.initBle(this)
         NetHttpManager.getInstance().initCtx(this)
+
+        BusinessManager.registerMainListener()
         Token.clear(this)
     }
 

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

@@ -111,6 +111,7 @@ object NetApi {
     /**
      * 获取工作票类型
      */
+    @Deprecated("不使用")
     fun getTicketType(callBack: (MutableList<TicketTypeRespVO>?) -> Unit) {
         NetHttpManager.getInstance().doRequestNet(
             UrlConsts.TICKET_TYPE,
@@ -126,6 +127,7 @@ object NetApi {
     /**
      * 获取一个自动编号
      */
+    @Deprecated("不使用")
     fun getAutoCode(type: String, callBack: (String?) -> Unit) {
         NetHttpManager.getInstance().doRequestNet(
             UrlConsts.AUTO_CODE + "/" +type,
@@ -141,6 +143,7 @@ object NetApi {
     /**
      * 获取SOP详情
      */
+    @Deprecated("不使用")
     fun getSopInfo(sopId: Long, callBack: (SopInfoRespVO?) -> Unit) {
         NetHttpManager.getInstance().doRequestNet(
             UrlConsts.SOP_INFO,
@@ -193,6 +196,7 @@ object NetApi {
     /**
      * 获取部门列表
      */
+    @Deprecated("不使用")
     fun getDeptList(pageNum: Int, pageSize: Int, callBack: (MutableList<DeptListRespVO>?) -> Unit) {
         NetHttpManager.getInstance().doRequestNet(
             UrlConsts.DEPT_LIST,
@@ -232,6 +236,7 @@ object NetApi {
     /**
      * 获取工作票分页
      */
+    @Deprecated("不使用")
     fun getTicketPage(pageNum: Int, pageSize: Int, userId: Long, ticketStatus: Int?, callBack: (TicketPageRespVO?) -> Unit) {
         val map = mutableMapOf(
             "pageNum" to pageNum,

+ 7 - 0
app/src/main/java/com/grkj/iscs/view/activity/HomeActivity.kt

@@ -31,6 +31,8 @@ class HomeActivity : BaseMvpActivity<IHomeView, HomePresenter, ActivityHomeBindi
         get() = ActivityHomeBinding.inflate(layoutInflater)
 
     override fun initView() {
+        presenter?.registerStatusListener()
+
         mBinding?.itemSetting?.ivIcon?.setImageResource(R.mipmap.settings)
         mBinding?.itemSetting?.tvName?.text = getString(R.string.settings)
         mBinding?.itemSetting?.root?.setOnClickListener {
@@ -82,6 +84,11 @@ class HomeActivity : BaseMvpActivity<IHomeView, HomePresenter, ActivityHomeBindi
         return super.dispatchKeyEvent(event)
     }
 
+    override fun onDestroy() {
+        super.onDestroy()
+        presenter?.unregisterListener()
+    }
+
     override fun initPresenter(): HomePresenter {
         return HomePresenter()
     }

+ 0 - 1
app/src/main/java/com/grkj/iscs/view/activity/test/ModbusActivity.kt

@@ -17,7 +17,6 @@ class ModbusActivity : BaseMvpActivity<IModbusView, ModBusPresenter, ActivityMod
         get() = ActivityModbusBinding.inflate(layoutInflater)
 
     override fun initView() {
-        BusinessManager.registerMainListener()
         BusinessManager.connectDock()
 
         BusinessManager.registerStatusListener(this) {

+ 55 - 0
app/src/main/java/com/grkj/iscs/view/presenter/HomePresenter.kt

@@ -1,7 +1,62 @@
 package com.grkj.iscs.view.presenter
 
+import com.grkj.iscs.BusinessManager
+import com.grkj.iscs.extentions.removeLeadingZeros
+import com.grkj.iscs.extentions.toHexStrings
+import com.grkj.iscs.modbus.DockBean
+import com.grkj.iscs.modbus.ModBusController
+import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_KEY
+import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_KEY
+import com.grkj.iscs.util.Executor
+import com.grkj.iscs.view.activity.HomeActivity
 import com.grkj.iscs.view.base.BasePresenter
 import com.grkj.iscs.view.iview.IHomeView
 
 class HomePresenter : BasePresenter<IHomeView>() {
+
+    fun registerStatusListener() {
+        BusinessManager.registerStatusListener(this) { dockBean ->
+            when (dockBean.type) {
+                DOCK_TYPE_KEY -> {
+                    dockBean.deviceList.forEach { deviceBean ->
+                        if (deviceBean.isExist) {
+                            when (deviceBean.type) {
+                                DEVICE_TYPE_KEY -> {
+                                    // 延迟1s防止mac未赋值
+                                    Executor.delayOnMain(1000) {
+                                        getTicket(dockBean, (deviceBean as DockBean.KeyBean).isLeft, 3)
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private fun getTicket(dockBean: DockBean, isLeft: Boolean, retryCount: Int) {
+        if (retryCount == 0) {
+            return
+        }
+        ModBusController.readKeyRfid(dockBean.addr.toInt() - 1, if (isLeft) 0 else 1) { isLeft, res ->
+            val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
+            val keyBean = ModBusController.getKeyByRfid(rfid)
+            if (keyBean?.mac == null) {
+                Executor.delayOnMain(1000) {
+                    getTicket(dockBean, isLeft, retryCount - 1)
+                }
+                return@readKeyRfid
+            }
+            BusinessManager.getTicketStatusBusiness(keyBean.mac!!, mvpView as HomeActivity) { b, s, rst ->
+                Executor.runOnMain {
+                    (mvpView as HomeActivity).handleLoading(b, s)
+                }
+            }
+        }
+    }
+
+    fun unregisterListener() {
+        BusinessManager.unregisterListener(this)
+    }
 }