|
|
@@ -2,6 +2,7 @@ package com.grkj.iscs.features.main.viewmodel.job_manage
|
|
|
|
|
|
import androidx.lifecycle.LiveData
|
|
|
import androidx.lifecycle.liveData
|
|
|
+import com.grkj.data.data.MainDomainData
|
|
|
import com.grkj.data.enums.RoleEnum
|
|
|
import com.grkj.data.model.dos.IsJobTicketStep
|
|
|
import com.grkj.data.model.dos.WorkflowMode
|
|
|
@@ -21,6 +22,7 @@ import com.grkj.iscs.R
|
|
|
import com.grkj.ui_base.base.BaseViewModel
|
|
|
import com.grkj.ui_base.business.BleBusinessManager
|
|
|
import com.grkj.ui_base.business.ModbusBusinessManager
|
|
|
+import com.grkj.ui_base.config.ISCSConfig
|
|
|
import com.grkj.ui_base.dialog.TipDialog
|
|
|
import com.grkj.ui_base.utils.CommonUtils
|
|
|
import com.grkj.ui_base.utils.event.LoadingEvent
|
|
|
@@ -90,8 +92,12 @@ class JobExecuteViewModel @Inject constructor(
|
|
|
ticketData!!.ticketId, currentStepData, selectedLockerData, selecteColockerData
|
|
|
)
|
|
|
ticketStep = jobTicketRepository.getJobTicketStepDataByTicketId(ticketId)
|
|
|
+ val workflowSteps = workflowRepository.getStepsByMode(ticketData!!.modeId)
|
|
|
+ val currentWorkflowStep = workflowSteps.find {
|
|
|
+ it.stepId == ticketStep.firstOrNull { it.stepStatus == "0" }?.workflowStepId
|
|
|
+ }
|
|
|
jobTicketRepository.updateTicketDataStatus(
|
|
|
- ticketId, (ticketStep.firstOrNull { it.stepStatus == "0" }?.stepIndex ?: -1) + 1
|
|
|
+ ticketId, currentWorkflowStep?.getTicketStatus()?.toInt() ?: 0
|
|
|
)
|
|
|
emit(true)
|
|
|
}
|
|
|
@@ -122,6 +128,16 @@ class JobExecuteViewModel @Inject constructor(
|
|
|
*/
|
|
|
fun toLock(): LiveData<Boolean> {
|
|
|
return liveData(Dispatchers.IO) {
|
|
|
+ val workflowStep = workflowSteps.find { it.stepId == currentStepData?.workflowStepId }
|
|
|
+ if (workflowStep?.confirmType == 0 && !workflowStep.confirmRoleCode.isNullOrEmpty()) {
|
|
|
+ if (MainDomainData.roleKeys?.contains(
|
|
|
+ workflowStep.confirmRoleCode!!
|
|
|
+ ) == false && (workflowStep.confirmUser != null && MainDomainData.userInfo?.userId != workflowStep.confirmUser)
|
|
|
+ ) {
|
|
|
+ PopTip.tip(com.grkj.ui_base.R.string.you_are_not_locker_tip)
|
|
|
+ return@liveData
|
|
|
+ }
|
|
|
+ }
|
|
|
ModbusBusinessManager.checkEquipCount(ticketPoints.count {
|
|
|
it.pointStatus == "0" || (it.pointStatus == "2" && workflowRepository.isUnlockBeforeLock(
|
|
|
ticketData?.modeId!!
|
|
|
@@ -194,6 +210,16 @@ class JobExecuteViewModel @Inject constructor(
|
|
|
*/
|
|
|
fun toUnLock(): LiveData<Boolean> {
|
|
|
return liveData(Dispatchers.IO) {
|
|
|
+ val workflowStep = workflowSteps.find { it.stepId == currentStepData?.workflowStepId }
|
|
|
+ if (workflowStep?.confirmType == 0 && !workflowStep.confirmRoleCode.isNullOrEmpty()) {
|
|
|
+ if (MainDomainData.roleKeys?.contains(
|
|
|
+ workflowStep.confirmRoleCode!!
|
|
|
+ ) == false && (workflowStep.confirmUser != null && MainDomainData.userInfo?.userId != workflowStep.confirmUser)
|
|
|
+ ) {
|
|
|
+ PopTip.tip(com.grkj.ui_base.R.string.you_are_not_locker_tip)
|
|
|
+ return@liveData
|
|
|
+ }
|
|
|
+ }
|
|
|
if (checkBeforeToUnlock()) {
|
|
|
ModbusBusinessManager.checkEquipCount(0, true) { keyMap, _ ->
|
|
|
LoadingEvent.sendLoadingEvent()
|
|
|
@@ -274,18 +300,26 @@ class JobExecuteViewModel @Inject constructor(
|
|
|
return liveData(Dispatchers.IO) {
|
|
|
workflowSteps = workflowRepository.getStepsByMode(modeId)
|
|
|
for (stepDataVo in ticketStep) {
|
|
|
- if (workflowSteps.find { it.stepId == stepDataVo.workflowStepId }?.confirmType != 0) {
|
|
|
+ currentStepData = stepDataVo
|
|
|
+ val workflowStep = workflowSteps.find { it.stepId == stepDataVo.workflowStepId }
|
|
|
+ //如果是自动确认并且没有操作的功能,则更新步骤
|
|
|
+ if (workflowStep?.confirmType != 0 && workflowStep?.hasAnyOperationFunction() == false) {
|
|
|
stepDataVo.stepStatus = "1"
|
|
|
BeanUtils.copyProperties(
|
|
|
stepDataVo, IsJobTicketStep::class.java
|
|
|
)?.let {
|
|
|
jobTicketRepository.updateTicketStepData(it)
|
|
|
- ticketData?.ticketStatus = (stepDataVo.stepIndex + 1).toString()
|
|
|
+ val workflowSteps = workflowRepository.getStepsByMode(ticketData!!.modeId)
|
|
|
+ val currentWorkflowStep = workflowSteps.find {
|
|
|
+ it.stepId == ticketStep.firstOrNull { it.stepStatus == "0" }?.workflowStepId
|
|
|
+ }
|
|
|
+ ticketData?.ticketStatus =
|
|
|
+ currentWorkflowStep?.getTicketStatus() ?: ""
|
|
|
jobTicketRepository.updateTicketDataStatus(
|
|
|
- ticketId, stepDataVo.stepIndex + 1
|
|
|
+ ticketId, currentWorkflowStep?.getTicketStatus()?.toInt() ?: 0
|
|
|
)
|
|
|
}
|
|
|
- } else if (workflowSteps.find { it.stepId == stepDataVo.workflowStepId }?.confirmType != 0) {
|
|
|
+ } else {
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
@@ -313,8 +347,12 @@ class JobExecuteViewModel @Inject constructor(
|
|
|
)
|
|
|
ticketStepData?.let {
|
|
|
jobTicketRepository.updateTicketStepData(it)
|
|
|
+ val workflowSteps = workflowRepository.getStepsByMode(ticketData!!.modeId)
|
|
|
+ val currentWorkflowStep = workflowSteps.find {
|
|
|
+ it.stepId == ticketStep.firstOrNull { it.stepStatus == "0" }?.workflowStepId
|
|
|
+ }
|
|
|
jobTicketRepository.updateTicketDataStatus(
|
|
|
- ticketId, ticketData?.ticketStatus?.toInt()!! + 1
|
|
|
+ ticketId, currentWorkflowStep?.getTicketStatus()?.toInt() ?: 0
|
|
|
)
|
|
|
emit(true)
|
|
|
} ?: emit(false)
|