瀏覽代碼

调整八大步骤页返回按钮逻辑;将refreshPage封装从基类fragment函数;晚上作业执行页切换页面逻辑;viewpager添加离线页限制,防止异常;调整获取用户列表接口参数和返回结构;完成人员分配页面显示

Frankensteinly 9 月之前
父節點
當前提交
384e99be94

+ 108 - 26
app/src/main/java/com/grkj/iscs/model/vo/user/UserListRespVO.kt

@@ -7,34 +7,116 @@ data class UserListRespVO(
     val total: Int
 ) {
     data class Row(
-        val admin: Boolean,
-        val avatar: String,
-        val createBy: String,
-        val createTime: String,
-        val delFlag: String,
-        val dept: Dept,
-        val deptId: String,
-        val email: String,
-        val loginDate: Long,
-        val loginIp: String,
-        val nickName: String,
-        val params: ParamsX,
-        val phonenumber: String,
-        val remark: String,
-        val roles: List<Any?>,
-        val sex: String,
-        val status: String,
-        val userId: String,
-        val userName: String
+        val userId: Long?,
+
+        val deptId: Long?,
+
+        val userName: String?,
+
+        val nickName: String?,
+
+        val email: String?,
+
+        val phonenumber: String?,
+
+        val sex: String?,
+
+        val avatar: String?,
+
+        val password: String?,
+
+        val salt: String?,
+
+        val status: String?,
+
+        val delFlag: String?,
+
+        val loginIp: String?,
+
+        val loginString: String?,
+
+        val dept: SysDept?,
+
+        val roles: List<SysRole>?,
+
+        val roleIds: List<Long>,
+
+        val postIds: List<Long>,
+
+        val workstationIds: List<Long>,
+
+        val unitIds: List<Long>,
+
+        val roleId: Long?,
+
+        val roleKey: String?,
+
+        val unitId: Long?,
+
+        val workstationId: Long?,
+
+        val unitName: String?,
+
+        val roleName: String?,
+
+        val userIds: Set<Long>?,
+
+        val b: Boolean?
     ) {
-        data class Dept(
-            val children: List<Any?>,
-            val deptId: String,
-            val deptName: String,
-            val leader: String,
-            val params: ParamsX
+        data class SysRole(
+            val roleId: Long?,
+
+            val roleName: String?,
+
+            val roleKey: String?,
+
+            val roleSort: String?,
+
+            val dataScope: String?,
+
+            val marsDataScope: String?,
+
+            val menuCheckStrictly: Boolean?,
+
+            val deptCheckStrictly: Boolean?,
+
+            val status: String?,
+
+            val delFlag: String?,
+
+            val flag: Boolean?,
+
+            val menuIds: List<Long>,
+
+            val deptIds: List<Long>,
+
+            val workstationIds: List<Long>
         )
 
-        class ParamsX
+        data class SysDept(
+            val deptId: Long?,
+
+            val parentId: Long?,
+
+            val ancestors: String?,
+
+            val deptName: String?,
+
+            val orderNum: String?,
+
+            val leader: String?,
+
+            val phone: String?,
+
+            val email: String?,
+
+            val status: String?,
+
+            val delFlag: String?,
+
+            val parentName: String?,
+
+            val children: MutableList<SysDept>
+        )
     }
 }

+ 23 - 6
app/src/main/java/com/grkj/iscs/util/NetApi.kt

@@ -155,16 +155,32 @@ object NetApi {
 
     /**
      * 获取用户列表
+     *
+     * @param unitId 9:玛氏内部
+     * @param roleId 3:上锁人  4:共锁人
      */
-    @Deprecated("不使用")
-    fun getUserList(pageNum: Int, pageSize: Int, callBack: (UserListRespVO?) -> Unit) {
+    fun getUserList(
+        pageNum: Int,
+        pageSize: Int,
+        workstationId: Long? = null,
+        roleId: Long? = null,
+        unitId: Long? = null,
+        callBack: (UserListRespVO?) -> Unit
+    ) {
+        val map: MutableMap<String, Any> = mutableMapOf("pageNum" to pageNum, "pageSize" to pageSize)
+        workstationId?.let {
+            map["workstationId"] = it
+        }
+        roleId?.let {
+            map["roleId"] = it
+        }
+        unitId?.let {
+            map["unitId"] = it
+        }
         NetHttpManager.getInstance().doRequestNet(
             UrlConsts.USER_LIST,
             false,
-            mapOf(
-                "pageNum" to pageNum,
-                "pageSize" to pageSize
-            ),
+            map,
             { res, _, _ ->
                 res?.let {
                     callBack.invoke(it.toBean(UserListRespVO::class.java))
@@ -449,6 +465,7 @@ object NetApi {
     /**
      * 根据角色获取人员列表
      */
+    @Deprecated("不使用")
     fun getRoleList(pageNum: Int, pageSize: Int, roleKey: String, callBack: (RoleListRespVO?) -> Unit) {
         NetHttpManager.getInstance().doRequestNet(
             UrlConsts.ROLE_LIST,

+ 1 - 0
app/src/main/java/com/grkj/iscs/view/activity/HomeActivity.kt

@@ -34,6 +34,7 @@ class HomeActivity : BaseMvpActivity<IHomeView, HomePresenter, ActivityHomeBindi
         )
 
         mBinding?.vp?.isUserInputEnabled = false
+        mBinding?.vp?.offscreenPageLimit = mMenuList.size
         mBinding?.vp?.adapter = MenuAdapter(supportFragmentManager, lifecycle, mMenuList)
 
         mBinding?.rvMenu?.adapter = object : CommonAdapter<Menu>(this, R.layout.item_rv_menu, mMenuList) {

+ 3 - 0
app/src/main/java/com/grkj/iscs/view/base/BaseFragment.kt

@@ -6,6 +6,7 @@ import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
 import androidx.viewbinding.ViewBinding
+import com.grkj.iscs.model.bo.PageChangeBO
 import com.grkj.iscs.view.dialog.LoadingProgressDialog
 
 abstract class BaseFragment<T : ViewBinding?> : Fragment() {
@@ -40,4 +41,6 @@ abstract class BaseFragment<T : ViewBinding?> : Fragment() {
             loadingProgressDialog?.dismiss()
         }
     }
+
+    open fun refreshPage(pageChangeBO: PageChangeBO) {}
 }

+ 4 - 2
app/src/main/java/com/grkj/iscs/view/fragment/JobExecutionFragment.kt

@@ -23,7 +23,7 @@ class JobExecutionFragment(val changePageCallback: (PageChangeBO) -> Unit) :
 
     override fun initView() {
         mMenuList = mutableListOf(
-            Menu(fragment = StepFragment({ refreshPage(mPageChangeBO!!) }) {
+            Menu(fragment = StepFragment({ changePage(PageChangeBO(-1)) }) {
                 changePage(it)
             }),
             Menu(fragment = WorkerFragment({ refreshPage(mPageChangeBO!!) }) {
@@ -33,6 +33,7 @@ class JobExecutionFragment(val changePageCallback: (PageChangeBO) -> Unit) :
         )
 
         mBinding?.vp?.isUserInputEnabled = false
+        mBinding?.vp?.offscreenPageLimit = mMenuList.size
         mBinding?.vp?.adapter = MenuAdapter(requireActivity().supportFragmentManager, lifecycle, mMenuList)
     }
 
@@ -40,7 +41,7 @@ class JobExecutionFragment(val changePageCallback: (PageChangeBO) -> Unit) :
         return JobExecutionPresenter()
     }
 
-    fun refreshPage(pageChangeBO: PageChangeBO) {
+    override fun refreshPage(pageChangeBO: PageChangeBO) {
         LogUtil.i("$pageChangeBO")
         mPageChangeBO = pageChangeBO
         mBinding?.vp?.currentItem = 0
@@ -54,5 +55,6 @@ class JobExecutionFragment(val changePageCallback: (PageChangeBO) -> Unit) :
             return
         }
         mBinding?.vp?.currentItem = pageChangeBO.pageIdx
+        mMenuList[pageChangeBO.pageIdx].fragment.refreshPage(pageChangeBO)
     }
 }

+ 1 - 1
app/src/main/java/com/grkj/iscs/view/fragment/JobManagementFragment.kt

@@ -38,7 +38,7 @@ class JobManagementFragment :
         )
 
         mBinding?.vp?.isUserInputEnabled = false
-        mBinding?.vp?.offscreenPageLimit = 3
+        mBinding?.vp?.offscreenPageLimit = mMenuList.size
         mBinding?.vp?.adapter = MenuAdapter(requireActivity().supportFragmentManager, lifecycle, mMenuList)
 
         mBinding?.rvTab?.adapter = object : CommonAdapter<Menu>(activity, R.layout.item_rv_job_management, mMenuList) {

+ 1 - 1
app/src/main/java/com/grkj/iscs/view/fragment/JobProgressFragment.kt

@@ -36,7 +36,7 @@ class JobProgressFragment : BaseMvpFragment<IJobProgressVIew, JobProgressPresent
         }
     }
 
-    fun refreshPage(pageChangeBO: PageChangeBO) {
+    override fun refreshPage(pageChangeBO: PageChangeBO) {
         presenter?.getTicketDetail(pageChangeBO.ticketId) {
             mBinding?.tvTitle?.text = it?.ticketName
         }

+ 19 - 6
app/src/main/java/com/grkj/iscs/view/fragment/StepFragment.kt

@@ -64,6 +64,9 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
                         if (step.index == 3) getString(R.string.not_allocated) else getString(R.string.not_executed)
                     }
                 )
+                holder.setOnClickListener(R.id.root) {
+                    handleStep(step.index)
+                }
             }
         }
 
@@ -83,6 +86,7 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
             presenter?.cancelTicket(mChangePage?.ticketId!!) {
                 changePage(PageChangeBO(-1))
             }
+            // TODO 结束作业票
 //            mBinding?.cbCancel?.setText(getString(R.string.finish_the_job))
 //            presenter?.finishTicket(mChangePage?.ticketId!!) {
 //
@@ -90,26 +94,27 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
         }
 
         mBinding?.llDetail?.setOnClickListener {
+            // TODO 待修改
             changePage(PageChangeBO(2))
         }
     }
 
-    fun refreshPage(changeBO: PageChangeBO) {
-        LogUtil.i("$changeBO")
-        mChangePage = changeBO
+    override fun refreshPage(pageChangeBO: PageChangeBO) {
+        LogUtil.i("$pageChangeBO")
+        mChangePage = pageChangeBO
 
-        presenter?.getTicketDetail(changeBO.ticketId) {
+        presenter?.getTicketDetail(pageChangeBO.ticketId) {
             mBinding?.tvTitle?.text = it?.ticketName
         }
 
-        presenter?.getStepDetail(changeBO.ticketId!!) {
+        presenter?.getStepDetail(pageChangeBO.ticketId!!) {
             mStepList.forEach { step ->
                 step.stepDetail = it?.find { it.stepIndex == step.index }
             }
             mBinding?.rvStep?.adapter?.notifyDataSetChanged()
         }
 
-        presenter?.getMachineryDetail(changeBO.machineryId!!,
+        presenter?.getMachineryDetail(pageChangeBO.machineryId!!,
             {
                 mMachineryDetail = it
                 Glide.with(this).load(it?.machineryImg).into(mBinding?.ivMachinery!!)
@@ -122,6 +127,14 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
         }
     }
 
+    private fun handleStep(step: Int) {
+        when (step) {
+            3 -> {
+                changePage(PageChangeBO(1, mChangePage?.workstationId, mChangePage?.ticketId, mChangePage?.machineryId, mChangePage?.machineryName))
+            }
+         }
+    }
+
     override fun initPresenter(): StepPresenter {
         return StepPresenter()
     }

+ 1 - 1
app/src/main/java/com/grkj/iscs/view/fragment/TechnologySopFragment.kt

@@ -85,7 +85,7 @@ class TechnologySopFragment(val changePage: (PageChangeBO) -> Unit) :
         }
     }
 
-    fun refreshPage(pageChangeBO: PageChangeBO) {
+    override fun refreshPage(pageChangeBO: PageChangeBO) {
         LogUtil.i("$pageChangeBO")
         mBinding?.tvTitle?.text = pageChangeBO.machineryName
         presenter?.getMachineryPage(pageChangeBO.workstationId!!) {

+ 66 - 19
app/src/main/java/com/grkj/iscs/view/fragment/WorkerFragment.kt

@@ -4,7 +4,11 @@ import android.view.View
 import android.widget.ImageView
 import com.grkj.iscs.R
 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.user.UserListRespVO
 import com.grkj.iscs.view.base.BaseMvpFragment
 import com.grkj.iscs.view.iview.IWorkerView
 import com.grkj.iscs.view.presenter.WorkerPresenter
@@ -17,6 +21,12 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
 class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Unit) :
     BaseMvpFragment<IWorkerView, WorkerPresenter, FragmentWorkerBinding>() {
 
+    private val mColockerSelectedList = 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
+
     override val viewBinding: FragmentWorkerBinding
         get() = FragmentWorkerBinding.inflate(layoutInflater)
 
@@ -26,17 +36,11 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
             goBack()
         }
 
-        // TODO 测试数据
-        val list = mutableListOf<String>()
-        for (i in 0..25) {
-            list.add("$i")
-        }
-
         mBinding?.rvWorkerSelected?.adapter =
-            object : CommonAdapter<String>(requireActivity(), R.layout.item_rv_worker, list) {
-                override fun convert(holder: ViewHolder, t: String, position: Int) {
+            object : CommonAdapter<TicketDetailRespVO.UserVO>(requireActivity(), R.layout.item_rv_worker, mColockerSelectedList) {
+                override fun convert(holder: ViewHolder, data: TicketDetailRespVO.UserVO, position: Int) {
                     holder.getView<ImageView>(R.id.iv_photo).isSelected = true
-                    holder.setText(R.id.tv_name, t)
+                    holder.setText(R.id.tv_name, data.userName)
                 }
             }
 
@@ -53,30 +57,73 @@ class WorkerFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> U
         }
 
         mBinding?.rvLockerList?.adapter =
-            object : CommonAdapter<String>(requireActivity(), R.layout.item_rv_worker, list) {
-                override fun convert(holder: ViewHolder, t: String, position: Int) {
-                    holder.setText(R.id.tv_name, t)
+            object : CommonAdapter<UserListRespVO.Row>(requireActivity(), R.layout.item_rv_worker, mLockerList) {
+                override fun convert(holder: ViewHolder, user: UserListRespVO.Row, position: Int) {
+                    holder.setText(R.id.tv_name, user.nickName)
                 }
             }
 
         mBinding?.rvLockerInside?.adapter =
-            object : CommonAdapter<String>(requireActivity(), R.layout.item_rv_worker, list) {
-                override fun convert(holder: ViewHolder, t: String, position: Int) {
-                    holder.setText(R.id.tv_name, t)
+            object : CommonAdapter<UserListRespVO.Row>(requireActivity(), R.layout.item_rv_worker, mColockerInsideList) {
+                override fun convert(holder: ViewHolder, user: UserListRespVO.Row, position: Int) {
+                    holder.setText(R.id.tv_name, user.nickName)
                 }
             }
 
         mBinding?.rvLockerOutside?.adapter =
-            object : CommonAdapter<String>(requireActivity(), R.layout.item_rv_worker, list) {
-                override fun convert(holder: ViewHolder, t: String, position: Int) {
-                    holder.setText(R.id.tv_name, t)
+            object : CommonAdapter<UserListRespVO.Row>(requireActivity(), R.layout.item_rv_worker, mColockerOutsideList) {
+                override fun convert(holder: ViewHolder, user: UserListRespVO.Row, position: Int) {
+                    holder.setText(R.id.tv_name, user.nickName)
                 }
             }
     }
 
-    fun refreshPage(pageChangeBO: PageChangeBO) {
+    override fun refreshPage(pageChangeBO: PageChangeBO) {
+        mPageChangeBO = pageChangeBO
+        mBinding?.layoutLocker?.root?.visibility = View.INVISIBLE
+
         presenter?.getTicketDetail(pageChangeBO.ticketId) {
             mBinding?.tvTitle?.text = it?.ticketName
+
+            if (it?.jobTicketUserList.isNullOrEmpty()) {
+                return@getTicketDetail
+            }
+            mColockerSelectedList.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)
+                }
+            }
+            mBinding?.rvWorkerSelected?.adapter?.notifyDataSetChanged()
+        }
+
+        presenter?.getUserList(mPageChangeBO?.workstationId, 3, 9) {
+            println("上锁人 : $it")
+            mLockerList.clear()
+            if (!it?.rows.isNullOrEmpty()) {
+                mLockerList.addAll(it?.rows!!)
+            }
+            mBinding?.rvLockerList?.adapter?.notifyDataSetChanged()
+        }
+
+        presenter?.getUserList(mPageChangeBO?.workstationId, 4) {
+            println("共锁人 : $it")
+            mColockerInsideList.clear()
+            mColockerOutsideList.clear()
+            if (!it?.rows.isNullOrEmpty()) {
+                it?.rows?.forEach { user ->
+                    if (user.unitId == 9L) {
+                        mColockerInsideList.add(user)
+                    } else {
+                        mColockerOutsideList.add(user)
+                    }
+                }
+            }
+            mBinding?.rvLockerInside?.adapter?.notifyDataSetChanged()
+            mBinding?.rvLockerOutside?.adapter?.notifyDataSetChanged()
         }
     }
 

+ 18 - 0
app/src/main/java/com/grkj/iscs/view/presenter/WorkerPresenter.kt

@@ -2,6 +2,7 @@ package com.grkj.iscs.view.presenter
 
 import com.grkj.iscs.R
 import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
+import com.grkj.iscs.model.vo.user.UserListRespVO
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.NetApi
 import com.grkj.iscs.util.ToastUtils
@@ -23,4 +24,21 @@ class WorkerPresenter : BasePresenter<IWorkerView>() {
             }
         }
     }
+
+    /**
+     * @param unitId 9:玛氏内部
+     * @param roleId 3:上锁人  4:共锁人
+     */
+    fun getUserList(
+        workstationId: Long? = null,
+        roleId: Long? = null,
+        unitId: Long? = null,
+        callBack: (UserListRespVO?) -> Unit
+    ) {
+        NetApi.getUserList(1, 1000, workstationId, roleId, unitId) {
+            Executor.runOnMain {
+                callBack(it)
+            }
+        }
+    }
 }

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

@@ -47,8 +47,9 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:orientation="horizontal"
+            app:layout_constraintBottom_toBottomOf="@id/tv_title"
             app:layout_constraintRight_toRightOf="parent"
-            app:layout_constraintTop_toTopOf="parent">
+            app:layout_constraintTop_toTopOf="@id/tv_title">
 
             <ImageView
                 android:id="@+id/iv_worker"
@@ -75,6 +76,7 @@
             android:id="@+id/ll_selected"
             android:layout_width="0dp"
             android:layout_height="0dp"
+            android:layout_marginTop="@dimen/common_spacing_small"
             android:layout_marginRight="@dimen/common_spacing"
             android:background="@drawable/item_rv_technology_sop_bg_normal"
             android:gravity="center_horizontal"
@@ -200,8 +202,7 @@
                 android:id="@+id/ll_locker"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
-                android:orientation="vertical"
-                android:visibility="gone">
+                android:orientation="vertical">
 
                 <TextView
                     style="@style/CommonTextView"

+ 1 - 1
app/src/main/res/layout/item_rv_worker.xml

@@ -18,5 +18,5 @@
         android:id="@+id/tv_name"
         style="@style/CommonTextView"
         android:layout_marginTop="3dp"
-        android:textSize="@dimen/common_text_size_small"/>
+        android:textSize="6dp"/>
 </LinearLayout>