Sfoglia il codice sorgente

接入作业票详情监控接口;优化作业票详情监控界面显示

Frankensteinly 9 mesi fa
parent
commit
012b911601

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

@@ -166,4 +166,9 @@ object UrlConsts {
      * 新增人员
      */
     const val UPDATE_TICKET_USER = "/iscs/step/addJobUsers"
+
+    /**
+     * 作业票详情监控
+     */
+    const val TICKET_DETAIL_MONITOR = "/iscs/ticket/selectMonitorJobTicketDetail"
 }

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

@@ -0,0 +1,60 @@
+package com.grkj.iscs.model.vo.ticket
+
+data class TicketDetailMonitorRespVO(
+    val jobTicket: IsJobTicket?,
+    val lockKeyName: String?,
+    val lockTime: String?,
+    val colockKeyName: String?,
+    val colockTime: String?,
+    val lockUserList: List<IsJobTicketUser>?,
+    val colockUserList: List<IsJobTicketUser>?,
+    val ticketPointsList: List<IsJobTicketPointsVO>?
+) {
+    data class IsJobTicket(
+        val ticketId: Long?,
+        val ticketCode: String?,
+        val ticketName: String?,
+        val workshopId: Long?,
+        val workareaId: Long?,
+        val sopId: Long?,
+        val ticketType: String?,
+        val ticketContent: String?,
+        val ticketStatus: String?,
+        val ticketStartTime: String?,
+        val ticketEndTime: String?,
+        val delFlag: String?,
+        val workstationId: Long?,
+        val machineryId: Long?
+    )
+
+    data class IsJobTicketUser(
+        val recordId: Long?,
+        val ticketId: Long?,
+        val userId: Long?,
+        val userName: String?,
+        val userType: String?,
+        val userRole: String?,
+        val jobStatus: Int?,
+        val delFlag: String?
+    )
+
+    data class IsJobTicketPointsVO(
+        val recordId: Long?,
+        val ticketId: Long?,
+        val workshopId: Long?,
+        val workareaId: Long?,
+        val pointId: Long?,
+        val pointName: String?,
+        val pointStatus: String?,
+        val delFlag: String?,
+        val lockId: Long?,
+        val lockName: String?,
+        val lockedByKeyId: Long?,
+        val unlockedByKeyId: Long?,
+        val lockTime: String?,
+        val unlockTime: String?,
+        val prePointId: Long?,
+        val locksetName: String?,
+        val remark: String?
+    )
+}

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

@@ -16,6 +16,7 @@ import com.grkj.iscs.model.vo.sop.SopPageRespVO
 import com.grkj.iscs.model.vo.ticket.LockPointUpdateReqVO
 import com.grkj.iscs.model.vo.ticket.LotoMapRespVO
 import com.grkj.iscs.model.vo.ticket.StepDetailRespVO
+import com.grkj.iscs.model.vo.ticket.TicketDetailMonitorRespVO
 import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
 import com.grkj.iscs.model.vo.ticket.TicketEquipDetailRespVO
 import com.grkj.iscs.model.vo.ticket.TicketPageRespVO
@@ -638,4 +639,22 @@ object NetApi {
             }, isGet = false, isAuth = true
         )
     }
+
+    /**
+     * 作业票详情监控
+     */
+    fun getTicketDetailMonitor(ticketId: Long, callBack: (TicketDetailMonitorRespVO?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.TICKET_DETAIL_MONITOR,
+            false,
+            mapOf(
+                "ticketId" to ticketId
+            ),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(getRefBean(it))
+                }
+            }, isGet = true, isAuth = true
+        )
+    }
 }

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

@@ -29,7 +29,7 @@ class JobExecutionFragment(val changePageCallback: (PageChangeBO) -> Unit) :
             Menu(fragment = WorkerFragment({ refreshPage(mPageChangeBO!!) }) {
                 changePage(it)
             }),
-            Menu(fragment = JobProgressFragment())
+            Menu(fragment = JobProgressFragment { refreshPage(mPageChangeBO!!) })
         )
 
         mBinding?.vp?.isUserInputEnabled = false

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

@@ -1,8 +1,11 @@
 package com.grkj.iscs.view.fragment
 
+import android.view.View
+import android.widget.LinearLayout
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.FragmentJobProgressBinding
 import com.grkj.iscs.model.bo.PageChangeBO
+import com.grkj.iscs.model.vo.ticket.TicketDetailMonitorRespVO
 import com.grkj.iscs.view.base.BaseMvpFragment
 import com.grkj.iscs.view.iview.IJobProgressVIew
 import com.grkj.iscs.view.presenter.JobProgressPresenter
@@ -12,31 +15,64 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
 /**
  * 作业票工作进度页
  */
-class JobProgressFragment : BaseMvpFragment<IJobProgressVIew, JobProgressPresenter, FragmentJobProgressBinding>() {
+class JobProgressFragment(val goBack: () -> Unit) :
+    BaseMvpFragment<IJobProgressVIew, JobProgressPresenter, FragmentJobProgressBinding>() {
+
+    private val mPointList = mutableListOf<TicketDetailMonitorRespVO.IsJobTicketPointsVO>()
+    private val mUserList = mutableListOf<TicketDetailMonitorRespVO.IsJobTicketUser>()
 
     override val viewBinding: FragmentJobProgressBinding
         get() = FragmentJobProgressBinding.inflate(layoutInflater)
 
     override fun initView() {
-        // TODO 测试数据
-        val list = mutableListOf<String>()
-        for (i in 0..10) {
-            list.add("$i")
-        }
-        mBinding?.rvPoint?.adapter = object : CommonAdapter<String>(requireActivity(), R.layout.item_rv_point, list) {
-            override fun convert(holder: ViewHolder, t: String, position: Int) {
+        mBinding?.cbBack?.setOnClickListener { goBack() }
+
+        mBinding?.rvPoint?.adapter =
+            object : CommonAdapter<TicketDetailMonitorRespVO.IsJobTicketPointsVO>(requireActivity(), R.layout.item_rv_point, mPointList) {
+                override fun convert(holder: ViewHolder, point: TicketDetailMonitorRespVO.IsJobTicketPointsVO, position: Int) {
+                    holder.setText(R.id.tv_name, point.pointName)
+                    holder.setText(R.id.tv_function, point.remark)
 
-            }
-        }
 
-        mBinding?.rvColocker?.adapter = object : CommonAdapter<String>(requireActivity(), R.layout.item_rv_worker_status, list) {
-            override fun convert(holder: ViewHolder, t: String, position: Int) {
+                    holder.setVisible(R.id.ll_lock_status, true)
+                    holder.getView<LinearLayout>(R.id.ll_lock_status).isSelected = false
+                    holder.setText(R.id.tv_lock_status, getString(R.string.unlocked))
 
+
+                    when(point.pointStatus) {
+                        "1" -> {
+                            holder.setVisible(R.id.ll_lock_status, true)
+                            holder.setText(R.id.tv_lock_status, getString(R.string.has_locked))
+                        }
+                        "2" -> {
+                            holder.setVisible(R.id.ll_lock_status, true)
+                            holder.getView<LinearLayout>(R.id.ll_lock_status).isSelected = true
+                            holder.setText(R.id.tv_lock_status, getString(R.string.unlocked))
+                        }
+                    }
+                }
+            }
+
+        mBinding?.rvColocker?.adapter =
+            object : CommonAdapter<TicketDetailMonitorRespVO.IsJobTicketUser>(requireActivity(), R.layout.item_rv_worker_status, mUserList) {
+                override fun convert(holder: ViewHolder, user: TicketDetailMonitorRespVO.IsJobTicketUser, position: Int) {
+                    holder.setText(R.id.tv_name, user.userName)
+                    holder.setVisible(R.id.iv_ready_to_lock, user.jobStatus!! >= 3)
+                    holder.setVisible(R.id.iv_locked, user.jobStatus >= 4)
+                    holder.setVisible(R.id.iv_unlocked, user.jobStatus >= 5)
+                }
             }
-        }
     }
 
     override fun refreshPage(pageChangeBO: PageChangeBO) {
+        presenter?.getTicketDetailMonitor(pageChangeBO.ticketId!!) {
+            mPointList.clear()
+            mUserList.clear()
+            mPointList.addAll(it?.ticketPointsList!!)
+            mUserList.addAll(it.colockUserList!!)
+            mBinding?.rvPoint?.adapter?.notifyDataSetChanged()
+            mBinding?.rvColocker?.adapter?.notifyDataSetChanged()
+        }
         presenter?.getTicketDetail(pageChangeBO.ticketId) {
             mBinding?.tvTitle?.text = it?.ticketName
         }

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

@@ -94,7 +94,8 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
         }
 
         mBinding?.llDetail?.setOnClickListener {
-            changePage(mChangePage!!)
+            changePage(PageChangeBO(2, mChangePage?.workstationId, mChangePage?.ticketId,
+                mChangePage?.machineryId, mChangePage?.machineryName))
         }
     }
 

+ 9 - 0
app/src/main/java/com/grkj/iscs/view/presenter/JobProgressPresenter.kt

@@ -2,6 +2,7 @@ package com.grkj.iscs.view.presenter
 
 import com.grkj.iscs.R
 import com.grkj.iscs.model.vo.ticket.StepDetailRespVO
+import com.grkj.iscs.model.vo.ticket.TicketDetailMonitorRespVO
 import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.NetApi
@@ -32,4 +33,12 @@ class JobProgressPresenter : BasePresenter<IJobProgressVIew>() {
             }
         }
     }
+
+    fun getTicketDetailMonitor(ticketId: Long, callBack: (TicketDetailMonitorRespVO?) -> Unit) {
+        NetApi.getTicketDetailMonitor(ticketId) {
+            Executor.runOnMain {
+                callBack.invoke(it)
+            }
+        }
+    }
 }

+ 9 - 0
app/src/main/res/layout/fragment_job_progress.xml

@@ -75,6 +75,7 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_below="@id/tv_title"
+            android:layout_marginTop="@dimen/common_spacing_small"
             android:orientation="horizontal">
 
             <LinearLayout
@@ -94,22 +95,26 @@
 
                     <TextView
                         style="@style/CommonTextView"
+                        android:layout_width="0dp"
                         android:layout_weight="1"
                         android:paddingVertical="@dimen/common_spacing_small"
                         android:text="@string/isolation_point" />
 
                     <TextView
                         style="@style/CommonTextView"
+                        android:layout_width="0dp"
                         android:layout_weight="1"
                         android:text="@string/effect" />
 
                     <TextView
                         style="@style/CommonTextView"
+                        android:layout_width="0dp"
                         android:layout_weight="1"
                         android:text="@string/switch_status" />
 
                     <TextView
                         style="@style/CommonTextView"
+                        android:layout_width="0dp"
                         android:layout_weight="1"
                         android:text="@string/lock_status" />
                 </LinearLayout>
@@ -136,22 +141,26 @@
 
                     <TextView
                         style="@style/CommonTextView"
+                        android:layout_width="0dp"
                         android:layout_weight="1"
                         android:paddingVertical="@dimen/common_spacing_small"
                         android:text="@string/colocker" />
 
                     <TextView
                         style="@style/CommonTextView"
+                        android:layout_width="0dp"
                         android:layout_weight="1"
                         android:text="@string/ready_to_colock" />
 
                     <TextView
                         style="@style/CommonTextView"
+                        android:layout_width="0dp"
                         android:layout_weight="1"
                         android:text="@string/colocked" />
 
                     <TextView
                         style="@style/CommonTextView"
+                        android:layout_width="0dp"
                         android:layout_weight="1"
                         android:text="@string/unlocked" />
                 </LinearLayout>

+ 11 - 5
app/src/main/res/layout/item_rv_point.xml

@@ -8,11 +8,13 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:gravity="center_vertical"
         android:orientation="horizontal">
 
         <TextView
             android:id="@+id/tv_name"
             style="@style/CommonTextView"
+            android:layout_width="0dp"
             android:layout_weight="1" />
 
         <View
@@ -24,6 +26,7 @@
         <TextView
             android:id="@+id/tv_function"
             style="@style/CommonTextView"
+            android:layout_width="0dp"
             android:layout_weight="1" />
 
         <View
@@ -48,24 +51,27 @@
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
-            android:paddingHorizontal="@dimen/common_spacing"
-            android:paddingVertical="@dimen/common_spacing_small">
+            android:paddingHorizontal="@dimen/common_spacing_small">
 
             <LinearLayout
                 android:id="@+id/ll_lock_status"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:background="@drawable/lock_status_bg_selector"
-                android:orientation="horizontal">
+                android:gravity="center"
+                android:orientation="horizontal"
+                android:layout_marginVertical="@dimen/common_spacing_small"
+                android:visibility="invisible">
 
                 <ImageView
-                    android:layout_width="@dimen/common_icon_size_small"
-                    android:layout_height="@dimen/common_icon_size_small"
+                    android:layout_width="8dp"
+                    android:layout_height="8dp"
                     android:src="@drawable/lock_status_icon_selector" />
 
                 <TextView
                     android:id="@+id/tv_lock_status"
                     style="@style/CommonTextView"
+                    android:layout_marginLeft="@dimen/common_spacing_small"
                     android:textSize="@dimen/common_text_size_small" />
             </LinearLayout>
         </RelativeLayout>

+ 14 - 5
app/src/main/res/layout/item_rv_worker_status.xml

@@ -8,7 +8,7 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginVertical="@dimen/common_spacing_small"
+        android:gravity="center_vertical"
         android:orientation="horizontal">
 
         <RelativeLayout
@@ -20,7 +20,9 @@
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:gravity="center_vertical"
-                android:orientation="horizontal">
+                android:orientation="horizontal"
+                android:paddingVertical="@dimen/common_spacing_smallest"
+                android:paddingLeft="@dimen/common_spacing_small">
 
                 <ImageView
                     android:layout_width="@dimen/common_icon_size"
@@ -30,6 +32,7 @@
                 <TextView
                     android:id="@+id/tv_name"
                     style="@style/CommonTextView"
+                    android:layout_marginLeft="@dimen/common_spacing_small"
                     android:textSize="@dimen/common_text_size_small" />
             </LinearLayout>
         </RelativeLayout>
@@ -46,10 +49,12 @@
             android:layout_weight="1">
 
             <ImageView
+                android:id="@+id/iv_ready_to_lock"
                 android:layout_width="@dimen/common_icon_size"
                 android:layout_height="@dimen/common_icon_size"
                 android:layout_centerInParent="true"
-                android:src="@drawable/worker_status_bg_selector" />
+                android:src="@mipmap/ok"
+                android:visibility="invisible" />
         </RelativeLayout>
 
         <View
@@ -64,10 +69,12 @@
             android:layout_weight="1">
 
             <ImageView
+                android:id="@+id/iv_locked"
                 android:layout_width="@dimen/common_icon_size"
                 android:layout_height="@dimen/common_icon_size"
                 android:layout_centerInParent="true"
-                android:src="@drawable/worker_status_bg_selector" />
+                android:src="@mipmap/ok"
+                android:visibility="invisible" />
         </RelativeLayout>
 
         <View
@@ -82,10 +89,12 @@
             android:layout_weight="1">
 
             <ImageView
+                android:id="@+id/iv_unlocked"
                 android:layout_width="@dimen/common_icon_size"
                 android:layout_height="@dimen/common_icon_size"
                 android:layout_centerInParent="true"
-                android:src="@drawable/worker_status_bg_selector" />
+                android:src="@mipmap/ok"
+                android:visibility="invisible" />
         </RelativeLayout>
     </LinearLayout>
 

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

@@ -160,4 +160,5 @@
     <string name="please_select_sop_type">请选择SOP类型</string>
     <string name="confirm">确定</string>
     <string name="please_select_locker">请选择上锁人</string>
+    <string name="has_locked">已上锁</string>
 </resources>