Forráskód Böngészése

simple demo初版完成

Frankensteinly 10 hónapja
szülő
commit
06aa521539

+ 31 - 10
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -109,7 +109,7 @@ object BusinessManager {
      * 总的监听,做预处理,其余的所有监听均使用本监听处理后的数据,只允许调用一次
      */
     fun registerMainListener() {
-        ModBusController.registerStatusListener(MyApplication.instance!!.applicationContext) { res ->
+        ModBusController.registerStatusListener(this) { res ->
             LogUtil.i("设备状态:${(res as List<ByteArray>).map { it.toHexStrings() }}")
             res.forEach { bytes ->
                 val dockBean = ModBusController.updateStatus(bytes) ?: return@forEach
@@ -219,7 +219,9 @@ object BusinessManager {
                         }
                     }
                 }
-                listeners.forEach { it.callBack(dockBean) }
+                Executor.delayOnMain(200) {
+                    listeners.forEach { it.callBack(dockBean) }
+                }
             }
         }
     }
@@ -307,6 +309,7 @@ object BusinessManager {
         val key = ModBusController.getOneKey()
 
         var tipStr = ""
+        println("checkEquipCount : $lockCount - $needLockCount")
         if (lockCount < needLockCount) {
             val msg = MyApplication.instance!!.applicationContext.resources.getString(R.string.lock_is_not_enough)
             LogUtil.w(msg)
@@ -332,7 +335,7 @@ object BusinessManager {
     /****************************************** 蓝牙 ******************************************/
     /******************************************蓝牙通用准备******************************************/
 
-    private fun prepareBle(
+    fun prepareBle(
         mac: String,
         activity: AppCompatActivity,
         loadingCallBack: (Boolean, String?, Boolean?) -> Unit,
@@ -525,6 +528,12 @@ object BusinessManager {
         prepareBle(mac, activity, loadingCallBack) { done, bleBean ->
             if (done) {
                 Executor.delayOnMain(500) {
+                    // TODO 蓝牙准备操作
+//                    val bleBean = BleUtil.instance?.getBleDeviceByMac(mac)
+//                    if (bleBean == null) {
+//                        ToastUtils.tip(R.string.simple_key_is_not_connected)
+//                        return@delayOnMain
+//                    }
                     // 单bleBean json赋值
                     bleBean?.ticketSend = PresentationManager.getSimpleTicketJson()
                     bleBean?.ticketSend?.let { itJson ->
@@ -568,6 +577,12 @@ object BusinessManager {
         prepareBle(mac, activity, loadingCallBack) { done, bleBean ->
             if (done) {
                 Executor.delayOnMain(500) {
+                    // TODO 蓝牙准备操作
+//                    val bleBean = BleUtil.instance?.getBleDeviceByMac(mac)
+//                    if (bleBean == null) {
+//                        ToastUtils.tip(R.string.simple_key_is_not_connected)
+//                        return@delayOnMain
+//                    }
                     getTicketStatus(bleBean!!.bleDevice, loadingCallBack)
                 }
             } else {
@@ -691,7 +706,7 @@ object BusinessManager {
             loadingCallBack.invoke(false, ctx.getString(R.string.simple_switch_standby_mode_success), null)
         }
         // TODO 切换完不断开
-//        BleManager.getInstance().disconnectAllDevice()
+        BleManager.getInstance().disconnectAllDevice()
     }
 
     /**
@@ -787,6 +802,12 @@ object BusinessManager {
                         println("switch mode 1 fail")}
                 })
 
+                val dock = ModBusController.getDockByKeyMac(bleDevice.mac)
+                val keyBean = dock?.getKeyList()?.find { it.mac == bleDevice.mac }
+                keyBean?.let {
+                    ModBusController.controlKeyBuckle(false, keyBean.isLeft, dock.addr.toInt() - 1)
+                }
+
                 // 上报隔离点状态
                 val workTicketGetBO = Gson().fromJson(String(it.ticketStatus), WorkTicketGetBO::class.java)
                 val keyNfc = ModBusController.getKeyByMac(bleDevice.mac)?.rfid
@@ -805,14 +826,14 @@ object BusinessManager {
                     }
 
                     // 上报点位钥匙绑定
-                    NetApi.updateLockPointBatch(updateList) { itRst ->
-                        // TODO 上报结果
-                    }
+//                    NetApi.updateLockPointBatch(updateList) { itRst ->
+//                        // TODO 上报结果
+//                    }
 
                     // 上报钥匙归还
-                    NetApi.updateKeyReturn(data.taskId?.toLong()!!, keyNfc!!, MyApplication.instance!!.serialNo()) {
-
-                    }
+//                    NetApi.updateKeyReturn(data.taskId?.toLong()!!, keyNfc!!, MyApplication.instance!!.serialNo()) {
+//
+//                    }
                 }
             }
         }

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

@@ -1,7 +1,9 @@
 package com.grkj.iscs.modbus
 
 import android.content.Context
+import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
+import com.grkj.iscs.base.BaseActivity
 import com.grkj.iscs.extentions.removeLeadingZeros
 import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_ELEC_LOCK_BOARD
@@ -9,6 +11,7 @@ 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.PresentationManager
+import com.grkj.iscs.util.ActivityUtils
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.util.log.LogUtil
@@ -179,6 +182,10 @@ object ModBusController {
                         if (PresentationManager.mConfigKeyList.any { it.rfid == rfid }) {
                             val mac = PresentationManager.mConfigKeyList.find { it.rfid == rfid }?.keyMac
                             updateKeyMac(dockBean.addr.toInt(), key.isLeft, mac!!)
+                            // TODO 蓝牙准备操作
+//                            BusinessManager.prepareBle(mac, ActivityUtils.currentActivity() as BaseActivity<*>, { _,_,_ -> }) { _,_ ->
+//
+//                            }
                         }
                     }
                     controlKeyBuckle(false, key.isLeft, dockBean.addr.toInt() - 1)

+ 13 - 8
app/src/main/java/com/grkj/iscs/presentation/PresentationManager.kt

@@ -378,7 +378,9 @@ object PresentationManager {
         }
 
         // 操作设备
-        BusinessManager.checkEquipCount(2) { keyPair, lockMap ->
+        val needCount = if (mSimpleTicket?.status!! < 3) 2 else 0
+        println("checkSimpleEquip : ${mSimpleTicket?.status}")
+        BusinessManager.checkEquipCount(needCount) { keyPair, lockMap ->
 
             if (mSimpleTicket?.status == 0 || mSimpleTicket?.status == 1) {
                 mSimpleTicket!!.workTicketBean?.lockList = mutableListOf()
@@ -403,9 +405,13 @@ object PresentationManager {
                     BusinessManager.sendTicketBusiness(keyPair.second?.mac!!, ctx) { b, s, rst ->
                         (ctx as BaseActivity<*>).handleLoading(b, s)
                         if (rst == true) {
-                            mSimpleTicket?.status = 2
-                            mSimpleTicket?.locker?.status = 1
-                            updateStep(2)
+                            if (lockerStatus == 0) {
+                                mSimpleTicket?.status = 1
+                                updateStep(2)
+                            } else {
+                                mSimpleTicket?.status = 3
+                                updateStep(6)
+                            }
                         }
                     }
                 }
@@ -439,14 +445,13 @@ object PresentationManager {
                 }
             }
             // TODO 待修改
+            println("lala1 : ${mSimpleTicket?.status} - ${mSimpleTicket?.locker?.status}")
             if (mSimpleTicket?.locker?.status == 0) {
-                mSimpleTicket?.status = 1
+                mSimpleTicket?.status = 2
             } else if (mSimpleTicket?.locker?.status == 1) {
-                mSimpleTicket?.locker?.status = 2
+                mSimpleTicket?.status = 4
                 if (mSimpleTicket?.isAllLocksReturned == true) {
                     mSimpleTicket?.status = 5
-                } else {
-                    mSimpleTicket?.status = 4
                 }
             }
             if (isLockerDone) {

+ 26 - 16
app/src/main/java/com/grkj/iscs/presentation/simple/SimpleProcessActivity.kt

@@ -105,16 +105,16 @@ class SimpleProcessActivity : BaseActivity<ActivitySimpleProcessBinding>() {
                             Executor.runOnMain {
                                 BusinessManager.getTicketStatusBusiness((keyBean as DockBean.KeyBean).mac!!, this) { b, s, rst ->
                                     handleLoading(b, s)
+                                    println("haha : $rst - $b - $s")
                                     if (!s.isNullOrEmpty() && rst == true) {
                                         val ticket = s.substring(2)
                                         val ticketStatusBean = Gson().fromJson(ticket, WorkTicketStatusBean::class.java)
                                         PresentationManager.updateSimpleTicket(ticketStatusBean)
                                         // TODO 更新mStep
-                                        if (PresentationManager.mSimpleTicket!!.status!! < 2) {
-                                            PresentationManager.mSimpleTicket?.status = 2
+                                        println("lala : ${PresentationManager.mSimpleTicket?.status} - ${PresentationManager.mSimpleTicket?.locker?.status} - ${PresentationManager.mSimpleTicket?.isAllLocksReturned}")
+                                        if (PresentationManager.mSimpleTicket!!.status!! < 3) {
                                             PresentationManager.updateStep(3)
                                         } else {
-                                            PresentationManager.mSimpleTicket?.status = 4
                                             PresentationManager.updateStep(6)
                                         }
                                     }
@@ -138,15 +138,22 @@ class SimpleProcessActivity : BaseActivity<ActivitySimpleProcessBinding>() {
 
     private fun updateSharedStatus() {
         val doneCount = PresentationManager.mSimpleTicket?.lockerTogetherList?.filter { it.status == 2 }?.size ?: 0
-        mBinding?.tvShared?.text = "${getString(R.string.simple_shared)} $doneCount/2"
+        println("updateSharedStatus : $doneCount")
+        mBinding?.tvShared1?.text = "${getString(R.string.simple_shared)} $doneCount/2"
+        mBinding?.tvShared2?.text = "${getString(R.string.simple_shared)} $doneCount/2"
         if (doneCount == 2) {
+            PresentationManager.mSimpleTicket?.status = 3
             PresentationManager.mStep = 5
             changeStep(5)
-            mBinding?.tvShared?.setBackgroundColor(ContextCompat.getColor(this, R.color.simple_shared_done))
-            mBinding?.ivShared?.background = ContextCompat.getDrawable(this, R.mipmap.unlock)
+            mBinding?.tvShared1?.setBackgroundColor(ContextCompat.getColor(this, R.color.simple_shared_done))
+            mBinding?.tvShared2?.setBackgroundColor(ContextCompat.getColor(this, R.color.simple_shared_done))
+            mBinding?.ivShared1?.background = ContextCompat.getDrawable(this, R.mipmap.unlock)
+            mBinding?.ivShared2?.background = ContextCompat.getDrawable(this, R.mipmap.unlock)
         } else {
-            mBinding?.tvShared?.setBackgroundColor(ContextCompat.getColor(this, R.color.simple_shared_processing))
-            mBinding?.ivShared?.background = ContextCompat.getDrawable(this, R.mipmap.lock)
+            mBinding?.tvShared1?.setBackgroundColor(ContextCompat.getColor(this, R.color.simple_shared_processing))
+            mBinding?.tvShared2?.setBackgroundColor(ContextCompat.getColor(this, R.color.simple_shared_processing))
+            mBinding?.ivShared1?.background = ContextCompat.getDrawable(this, R.mipmap.lock)
+            mBinding?.ivShared2?.background = ContextCompat.getDrawable(this, R.mipmap.lock)
         }
     }
 
@@ -155,19 +162,22 @@ class SimpleProcessActivity : BaseActivity<ActivitySimpleProcessBinding>() {
             // 检测到回车开始处理
             if (event.keyCode == 66) {
                 val formattedCard = cardNo.toLong().toByteArrays().toHexStrings(false)
-                println("Simple demo : $formattedCard")
+                println("dispatchKeyEvent : $formattedCard")
                 // 重置cardNo
                 cardNo = ""
 
-                val colocker = PresentationManager.mSimpleTicket?.lockerTogetherList?.find { it.rfid == formattedCard }
-                colocker?.let {
-                    if (it.status == 0) {
-                        it.status = 1
-                    } else if (it.status == 1) {
-                        it.status = 2
+                PresentationManager.mSimpleTicket?.lockerTogetherList?.forEach { colocker ->
+                    println("dispatchKeyEvent : ${colocker.status} - ${PresentationManager.mSimpleTicket?.lockerTogetherList}")
+                    if (colocker.rfid == formattedCard) {
+                        if (colocker.status == 0) {
+                            colocker.status = 1
+                        } else if (colocker.status == 1) {
+                            colocker.status = 2
+                        }
+                        updateSharedStatus()
                     }
-                    updateSharedStatus()
                 }
+
                 return super.dispatchKeyEvent(event)
             }
             cardNo += event.keyCharacterMap.getDisplayLabel(event.keyCode)

+ 5 - 2
app/src/main/res/layout/activity_simple_process.xml

@@ -148,6 +148,7 @@
 
         <LinearLayout
             android:id="@+id/ll_waiting"
+            android:background="#00FFFFFF"
             style="@style/SimpleBtnContainer">
 
             <ImageView
@@ -211,12 +212,14 @@
             android:gravity="center"
             android:padding="10dp">
             <ImageView
+                android:id="@+id/iv_shared1"
                 android:layout_width="@dimen/simple_icon_size"
                 android:layout_height="@dimen/simple_icon_size"
                 android:background="@mipmap/lock"
                 android:layout_marginRight="5dp"/>
 
             <TextView
+                android:id="@+id/tv_shared1"
                 style="@style/SimpleTextView"
                 android:text="@string/simple_shared"/>
         </LinearLayout>
@@ -270,14 +273,14 @@
             android:gravity="center"
             android:padding="10dp">
             <ImageView
-                android:id="@+id/iv_shared"
+                android:id="@+id/iv_shared2"
                 android:layout_width="@dimen/simple_icon_size"
                 android:layout_height="@dimen/simple_icon_size"
                 android:background="@mipmap/lock"
                 android:layout_marginRight="5dp"/>
 
             <TextView
-                android:id="@+id/tv_shared"
+                android:id="@+id/tv_shared2"
                 style="@style/SimpleTextView"
                 android:text="@string/simple_shared"/>
         </LinearLayout>