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

refactor(更新)
- 作业管理和进行中的作业跳转异常作业失败问题处理

周文健 4 сар өмнө
parent
commit
5e99802c5e

+ 17 - 0
app/src/main/java/com/grkj/iscs/features/main/fragment/exception_manage/ExceptionJobFragment.kt

@@ -265,6 +265,10 @@ class ExceptionJobFragment : BaseFragment<FragmentExceptionJobBinding>() {
         viewModel.getExceptionData().observe(this) {
         viewModel.getExceptionData().observe(this) {
             binding.exceptionDescription.text =
             binding.exceptionDescription.text =
                 viewModel.exceptionData?.exceptionDescription?.joinToString(",")
                 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()
         }
         }
         viewModel.getJobTicketData().observe(this) {
         viewModel.getJobTicketData().observe(this) {
             if (it) {
             if (it) {
@@ -279,6 +283,7 @@ class ExceptionJobFragment : BaseFragment<FragmentExceptionJobBinding>() {
                     binding.stepDescriptionTv.text =
                     binding.stepDescriptionTv.text =
                         viewModel.workflowSteps.find { it.stepId == viewModel.currentStepData?.workflowStepId }?.stepDescription
                         viewModel.workflowSteps.find { it.stepId == viewModel.currentStepData?.workflowStepId }?.stepDescription
                     refreshTicketUser()
                     refreshTicketUser()
+                    checkCurrentStep()
                     checkLayout(currentTab)
                     checkLayout(currentTab)
                 }
                 }
             } else {
             } else {
@@ -294,6 +299,18 @@ class ExceptionJobFragment : BaseFragment<FragmentExceptionJobBinding>() {
         }
         }
     }
     }
 
 
+    /**
+     * 检查当前步骤要显示的界面
+     */
+    private fun checkCurrentStep() {
+        if (viewModel.currentStepData?.stepIndex != null) {
+            binding.lockInfo.text =
+                "${viewModel.ticketPoints.size}/${viewModel.ticketPoints.count { it.pointStatus?.toInt() ?: 0 >= 1 }}/${viewModel.ticketPoints.count { it.pointStatus == "2" }}"
+            binding.colockInfo.text =
+                "${viewModel.ticketUser.filter { it.userRole == RoleEnum.JTCOLOCKER.roleKey }.size}/${viewModel.ticketUser.count { it.userRole == RoleEnum.JTCOLOCKER.roleKey && it.jobStatus?.toInt() ?: 0 >= 1 }}/${viewModel.ticketUser.count { it.userRole == RoleEnum.JTCOLOCKER.roleKey && it.jobStatus == "2" }}"
+        }
+    }
+
     private fun refreshTicketUser() {
     private fun refreshTicketUser() {
         viewModel.ticketUser.let {
         viewModel.ticketUser.let {
             binding.waitToColockRv.models =
             binding.waitToColockRv.models =

+ 9 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/InProgressJobManageFragment.kt

@@ -64,7 +64,15 @@ class InProgressJobManageFragment : BaseFragment<FragmentInProgressJobManageBind
         itemBinding.view.setDebouncedClickListener {
         itemBinding.view.setDebouncedClickListener {
             GlobalDataTempStore.getInstance()
             GlobalDataTempStore.getInstance()
                 .saveData(DataTransferConstants.KEY_JOB_TICKET_ID, item.ticketId)
                 .saveData(DataTransferConstants.KEY_JOB_TICKET_ID, item.ticketId)
-            navController.navigate(R.id.action_inProgressJobManageFragment_to_jobExecuteFragment)
+            if (item.exStatus == viewModel.jobTicketStatus.find { it.dictLabel == "异常" }?.dictValue?.toInt()) {
+                viewModel.getExceptionIdByTicketId(item.ticketId).observe(this@InProgressJobManageFragment) {
+                    GlobalDataTempStore.getInstance()
+                        .saveData(DataTransferConstants.KEY_EXCEPTION_ID, it)
+                    navController.navigate(R.id.action_inProgressJobManageFragment_to_exceptionJobFragment)
+                }
+            } else {
+                navController.navigate(R.id.action_inProgressJobManageFragment_to_jobExecuteFragment)
+            }
         }
         }
     }
     }
 
 

+ 5 - 1
app/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobManageFragment.kt

@@ -132,7 +132,11 @@ class JobManageFragment : BaseFragment<FragmentJobManageBinding>() {
             } else if (item.ticketStatus == JobTicketStatusEnum.FINISHED.status) {
             } else if (item.ticketStatus == JobTicketStatusEnum.FINISHED.status) {
                 PopTip.tip(R.string.job_finished)
                 PopTip.tip(R.string.job_finished)
             } else if (item.exStatus == viewModel.jobTicketStatus.find { it.dictLabel == "异常" }?.dictValue?.toInt()) {
             } else if (item.exStatus == viewModel.jobTicketStatus.find { it.dictLabel == "异常" }?.dictValue?.toInt()) {
-                navController.navigate(R.id.action_jobManageFragment_to_exceptionJobFragment)
+                viewModel.getExceptionIdByTicketId(item.ticketId).observe(this@JobManageFragment) {
+                    GlobalDataTempStore.getInstance()
+                        .saveData(DataTransferConstants.KEY_EXCEPTION_ID, it)
+                    navController.navigate(R.id.action_jobManageFragment_to_exceptionJobFragment)
+                }
             } else {
             } else {
                 navController.navigate(R.id.action_jobManageFragment_to_jobExecuteFragment)
                 navController.navigate(R.id.action_jobManageFragment_to_jobExecuteFragment)
             }
             }

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

@@ -2,10 +2,12 @@ package com.grkj.iscs.features.main.viewmodel.exception_manage
 
 
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.liveData
 import androidx.lifecycle.liveData
+import com.grkj.data.data.DictConstants
 import com.grkj.data.enums.RoleEnum
 import com.grkj.data.enums.RoleEnum
 import com.grkj.data.model.dos.IsJobTicketStep
 import com.grkj.data.model.dos.IsJobTicketStep
 import com.grkj.data.model.dos.WorkflowMode
 import com.grkj.data.model.dos.WorkflowMode
 import com.grkj.data.model.dos.WorkflowStep
 import com.grkj.data.model.dos.WorkflowStep
+import com.grkj.data.model.res.CommonDictRes
 import com.grkj.data.model.vo.IsExceptionStandardVo
 import com.grkj.data.model.vo.IsExceptionStandardVo
 import com.grkj.data.model.vo.IsJobTicketDataVo
 import com.grkj.data.model.vo.IsJobTicketDataVo
 import com.grkj.data.model.vo.IsJobTicketKeyDataVo
 import com.grkj.data.model.vo.IsJobTicketKeyDataVo
@@ -19,6 +21,7 @@ import com.grkj.data.repository.IJobTicketRepository
 import com.grkj.data.repository.IWorkflowRepository
 import com.grkj.data.repository.IWorkflowRepository
 import com.grkj.iscs.R
 import com.grkj.iscs.R
 import com.grkj.ui_base.base.BaseViewModel
 import com.grkj.ui_base.base.BaseViewModel
+import com.grkj.ui_base.business.DataBusiness
 import com.grkj.ui_base.utils.CommonUtils
 import com.grkj.ui_base.utils.CommonUtils
 import com.sik.sikcore.data.BeanUtils
 import com.sik.sikcore.data.BeanUtils
 import dagger.hilt.android.lifecycle.HiltViewModel
 import dagger.hilt.android.lifecycle.HiltViewModel
@@ -55,11 +58,9 @@ class ExceptionJobViewModel @Inject constructor(
     var exceptionData: IsExceptionStandardVo? = null
     var exceptionData: IsExceptionStandardVo? = null
 
 
     /**
     /**
-     * 获取当前流程步骤数据
+     * 异常状态
      */
      */
-    fun getCurrentWorkflowStep(): WorkflowStep? {
-        return workflowSteps.find { it.stepId == currentStepData?.workflowStepId }
-    }
+    var exceptionStatus: List<CommonDictRes> = mutableListOf()
 
 
     /**
     /**
      * 获取作业数据
      * 获取作业数据
@@ -169,6 +170,7 @@ class ExceptionJobViewModel @Inject constructor(
      */
      */
     fun getExceptionData(): LiveData<Boolean> {
     fun getExceptionData(): LiveData<Boolean> {
         return liveData(Dispatchers.IO) {
         return liveData(Dispatchers.IO) {
+            exceptionStatus = DataBusiness.fetchDict(DictConstants.KEY_EXCEPTION_STATUS)
             exceptionData = exceptionRepository.getExceptionDataById(exceptionId)
             exceptionData = exceptionRepository.getExceptionDataById(exceptionId)
             emit(true)
             emit(true)
         }
         }

+ 9 - 1
app/src/main/java/com/grkj/iscs/features/main/viewmodel/job_manage/JobManageViewModel.kt

@@ -5,7 +5,6 @@ import androidx.lifecycle.liveData
 import com.grkj.data.data.DictConstants
 import com.grkj.data.data.DictConstants
 import com.grkj.data.model.res.CommonDictRes
 import com.grkj.data.model.res.CommonDictRes
 import com.grkj.data.model.vo.JobTicketManageVo
 import com.grkj.data.model.vo.JobTicketManageVo
-import com.grkj.data.repository.IExceptionRepository
 import com.grkj.data.repository.IJobTicketRepository
 import com.grkj.data.repository.IJobTicketRepository
 import com.grkj.ui_base.base.BaseViewModel
 import com.grkj.ui_base.base.BaseViewModel
 import com.grkj.ui_base.business.DataBusiness
 import com.grkj.ui_base.business.DataBusiness
@@ -52,4 +51,13 @@ class JobManageViewModel @Inject constructor(
             emit(true)
             emit(true)
         }
         }
     }
     }
+
+    /**
+     * 根据作业id获取异常id
+     */
+    fun getExceptionIdByTicketId(ticketId: Long): LiveData<Long> {
+        return liveData(Dispatchers.IO){
+            emit(jobTicketRepository.getExceptionIdByTicketId(ticketId))
+        }
+    }
 }
 }

+ 2 - 0
app/src/main/res/layout/fragment_exception_job.xml

@@ -429,6 +429,7 @@
                         android:minHeight="@dimen/common_btn_height"
                         android:minHeight="@dimen/common_btn_height"
                         android:paddingHorizontal="@dimen/common_spacing"
                         android:paddingHorizontal="@dimen/common_spacing"
                         android:text="@string/cancel_exception"
                         android:text="@string/cancel_exception"
+                        android:visibility="gone"
                         android:textColor="@color/white"
                         android:textColor="@color/white"
                         android:textSize="@dimen/common_btn_text_size" />
                         android:textSize="@dimen/common_btn_text_size" />
 
 
@@ -444,6 +445,7 @@
                         android:minHeight="@dimen/common_btn_height"
                         android:minHeight="@dimen/common_btn_height"
                         android:paddingHorizontal="@dimen/common_spacing"
                         android:paddingHorizontal="@dimen/common_spacing"
                         android:text="@string/handle_exception"
                         android:text="@string/handle_exception"
+                        android:visibility="gone"
                         android:textColor="@color/white"
                         android:textColor="@color/white"
                         android:textSize="@dimen/common_btn_text_size" />
                         android:textSize="@dimen/common_btn_text_size" />
 
 

+ 8 - 1
app/src/main/res/navigation/nav_job_manage.xml

@@ -122,7 +122,7 @@
             app:destination="@id/jobExecuteFragment" />
             app:destination="@id/jobExecuteFragment" />
         <action
         <action
             android:id="@+id/action_jobManageFragment_to_exceptionJobFragment"
             android:id="@+id/action_jobManageFragment_to_exceptionJobFragment"
-            app:destination="@+id/exceptionJobFragment" />
+            app:destination="@+id/exceptionJobFragment2" />
         <action
         <action
             android:id="@+id/action_jobManageFragment_to_editJobFragment"
             android:id="@+id/action_jobManageFragment_to_editJobFragment"
             app:destination="@id/editJobFragment" />
             app:destination="@id/editJobFragment" />
@@ -180,6 +180,9 @@
         <action
         <action
             android:id="@+id/action_inProgressJobManageFragment_to_jobExecuteFragment"
             android:id="@+id/action_inProgressJobManageFragment_to_jobExecuteFragment"
             app:destination="@id/jobExecuteFragment" />
             app:destination="@id/jobExecuteFragment" />
+        <action
+            android:id="@+id/action_inProgressJobManageFragment_to_exceptionJobFragment"
+            app:destination="@+id/exceptionJobFragment2" />
     </fragment>
     </fragment>
     <fragment
     <fragment
         android:id="@+id/lockedPointsFragment"
         android:id="@+id/lockedPointsFragment"
@@ -189,4 +192,8 @@
         android:id="@+id/workflowSettingFragment"
         android:id="@+id/workflowSettingFragment"
         android:name="com.grkj.iscs.features.main.fragment.common.WorkflowSettingFragment"
         android:name="com.grkj.iscs.features.main.fragment.common.WorkflowSettingFragment"
         android:label="WorkflowSettingFragment" />
         android:label="WorkflowSettingFragment" />
+    <fragment
+        android:id="@+id/exceptionJobFragment2"
+        android:name="com.grkj.iscs.features.main.fragment.exception_manage.ExceptionJobFragment"
+        android:label="ExceptionJobFragment" />
 </navigation>
 </navigation>

+ 6 - 0
data/src/main/java/com/grkj/data/dao/ExceptionDao.kt

@@ -46,4 +46,10 @@ interface ExceptionDao {
      */
      */
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     @Insert(onConflict = OnConflictStrategy.REPLACE)
     fun saveExceptionSourceData(exceptionSourceData: IsExceptionSourceStandard)
     fun saveExceptionSourceData(exceptionSourceData: IsExceptionSourceStandard)
+
+    /**
+     * 根据作业id获取异常id
+     */
+    @Query("select exception_id from is_exception_source_standard where source_data_id = :ticketId")
+    fun getExceptionIdByTicketId(ticketId: Long): Long
 }
 }

+ 1 - 1
data/src/main/java/com/grkj/data/model/vo/IsExceptionStandardVo.kt

@@ -14,7 +14,7 @@ import com.sik.sikcore.date.TimeUtils
  */
  */
 class IsExceptionStandardVo {
 class IsExceptionStandardVo {
     @ColumnInfo(name = "exception_id")
     @ColumnInfo(name = "exception_id")
-    var exceptionId: Int = 0
+    var exceptionId: Long = 0
 
 
     @ColumnInfo(name = "exception_type")
     @ColumnInfo(name = "exception_type")
     var exceptionType: Int = 0
     var exceptionType: Int = 0

+ 5 - 0
data/src/main/java/com/grkj/data/repository/IJobTicketRepository.kt

@@ -227,4 +227,9 @@ interface IJobTicketRepository {
      * 根据卡片id获取用户id
      * 根据卡片id获取用户id
      */
      */
     fun getUserIdByCardRfid(rfid: String): Long?
     fun getUserIdByCardRfid(rfid: String): Long?
+
+    /**
+     * 根据作业id获取异常id
+     */
+    fun getExceptionIdByTicketId(ticketId: Long): Long
 }
 }

+ 7 - 1
data/src/main/java/com/grkj/data/repository/impl/standard/JobTicketRepository.kt

@@ -1,6 +1,7 @@
 package com.grkj.data.repository.impl.standard
 package com.grkj.data.repository.impl.standard
 
 
 import com.grkj.data.check_data.ICheckDataMode
 import com.grkj.data.check_data.ICheckDataMode
+import com.grkj.data.dao.ExceptionDao
 import com.grkj.data.dao.HardwareDao
 import com.grkj.data.dao.HardwareDao
 import com.grkj.data.dao.IsolationPointDao
 import com.grkj.data.dao.IsolationPointDao
 import com.grkj.data.dao.JobTicketDao
 import com.grkj.data.dao.JobTicketDao
@@ -41,7 +42,8 @@ class JobTicketRepository @Inject constructor(
     val jobTicketDao: JobTicketDao,
     val jobTicketDao: JobTicketDao,
     val hardwareDao: HardwareDao,
     val hardwareDao: HardwareDao,
     val isolationPointDao: IsolationPointDao,
     val isolationPointDao: IsolationPointDao,
-    val workflowStepDao: WorkflowStepDao
+    val workflowStepDao: WorkflowStepDao,
+    val exceptionDao: ExceptionDao
 ) : BaseRepository(), IJobTicketRepository {
 ) : BaseRepository(), IJobTicketRepository {
     override fun createJob(
     override fun createJob(
         selectedSopPoints: List<PointManageVo>,
         selectedSopPoints: List<PointManageVo>,
@@ -551,4 +553,8 @@ class JobTicketRepository @Inject constructor(
         jobTicketDao.updateIsJobTicketKey(listOf(isJobTicketKey))
         jobTicketDao.updateIsJobTicketKey(listOf(isJobTicketKey))
         callback(true, "", 200)
         callback(true, "", 200)
     }
     }
+
+    override fun getExceptionIdByTicketId(ticketId: Long): Long {
+        return exceptionDao.getExceptionIdByTicketId(ticketId)
+    }
 }
 }