Преглед изворни кода

refactor(更新)
- 异常仓位检测问题处理

周文健 пре 4 месеци
родитељ
комит
e40c5759ea

+ 11 - 1
app/src/main/java/com/grkj/iscs/features/init/fragment/InitDeviceRegistrationKeyAndLockFragment.kt

@@ -91,6 +91,7 @@ class InitDeviceRegistrationKeyAndLockFragment :
                 if (!it) getString(R.string.init_device_registration_key_and_lock_step_hint) else getString(
                     R.string.init_device_registration_key_and_lock_complete_step_hint
                 )
+            binding.checkDeviceInfo.isVisible = it
             binding.reRecognize.isVisible = it
             if (it) {
                 val dockData =
@@ -119,7 +120,16 @@ class InitDeviceRegistrationKeyAndLockFragment :
                     }
                 binding.reRecognize.isVisible =
                     (newKeyDockList + portableDock + lockDock).isNotEmpty()
-                binding.dockRv.models = newKeyDockList + portableDock + lockDock
+                val allDevice = newKeyDockList + portableDock + lockDock
+                val newKeyCount =
+                    newKeyDock.keyData.count { it.newHardware } + portableDock.map { it.deviceData }
+                        .count { it is DockBean.KeyBean }
+                val newLockCount = lockDock.map { it.lockData }.flatten()
+                    .count { it.newHardware } + portableDock.map { it.deviceData }
+                    .count { it is DockBean.LockBean }
+                binding.checkDeviceInfo.text =
+                    getString(R.string.check_device_info, newKeyCount, newLockCount)
+                binding.dockRv.models = allDevice
             }
         }
     }

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/SlotsManageFragment.kt

@@ -175,7 +175,7 @@ class SlotsManageFragment : BaseFragment<FragmentSlotsManageBinding>() {
             is DockBean.KeyBean -> {
                 ModBusController.controlKeyBuckle(isOpen, deviceBean.idx, deviceBean.addr)
                 ModBusController.controlKeyCharge(
-                    isOpen, deviceBean.idx,
+                    !isOpen, deviceBean.idx,
                     deviceBean.addr
                 )
             }

+ 14 - 1
app/src/main/res/layout/fragment_init_device_registration_key_and_lock.xml

@@ -51,6 +51,19 @@
             app:layout_constraintStart_toStartOf="@+id/step_title_layout"
             app:layout_constraintTop_toBottomOf="@+id/step_title_layout" />
 
+        <TextView
+            android:id="@+id/check_device_info"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/common_spacing"
+            android:layout_marginTop="@dimen/common_spacing"
+            android:text="@string/init_device_registration_key_and_lock_step_hint"
+            android:textColor="@color/black"
+            android:textSize="@dimen/common_text_size"
+            android:visibility="gone"
+            app:layout_constraintStart_toStartOf="@+id/step_title_layout"
+            app:layout_constraintTop_toBottomOf="@+id/step_hint" />
+
         <FrameLayout
             android:layout_width="0dp"
             android:layout_height="0dp"
@@ -59,7 +72,7 @@
             app:layout_constraintBottom_toTopOf="@+id/previous_btn"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/step_hint">
+            app:layout_constraintTop_toBottomOf="@+id/check_device_info">
 
             <androidx.recyclerview.widget.RecyclerView
                 android:id="@+id/dock_rv"

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

@@ -409,5 +409,6 @@
     <string name="check_key_is_new_device">Check if the key is new hardware</string>
     <string name="start_scan_key_mac">Start scanning key information</string>
     <string name="do_you_want_to_remove_exception">Are you sure to remove and modify the exception</string>
+    <string name="check_device_info">Detected %1$d keys and %2$d padlocks</string>
 
 </resources>

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

@@ -409,5 +409,6 @@
     <string name="check_key_is_new_device">检查钥匙是否为新硬件</string>
     <string name="start_scan_key_mac">开始扫描钥匙信息</string>
     <string name="do_you_want_to_remove_exception">是否确认移除改异常</string>
+    <string name="check_device_info">检测到钥匙%1$d把,挂锁%2$d把</string>
 
 </resources>

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

@@ -412,5 +412,6 @@
     <string name="check_key_is_new_device">检查钥匙是否为新硬件</string>
     <string name="start_scan_key_mac">开始扫描钥匙信息</string>
     <string name="do_you_want_to_remove_exception">是否确认移除改异常</string>
+    <string name="check_device_info">检测到钥匙%1$d把,挂锁%2$d把</string>
 
 </resources>

+ 20 - 20
data/src/main/java/com/grkj/data/model/res/CabinetSlotsRes.kt

@@ -4,27 +4,27 @@ package com.grkj.data.model.res
  * 锁柜-仓位返回实体
  */
 data class CabinetSlotsRes(
-    val total: Int,
-    val size: Int,
-    val current: Int,
-    val records: List<CabinetSlotsRecord>,
+    var total: Int,
+    var size: Int,
+    var current: Int,
+    var records: List<CabinetSlotsRecord>,
 )
 
 class CabinetSlotsRecord {
-    val cabinetId: Long? = 0
-    val col: String? = ""
-    val createBy: String? = ""
-    val createTime: String? = ""
-    val delFlag: String? = ""
-    val isOccupied: String? = ""
-    val occupiedBy: Int? = 0
-    val paramMap: Map<String, String>? = hashMapOf()
-    val remark: String? = ""
-    val row: String? = ""
-    val slotCode: String? = ""
-    val slotId: Long? = 0
-    val slotType: String? = ""
-    val status: String? = ""
-    val updateBy: String? = ""
-    val updateTime: String? = ""
+    var cabinetId: Long? = 0
+    var col: String? = ""
+    var createBy: String? = ""
+    var createTime: String? = ""
+    var delFlag: String? = ""
+    var isOccupied: String? = ""
+    var occupiedBy: Int? = 0
+    var paramMap: Map<String, String>? = hashMapOf()
+    var remark: String? = ""
+    var row: String? = ""
+    var slotCode: String? = ""
+    var slotId: Long? = 0
+    var slotType: String? = ""
+    var status: String? = ""
+    var updateBy: String? = ""
+    var updateTime: String? = ""
 }

+ 10 - 10
data/src/main/java/com/grkj/data/model/res/KeyPageRes.kt

@@ -1,17 +1,17 @@
 package com.grkj.data.model.res
 
 data class KeyPageRes(
-    val total: Int,
-    val size: Int,
-    val current: Int,
-    val records: List<KeyPageItem>
+    var total: Int,
+    var size: Int,
+    var current: Int,
+    var records: List<KeyPageItem>
 )
 
 class KeyPageItem {
-    val keyId: Long? = 0
-    val keyNfc: String? = ""
-    val macAddress: String? = ""
-    val keyName: String? = ""
-    val exStatus: String? = ""
-    val exRemark: String? = ""
+    var keyId: Long? = 0
+    var keyNfc: String? = ""
+    var macAddress: String? = ""
+    var keyName: String? = ""
+    var exStatus: String? = ""
+    var exRemark: String? = ""
 }

+ 9 - 9
data/src/main/java/com/grkj/data/model/res/LockPageRes.kt

@@ -1,16 +1,16 @@
 package com.grkj.data.model.res
 
 data class LockPageRes(
-    val total: Int,
-    val size: Int,
-    val current: Int,
-    val records: List<LockPageItem>
+    var total: Int,
+    var size: Int,
+    var current: Int,
+    var records: List<LockPageItem>
 )
 
 class LockPageItem{
-    val lockId: String? = ""
-    val lockNfc: String? = ""
-    val lockName: String? = ""
-    val exStatus: String? = ""
-    val exRemark: String? = ""
+    var lockId: String? = ""
+    var lockNfc: String? = ""
+    var lockName: String? = ""
+    var exStatus: String? = ""
+    var exRemark: String? = ""
 }

+ 22 - 7
data/src/main/java/com/grkj/data/repository/impl/HardwareRepository.kt

@@ -138,7 +138,8 @@ class HardwareRepository @Inject constructor(
 
     override fun getIsLockCabinetSlotsPage(callback: (CabinetSlotsRes?) -> Unit) {
         val allLockCabinetSlots =
-            hardwareDao.getAllLockCabinetSlots().map { BeanUtils.convert<CabinetSlotsRecord>(it) }
+            hardwareDao.getAllLockCabinetSlots()
+                .mapNotNull { BeanUtils.copyProperties(it, CabinetSlotsRecord::class.java) }
         callback(
             CabinetSlotsRes(
                 allLockCabinetSlots.size,
@@ -150,12 +151,22 @@ class HardwareRepository @Inject constructor(
     }
 
     override fun getIsLockPage(callback: (LockPageRes?) -> Unit) {
-        val allLockData = hardwareDao.getAllLockData().map { BeanUtils.convert<LockPageItem>(it) }
+        val allLockData = hardwareDao.getAllLockData().mapNotNull {
+            BeanUtils.copyProperties(
+                it,
+                LockPageItem::class.java
+            )
+        }
         callback(LockPageRes(allLockData.size, allLockData.size, 0, allLockData))
     }
 
     override fun getIsKeyPage(callback: (KeyPageRes?) -> Unit) {
-        val allKeyData = hardwareDao.getAllKeyData().map { BeanUtils.convert<KeyPageItem>(it) }
+        val allKeyData = hardwareDao.getAllKeyData().mapNotNull {
+            BeanUtils.copyProperties(
+                it,
+                KeyPageItem::class.java
+            )
+        }
         callback(KeyPageRes(allKeyData.size, allKeyData.size, 0, allKeyData))
     }
 
@@ -464,12 +475,16 @@ class HardwareRepository @Inject constructor(
     }
 
     override fun removeKeyException(rfid: String?) {
-        hardwareDao.removeKeyException(rfid,
-            CommonDictDataEnum.KEY_STATUS.commonDictRes.find { it.dictLabel == "正常" }?.dictValue)
+        hardwareDao.removeKeyException(
+            rfid,
+            CommonDictDataEnum.KEY_STATUS.commonDictRes.find { it.dictLabel == "正常" }?.dictValue
+        )
     }
 
     override fun removeLockException(rfid: String?) {
-        hardwareDao.removeLockException(rfid,
-            CommonDictDataEnum.PADLOCK_STATUS.commonDictRes.find { it.dictLabel == "正常" }?.dictValue)
+        hardwareDao.removeLockException(
+            rfid,
+            CommonDictDataEnum.PADLOCK_STATUS.commonDictRes.find { it.dictLabel == "正常" }?.dictValue
+        )
     }
 }

+ 1 - 1
ui-base/src/main/java/com/grkj/ui_base/business/ModbusBusinessManager.kt

@@ -504,7 +504,7 @@ object ModbusBusinessManager {
                     } else if (slotsPage?.records?.filter {
                             it.slotType == slotTypeList.find { d -> d.dictLabel == "钥匙" }?.dictValue && it.status == slotStatusList.find { d -> d.dictLabel == "异常" }?.dictValue
                         }
-                            ?.find { it.row?.toInt() == dockBean.row && it.col?.toInt() == (dockBean.col + (keyBean.idx) * 2) } != null) {
+                            ?.find { it.row?.toInt() == dockBean.row && it.col?.toInt() == (dockBean.col + (keyBean.idx) * 2 + 1) } != null) {
                         PopTip.tip(
                             CommonUtils.getStr(R.string.slot_exception_tag)
                         )

+ 2 - 2
ui-base/src/main/java/com/grkj/ui_base/utils/modbus/ModBusController.kt

@@ -1150,8 +1150,8 @@ object ModBusController {
             logger.info("锁具信息:${lockDockList[lockDockIndex].getLockList()}")
             val validLocks =
                 lockDockList[lockDockIndex].getLockList().filter { it.rfid !in exceptionLocks }
-                    .filter {
-                        it.isExist && it.idx !in exceptionSlots.filter { it.row?.toInt() == (lockDockIndex + 2) }
+                    .filter { lockBean ->
+                        lockBean.isExist && lockBean.idx !in exceptionSlots.filter { lockBean.row.toInt() == it.row?.toInt() }
                             .map { (it.col?.toInt() ?: 1) - 1 }
                     }
             val toTake = (needLockCount - provideCount).coerceAtMost(validLocks.size)