Jelajahi Sumber

refactor(修改)
- 锁控人和共锁人的选择逻辑的调整,以及提交前的校验逻辑的修改

周文健 10 bulan lalu
induk
melakukan
447dce0039

+ 50 - 33
app/src/main/java/com/grkj/iscs/features/main/fragment/common/SelectMemberFragment.kt

@@ -136,19 +136,18 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
                     return@setDebouncedClickListener
                 }
                 if (isLockerSelect) {
-                    selectedLockerData.find { it.jobTicketGroupInfo.groupId == viewModel.currentSelectGroup?.groupId }?.jobTicketGroupMemberList?.clear()
-                    selectedLockerData.find { it.jobTicketGroupInfo.groupId == viewModel.currentSelectGroup?.groupId }?.jobTicketGroupMemberList?.add(
-                        item
-                    )
-                    binding.allUserRv.models =
-                        viewModel.userData.filter { it.roleKeys.contains(RoleEnum.JTLOCKER.roleKey) }
-                            .filter {
-                                it.userId !in selectedLockerData.flatMap { it.jobTicketGroupMemberList }
-                                    .map { it.userId }
-                            }
+                    selectedLockerData.find {
+                        it.jobTicketGroupMemberList.map { it.userId }.contains(item.userId)
+                    }?.jobTicketGroupMemberList?.removeIf { it.userId == item.userId }
+                    item.isSelected = false
                 } else {
                     item.isSelected = false
                     selectedColockerData.removeIf { it.userId == item.userId }
+                    binding.allUserRv.models =
+                        viewModel.userData.filter { it.roleKeys.contains(RoleEnum.JTCOLOCKER.roleKey) }
+                            .filter {
+                                it.userId !in selectedColockerData.map { it.userId }
+                            }
                 }
             } else {
                 item.isSelected = true
@@ -162,14 +161,13 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
                     selectedLockerData.find { it.jobTicketGroupInfo.groupId == viewModel.currentSelectGroup?.groupId }?.jobTicketGroupMemberList?.add(
                         item
                     )
+                } else {
+                    selectedColockerData.add(item)
                     binding.allUserRv.models =
-                        viewModel.userData.filter { it.roleKeys.contains(RoleEnum.JTLOCKER.roleKey) }
+                        viewModel.userData.filter { it.roleKeys.contains(RoleEnum.JTCOLOCKER.roleKey) }
                             .filter {
-                                it.userId !in selectedLockerData.flatMap { it.jobTicketGroupMemberList }
-                                    .map { it.userId }
+                                it.userId !in selectedColockerData.map { it.userId }
                             }
-                } else {
-                    selectedColockerData.add(item)
                 }
             }
             if (isLockerSelect) {
@@ -185,6 +183,21 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
         val itemBinding = holder.getBinding<ItemLockerGroupBinding>()
         val item = holder.getModel<JobTicketGroupDataVo<JobUserVo>>()
         itemBinding.groupName.text = item.jobTicketGroupInfo.groupName
+        itemBinding.groupLockerRv.setDebouncedClickListener {
+            isLockerSelect = true
+            itemBinding.groupTitleLayout.isSelected = !itemBinding.groupTitleLayout.isSelected
+            itemBinding.groupName.isSelected = itemBinding.groupTitleLayout.isSelected
+            viewModel.currentSelectGroup = item.jobTicketGroupInfo
+            binding.selectMemberTip.text =
+                getString(R.string.select_locker_tip, viewModel.currentSelectGroup?.groupName ?: "")
+            binding.allUserRv.models =
+                viewModel.userData.filter { it.roleKeys.contains(RoleEnum.JTLOCKER.roleKey) }
+                    .onEach {
+                        it.isSelected == item.jobTicketGroupMemberList.map { selectedLocker -> selectedLocker.userId }
+                            .contains(it.userId)
+                    }
+            adapter.notifyDataSetChanged()
+        }
         itemBinding.groupTitleLayout.setDebouncedClickListener {
             isLockerSelect = true
             itemBinding.groupTitleLayout.isSelected = !itemBinding.groupTitleLayout.isSelected
@@ -194,8 +207,9 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
                 getString(R.string.select_locker_tip, viewModel.currentSelectGroup?.groupName ?: "")
             binding.allUserRv.models =
                 viewModel.userData.filter { it.roleKeys.contains(RoleEnum.JTLOCKER.roleKey) }
-                    .filter {
-                        it.userId !in selectedLockerData.flatMap { it.jobTicketGroupMemberList }.map { it.userId }
+                    .onEach {
+                        it.isSelected == item.jobTicketGroupMemberList.map { selectedLocker -> selectedLocker.userId }
+                            .contains(it.userId)
                     }
             adapter.notifyDataSetChanged()
         }
@@ -231,14 +245,9 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
                 PopTip.build().tip(com.grkj.ui_base.R.string.can_not_remove_current_locker)
                 return@setDebouncedClickListener
             }
-            selectedLockerData.find { it.jobTicketGroupInfo.groupId == groupData.groupId }?.jobTicketGroupMemberList?.clear()
+            selectedLockerData.find { it.jobTicketGroupInfo.groupId == groupData.groupId }?.jobTicketGroupMemberList?.removeIf { it.userId == item.userId }
             viewModel.userData.find { it.userId == item.userId }?.isSelected = false
             adapter.notifyDataSetChanged()
-            binding.allUserRv.models =
-                viewModel.userData.filter {
-                    it.roleKeys.contains(RoleEnum.JTLOCKER.roleKey) && it.userId !in selectedLockerData.flatMap { it.jobTicketGroupMemberList }
-                        .map { it.userId }
-                }
         }
     }
 
@@ -262,7 +271,11 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
             selectedColockerData.removeIf { it.userId == item.userId }
             viewModel.userData.find { it.userId == item.userId }?.isSelected = false
             adapter.notifyDataSetChanged()
-            binding.allUserRv.adapter?.notifyDataSetChanged()
+            binding.allUserRv.models =
+                viewModel.userData.filter { it.roleKeys.contains(RoleEnum.JTCOLOCKER.roleKey) }
+                    .filter {
+                        it.userId !in selectedColockerData.map { it.userId }
+                    }
         }
     }
 
@@ -273,8 +286,14 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
         binding.lockerRv.models = selectedLockerData
         binding.allUserRv.models =
             viewModel.userData.filter {
-                it.roleKeys.contains(RoleEnum.JTLOCKER.roleKey) && it.userId !in selectedLockerData.flatMap { it.jobTicketGroupMemberList }
-                    .map { it.userId }
+                it.roleKeys.contains(RoleEnum.JTLOCKER.roleKey)
+            }.apply {
+                forEach {
+                    it.isSelected =
+                        it.userId in selectedLockerData.flatMap { it.jobTicketGroupMemberList }
+                            .map { it.userId }
+                }
+                sortedBy { it.isSelected }
             }
     }
 
@@ -283,12 +302,7 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
         binding.selectMemberTip.text = CommonUtils.getStr(R.string.select_colocker_tip)
         binding.colockerRv.models = selectedColockerData
         binding.allUserRv.models =
-            viewModel.userData.filter { it.roleKeys.contains(RoleEnum.JTCOLOCKER.roleKey) }.apply {
-                forEach {
-                    it.isSelected = it.userId in selectedColockerData.map { it.userId }
-                }
-                sortedBy { it.isSelected }
-            }
+            viewModel.userData.filter { it.roleKeys.contains(RoleEnum.JTCOLOCKER.roleKey) && it.userId in selectedColockerData.map { it.userId } }
     }
 
     override fun initData() {
@@ -308,7 +322,10 @@ class SelectMemberFragment : BaseFragment<FragmentSelectMemeberBinding>() {
             if (selectedLockerData.isNotEmpty()) {
                 viewModel.currentSelectGroup = selectedLockerData.firstOrNull()?.jobTicketGroupInfo
                 binding.selectMemberTip.text =
-                    getString(R.string.select_locker_tip, viewModel.currentSelectGroup?.groupName ?: "")
+                    getString(
+                        R.string.select_locker_tip,
+                        viewModel.currentSelectGroup?.groupName ?: ""
+                    )
             }
         }
         if (GlobalDataTempStore.getInstance()

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateJobFragment.kt

@@ -468,7 +468,7 @@ class CreateJobFragment : BaseFormFragment<FragmentCreateJobBinding>() {
             PopTip.tip(R.string.please_must_select_at_least_one_point)
             return false
         }
-        if (selectedLockerData.isEmpty()) {
+        if (selectedLockerData.map { it.jobTicketGroupMemberList }.any { it.isEmpty() }) {
             PopTip.tip(com.grkj.ui_base.R.string.select_locker)
             return false
         }

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateSopFragment.kt

@@ -351,7 +351,7 @@ class CreateSopFragment : BaseFormFragment<FragmentCreateSopBinding>() {
             PopTip.tip(R.string.please_must_select_at_least_one_point)
             return false
         }
-        if (selectedLockerData.isEmpty()) {
+        if (selectedLockerData.map { it.jobTicketGroupMemberList }.any { it.isEmpty() }) {
             PopTip.tip(com.grkj.ui_base.R.string.select_locker)
             return false
         }

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/CreateSopJobFragment.kt

@@ -316,7 +316,7 @@ class CreateSopJobFragment : BaseFormFragment<FragmentCreateSopJobBinding>() {
             PopTip.tip(R.string.please_input_job_name)
             return false
         }
-        if (selectedLockerData.isEmpty()) {
+        if (selectedLockerData.map { it.jobTicketGroupMemberList }.any { it.isEmpty() }) {
             PopTip.tip(com.grkj.ui_base.R.string.select_locker)
             return false
         }

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditJobFragment.kt

@@ -331,7 +331,7 @@ class EditJobFragment : BaseFormFragment<FragmentEditJobBinding>() {
             PopTip.build().tip(R.string.please_must_select_at_least_one_point)
             return false
         }
-        if (selectedLockerData.isEmpty()) {
+        if (selectedLockerData.map { it.jobTicketGroupMemberList }.any { it.isEmpty() }) {
             PopTip.tip(com.grkj.ui_base.R.string.select_locker)
             return false
         }

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopFragment.kt

@@ -297,7 +297,7 @@ class EditSopFragment : BaseFormFragment<FragmentEditSopBinding>() {
             PopTip.build().tip(R.string.please_must_select_at_least_one_point)
             return false
         }
-        if (selectedLockerData.isEmpty()) {
+        if (selectedLockerData.map { it.jobTicketGroupMemberList }.any { it.isEmpty() }) {
             PopTip.tip(com.grkj.ui_base.R.string.select_locker)
             return false
         }

+ 1 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/EditSopJobFragment.kt

@@ -310,7 +310,7 @@ class EditSopJobFragment : BaseFormFragment<FragmentEditSopJobBinding>() {
             PopTip.tip(R.string.please_input_job_name)
             return false
         }
-        if (selectedLockerData.isEmpty()) {
+        if (selectedLockerData.map { it.jobTicketGroupMemberList }.any { it.isEmpty() }) {
             PopTip.tip(com.grkj.ui_base.R.string.select_locker)
             return false
         }