Pārlūkot izejas kodu

refactor(更新)
- 用户管理、点位管理、角色管理的数据校验和重复提示。

周文健 10 mēneši atpakaļ
vecāks
revīzija
670e4af3aa
19 mainītis faili ar 196 papildinājumiem un 181 dzēšanām
  1. 4 14
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddPointDialog.kt
  2. 10 16
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddRoleDialog.kt
  3. 0 11
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddUserDialog.kt
  4. 0 2
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddWorkstationDialog.kt
  5. 4 5
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdatePointDialog.kt
  6. 8 5
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateRoleDialog.kt
  7. 4 5
      app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/UpdateUserDialog.kt
  8. 61 54
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/PointMangeFragment.kt
  9. 33 31
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/RoleManageFragment.kt
  10. 32 30
      app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/UserManageFragment.kt
  11. 16 0
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/PointManageViewModel.kt
  12. 2 5
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/RoleManageViewModel.kt
  13. 2 2
      app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/UserManageViewModel.kt
  14. 2 1
      app/src/main/res/values-en/strings.xml
  15. 1 0
      app/src/main/res/values-zh/strings.xml
  16. 1 0
      app/src/main/res/values/strings.xml
  17. 6 0
      data/src/main/java/com/grkj/data/dao/IsolationPointDao.kt
  18. 6 0
      data/src/main/java/com/grkj/data/repository/IIsolationPointRepository.kt
  19. 4 0
      data/src/main/java/com/grkj/data/repository/impl/standard/IsolationPointRepository.kt

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

@@ -22,12 +22,12 @@ import com.kongzue.dialogx.interfaces.OnBindView
 class AddPointDialog(
     private val workstationData: List<TextDropDownDialog.TextDropDownEntity>,
     private val rfidTokenData: List<TextDropDownDialog.TextDropDownEntity>,
-    private val onConfirm: (AddPointManageVo) -> Unit
+    private val onConfirm: (AddPointManageVo, CustomDialog) -> Unit
 ) : OnBindView<CustomDialog>(R.layout.dialog_add_point) {
 
     private lateinit var binding: DialogAddPointBinding
 
-    override fun onBind(dialog: CustomDialog?, v: View) {
+    override fun onBind(dialog: CustomDialog, v: View) {
         binding = DialogAddPointBinding.bind(v)
         dialog?.isCancelable = false
         dialog?.setMaskColor(CommonUtils.getColor(com.grkj.ui_base.R.color.scrim))
@@ -75,9 +75,7 @@ class AddPointDialog(
                     binding.workstationTv.tag as Long,
                     binding.rfidTagTv.tag as Long
                 )
-                onConfirm(vo)
-                dialog?.dismiss()
-                clearFields()
+                onConfirm(vo,dialog)
             }
         }
     }
@@ -106,14 +104,6 @@ class AddPointDialog(
         return true
     }
 
-    private fun clearFields() {
-        binding.pointNameTv.text?.clear()
-        binding.functionEt.text?.clear()
-        binding.powerTypeTv.text = ""
-        binding.workstationTv.text = ""
-        binding.rfidTagTv.text = ""
-    }
-
     companion object {
         /**
          * 显示对话框并设置确认回调
@@ -122,7 +112,7 @@ class AddPointDialog(
         fun show(
             workstationData: List<TextDropDownDialog.TextDropDownEntity>,
             rfidTokenData: List<TextDropDownDialog.TextDropDownEntity>,
-            onConfirm: (AddPointManageVo) -> Unit
+            onConfirm: (AddPointManageVo, CustomDialog) -> Unit
         ) {
             CustomDialog.show(
                 AddPointDialog(workstationData, rfidTokenData, onConfirm),

+ 10 - 16
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddRoleDialog.kt

@@ -14,6 +14,8 @@ import com.kongzue.dialogx.dialogs.CustomDialog
 import com.kongzue.dialogx.interfaces.OnBindView
 import me.jessyan.autosize.utils.AutoSizeUtils
 import com.grkj.ui_base.utils.CommonUtils
+import com.grkj.ui_base.utils.extension.tip
+import com.kongzue.dialogx.dialogs.PopTip
 
 /**
  * 添加角色对话框,基于 DialogX
@@ -40,10 +42,17 @@ class AddRoleDialog(
         // 关闭
         binding.closeIv.setOnClickListener {
             dialog?.dismiss()
-            clearData()
         }
         // 确认
         binding.confirm.setOnClickListener {
+            if (binding.roleNameEt.text.isNullOrBlank()) {
+                PopTip.build().tip(R.string.please_input_role_name)
+                return@setOnClickListener
+            }
+            if (binding.roleKeyEt.text.isNullOrBlank()) {
+                PopTip.build().tip(R.string.please_input_permission_characters)
+                return@setOnClickListener
+            }
             val data = AddRoleDataEntity().apply {
                 roleName = binding.roleNameEt.text.toString()
                 roleKeys = binding.roleKeyEt.text.toString()
@@ -55,12 +64,10 @@ class AddRoleDialog(
                 functionalPermissions = collectSelected(roleData)
             }
             onConfirm(data, dialog)
-            clearData()
         }
         // 取消
         binding.cancel.setOnClickListener {
             dialog?.dismiss()
-            clearData()
         }
 
         // 列表
@@ -108,19 +115,6 @@ class AddRoleDialog(
         }
     }
 
-    // 清空输入和状态
-    private fun clearData() {
-        binding.roleNameEt.text?.clear()
-        binding.roleKeyEt.text?.clear()
-        binding.statusRg.clearCheck()
-        binding.expandCollapse.isChecked = false
-        binding.allSelected.isChecked = false
-        roleData = RoleManageFunctionalPermissionsEntity.getFunctionalPermissions().reversed()
-            .toMutableList()
-        selectedPermission.clear()
-        binding.roleListRv.models = roleData
-    }
-
     // 子节点同步选中状态
     private fun syncChildren(item: RoleManageFunctionalPermissionsEntity, checked: Boolean) {
         item.children.forEach {

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

@@ -76,7 +76,6 @@ class AddUserDialog(
                 binding.statusRg.checkedRadioButtonId == binding.activateRb.id
             )
             onConfirm(vo, dialog)
-            clearFields()
         }
     }
 
@@ -104,16 +103,6 @@ class AddUserDialog(
         return true
     }
 
-    private fun clearFields() {
-        binding.nicknameEt.text?.clear()
-        binding.cardcodeEt.text?.clear()
-        binding.roleTv.text = ""
-        binding.workstationNameTv.text = ""
-        selectedRoles = emptyList()
-        selectedWorkstations = emptyList()
-        binding.statusRg.clearCheck()
-    }
-
     companion object {
         /**
          * 显示新增用户对话框并设置确认回调

+ 0 - 2
app/src/main/java/com/grkj/iscs/features/main/dialog/data_manage/AddWorkstationDialog.kt

@@ -33,8 +33,6 @@ class AddWorkstationDialog(
                 PopTip.build().tip(R.string.please_input_workstation_name)
             } else {
                 onConfirm(name,dialog)
-                dialog?.dismiss()
-                binding.workstationNameEt.text?.clear()
             }
         }
     }

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

@@ -24,7 +24,7 @@ class UpdatePointDialog(
     private val pointVo: PointManageVo,
     private val workstationData: List<TextDropDownDialog.TextDropDownEntity>,
     private val rfidData: List<TextDropDownDialog.TextDropDownEntity>,
-    private val onConfirm: (UpdatePointManageVo) -> Unit
+    private val onConfirm: (UpdatePointManageVo, CustomDialog) -> Unit
 ) : OnBindView<CustomDialog>(R.layout.dialog_update_point) {
 
     private lateinit var binding: DialogUpdatePointBinding
@@ -39,7 +39,7 @@ class UpdatePointDialog(
         }
     }
 
-    override fun onBind(dialog: CustomDialog?, v: View) {
+    override fun onBind(dialog: CustomDialog, v: View) {
         binding = DialogUpdatePointBinding.bind(v)
         dialog?.isCancelable = false
         dialog?.setMaskColor(CommonUtils.getColor(com.grkj.ui_base.R.color.scrim))
@@ -97,8 +97,7 @@ class UpdatePointDialog(
                 binding.workstationTv.tag as Long,
                 binding.rfidTagTv.tag as Long
             )
-            onConfirm(updateVo)
-            dialog?.dismiss()
+            onConfirm(updateVo,dialog)
         }
     }
 
@@ -135,7 +134,7 @@ class UpdatePointDialog(
             pointVo: PointManageVo,
             workstationData: List<TextDropDownDialog.TextDropDownEntity>,
             rfidData: List<TextDropDownDialog.TextDropDownEntity>,
-            onConfirm: (UpdatePointManageVo) -> Unit
+            onConfirm: (UpdatePointManageVo, CustomDialog) -> Unit
         ) {
             CustomDialog.show(
                 UpdatePointDialog(pointVo, workstationData, rfidData, onConfirm),

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

@@ -23,7 +23,7 @@ import me.jessyan.autosize.utils.AutoSizeUtils
  */
 class UpdateRoleDialog(
     private val updateEntity: UpdateRoleDataEntity,
-    private val onConfirm: (UpdateRoleDataEntity) -> Unit
+    private val onConfirm: (UpdateRoleDataEntity, CustomDialog) -> Unit
 ) : OnBindView<CustomDialog>(R.layout.dialog_update_role) {
 
     private lateinit var binding: DialogUpdateRoleBinding
@@ -34,7 +34,7 @@ class UpdateRoleDialog(
         .reversed()
         .toMutableList()
 
-    override fun onBind(dialog: CustomDialog?, v: View) {
+    override fun onBind(dialog: CustomDialog, v: View) {
         binding = DialogUpdateRoleBinding.bind(v)
         dialog?.isCancelable = false
         dialog?.setMaskColor(CommonUtils.getColor(com.grkj.ui_base.R.color.scrim))
@@ -95,13 +95,16 @@ class UpdateRoleDialog(
                 PopTip.build().tip(R.string.please_input_role_name)
                 return@setOnClickListener
             }
+            if (binding.roleKeyEt.text.isNullOrBlank()) {
+                PopTip.build().tip(R.string.please_input_permission_characters)
+                return@setOnClickListener
+            }
             updateEntity.roleName = binding.roleNameEt.text.toString()
             updateEntity.roleKeys = binding.roleKeyEt.text.toString()
             updateEntity.status = binding.activateRb.isChecked
             // 收集权限
             updateEntity.functionalPermissions = collectSelected(treeData)
-            onConfirm(updateEntity)
-            dialog?.dismiss()
+            onConfirm(updateEntity,dialog)
         }
     }
 
@@ -158,7 +161,7 @@ class UpdateRoleDialog(
         @JvmStatic
         fun show(
             updateEntity: UpdateRoleDataEntity,
-            onConfirm: (UpdateRoleDataEntity) -> Unit
+            onConfirm: (UpdateRoleDataEntity, CustomDialog) -> Unit
         ) {
             CustomDialog.show(
                 UpdateRoleDialog(updateEntity, onConfirm),

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

@@ -25,14 +25,14 @@ class UpdateUserDialog(
     private val userVo: UserManageVo,
     private val roleData: List<TextDropDownDialog.TextDropDownEntity>,
     private val workstationData: List<TextDropDownDialog.TextDropDownEntity>,
-    private val onConfirm: (UpdateUserDataVo) -> Unit
+    private val onConfirm: (UpdateUserDataVo, CustomDialog) -> Unit
 ) : OnBindView<CustomDialog>(R.layout.dialog_update_user) {
 
     private lateinit var binding: DialogUpdateUserBinding
     private var selectedRoles = mutableListOf<TextDropDownDialog.TextDropDownEntity>()
     private var selectedWorkstations = mutableListOf<TextDropDownDialog.TextDropDownEntity>()
 
-    override fun onBind(dialog: CustomDialog?, v: View) {
+    override fun onBind(dialog: CustomDialog, v: View) {
         binding = DialogUpdateUserBinding.bind(v)
         dialog?.isCancelable = false
         dialog?.setMaskColor(CommonUtils.getColor(com.grkj.ui_base.R.color.scrim))
@@ -112,8 +112,7 @@ class UpdateUserDialog(
                 selectedWorkstations.mapNotNull { it.getId() },
                 isActive
             )
-            onConfirm(updateVo)
-            dialog?.dismiss()
+            onConfirm(updateVo, dialog)
         }
     }
 
@@ -126,7 +125,7 @@ class UpdateUserDialog(
             userVo: UserManageVo,
             roleData: List<TextDropDownDialog.TextDropDownEntity>,
             workstationData: List<TextDropDownDialog.TextDropDownEntity>,
-            onConfirm: (UpdateUserDataVo) -> Unit
+            onConfirm: (UpdateUserDataVo, CustomDialog) -> Unit
         ) {
             CustomDialog.show(
                 UpdateUserDialog(userVo, roleData, workstationData, onConfirm),

+ 61 - 54
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/PointMangeFragment.kt

@@ -60,32 +60,35 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
                         dataId = it.rfidId,
                         dataText = "${it.rfidCode}(${it.rfid})"
                     )
-                }) {
-                    viewModel.addIsolationPoint(it).observe(this) {
-                        if (it) {
-                            TipDialog.show(
-                                title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_succeed)
-                                    .toString(),
-                                dialogType = TipDialog.DialogType.SUCCESS,
-                                msg = CommonUtils.getStr(R.string.add_point_succeed).toString(),
-                                countDownTime = 10,
-                                showConfirm = false,
-                                onCancelClick = {
-                                    getPointData(nextPage = false)
-                                }
-                            )
-                        } else {
-                            TipDialog.show(
-                                title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
-                                    .toString(),
-                                dialogType = TipDialog.DialogType.ERROR,
-                                msg = CommonUtils.getStr(R.string.add_point_failed).toString(),
-                                countDownTime = 10,
-                                showConfirm = false,
-                                onCancelClick = {
-                                    getPointData(nextPage = false)
-                                }
-                            )
+                }) { data, dialog ->
+                    viewModel.validatePointData(data.rfidId ?: 0).observe(this) {
+                        viewModel.addIsolationPoint(data).observe(this) {
+                            dialog.dismiss()
+                            if (it) {
+                                TipDialog.show(
+                                    title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_succeed)
+                                        .toString(),
+                                    dialogType = TipDialog.DialogType.SUCCESS,
+                                    msg = CommonUtils.getStr(R.string.add_point_succeed).toString(),
+                                    countDownTime = 10,
+                                    showConfirm = false,
+                                    onCancelClick = {
+                                        getPointData(nextPage = false)
+                                    }
+                                )
+                            } else {
+                                TipDialog.show(
+                                    title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
+                                        .toString(),
+                                    dialogType = TipDialog.DialogType.ERROR,
+                                    msg = CommonUtils.getStr(R.string.add_point_failed).toString(),
+                                    countDownTime = 10,
+                                    showConfirm = false,
+                                    onCancelClick = {
+                                        getPointData(nextPage = false)
+                                    }
+                                )
+                            }
                         }
                     }
                 }
@@ -159,32 +162,36 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
                         dataId = it.rfidId,
                         dataText = "${it.rfidCode}(${it.rfid})"
                     )
-                }) {
-                    viewModel.updateIsolationPoint(it).observe(this@PointMangeFragment) {
-                        if (it) {
-                            TipDialog.show(
-                                title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_succeed)
-                                    .toString(),
-                                dialogType = TipDialog.DialogType.SUCCESS,
-                                msg = CommonUtils.getStr(R.string.update_point_succeed).toString(),
-                                countDownTime = 10,
-                                showConfirm = false,
-                                onCancelClick = {
-                                    getPointData(nextPage = false)
-                                }
-                            )
-                        } else {
-                            TipDialog.show(
-                                title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
-                                    .toString(),
-                                dialogType = TipDialog.DialogType.ERROR,
-                                msg = CommonUtils.getStr(R.string.update_point_failed).toString(),
-                                countDownTime = 10,
-                                showConfirm = false,
-                                onCancelClick = {
-                                    getPointData(nextPage = false)
-                                }
-                            )
+                }) { data, dialog ->
+                    viewModel.validatePointData(data.rfidId ?: 0).observe(this@PointMangeFragment) {
+                        viewModel.updateIsolationPoint(data).observe(this@PointMangeFragment) {
+                            if (it) {
+                                TipDialog.show(
+                                    title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_succeed)
+                                        .toString(),
+                                    dialogType = TipDialog.DialogType.SUCCESS,
+                                    msg = CommonUtils.getStr(R.string.update_point_succeed)
+                                        .toString(),
+                                    countDownTime = 10,
+                                    showConfirm = false,
+                                    onCancelClick = {
+                                        getPointData(nextPage = false)
+                                    }
+                                )
+                            } else {
+                                TipDialog.show(
+                                    title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
+                                        .toString(),
+                                    dialogType = TipDialog.DialogType.ERROR,
+                                    msg = CommonUtils.getStr(R.string.update_point_failed)
+                                        .toString(),
+                                    countDownTime = 10,
+                                    showConfirm = false,
+                                    onCancelClick = {
+                                        getPointData(nextPage = false)
+                                    }
+                                )
+                            }
                         }
                     }
                 }
@@ -208,9 +215,9 @@ class PointMangeFragment : BaseFragment<FragmentPointManageBinding>() {
             }
             binding.refreshLayout.finishRefresh()
             binding.refreshLayout.finishLoadMore()
-            if (viewModel.pointManageDataList.isEmpty()){
+            if (viewModel.pointManageDataList.isEmpty()) {
                 binding.state.showEmpty()
-            }else{
+            } else {
                 binding.state.showContent()
             }
             binding.listRv.models = viewModel.pointManageDataList

+ 33 - 31
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/RoleManageFragment.kt

@@ -65,7 +65,7 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                     )
                     return@show
                 }
-                viewModel.validateRoleData(data).observe(this) {
+                viewModel.validateRoleData(data.roleKeys).observe(this) {
                     viewModel.addRoleData(data).observe(this) {
                         dialog.dismiss()
                         if (it) {
@@ -155,9 +155,9 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                         status = item.status == "0"
                         functionalPermissions = it
                         isPreset = item.roleKey in RoleEnum.values().map { it.roleKey }
-                    }) {
-                        if (it.roleKeys in RoleEnum.values()
-                                .map { it.roleKey } && it.isPreset == false
+                    }) { data, dialog ->
+                        if (data.roleKeys in RoleEnum.values()
+                                .map { it.roleKey } && data.isPreset == false
                         ) {
                             TipDialog.show(
                                 title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
@@ -173,33 +173,35 @@ class RoleManageFragment : BaseFragment<FragmentRoleManageBinding>() {
                             )
                             return@show
                         }
-                        viewModel.updateRoleData(it).observe(this@RoleManageFragment) {
-                            if (it) {
-                                TipDialog.show(
-                                    title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_succeed)
-                                        .toString(),
-                                    dialogType = TipDialog.DialogType.SUCCESS,
-                                    msg = CommonUtils.getStr(R.string.update_role_succeed)
-                                        .toString(),
-                                    countDownTime = 10,
-                                    showConfirm = false,
-                                    onCancelClick = {
-                                        getRoleData(nextPage = false)
-                                    }
-                                )
-                            } else {
-                                TipDialog.show(
-                                    title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
-                                        .toString(),
-                                    dialogType = TipDialog.DialogType.ERROR,
-                                    msg = CommonUtils.getStr(R.string.update_role_failed)
-                                        .toString(),
-                                    countDownTime = 10,
-                                    showConfirm = false,
-                                    onCancelClick = {
-                                        getRoleData(nextPage = false)
-                                    }
-                                )
+                        viewModel.validateRoleData(data.roleKeys).observe(this@RoleManageFragment) {
+                            viewModel.updateRoleData(data).observe(this@RoleManageFragment) {
+                                if (it) {
+                                    TipDialog.show(
+                                        title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_succeed)
+                                            .toString(),
+                                        dialogType = TipDialog.DialogType.SUCCESS,
+                                        msg = CommonUtils.getStr(R.string.update_role_succeed)
+                                            .toString(),
+                                        countDownTime = 10,
+                                        showConfirm = false,
+                                        onCancelClick = {
+                                            getRoleData(nextPage = false)
+                                        }
+                                    )
+                                } else {
+                                    TipDialog.show(
+                                        title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
+                                            .toString(),
+                                        dialogType = TipDialog.DialogType.ERROR,
+                                        msg = CommonUtils.getStr(R.string.update_role_failed)
+                                            .toString(),
+                                        countDownTime = 10,
+                                        showConfirm = false,
+                                        onCancelClick = {
+                                            getRoleData(nextPage = false)
+                                        }
+                                    )
+                                }
                             }
                         }
                     }

+ 32 - 30
app/src/main/java/com/grkj/iscs/features/main/fragment/data_manage/UserManageFragment.kt

@@ -1,7 +1,6 @@
 package com.grkj.iscs.features.main.fragment.data_manage
 
 import android.graphics.Color
-import android.view.Gravity
 import androidx.fragment.app.viewModels
 import com.drake.brv.BindingAdapter
 import com.drake.brv.annotaion.DividerOrientation
@@ -13,9 +12,9 @@ import com.grkj.data.model.vo.UserManageVo
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.FragmentUserManageBinding
 import com.grkj.iscs.databinding.ItemUserManageUserBinding
+import com.grkj.iscs.features.main.dialog.TextDropDownDialog
 import com.grkj.iscs.features.main.dialog.data_manage.AddUserDialog
 import com.grkj.iscs.features.main.dialog.data_manage.FilterUserDialog
-import com.grkj.iscs.features.main.dialog.TextDropDownDialog
 import com.grkj.iscs.features.main.dialog.data_manage.UpdateUserDialog
 import com.grkj.iscs.features.main.viewmodel.data_manage.UserManageViewModel
 import com.grkj.ui_base.base.BaseFragment
@@ -25,7 +24,6 @@ import com.grkj.ui_base.utils.extension.tip
 import com.kongzue.dialogx.dialogs.PopTip
 import com.sik.sikcore.extension.setDebouncedClickListener
 import dagger.hilt.android.AndroidEntryPoint
-import kotlin.getValue
 
 /**
  * 用户管理
@@ -61,7 +59,7 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
                         dataText = it.workstationName
                     )
                 }) { data, dialog ->
-                    viewModel.validateUserData(data).observe(this) {
+                    viewModel.validateUserData(data.username).observe(this) {
                         viewModel.addUser(data).observe(this) {
                             dialog.dismiss()
                             if (it) {
@@ -142,32 +140,36 @@ class UserManageFragment : BaseFragment<FragmentUserManageBinding>() {
                         dataId = it.workstationId,
                         dataText = it.workstationName
                     )
-                }) {
-                    viewModel.updateUser(it).observe(this@UserManageFragment) {
-                        if (it) {
-                            TipDialog.show(
-                                title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_succeed)
-                                    .toString(),
-                                dialogType = TipDialog.DialogType.SUCCESS,
-                                msg = CommonUtils.getStr(R.string.update_user_succeed).toString(),
-                                countDownTime = 10,
-                                showConfirm = false,
-                                onCancelClick = {
-                                    getUserData(false)
-                                }
-                            )
-                        } else {
-                            TipDialog.show(
-                                title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
-                                    .toString(),
-                                dialogType = TipDialog.DialogType.ERROR,
-                                msg = CommonUtils.getStr(R.string.update_user_failed).toString(),
-                                countDownTime = 10,
-                                showConfirm = false,
-                                onCancelClick = {
-                                    getUserData(false)
-                                }
-                            )
+                }) { data, dialog ->
+                    viewModel.validateUserData(data.username).observe(this@UserManageFragment) {
+                        viewModel.updateUser(data).observe(this@UserManageFragment) {
+                            if (it) {
+                                TipDialog.show(
+                                    title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_succeed)
+                                        .toString(),
+                                    dialogType = TipDialog.DialogType.SUCCESS,
+                                    msg = CommonUtils.getStr(R.string.update_user_succeed)
+                                        .toString(),
+                                    countDownTime = 10,
+                                    showConfirm = false,
+                                    onCancelClick = {
+                                        getUserData(false)
+                                    }
+                                )
+                            } else {
+                                TipDialog.show(
+                                    title = CommonUtils.getStr(com.grkj.ui_base.R.string.action_failed)
+                                        .toString(),
+                                    dialogType = TipDialog.DialogType.ERROR,
+                                    msg = CommonUtils.getStr(R.string.update_user_failed)
+                                        .toString(),
+                                    countDownTime = 10,
+                                    showConfirm = false,
+                                    onCancelClick = {
+                                        getUserData(false)
+                                    }
+                                )
+                            }
                         }
                     }
                 }

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

@@ -11,7 +11,9 @@ import com.grkj.data.model.vo.UpdatePointManageVo
 import com.grkj.data.repository.IIsolationPointRepository
 import com.grkj.data.repository.IRfidTokenRepository
 import com.grkj.data.repository.IWorkstationRepository
+import com.grkj.iscs.R
 import com.grkj.ui_base.base.BaseViewModel
+import com.grkj.ui_base.utils.CommonUtils
 import dagger.hilt.android.lifecycle.HiltViewModel
 import kotlinx.coroutines.Dispatchers
 import javax.inject.Inject
@@ -93,4 +95,18 @@ class PointManageViewModel @Inject constructor(
             emit(true)
         }
     }
+
+    /**
+     * 校验点位数据
+     */
+    fun validatePointData(data: Long): LiveData<Boolean> {
+        return liveData(Dispatchers.IO) {
+            val isolationPoint = isolationPointRepository.getPointByRfId(data)
+            if (isolationPoint == null) {
+                emit(true)
+            } else {
+                showTip(CommonUtils.getStr(R.string.rfid_already_bind).toString())
+            }
+        }
+    }
 }

+ 2 - 5
app/src/main/java/com/grkj/iscs/features/main/viewmodel/data_manage/RoleManageViewModel.kt

@@ -11,11 +11,8 @@ import com.grkj.data.repository.impl.standard.SysMenuRepository
 import com.grkj.iscs.features.main.entity.AddRoleDataEntity
 import com.grkj.iscs.features.main.entity.RoleManageFunctionalPermissionsEntity
 import com.grkj.iscs.features.main.entity.UpdateRoleDataEntity
-import com.grkj.ui_base.R
 import com.grkj.ui_base.base.BaseViewModel
 import com.grkj.ui_base.utils.CommonUtils
-import com.grkj.ui_base.utils.extension.tip
-import com.kongzue.dialogx.dialogs.PopTip
 import dagger.hilt.android.lifecycle.HiltViewModel
 import kotlinx.coroutines.Dispatchers
 import javax.inject.Inject
@@ -123,9 +120,9 @@ class RoleManageViewModel @Inject constructor(
     /**
      * 校验角色数据
      */
-    fun validateRoleData(entity: AddRoleDataEntity): LiveData<Boolean> {
+    fun validateRoleData(roleKey: String): LiveData<Boolean> {
         return liveData(Dispatchers.IO) {
-            val hasRoleExists = roleRepository.getRoleByRoleKey(entity.roleKeys)
+            val hasRoleExists = roleRepository.getRoleByRoleKey(roleKey)
             if (hasRoleExists == null) {
                 emit(true)
             } else {

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

@@ -124,9 +124,9 @@ class UserManageViewModel @Inject constructor(
     /**
      * 校验用户数据
      */
-    fun validateUserData(data: AddUserDataVo): LiveData<Boolean> {
+    fun validateUserData(username: String): LiveData<Boolean> {
         return liveData(Dispatchers.IO) {
-            val user = userRepository.getUserByUserName(data.username)
+            val user = userRepository.getUserByUserName(username)
             if (user.isNotEmpty()) {
                 showTip(CommonUtils.getStr(R.string.user_already_exists).toString())
             } else {

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

@@ -460,6 +460,7 @@
     <string name="handle_exception_will_release_all_colock">Warning! Handling exceptions will remove all Co-Lock. Please confirm if you want to continue</string>
     <string name="warn">Warn</string>
     <string name="current_job_has_cross_job">Warning! There are cross assignments in the current assignment. Do you want to continue handling exceptions</string>
-    <string name="reset">重置</string>
+    <string name="reset">Reset</string>
+    <string name="rfid_already_bind">The Rfid tag has been bound</string>
 
 </resources>

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

@@ -461,5 +461,6 @@
     <string name="warn">警告</string>
     <string name="current_job_has_cross_job">警告!当前作业存在交叉作业,是否继续处理异常</string>
     <string name="reset">重置</string>
+    <string name="rfid_already_bind">该Rfid标签已被绑定</string>
 
 </resources>

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

@@ -464,5 +464,6 @@
     <string name="warn">警告</string>
     <string name="current_job_has_cross_job">警告!当前作业存在交叉作业,是否继续处理异常</string>
     <string name="reset">重置</string>
+    <string name="rfid_already_bind">该Rfid标签已被绑定</string>
 
 </resources>

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

@@ -114,4 +114,10 @@ interface IsolationPointDao {
                 where point_id in (:pointIds)""")
     fun getPointDataListByPointIds(pointIds: List<Long>): List<PointDetailVO>
 
+    /**
+     * 根据rfidId获取点位数据
+     */
+    @Query("select * from is_isolation_point where rfid_id = :rfidId limit 1")
+    fun getPointByRfidId(rfidId: Long): IsIsolationPoint?
+
 }

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

@@ -1,5 +1,6 @@
 package com.grkj.data.repository
 
+import com.grkj.data.model.dos.IsIsolationPoint
 import com.grkj.data.model.vo.AddPointManageVo
 import com.grkj.data.model.vo.PointManageFilterVo
 import com.grkj.data.model.vo.PointManageVo
@@ -43,4 +44,9 @@ interface IIsolationPointRepository {
      */
     fun getAllLockedPointManageDataWithWorkstationId(workstationId: Long): MutableList<PointManageVo>
 
+    /**
+     * 根据rfidId获取点位数据
+     */
+    fun getPointByRfId(rfidId: Long): IsIsolationPoint?
+
 }

+ 4 - 0
data/src/main/java/com/grkj/data/repository/impl/standard/IsolationPointRepository.kt

@@ -81,4 +81,8 @@ class IsolationPointRepository @Inject constructor(
         }
         return filterPointManageData.toMutableList()
     }
+
+    override fun getPointByRfId(rfidId: Long): IsIsolationPoint? {
+        return isolationPointDao.getPointByRfidId(rfidId)
+    }
 }