Răsfoiți Sursa

添加首页地图使用后端图片当底图功能

Frankensteinly 8 luni în urmă
părinte
comite
dbf2ac3c72

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

@@ -196,4 +196,9 @@ object UrlConsts {
      * 获取用户信息
      */
     const val GET_USER_INFO = "/getInfo"
+
+    /**
+     * 获取地图参数详细信息
+     */
+    const val MAP_INFO = "/iscs/map/selectIsMapById"
 }

+ 47 - 0
app/src/main/java/com/grkj/iscs/model/vo/map/MapInfoRespVO.kt

@@ -0,0 +1,47 @@
+package com.grkj.iscs.model.vo.map
+
+data class MapInfoRespVO(
+    val id: Long?,
+
+    val name: String?,
+
+    val imageUrl: String?,
+
+    val width: String?,
+
+    val height: String?,
+
+    val x: String?,
+
+    val y: String?,
+
+    val delFlag: String?,
+
+    val pointList: List<IsMapPoint>?
+) {
+    data class IsMapPoint(
+        val id: Long?,
+
+        val mapId: Long?,
+
+        val mapName: String?,
+
+        val mapType: String?,
+
+        val entityId: Long?,
+
+        val entityName: String?,
+
+        val x: String?,
+
+        val y: String?,
+
+        val delFlag: String?,
+
+        val pointIcon: String?,
+
+        val pointPicture: String?,
+
+        val pointNfc: String?
+    )
+}

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

@@ -11,6 +11,7 @@ import com.grkj.iscs.model.vo.lock.LockInfoRespVO
 import com.grkj.iscs.model.vo.lock.LockTakeUpdateReqVO
 import com.grkj.iscs.model.vo.machinery.MachineryDetailRespVO
 import com.grkj.iscs.model.vo.machinery.MachineryPageRespVO
+import com.grkj.iscs.model.vo.map.MapInfoRespVO
 import com.grkj.iscs.model.vo.sop.SopInfoRespVO
 import com.grkj.iscs.model.vo.sop.SopPageRespVO
 import com.grkj.iscs.model.vo.ticket.LockPointUpdateReqVO
@@ -767,4 +768,24 @@ object NetApi {
             }, isGet = true, isAuth = true
         )
     }
+
+    /**
+     * 获取地图参数详细信息
+     *
+     * @param id 机柜固定传1,物资柜固定传4
+     */
+    fun getMapInfo(id: Long, callBack: (MapInfoRespVO?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.MAP_INFO,
+            false,
+            mapOf(
+                "id" to id
+            ),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(getRefBean(it))
+                }
+            }, isGet = true, isAuth = true
+        )
+    }
 }

+ 24 - 24
app/src/main/java/com/grkj/iscs/view/fragment/WorkshopFragment.kt

@@ -1,7 +1,5 @@
 package com.grkj.iscs.view.fragment
 
-import android.graphics.Bitmap
-import android.graphics.BitmapFactory
 import android.graphics.PointF
 import android.widget.ImageView
 import com.grkj.iscs.R
@@ -10,6 +8,7 @@ import com.grkj.iscs.model.Constants
 import com.grkj.iscs.model.bo.PageChangeBO
 import com.grkj.iscs.model.vo.ticket.WorkstationTicketListRespVO
 import com.grkj.iscs.util.ToastUtils
+import com.grkj.iscs.util.log.LogUtil
 import com.grkj.iscs.view.base.BaseMvpFragment
 import com.grkj.iscs.view.iview.IWorkshopView
 import com.grkj.iscs.view.presenter.WorkshopPresenter
@@ -17,7 +16,6 @@ import com.grkj.iscs.view.widget.CustomMarkLayer
 import com.onlylemi.mapview.library.MapViewListener
 import com.zhy.adapter.recyclerview.CommonAdapter
 import com.zhy.adapter.recyclerview.base.ViewHolder
-import java.io.IOException
 
 /**
  * 车间岗位页
@@ -59,33 +57,35 @@ class WorkshopFragment(val changePage: (PageChangeBO) -> Unit) :
     }
 
     fun refreshPage() {
-        presenter?.getWorkstationTicketList {
-            if (it == null) {
-                return@getWorkstationTicketList
-            }
-            jobStatisticList.forEach { itJob ->
-                itJob.count = it.count { it.ticketType == itJob.sopType.type.toString() }
-            }
-            mPointList.forEach { itPoint ->
-                itPoint.ticketList = it.filter { it.workstationId == itPoint.workstationId }.toMutableList()
+        presenter?.getMapInfo {
+            presenter?.loadBitmapFromUrl(it?.imageUrl!!) {
+                if (it == null) {
+                    LogUtil.e("Map pic is null")
+                    return@loadBitmapFromUrl
+                }
+
+                mBinding?.mapview?.loadMap(it)
+                presenter?.getWorkstationTicketList {
+                    if (it == null) {
+                        return@getWorkstationTicketList
+                    }
+                    jobStatisticList.forEach { itJob ->
+                        itJob.count = it.count { it.ticketType == itJob.sopType.type.toString() }
+                    }
+                    mPointList.forEach { itPoint ->
+                        itPoint.ticketList = it.filter { it.workstationId == itPoint.workstationId }.toMutableList()
+                    }
+                    mBinding?.rvStatistics?.adapter?.notifyDataSetChanged()
+                    mBinding?.mapview?.currentRotateDegrees = 0f
+                    mBinding?.mapview?.currentZoom = 1f
+                    mBinding?.mapview?.refresh()
+                }
             }
-            mBinding?.rvStatistics?.adapter?.notifyDataSetChanged()
-            mBinding?.mapview?.currentRotateDegrees = 0f
-            mBinding?.mapview?.currentZoom = 1f
-            mBinding?.mapview?.refresh()
         }
     }
 
     private fun initMap() {
-        var bitmap: Bitmap? = null
-        try {
-            bitmap = BitmapFactory.decodeStream(requireActivity().assets.open("map.png"))
-        } catch (e: IOException) {
-            e.printStackTrace()
-        }
-
         mBinding?.mapview?.isScaleAndRotateTogether = false
-        mBinding?.mapview?.loadMap(bitmap)
         mBinding?.mapview?.setMapViewListener(object : MapViewListener {
             override fun onMapLoadSuccess() {
                 markLayer = CustomMarkLayer(mBinding?.mapview, mPointList)

+ 55 - 0
app/src/main/java/com/grkj/iscs/view/presenter/WorkshopPresenter.kt

@@ -1,5 +1,12 @@
 package com.grkj.iscs.view.presenter
 
+import android.graphics.Bitmap
+import com.bumptech.glide.Glide
+import com.bumptech.glide.load.DataSource
+import com.bumptech.glide.load.engine.GlideException
+import com.bumptech.glide.request.RequestListener
+import com.bumptech.glide.request.target.Target
+import com.grkj.iscs.model.vo.map.MapInfoRespVO
 import com.grkj.iscs.model.vo.ticket.WorkstationTicketListRespVO
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.NetApi
@@ -15,4 +22,52 @@ class WorkshopPresenter : BasePresenter<IWorkshopView>() {
             }
         }
     }
+
+    fun getMapInfo(callBack: (MapInfoRespVO?) -> Unit) {
+        NetApi.getMapInfo(1) {
+            Executor.runOnMain {
+                callBack(it)
+            }
+        }
+    }
+
+    fun loadBitmapFromUrl(url: String, callback: (Bitmap?) -> Unit) {
+        try {
+            Glide.with(mContext!!)
+                .asBitmap()
+                .load(url)
+                .listener(object : RequestListener<Bitmap> {
+                    override fun onLoadFailed(
+                        e: GlideException?,
+                        model: Any?,
+                        target: Target<Bitmap>?,
+                        isFirstResource: Boolean
+                    ): Boolean {
+                        Executor.runOnMain {
+                            callback(null)
+                        }
+                        return false
+                    }
+
+                    override fun onResourceReady(
+                        resource: Bitmap?,
+                        model: Any?,
+                        target: Target<Bitmap>?,
+                        dataSource: DataSource?,
+                        isFirstResource: Boolean
+                    ): Boolean {
+                        Executor.runOnMain {
+                            callback(resource)
+                        }
+                        return false
+                    }
+                })
+                .submit()
+        } catch (e: Exception) {
+            e.printStackTrace()
+            Executor.runOnMain {
+                callback(null)
+            }
+        }
+    }
 }