浏览代码

接入查询物资使用说明接口

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

+ 3 - 0
app/src/main/java/com/grkj/iscs_mc/model/Constants.kt

@@ -9,4 +9,7 @@ object Constants {
 
     const val PERMISSION_REQUEST_CODE = 1
     const val BLE_LOCAL_NAME = "keyLock"
+
+    const val FILE_TYPE_MP4 = "0"
+    const val FILE_TYPE_PDF = "1"
 }

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

@@ -229,4 +229,9 @@ object UrlConsts {
      * 借出/归还物资
      */
     const val MATERIAL_BORROW_RETURN = "/iscs/materials/updateIsMaterialById"
+
+    /**
+     * 查询物资使用说明
+     */
+    const val MATERIAL_INSTRUCTION_LIST = "/iscs/hardware/material-api/getInstructionsList"
 }

+ 30 - 0
app/src/main/java/com/grkj/iscs_mc/model/vo/material/MaterialInstructionListRespVO.kt

@@ -0,0 +1,30 @@
+package com.grkj.iscs_mc.model.vo.material
+
+data class MaterialInstructionListRespVO(
+
+    val materialsTypeId: Long?,
+
+    val materialsTypeName: String?,
+
+    val instructions: List<IsMaterialsInstructions>?
+) {
+    data class IsMaterialsInstructions(
+        val instructionsId: Long?,
+
+        val instructionsTitle: String?,
+
+        val materialsTypeId: Long?,
+
+        val materialsTypeName: String?,
+
+        val fileUrl: String?,
+
+        val fileType: String?,
+
+        val delFlag: String?,
+
+        val status: String?,
+
+        val orderNum: Int?
+    )
+}

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

@@ -11,6 +11,7 @@ import com.grkj.iscs_mc.model.vo.machinery.MachineryDetailRespVO
 import com.grkj.iscs_mc.model.vo.machinery.MachineryPageRespVO
 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.sop.SopInfoRespVO
 import com.grkj.iscs_mc.model.vo.sop.SopPageRespVO
@@ -807,4 +808,20 @@ object NetApi {
             }, isGet = false, isAuth = true
         )
     }
+
+    /**
+     * 查询物资使用说明
+     */
+    fun getMaterialInstructionList(callBack: (MutableList<MaterialInstructionListRespVO>?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.MATERIAL_INSTRUCTION_LIST,
+            false,
+            mapOf<String, String>(),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(getRefBean(it))
+                }
+            }, isGet = true, isAuth = true
+        )
+    }
 }

+ 1 - 0
app/src/main/java/com/grkj/iscs_mc/view/fragment/MaterialFetchReturnFragment.kt

@@ -54,6 +54,7 @@ class MaterialFetchReturnFragment :
             mMaterialList = it
             val list = mutableListOf<ExpandableTabLayout.ItemData>()
             it?.forEach { itData ->
+                // TODO icon不对
                 list.add(ExpandableTabLayout.ItemData(itData.materialsTypeName, R.mipmap.safety_helmet))
             }
             mBinding?.etlType?.setData(list)

+ 6 - 0
app/src/main/java/com/grkj/iscs_mc/view/fragment/MaterialInstructionDetailFragment.kt

@@ -1,8 +1,10 @@
 package com.grkj.iscs_mc.view.fragment
 
 import android.webkit.CookieManager
+import androidx.navigation.fragment.navArgs
 import com.grkj.iscs_mc.databinding.FragmentMaterialInstructionDetailBinding
 import com.grkj.iscs_mc.extentions.navigateUp
+import com.grkj.iscs_mc.util.log.LogUtil
 import com.grkj.iscs_mc.view.base.BaseFragment
 
 /**
@@ -25,6 +27,10 @@ class MaterialInstructionDetailFragment : BaseFragment<FragmentMaterialInstructi
         settings?.mediaPlaybackRequiresUserGesture = false
 
         CookieManager.getInstance().acceptThirdPartyCookies(mBinding?.wvDetail)
+
+        val args: MaterialInstructionDetailFragmentArgs by navArgs()
+        LogUtil.i("html page file : ${args.url}")
+        mBinding?.wvDetail?.loadUrl(args.url)
     }
 
     override fun onDestroy() {

+ 50 - 5
app/src/main/java/com/grkj/iscs_mc/view/fragment/MaterialInstructionFragment.kt

@@ -2,10 +2,13 @@ package com.grkj.iscs_mc.view.fragment
 
 import com.grkj.iscs_mc.R
 import com.grkj.iscs_mc.databinding.FragmentMaterialInstructionBinding
+import com.grkj.iscs_mc.extentions.navigateTo
 import com.grkj.iscs_mc.extentions.navigateUp
+import com.grkj.iscs_mc.model.vo.material.MaterialInstructionListRespVO
 import com.grkj.iscs_mc.view.base.BaseMvpFragment
 import com.grkj.iscs_mc.view.iview.IMaterialInstructionView
 import com.grkj.iscs_mc.view.presenter.MaterialInstructionPresenter
+import com.grkj.iscs_mc.view.widget.ExpandableTabLayout
 import com.zhy.adapter.recyclerview.CommonAdapter
 import com.zhy.adapter.recyclerview.base.ViewHolder
 
@@ -15,19 +18,61 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
 class MaterialInstructionFragment :
     BaseMvpFragment<IMaterialInstructionView, MaterialInstructionPresenter, FragmentMaterialInstructionBinding>() {
 
+    private var mInstructionList: MutableList<MaterialInstructionListRespVO>? = null
+    private var mDetailList = mutableListOf<MaterialInstructionListRespVO.IsMaterialsInstructions>()
+
     override val viewBinding: FragmentMaterialInstructionBinding
         get() = FragmentMaterialInstructionBinding.inflate(layoutInflater)
 
     override fun initView() {
         mBinding?.cbBack?.setOnClickListener { navigateUp() }
 
-        mBinding?.rvInstruction?.adapter = object :
-            CommonAdapter<String>(requireContext(), R.layout.item_rv_instruction, mutableListOf()) {
-            override fun convert(holder: ViewHolder, t: String, position: Int) {
-                holder.setOnClickListener(R.id.root) {
-                    
+        mBinding?.rvInstruction?.adapter =
+            object : CommonAdapter<MaterialInstructionListRespVO.IsMaterialsInstructions>(
+                requireContext(),
+                R.layout.item_rv_instruction,
+                mDetailList
+            ) {
+                override fun convert(
+                    holder: ViewHolder,
+                    vo: MaterialInstructionListRespVO.IsMaterialsInstructions,
+                    position: Int
+                ) {
+                    holder.setText(R.id.tv_name, vo.instructionsTitle)
+                    holder.setOnClickListener(R.id.root) {
+                        vo.fileUrl?.let {
+                            navigateTo(MaterialInstructionFragmentDirections.actionInstructionFragmentToInstructionDetailFragment(it))
+                        }
+                    }
+                }
+        }
+
+        mBinding?.etlType?.setOnSelectListener(object : ExpandableTabLayout.OnSelectListener {
+            override fun onSelect(position: Int) {
+                mDetailList.clear()
+                mInstructionList?.get(position)?.instructions?.let {
+                    mDetailList.addAll(it)
+                }
+                mBinding?.rvInstruction?.adapter?.notifyDataSetChanged()
+            }
+        })
+
+        presenter?.getMaterialInstructionList {
+            mInstructionList = it
+            val list = mutableListOf<ExpandableTabLayout.ItemData>()
+            it?.forEach { itData ->
+                // TODO icon不对
+                list.add(ExpandableTabLayout.ItemData(itData.materialsTypeName, R.mipmap.safety_helmet))
+            }
+            mBinding?.etlType?.setData(list)
+
+            mDetailList.clear()
+            if (mInstructionList?.isNotEmpty() == true) {
+                mInstructionList?.get(0)?.instructions?.let {
+                    mDetailList.addAll(it)
                 }
             }
+            mBinding?.rvInstruction?.adapter?.notifyDataSetChanged()
         }
     }
 

+ 11 - 0
app/src/main/java/com/grkj/iscs_mc/view/presenter/MaterialInstructionPresenter.kt

@@ -1,7 +1,18 @@
 package com.grkj.iscs_mc.view.presenter
 
+import com.grkj.iscs_mc.model.vo.material.MaterialInstructionListRespVO
+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.IMaterialInstructionView
 
 class MaterialInstructionPresenter : BasePresenter<IMaterialInstructionView>() {
+
+    fun getMaterialInstructionList(callBack: (MutableList<MaterialInstructionListRespVO>?) -> Unit) {
+        NetApi.getMaterialInstructionList {
+            Executor.runOnMain {
+                callBack(it)
+            }
+        }
+    }
 }

+ 8 - 2
app/src/main/res/layout/fragment_material_instruction.xml

@@ -28,13 +28,19 @@
         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_instruction"
             style="@style/CommonRecyclerView"
+            android:layout_marginTop="@dimen/expandable_tab_collapse_height"
             app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
             app:spanCount="4" />
+
+        <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>

+ 1 - 0
app/src/main/res/layout/item_rv_instruction.xml

@@ -20,6 +20,7 @@
     </RelativeLayout>
 
     <TextView
+        android:id="@+id/tv_name"
         style="@style/CommonTextView"
         android:layout_marginTop="@dimen/common_spacing_small" />
 </LinearLayout>

+ 3 - 1
app/src/main/res/navigation/nav_graph.xml

@@ -107,7 +107,9 @@
     <fragment
         android:id="@+id/material_instruction_detail_fragment"
         android:name="com.grkj.iscs_mc.view.fragment.MaterialInstructionDetailFragment"
-        tools:layout="@layout/fragment_material_instruction_detail" />
+        tools:layout="@layout/fragment_material_instruction_detail" >
+        <argument android:name="url" app:argType="string" />
+    </fragment>
 
     <fragment
         android:id="@+id/material_inspection_plan_fragment"