Explorar o código

添加获取工作票分页接口并适配界面;演示Demo改成钥匙mac可配置

Frankensteinly hai 1 ano
pai
achega
4d1075e3e0

+ 2 - 0
app/src/main/java/com/grkj/iscs/activity/CreateTicketActivity.kt

@@ -78,6 +78,8 @@ class CreateTicketActivity : BaseMvpActivity<ICreateTicketView, CreateTicketPres
             )
             presenter?.createTicket(ticketVO)
         }
+
+        mBinding?.exit?.setOnClickListener { finish() }
     }
 
     override fun showSopList(sopList: MutableList<SopPageRespVO.Record>) {

+ 3 - 2
app/src/main/java/com/grkj/iscs/activity/TicketListActivity.kt

@@ -15,7 +15,7 @@ class TicketListActivity : BaseActivity<ActivityTicketListBinding>() {
     override fun initView() {
         mBinding?.tvExit?.setOnClickListener { finish() }
 
-        mBinding?.rvTab?.setData(mutableListOf("待办工单", "已办工单"))
+        mBinding?.rvTab?.setData(mutableListOf("待办工单", "已办工单", "历史工单"))
 
         mBinding?.rvTab?.onItemClick = {
             mBinding?.vp?.currentItem = it
@@ -27,7 +27,8 @@ class TicketListActivity : BaseActivity<ActivityTicketListBinding>() {
             }
 
             override fun getItemCount(): Int {
-                return 2
+                // TODO 根据intent获取的值
+                return 3
             }
         }
 

+ 42 - 0
app/src/main/java/com/grkj/iscs/fragment/TicketListFragment.kt

@@ -1,18 +1,60 @@
 package com.grkj.iscs.fragment
 
+import com.grkj.iscs.R
 import com.grkj.iscs.base.BaseMvpFragment
 import com.grkj.iscs.databinding.FragmentTicketListBinding
 import com.grkj.iscs.iview.ITicketListView
+import com.grkj.iscs.model.vo.TicketPageRespVO
+import com.grkj.iscs.presentation.PresentationManager
 import com.grkj.iscs.presenter.TicketListPresenter
+import com.zhy.adapter.recyclerview.CommonAdapter
+import com.zhy.adapter.recyclerview.base.ViewHolder
 
 class TicketListFragment(var type: Int) :
     BaseMvpFragment<ITicketListView, TicketListPresenter, FragmentTicketListBinding>() {
 
+    var dataList = mutableListOf<TicketPageRespVO.Record>()
+
     override val viewBinding: FragmentTicketListBinding
         get() = FragmentTicketListBinding.inflate(layoutInflater)
 
     override fun initView() {
         mBinding?.tvFragment?.text = "Fragment $type"
+
+        mBinding?.loTitile?.root?.setBackgroundColor(resources.getColor(R.color.main_color))
+        mBinding?.loTitile?.tvNumber?.text = resources.getString(R.string.sop_number)
+        mBinding?.loTitile?.tvName?.text = resources.getString(R.string.sop_name)
+        mBinding?.loTitile?.tvType?.text = resources.getString(R.string.sop_type)
+        mBinding?.loTitile?.tvStartTime?.text = resources.getString(R.string.start_time)
+        mBinding?.loTitile?.tvEndTime?.text = resources.getString(R.string.end_time)
+
+        mBinding?.rvCurrent?.adapter = object : CommonAdapter<TicketPageRespVO.Record>(context, R.layout.item_rv_sop, dataList) {
+            override fun convert(holder: ViewHolder, ticket: TicketPageRespVO.Record?, position: Int) {
+                holder.setText(R.id.tv_number, "${ticket?.ticketCode}")
+                holder.setText(R.id.tv_name, ticket?.ticketName)
+//                holder.setText(R.id.tv_type, ticket?.sop?.type)
+                holder.setText(R.id.tv_start_time, ticket?.ticketStartTime)
+                holder.setText(R.id.tv_end_time, ticket?.ticketEndTime)
+//                holder.setText(
+//                    R.id.tv_action, when(ticket?.status) {
+//                    0 -> "待上锁人上锁"
+//                    1 -> "部分共锁人上锁"
+//                    2 -> "待共锁人解锁"
+//                    3 -> "部分共锁人解锁"
+//                    4 -> "待上锁人解锁"
+//                    5 -> "待归还设备"
+//                    6 -> "已完成"
+//                    else -> ""
+//                })
+            }
+        }
+
+        presenter?.getTicketPage {
+            if (!it?.records.isNullOrEmpty()) {
+                dataList.addAll(it?.records!!)
+                mBinding?.rvCurrent?.adapter?.notifyDataSetChanged()
+            }
+        }
     }
 
     override fun initPresenter(): TicketListPresenter {

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

@@ -46,4 +46,9 @@ object UrlConsts {
      * 创建工作票
      */
     const val CREATE_TICKET = "/iscs/ticket/insertIsJobTicket"
+
+    /**
+     * 查询作业票-分页
+     */
+    const val PAGE_TICKET = "/iscs/ticket/getIsJobTicketPage"
 }

+ 34 - 0
app/src/main/java/com/grkj/iscs/model/vo/TicketPageRespVO.kt

@@ -0,0 +1,34 @@
+package com.grkj.iscs.model.vo
+
+data class TicketPageRespVO(
+    val current: Int,
+    val optimizeCountSql: Boolean,
+    val orders: List<Any>,
+    val pages: Int,
+    val records: MutableList<Record>,
+    val searchCount: Boolean,
+    val size: Int,
+    val total: Int
+) {
+    data class Record(
+        val createBy: String,
+        val createTime: String,
+        val delFlag: String,
+        val pointCount: Int,
+        val sopId: String,
+        val ticketCode: String,
+        val ticketContent: String,
+        val ticketEndTime: String,
+        val ticketId: String,
+        val ticketName: String,
+        val ticketStartTime: String,
+        val ticketStatus: String,
+        val ticketType: String,
+        val updateBy: String,
+        val updateTime: String,
+        val workareaId: String,
+        val workareaName: String,
+        val workshopId: String,
+        val workshopName: String
+    )
+}

+ 5 - 0
app/src/main/java/com/grkj/iscs/presentation/PresentationLoginActivity.kt

@@ -39,6 +39,11 @@ class PresentationLoginActivity : BaseActivity<ActivityPresentationLoginBinding>
         println("Mac Json : $str")
         PresentationManager.cardList =
             Gson().fromJson(str, object : TypeToken<List<PresentationManager.PCardInfoBean>>() {}.type)
+        if (PresentationManager.cardList.isEmpty()) {
+            ToastUtils.tip("配置列表为空")
+            return
+        }
+        PresentationManager.keyMac = PresentationManager.cardList.first().keyMac
         val lockerList = PresentationManager.cardList.filter { it.isLocker }
         for (i in lockerList.indices) {
             PresentationManager.mLockerList.add(PresentationManager.PLockerBean("上锁人${i + 1}", lockerList[i].rfid, 0))

+ 3 - 3
app/src/main/java/com/grkj/iscs/presentation/PresentationManager.kt

@@ -14,7 +14,7 @@ object PresentationManager {
 //    val cardList = mutableListOf("267747D5", "34A347D5", "464947D5")
 
 
-    val keyMac = "64:E8:33:47:59:7A"
+    var keyMac = "64:E8:33:47:59:7A"
 //        val keyMac = "64:E8:33:47:59:42"
 
     var cardList: List<PCardInfoBean> = mutableListOf()
@@ -59,9 +59,9 @@ object PresentationManager {
     var workTicketList = mutableListOf<PServerTicket>()
 
     // 卡片信息
-    data class PCardInfoBean(val rfid: String, val isLocker: Boolean) {
+    data class PCardInfoBean(val rfid: String, val isLocker: Boolean, val keyMac: String) {
         override fun toString(): String {
-            return "PCardInfoBean(rfid='$rfid', isLocker=$isLocker)"
+            return "PCardInfoBean(rfid='$rfid', isLocker=$isLocker, keyMac='$keyMac')"
         }
     }
     // 上锁人

+ 13 - 1
app/src/main/java/com/grkj/iscs/presenter/TicketListPresenter.kt

@@ -2,5 +2,17 @@ package com.grkj.iscs.presenter
 
 import com.grkj.iscs.base.BasePresenter
 import com.grkj.iscs.iview.ITicketListView
+import com.grkj.iscs.model.vo.TicketPageRespVO
+import com.grkj.iscs.util.Executor
+import com.grkj.iscs.util.NetApi
 
-class TicketListPresenter : BasePresenter<ITicketListView>() {}
+class TicketListPresenter : BasePresenter<ITicketListView>() {
+
+    fun getTicketPage(callBack: (TicketPageRespVO?) -> Unit) {
+        NetApi.getTicketPage(0, 10) {
+            Executor.runOnMain {
+                callBack.invoke(it)
+            }
+        }
+    }
+}

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

@@ -6,6 +6,7 @@ import com.grkj.iscs.model.UrlConsts
 import com.grkj.iscs.model.vo.DeptListRespVO
 import com.grkj.iscs.model.vo.SopInfoRespVO
 import com.grkj.iscs.model.vo.SopPageRespVO
+import com.grkj.iscs.model.vo.TicketPageRespVO
 import com.grkj.iscs.model.vo.TicketTypeRespVO
 import com.grkj.iscs.model.vo.UserListRespVO
 
@@ -150,4 +151,23 @@ object NetApi {
             }, isGet = false, isAuth = true
         )
     }
+
+    /**
+     * 获取工作票分页
+     */
+    fun getTicketPage(pageNum: Int, pageSize: Int, callBack: (TicketPageRespVO?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.PAGE_TICKET,
+            false,
+            mapOf(
+                "pageNum" to pageNum,
+                "pageSize" to pageSize
+            ),
+            { res, errMsg, codeInt ->
+                res?.let {
+                    callBack.invoke(getRefBean(it))
+                }
+            }, isGet = true, isAuth = true
+        )
+    }
 }

+ 2 - 1
app/src/main/java/com/grkj/iscs/widget/RvTab.kt

@@ -45,8 +45,9 @@ class RvTab(context: Context, attrs: AttributeSet) : ConstraintLayout(context, a
      * @param index 下标
      */
     fun setSelected(index: Int) {
+        rvTitle.adapter?.notifyItemChanged(mCurrentIdx)
         mCurrentIdx = index
-        rvTitle.adapter?.notifyDataSetChanged()
+        rvTitle.adapter?.notifyItemChanged(mCurrentIdx)
     }
 
     /**

+ 25 - 10
app/src/main/res/layout/activity_create_ticket.xml

@@ -184,15 +184,30 @@
                 android:textSize="@dimen/common_text_size" />
         </LinearLayout>
 
-        <Button
-            android:id="@+id/confirm"
-            android:layout_width="200dp"
-            android:layout_height="50dp"
-            android:layout_gravity="center_horizontal"
-            android:layout_margin="5dp"
-            android:minWidth="0dp"
-            android:minHeight="0dp"
-            android:text="确定"
-            android:textSize="10sp" />
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:gravity="center">
+            <Button
+                android:id="@+id/confirm"
+                android:layout_width="200dp"
+                android:layout_height="50dp"
+                android:layout_margin="5dp"
+                android:minWidth="0dp"
+                android:minHeight="0dp"
+                android:text="@string/confirm"
+                android:textSize="10sp" />
+
+            <Button
+                android:id="@+id/exit"
+                android:layout_width="200dp"
+                android:layout_height="50dp"
+                android:layout_margin="5dp"
+                android:minWidth="0dp"
+                android:minHeight="0dp"
+                android:text="@string/exit"
+                android:textSize="10sp" />
+        </LinearLayout>
     </LinearLayout>
 </androidx.core.widget.NestedScrollView>

+ 18 - 4
app/src/main/res/layout/fragment_ticket_list.xml

@@ -1,13 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:gravity="center_horizontal"
     tools:context=".fragment.TicketListFragment">
 
     <TextView
         android:id="@+id/tv_fragment"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
 
-</RelativeLayout>
+    <include
+        android:id="@+id/lo_titile"
+        layout="@layout/item_rv_sop" />
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rv_current"
+        style="@style/CommonRecyclerView"
+        android:layout_height="wrap_content"
+        android:background="@color/main_color"
+        tools:itemCount="5"
+        tools:listitem="@layout/item_rv_sop" />
+
+</LinearLayout>

+ 3 - 0
app/src/main/res/values/dimens.xml

@@ -4,6 +4,9 @@
     <dimen name="common_font_txt_size_page_title">14dp</dimen>
     <dimen name="common_radius">1dp</dimen>
 
+    <dimen name="common_btn_width">150dp</dimen>
+    <dimen name="common_btn_height">50dp</dimen>
+
     <dimen name="title_bar_height">50dp</dimen>
     <dimen name="title_bar_padding">7dp</dimen>
     <dimen name="title_bar_title_text_size">20sp</dimen>

+ 8 - 0
app/src/main/res/values/styles.xml

@@ -8,6 +8,14 @@
         <item name="android:textSize">@dimen/common_text_size</item>
     </style>
 
+    <style name="CommonBtn">
+        <item name="android:layout_width">@dimen/common_btn_width</item>
+        <item name="android:layout_height">@dimen/common_btn_height</item>
+        <item name="android:gravity">center</item>
+        <item name="android:textColor">@color/white</item>
+        <item name="android:textSize">@dimen/common_text_size</item>
+    </style>
+
     <style name="CommonRecyclerView">
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">match_parent</item>