|
@@ -27,6 +27,7 @@ import com.grkj.iscs.features.main.viewmodel.job_manage.JobExecuteViewModel
|
|
|
import com.grkj.shared.model.EventBean
|
|
import com.grkj.shared.model.EventBean
|
|
|
import com.grkj.ui_base.base.BaseFragment
|
|
import com.grkj.ui_base.base.BaseFragment
|
|
|
import com.grkj.data.data.EventConstants
|
|
import com.grkj.data.data.EventConstants
|
|
|
|
|
+import com.grkj.data.data.MainDomainData
|
|
|
import com.grkj.data.model.dos.WorkflowStep
|
|
import com.grkj.data.model.dos.WorkflowStep
|
|
|
import com.grkj.ui_base.dialog.TipDialog
|
|
import com.grkj.ui_base.dialog.TipDialog
|
|
|
import com.grkj.ui_base.utils.CommonUtils
|
|
import com.grkj.ui_base.utils.CommonUtils
|
|
@@ -136,7 +137,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
|
|
|
binding.dataTitleTv.text = when (index) {
|
|
binding.dataTitleTv.text = when (index) {
|
|
|
0 -> CommonUtils.getStr(
|
|
0 -> CommonUtils.getStr(
|
|
|
R.string.job_execute_step_description,
|
|
R.string.job_execute_step_description,
|
|
|
- viewModel.workflowSteps.find { it.stepIndex == viewModel.currentStepData?.stepIndex }?.stepTitle
|
|
|
|
|
|
|
+ viewModel.workflowSteps.find { it.stepId == viewModel.currentStepData?.workflowStepId }?.stepTitle
|
|
|
?: ""
|
|
?: ""
|
|
|
).toString()
|
|
).toString()
|
|
|
|
|
|
|
@@ -164,7 +165,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
"0" -> {
|
|
"0" -> {
|
|
|
- if (item.stepId == viewModel.ticketStep.first { it.stepStatus == "0" }.stepId) {
|
|
|
|
|
|
|
+ if (item.stepId == viewModel.currentStepData?.stepId) {
|
|
|
if (bg is GradientDrawable) {
|
|
if (bg is GradientDrawable) {
|
|
|
bg.mutate() // 拷贝一份,避免影响到其它引用了同一个 drawable 的 view
|
|
bg.mutate() // 拷贝一份,避免影响到其它引用了同一个 drawable 的 view
|
|
|
bg.setColor(requireContext().getColor(R.color.color_ffec99))
|
|
bg.setColor(requireContext().getColor(R.color.color_ffec99))
|
|
@@ -176,57 +177,108 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
|
|
|
}
|
|
}
|
|
|
//点击确认的时候需要
|
|
//点击确认的时候需要
|
|
|
itemBinding.stepLayout.setDebouncedClickListener {
|
|
itemBinding.stepLayout.setDebouncedClickListener {
|
|
|
- if (viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.enableSetLocker == true ||
|
|
|
|
|
- viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.enableSetColocker == true ||
|
|
|
|
|
- viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.enableAddColocker == true ||
|
|
|
|
|
- viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.enableReduceColocker == true
|
|
|
|
|
|
|
+ if (item.stepId != viewModel.currentStepData?.stepId) {
|
|
|
|
|
+ return@setDebouncedClickListener
|
|
|
|
|
+ }
|
|
|
|
|
+ val workflowStep =
|
|
|
|
|
+ viewModel.workflowSteps.find { it.stepId == item.workflowStepId }
|
|
|
|
|
+ if (workflowStep?.confirmType == 0 &&
|
|
|
|
|
+ workflowStep.confirmRoleCode == null &&
|
|
|
|
|
+ workflowStep.confirmUser == null
|
|
|
) {
|
|
) {
|
|
|
- GlobalDataTempStore.getInstance().saveData(
|
|
|
|
|
- DataTransferConstants.KEY_CAN_SELECT_COLOCKER,
|
|
|
|
|
- viewModel.workflowModes.find { it.modeId == viewModel.ticketData?.modeId }?.isColockSupport == true
|
|
|
|
|
- )
|
|
|
|
|
- GlobalDataTempStore.getInstance()
|
|
|
|
|
- .saveData(
|
|
|
|
|
- DataTransferConstants.KEY_SELECT_POINT_WORKSTATION_ID,
|
|
|
|
|
- viewModel.ticketData!!.workstationId
|
|
|
|
|
- )
|
|
|
|
|
- GlobalDataTempStore.getInstance()
|
|
|
|
|
- .saveData(
|
|
|
|
|
- DataTransferConstants.KEY_SELECTED_MEMBER_LOCKER_DATA,
|
|
|
|
|
- viewModel.selectedLockerData
|
|
|
|
|
- )
|
|
|
|
|
- GlobalDataTempStore.getInstance()
|
|
|
|
|
- .saveData(
|
|
|
|
|
- DataTransferConstants.KEY_SELECTED_MEMBER_COLOCKER_DATA,
|
|
|
|
|
- viewModel.selecteColockerData
|
|
|
|
|
- )
|
|
|
|
|
- GlobalDataTempStore.getInstance()
|
|
|
|
|
- .saveData(
|
|
|
|
|
- DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
|
|
|
|
|
- viewModel.ticketData!!.ticketName
|
|
|
|
|
- )
|
|
|
|
|
- GlobalDataTempStore.getInstance()
|
|
|
|
|
- .saveData(
|
|
|
|
|
- DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
|
|
|
|
|
- R.mipmap.icon_data_manage_menu_point_manage
|
|
|
|
|
- )
|
|
|
|
|
- navController.navigate(R.id.action_jobExecuteFragment_to_selectMemberFragment)
|
|
|
|
|
- } else if (viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.confirmType == 0 &&
|
|
|
|
|
- viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.confirmRoleCode == null &&
|
|
|
|
|
- viewModel.workflowSteps.find { it.stepIndex == item.stepStatus.toInt() }?.confirmUser == null
|
|
|
|
|
|
|
+ stepClickConfirm(adapter, item, workflowStep)
|
|
|
|
|
+ } else if (workflowStep?.confirmType == 0 &&
|
|
|
|
|
+ (workflowStep.confirmRoleCode != null && MainDomainData.roleKeys?.contains(
|
|
|
|
|
+ workflowStep.confirmRoleCode!!
|
|
|
|
|
+ ) == true) &&
|
|
|
|
|
+ workflowStep.confirmUser == null
|
|
|
) {
|
|
) {
|
|
|
- item.stepStatus = "1"
|
|
|
|
|
- viewModel.updateStepStatus(item).observe(this@JobExecuteFragment) {
|
|
|
|
|
- if (it == false) {
|
|
|
|
|
- PopTip.tip(R.string.step_confirm_failed)
|
|
|
|
|
- } else {
|
|
|
|
|
- adapter.notifyDataSetChanged()
|
|
|
|
|
|
|
+ stepClickConfirm(adapter, item, workflowStep)
|
|
|
|
|
+ } else if (workflowStep?.confirmType == 0 &&
|
|
|
|
|
+ (workflowStep.confirmRoleCode != null && MainDomainData.roleKeys?.contains(
|
|
|
|
|
+ workflowStep.confirmRoleCode!!
|
|
|
|
|
+ ) == true) &&
|
|
|
|
|
+ (workflowStep.confirmUser != null && MainDomainData.userInfo?.userId == workflowStep.confirmUser)
|
|
|
|
|
+ ) {
|
|
|
|
|
+ stepClickConfirm(adapter, item, workflowStep)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ PopTip.tip(com.grkj.ui_base.R.string.no_permission_to_handle)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private fun stepClickConfirm(
|
|
|
|
|
+ adapter: BindingAdapter,
|
|
|
|
|
+ item: IsJobTicketStepDataVo,
|
|
|
|
|
+ workflowStep: WorkflowStep?
|
|
|
|
|
+ ) {
|
|
|
|
|
+ if (!checkSelectMember(workflowStep)) {
|
|
|
|
|
+ if (viewModel.stepConditionsComplete(workflowStep)) {
|
|
|
|
|
+ TipDialog.showInfo(
|
|
|
|
|
+ msg = CommonUtils.getStr(
|
|
|
|
|
+ com.grkj.ui_base.R.string.action_confirm_content,
|
|
|
|
|
+ workflowStep?.stepTitleShort.toString()
|
|
|
|
|
+ ).toString(), onConfirmClick = {
|
|
|
|
|
+ item.stepStatus = "1"
|
|
|
|
|
+ viewModel.updateStepStatus(item).observe(this@JobExecuteFragment) {
|
|
|
|
|
+ if (it == false) {
|
|
|
|
|
+ PopTip.tip(R.string.step_confirm_failed)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ checkCurrentStep()
|
|
|
|
|
+ }
|
|
|
|
|
+ adapter.notifyDataSetChanged()
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
+ )
|
|
|
|
|
+ } else {
|
|
|
|
|
+ PopTip.tip(com.grkj.ui_base.R.string.current_step_can_not_be_process)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private fun checkSelectMember(
|
|
|
|
|
+ workflowStep: WorkflowStep?
|
|
|
|
|
+ ): Boolean {
|
|
|
|
|
+ val currentWorkflowStep = viewModel.getCurrentWorkflowStep()
|
|
|
|
|
+ if (workflowStep?.enableSetLocker == true ||
|
|
|
|
|
+ workflowStep?.enableSetColocker == true &&
|
|
|
|
|
+ (currentWorkflowStep?.enableAddColocker == true || currentWorkflowStep?.enableReduceColocker == true)
|
|
|
|
|
+ ) {
|
|
|
|
|
+ GlobalDataTempStore.getInstance().saveData(
|
|
|
|
|
+ DataTransferConstants.KEY_CAN_SELECT_COLOCKER,
|
|
|
|
|
+ viewModel.workflowModes.find { it.modeId == viewModel.ticketData?.modeId }?.isColockSupport == true
|
|
|
|
|
+ )
|
|
|
|
|
+ GlobalDataTempStore.getInstance()
|
|
|
|
|
+ .saveData(
|
|
|
|
|
+ DataTransferConstants.KEY_SELECT_POINT_WORKSTATION_ID,
|
|
|
|
|
+ viewModel.ticketData!!.workstationId
|
|
|
|
|
+ )
|
|
|
|
|
+ GlobalDataTempStore.getInstance()
|
|
|
|
|
+ .saveData(
|
|
|
|
|
+ DataTransferConstants.KEY_SELECTED_MEMBER_LOCKER_DATA,
|
|
|
|
|
+ viewModel.selectedLockerData
|
|
|
|
|
+ )
|
|
|
|
|
+ GlobalDataTempStore.getInstance()
|
|
|
|
|
+ .saveData(
|
|
|
|
|
+ DataTransferConstants.KEY_SELECTED_MEMBER_COLOCKER_DATA,
|
|
|
|
|
+ viewModel.selecteColockerData
|
|
|
|
|
+ )
|
|
|
|
|
+ GlobalDataTempStore.getInstance()
|
|
|
|
|
+ .saveData(
|
|
|
|
|
+ DataTransferConstants.KEY_PREVIEW_STEP_TITLE_DATA,
|
|
|
|
|
+ viewModel.ticketData!!.ticketName
|
|
|
|
|
+ )
|
|
|
|
|
+ GlobalDataTempStore.getInstance()
|
|
|
|
|
+ .saveData(
|
|
|
|
|
+ DataTransferConstants.KEY_PREVIEW_STEP_ICON_DATA,
|
|
|
|
|
+ R.mipmap.icon_data_manage_menu_point_manage
|
|
|
|
|
+ )
|
|
|
|
|
+ navController.navigate(R.id.action_jobExecuteFragment_to_selectMemberFragment)
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private fun onColockerRVListBinding(holder: BindingAdapter.BindingViewHolder) {
|
|
private fun onColockerRVListBinding(holder: BindingAdapter.BindingViewHolder) {
|
|
|
val itemBinding = holder.getBinding<ItemJobExecuteColockBinding>()
|
|
val itemBinding = holder.getBinding<ItemJobExecuteColockBinding>()
|
|
|
val item = holder.getModel<IsJobTicketUserDataVo>()
|
|
val item = holder.getModel<IsJobTicketUserDataVo>()
|
|
@@ -301,7 +353,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
|
|
|
EventConstants.EVENT_RFID_CARD_READ -> {
|
|
EventConstants.EVENT_RFID_CARD_READ -> {
|
|
|
(event.data as RFIDCardReadEvent).let {
|
|
(event.data as RFIDCardReadEvent).let {
|
|
|
logger.info("读卡器获取卡片RFID:${it.rfidNo}")
|
|
logger.info("读卡器获取卡片RFID:${it.rfidNo}")
|
|
|
- if (viewModel.workflowSteps.find { it.stepIndex == viewModel.currentStepData?.stepIndex }?.enableColock == true &&
|
|
|
|
|
|
|
+ if (viewModel.workflowSteps.find { it.stepId == viewModel.currentStepData?.workflowStepId }?.enableColock == true &&
|
|
|
viewModel.ticketPoints.none { it.pointStatus == "0" }
|
|
viewModel.ticketPoints.none { it.pointStatus == "0" }
|
|
|
) {
|
|
) {
|
|
|
viewModel.getUserIdByCardRfid(it.rfidNo).observe(this) { userId ->
|
|
viewModel.getUserIdByCardRfid(it.rfidNo).observe(this) { userId ->
|
|
@@ -383,7 +435,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
|
|
|
binding.finishJob.isVisible = true
|
|
binding.finishJob.isVisible = true
|
|
|
} else {
|
|
} else {
|
|
|
val currentStep =
|
|
val currentStep =
|
|
|
- viewModel.workflowSteps.find { it.stepIndex == viewModel.currentStepData?.stepIndex }
|
|
|
|
|
|
|
+ viewModel.workflowSteps.find { it.stepId == viewModel.currentStepData?.workflowStepId }
|
|
|
when {
|
|
when {
|
|
|
//步骤开启取消作业,并且点位还没有上锁,显示取消作业按钮
|
|
//步骤开启取消作业,并且点位还没有上锁,显示取消作业按钮
|
|
|
(currentStep?.enableCancelJob == true && viewModel.ticketPoints.any { it.pointStatus != "0" }) -> {
|
|
(currentStep?.enableCancelJob == true && viewModel.ticketPoints.any { it.pointStatus != "0" }) -> {
|
|
@@ -435,7 +487,7 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
|
|
|
viewModel.currentStepData =
|
|
viewModel.currentStepData =
|
|
|
viewModel.ticketStep.firstOrNull { it.stepStatus == "0" }
|
|
viewModel.ticketStep.firstOrNull { it.stepStatus == "0" }
|
|
|
binding.stepDescriptionTv.text =
|
|
binding.stepDescriptionTv.text =
|
|
|
- viewModel.workflowModes.find { it.modeId == viewModel.ticketData?.modeId }?.modeDescription
|
|
|
|
|
|
|
+ viewModel.workflowSteps.find { it.stepId == viewModel.currentStepData?.workflowStepId }?.stepDescription
|
|
|
refreshTicketUser()
|
|
refreshTicketUser()
|
|
|
checkCurrentStep()
|
|
checkCurrentStep()
|
|
|
binding.lockInfo.text =
|
|
binding.lockInfo.text =
|
|
@@ -500,11 +552,33 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
|
|
|
}
|
|
}
|
|
|
if (viewModel.checkMemberFinish) {
|
|
if (viewModel.checkMemberFinish) {
|
|
|
viewModel.updateLockerAndColockerData().observe(this) {
|
|
viewModel.updateLockerAndColockerData().observe(this) {
|
|
|
- viewModel.currentStepData?.stepStatus = "1"
|
|
|
|
|
- viewModel.currentStepData =
|
|
|
|
|
- viewModel.ticketStep.firstOrNull { it.stepStatus == "0" }
|
|
|
|
|
- checkCurrentStep()
|
|
|
|
|
- binding.stepRv.adapter?.notifyDataSetChanged()
|
|
|
|
|
|
|
+ val workflowStep =
|
|
|
|
|
+ viewModel.workflowSteps.find { it.stepId == viewModel.currentStepData?.workflowStepId }
|
|
|
|
|
+ if ((workflowStep?.confirmType != 0 || (workflowStep.confirmRoleCode != null && MainDomainData.roleKeys?.contains(
|
|
|
|
|
+ workflowStep.confirmRoleCode.toString()
|
|
|
|
|
+ ) == true) || (workflowStep.confirmRoleCode != null && MainDomainData.roleKeys?.contains(
|
|
|
|
|
+ workflowStep.confirmRoleCode.toString()
|
|
|
|
|
+ ) == true && workflowStep.confirmUser != null && MainDomainData.userInfo?.userId == workflowStep.confirmUser)) && (workflowStep?.enableSetLocker == true || workflowStep?.enableSetColocker == true)
|
|
|
|
|
+ ) {
|
|
|
|
|
+ viewModel.currentStepData?.stepStatus = "1"
|
|
|
|
|
+ viewModel.currentStepData =
|
|
|
|
|
+ viewModel.ticketStep.firstOrNull { it.stepStatus == "0" }
|
|
|
|
|
+ checkCurrentStep()
|
|
|
|
|
+ binding.stepRv.adapter?.notifyDataSetChanged()
|
|
|
|
|
+ }
|
|
|
|
|
+ if (workflowStep?.enableAddColocker == true || workflowStep?.enableReduceColocker == true) {
|
|
|
|
|
+ if (workflowStep.gotoStepAfterAddingColocker != null) {
|
|
|
|
|
+ viewModel.ticketStep.filter {
|
|
|
|
|
+ it.workflowStepId in viewModel.workflowSteps.filter { it.stepIndex > workflowStep.gotoStepAfterAddingColocker!! }
|
|
|
|
|
+ .map { it.stepId }
|
|
|
|
|
+ }.forEach {
|
|
|
|
|
+ it.stepStatus = "0"
|
|
|
|
|
+ }
|
|
|
|
|
+ viewModel.currentStepData =
|
|
|
|
|
+ viewModel.ticketStep.firstOrNull { it.stepStatus == "0" }
|
|
|
|
|
+ binding.stepRv.adapter?.notifyDataSetChanged()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|