Ver Fonte

1. 作业TODO优化

bjb há 1 mês atrás
pai
commit
04f68d3629

+ 2 - 2
iscs_lock/build.gradle.kts

@@ -14,8 +14,8 @@ android {
         applicationId = "com.grkj.iscs"
         minSdk = 25
         targetSdk = 35
-        versionCode = 5
-        versionName = "v1.0.3"
+        versionCode = 6
+        versionName = "v1.0.6"
 
         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
     }

+ 14 - 0
iscs_lock/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/JobExecuteFragment.kt

@@ -475,6 +475,13 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
             if (viewModel.canCoLock()) {
                 InRFIDScanModeEvent.sendInRFIDScanModeEvent(false)
                 viewModel.getFaceByUserId(item.userId).observe(this) {
+                    // 校验是不是本人操作
+                    if (MainDomainData.userInfo?.userName != viewModel.ticketData?.createBy) {
+                        if (item.userId != MainDomainData.userInfo?.userId) {
+                            showToast(CommonUtils.getStr("no_permission_to_handle"))
+                            return@observe
+                        }
+                    }
                     if (it.isEmpty()) {
                         showToast(CommonUtils.getStr(com.grkj.ui_base.R.string.current_user_has_not_face_data))
                     } else {
@@ -570,6 +577,13 @@ class JobExecuteFragment : BaseFragment<FragmentJobExecuteBinding>() {
                     //当前步骤能加共锁并且锁已经上锁或者当前步骤能解共锁并且锁已经上锁
                     if (viewModel.canCoLock()) {
                         viewModel.getUserIdByCardRfid(it.rfidNo).observe(this) { userId ->
+                            // 校验刷卡是不是本人
+                            if (MainDomainData.userInfo?.userName != viewModel.ticketData?.createBy) {
+                                if (userId != MainDomainData.userInfo?.userId) {
+                                    showToast(CommonUtils.getStr("no_permission_to_handle"))
+                                    return@observe
+                                }
+                            }
                             userId?.let {
                                 coLockByUserId(it)
                             } ?: showToast(CommonUtils.getStr("invalid_card"))

+ 44 - 0
iscs_lock/src/main/java/com/grkj/iscs/features/main/fragment/job_manage/MyTodoListFragment.kt

@@ -1,5 +1,6 @@
 package com.grkj.iscs.features.main.fragment.job_manage
 
+import android.util.Log
 import android.widget.TextView
 import androidx.core.view.isVisible
 import androidx.fragment.app.viewModels
@@ -11,6 +12,7 @@ import com.drake.brv.utils.linear
 import com.drake.brv.utils.models
 import com.drake.brv.utils.setup
 import com.google.android.material.tabs.TabLayout
+import com.google.gson.Gson
 import com.grkj.data.data.EventConstants
 import com.grkj.data.data.MainDomainData
 import com.grkj.data.data.Type
@@ -362,6 +364,41 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
                     return@setDebouncedClickListener
                 }
             }
+            // 共锁人逻辑处理
+            if (listOf(OperationTypeEnum.COLOCK, OperationTypeEnum.RELEASE_COLOCK).contains(item.todoType)) {
+                val loginUsername = MainDomainData.userInfo?.userName ?: ""
+                val loginUserId = MainDomainData.userInfo?.userId ?: 0
+                // 先校验当前登录账号是否是作业创建者,是创建者共锁人允许在其账号内进行共锁
+                if (jobExecuteViewModel.ticketData?.createBy != loginUsername) {
+                    // 如果登录的账号不是作业创建者,但是是共锁人之一并且任务未完成可以进行共锁
+                    val user =
+                        jobExecuteViewModel.ticketUser.find { user -> user.userRole == RoleEnum.JTCOLOCKER.roleKey && user.userId == loginUserId }
+                    if (user != null) {
+                        // 找到共锁人后,根据是上锁还是解锁判断是否可以进行操作
+                        if (item.todoType == OperationTypeEnum.COLOCK && user.jobStatus == "1") {
+                            showToast(CommonUtils.getStr("colocker_already_lock"))
+                            return@setDebouncedClickListener
+                        } else if (item.todoType == OperationTypeEnum.RELEASE_COLOCK && user.jobStatus == "2") {
+                            showToast(CommonUtils.getStr("colocker_already_unlock"))
+                            return@setDebouncedClickListener
+                        }
+                    } else {
+                        showToast(CommonUtils.getStr("no_permission_to_handle"))
+                        return@setDebouncedClickListener
+                    }
+                }
+            }
+            // 确认流程鉴定
+            if (OperationTypeEnum.END == item.todoType) {
+                val step = jobExecuteViewModel.currentStepData
+                if (step?.enableLock == true && item.pointStatus.any { it != "1" }) {
+                    showToast(CommonUtils.getStr("please_finish_lock"))
+                    return@setDebouncedClickListener
+                } else if (step?.enableUnlock == true && item.pointStatus.any { it != "2" }) {
+                    showToast(CommonUtils.getStr("please_finish_unlock"))
+                    return@setDebouncedClickListener
+                }
+            }
             TipDialog.showInfo(viewModel.getHandleTip(item), onConfirmClick = {
                 jobExecuteViewModel.getWorkflowModes().observe(this) {
                     jobExecuteViewModel.ticketId = item.ticketId
@@ -486,6 +523,13 @@ class MyTodoListFragment : BaseFragment<FragmentMyTodoListBinding>() {
                     if ((currentStep.enableColock || currentStep.enableReleaseColock) && jobExecuteViewModel.ticketPoints.all { point -> point.pointStatus == "1" }) {
                         jobExecuteViewModel.getUserIdByCardRfid(it.rfidNo).observe(this) { userId ->
                             userId?.let {
+                                if (MainDomainData.userInfo?.userName != jobExecuteViewModel.ticketData?.createBy) {
+                                    // 不是创建者,只允许在自己的账号中进行共锁
+                                    if (userId != MainDomainData.userInfo?.userId) {
+                                        showToast(CommonUtils.getStr("no_permission_to_handle"))
+                                        return@observe
+                                    }
+                                }
                                 val isJobCardUser = jobExecuteViewModel.ticketUser.filter { colocker ->
                                     colocker.userRole?.contains(RoleEnum.JTCOLOCKER.roleKey) == true
                                 }.find { colocker -> colocker.userId == userId }

+ 4 - 0
ui-base/src/main/res/values-en/strings.xml

@@ -856,4 +856,8 @@
     <string name="face_login_tip">请将面部对准摄像头,完成人脸认证后,将自动登录。</string>
     <string name="face_not_activated">人脸引擎激活失败,识别暂不可用</string>
     <string name="get_fingerprint">Getting Fingerprint</string>
+    <string name="colocker_already_lock">You have already completed the co-locking. Please do not repeat the operation.</string>
+    <string name="colocker_already_unlock">You have already completed the co-lock release. Please do not repeat the operation.</string>
+    <string name="please_finish_lock">Please complete the lock operation first.</string>
+    <string name="please_finish_unlock">Please complete the unlock operation first.</string>
 </resources>

+ 4 - 0
ui-base/src/main/res/values-zh/strings.xml

@@ -856,4 +856,8 @@
     <string name="face_login_tip">请将面部对准摄像头,完成人脸认证后,将自动登录。</string>
     <string name="face_not_activated">人脸引擎激活失败,识别暂不可用</string>
     <string name="get_fingerprint">正在获取指纹</string>
+    <string name="colocker_already_lock">您已完成共锁,请勿重复操作</string>
+    <string name="colocker_already_unlock">您已完成解锁,请勿重复操作</string>
+    <string name="please_finish_lock">请先完成上锁操作</string>
+    <string name="please_finish_unlock">请先完成解锁操作</string>
 </resources>

+ 4 - 0
ui-base/src/main/res/values/strings.xml

@@ -856,4 +856,8 @@
     <string name="face_login_tip">请将面部对准摄像头,完成人脸认证后,将自动登录。</string>
     <string name="face_not_activated">人脸引擎激活失败,识别暂不可用</string>
     <string name="get_fingerprint">正在获取指纹</string>
+    <string name="colocker_already_lock">您已完成共锁,请勿重复操作</string>
+    <string name="colocker_already_unlock">您已完成解锁,请勿重复操作</string>
+    <string name="please_finish_lock">请先完成上锁操作</string>
+    <string name="please_finish_unlock">请先完成解锁操作</string>
 </resources>