|
|
@@ -37,6 +37,7 @@ import com.grkj.ui_base.base.BaseFragment
|
|
|
import com.grkj.ui_base.dialog.TipDialog
|
|
|
import com.grkj.ui_base.dialog.WheelDateRangePickerDialog
|
|
|
import com.grkj.ui_base.utils.CommonUtils
|
|
|
+import com.grkj.ui_base.utils.event.InRFIDScanModeEvent
|
|
|
import com.grkj.ui_base.utils.event.RFIDCardReadEvent
|
|
|
import com.grkj.ui_base.utils.event.UiEvent
|
|
|
import com.kongzue.dialogx.dialogs.CustomDialog
|
|
|
@@ -54,6 +55,9 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
|
|
|
private val viewModel: MyTodoViewModel by viewModels()
|
|
|
private val jobExecuteViewModel: JobExecuteViewModel by viewModels()
|
|
|
private var isFirstEnter: Boolean = true
|
|
|
+
|
|
|
+ // 共锁人刷卡共锁Dialog
|
|
|
+ private var colockerCardDialog: CustomDialog? = null
|
|
|
private val tabKey: List<String> by lazy {
|
|
|
listOf(
|
|
|
CommonUtils.getStr("wait_header"),
|
|
|
@@ -280,36 +284,67 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
|
|
|
item.previousTodoItem?.joinToString(",") { itemData -> "${I18nManager.t(itemData.todoType.todoTitle)}${itemData.groupName?.let { if (it.isEmpty()) "(${itemData.todoContent})" else "(${it})" }}" }
|
|
|
itemBinding.btnPointDetail.isVisible =
|
|
|
item.todoType == OperationTypeEnum.LOCK_TAKE_KEY || item.todoType == OperationTypeEnum.UNLOCK_TAKE_KEY || item.todoType == OperationTypeEnum.LOCK_RETURN_KEY || item.todoType == OperationTypeEnum.UNLOCK_RETURN_KEY
|
|
|
-
|
|
|
if (jobExecuteViewModel.ticketId != item.ticketId) {
|
|
|
jobExecuteViewModel.getWorkflowModes().observe(this) {
|
|
|
jobExecuteViewModel.ticketId = item.ticketId
|
|
|
getJobTicketData {
|
|
|
itemBinding.btnHandle.isVisible =
|
|
|
if (item.todoType == OperationTypeEnum.UNLOCK_TAKE_KEY) {
|
|
|
- val canUnLock =
|
|
|
- jobExecuteViewModel.ticketPoints.filter { it.groupId == item.groupId }
|
|
|
- .all { it.pointStatus == "1" } && (jobExecuteViewModel.workflowModes.find { it.modeId == jobExecuteViewModel.ticketData?.modeId }?.isColockSupport == false || (jobExecuteViewModel.workflowModes.find { it.modeId == jobExecuteViewModel.ticketData?.modeId }?.isColockSupport == true && jobExecuteViewModel.ticketUser.filter { it.userRole == RoleEnum.JTCOLOCKER.roleKey }
|
|
|
- .all { it.jobStatus == "2" }))
|
|
|
+ val canUnLock = jobExecuteViewModel.ticketPoints.filter { it.groupId == item.groupId }
|
|
|
+ .all { it.pointStatus == "1" }
|
|
|
+ && (jobExecuteViewModel.workflowModes.find { it.modeId == jobExecuteViewModel.ticketData?.modeId }?.isColockSupport == false
|
|
|
+ || (jobExecuteViewModel.workflowModes.find { it.modeId == jobExecuteViewModel.ticketData?.modeId }?.isColockSupport == true
|
|
|
+ && jobExecuteViewModel.ticketUser.filter { it.userRole == RoleEnum.JTCOLOCKER.roleKey }
|
|
|
+ .all { it.jobStatus == "2" }))
|
|
|
item.isCurrentStep && canUnLock
|
|
|
} else {
|
|
|
item.isCurrentStep && item.todoType != OperationTypeEnum.LOCK_RETURN_KEY && item.todoType != OperationTypeEnum.UNLOCK_RETURN_KEY
|
|
|
} && item.todoStatus == TodoStatusEnum.TODO
|
|
|
+ // 如果钥匙已经归还,需要确认点位是否隔离完成或者解除隔离完成,如果没有,按钮依然要显示
|
|
|
+ if (item.isCurrentStep && listOf(
|
|
|
+ OperationTypeEnum.LOCK_RETURN_KEY,
|
|
|
+ OperationTypeEnum.UNLOCK_RETURN_KEY
|
|
|
+ ).contains(item.todoType)
|
|
|
+ ) {
|
|
|
+ itemBinding.btnHandle.isVisible = if (item.todoType == OperationTypeEnum.LOCK_RETURN_KEY) {
|
|
|
+ // 上锁操作,校验点位是否都已隔离
|
|
|
+ jobExecuteViewModel.ticketPoints.filter { it.groupId == item.groupId }
|
|
|
+ .any { it.pointStatus == "0" }
|
|
|
+ } else {
|
|
|
+ // 解锁操作,校验点位是否都已解除隔离
|
|
|
+ jobExecuteViewModel.ticketPoints.filter { it.groupId == item.groupId }
|
|
|
+ .any { it.pointStatus == "1" }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- itemBinding.btnHandle.isVisible =
|
|
|
- if (item.todoType == OperationTypeEnum.UNLOCK_TAKE_KEY) {
|
|
|
- val canUnLock =
|
|
|
- jobExecuteViewModel.ticketPoints.filter { it.groupId == item.groupId }
|
|
|
- .all { it.pointStatus == "1" } && (jobExecuteViewModel.workflowModes.find { it.modeId == jobExecuteViewModel.ticketData?.modeId }?.isColockSupport == false || (jobExecuteViewModel.workflowModes.find { it.modeId == jobExecuteViewModel.ticketData?.modeId }?.isColockSupport == true && jobExecuteViewModel.ticketUser.filter { it.userRole == RoleEnum.JTCOLOCKER.roleKey }
|
|
|
- .all { it.jobStatus == "2" }))
|
|
|
- item.isCurrentStep && canUnLock
|
|
|
+ itemBinding.btnHandle.isVisible = if (item.todoType == OperationTypeEnum.UNLOCK_TAKE_KEY) {
|
|
|
+ val canUnLock = jobExecuteViewModel.ticketPoints.filter { it.groupId == item.groupId }
|
|
|
+ .all { it.pointStatus == "1" }
|
|
|
+ && (jobExecuteViewModel.workflowModes.find { it.modeId == jobExecuteViewModel.ticketData?.modeId }?.isColockSupport == false
|
|
|
+ || (jobExecuteViewModel.workflowModes.find { it.modeId == jobExecuteViewModel.ticketData?.modeId }?.isColockSupport == true
|
|
|
+ && jobExecuteViewModel.ticketUser.filter { it.userRole == RoleEnum.JTCOLOCKER.roleKey }
|
|
|
+ .all { it.jobStatus == "2" }))
|
|
|
+ item.isCurrentStep && canUnLock
|
|
|
+ } else {
|
|
|
+ item.isCurrentStep && item.todoType != OperationTypeEnum.LOCK_RETURN_KEY && item.todoType != OperationTypeEnum.UNLOCK_RETURN_KEY
|
|
|
+ } && item.todoStatus == TodoStatusEnum.TODO
|
|
|
+ // 如果钥匙已经归还,需要确认点位是否隔离完成或者解除隔离完成,如果没有,按钮依然要显示
|
|
|
+ if (item.isCurrentStep && listOf(
|
|
|
+ OperationTypeEnum.LOCK_RETURN_KEY,
|
|
|
+ OperationTypeEnum.UNLOCK_RETURN_KEY
|
|
|
+ ).contains(item.todoType)
|
|
|
+ ) {
|
|
|
+ itemBinding.btnHandle.isVisible = if (item.todoType == OperationTypeEnum.LOCK_RETURN_KEY) {
|
|
|
+ // 上锁操作,校验点位是否都已隔离
|
|
|
+ jobExecuteViewModel.ticketPoints.filter { it.groupId == item.groupId }.any { it.pointStatus == "0" }
|
|
|
} else {
|
|
|
- item.isCurrentStep && item.todoType != OperationTypeEnum.LOCK_RETURN_KEY && item.todoType != OperationTypeEnum.UNLOCK_RETURN_KEY
|
|
|
- } && item.todoStatus == TodoStatusEnum.TODO
|
|
|
+ // 解锁操作,校验点位是否都已解除隔离
|
|
|
+ jobExecuteViewModel.ticketPoints.filter { it.groupId == item.groupId }.any { it.pointStatus == "1" }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
itemBinding.btnPointDetail.setDebouncedClickListener {
|
|
|
viewModel.getTicketPointsData(item.ticketId).observe(this) {
|
|
|
TodoPointDetailDialog.show(it.filter { it.groupId == item.groupId })
|
|
|
@@ -320,41 +355,56 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
|
|
|
TipDialog.showError(CommonUtils.getStr("handle_unknown"))
|
|
|
return@setDebouncedClickListener
|
|
|
}
|
|
|
+ if (item.todoType == OperationTypeEnum.LOCK_RETURN_KEY || item.todoType == OperationTypeEnum.UNLOCK_RETURN_KEY) {
|
|
|
+ val type = if (item.todoType == OperationTypeEnum.LOCK_RETURN_KEY) 0 else 1
|
|
|
+ val groupKey =
|
|
|
+ jobExecuteViewModel.ticketKey.find { key -> key.groupId == item.groupId && key.ticketType == type }
|
|
|
+ if (groupKey?.collectTime != null && groupKey.giveBackTime.isNullOrEmpty()) {
|
|
|
+ showToast(CommonUtils.getStr("group_job_in_progress"))
|
|
|
+ return@setDebouncedClickListener
|
|
|
+ }
|
|
|
+ }
|
|
|
TipDialog.showInfo(viewModel.getHandleTip(item), onConfirmClick = {
|
|
|
jobExecuteViewModel.getWorkflowModes().observe(this) {
|
|
|
jobExecuteViewModel.ticketId = item.ticketId
|
|
|
getJobTicketData(true) {
|
|
|
when (item.todoType) {
|
|
|
+ OperationTypeEnum.LOCK_RETURN_KEY,
|
|
|
OperationTypeEnum.LOCK_TAKE_KEY -> item.groupId?.let {
|
|
|
jobExecuteViewModel.toLock(it).observe(this) {}
|
|
|
} ?: showToast(CommonUtils.getStr("not_group_can_lock"))
|
|
|
|
|
|
+ OperationTypeEnum.UNLOCK_RETURN_KEY,
|
|
|
OperationTypeEnum.UNLOCK_TAKE_KEY -> item.groupId?.let {
|
|
|
jobExecuteViewModel.toUnLock(it).observe(this) {}
|
|
|
} ?: showToast(CommonUtils.getStr("not_group_can_unlock"))
|
|
|
|
|
|
OperationTypeEnum.COLOCK -> {
|
|
|
viewModel.startReadCard = true
|
|
|
- SwipCardOperationTipDialog.show()
|
|
|
- .setDialogLifecycleCallback(object :
|
|
|
- DialogLifecycleCallback<CustomDialog>() {
|
|
|
- override fun onDismiss(dialog: CustomDialog) {
|
|
|
- viewModel.startReadCard = false
|
|
|
- super.onDismiss(dialog)
|
|
|
- }
|
|
|
- })
|
|
|
+ InRFIDScanModeEvent.sendInRFIDScanModeEvent(true)
|
|
|
+ colockerCardDialog = SwipCardOperationTipDialog.show()
|
|
|
+ colockerCardDialog?.setDialogLifecycleCallback(object :
|
|
|
+ DialogLifecycleCallback<CustomDialog>() {
|
|
|
+ override fun onDismiss(dialog: CustomDialog) {
|
|
|
+ viewModel.startReadCard = false
|
|
|
+ InRFIDScanModeEvent.sendInRFIDScanModeEvent(false)
|
|
|
+ super.onDismiss(dialog)
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
OperationTypeEnum.RELEASE_COLOCK -> {
|
|
|
viewModel.startReadCard = true
|
|
|
- SwipCardOperationTipDialog.show()
|
|
|
- .setDialogLifecycleCallback(object :
|
|
|
- DialogLifecycleCallback<CustomDialog>() {
|
|
|
- override fun onDismiss(dialog: CustomDialog) {
|
|
|
- viewModel.startReadCard = false
|
|
|
- super.onDismiss(dialog)
|
|
|
- }
|
|
|
- })
|
|
|
+ InRFIDScanModeEvent.sendInRFIDScanModeEvent(true)
|
|
|
+ colockerCardDialog = SwipCardOperationTipDialog.show()
|
|
|
+ colockerCardDialog?.setDialogLifecycleCallback(object :
|
|
|
+ DialogLifecycleCallback<CustomDialog>() {
|
|
|
+ override fun onDismiss(dialog: CustomDialog) {
|
|
|
+ viewModel.startReadCard = false
|
|
|
+ InRFIDScanModeEvent.sendInRFIDScanModeEvent(false)
|
|
|
+ super.onDismiss(dialog)
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
OperationTypeEnum.CONFIRM -> {
|
|
|
@@ -418,39 +468,34 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
|
|
|
super.onEvent(event)
|
|
|
when (event.code) {
|
|
|
EventConstants.EVENT_RFID_CARD_READ -> {
|
|
|
+ colockerCardDialog?.dismiss()
|
|
|
+ // 检查当前登录用户是否
|
|
|
if (MainDomainData.userInfo?.userName != jobExecuteViewModel.ticketData?.createBy) {
|
|
|
- showToast(
|
|
|
- CommonUtils.getStr("no_permission_to_handle")
|
|
|
- .toString()
|
|
|
- )
|
|
|
- return
|
|
|
- }
|
|
|
- if (!viewModel.startReadCard) {
|
|
|
+ showToast(CommonUtils.getStr("no_permission_to_handle"))
|
|
|
return
|
|
|
}
|
|
|
+ // 校验是否正在读卡中,不是返回
|
|
|
+ if (!viewModel.startReadCard) return
|
|
|
(event.data as RFIDCardReadEvent).let {
|
|
|
- val currentWorkflowStep = jobExecuteViewModel.currentStepData
|
|
|
- //当前步骤能加共锁并且锁已经上锁或者当前步骤能解共锁并且锁已经上锁
|
|
|
- if ((currentWorkflowStep?.enableColock == true || currentWorkflowStep?.enableReleaseColock == true) && jobExecuteViewModel.ticketPoints.all { it.pointStatus == "1" }) {
|
|
|
+ val currentStep = jobExecuteViewModel.currentStepData ?: return
|
|
|
+ // 当前步骤能加共锁并且锁已经上锁或者当前步骤能解共锁并且锁已经上锁
|
|
|
+ if ((currentStep.enableColock || currentStep.enableReleaseColock) && jobExecuteViewModel.ticketPoints.all { point -> point.pointStatus == "1" }) {
|
|
|
jobExecuteViewModel.getUserIdByCardRfid(it.rfidNo).observe(this) { userId ->
|
|
|
userId?.let {
|
|
|
- val isJobCardUser = jobExecuteViewModel.ticketUser.filter {
|
|
|
- it.userRole?.contains(
|
|
|
- RoleEnum.JTCOLOCKER.roleKey
|
|
|
- ) == true
|
|
|
- }.find { it.userId == userId }
|
|
|
+ val isJobCardUser = jobExecuteViewModel.ticketUser.filter { colocker ->
|
|
|
+ colocker.userRole?.contains(RoleEnum.JTCOLOCKER.roleKey) == true
|
|
|
+ }.find { colocker -> colocker.userId == userId }
|
|
|
isJobCardUser?.let { colocker ->
|
|
|
- if (colocker.jobStatus == "0" && currentWorkflowStep.enableColock) {
|
|
|
+ if (colocker.jobStatus == "0" && currentStep.enableColock) {
|
|
|
logger.info("添加共锁")
|
|
|
TipDialog.showInfo(
|
|
|
- msg = CommonUtils.getStr(
|
|
|
- "confirm_to_colock",
|
|
|
- colocker.nickName ?: ""
|
|
|
- ).toString(), countDownTime = 10, onConfirmClick = {
|
|
|
+ msg = CommonUtils.getStr("confirm_to_colock", colocker.nickName ?: ""),
|
|
|
+ countDownTime = 10,
|
|
|
+ onConfirmClick = {
|
|
|
colocker.jobStatus = "1"
|
|
|
jobExecuteViewModel.colockerStatusChange(colocker)
|
|
|
- .observe(this) {
|
|
|
- if (it) {
|
|
|
+ .observe(this) { rsp ->
|
|
|
+ if (rsp) {
|
|
|
showToast(CommonUtils.getStr("colock_complete"))
|
|
|
checkStepComplete()
|
|
|
getData()
|
|
|
@@ -459,17 +504,16 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
- } else if (colocker.jobStatus == "1" && currentWorkflowStep.enableReleaseColock) {
|
|
|
+ } else if (colocker.jobStatus == "1" && currentStep.enableReleaseColock) {
|
|
|
logger.info("解除共锁")
|
|
|
TipDialog.showInfo(
|
|
|
- msg = CommonUtils.getStr(
|
|
|
- "confirm_to_uncolock",
|
|
|
- colocker.nickName ?: ""
|
|
|
- ).toString(), countDownTime = 10, onConfirmClick = {
|
|
|
+ msg = CommonUtils.getStr("confirm_to_uncolock", colocker.nickName ?: ""),
|
|
|
+ countDownTime = 10,
|
|
|
+ onConfirmClick = {
|
|
|
colocker.jobStatus = "2"
|
|
|
jobExecuteViewModel.colockerStatusChange(colocker)
|
|
|
- .observe(this) {
|
|
|
- if (it) {
|
|
|
+ .observe(this) { rsp ->
|
|
|
+ if (rsp) {
|
|
|
showToast(CommonUtils.getStr("uncolock_complete"))
|
|
|
checkStepComplete()
|
|
|
getData()
|