瀏覽代碼

feat(用户)
- 新增用户时,岗位选择支持默认勾选
- 修改用户时,岗位选择支持默认勾选

feat(首页)
- 首页统计数据支持跳转

feat(数据管理)
- 选择点位时,增加分组至少需要一个点位的校验

feat(硬件管理)
- 优化卡片管理列表加载逻辑

refactor(用户)
- 优化修改用户信息时,删除卡片逻辑
- 优化指纹显示名称

refactor(作业)
- 优化作业步骤确认人判断逻辑

refactor(设备)
- 钥匙和锁位置显示,未在仓显示对应文案

fix(设备)
- 修复更新设备类型时,可能存在的空指针问题
- 修复蓝牙连接超时时间过长问题

fix(人脸识别)
- 修复人脸识别成功或失败后,未关闭loading弹窗的问题

style(弹窗)
- 优化下拉框Item间距
- 优化下拉框多选时,勾选状态显示

style(国际化)
- 新增“未在仓”中英文
- 调整“指纹编号”中英文
- 新增“每个分组至少需要存在一个点位”中英文

周文健 3 月之前
父節點
當前提交
9cdd707b7c
共有 24 個文件被更改,包括 107 次插入45 次删除
  1. 12 2
      app/src/main/java/com/grkj/iscs/features/main/activity/MainActivity.kt
  2. 3 1
      app/src/main/java/com/grkj/iscs/features/main/dialog/CheckFaceDialog.kt
  3. 23 0
      app/src/main/java/com/grkj/iscs/features/main/dialog/TextDropDownDialog.kt
  4. 7 1
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddUserDialog.kt
  5. 4 4
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdatePointDialog.kt
  6. 5 3
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateUserDialog.kt
  7. 4 0
      app/src/main/java/com/grkj/iscs/features/main/fragment/common/SelectPointFragment.kt
  8. 1 3
      app/src/main/java/com/grkj/iscs/features/main/fragment/hardware_manage/CardManageFragment.kt
  9. 17 4
      app/src/main/java/com/grkj/iscs/features/main/fragment/home/HomeFragment.kt
  10. 2 2
      app/src/main/java/com/grkj/iscs/features/main/fragment/user_info/SetFingerprintFragment.kt
  11. 0 9
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/UserManageViewModel.kt
  12. 2 2
      app/src/main/res/layout/item_home_text_drop_down.xml
  13. 2 1
      app/src/main/res/values-en/strings.xml
  14. 2 1
      app/src/main/res/values-zh/strings.xml
  15. 2 1
      app/src/main/res/values/strings.xml
  16. 6 0
      data/src/main/java/com/grkj/data/data/MainDomainData.kt
  17. 1 4
      data/src/main/java/com/grkj/data/model/dos/IsJobTicketStep.kt
  18. 2 0
      ui-base/src/main/java/com/grkj/ui_base/base/BaseActivity.kt
  19. 4 2
      ui-base/src/main/java/com/grkj/ui_base/business/ModbusBusinessManager.kt
  20. 1 1
      ui-base/src/main/java/com/grkj/ui_base/utils/ble/BleConnectionManager.kt
  21. 4 4
      ui-base/src/main/java/com/grkj/ui_base/utils/modbus/ModBusController.kt
  22. 1 0
      ui-base/src/main/res/values-en/strings.xml
  23. 1 0
      ui-base/src/main/res/values-zh/strings.xml
  24. 1 0
      ui-base/src/main/res/values/strings.xml

+ 12 - 2
app/src/main/java/com/grkj/iscs/features/main/activity/MainActivity.kt

@@ -38,6 +38,7 @@ import dagger.hilt.android.AndroidEntryPoint
 class MainActivity() : BaseActivity<ActivityMainBinding>() {
     private val viewModel: MainViewModel by viewModels()
     private var cardNo: String = ""
+    private var userInfoNavGraph = 0
     private val tabConfigs = listOf(
         TabConfig(
             View.generateViewId(),
@@ -126,16 +127,25 @@ class MainActivity() : BaseActivity<ActivityMainBinding>() {
         }
         binding.userInfoLayout.setDebouncedClickListener {
             if (MainDomainData.permissions.contains(RoleFunctionalPermissionsEnum.USER_INFO_HOME.functionalPermission)) {
-                binding.navBar.isVisible = true
-                if (navController.graph.id == R.navigation.nav_user_info) {
+                if (navController.graph.id == userInfoNavGraph) {
                     navController.popBackStack(R.id.userInfoHomeFragment, false)
+                    binding.navBar.isVisible = true
                 } else {
                     replaceNavGraph(R.navigation.nav_user_info)
+                    userInfoNavGraph = navController.graph.id
                 }
             }
         }
         navController.addOnDestinationChangedListener { _, destination, _ ->
             // 如果是我们定义的底栏图表对应的 NavGraph,就 show,否则 hide
+            if (bottomNavDestinations.contains(destination.id) && MainDomainData.fromQuickEntry) {
+                val firstId = binding.navBar.menu[0].itemId
+                binding.navBar.selectedItemId = firstId
+                MainDomainData.fromQuickEntry = false
+            }
+            if (navController.graph.id != userInfoNavGraph) {
+                userInfoNavGraph = 0
+            }
             binding.navBar.isVisible = bottomNavDestinations.contains(destination.id)
         }
     }

+ 3 - 1
app/src/main/java/com/grkj/iscs/features/main/dialog/CheckFaceDialog.kt

@@ -32,7 +32,7 @@ class CheckFaceDialog(
 ) : OnBindView<CustomDialog>(R.layout.dialog_check_face) {
     private var mLoginType = 0 // 0:人脸 1:指纹 2:工卡 3:账号
     private var inFaceChecking: Boolean = false
-    private var dialog: CustomDialog?=null
+    private var dialog: CustomDialog? = null
     private val mPairList = mutableListOf(
         Pair(
             SIKCore.getApplication().getString(com.grkj.ui_base.R.string.please_scan_face),
@@ -109,6 +109,7 @@ class CheckFaceDialog(
                         viewModel.checkFinger(
                             ImageConvertUtils.bitmapToBase64(bitmap).toString()
                         ).observe(lifecycleOwner) {
+                            LoadingEvent.sendLoadingEvent()
                             if (it == LoginResultEnum.FINGERPRINTER_VERIFY_SUCCESS) {
                                 customDialog.dismiss()
                                 callBack?.invoke(it)
@@ -166,6 +167,7 @@ class CheckFaceDialog(
                     viewModel.checkFace(
                         ImageConvertUtils.bitmapToBase64(itBitmap).toString()
                     ).observe(lifecycleOwner) {
+                        LoadingEvent.sendLoadingEvent()
                         if (it == LoginResultEnum.FACE_VERIFY_FAILED) {
                             ThreadUtils.runOnMainDelayed(1000) {
                                 ArcSoftUtil.inDetecting = false

+ 23 - 0
app/src/main/java/com/grkj/iscs/features/main/dialog/TextDropDownDialog.kt

@@ -60,6 +60,7 @@ class TextDropDownDialog(
                         if (item.itemExpand) collapse() else expand()
                         itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
                     }
+                    itemBinding.checkIv.isVisible = item.isSelected()
                     itemBinding.rootLayout.setDebouncedClickListener {
                         if (multiSelect) {
                             if (item.getChildren().isEmpty() || canSelectedParent) {
@@ -69,6 +70,7 @@ class TextDropDownDialog(
                                     ?.filterIsInstance<TextDropDownEntity>()
                                     ?.filter { it.isSelected() }
                                 onMultiSelect(selected)
+                                adapter.notifyDataSetChanged()
                             } else {
                                 if (item.itemExpand) collapse() else expand()
                                 itemBinding.arrowIv.rotation = if (item.itemExpand) 90f else 0f
@@ -206,6 +208,10 @@ class TextDropDownDialog(
         fun getChildren(): List<TextDropDownEntity>
         fun setChildren(children: List<TextDropDownEntity>)
         fun getLevel(): Int
+
+        fun checkItemSelected(action: (TextDropDownEntity) -> Boolean)
+
+        fun findTreeData(action: (TextDropDownEntity) -> Boolean): List<TextDropDownEntity>
     }
 
     /**
@@ -244,5 +250,22 @@ class TextDropDownDialog(
         }
 
         override fun getLevel() = dataLevel
+
+        override fun checkItemSelected(action: (TextDropDownEntity) -> Boolean) {
+            selected = action(this)
+            children.forEach {
+                it.checkItemSelected(action)
+            }
+        }
+
+        override fun findTreeData(action: (TextDropDownEntity) -> Boolean): List<TextDropDownEntity> {
+            val result = mutableListOf<TextDropDownEntity>()
+            if (action(this)) {
+                result.add(this)
+            }
+            result += children.flatMap { it.findTreeData(action) }
+            return result
+        }
+
     }
 }

+ 7 - 1
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddUserDialog.kt

@@ -51,7 +51,13 @@ class AddUserDialog(
         }
         // 岗位多选
         binding.workstationNameTv.setDebouncedClickListener {
-            TextDropDownDialog.showMultiTree(workstationData, binding.workstationNameTv, canSelectedParent = true) { list ->
+            TextDropDownDialog.showMultiTree(workstationData.apply {
+                forEach {
+                    it.checkItemSelected {
+                        selectedWorkstations.map { it.getShowText() }.contains(it.getShowText())
+                    }
+                }
+            }, binding.workstationNameTv, canSelectedParent = true) { list ->
                 selectedWorkstations = list.orEmpty()
                 binding.workstationNameTv.text =
                     selectedWorkstations.joinToString(",") { it.getShowText() }

+ 4 - 4
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdatePointDialog.kt

@@ -63,21 +63,21 @@ class UpdatePointDialog(
 
         // 电源类型
         binding.powerTypeTv.setDebouncedClickListener {
-            TextDropDownDialog.showSingle(powerTypeList,binding.powerTypeTv) { item ->
+            TextDropDownDialog.showSingle(powerTypeList, binding.powerTypeTv) { item ->
                 binding.powerTypeTv.text = item.getShowText()
                 binding.powerTypeTv.tag = item.getTag()
             }
         }
         // 工作站
         binding.workstationTv.setDebouncedClickListener {
-            TextDropDownDialog.showSingleTree(workstationData,binding.workstationTv) { item ->
+            TextDropDownDialog.showSingleTree(workstationData, binding.workstationTv) { item ->
                 binding.workstationTv.text = item.getShowText()
                 binding.workstationTv.tag = item.getId()
             }
         }
         // RFID
         binding.rfidTagTv.setDebouncedClickListener {
-            TextDropDownDialog.showSingle(rfidData,binding.rfidTagTv) { item ->
+            TextDropDownDialog.showSingle(rfidData, binding.rfidTagTv) { item ->
                 binding.rfidTagTv.text = item.getShowText()
                 binding.rfidTagTv.tag = item.getId()
             }
@@ -98,7 +98,7 @@ class UpdatePointDialog(
                 binding.workstationTv.tag as Long,
                 binding.rfidTagTv.tag as Long
             )
-            onConfirm(updateVo,dialog)
+            onConfirm(updateVo, dialog)
         }
     }
 

+ 5 - 3
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateUserDialog.kt

@@ -58,7 +58,7 @@ class UpdateUserDialog(
         // 标记已选
         selectedRoles = roleData.filter { it.getShowText() in userVo.roleNames }.toMutableList()
         selectedWorkstations =
-            workstationData.filter { it.getShowText() in userVo.workstationNames }.toMutableList()
+            workstationData.flatMap { it.findTreeData { it.getShowText() in userVo.workstationNames } }.toMutableList()
 
         // 角色多选
         binding.roleTv.setOnClickListener {
@@ -77,8 +77,10 @@ class UpdateUserDialog(
         binding.workstationNameTv.setDebouncedClickListener {
             TextDropDownDialog.showMultiTree(workstationData.apply {
                 forEach {
-                    it.setSelected(selectedWorkstations.map { it.getShowText() }
-                        .contains(it.getShowText()))
+                    it.checkItemSelected {
+                        selectedWorkstations.map { it.getShowText() }
+                            .contains(it.getShowText())
+                    }
                 }
             }, binding.workstationNameTv, canSelectedParent = true) { list ->
                 selectedWorkstations = list.orEmpty().toMutableList()

+ 4 - 0
app/src/main/java/com/grkj/iscs/features/main/fragment/common/SelectPointFragment.kt

@@ -47,6 +47,10 @@ class SelectPointFragment : BaseFragment<FragmentSelectPointBinding>() {
             navController.popBackStack()
         }
         binding.confirm.setDebouncedClickListener {
+            if (viewModel.selectedPointData.any { it.jobTicketGroupMemberList.isEmpty() }){
+                showToast(CommonUtils.getStr(R.string.group_at_least_has_one_point).toString())
+                return@setDebouncedClickListener
+            }
             GlobalDataTempStore.getInstance()
                 .saveData(
                     DataTransferConstants.KEY_SELECTED_POINT_DATA,

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

@@ -130,15 +130,13 @@ class CardManageFragment : BaseFragment<FragmentCardManageBinding>() {
     override fun initData() {
         super.initData()
         viewModel.cardFilterData = null
+        showLoading()
         viewModel.getAllUserData().observe(this) {
             loadCards(reset = true)
         }
     }
 
     private fun loadCards(reset: Boolean = false) {
-        if (reset) {
-            showLoading()
-        }
         if (reset) viewModel.cardManageDataList.clear()
         viewModel.getCardData(viewModel.cardFilterData, !reset).observe(this) {
             hideLoading()

+ 17 - 4
app/src/main/java/com/grkj/iscs/features/main/fragment/home/HomeFragment.kt

@@ -111,16 +111,29 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
             }
         }
         binding.ongoingJobNum.setDebouncedClickListener {
-            BottomNavVisibilityEvent.sendBottomNavVisibilityEvent(false)
             JumpViewEvent.sendJumpViewEvent(
                 R.navigation.nav_job_manage,
-                R.id.action_jobManageHomeFragment_to_inProgressJobManageFragment
+                R.id.action_jobManageHomeFragment_to_inProgressJobManageFragment, true
+            )
+        }
+        binding.lockedPointsNum.setDebouncedClickListener {
+            JumpViewEvent.sendJumpViewEvent(
+                R.navigation.nav_job_manage,
+                R.id.action_jobManageHomeFragment_to_lockedPointsFragment, true
             )
         }
         binding.allJobNum.setDebouncedClickListener {
-            BottomNavVisibilityEvent.sendBottomNavVisibilityEvent(false)
             JumpViewEvent.sendJumpViewEvent(
-                R.navigation.nav_job_manage, R.id.action_jobManageHomeFragment_to_jobManageFragment
+                R.navigation.nav_job_manage,
+                R.id.action_jobManageHomeFragment_to_jobManageFragment,
+                true
+            )
+        }
+        binding.allPointsNum.setDebouncedClickListener {
+            JumpViewEvent.sendJumpViewEvent(
+                R.navigation.nav_data_manage,
+                R.id.action_dataManageHomeFragment_to_pointMangeFragment,
+                true
             )
         }
         binding.startTime.setDebouncedClickListener {

+ 2 - 2
app/src/main/java/com/grkj/iscs/features/main/fragment/user_info/SetFingerprintFragment.kt

@@ -102,12 +102,12 @@ class SetFingerprintFragment : BaseFragment<FragmentSetFingerprintBinding>() {
                 val itemBinding = getBinding<ItemSetFingerprintBinding>()
                 val item = getModel<FingerprintDataVo>()
                 itemBinding.fingerprintCode.text =
-                    getString(R.string.fingerprint_code_str, modelPosition)
+                    getString(R.string.fingerprint_code_str, item.group)
                 itemBinding.delete.setDebouncedClickListener {
                     TipDialog.showInfo(
                         CommonUtils.getStr(
                             com.grkj.ui_base.R.string.fingerprint_delete_confirm_tip,
-                            getString(R.string.fingerprint_code_str, modelPosition)
+                            getString(R.string.fingerprint_code_str, item.group)
                         ).toString(),
                         countDownTime = 10,
                         onConfirmClick = {

+ 0 - 9
app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/UserManageViewModel.kt

@@ -102,10 +102,6 @@ class UserManageViewModel @Inject constructor(
             userRepository.updateUserData(updateUserDataVo)
             workstationRepository.deleteUserWorkstationByUserIds(listOf(updateUserDataVo.userId))
             roleRepository.deleteUserRoleByUserId(listOf(updateUserDataVo.userId))
-            hardwareRepository.deleteCardByUserIdAndCardCode(
-                updateUserDataVo.userId,
-                updateUserDataVo.cardCode
-            )
             updateUserDataVo.workstationId?.let {
                 workstationRepository.addUserWorkstationData(
                     updateUserDataVo.userId,
@@ -113,11 +109,6 @@ class UserManageViewModel @Inject constructor(
                 )
             }
             roleRepository.addUserRoleData(updateUserDataVo.userId, updateUserDataVo.roleId)
-//            hardwareRepository.addCard(
-//                updateUserDataVo.userId,
-//                updateUserDataVo.cardCode,
-//                updateUserDataVo.nickname
-//            )
             emit(true)
         }
     }

+ 2 - 2
app/src/main/res/layout/item_home_text_drop_down.xml

@@ -12,7 +12,7 @@
             android:id="@+id/arrow_iv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:padding="@dimen/common_spacing_2x"
+            android:padding="@dimen/common_spacing"
             android:src="@drawable/icon_arrow_right"
             android:visibility="gone" />
 
@@ -22,7 +22,7 @@
             android:layout_height="match_parent"
             android:layout_weight="1"
             android:gravity="center_vertical"
-            android:padding="@dimen/common_spacing"
+            android:paddingHorizontal="@dimen/common_spacing"
             android:textColor="@color/black"
             android:textSize="@dimen/normal_text_size_18" />
 

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

@@ -383,7 +383,7 @@
     <string name="please_done_operation">Please done operation %s first</string>
     <string name="set_fingerprint_title">Set fingerprint</string>
     <string name="fingerprint_code">Fingerprint code</string>
-    <string name="fingerprint_code_str">Fingerprint_%d</string>
+    <string name="fingerprint_code_str">Fingerprint_%s</string>
     <string name="delete_success">Delete success</string>
     <string name="set_face_title">Set face</string>
     <string name="only_one_person_allowed">Only one person allowed</string>
@@ -547,5 +547,6 @@
     <string name="point_in_use">Point in use can not edit</string>
     <string name="selected_rfid_in_use">Exists RFID tag in use</string>
     <string name="rfid_in_use">RFID tag is in use and cannot be modified</string>
+    <string name="group_at_least_has_one_point">At least one point must exist for each group</string>
 
 </resources>

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

@@ -383,7 +383,7 @@
     <string name="please_done_operation">请先完成%s</string>
     <string name="set_fingerprint_title">设置指纹</string>
     <string name="fingerprint_code">指纹编号</string>
-    <string name="fingerprint_code_str">指纹_%d</string>
+    <string name="fingerprint_code_str">指纹_%s</string>
     <string name="delete_success">删除成功</string>
     <string name="set_face_title">设置人脸</string>
     <string name="only_one_person_allowed">请保持单人入镜</string>
@@ -547,5 +547,6 @@
     <string name="point_in_use">点位正在使用无法修改</string>
     <string name="selected_rfid_in_use">存在正在使用的RFID标签</string>
     <string name="rfid_in_use">RFID标签使用中,无法修改</string>
+    <string name="group_at_least_has_one_point">每个分组至少需要存在一个点位</string>
 
 </resources>

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

@@ -386,7 +386,7 @@
     <string name="please_done_operation">请先完成%s</string>
     <string name="set_fingerprint_title">设置指纹</string>
     <string name="fingerprint_code">指纹编号</string>
-    <string name="fingerprint_code_str">指纹_%d</string>
+    <string name="fingerprint_code_str">指纹_%s</string>
     <string name="delete_success">删除成功</string>
     <string name="set_face_title">设置人脸</string>
     <string name="only_one_person_allowed">请保持单人入镜</string>
@@ -550,5 +550,6 @@
     <string name="point_in_use">点位正在使用无法修改</string>
     <string name="selected_rfid_in_use">存在正在使用的RFID标签</string>
     <string name="rfid_in_use">RFID标签使用中,无法修改</string>
+    <string name="group_at_least_has_one_point">每个分组至少需要存在一个点位</string>
 
 </resources>

+ 6 - 0
data/src/main/java/com/grkj/data/data/MainDomainData.kt

@@ -43,6 +43,12 @@ object MainDomainData {
     @Volatile
     var deviceTakeTicketGroupBound: MutableMap<Long, Long> = mutableMapOf()
 
+    /**
+     * 来自快捷方式
+     */
+    @Volatile
+    var fromQuickEntry: Boolean = false
+
     /**
      * 清除数据
      */

+ 1 - 4
data/src/main/java/com/grkj/data/model/dos/IsJobTicketStep.kt

@@ -126,16 +126,13 @@ open class IsJobTicketStep : BaseBean() {
      */
     @Ignore
     fun currentUserCanConfirm(): Boolean {
-        if (confirmUser == null || MainDomainData.userInfo?.userId == confirmUser) {
-            return true
-        }
+        return MainDomainData.userInfo?.userId == confirmUser
 //        if (confirmRoleCode != null && confirmUser == null && MainDomainData.roleKeys?.contains(
 //                confirmRoleCode!!
 //            ) == true
 //        ) {
 //            return true
 //        }
-        return false
     }
 
     /**

+ 2 - 0
ui-base/src/main/java/com/grkj/ui_base/base/BaseActivity.kt

@@ -13,6 +13,7 @@ import androidx.navigation.NavController
 import androidx.navigation.fragment.NavHostFragment
 import com.grkj.shared.model.EventBean
 import com.grkj.data.data.EventConstants
+import com.grkj.data.data.MainDomainData
 import com.grkj.shared.utils.KeyboardUtils
 import com.grkj.ui_base.config.ISCSConfig
 import com.grkj.ui_base.dialog.LoadingDialog
@@ -138,6 +139,7 @@ abstract class BaseActivity<V : ViewDataBinding> : AppCompatActivity(), CustomAd
                         navBar?.menu?.findItem(it.key)?.let {
                             navBar?.selectedItemId = it.itemId
                             navController.navigate(targetId)
+                            MainDomainData.fromQuickEntry = true
                         }
                     }
                 }

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

@@ -611,7 +611,8 @@ object ModbusBusinessManager {
      */
     fun getKeySlotPosition(keyNfc: String): String {
         val keyData = ModBusController.getKeyByRfid(keyNfc)
-        return "${keyData?.row}-${keyData?.idx}"
+        return if (keyData == null) CommonUtils.getStr(R.string.not_in_slot)
+            .toString() else "${keyData.row}-${keyData.idx + 1}"
     }
 
     /**
@@ -619,6 +620,7 @@ object ModbusBusinessManager {
      */
     fun getLockSlotPosition(lockNfc: String): String {
         val lockData = ModBusController.getLockByRfid(lockNfc)
-        return "${lockData?.row}-${lockData?.idx}"
+        return if (lockData == null) CommonUtils.getStr(R.string.not_in_slot)
+            .toString() else "${lockData.row}-${lockData.idx + 1}"
     }
 }

+ 1 - 1
ui-base/src/main/java/com/grkj/ui_base/utils/ble/BleConnectionManager.kt

@@ -250,7 +250,7 @@ object BleConnectionManager {
         }
         val listener = connectListeners.first()
         currentConnectingMac.add(listener.mac)
-        ThreadUtils.runOnIODelayed(10 * 1000) {
+        ThreadUtils.runOnIODelayed(3 * 1000) {
             isPreparing = false
             currentConnectingMac.removeIf { it == listener.mac }
         }

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

@@ -527,15 +527,15 @@ object ModBusController {
     /**
      * 更新设备类型
      */
-    private fun updateDeviceType(idx: Byte, type: Byte?) {
-        val dock = dockList.find { it.addr == idx }
+    private fun updateDeviceType(addr: Byte, type: Byte?) {
+        val dock = dockList.find { it.addr == addr }
         dock?.let {
             it.type = type
         } ?: let {
             dockList.add(
                 DockBean(
-                    idx, DockBean.dockConfig.find { it.addr == idx }?.row?.toInt() ?: 0,
-                    DockBean.dockConfig.find { it.addr == idx }?.col?.toInt() ?: 0,
+                    addr, DockBean.dockConfig.find { it.addr == addr }?.row ?: 0,
+                    DockBean.dockConfig.find { it.addr == addr }?.col ?: 0,
                     type, true, mutableListOf()
                 )
             )

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

@@ -380,4 +380,5 @@
     <string name="date">%2$d/%3$d/%1$d</string>
     <string name="error_date_range_invalid">The start time cannot be later than the end time</string>
     <string name="loading_data">Data loading</string>
+    <string name="not_in_slot">Not in slot</string>
 </resources>

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

@@ -380,4 +380,5 @@
     <string name="date">%1$d年%2$d月%3$d日</string>
     <string name="error_date_range_invalid">开始时间不能晚于结束时间</string>
     <string name="loading_data">数据加载中</string>
+    <string name="not_in_slot">未在仓位</string>
 </resources>

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

@@ -380,4 +380,5 @@
     <string name="date">%1$d年%2$d月%3$d日</string>
     <string name="error_date_range_invalid">开始时间不能晚于结束时间</string>
     <string name="loading_data">数据加载中</string>
+    <string name="not_in_slot">未在仓位</string>
 </resources>