Bläddra i källkod

物资检查表页接口、页面调整

Frankensteinly 8 månader sedan
förälder
incheckning
2b4f2058a3

+ 5 - 0
app/src/main/java/com/grkj/iscs_mc/model/vo/home/HomePageDataRespVO.kt

@@ -11,6 +11,11 @@ data class HomePageDataRespVO(
      */
     val checkNumber: Int?,
 
+    /**
+     * 物资更换数量
+     */
+    val changeNumber: Int?,
+
     val list: List<MaterialsHomeVO>?
 ) {
     data class MaterialsHomeVO(

+ 44 - 10
app/src/main/java/com/grkj/iscs_mc/model/vo/inspection/InspectionCheckTableDataRespVO.kt

@@ -1,19 +1,53 @@
 package com.grkj.iscs_mc.model.vo.inspection
 
-data class InspectionCheckTableDataRespVO(
-    val materialsCabinetId: Long?,
+class InspectionCheckTableDataRespVO(
+    val list: List<IsMaterialsCheckRecord>?,
 
-    val materialsId: Long?,
+    val standards: List<CheckStandardVO>?,
+) {
+    data class IsMaterialsCheckRecord(
+        val recordId: Long?,
 
-    val materialsName: String?,
+        val planId: Long?,
 
-    val materialsTypeId: Long?,
+        val workstationId: Long?,
 
-    val materialsTypeName: String?,
+        val cabinetId: Long?,
 
-    val materialsTypeIcon: String?,
+        val materialsId: Long?,
 
-    val materialsTypePicture: String?,
+        val materialsName: String?,
 
-    val status: String? // 0:正常 1:损坏 2:过期 3:放错柜子
-)
+        val materialsTypeName: String?,
+
+        val materialsTypeIcon: String?,
+
+        val materialsTypePicture: String?,
+
+        val materialsRfid: String?,
+
+        val checkUserId: Long?,
+
+        val checkDate: String?,
+
+        var status: String?,    // 0:正常 1:损坏 2:过期 3:放错柜子
+
+        val reason: String?,
+
+        val measure: String?,
+
+        val delFlag: String?
+    )
+
+    data class CheckStandardVO(
+        val materialsTypeId: Long?,
+
+        val materialsTypeName: String?,
+
+        val materialsTypePicture: String?,
+
+        val materialsTypeIcon: String?,
+
+        val checkStandard: String?
+    )
+}

+ 2 - 1
app/src/main/java/com/grkj/iscs_mc/util/NetApi.kt

@@ -868,11 +868,12 @@ object NetApi {
     /**
      * 获取物资检查表数据
      */
-    fun getCheckTableData(cabinetCode: String, callBack: (MutableList<InspectionCheckTableDataRespVO>?) -> Unit) {
+    fun getCheckTableData(planId: Long, cabinetCode: String, callBack: (InspectionCheckTableDataRespVO?) -> Unit) {
         NetHttpManager.getInstance().doRequestNet(
             UrlConsts.CHECK_TABLE_DATA,
             false,
             mapOf(
+                "planId" to planId,
                 "cabinetCode" to cabinetCode
             ),
             { res, _, _ ->

+ 7 - 0
app/src/main/java/com/grkj/iscs_mc/view/fragment/MaterialHomeFragment.kt

@@ -49,6 +49,13 @@ class MaterialHomeFragment :
                 mBinding?.rlInspectionNum?.visibility = View.GONE
             }
 
+            itData?.changeNumber?.let {
+                mBinding?.tvReplacementNum?.text = it.toString()
+                mBinding?.rlReplacementNum?.visibility = View.VISIBLE
+            } ?: let {
+                mBinding?.rlReplacementNum?.visibility = View.GONE
+            }
+
             val list = mutableListOf<ExpandableTabLayout.ItemData>()
             itData?.list?.forEach {
                 list.add(ExpandableTabLayout.ItemData("(${it.borrowableNumber}/${it.allNumber})", iconUrl = it.materialsTypeIcon))

+ 32 - 18
app/src/main/java/com/grkj/iscs_mc/view/fragment/MaterialInspectionTableFragment.kt

@@ -1,5 +1,6 @@
 package com.grkj.iscs_mc.view.fragment
 
+import androidx.navigation.fragment.navArgs
 import com.bumptech.glide.Glide
 import com.grkj.iscs_mc.R
 import com.grkj.iscs_mc.databinding.FragmentMaterialInspectionTableBinding
@@ -18,7 +19,8 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
 class MaterialInspectionTableFragment :
     BaseMvpFragment<IMaterialInspectionTableView, MaterialInspectionTablePresenter, FragmentMaterialInspectionTableBinding>() {
 
-    private val mDataList = mutableListOf<InspectionCheckTableDataRespVO>()
+    private val mRecordList = mutableListOf<InspectionCheckTableDataRespVO.IsMaterialsCheckRecord>()
+    private val mStandardList = mutableListOf<InspectionCheckTableDataRespVO.CheckStandardVO>()
 
     override val viewBinding: FragmentMaterialInspectionTableBinding
         get() = FragmentMaterialInspectionTableBinding.inflate(layoutInflater)
@@ -26,55 +28,67 @@ class MaterialInspectionTableFragment :
     override fun initView() {
         mBinding?.cbBack?.setOnClickListener { navigateUp() }
 
-        mBinding?.rvMaterial?.adapter = object : CommonAdapter<InspectionCheckTableDataRespVO>(
+        mBinding?.rvMaterial?.adapter = object : CommonAdapter<InspectionCheckTableDataRespVO.IsMaterialsCheckRecord>(
             requireContext(),
             R.layout.item_rv_inspection_table,
-            mDataList
+            mRecordList
         ) {
-            override fun convert(holder: ViewHolder, vo: InspectionCheckTableDataRespVO, position: Int) {
+            override fun convert(holder: ViewHolder, vo: InspectionCheckTableDataRespVO.IsMaterialsCheckRecord, position: Int) {
                 holder.setText(R.id.tv_number, String.format("%03d", position + 1))
                 Glide.with(this@MaterialInspectionTableFragment).load(vo.materialsTypeIcon).into(holder.getView(R.id.iv_icon))
                 holder.setText(R.id.tv_type_name, vo.materialsTypeName)
                 holder.setText(R.id.tv_name, vo.materialsName)
-                // TODO 缺rfid
-//                holder.setText(R.id.tv_rfid, vo.)
+                holder.setText(R.id.tv_rfid, vo.materialsRfid)
 
                 holder.setSelected(R.id.rl_status_ok, vo.status == "0")
                 holder.setSelected(R.id.rl_status_expired, vo.status == "1")
                 holder.setSelected(R.id.rl_status_damaged, vo.status == "2")
 
                 holder.setOnClickListener(R.id.rl_status_ok) {
-                    
+                    vo.status = "0"
+                    mBinding?.rvMaterial?.adapter?.notifyItemChanged(position)
                 }
                 holder.setOnClickListener(R.id.rl_status_expired) {
-
+                    vo.status = "1"
+                    mBinding?.rvMaterial?.adapter?.notifyItemChanged(position)
                 }
                 holder.setOnClickListener(R.id.rl_status_damaged) {
-
+                    vo.status = "2"
+                    mBinding?.rvMaterial?.adapter?.notifyItemChanged(position)
                 }
+                holder.setText(R.id.tv_measure, vo.measure ?: "")
             }
         }
 
-        mBinding?.rvStandard?.adapter = object : CommonAdapter<String>(
+        mBinding?.rvStandard?.adapter = object : CommonAdapter<InspectionCheckTableDataRespVO.CheckStandardVO>(
             requireContext(),
             R.layout.item_rv_inspection_standard,
-            mutableListOf()
+            mStandardList
         ) {
-            override fun convert(holder: ViewHolder, t: String, position: Int) {
-
+            override fun convert(holder: ViewHolder, vo: InspectionCheckTableDataRespVO.CheckStandardVO, position: Int) {
+                Glide.with(this@MaterialInspectionTableFragment).load(vo.materialsTypeIcon).into(holder.getView(R.id.iv_icon))
+                holder.setText(R.id.tv_name, vo.materialsTypeName ?: "")
+                holder.setText(R.id.tv_standard, vo.checkStandard ?: "")
             }
         }
 
         mBinding?.cbSave?.setOnClickListener {
-//            presenter?.insertCheckRecord()
+            presenter?.insertCheckRecord(mRecordList)
         }
 
-        presenter?.getCheckTableData {
-            it?.let {
-                mDataList.clear()
-                mDataList.addAll(it)
+        val args: MaterialInspectionTableFragmentArgs by navArgs()
+        presenter?.getCheckTableData(args.planId) {
+            it?.list?.let {
+                mRecordList.clear()
+                mRecordList.addAll(it)
                 mBinding?.rvMaterial?.adapter?.notifyDataSetChanged()
             }
+
+            it?.standards?.let {
+                mStandardList.clear()
+                mStandardList.addAll(it)
+                mBinding?.rvStandard?.adapter?.notifyDataSetChanged()
+            }
         }
     }
 

+ 16 - 4
app/src/main/java/com/grkj/iscs_mc/view/presenter/MaterialInspectionTablePresenter.kt

@@ -1,25 +1,37 @@
 package com.grkj.iscs_mc.view.presenter
 
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
 import com.grkj.iscs_mc.extentions.serialNo
 import com.grkj.iscs_mc.model.vo.inspection.InsertCheckRecordReqVO
 import com.grkj.iscs_mc.model.vo.inspection.InspectionCheckTableDataRespVO
 import com.grkj.iscs_mc.util.Executor
 import com.grkj.iscs_mc.util.NetApi
+import com.grkj.iscs_mc.util.log.LogUtil
 import com.grkj.iscs_mc.view.base.BasePresenter
 import com.grkj.iscs_mc.view.iview.IMaterialInspectionTableView
 
 class MaterialInspectionTablePresenter : BasePresenter<IMaterialInspectionTableView>() {
 
-    fun getCheckTableData(callBack: (MutableList<InspectionCheckTableDataRespVO>?) -> Unit) {
-        NetApi.getCheckTableData(mContext!!.serialNo()) {
+    fun getCheckTableData(planId: Long, callBack: (InspectionCheckTableDataRespVO?) -> Unit) {
+        NetApi.getCheckTableData(planId, mContext!!.serialNo()) {
             Executor.runOnMain {
                 callBack(it)
             }
         }
     }
 
-    fun insertCheckRecord(list: MutableList<InsertCheckRecordReqVO>) {
-        NetApi.insertCheckRecord(list) {
+    fun insertCheckRecord(list: MutableList<InspectionCheckTableDataRespVO.IsMaterialsCheckRecord>) {
+        if (list.isEmpty()) {
+            LogUtil.w("No check record to save")
+            return
+        }
+        val saveList: MutableList<InsertCheckRecordReqVO> =
+            Gson().fromJson(
+                Gson().toJson(list),
+                object : TypeToken<MutableList<InspectionCheckTableDataRespVO>>() {}.type
+            )
+        NetApi.insertCheckRecord(saveList) {
 
         }
     }

+ 14 - 0
app/src/main/res/layout/fragment_material_home.xml

@@ -165,6 +165,20 @@
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintTop_toBottomOf="@id/rl_module_instruction">
 
+            <RelativeLayout
+                android:id="@+id/rl_replacement_num"
+                android:layout_width="20dp"
+                android:layout_height="20dp"
+                android:layout_alignParentRight="true"
+                android:background="@drawable/home_page_num_bg"
+                android:visibility="gone">
+
+                <TextView
+                    android:id="@+id/tv_replacement_num"
+                    style="@style/CommonTextView"
+                    android:layout_centerInParent="true" />
+            </RelativeLayout>
+
             <ImageView
                 android:layout_width="@dimen/home_module_icon_size"
                 android:layout_height="@dimen/home_module_icon_size"

+ 3 - 0
app/src/main/res/layout/item_rv_inspection_standard.xml

@@ -12,10 +12,12 @@
         android:orientation="horizontal">
 
         <ImageView
+            android:id="@+id/iv_icon"
             android:layout_width="@dimen/common_icon_size_big"
             android:layout_height="@dimen/common_icon_size_big" />
 
         <TextView
+            android:id="@+id/tv_name"
             style="@style/CommonTextView"
             android:layout_width="wrap_content"
             android:layout_marginLeft="@dimen/common_spacing_small"
@@ -28,6 +30,7 @@
         android:background="@color/main_color" />
 
     <TextView
+        android:id="@+id/tv_standard"
         style="@style/CommonTextView"
         android:gravity="left"
         android:padding="@dimen/common_spacing_small"

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

@@ -131,6 +131,7 @@
             android:background="@color/main_color" />
 
         <TextView
+            android:id="@+id/tv_measure"
             style="@style/CommonTextView"
             android:layout_width="0dp"
             android:layout_weight="5"

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

@@ -143,7 +143,9 @@
     <fragment
         android:id="@+id/material_inspection_table_fragment"
         android:name="com.grkj.iscs_mc.view.fragment.MaterialInspectionTableFragment"
-        tools:layout="@layout/fragment_material_inspection_table" />
+        tools:layout="@layout/fragment_material_inspection_table" >
+        <argument android:name="planId" app:argType="long" />
+    </fragment>
 
     <fragment
         android:id="@+id/material_inspection_signature_fragment"