Эх сурвалжийг харах

refactor(更新)
- 异常作业处理逻辑修改

周文健 3 сар өмнө
parent
commit
6d9284462d

+ 61 - 36
app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionDetailFragment.kt

@@ -16,6 +16,7 @@ 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.math.log
 
 /**
  * 异常详情
@@ -63,11 +64,19 @@ class ExceptionDetailFragment : BaseFragment<FragmentExceptionDetailBinding>() {
         }
     }
 
+    /**
+     * 是否为作业异常
+     */
     private fun isJobException(): Boolean {
-        val exceptionTypeValue = viewModel.exceptionType.find { it.dictLabel == "作业异常" }?.dictValue
+        val exceptionTypeValue =
+            viewModel.exceptionType.find { it.dictLabel == "作业异常" }?.dictValue
+        logger.info("是否为异常作业:${viewModel.exceptionData?.exceptionType.toString()},${exceptionTypeValue}")
         return viewModel.exceptionData?.exceptionType.toString() == exceptionTypeValue
     }
 
+    /**
+     * 简单处理,主要是非作业异常的
+     */
     private fun showSimpleConfirmHandleDialog() {
         TipDialog.showInfo(
             getString(R.string.confirm_handle_exception),
@@ -83,6 +92,9 @@ class ExceptionDetailFragment : BaseFragment<FragmentExceptionDetailBinding>() {
         )
     }
 
+    /**
+     * 处理成功弹窗
+     */
     private fun showHandleSuccessDialog() {
         TipDialog.showSuccess(
             getString(R.string.handle_exception_success),
@@ -91,41 +103,52 @@ class ExceptionDetailFragment : BaseFragment<FragmentExceptionDetailBinding>() {
         )
     }
 
+    /**
+     * 隐藏处理按钮
+     */
     private fun hideHandleButtons() {
         binding.handleException.isVisible = false
         binding.cancelException.isVisible = false
     }
 
+    /**
+     * exceptionData?.exceptionDescription
+     */
     private fun checkLockAndCrossJobThenHandle() {
-        exceptionJobViewModel.checkJobHasCoLockAndCrossJob().observe(this) { (hasCoLock, hasCrossJob) ->
-            when {
-                hasCoLock && hasCrossJob -> {
-                    showCoLockReleaseWarning {
-                        showCrossJobWarning {
+        logger.info("检查是否上锁和交叉作业")
+        exceptionJobViewModel.checkJobHasCoLockAndCrossJob()
+            .observe(this) { (hasCoLock, hasCrossJob) ->
+                when {
+                    hasCoLock && hasCrossJob -> {
+                        showCoLockReleaseWarning {
+                            showCrossJobWarning {
+                                handleExceptionCheck()
+                            }
+                        }
+                    }
+
+                    hasCoLock -> {
+                        showCoLockReleaseWarning {
                             handleExceptionCheck()
                         }
                     }
-                }
 
-                hasCoLock -> {
-                    showCoLockReleaseWarning {
-                        handleExceptionCheck()
+                    hasCrossJob -> {
+                        showCrossJobWarning {
+                            handleExceptionCheck()
+                        }
                     }
-                }
 
-                hasCrossJob -> {
-                    showCrossJobWarning {
+                    else -> {
                         handleExceptionCheck()
                     }
                 }
-
-                else -> {
-                    handleExceptionCheck()
-                }
             }
-        }
     }
 
+    /**
+     * 共锁解除警告
+     */
     private fun showCoLockReleaseWarning(onConfirm: () -> Unit) {
         TipDialog.show(
             title = getString(R.string.warn),
@@ -135,6 +158,9 @@ class ExceptionDetailFragment : BaseFragment<FragmentExceptionDetailBinding>() {
         )
     }
 
+    /**
+     * 交叉作业警告
+     */
     private fun showCrossJobWarning(onConfirm: () -> Unit) {
         TipDialog.show(
             title = getString(R.string.warn),
@@ -144,6 +170,9 @@ class ExceptionDetailFragment : BaseFragment<FragmentExceptionDetailBinding>() {
         )
     }
 
+    /**
+     * 处理异常
+     */
     private fun handleExceptionCheck() {
         exceptionJobViewModel.checkJobNeedLockOrUnlock().observe(this) {
             when (it) {
@@ -257,16 +286,20 @@ class ExceptionDetailFragment : BaseFragment<FragmentExceptionDetailBinding>() {
             .getData(DataTransferConstants.KEY_EXCEPTION_DATA)
         viewModel.getDictData().observe(this) {
             viewModel.getExceptionSourceName().observe(this) {
-                if (viewModel.exceptionData?.exceptionType.toString() == viewModel.exceptionType.find {
-                        it.dictLabel.contains(
-                            "作业"
-                        )
-                    }?.dictValue) {
-                    viewModel.getExceptionSourceData().observe(this) {
-                        if (viewModel.exceptionSourceData.isNotEmpty()) {
-                            exceptionJobViewModel.ticketId =
-                                viewModel.exceptionSourceData[0].sourceDataId
-                            getData()
+                viewModel.getExceptionData().observe(this) {
+                    binding.exceptionDescription.text =
+                        viewModel.exceptionData?.exceptionDescription?.joinToString(",")
+                    binding.handleException.isVisible =
+                        viewModel.exceptionStatus.find { it.dictLabel == "待处理" }?.dictValue == viewModel.exceptionData?.exceptionStatus.toString()
+                    binding.cancelException.isVisible =
+                        viewModel.exceptionStatus.find { it.dictLabel == "待处理" }?.dictValue == viewModel.exceptionData?.exceptionStatus.toString()
+                    if (isJobException()) {
+                        viewModel.getExceptionSourceData().observe(this) {
+                            if (viewModel.exceptionSourceData.isNotEmpty()) {
+                                exceptionJobViewModel.ticketId =
+                                    viewModel.exceptionSourceData[0].sourceDataId
+                                getData()
+                            }
                         }
                     }
                 }
@@ -289,14 +322,6 @@ class ExceptionDetailFragment : BaseFragment<FragmentExceptionDetailBinding>() {
     }
 
     private fun getData() {
-        viewModel.getExceptionData().observe(this) {
-            binding.exceptionDescription.text =
-                viewModel.exceptionData?.exceptionDescription?.joinToString(",")
-            binding.handleException.isVisible =
-                viewModel.exceptionStatus.find { it.dictLabel == "待处理" }?.dictValue == viewModel.exceptionData?.exceptionStatus.toString()
-            binding.cancelException.isVisible =
-                viewModel.exceptionStatus.find { it.dictLabel == "待处理" }?.dictValue == viewModel.exceptionData?.exceptionStatus.toString()
-        }
         exceptionJobViewModel.getJobTicketData().observe(this) {
             if (it) {
                 exceptionJobViewModel.isUnlockFirst(exceptionJobViewModel.ticketData?.ticketId!!)

+ 12 - 5
app/src/main/java/com/grkj/iscs/features/main/viewmodel/exception_manage/ExceptionJobViewModel.kt

@@ -30,6 +30,7 @@ import com.sik.sikcore.date.TimeUtils
 import dagger.hilt.android.lifecycle.HiltViewModel
 import kotlinx.coroutines.Dispatchers
 import javax.inject.Inject
+import kotlin.math.log
 
 /**
  * 作业执行数据
@@ -43,11 +44,11 @@ class ExceptionJobViewModel @Inject constructor(
     var ticketId: Long = 0
     var exceptionId: Long = 0
     var ticketData: IsJobTicketDataVo? = null
-    lateinit var ticketKey: List<IsJobTicketKeyDataVo>
-    lateinit var ticketLock: List<IsJobTicketLockDataVo>
-    lateinit var ticketPoints: List<IsJobTicketPointsDataVo>
-    lateinit var ticketStep: List<IsJobTicketStepDataVo>
-    lateinit var ticketUser: List<IsJobTicketUserDataVo>
+    var ticketKey: List<IsJobTicketKeyDataVo> = mutableListOf()
+    var ticketLock: List<IsJobTicketLockDataVo> = mutableListOf()
+    var ticketPoints: List<IsJobTicketPointsDataVo> = mutableListOf()
+    var ticketStep: List<IsJobTicketStepDataVo> = mutableListOf()
+    var ticketUser: List<IsJobTicketUserDataVo> = mutableListOf()
     var selectedLockerData: List<JobUserVo> = mutableListOf()
     var selecteColockerData: List<JobUserVo> = mutableListOf()
     var currentStepData: IsJobTicketStepDataVo? = null
@@ -190,6 +191,11 @@ class ExceptionJobViewModel @Inject constructor(
      * 作业申请使用万能钥匙
      */
     fun jobApplicationUseMasterKey(): Boolean {
+        logger.info("是否申请万能钥匙:${exceptionData?.exceptionDescription},${processApplicationJob.find {
+            it.dictLabel.contains(
+                "万能钥匙"
+            )
+        }?.dictLabel}")
         return exceptionData?.exceptionDescription?.contains(processApplicationJob.find {
             it.dictLabel.contains(
                 "万能钥匙"
@@ -304,6 +310,7 @@ class ExceptionJobViewModel @Inject constructor(
             val hasCoLock =
                 ticketStep.any { it.enableColock } && ticketUser.any { it.jobStatus == "1" }
             val isJobCross = jobTicketRepository.hasJobCross(ticketId)
+            logger.info("是否上锁和交叉作业:$hasCoLock,$isJobCross")
             emit(hasCoLock to isJobCross)
         }
     }