Sfoglia il codice sorgente

补充作业票是否可操作权限判断

Frankensteinly 7 mesi fa
parent
commit
51257d04ad

+ 2 - 1
app/src/main/java/com/grkj/iscs/model/vo/ticket/TicketDetailRespVO.kt

@@ -22,7 +22,8 @@ data class TicketDetailRespVO(
     val lockTime: String?,
     val unlockTime: String?,
     val pointDetailVOList: List<PointDetailVO>?,
-    val jobTicketUserList: List<UserVO>?
+    val jobTicketUserList: List<UserVO>?,
+    val createBy: String?
 ) {
     data class PointDetailVO(
         val pointId: Long?,

+ 22 - 0
app/src/main/java/com/grkj/iscs/view/fragment/StepFragment.kt

@@ -12,6 +12,7 @@ import com.grkj.iscs.model.vo.machinery.MachineryDetailRespVO
 import com.grkj.iscs.model.vo.ticket.LotoMapRespVO
 import com.grkj.iscs.model.vo.ticket.StepDetailRespVO
 import com.grkj.iscs.util.BitmapUtil
+import com.grkj.iscs.util.SPUtils
 import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.util.log.LogUtil
 import com.grkj.iscs.view.base.BaseMvpFragment
@@ -38,6 +39,7 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
     private var stationLayer: CustomStationLayer? = null
     private val mStationList = mutableListOf<CustomStationLayer.IsolationPoint>()
     private var mMapPicWidth = 1
+    private var mCanHandle = false // 是否可以操作,创建人、上锁人至少符合一个才可操作
 
     override val viewBinding: FragmentStepBinding
         get() = FragmentStepBinding.inflate(layoutInflater)
@@ -83,6 +85,10 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
                     }
                 )
                 holder.setOnClickListener(R.id.root) {
+                    if (!mCanHandle) {
+                        ToastUtils.tip(R.string.no_permission_to_handle)
+                        return@setOnClickListener
+                    }
                     handleStep(step.index)
                 }
             }
@@ -91,6 +97,10 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
         mBinding?.cbBack?.setOnClickListener { goBack() }
 
         mBinding?.cbAction?.setOnClickListener {
+            if (!mCanHandle) {
+                ToastUtils.tip(R.string.no_permission_to_handle)
+                return@setOnClickListener
+            }
             if (mStep in 1..5) {
                 presenter?.cancelTicket(mChangePage?.ticketId!!) {
                     if (it) changePage(PageChangeBO(-1))
@@ -113,6 +123,10 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
         }
 
         mBinding?.llDetail?.setOnClickListener {
+            if (!mCanHandle) {
+                ToastUtils.tip(R.string.no_permission_to_handle)
+                return@setOnClickListener
+            }
             if (mStep >= 4) {
                 changePage(PageChangeBO(2, mChangePage?.workstationId, mChangePage?.ticketId,
                     mChangePage?.machineryId, mChangePage?.machineryName))
@@ -149,9 +163,17 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
     override fun refreshPage(pageChangeBO: PageChangeBO) {
         LogUtil.i("$pageChangeBO")
         mChangePage = pageChangeBO
+        mCanHandle = false
 
         presenter?.getTicketDetail(pageChangeBO.ticketId) {
             mBinding?.tvTitle?.text = it?.ticketName
+            it?.createBy?.let { itCreator ->
+                if (itCreator.isEmpty()) {
+                    return@let
+                }
+                mCanHandle = itCreator.toLong() == SPUtils.getLoginUser(requireContext())?.userId
+            }
+            mCanHandle = mCanHandle || it?.jobTicketUserList?.any { it.userId != null && it.userId.toLong() == SPUtils.getLoginUser(requireContext())?.userId } == true
         }
 
         presenter?.getStepDetail(pageChangeBO.ticketId!!) {

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -269,4 +269,5 @@
     <string name="face_can_not_process">人脸引擎激活失败,识别暂不可用</string>
     <string name="face_detected_do_login">检测到人脸,正在登录······</string>
     <string name="current_step_can_not_be_process">当前步骤暂时无法处理</string>
+    <string name="no_permission_to_handle">您暂无权限操作当前作业票</string>
 </resources>