فهرست منبع

添加作业人员修改时机判断

Frankensteinly 7 ماه پیش
والد
کامیت
6720d1eeda
2فایلهای تغییر یافته به همراه38 افزوده شده و 2 حذف شده
  1. 36 2
      app/src/main/java/com/grkj/iscs/view/fragment/WorkerFragment.kt
  2. 2 0
      app/src/main/res/values/strings.xml

+ 36 - 2
app/src/main/java/com/grkj/iscs/view/fragment/WorkerFragment.kt

@@ -7,9 +7,11 @@ import com.grkj.iscs.databinding.FragmentWorkerBinding
 import com.grkj.iscs.model.Constants.USER_ROLE_COLOCKER
 import com.grkj.iscs.model.Constants.USER_ROLE_LOCKER
 import com.grkj.iscs.model.bo.PageChangeBO
+import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
 import com.grkj.iscs.model.vo.ticket.TicketUserReqVO
 import com.grkj.iscs.model.vo.user.UserListRespVO
 import com.grkj.iscs.util.SPUtils
+import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.view.base.BaseMvpFragment
 import com.grkj.iscs.view.iview.IWorkerView
 import com.grkj.iscs.view.presenter.WorkerPresenter
@@ -23,11 +25,13 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
     BaseMvpFragment<IWorkerView, WorkerPresenter, FragmentWorkerBinding>() {
     private val mSelectedList = mutableListOf<TicketUserReqVO>()
     private val mColockerSelectedShowList = mutableListOf<TicketUserReqVO>()    // 仅展示用
+    private val mOriginalUserList = mutableListOf<TicketDetailRespVO.UserVO>()  // 修改前的人员选择列表
 
     private val mLockerList = mutableListOf<UserListRespVO.Row>()
     private val mColockerInsideList = mutableListOf<UserListRespVO.Row>()
     private val mColockerOutsideList = mutableListOf<UserListRespVO.Row>()
     private var mPageChangeBO: PageChangeBO? = null
+    private var mStep: Int = 0
 
     override val viewBinding: FragmentWorkerBinding
         get() = FragmentWorkerBinding.inflate(layoutInflater)
@@ -37,6 +41,9 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
 
         mBinding?.cbCancel?.setOnClickListener { goBack() }
         mBinding?.cbConfirm?.setOnClickListener {
+            if (!checkUpdate()) {
+                return@setOnClickListener
+            }
             presenter?.updateTicketUser(mPageChangeBO?.ticketId!!, mSelectedList) {
                 if (it) { goBack() }
             }
@@ -143,6 +150,8 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
     }
 
     override fun refreshPage(pageChangeBO: PageChangeBO) {
+        mStep = 0
+        mOriginalUserList.clear()
         mSelectedList.clear()
         mColockerSelectedShowList.clear()
         mLockerList.clear()
@@ -166,8 +175,7 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
             if (it?.jobTicketUserList.isNullOrEmpty()) {
                 return@getTicketDetail
             }
-            mSelectedList.clear()
-            mColockerSelectedShowList.clear()
+            it?.jobTicketUserList?.let { it1 -> mOriginalUserList.addAll(it1) }
             it?.jobTicketUserList?.forEach { user ->
                 if (user.userRole == USER_ROLE_LOCKER) {
                     mBinding?.layoutLocker?.root?.visibility = View.VISIBLE
@@ -227,7 +235,33 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
         presenter?.getStepDetail(pageChangeBO.ticketId!!) {
             mBinding?.tvWorker?.text = "${it?.get(2)?.userNum}/${it?.get(4)?.userNum}/${it?.get(7)?.userNum}"
             mBinding?.tvLock?.text = "${it?.get(2)?.lockNum}/${it?.get(4)?.lockNum}/${it?.get(7)?.lockNum}"
+
+            it?.filter { it.stepStatus == "1" }?.maxByOrNull { it.stepIndex!! }?.stepIndex?.let {
+                mStep = it
+            }
+        }
+    }
+
+    /**
+     * step4做完就不能改上锁人,step6做之前可改共锁人
+     */
+    private fun checkUpdate(): Boolean {
+        if (mStep == 0) {
+            return false
+        }
+        if (mStep >= 4) {
+            val originLocker = mOriginalUserList.find { it.userRole == USER_ROLE_LOCKER }
+            val selectedLocker = mSelectedList.find { it.userRole == USER_ROLE_LOCKER }
+            if (originLocker != null && selectedLocker != null && originLocker.userId != selectedLocker.userId) {
+                ToastUtils.tip(R.string.can_not_change_locker)
+                return false
+            }
+            if (mStep >= 6) {
+                ToastUtils.tip(R.string.can_not_change_colocker)
+                return false
+            }
         }
+        return true
     }
 
     override fun initPresenter(): WorkerPresenter {

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

@@ -270,4 +270,6 @@
     <string name="face_detected_do_login">检测到人脸,正在登录······</string>
     <string name="current_step_can_not_be_process">当前步骤暂时无法处理</string>
     <string name="no_permission_to_handle">您暂无权限操作当前作业票</string>
+    <string name="can_not_change_locker">当前无法更换上锁人</string>
+    <string name="can_not_change_colocker">当前无法更换共锁人</string>
 </resources>