Bladeren bron

修改release包打包配置;补充已分配的钥匙未取,退出后的逻辑处理(重新连接重置);进度页部分操作添加loading框优化体验

Frankensteinly 7 maanden geleden
bovenliggende
commit
d5c9890f75

+ 3 - 3
app/build.gradle

@@ -39,9 +39,9 @@ android {
 
         }
         release {
-            minifyEnabled false  // 混淆
-//            zipAlignEnabled true // 进行压缩优化
-//            shrinkResources true    // 移除无用的resource文件
+            minifyEnabled true  // 混淆
+            zipAlignEnabled true // 进行压缩优化
+            shrinkResources true    // 移除无用的resource文件
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
             signingConfig signingConfigs.release
         }

+ 2 - 1
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -709,6 +709,7 @@ object BusinessManager {
                     bleDevice.mac?.let { itMac ->
                         unregisterConnectListener(itMac)
                     }
+                    ModBusController.getKeyByMac(bleDevice.mac)?.isReady = false
                     if (!isActiveDisConnected) {
                         // 测试模式下不重连
                         if (isTestMode) {
@@ -1179,7 +1180,7 @@ object BusinessManager {
         }
     }
 
-    private fun switchReadyMode(bleDevice: BleDevice) {
+    fun switchReadyMode(bleDevice: BleDevice) {
         BleCmdManager.switchMode(STATUS_READY, bleDevice, object : CustomBleWriteCallback() {
             override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
                 LogUtil.i("switch mode ready success : ${bleDevice.mac}")

+ 1 - 1
app/src/main/java/com/grkj/iscs/modbus/DockBean.kt

@@ -249,7 +249,7 @@ class DockBean(
         var isCharging: Boolean,
         var rfid: String?,
         var mac: String?,
-        var isReady: Boolean = false
+        var isReady: Boolean = false    // 钥匙是否准备好(连接上且为待机模式)
     ) : DeviceBean(DEVICE_TYPE_KEY, idx, isExist) {
         override fun toString(): String {
             return "KeyBean(isLeft=$isLeft, isCharging=$isCharging, rfid=$rfid, mac=$mac, isReady=$isReady)"

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

@@ -2,8 +2,8 @@ package com.grkj.iscs.model
 
 object UrlConsts {
 //    const val BASE_URL = "http://192.168.28.82:9190"  // 本地
-    const val BASE_URL = "http://192.168.28.97:9190"    // 车
-//    const val BASE_URL = "http://36.133.174.236:9190"    // 外
+//    const val BASE_URL = "http://192.168.28.97:9190"    // 车
+    const val BASE_URL = "http://36.133.174.236:9190"    // 外
     const val WEB_SOCKET = "ws://192.168.1.127:9090/websocket/iot/127"
 
     const val AUTOCODE_TICKET_NUMBER = "JOB_TICKET_CODE"

+ 1 - 1
app/src/main/java/com/grkj/iscs/view/activity/test/fingerprint/ZKUSBManager/ZKUSBManager.java

@@ -151,7 +151,7 @@ public class ZKUSBManager {
         if (!usbManager.hasPermission(usbDevice))
         {
             Intent intent = new Intent(this.ACTION_USB_PERMISSION);
-            PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0);
+            PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_IMMUTABLE);
             usbManager.requestPermission(usbDevice, pendingIntent);
         }
         else {

+ 34 - 2
app/src/main/java/com/grkj/iscs/view/fragment/SettingFragment.kt

@@ -6,9 +6,11 @@ import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.FragmentSettingBinding
 import com.grkj.iscs.extentions.setSelected
+import com.grkj.iscs.modbus.ModBusController
 import com.grkj.iscs.modbus.ModBusController.controlKeyBuckle
 import com.grkj.iscs.modbus.ModBusController.controlLockBuckle
 import com.grkj.iscs.modbus.ModBusController.dockList
+import com.grkj.iscs.model.DeviceConst
 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
@@ -46,8 +48,7 @@ class SettingFragment : BaseFragment<FragmentSettingBinding>() {
                     }
                 }
             }
-            // 不拿的设备不归你,下次登录重新按需分配
-            BusinessManager.mDeviceTakeList.clear()
+            reConnectKey()
             BusinessManager.sendLoadingEventMsg(null, false)
             startActivity(Intent(context, LoginActivity::class.java))
         }
@@ -77,4 +78,35 @@ class SettingFragment : BaseFragment<FragmentSettingBinding>() {
         mBinding?.vp?.offscreenPageLimit = 2
         mBinding?.vp?.adapter = pageAdapter
     }
+
+    /**
+     * 钥匙重新连接,清除内部作业票,清除所有代取设备重新分配
+     */
+    private fun reConnectKey() {
+        val keyList = BusinessManager.mDeviceTakeList.filter { it.deviceType == DeviceConst.DEVICE_TYPE_KEY }
+        // 不拿的设备不归你,下次登录重新按需分配
+        // 尽早clear,防止触发handleCurrentMode导致重新下发作业票
+        BusinessManager.mDeviceTakeList.clear()
+        // 连接后直接切换待机模式,让钥匙作业票失效并且重新准备完毕
+        keyList.forEach {
+            val mac = ModBusController.getKeyByRfid(it.nfc)?.mac
+            if (mac == null) {
+                NetApi.getKeyInfo(it.nfc) { keyInfo ->
+                    keyInfo?.macAddress?.let { itMac ->
+                        BusinessManager.registerConnectListener(itMac) { isDone, bleBean ->
+                            if (isDone && bleBean != null) {
+                                BusinessManager.switchReadyMode(bleBean.bleDevice)
+                            }
+                        }
+                    }
+                }
+            } else {
+                BusinessManager.registerConnectListener(mac) { isDone, bleBean ->
+                    if (isDone && bleBean != null) {
+                        BusinessManager.switchReadyMode(bleBean.bleDevice)
+                    }
+                }
+            }
+        }
+    }
 }

+ 4 - 0
app/src/main/java/com/grkj/iscs/view/fragment/StepFragment.kt

@@ -5,6 +5,7 @@ import android.view.View
 import android.widget.ImageView
 import com.bumptech.glide.Glide
 import com.google.android.material.card.MaterialCardView
+import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.FragmentStepBinding
 import com.grkj.iscs.model.bo.PageChangeBO
@@ -177,6 +178,7 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
         }
 
         presenter?.getStepDetail(pageChangeBO.ticketId!!) {
+            BusinessManager.sendLoadingEventMsg(null, false)
             mBinding?.tvWorker?.text = "${it?.get(2)?.userNum}/${it?.get(4)?.userNum}/${it?.get(7)?.userNum}"
             mBinding?.tvLock?.text = "${it?.get(2)?.lockNum}/${it?.get(4)?.lockNum}/${it?.get(7)?.lockNum}"
             mStepList.forEach { step ->
@@ -286,9 +288,11 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
         }
         mTipDialog.setTip(str)
         mTipDialog.setConfirmListener {
+            BusinessManager.sendLoadingEventMsg(getString(R.string.is_processing_please_wait))
             if (step == 4) {
                 presenter?.updateStep(mStepList[2].stepDetail?.stepId!!, "1") {
                     presenter?.updateStep(mStepList[3].stepDetail?.stepId!!, "1") {
+                        BusinessManager.sendLoadingEventMsg(null, false)
                         refreshPage(mChangePage!!)
                         // 自动跳转
                         changePage(PageChangeBO(2, mChangePage?.workstationId, mChangePage?.ticketId,

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -272,4 +272,5 @@
     <string name="no_permission_to_handle">您暂无权限操作当前作业票</string>
     <string name="can_not_change_locker">当前无法更换上锁人</string>
     <string name="can_not_change_colocker">当前无法更换共锁人</string>
+    <string name="is_processing_please_wait">正在处理中,请稍后······</string>
 </resources>