浏览代码

物资更换页、手动更换页接入接口,页面部分适配

Frankensteinly 8 月之前
父节点
当前提交
b70c144b76

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

@@ -254,4 +254,9 @@ object UrlConsts {
      * 提交物资检查记录
      */
     const val INSERT_CHECK_RECORD = "/iscs/hardware/material-api/insertCheckRecord"
+
+    /**
+     * 获取物资柜手动更换物资类型和异常数量和物资信息
+     */
+    const val MANUAL_REPLACEMENT_LIST = "/iscs/hardware/material-api/selectExMaterialTypeById"
 }

+ 69 - 0
app/src/main/java/com/grkj/iscs_mc/model/vo/replacement/ManualReplacementListRespVO.kt

@@ -0,0 +1,69 @@
+package com.grkj.iscs_mc.model.vo.replacement
+
+data class ManualReplacementListRespVO(
+    val materialsTypeId: Long?,
+
+    val materialsTypeName: String?,
+
+    val materialsTypeIcon: String?,
+
+    val materialsTypePicture: String?,
+
+    val exNumber: Int?,
+
+    val materials: List<MaterialsPageVO>?
+) {
+    data class MaterialsPageVO(
+        val materialsId: Long?,
+
+        val materialsCode: String?,
+
+        val materialsName: String?,
+
+        val materialsTypeId: Long?,
+
+        val materialsTypeName: String?,
+
+        val workareaId: Long?,
+
+        val materialsCabinetId: Long?,
+
+        val cabinetName: String?,
+
+        val serviceLife: String?,
+
+        val availableLife: String?,
+
+        val serviceTimes: Long?,
+
+        val availableTimes: Long?,
+
+        val startTime: String?,
+
+        val delFlag: String?,
+
+        val loanState: String?,
+
+        val materialsRfid: String?,
+
+        val supplier: String?,
+
+        val expirationDate: String?,
+
+        val materialsTypeIcon: String?,
+
+        val materialsTypePicture: String?,
+
+        val properties: String?,
+
+        val propertiesValueId: String?,
+
+        val propertiesValue: String?,
+
+        val propertiesPropertyId: String?,
+
+        val propertiesProperty: String?,
+
+        val status: String?
+    )
+}

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

@@ -17,6 +17,7 @@ import com.grkj.iscs_mc.model.vo.material.MaterialBorrowReturnReqVO
 import com.grkj.iscs_mc.model.vo.material.MaterialDetailRespVO
 import com.grkj.iscs_mc.model.vo.material.MaterialInstructionListRespVO
 import com.grkj.iscs_mc.model.vo.material.MaterialListRespVO
+import com.grkj.iscs_mc.model.vo.replacement.ManualReplacementListRespVO
 import com.grkj.iscs_mc.model.vo.sop.SopInfoRespVO
 import com.grkj.iscs_mc.model.vo.sop.SopPageRespVO
 import com.grkj.iscs_mc.model.vo.ticket.LockPointUpdateReqVO
@@ -903,4 +904,22 @@ object NetApi {
             }, isGet = false, isAuth = true
         )
     }
+
+    /**
+     * 获取物资柜手动更换物资类型和异常数量和物资信息
+     */
+    fun getManualReplacementList(cabinetCode: String, callBack: (MutableList<ManualReplacementListRespVO>?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.MANUAL_REPLACEMENT_LIST,
+            false,
+            mapOf(
+                "cabinetCode" to cabinetCode
+            ),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(getRefBean(it))
+                }
+            }, isGet = true, isAuth = true
+        )
+    }
 }

+ 46 - 6
app/src/main/java/com/grkj/iscs_mc/view/fragment/MaterialManualReplacementFragment.kt

@@ -1,11 +1,14 @@
 package com.grkj.iscs_mc.view.fragment
 
+import android.view.View
 import com.grkj.iscs_mc.R
 import com.grkj.iscs_mc.databinding.FragmentMaterialManualReplacementBinding
 import com.grkj.iscs_mc.extentions.navigateUp
+import com.grkj.iscs_mc.model.vo.replacement.ManualReplacementListRespVO
 import com.grkj.iscs_mc.view.base.BaseMvpFragment
 import com.grkj.iscs_mc.view.iview.IMaterialManualReplacementView
 import com.grkj.iscs_mc.view.presenter.MaterialManualReplacementPresenter
+import com.grkj.iscs_mc.view.widget.ExpandableTabLayout
 import com.zhy.adapter.recyclerview.CommonAdapter
 import com.zhy.adapter.recyclerview.base.ViewHolder
 
@@ -15,20 +18,57 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
 class MaterialManualReplacementFragment :
     BaseMvpFragment<IMaterialManualReplacementView, MaterialManualReplacementPresenter, FragmentMaterialManualReplacementBinding>() {
 
+    private val mTypeList = mutableListOf<ManualReplacementListRespVO>()
+    private val mDetailList = mutableListOf<ManualReplacementListRespVO.MaterialsPageVO>()
+
     override val viewBinding: FragmentMaterialManualReplacementBinding
         get() = FragmentMaterialManualReplacementBinding.inflate(layoutInflater)
 
     override fun initView() {
         mBinding?.cbBack?.setOnClickListener { navigateUp() }
 
-        mBinding?.rvReplacement?.adapter = object : CommonAdapter<String>(
-            requireContext(),
-            R.layout.item_rv_manual_replacement,
-            mutableListOf()
-        ) {
-            override fun convert(holder: ViewHolder, t: String, position: Int) {
+        mBinding?.rvReplacement?.adapter =
+            object : CommonAdapter<ManualReplacementListRespVO.MaterialsPageVO>(
+                requireContext(),
+                R.layout.item_rv_manual_replacement,
+                mDetailList
+            ) {
+                override fun convert(
+                    holder: ViewHolder,
+                    vo: ManualReplacementListRespVO.MaterialsPageVO,
+                    position: Int
+                ) {
+
+                }
+            }
+
+        mBinding?.etlType?.setOnSelectListener(object : ExpandableTabLayout.OnSelectListener {
+            override fun onSelect(position: Int) {
+                mDetailList.clear()
+                mTypeList[position].materials?.let {
+                    mDetailList.addAll(it)
+                }
+                mBinding?.rvReplacement?.adapter?.notifyDataSetChanged()
+            }
+        })
+
+        presenter?.getManualReplacementList {
+            it?.let {
+                mTypeList.addAll(it)
+            }
+            val list = mutableListOf<ExpandableTabLayout.ItemData>()
+            it?.forEach { itData ->
+                list.add(ExpandableTabLayout.ItemData("${itData.materialsTypeName}(${itData.exNumber})", iconUrl = itData.materialsTypeIcon))
+            }
+            mBinding?.etlType?.setData(list)
 
+            mDetailList.clear()
+            if (mTypeList.isNotEmpty()) {
+                mTypeList[0].materials?.let {
+                    mDetailList.addAll(it)
+                }
             }
+            mBinding?.rvReplacement?.adapter?.notifyDataSetChanged()
         }
     }
 

+ 51 - 4
app/src/main/java/com/grkj/iscs_mc/view/fragment/MaterialReplacementFragment.kt

@@ -1,12 +1,15 @@
 package com.grkj.iscs_mc.view.fragment
 
+import android.view.View
 import com.grkj.iscs_mc.R
 import com.grkj.iscs_mc.databinding.FragmentMaterialReplacementBinding
 import com.grkj.iscs_mc.extentions.navigateTo
 import com.grkj.iscs_mc.extentions.navigateUp
+import com.grkj.iscs_mc.model.vo.replacement.ManualReplacementListRespVO
 import com.grkj.iscs_mc.view.base.BaseMvpFragment
 import com.grkj.iscs_mc.view.iview.IMaterialReplacementView
 import com.grkj.iscs_mc.view.presenter.MaterialReplacementPresenter
+import com.grkj.iscs_mc.view.widget.ExpandableTabLayout
 import com.zhy.adapter.recyclerview.CommonAdapter
 import com.zhy.adapter.recyclerview.base.ViewHolder
 
@@ -16,20 +19,64 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
 class MaterialReplacementFragment :
     BaseMvpFragment<IMaterialReplacementView, MaterialReplacementPresenter, FragmentMaterialReplacementBinding>() {
 
+    private val mTypeList = mutableListOf<ManualReplacementListRespVO>()
+    private val mDetailList = mutableListOf<ManualReplacementListRespVO.MaterialsPageVO>()
+
     override val viewBinding: FragmentMaterialReplacementBinding
         get() = FragmentMaterialReplacementBinding.inflate(layoutInflater)
 
     override fun initView() {
         mBinding?.cbBack?.setOnClickListener { navigateUp() }
 
-        mBinding?.rvMaterial?.adapter = object :
-            CommonAdapter<String>(requireContext(), R.layout.item_rv_replacement, mutableListOf()) {
-            override fun convert(holder: ViewHolder, t: String, position: Int) {
+        mBinding?.rvMaterial?.adapter =
+            object : CommonAdapter<ManualReplacementListRespVO.MaterialsPageVO>(
+                requireContext(),
+                R.layout.item_rv_replacement,
+                mDetailList
+            ) {
+                override fun convert(
+                    holder: ViewHolder,
+                    vo: ManualReplacementListRespVO.MaterialsPageVO,
+                    position: Int
+                ) {
+                    holder.setText(R.id.tv_name, vo.materialsName?:"")
+                }
+            }
 
+        mBinding?.etlType?.setOnSelectListener(object : ExpandableTabLayout.OnSelectListener {
+            override fun onSelect(position: Int) {
+                mDetailList.clear()
+                mTypeList[position].materials?.let {
+                    mDetailList.addAll(it)
+                }
+                mBinding?.tvTip?.visibility = if (mDetailList.isEmpty()) View.VISIBLE else View.GONE
+                mBinding?.rvMaterial?.adapter?.notifyDataSetChanged()
             }
+        })
+
+        mBinding?.cbManualReplace?.setOnClickListener {
+            navigateTo(MaterialReplacementFragmentDirections.actionReplacementFragmentToManualReplacementFragment())
         }
 
-        navigateTo(MaterialReplacementFragmentDirections.actionReplacementFragmentToManualReplacementFragment())
+        presenter?.getManualReplacementList {
+            it?.let {
+                mTypeList.addAll(it)
+            }
+            val list = mutableListOf<ExpandableTabLayout.ItemData>()
+            it?.forEach { itData ->
+                list.add(ExpandableTabLayout.ItemData("${itData.materialsTypeName}(${itData.exNumber})", iconUrl = itData.materialsTypeIcon))
+            }
+            mBinding?.etlType?.setData(list)
+
+            mDetailList.clear()
+            if (mTypeList.isNotEmpty()) {
+                mTypeList[0].materials?.let {
+                    mDetailList.addAll(it)
+                }
+                mBinding?.tvTip?.visibility = if (mDetailList.isEmpty()) View.VISIBLE else View.GONE
+            }
+            mBinding?.rvMaterial?.adapter?.notifyDataSetChanged()
+        }
     }
 
     override fun initPresenter(): MaterialReplacementPresenter {

+ 12 - 0
app/src/main/java/com/grkj/iscs_mc/view/presenter/MaterialManualReplacementPresenter.kt

@@ -1,7 +1,19 @@
 package com.grkj.iscs_mc.view.presenter
 
+import com.grkj.iscs_mc.extentions.serialNo
+import com.grkj.iscs_mc.model.vo.replacement.ManualReplacementListRespVO
+import com.grkj.iscs_mc.util.Executor
+import com.grkj.iscs_mc.util.NetApi
 import com.grkj.iscs_mc.view.base.BasePresenter
 import com.grkj.iscs_mc.view.iview.IMaterialManualReplacementView
 
 class MaterialManualReplacementPresenter : BasePresenter<IMaterialManualReplacementView>() {
+
+    fun getManualReplacementList(callBack: (MutableList<ManualReplacementListRespVO>?) -> Unit) {
+        NetApi.getManualReplacementList(mContext!!.serialNo()) {
+            Executor.runOnMain {
+                callBack(it)
+            }
+        }
+    }
 }

+ 12 - 0
app/src/main/java/com/grkj/iscs_mc/view/presenter/MaterialReplacementPresenter.kt

@@ -1,7 +1,19 @@
 package com.grkj.iscs_mc.view.presenter
 
+import com.grkj.iscs_mc.extentions.serialNo
+import com.grkj.iscs_mc.model.vo.replacement.ManualReplacementListRespVO
+import com.grkj.iscs_mc.util.Executor
+import com.grkj.iscs_mc.util.NetApi
 import com.grkj.iscs_mc.view.base.BasePresenter
 import com.grkj.iscs_mc.view.iview.IMaterialReplacementView
 
 class MaterialReplacementPresenter : BasePresenter<IMaterialReplacementView>() {
+
+    fun getManualReplacementList(callBack: (MutableList<ManualReplacementListRespVO>?) -> Unit) {
+        NetApi.getManualReplacementList(mContext!!.serialNo()) {
+            Executor.runOnMain {
+                callBack(it)
+            }
+        }
+    }
 }

+ 7 - 2
app/src/main/res/layout/fragment_material_manual_replacement.xml

@@ -38,13 +38,18 @@
         android:layout_above="@id/cb_back"
         android:layout_below="@id/tb"
         android:layout_marginVertical="@dimen/common_spacing"
-        android:background="@drawable/item_rv_technology_sop_bg_normal"
-        android:padding="@dimen/common_spacing_small">
+        android:background="@drawable/item_rv_technology_sop_bg_normal">
 
         <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/rv_replacement"
             style="@style/CommonRecyclerView"
+            android:layout_marginTop="@dimen/expandable_tab_collapse_height"
             android:orientation="horizontal" />
 
+        <com.grkj.iscs_mc.view.widget.ExpandableTabLayout
+            android:id="@+id/etl_type"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/expandable_tab_collapse_height"
+            app:interactive="true" />
     </RelativeLayout>
 </RelativeLayout>

+ 13 - 0
app/src/main/res/layout/fragment_material_replacement.xml

@@ -49,10 +49,23 @@
         android:layout_marginVertical="@dimen/common_spacing"
         android:background="@drawable/item_rv_technology_sop_bg_normal">
 
+        <TextView
+            android:id="@+id/tv_tip"
+            style="@style/CommonTextView"
+            android:text="@string/material_replacement_tip"
+            android:layout_centerInParent="true"/>
+
         <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/rv_material"
             style="@style/CommonRecyclerView"
+            android:layout_marginTop="@dimen/expandable_tab_collapse_height"
             app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
             app:spanCount="6" />
+
+        <com.grkj.iscs_mc.view.widget.ExpandableTabLayout
+            android:id="@+id/etl_type"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/expandable_tab_collapse_height"
+            app:interactive="true" />
     </RelativeLayout>
 </RelativeLayout>

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

@@ -102,4 +102,6 @@
     <string name="home_status_bar_title">物资数量(可借/总数):</string>
 
     <string name="inspection_start_tip">确定要开始检查物资吗?</string>
+    
+    <string name="material_replacement_tip">暂无该类型物资需要更换记录</string>
 </resources>