Selaa lähdekoodia

1. 解决单上锁流程作业显示的问题

bjb 1 kuukausi sitten
vanhempi
sitoutus
e92723e89e

+ 7 - 2
data/src/main/java/com/grkj/data/domain/logic/impl/JobTicketLogic.kt

@@ -1,5 +1,7 @@
 package com.grkj.data.domain.logic.impl
 
+import android.util.Log
+import com.google.gson.Gson
 import com.grkj.data.check_data.ICheckDataMode
 import com.grkj.data.data.MainDomainData
 import com.grkj.data.domain.logic.BaseLogic
@@ -392,10 +394,12 @@ class JobTicketLogic @Inject constructor(
 
                 /** 工具:给待办挂上前置链并收集 **/
                 fun collect(join: TodoStepJoin) {
-                    if (previousStepJoin.isNotEmpty()) join.previousTodoStepJoin = previousStepJoin.toList()
+                    if (previousStepJoin.isNotEmpty()) join.previousTodoStepJoin =
+                        previousStepJoin.toList()
                     stepJoins += join
                 }
 
+
                 // 上锁和解锁按照分组拆分
                 if (stepDef.enableLock || stepDef.enableUnlock) {
                     val action = if (stepDef.enableLock) StepAction.LOCK else StepAction.UNLOCK
@@ -467,7 +471,8 @@ class JobTicketLogic @Inject constructor(
                 }
 
                 // 普通确认
-                val needConfirm = !stepDef.hasAnyHardwareOperationFunction() || stepDef.confirmType == 0
+                val needConfirm =
+                    !stepDef.hasAnyHardwareOperationFunction() || stepDef.confirmType == 0
                 if (needConfirm) {
                     collect(
                         buildTodoStepJoin(

+ 17 - 5
data/src/main/java/com/grkj/data/entity/extension/TodoDataExtension.kt

@@ -158,6 +158,7 @@ fun splitTodoSteps(
  */
 fun List<TodoItemVo>.findPredecessors(): Triple<List<TodoItemVo>, List<TodoItemVo>, List<TodoItemVo>> {
     return when {
+        // 处理上锁和共锁处理逻辑
         any { it.enableLock } && any { it.enableColock } -> {
             if (this.any { it.pointStatus.any { it == "0" } }) {
                 Triple(filter { it.enableColock }, filter { it.enableLock }, mutableListOf())
@@ -173,7 +174,7 @@ fun List<TodoItemVo>.findPredecessors(): Triple<List<TodoItemVo>, List<TodoItemV
                     filter { it.enableLock || it.enableColock })
             }
         }
-
+        // 处理 共锁->解除共锁
         any { it.enableColock } && any { it.enableReleaseColock } -> {
             if (this.any { it.colockerStatus.any { it == "0" } }) {
                 Triple(
@@ -193,7 +194,7 @@ fun List<TodoItemVo>.findPredecessors(): Triple<List<TodoItemVo>, List<TodoItemV
                     filter { it.enableReleaseColock || it.enableColock })
             }
         }
-
+        // 处理 解除共锁->解锁->结束
         any { it.enableReleaseColock } && any { it.enableUnlock } && any { it.enableEndJob } -> {
             if (this.any { it.colockerStatus.any { it != "2" } }) {
                 Triple(
@@ -219,7 +220,7 @@ fun List<TodoItemVo>.findPredecessors(): Triple<List<TodoItemVo>, List<TodoItemV
                 )
             }
         }
-
+        // 处理 解除共锁->解锁
         any { it.enableReleaseColock } && any { it.enableUnlock } -> {
             if (this.any { it.colockerStatus.any { it != "2" } }) {
                 Triple(
@@ -239,7 +240,18 @@ fun List<TodoItemVo>.findPredecessors(): Triple<List<TodoItemVo>, List<TodoItemV
                     filter { it.enableUnlock || it.enableReleaseColock })
             }
         }
-
+        // 处理 上锁->结束
+        any { it.enableLock } && any { it.enableEndJob } -> {
+            if (this.any { it.pointStatus.any { it == "0" } }) {
+                Triple(filter { it.enableEndJob }, filter { it.enableLock }, mutableListOf())
+            } else {
+                Triple(
+                    mutableListOf(),
+                    filter { it.enableEndJob },
+                    filter { it.enableLock })
+            }
+        }
+        // 处理 解锁->结束
         any { it.enableUnlock } && any { it.enableEndJob } -> {
             if (this.any { it.pointStatus.any { it != "2" } }) {
                 Triple(filter { it.enableEndJob }, filter { it.enableUnlock }, mutableListOf())
@@ -250,7 +262,7 @@ fun List<TodoItemVo>.findPredecessors(): Triple<List<TodoItemVo>, List<TodoItemV
                     filter { it.enableUnlock })
             }
         }
-
+        // 其他情况
         else -> Triple(
             filter { it.todoType == OperationTypeEnum.CONFIRM }, this, mutableListOf()
         )

+ 1 - 1
gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
 #Sat May 17 15:58:35 CST 2025
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
+distributionUrl=https\://mirrors.aliyun.com/gradle/distributions/v8.11.1/gradle-8.11.1-all.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists

+ 25 - 20
iscs_lock/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobManageFragment.kt

@@ -8,8 +8,9 @@ import com.drake.brv.utils.divider
 import com.drake.brv.utils.linear
 import com.drake.brv.utils.models
 import com.drake.brv.utils.setup
-import com.grkj.data.enums.JobTicketStatusEnum
+import com.grkj.data.data.MainDomainData
 import com.grkj.data.domain.vo.JobTicketManageVo
+import com.grkj.data.enums.JobTicketStatusEnum
 import com.grkj.iscs.R
 import com.grkj.iscs.common.DataTransferConstants
 import com.grkj.iscs.databinding.FragmentJobManageBinding
@@ -22,7 +23,6 @@ import com.grkj.ui_base.utils.CommonUtils
 import com.sik.sikcore.data.GlobalDataTempStore
 import com.sik.sikcore.extension.setDebouncedClickListener
 import dagger.hilt.android.AndroidEntryPoint
-import kotlin.getValue
 
 /**
  * 作业管理
@@ -62,29 +62,31 @@ class JobManageFragment : BaseFragment<FragmentJobManageBinding>() {
     }
 
     private fun deleteSelected() {
-        if (viewModel.jobManageDataList.none { it.isSelected }) {
-            showToast(CommonUtils.getStr("please_select_job"))
-            return
-        }
-        if (viewModel.jobManageDataList.filter { it.isSelected }.any {
-                it.ticketStatus !in listOf(
-                    JobTicketStatusEnum.CANCELED.status,
-                    JobTicketStatusEnum.NOT_START.status
-                )
-            }) {
-            TipDialog.showError(CommonUtils.getStr("has_job_in_progress"))
-            return
+        // 允许Admin删除任何作业
+        if (MainDomainData.roleKeys?.contains("admin") != true) {
+            if (viewModel.jobManageDataList.none { it.isSelected }) {
+                showToast(CommonUtils.getStr("please_select_job"))
+                return
+            }
+            if (viewModel.jobManageDataList.filter { it.isSelected }.any {
+                    it.ticketStatus !in listOf(
+                        JobTicketStatusEnum.CANCELED.status,
+                        JobTicketStatusEnum.NOT_START.status
+                    )
+                }) {
+                TipDialog.showError(CommonUtils.getStr("has_job_in_progress"))
+                return
+            }
         }
         TipDialog.show(
-            msg = CommonUtils.getStr("check_delete_job").toString(),
+            msg = CommonUtils.getStr("check_delete_job"),
             countDownTime = 10,
             onConfirmClick = {
                 viewModel.deleteSelectedJob().observe(this) {
                     if (it) {
                         TipDialog.show(
                             dialogType = TipDialog.DialogType.SUCCESS,
-                            msg = CommonUtils.getStr("job_manage_delete_succeed")
-                                .toString(),
+                            msg = CommonUtils.getStr("job_manage_delete_succeed"),
                             showCancel = false,
                             onConfirmClick = {
                                 getData(false)
@@ -93,8 +95,7 @@ class JobManageFragment : BaseFragment<FragmentJobManageBinding>() {
                     } else {
                         TipDialog.show(
                             dialogType = TipDialog.DialogType.ERROR,
-                            msg = CommonUtils.getStr("job_manage_delete_failed")
-                                .toString(),
+                            msg = CommonUtils.getStr("job_manage_delete_failed"),
                             showCancel = false,
                         )
                     }
@@ -135,7 +136,11 @@ class JobManageFragment : BaseFragment<FragmentJobManageBinding>() {
                 showToast(CommonUtils.getStr("job_canceled"))
             } else if (item.ticketStatus == JobTicketStatusEnum.FINISHED.status) {
                 showToast(CommonUtils.getStr("job_finished"))
-            } else if (item.exStatus == viewModel.jobTicketStatus.find { I18nManager.t(it.dictLabel) == I18nManager.t("abnormal") }?.dictValue?.toInt()) {
+            } else if (item.exStatus == viewModel.jobTicketStatus.find {
+                    I18nManager.t(it.dictLabel) == I18nManager.t(
+                        "abnormal"
+                    )
+                }?.dictValue?.toInt()) {
                 viewModel.getExceptionIdByTicketId(item.ticketId).observe(this@JobManageFragment) {
                     GlobalDataTempStore.getInstance()
                         .saveData(DataTransferConstants.KEY_EXCEPTION_ID, it)

+ 14 - 9
iscs_lock/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/MyTodoViewModel.kt

@@ -1,9 +1,7 @@
 package com.grkj.iscs.features.main.viewmodel.job_manage
 
-import android.util.Log
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
-import com.google.gson.Gson
 import com.grkj.data.data.DictConstants
 import com.grkj.data.data.MainDomainData
 import com.grkj.data.domain.logic.IJobTicketLogic
@@ -113,10 +111,11 @@ class MyTodoViewModel @Inject constructor(
                 }
             /* —— 当前步骤 → todoData —— */
             val todoStep = pendingSteps.filter { it.isCurrentStep }.findPredecessors()
+
+            // 当前进行中的
             tempTodo += todoStep.second
-            doneSteps = doneSteps.toMutableList().apply {
-                addAll(todoStep.third)
-            }
+
+            doneSteps = doneSteps.toMutableList().apply { addAll(todoStep.third) }
 
             /* —— 其它待办 → waitData —— */
             val otherPending = pendingSteps.filter { it !in (todoStep.second + todoStep.third) }
@@ -149,15 +148,18 @@ class MyTodoViewModel @Inject constructor(
 
             tempDone += doneSteps
         }
-        tempTodo.forEach {
-            it.todoStatus = TodoStatusEnum.TODO
-        }
+        // 待执行
         tempWait.forEach {
             it.todoStatus = TodoStatusEnum.WAIT
             // 上一流程步骤不从这里配置
             val preTodoList = tempTodo.filter { todoData -> it.ticketId == todoData.ticketId }
             if (preTodoList.isNotEmpty()) it.previousTodoItem = preTodoList
         }
+        // 即将执行
+        tempTodo.forEach {
+            it.todoStatus = TodoStatusEnum.TODO
+        }
+        // 已完成列表
         tempDone.forEach {
             it.todoStatus = TodoStatusEnum.DONE
         }
@@ -190,7 +192,10 @@ class MyTodoViewModel @Inject constructor(
 
             OperationTypeEnum.RELEASE_COLOCK -> CommonUtils.getStr("handle_release_colock")
 
-            OperationTypeEnum.CONFIRM -> CommonUtils.getStr("handle_step_confirm", item.todoTitle.toString())
+            OperationTypeEnum.CONFIRM -> CommonUtils.getStr(
+                "handle_step_confirm",
+                item.todoTitle.toString()
+            )
 
             OperationTypeEnum.END -> CommonUtils.getStr("finish_job_tip")
             else -> ""