Просмотр исходного кода

添加车间岗位地图背景图;接入正在进行中的作业票列表接口

Frankensteinly 10 месяцев назад
Родитель
Сommit
4ed3f6b3fb

BIN
app/src/main/assets/cabinet.png


BIN
app/src/main/assets/map.png


BIN
app/src/main/assets/testpng.png


+ 8 - 0
app/src/main/java/com/grkj/iscs/model/Constants.kt

@@ -29,4 +29,12 @@ object Constants {
     const val JOB_STATUS_READY_TO_LOCK = 3          // 待上锁
     const val JOB_STATUS_READY_TO_UNLOCK = 4        // 已上锁
     const val JOB_STATUS_UNLOCKED = 5               // 已解锁
+
+    /*************************  作业票类型  *************************/
+
+    const val TICKET_TYPE_REPAIR = 0                // 维修
+    const val TICKET_TYPE_PRE_MAINTENANCE = 1       // PM
+    const val TICKET_TYPE_CHANGE_SHIFTS = 2         // 开收班
+    const val TICKET_TYPE_CLEAN = 3                 // 清洗
+    const val TICKET_TYPE_SWITCH_PRODUCT = 4        // 换产
 }

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

@@ -126,4 +126,9 @@ object UrlConsts {
      * 根据角色获取人员列表
      */
     const val ROLE_LIST = "/system/role/authUser/allocatedListByRoleKey"
+
+    /**
+     * 正在进行中的作业票列表
+     */
+    const val WORKSTATION_TICKET_LIST = "/iscs/ticket/getWorkstationTicketList"
 }

+ 1 - 1
app/src/main/java/com/grkj/iscs/model/WorkTicketBean.kt → app/src/main/java/com/grkj/iscs/model/presentation/WorkTicketBean.kt

@@ -1,4 +1,4 @@
-package com.grkj.iscs.model
+package com.grkj.iscs.model.presentation
 
 class WorkTicketBean {
     /**

+ 1 - 1
app/src/main/java/com/grkj/iscs/model/WorkTicketStatusBean.kt → app/src/main/java/com/grkj/iscs/model/presentation/WorkTicketStatusBean.kt

@@ -1,4 +1,4 @@
-package com.grkj.iscs.model
+package com.grkj.iscs.model.presentation
 
 class WorkTicketStatusBean {
     /**

+ 43 - 0
app/src/main/java/com/grkj/iscs/model/vo/ticket/WorkstationTicketListRespVO.kt

@@ -0,0 +1,43 @@
+package com.grkj.iscs.model.vo.ticket
+
+data class WorkstationTicketListRespVO(
+    /** 作业票ID  */
+    val ticketId: Long?,
+
+    /** 作业票编号  */
+    val ticketCode: String?,
+
+    /** 作业票名称  */
+    val ticketName: String?,
+
+    /** 所属车间ID  */
+    val workshopId: Long?,
+
+    /** 所属区域ID  */
+    val workareaId: Long?,
+
+    /** 所属SOPID  */
+    val sopId: Long?,
+
+    /** 作业票类型  */
+    val ticketType: String?,
+
+    /** 作业票详情  */
+    val ticketContent: String?,
+
+    /** 作业票状态  */
+    val ticketStatus: String?,
+
+    /** 作业票开始时间  */
+    val ticketStartTime: String?,
+
+    /** 作业票结束时间  */
+    val ticketEndTime: String?,
+
+    /** 删除标志(0代表存在 2代表删除)  */
+    val delFlag: String?,
+
+    val workstationId: Long?,
+
+    val machineryId: Long?
+)

+ 1 - 5
app/src/main/java/com/grkj/iscs/presentation/PresentationActivity.kt

@@ -3,19 +3,15 @@ package com.grkj.iscs.presentation
 import android.view.Gravity
 import android.widget.CheckBox
 import androidx.recyclerview.widget.LinearLayoutManager
-import com.clj.fastble.BleManager
 import com.google.gson.Gson
-import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
 import com.grkj.iscs.view.base.BaseMvpActivity
 import com.grkj.iscs.databinding.ActivityPresentationBinding
-import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.modbus.DockBean
 import com.grkj.iscs.modbus.ModBusController
 import com.grkj.iscs.model.DeviceConst
-import com.grkj.iscs.model.WorkTicketBean
+import com.grkj.iscs.model.presentation.WorkTicketBean
 import com.grkj.iscs.util.ToastUtils
-import com.grkj.iscs.util.log.LogUtil
 import com.grkj.iscs.view.widget.SelectableInput
 import com.manu.mdatepicker.MDatePicker
 import com.zhy.adapter.recyclerview.CommonAdapter

+ 1 - 2
app/src/main/java/com/grkj/iscs/presentation/PresentationLoginActivity.kt

@@ -11,12 +11,11 @@ import com.grkj.iscs.databinding.ActivityPresentationLoginBinding
 import com.grkj.iscs.extentions.removeLeadingZeros
 import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.modbus.ModBusController
-import com.grkj.iscs.model.DeviceConst
 import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_CARD
 import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_KEY
 import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_LOCK
 import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_PORTABLE
-import com.grkj.iscs.model.WorkTicketStatusBean
+import com.grkj.iscs.model.presentation.WorkTicketStatusBean
 import com.grkj.iscs.util.ActivityUtils
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.FileUtil

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

@@ -3,8 +3,8 @@ package com.grkj.iscs.presentation
 import com.google.gson.Gson
 import com.grkj.iscs.modbus.ModBusController
 import com.grkj.iscs.model.DeviceConst
-import com.grkj.iscs.model.WorkTicketBean
-import com.grkj.iscs.model.WorkTicketStatusBean
+import com.grkj.iscs.model.presentation.WorkTicketBean
+import com.grkj.iscs.model.presentation.WorkTicketStatusBean
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.util.log.LogUtil

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

@@ -16,6 +16,7 @@ import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
 import com.grkj.iscs.model.vo.ticket.TicketEquipDetailRespVO
 import com.grkj.iscs.model.vo.ticket.TicketPageRespVO
 import com.grkj.iscs.model.vo.ticket.TicketTypeRespVO
+import com.grkj.iscs.model.vo.ticket.WorkstationTicketListRespVO
 import com.grkj.iscs.model.vo.user.RoleListRespVO
 import com.grkj.iscs.model.vo.user.UserListRespVO
 
@@ -454,4 +455,23 @@ object NetApi {
             }, isGet = true, isAuth = true
         )
     }
+
+    /**
+     * 正在进行中的作业票列表
+     */
+    fun getWorkstationTicketList(pages: Int, size: Int, callBack: (MutableList<WorkstationTicketListRespVO>?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.WORKSTATION_TICKET_LIST,
+            false,
+            mapOf(
+                "pages" to pages,
+                "size" to size
+            ),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(getRefBean(it))
+                }
+            }, isGet = true, isAuth = true
+        )
+   }
 }

+ 0 - 1
app/src/main/java/com/grkj/iscs/view/activity/LoginActivity.kt

@@ -40,7 +40,6 @@ class LoginActivity : BaseMvpActivity<ILoginView, LoginPresenter, ActivityLoginB
                 }
             }
 
-
         // TODO 只适配armeabi-v7a
 //        handleLoading(true, resources.getString(R.string.device_is_initializing))
 //        BusinessManager.connectDock(true)

+ 1 - 0
app/src/main/java/com/grkj/iscs/view/fragment/JobManagementFragment.kt

@@ -28,6 +28,7 @@ class JobManagementFragment :
         )
 
         mBinding?.vp?.isUserInputEnabled = false
+        mBinding?.vp?.offscreenPageLimit = 3
         mBinding?.vp?.adapter = MenuAdapter(requireActivity().supportFragmentManager, lifecycle, mMenuList)
 
         mBinding?.rvTab?.adapter = object : CommonAdapter<Menu>(activity, R.layout.item_rv_job_management, mMenuList) {

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

@@ -1,13 +1,23 @@
 package com.grkj.iscs.view.fragment
 
+import android.graphics.Bitmap
+import android.graphics.BitmapFactory
 import android.widget.ImageView
 import com.grkj.iscs.R
 import com.grkj.iscs.databinding.FragmentWorkshopBinding
+import com.grkj.iscs.model.Constants.TICKET_TYPE_CHANGE_SHIFTS
+import com.grkj.iscs.model.Constants.TICKET_TYPE_CLEAN
+import com.grkj.iscs.model.Constants.TICKET_TYPE_PRE_MAINTENANCE
+import com.grkj.iscs.model.Constants.TICKET_TYPE_REPAIR
+import com.grkj.iscs.model.Constants.TICKET_TYPE_SWITCH_PRODUCT
+import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.view.base.BaseMvpFragment
 import com.grkj.iscs.view.iview.IWorkshopView
 import com.grkj.iscs.view.presenter.WorkshopPresenter
+import com.onlylemi.mapview.library.MapViewListener
 import com.zhy.adapter.recyclerview.CommonAdapter
 import com.zhy.adapter.recyclerview.base.ViewHolder
+import java.io.IOException
 
 /**
  * 车间岗位页
@@ -22,24 +32,76 @@ class WorkshopFragment :
 
     override fun initView() {
         jobStatisticList = mutableListOf(
-            JobStatistics(R.mipmap.repair, getString(R.string.repair), 0),
-            JobStatistics(R.mipmap.pre_maintenance, getString(R.string.pre_maintenance), 0),
-            JobStatistics(R.mipmap.change_shifts, getString(R.string.change_shifts), 0),
-            JobStatistics(R.mipmap.clean, getString(R.string.clean), 0),
-            JobStatistics(R.mipmap.switch_product, getString(R.string.switch_product), 0),
+            JobStatistics(R.mipmap.repair, TICKET_TYPE_REPAIR, getString(R.string.repair), 0),
+            JobStatistics(R.mipmap.pre_maintenance, TICKET_TYPE_PRE_MAINTENANCE, getString(R.string.pre_maintenance), 0),
+            JobStatistics(R.mipmap.change_shifts, TICKET_TYPE_CHANGE_SHIFTS, getString(R.string.change_shifts), 0),
+            JobStatistics(R.mipmap.clean, TICKET_TYPE_CLEAN, getString(R.string.clean), 0),
+            JobStatistics(R.mipmap.switch_product, TICKET_TYPE_SWITCH_PRODUCT, getString(R.string.switch_product), 0),
         )
         
         mBinding?.rvStatistics?.adapter = object : CommonAdapter<JobStatistics>(requireActivity(), R.layout.item_rv_job_management, jobStatisticList) {
             override fun convert(holder: ViewHolder, statistic: JobStatistics, position: Int) {
                 holder.getView<ImageView>(R.id.iv).setImageResource(statistic.icon)
-                holder.setText(R.id.tv_name, if (statistic.count == 0) statistic.title else "${statistic.title}(${statistic.count})")
+                holder.setText(R.id.tv_name, if (statistic.count == 0) statistic.title else "${statistic.title}(${statistic.count})")
             }
         }
+
+        initMap()
+
+        refreshPage()
+    }
+
+    fun refreshPage() {
+        presenter?.getWorkstationTicketList {
+            if (it == null) {
+                return@getWorkstationTicketList
+            }
+            jobStatisticList.forEach { itJob ->
+                itJob.count = it.count { it.ticketType == itJob.type.toString() }
+            }
+            mBinding?.rvStatistics?.adapter?.notifyDataSetChanged()
+        }
+    }
+
+    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() {
+//                val marks: List<PointF> = TestData.getMarks()
+//                val marksName: List<String> = TestData.getMarksName()
+//                val pointList = mutableListOf<CustomPoint>()
+//                if (marks.size == marksName.size) {
+//                    marks.forEachIndexed { index, pointF ->
+//                        pointList.add(CustomPoint(pointF, marksName[index], index % 3))
+//                    }
+//                }
+//                markLayer = CustomMarkLayer(mBinding?.mapview, pointList)
+//                markLayer?.setMarkIsClickListener(CustomMarkLayer.MarkIsClickListener { index, btnIndex ->
+//                    Toast.makeText(
+//                        applicationContext, marksName[index] + " is selected, btnIndex is " + btnIndex, Toast.LENGTH_SHORT
+//                    ).show()
+//                })
+//                mBinding?.mapview?.addLayer(markLayer)
+//                mBinding?.mapview?.refresh()
+            }
+
+            override fun onMapLoadFail() {
+                ToastUtils.tip("onMapLoadFail")
+            }
+        })
     }
 
     override fun initPresenter(): WorkshopPresenter {
         return WorkshopPresenter()
     }
 
-    data class JobStatistics(val icon: Int, val title: String, val count: Int)
+    data class JobStatistics(val icon: Int, val type: Int, val title: String, var count: Int)
 }

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

@@ -1,7 +1,15 @@
 package com.grkj.iscs.view.presenter
 
+import com.grkj.iscs.model.vo.ticket.WorkstationTicketListRespVO
+import com.grkj.iscs.util.NetApi
 import com.grkj.iscs.view.base.BasePresenter
 import com.grkj.iscs.view.iview.IWorkshopView
 
 class WorkshopPresenter : BasePresenter<IWorkshopView>() {
+
+    fun getWorkstationTicketList(callBack: (MutableList<WorkstationTicketListRespVO>?) -> Unit) {
+        NetApi.getWorkstationTicketList(0, 10) {
+            callBack(it)
+        }
+    }
 }