Просмотр исходного кода

完成分配人员页人员选择界面操作

Frankensteinly 9 месяцев назад
Родитель
Сommit
4222b8c524

+ 5 - 0
app/src/main/java/com/grkj/iscs/model/UrlConsts.kt

@@ -161,4 +161,9 @@ object UrlConsts {
      * 结束作业票
      */
     const val FINISH_TICKET = "/iscs/ticket/updateJobToFinish"
+
+    /**
+     * 新增人员
+     */
+    const val UPDATE_TICKET_USER = "/iscs/step/addJobUsers"
 }

+ 8 - 0
app/src/main/java/com/grkj/iscs/model/vo/ticket/TicketUserReqVO.kt

@@ -0,0 +1,8 @@
+package com.grkj.iscs.model.vo.ticket
+
+data class TicketUserReqVO(
+    val userId: Long,
+    val userName: String,
+    val userType: String,
+    val userRole: String
+)

+ 18 - 0
app/src/main/java/com/grkj/iscs/util/NetApi.kt

@@ -20,6 +20,7 @@ import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
 import com.grkj.iscs.model.vo.ticket.TicketEquipDetailRespVO
 import com.grkj.iscs.model.vo.ticket.TicketPageRespVO
 import com.grkj.iscs.model.vo.ticket.TicketTypeRespVO
+import com.grkj.iscs.model.vo.ticket.TicketUserReqVO
 import com.grkj.iscs.model.vo.ticket.WorkstationTicketListRespVO
 import com.grkj.iscs.model.vo.user.RoleListRespVO
 import com.grkj.iscs.model.vo.user.UserListRespVO
@@ -616,4 +617,21 @@ object NetApi {
             }, isGet = false, isAuth = true
         )
     }
+
+    /**
+     * 新增/更新作业票人员
+     */
+    fun updateTicketUser(ticketId: Long, userList: MutableList<TicketUserReqVO>, callBack: (Boolean) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.UPDATE_TICKET_USER,
+            false,
+            mapOf(
+                "ticketId" to ticketId,
+                "ticketUserDTOList" to userList
+            ),
+            { res, _, _ ->
+                println("haha : $res")
+            }, isGet = false, isAuth = true
+        )
+    }
 }

+ 77 - 15
app/src/main/java/com/grkj/iscs/view/fragment/WorkerFragment.kt

@@ -7,7 +7,7 @@ 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.view.base.BaseMvpFragment
 import com.grkj.iscs.view.iview.IWorkerView
@@ -20,8 +20,9 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
  */
 class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Unit) :
     BaseMvpFragment<IWorkerView, WorkerPresenter, FragmentWorkerBinding>() {
+    private val mSelectedList = mutableListOf<TicketUserReqVO>()
+    private val mColockerSelectedShowList = mutableListOf<TicketUserReqVO>()    // 仅展示用
 
-    private val mColockerSelectedList = mutableListOf<TicketDetailRespVO.UserVO>()
     private val mLockerList = mutableListOf<UserListRespVO.Row>()
     private val mColockerInsideList = mutableListOf<UserListRespVO.Row>()
     private val mColockerOutsideList = mutableListOf<UserListRespVO.Row>()
@@ -36,11 +37,20 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
             goBack()
         }
 
-        mBinding?.rvWorkerSelected?.adapter =
-            object : CommonAdapter<TicketDetailRespVO.UserVO>(requireActivity(), R.layout.item_rv_worker, mColockerSelectedList) {
-                override fun convert(holder: ViewHolder, data: TicketDetailRespVO.UserVO, position: Int) {
+        mBinding?.rvColockerSelected?.adapter =
+            object : CommonAdapter<TicketUserReqVO>(requireActivity(), R.layout.item_rv_worker, mColockerSelectedShowList) {
+                override fun convert(holder: ViewHolder, data: TicketUserReqVO, position: Int) {
                     holder.getView<ImageView>(R.id.iv_photo).isSelected = true
                     holder.setText(R.id.tv_name, data.userName)
+                    holder.setOnClickListener(R.id.root) {
+                        // 共锁人取消
+                        mSelectedList.removeIf { it.userId == data.userId }
+                        mColockerSelectedShowList.removeIf { it.userId == data.userId }
+                        mBinding?.rvColockerSelected?.adapter?.notifyDataSetChanged()
+                        mBinding?.rvColockerInside?.adapter?.notifyDataSetChanged()
+                        mBinding?.rvColockerOutside?.adapter?.notifyDataSetChanged()
+
+                    }
                 }
             }
 
@@ -59,23 +69,73 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
         mBinding?.rvLockerList?.adapter =
             object : CommonAdapter<UserListRespVO.Row>(requireActivity(), R.layout.item_rv_worker, mLockerList) {
                 override fun convert(holder: ViewHolder, user: UserListRespVO.Row, position: Int) {
+                    holder.getView<ImageView>(R.id.iv_photo).isSelected = mSelectedList.any { it.userId == user.userId }
                     holder.setText(R.id.tv_name, user.nickName)
+                    holder.setOnClickListener(R.id.root) {
+                        // 上锁人选择
+                        if (mSelectedList.any { it.userId == user.userId }) {
+                            mSelectedList.removeIf { it.userId == user.userId }
+                            mBinding?.layoutLocker?.root?.visibility = View.INVISIBLE
+                        } else {
+                            mSelectedList.removeIf { it.userRole == USER_ROLE_LOCKER }
+                            mSelectedList.add(TicketUserReqVO(user.userId!!, user.nickName!!, "0", USER_ROLE_LOCKER))
+                            mBinding?.layoutLocker?.root?.visibility = View.VISIBLE
+                            mBinding?.layoutLocker?.tvName?.text = user.nickName
+                        }
+                        mBinding?.rvLockerList?.adapter?.notifyDataSetChanged()
+                    }
                 }
             }
 
-        mBinding?.rvLockerInside?.adapter =
+        mBinding?.rvColockerInside?.adapter =
             object : CommonAdapter<UserListRespVO.Row>(requireActivity(), R.layout.item_rv_worker, mColockerInsideList) {
                 override fun convert(holder: ViewHolder, user: UserListRespVO.Row, position: Int) {
+                    holder.getView<ImageView>(R.id.iv_photo).isSelected = mSelectedList.any { it.userId == user.userId }
                     holder.setText(R.id.tv_name, user.nickName)
+                    holder.setOnClickListener(R.id.root) {
+                        // 内部共锁人选择
+                        if (mSelectedList.any { it.userId == user.userId }) {
+                            mSelectedList.removeIf { it.userId == user.userId }
+                            mColockerSelectedShowList.removeIf { it.userId == user.userId }
+                        } else {
+                            val addUser = TicketUserReqVO(user.userId!!, user.nickName!!, "0", USER_ROLE_COLOCKER)
+                            mSelectedList.add(addUser)
+                            mColockerSelectedShowList.add(addUser)
+                        }
+                        mBinding?.rvColockerSelected?.adapter?.notifyDataSetChanged()
+                        mBinding?.rvColockerInside?.adapter?.notifyDataSetChanged()
+                    }
                 }
             }
 
-        mBinding?.rvLockerOutside?.adapter =
+        mBinding?.rvColockerOutside?.adapter =
             object : CommonAdapter<UserListRespVO.Row>(requireActivity(), R.layout.item_rv_worker, mColockerOutsideList) {
                 override fun convert(holder: ViewHolder, user: UserListRespVO.Row, position: Int) {
+                    holder.getView<ImageView>(R.id.iv_photo).isSelected = mSelectedList.any { it.userId == user.userId }
                     holder.setText(R.id.tv_name, user.nickName)
+                    holder.setOnClickListener(R.id.root) {
+                        // 外部共锁人选择
+                        if (mSelectedList.any { it.userId == user.userId }) {
+                            mSelectedList.removeIf { it.userId == user.userId }
+                            mColockerSelectedShowList.removeIf { it.userId == user.userId }
+                        } else {
+                            val addUser = TicketUserReqVO(user.userId!!, user.nickName!!, "1", USER_ROLE_COLOCKER)
+                            mSelectedList.add(addUser)
+                            mColockerSelectedShowList.add(addUser)
+                        }
+                        mBinding?.rvColockerSelected?.adapter?.notifyDataSetChanged()
+                        mBinding?.rvColockerOutside?.adapter?.notifyDataSetChanged()
+                    }
                 }
             }
+
+        mBinding?.layoutLocker?.root?.setOnClickListener {
+            if (mBinding?.layoutLocker?.root?.visibility == View.VISIBLE) {
+                mBinding?.layoutLocker?.root?.visibility = View.INVISIBLE
+                mSelectedList.removeIf { it.userRole == USER_ROLE_LOCKER }
+                mBinding?.rvLockerList?.adapter?.notifyDataSetChanged()
+            }
+        }
     }
 
     override fun refreshPage(pageChangeBO: PageChangeBO) {
@@ -88,20 +148,23 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
             if (it?.jobTicketUserList.isNullOrEmpty()) {
                 return@getTicketDetail
             }
-            mColockerSelectedList.clear()
+            mSelectedList.clear()
+            mColockerSelectedShowList.clear()
             it?.jobTicketUserList?.forEach { user ->
                 if (user.userRole == USER_ROLE_LOCKER) {
                     mBinding?.layoutLocker?.root?.visibility = View.VISIBLE
                     mBinding?.layoutLocker?.tvName?.text = user.userName
-                } else if (user.userRole == USER_ROLE_COLOCKER) {
-                    mColockerSelectedList.add(user)
                 }
+                mSelectedList.add(TicketUserReqVO(user.userId!!, user.userName!!, user.userType!!, user.userRole!!))
             }
-            mBinding?.rvWorkerSelected?.adapter?.notifyDataSetChanged()
+            mColockerSelectedShowList.addAll(mSelectedList.filter { it.userRole == USER_ROLE_COLOCKER }.toMutableList())
+            mBinding?.rvColockerSelected?.adapter?.notifyDataSetChanged()
+            mBinding?.rvLockerList?.adapter?.notifyDataSetChanged()
+            mBinding?.rvColockerInside?.adapter?.notifyDataSetChanged()
+            mBinding?.rvColockerOutside?.adapter?.notifyDataSetChanged()
         }
 
         presenter?.getUserList(mPageChangeBO?.workstationId, 3, 9) {
-            println("上锁人 : $it")
             mLockerList.clear()
             if (!it?.rows.isNullOrEmpty()) {
                 mLockerList.addAll(it?.rows!!)
@@ -110,7 +173,6 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
         }
 
         presenter?.getUserList(mPageChangeBO?.workstationId, 4) {
-            println("共锁人 : $it")
             mColockerInsideList.clear()
             mColockerOutsideList.clear()
             if (!it?.rows.isNullOrEmpty()) {
@@ -122,8 +184,8 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
                     }
                 }
             }
-            mBinding?.rvLockerInside?.adapter?.notifyDataSetChanged()
-            mBinding?.rvLockerOutside?.adapter?.notifyDataSetChanged()
+            mBinding?.rvColockerInside?.adapter?.notifyDataSetChanged()
+            mBinding?.rvColockerOutside?.adapter?.notifyDataSetChanged()
         }
     }
 

+ 3 - 3
app/src/main/res/layout/fragment_worker.xml

@@ -179,7 +179,7 @@
             </com.google.android.material.card.MaterialCardView>
 
             <androidx.recyclerview.widget.RecyclerView
-                android:id="@+id/rv_worker_selected"
+                android:id="@+id/rv_colocker_selected"
                 style="@style/CommonRecyclerView"
                 app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
                 app:spanCount="3" />
@@ -231,7 +231,7 @@
                     android:text="@string/select_coloker_mars" />
 
                 <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/rv_locker_inside"
+                    android:id="@+id/rv_colocker_inside"
                     style="@style/CommonRecyclerView"
                     android:layout_height="wrap_content"
                     app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
@@ -252,7 +252,7 @@
                     android:text="@string/select_coloker_outside" />
 
                 <androidx.recyclerview.widget.RecyclerView
-                    android:id="@+id/rv_locker_outside"
+                    android:id="@+id/rv_colocker_outside"
                     style="@style/CommonRecyclerView"
                     android:layout_height="wrap_content"
                     app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"