Przeglądaj źródła

完善创建工作票

Frankensteinly 1 rok temu
rodzic
commit
faaa2bbcdb

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

@@ -50,7 +50,7 @@ class WorkTicketBean {
              */
             var equipRfidNo: String? = null
             /**
-             * 锁RFID号
+             * 锁RFID号(只在创建的时候有)
              */
             var infoRfidNo: String? = null
             /**

+ 40 - 12
app/src/main/java/com/grkj/iscs/presentation/PresentationActivity.kt

@@ -3,11 +3,11 @@ package com.grkj.iscs.presentation
 import android.view.Gravity
 import android.widget.CheckBox
 import androidx.recyclerview.widget.LinearLayoutManager
-import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.R
 import com.grkj.iscs.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
@@ -25,6 +25,7 @@ class PresentationActivity :
     BaseMvpActivity<IPresentationView, PresentationPresenter, ActivityPresentationBinding>() {
 
     private var cardRfid: String? = null
+    private var mSelectedSopIdx: Int? = null
 
     override val viewBinding: ActivityPresentationBinding
         get() = ActivityPresentationBinding.inflate(layoutInflater)
@@ -35,6 +36,7 @@ class PresentationActivity :
         mBinding?.siSop?.mOptionList = PresentationManager.mSopList.stream().map { it.sop }.collect(Collectors.toList())
         mBinding?.siSop?.setOnSpinnerSelectListener(object : SelectableInput.OnSpinnerSelectListener {
             override fun onSelect(str: String?, index: Int) {
+                mSelectedSopIdx = index
                 val sop = PresentationManager.mSopList[index]
                 mBinding?.siWorkshop?.setText(sop.workshop)
                 mBinding?.siLine?.setText(sop.line)
@@ -89,7 +91,6 @@ class PresentationActivity :
     }
 
     private fun confirm() {
-        createWorkTicket()
         // 蓝牙钥匙
         val keyList = ModBusController.getKeyByDockType(DeviceConst.DOCK_TYPE_PORTABLE)
         if (keyList.isNullOrEmpty()) {
@@ -111,40 +112,67 @@ class PresentationActivity :
             ToastUtils.tip("没有找到移动柜")
             return
         }
-        val lockList = dockList[0].getLockList()
+        val lockList = dockList[0].getLockList().take(2)
         if (lockList.isEmpty()) {
             ToastUtils.tip("没有找到移动柜的锁")
             return
         }
+        if (lockList.size < 2) {
+            ToastUtils.tip("移动柜的锁数量不够2个")
+            return
+        }
 
         val lockIdxList = lockList.map { it.idx } as MutableList
         ModBusController.controlLockBuckle(true, dockList[0].addr.toInt() - 1, lockIdxList) { res ->
             LogUtil.i("confirm开锁卡扣 : ${res.toHexStrings()}")
         }
+
+        createWorkTicket(lockList)
     }
 
 
     /**
      * 创建工作票
      */
-    private fun createWorkTicket() {
+    private fun createWorkTicket(lockList: List<DockBean.LockBean>) {
+        if (mSelectedSopIdx == null) {
+            ToastUtils.tip("请选择SOP")
+            return
+        }
         val ticket = WorkTicketBean()
         ticket.cardNo = cardRfid
         ticket.effectiveTime = 24
 
+        ticket.data = mutableListOf()
+
         val dataDTO = WorkTicketBean.DataDTO()
         dataDTO.taskCode = SimpleDateFormat("yyyyMMddHHmm").format(Date(System.currentTimeMillis()))
-        dataDTO.taskId = SimpleDateFormat("yyyyMMddHHmmss").format(Date(System.currentTimeMillis()))
-        dataDTO.codeId = 1
-        val dataListDTO1 = WorkTicketBean.DataDTO.DataListDTO()
-        dataListDTO1.dataId = 1
-        ticket.data = mutableListOf(dataDTO)
+        dataDTO.codeId = PresentationManager.workTicketList.size + 1
+        dataDTO.dataList = mutableListOf()
+
+        val pointList = PresentationManager.mSopList[mSelectedSopIdx!!].pointList
+        for (i in pointList.indices) {
+            val dataListDTO = WorkTicketBean.DataDTO.DataListDTO()
+            dataListDTO.dataId = i
+            dataListDTO.equipRfidNo = pointList[i].rfid
+            dataListDTO.target = 0
+            if (i != 0) {
+                dataListDTO.prevId = i - 1
+            }
+            dataDTO.dataList?.add(dataListDTO)
+        }
 
+        ticket.data?.add(dataDTO)
 
-        val lockListDTO = WorkTicketBean.LockListDTO()
-        ticket.lockList = mutableListOf(lockListDTO)
+        ticket.lockList = mutableListOf()
+        for (i in lockList.indices) {
+            val lockListDTO = WorkTicketBean.LockListDTO()
+            lockListDTO.lockId = "${i + 1}"
+            lockListDTO.rfid = lockList[i].rfid
+            ticket.lockList?.add(lockListDTO)
+        }
 
-        PresentationManager.workTicketList.add(ticket)
+        PresentationManager.workTicketList.add(PresentationManager.PServerTicket(PresentationManager.workTicketList.size + 1, PresentationManager.mSopList[mSelectedSopIdx!!].sopId, ticket))
     }
 
 

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

@@ -43,7 +43,7 @@ object PresentationManager {
         PLockerTogetherBean("共锁人2", false, null)
     )
 
-    var workTicketList = mutableListOf<WorkTicketBean>()
+    var workTicketList = mutableListOf<PServerTicket>()
 
     // 卡片信息
     data class PCardInfoBean(val rfid: String, val isLocker: Boolean)
@@ -52,5 +52,5 @@ object PresentationManager {
     // 隔离点位
     data class PPointBean(var name: String? = null, var rfid: String? = null)
     // 服务端工作票(完整)
-    data class ServerTicket(var ticketId: Long? = null, var sopId: Long? = null)
+    data class PServerTicket(var ticketId: Int? = null, var sopId: Long? = null, var workTicketBean: WorkTicketBean? = null)
 }