|
@@ -11,8 +11,10 @@ import com.grkj.data.enums.CommonDictDataEnum
|
|
|
import com.grkj.data.enums.IsolationPointPowerTypeEnum
|
|
import com.grkj.data.enums.IsolationPointPowerTypeEnum
|
|
|
import com.grkj.data.enums.JobTicketStatusEnum
|
|
import com.grkj.data.enums.JobTicketStatusEnum
|
|
|
import com.grkj.data.enums.NextJobPrompt
|
|
import com.grkj.data.enums.NextJobPrompt
|
|
|
|
|
+import com.grkj.data.enums.OperationTypeEnum
|
|
|
import com.grkj.data.enums.RoleEnum
|
|
import com.grkj.data.enums.RoleEnum
|
|
|
import com.grkj.data.enums.StepAction
|
|
import com.grkj.data.enums.StepAction
|
|
|
|
|
+import com.grkj.data.enums.TodoStatusEnum
|
|
|
import com.grkj.data.model.dos.IsJobTicket
|
|
import com.grkj.data.model.dos.IsJobTicket
|
|
|
import com.grkj.data.model.dos.IsJobTicketGroup
|
|
import com.grkj.data.model.dos.IsJobTicketGroup
|
|
|
import com.grkj.data.model.dos.IsJobTicketKey
|
|
import com.grkj.data.model.dos.IsJobTicketKey
|
|
@@ -20,7 +22,6 @@ import com.grkj.data.model.dos.IsJobTicketLock
|
|
|
import com.grkj.data.model.dos.IsJobTicketPoints
|
|
import com.grkj.data.model.dos.IsJobTicketPoints
|
|
|
import com.grkj.data.model.dos.IsJobTicketStep
|
|
import com.grkj.data.model.dos.IsJobTicketStep
|
|
|
import com.grkj.data.model.dos.IsJobTicketUser
|
|
import com.grkj.data.model.dos.IsJobTicketUser
|
|
|
-import com.grkj.data.model.dos.WorkflowStep
|
|
|
|
|
import com.grkj.data.model.local.TodoStepJoin
|
|
import com.grkj.data.model.local.TodoStepJoin
|
|
|
import com.grkj.data.model.local.isMyTodo
|
|
import com.grkj.data.model.local.isMyTodo
|
|
|
import com.grkj.data.model.local.only
|
|
import com.grkj.data.model.local.only
|
|
@@ -38,7 +39,6 @@ import com.grkj.data.model.vo.JobTicketGroupDataVo
|
|
|
import com.grkj.data.model.vo.JobTicketManageVo
|
|
import com.grkj.data.model.vo.JobTicketManageVo
|
|
|
import com.grkj.data.model.vo.JobUserVo
|
|
import com.grkj.data.model.vo.JobUserVo
|
|
|
import com.grkj.data.model.vo.LockedPointVo
|
|
import com.grkj.data.model.vo.LockedPointVo
|
|
|
-import com.grkj.data.model.vo.TodoItemVo
|
|
|
|
|
import com.grkj.data.repository.BaseRepository
|
|
import com.grkj.data.repository.BaseRepository
|
|
|
import com.grkj.data.repository.IJobTicketRepository
|
|
import com.grkj.data.repository.IJobTicketRepository
|
|
|
import com.sik.sikcore.data.BeanUtils
|
|
import com.sik.sikcore.data.BeanUtils
|
|
@@ -136,6 +136,10 @@ class JobTicketRepository @Inject constructor(
|
|
|
isJobTicketStep.stepIndex = workflowStep.stepIndex
|
|
isJobTicketStep.stepIndex = workflowStep.stepIndex
|
|
|
isJobTicketStep.stepContent = workflowStep.stepTitle
|
|
isJobTicketStep.stepContent = workflowStep.stepTitle
|
|
|
isJobTicketStep.androidStepContent = workflowStep.stepTitleShort
|
|
isJobTicketStep.androidStepContent = workflowStep.stepTitleShort
|
|
|
|
|
+ isJobTicketStep.createTime =
|
|
|
|
|
+ TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
|
|
+ isJobTicketStep.updateTime =
|
|
|
|
|
+ TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
add(isJobTicketStep)
|
|
add(isJobTicketStep)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -235,6 +239,10 @@ class JobTicketRepository @Inject constructor(
|
|
|
isJobTicketStep.stepIndex = workflowStep.stepIndex
|
|
isJobTicketStep.stepIndex = workflowStep.stepIndex
|
|
|
isJobTicketStep.stepContent = workflowStep.stepTitle
|
|
isJobTicketStep.stepContent = workflowStep.stepTitle
|
|
|
isJobTicketStep.androidStepContent = workflowStep.stepTitleShort
|
|
isJobTicketStep.androidStepContent = workflowStep.stepTitleShort
|
|
|
|
|
+ isJobTicketStep.createTime =
|
|
|
|
|
+ TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
|
|
+ isJobTicketStep.updateTime =
|
|
|
|
|
+ TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
add(isJobTicketStep)
|
|
add(isJobTicketStep)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -261,9 +269,11 @@ class JobTicketRepository @Inject constructor(
|
|
|
val lockers = jobTicketDao.getTicketUsersByTicketIds(tickets.map { it.ticketId })
|
|
val lockers = jobTicketDao.getTicketUsersByTicketIds(tickets.map { it.ticketId })
|
|
|
.filter { it.userRole == RoleEnum.JTLOCKER.roleKey }
|
|
.filter { it.userRole == RoleEnum.JTLOCKER.roleKey }
|
|
|
// 7. 获取作业票的共锁人数据
|
|
// 7. 获取作业票的共锁人数据
|
|
|
- var colockers = jobTicketDao.getTicketUsersByTicketIds(tickets.map { it.ticketId })
|
|
|
|
|
|
|
+ val colockers = jobTicketDao.getTicketUsersByTicketIds(tickets.map { it.ticketId })
|
|
|
.filter { it.userRole == RoleEnum.JTCOLOCKER.roleKey }
|
|
.filter { it.userRole == RoleEnum.JTCOLOCKER.roleKey }
|
|
|
- // 8. 构建待办项 TodoStepJoin
|
|
|
|
|
|
|
+ // 8. 获取点位数据
|
|
|
|
|
+ val pointDatas = jobTicketDao.getTicketPointsByTicketIds(tickets.map { it.ticketId })
|
|
|
|
|
+ // 9. 构建待办项 TodoStepJoin
|
|
|
val todoList = assembleTodoStepJoins(
|
|
val todoList = assembleTodoStepJoins(
|
|
|
tickets,
|
|
tickets,
|
|
|
stepInstances,
|
|
stepInstances,
|
|
@@ -271,6 +281,7 @@ class JobTicketRepository @Inject constructor(
|
|
|
groups,
|
|
groups,
|
|
|
lockers,
|
|
lockers,
|
|
|
colockers,
|
|
colockers,
|
|
|
|
|
+ pointDatas,
|
|
|
userId,
|
|
userId,
|
|
|
userName
|
|
userName
|
|
|
)
|
|
)
|
|
@@ -288,6 +299,7 @@ class JobTicketRepository @Inject constructor(
|
|
|
groups: List<IsJobTicketGroup>,
|
|
groups: List<IsJobTicketGroup>,
|
|
|
lockers: List<IsJobTicketUserDataVo>,
|
|
lockers: List<IsJobTicketUserDataVo>,
|
|
|
colockers: List<IsJobTicketUserDataVo>,
|
|
colockers: List<IsJobTicketUserDataVo>,
|
|
|
|
|
+ pointDatas: List<JobPointVo>,
|
|
|
userId: Long,
|
|
userId: Long,
|
|
|
userName: String
|
|
userName: String
|
|
|
): List<TodoStepJoin> {
|
|
): List<TodoStepJoin> {
|
|
@@ -310,14 +322,15 @@ class JobTicketRepository @Inject constructor(
|
|
|
|
|
|
|
|
/** 工具:给待办挂上前置链并收集 **/
|
|
/** 工具:给待办挂上前置链并收集 **/
|
|
|
fun collect(join: TodoStepJoin) {
|
|
fun collect(join: TodoStepJoin) {
|
|
|
- if (previousStepJoin.isNotEmpty()) join.previousTodoStepJoin = previousStepJoin.toList()
|
|
|
|
|
|
|
+ if (previousStepJoin.isNotEmpty()) join.previousTodoStepJoin =
|
|
|
|
|
+ previousStepJoin.toList()
|
|
|
stepJoins += join
|
|
stepJoins += join
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* 1️⃣ Lock / Unlock(按 group 拆) */
|
|
/* 1️⃣ Lock / Unlock(按 group 拆) */
|
|
|
if (stepDef.enableLock || stepDef.enableUnlock) {
|
|
if (stepDef.enableLock || stepDef.enableUnlock) {
|
|
|
- val action = if (stepDef.enableLock) StepAction.LOCK else StepAction.UNLOCK
|
|
|
|
|
- val type = if (stepDef.enableLock) 0 else 1 // key.ticketType
|
|
|
|
|
|
|
+ val action = if (stepDef.enableLock) StepAction.LOCK else StepAction.UNLOCK
|
|
|
|
|
+ val type = if (stepDef.enableLock) 0 else 1 // key.ticketType
|
|
|
val keysOfStep = keyRecords.filter { // 全部钥匙记录
|
|
val keysOfStep = keyRecords.filter { // 全部钥匙记录
|
|
|
it.ticketId == ticketId && it.ticketType == type && it.delFlag == "0"
|
|
it.ticketId == ticketId && it.ticketType == type && it.delFlag == "0"
|
|
|
}
|
|
}
|
|
@@ -330,7 +343,7 @@ class JobTicketRepository @Inject constructor(
|
|
|
// 该 group 还没取钥匙 → 占位 Todo
|
|
// 该 group 还没取钥匙 → 占位 Todo
|
|
|
listOf(
|
|
listOf(
|
|
|
buildTodoStepJoin(
|
|
buildTodoStepJoin(
|
|
|
- stepDef, ticket, stepDef, lockerList, colockerList,
|
|
|
|
|
|
|
+ stepDef, ticket, stepDef, lockerList, colockerList, pointDatas,
|
|
|
g.id, g.groupName, null
|
|
g.id, g.groupName, null
|
|
|
).only(action)
|
|
).only(action)
|
|
|
)
|
|
)
|
|
@@ -338,7 +351,7 @@ class JobTicketRepository @Inject constructor(
|
|
|
// 该 group 已有钥匙记录 → 每把钥匙一条 Todo
|
|
// 该 group 已有钥匙记录 → 每把钥匙一条 Todo
|
|
|
keysOfGroup.map { k ->
|
|
keysOfGroup.map { k ->
|
|
|
buildTodoStepJoin(
|
|
buildTodoStepJoin(
|
|
|
- stepDef, ticket, stepDef, lockerList, colockerList,
|
|
|
|
|
|
|
+ stepDef, ticket, stepDef, lockerList, colockerList, pointDatas,
|
|
|
k.groupId, g.groupName, k
|
|
k.groupId, g.groupName, k
|
|
|
).only(action)
|
|
).only(action)
|
|
|
}
|
|
}
|
|
@@ -352,7 +365,7 @@ class JobTicketRepository @Inject constructor(
|
|
|
if (stepDef.enableColock) {
|
|
if (stepDef.enableColock) {
|
|
|
collect(
|
|
collect(
|
|
|
buildTodoStepJoin(
|
|
buildTodoStepJoin(
|
|
|
- stepDef, ticket, stepDef, lockerList, colockerList,
|
|
|
|
|
|
|
+ stepDef, ticket, stepDef, lockerList, colockerList, pointDatas,
|
|
|
null, "", null
|
|
null, "", null
|
|
|
).only(StepAction.COLOCK)
|
|
).only(StepAction.COLOCK)
|
|
|
)
|
|
)
|
|
@@ -361,19 +374,30 @@ class JobTicketRepository @Inject constructor(
|
|
|
if (stepDef.enableReleaseColock) {
|
|
if (stepDef.enableReleaseColock) {
|
|
|
collect(
|
|
collect(
|
|
|
buildTodoStepJoin(
|
|
buildTodoStepJoin(
|
|
|
- stepDef, ticket, stepDef, lockerList, colockerList,
|
|
|
|
|
|
|
+ stepDef, ticket, stepDef, lockerList, colockerList, pointDatas,
|
|
|
null, "", null
|
|
null, "", null
|
|
|
).only(StepAction.RELEASE_COLOCK)
|
|
).only(StepAction.RELEASE_COLOCK)
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if (stepDef.enableEndJob) {
|
|
|
|
|
+ collect(
|
|
|
|
|
+ buildTodoStepJoin(
|
|
|
|
|
+ stepDef, ticket, stepDef, lockerList, colockerList, pointDatas,
|
|
|
|
|
+ null, "", null
|
|
|
|
|
+ ).only(StepAction.END_JOB)
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/* 3️⃣ 普通确认 / End‑Job */
|
|
/* 3️⃣ 普通确认 / End‑Job */
|
|
|
- val needConfirm = !stepDef.hasAnyHardwareOperationFunction() || stepDef.enableEndJob
|
|
|
|
|
|
|
+ val needConfirm =
|
|
|
|
|
+ !stepDef.hasAnyHardwareOperationFunction() || stepDef.confirmType == 0
|
|
|
if (needConfirm) {
|
|
if (needConfirm) {
|
|
|
- val action = if (stepDef.enableEndJob) StepAction.END_JOB else StepAction.CONFIRM
|
|
|
|
|
collect(
|
|
collect(
|
|
|
- buildTodoStepJoin(stepDef, ticket, stepDef, lockerList, colockerList,
|
|
|
|
|
- null, "", null).only(action) // ⚠️
|
|
|
|
|
|
|
+ buildTodoStepJoin(
|
|
|
|
|
+ stepDef, ticket, stepDef, lockerList, colockerList, pointDatas,
|
|
|
|
|
+ null, "", null
|
|
|
|
|
+ ).only(StepAction.CONFIRM) // ⚠️
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -398,6 +422,7 @@ class JobTicketRepository @Inject constructor(
|
|
|
workflowStep: IsJobTicketStep,
|
|
workflowStep: IsJobTicketStep,
|
|
|
lockers: List<IsJobTicketUserDataVo>,
|
|
lockers: List<IsJobTicketUserDataVo>,
|
|
|
colockers: List<IsJobTicketUserDataVo>,
|
|
colockers: List<IsJobTicketUserDataVo>,
|
|
|
|
|
+ points: List<JobPointVo>,
|
|
|
groupId: Long?,
|
|
groupId: Long?,
|
|
|
groupName: String?,
|
|
groupName: String?,
|
|
|
key: IsJobTicketKey?,
|
|
key: IsJobTicketKey?,
|
|
@@ -412,6 +437,7 @@ class JobTicketRepository @Inject constructor(
|
|
|
workflowStepId = workflowStep.stepId,
|
|
workflowStepId = workflowStep.stepId,
|
|
|
|
|
|
|
|
ticketName = ticket.ticketName,
|
|
ticketName = ticket.ticketName,
|
|
|
|
|
+ ticketStatus = ticket.ticketStatus,
|
|
|
createBy = ticket.createBy,
|
|
createBy = ticket.createBy,
|
|
|
ticketStartTime = ticket.ticketStartTime,
|
|
ticketStartTime = ticket.ticketStartTime,
|
|
|
|
|
|
|
@@ -434,8 +460,10 @@ class JobTicketRepository @Inject constructor(
|
|
|
lockerUserId = lockers.find { it.groupId == groupId }?.userId,
|
|
lockerUserId = lockers.find { it.groupId == groupId }?.userId,
|
|
|
colockerUserId = colockers.map { it.userId },
|
|
colockerUserId = colockers.map { it.userId },
|
|
|
colockerStatus = colockers.mapNotNull { it.jobStatus },
|
|
colockerStatus = colockers.mapNotNull { it.jobStatus },
|
|
|
|
|
+ pointStatus = points.mapNotNull { it.pointStatus },
|
|
|
keyStatus = getKeyStatusFromKey(key),
|
|
keyStatus = getKeyStatusFromKey(key),
|
|
|
- previousTodoStepJoin = previousTodoStepJoin
|
|
|
|
|
|
|
+ previousTodoStepJoin = previousTodoStepJoin,
|
|
|
|
|
+ todoStatus = TodoStatusEnum.WAIT
|
|
|
).also {
|
|
).also {
|
|
|
// 将 groupId 写入(你如果实体字段没写,需要自己加上)
|
|
// 将 groupId 写入(你如果实体字段没写,需要自己加上)
|
|
|
it.groupId = groupId
|
|
it.groupId = groupId
|
|
@@ -485,23 +513,48 @@ class JobTicketRepository @Inject constructor(
|
|
|
val grouped = todoList.filter { it.isMyTodo(userId, userName) }.groupBy { it.ticketId }
|
|
val grouped = todoList.filter { it.isMyTodo(userId, userName) }.groupBy { it.ticketId }
|
|
|
|
|
|
|
|
for ((_, steps) in grouped) {
|
|
for ((_, steps) in grouped) {
|
|
|
- val doneSteps = steps.filter { it.stepStatus == "1" }
|
|
|
|
|
- val pendingSteps = steps.filter { it.stepStatus == "0" }
|
|
|
|
|
|
|
+ var doneSteps =
|
|
|
|
|
+ steps.filter {
|
|
|
|
|
+ it.stepStatus == "1" && (!it.enableEndJob && it.ticketStatus in listOf(
|
|
|
|
|
+ JobTicketStatusEnum.SELECT_MEMBER.status,
|
|
|
|
|
+ JobTicketStatusEnum.LOCKING.status,
|
|
|
|
|
+ JobTicketStatusEnum.COLOCKING.status,
|
|
|
|
|
+ JobTicketStatusEnum.UNLOCKING.status,
|
|
|
|
|
+ JobTicketStatusEnum.PROGRESSING.status,
|
|
|
|
|
+ ) || (it.ticketStatus == JobTicketStatusEnum.FINISHED.status) && it.enableEndJob)
|
|
|
|
|
+ }
|
|
|
|
|
+ val pendingSteps =
|
|
|
|
|
+ steps.filter {
|
|
|
|
|
+ it.stepStatus == "0" || (it.stepStatus == "1" && it.enableEndJob && it.ticketStatus in listOf(
|
|
|
|
|
+ JobTicketStatusEnum.SELECT_MEMBER.status,
|
|
|
|
|
+ JobTicketStatusEnum.LOCKING.status,
|
|
|
|
|
+ JobTicketStatusEnum.COLOCKING.status,
|
|
|
|
|
+ JobTicketStatusEnum.UNLOCKING.status,
|
|
|
|
|
+ JobTicketStatusEnum.PROGRESSING.status,
|
|
|
|
|
+ ))
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/* —— 当前步骤 → todoData —— */
|
|
/* —— 当前步骤 → todoData —— */
|
|
|
- val todoStep = pendingSteps.filter { pendingStep ->
|
|
|
|
|
- todoList.filter { it.stepStatus == "0" }
|
|
|
|
|
- .minByOrNull { it.stepIndex }?.stepIndex == pendingStep.stepIndex }
|
|
|
|
|
- todoStep.let { tempTodo.addAll(it) }
|
|
|
|
|
|
|
+ val todoStep = pendingSteps
|
|
|
|
|
+ .filter { pendingStep ->
|
|
|
|
|
+ steps.filter { it.stepStatus == "0" }
|
|
|
|
|
+ .minByOrNull { it.stepIndex }?.stepIndex == pendingStep.stepIndex || (steps.none {
|
|
|
|
|
+ pendingStep.stepStatus == "0"
|
|
|
|
|
+ } && pendingStep.enableEndJob)
|
|
|
|
|
+ }.findPredecessors()
|
|
|
|
|
+ tempTodo += todoStep.second
|
|
|
|
|
+ doneSteps = doneSteps.toMutableList().apply {
|
|
|
|
|
+ addAll(todoStep.third)
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/* —— 其它待办 → waitData —— */
|
|
/* —— 其它待办 → waitData —— */
|
|
|
- val otherPending = pendingSteps.filter { it !in todoStep }
|
|
|
|
|
|
|
+ val otherPending = pendingSteps.filter { it !in (todoStep.second + todoStep.third) }
|
|
|
|
|
|
|
|
/* ① 按 (stepIndex, actionKey) 分批 —— */
|
|
/* ① 按 (stepIndex, actionKey) 分批 —— */
|
|
|
val byBatch = otherPending
|
|
val byBatch = otherPending
|
|
|
.groupBy { it.stepIndex to actionKey(it) } // <─ 新增动作维度
|
|
.groupBy { it.stepIndex to actionKey(it) } // <─ 新增动作维度
|
|
|
.toSortedMap(
|
|
.toSortedMap(
|
|
|
- compareBy<Pair<Int, String>> { it.first } // stepIndex 升序
|
|
|
|
|
|
|
+ compareBy<Pair<Int, Int>> { it.first } // stepIndex 升序
|
|
|
.thenBy { it.second } // actionKey 字典序
|
|
.thenBy { it.second } // actionKey 字典序
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -512,7 +565,7 @@ class JobTicketRepository @Inject constructor(
|
|
|
|
|
|
|
|
val action = actionKey(batchList[0]) // 同批次动作一致,取任意一条判断即可
|
|
val action = actionKey(batchList[0]) // 同批次动作一致,取任意一条判断即可
|
|
|
|
|
|
|
|
- if (action == "LOCK" || action == "UNLOCK") {
|
|
|
|
|
|
|
+ if (action == 1 || action == 4) {
|
|
|
// ✅ 上锁/解锁 → 同一 stepIndex 下多个 group 要全部保留
|
|
// ✅ 上锁/解锁 → 同一 stepIndex 下多个 group 要全部保留
|
|
|
tempWait += batchList
|
|
tempWait += batchList
|
|
|
} else {
|
|
} else {
|
|
@@ -525,19 +578,140 @@ class JobTicketRepository @Inject constructor(
|
|
|
|
|
|
|
|
tempDone += doneSteps
|
|
tempDone += doneSteps
|
|
|
}
|
|
}
|
|
|
|
|
+ tempTodo.forEach {
|
|
|
|
|
+ it.todoStatus = TodoStatusEnum.TODO
|
|
|
|
|
+ }
|
|
|
|
|
+ tempWait.forEach {
|
|
|
|
|
+ it.todoStatus = TodoStatusEnum.WAIT
|
|
|
|
|
+ }
|
|
|
|
|
+ tempDone.forEach {
|
|
|
|
|
+ it.todoStatus = TodoStatusEnum.DONE
|
|
|
|
|
+ }
|
|
|
return tempTodo.size + tempWait.size
|
|
return tempTodo.size + tempWait.size
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取待办类型
|
|
|
|
|
+ */
|
|
|
|
|
+ private fun TodoStepJoin.getTodoType(): OperationTypeEnum {
|
|
|
|
|
+ val isCreator = createBy == MainDomainData.userInfo?.userName
|
|
|
|
|
+ return OperationTypeEnum.fromJoin(this, isCreator)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 处理前置
|
|
|
|
|
+ */
|
|
|
|
|
+ private fun List<TodoStepJoin>.findPredecessors(): Triple<List<TodoStepJoin>, List<TodoStepJoin>, List<TodoStepJoin>> {
|
|
|
|
|
+ return when {
|
|
|
|
|
+ any { it.enableLock } && any { it.enableColock } -> {
|
|
|
|
|
+ if (this.any { it.pointStatus.any { it == "0" } }) {
|
|
|
|
|
+ Triple(filter { it.enableColock }, filter { it.enableLock }, mutableListOf())
|
|
|
|
|
+ } else if (this.any { it.pointStatus.all { it == "1" } } && this.any { it.colockerStatus.any { it == "0" } }) {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ filter { it.getTodoType() == OperationTypeEnum.CONFIRM },
|
|
|
|
|
+ filter { it.enableColock },
|
|
|
|
|
+ filter { it.enableLock })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ mutableListOf(),
|
|
|
|
|
+ filter { it.getTodoType() == OperationTypeEnum.CONFIRM },
|
|
|
|
|
+ filter { it.enableLock || it.enableColock })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ any { it.enableColock } && any { it.enableReleaseColock } -> {
|
|
|
|
|
+ if (this.any { it.colockerStatus.any { it == "0" } }) {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ filter { it.enableReleaseColock },
|
|
|
|
|
+ filter { it.enableColock },
|
|
|
|
|
+ mutableListOf()
|
|
|
|
|
+ )
|
|
|
|
|
+ } else if (this.all { it.colockerStatus.all { it == "1" } }) {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ filter { it.getTodoType() == OperationTypeEnum.CONFIRM },
|
|
|
|
|
+ filter { it.enableReleaseColock },
|
|
|
|
|
+ filter { it.enableColock })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ mutableListOf(),
|
|
|
|
|
+ filter { it.getTodoType() == OperationTypeEnum.CONFIRM },
|
|
|
|
|
+ filter { it.enableReleaseColock || it.enableColock })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ any { it.enableReleaseColock } && any { it.enableUnlock } && any { it.enableEndJob } -> {
|
|
|
|
|
+ if (this.any { it.colockerStatus.any { it != "2" } }) {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ filter { it.enableUnlock },
|
|
|
|
|
+ filter { it.enableReleaseColock },
|
|
|
|
|
+ mutableListOf()
|
|
|
|
|
+ )
|
|
|
|
|
+ } else if (this.all { it.colockerStatus.all { it == "2" } } && this.any { it.pointStatus.any { it != "2" } }) {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ filter { it.getTodoType() == OperationTypeEnum.CONFIRM },
|
|
|
|
|
+ filter { it.enableUnlock },
|
|
|
|
|
+ filter { it.enableReleaseColock })
|
|
|
|
|
+ } else if (this.all { it.stepStatus == "0" } && this.all { it.pointStatus.all { it == "2" } }) {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ filter { it.enableEndJob },
|
|
|
|
|
+ filter { it.getTodoType() == OperationTypeEnum.CONFIRM },
|
|
|
|
|
+ filter { it.enableUnlock || it.enableReleaseColock })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ mutableListOf(),
|
|
|
|
|
+ filter { it.enableEndJob },
|
|
|
|
|
+ filter { it.enableUnlock || it.enableReleaseColock || it.getTodoType() == OperationTypeEnum.CONFIRM }
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ any { it.enableReleaseColock } && any { it.enableUnlock } -> {
|
|
|
|
|
+ if (this.any { it.colockerStatus.any { it != "2" } }) {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ filter { it.enableUnlock },
|
|
|
|
|
+ filter { it.enableReleaseColock },
|
|
|
|
|
+ mutableListOf()
|
|
|
|
|
+ )
|
|
|
|
|
+ } else if (this.all { it.colockerStatus.all { it == "2" } } && this.any { it.pointStatus.any { it != "2" } }) {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ filter { it.getTodoType() == OperationTypeEnum.CONFIRM },
|
|
|
|
|
+ filter { it.enableUnlock },
|
|
|
|
|
+ filter { it.enableReleaseColock })
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ mutableListOf(),
|
|
|
|
|
+ filter { it.getTodoType() == OperationTypeEnum.CONFIRM },
|
|
|
|
|
+ filter { it.enableUnlock || it.enableReleaseColock })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ any { it.enableUnlock } && any { it.enableEndJob } -> {
|
|
|
|
|
+ if (this.any { it.pointStatus.any { it != "2" } }) {
|
|
|
|
|
+ Triple(filter { it.enableEndJob }, filter { it.enableUnlock }, mutableListOf())
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Triple(
|
|
|
|
|
+ mutableListOf(),
|
|
|
|
|
+ filter { it.enableEndJob },
|
|
|
|
|
+ filter { it.enableUnlock })
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ else -> Triple(
|
|
|
|
|
+ filter { it.getTodoType() == OperationTypeEnum.CONFIRM }, this, mutableListOf()
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/* -------------------------------------------------------------
|
|
/* -------------------------------------------------------------
|
|
|
* 根据唯一的 enableXXX 返回动作标识
|
|
* 根据唯一的 enableXXX 返回动作标识
|
|
|
* ----------------------------------------------------------- */
|
|
* ----------------------------------------------------------- */
|
|
|
- private fun actionKey(item: TodoStepJoin): String = when {
|
|
|
|
|
- item.enableLock -> "LOCK"
|
|
|
|
|
- item.enableUnlock -> "UNLOCK"
|
|
|
|
|
- item.enableColock -> "COLOCK"
|
|
|
|
|
- item.enableReleaseColock -> "RELEASE_COLOCK"
|
|
|
|
|
- item.enableEndJob -> "END_JOB"
|
|
|
|
|
- else -> "CONFIRM"
|
|
|
|
|
|
|
+ private fun actionKey(item: TodoStepJoin): Int = when {
|
|
|
|
|
+ item.enableLock -> 1
|
|
|
|
|
+ item.enableUnlock -> 4
|
|
|
|
|
+ item.enableColock -> 2
|
|
|
|
|
+ item.enableReleaseColock -> 3
|
|
|
|
|
+ item.enableEndJob -> 6
|
|
|
|
|
+ else -> 5
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun updateCoincideToUnLock(ticketDetail: TicketDetailRes, groupId: Long) {
|
|
override fun updateCoincideToUnLock(ticketDetail: TicketDetailRes, groupId: Long) {
|
|
@@ -671,7 +845,8 @@ class JobTicketRepository @Inject constructor(
|
|
|
//如果是自动确认并且没有操作的功能,则更新步骤
|
|
//如果是自动确认并且没有操作的功能,则更新步骤
|
|
|
if (stepDataVo?.confirmType != 0 && stepDataVo?.hasAnyOperationFunction() == false) {
|
|
if (stepDataVo?.confirmType != 0 && stepDataVo?.hasAnyOperationFunction() == false) {
|
|
|
stepDataVo.stepStatus = "1"
|
|
stepDataVo.stepStatus = "1"
|
|
|
- stepDataVo.updateTime = TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
|
|
|
|
+ stepDataVo.updateTime =
|
|
|
|
|
+ TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
BeanUtils.copyProperties(
|
|
BeanUtils.copyProperties(
|
|
|
stepDataVo, IsJobTicketStep::class.java
|
|
stepDataVo, IsJobTicketStep::class.java
|
|
|
)?.let { jobTicketStep ->
|
|
)?.let { jobTicketStep ->
|
|
@@ -1126,6 +1301,10 @@ class JobTicketRepository @Inject constructor(
|
|
|
isJobTicketStep.stepIndex = workflowStep.stepIndex
|
|
isJobTicketStep.stepIndex = workflowStep.stepIndex
|
|
|
isJobTicketStep.stepContent = workflowStep.stepTitle
|
|
isJobTicketStep.stepContent = workflowStep.stepTitle
|
|
|
isJobTicketStep.androidStepContent = workflowStep.stepTitleShort
|
|
isJobTicketStep.androidStepContent = workflowStep.stepTitleShort
|
|
|
|
|
+ isJobTicketStep.createTime =
|
|
|
|
|
+ TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
|
|
+ isJobTicketStep.updateTime =
|
|
|
|
|
+ TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
add(isJobTicketStep)
|
|
add(isJobTicketStep)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1209,6 +1388,10 @@ class JobTicketRepository @Inject constructor(
|
|
|
isJobTicketStep.stepIndex = workflowStep.stepIndex
|
|
isJobTicketStep.stepIndex = workflowStep.stepIndex
|
|
|
isJobTicketStep.stepContent = workflowStep.stepTitle
|
|
isJobTicketStep.stepContent = workflowStep.stepTitle
|
|
|
isJobTicketStep.androidStepContent = workflowStep.stepTitleShort
|
|
isJobTicketStep.androidStepContent = workflowStep.stepTitleShort
|
|
|
|
|
+ isJobTicketStep.createTime =
|
|
|
|
|
+ TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
|
|
+ isJobTicketStep.updateTime =
|
|
|
|
|
+ TimeUtils.nowString(TimeUtils.DEFAULT_DATE_HOUR_MIN_SEC_FORMAT)
|
|
|
add(isJobTicketStep)
|
|
add(isJobTicketStep)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|