Prechádzať zdrojové kódy

refactor(更新) :
- 如果任务都完成了,然后后端验证没过,重新下发作业票

周文健 5 mesiacov pred
rodič
commit
c9f75bbdd1

+ 64 - 9
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -1028,7 +1028,7 @@ object BusinessManager {
         val taskList = ArrayList<WorkTicketSendBO.DataBO.DataListBO>()
         vo.ticketPointsVOList?.let { itList ->
             itList.forEach { pointVO ->
-                if (vo.noUnlockTicketPointsVOSet?.any { it.pointId == pointVO.pointId } == true) {
+                if (vo.noUnlockTicketPointsVOSet?.any { it.pointId == pointVO.pointId } == true && isLock == false) {
                     return@forEach
                 }
                 val task = WorkTicketSendBO.DataBO.DataListBO(
@@ -1418,7 +1418,7 @@ object BusinessManager {
                                         )
                                     }
                                     ToastUtils.tip(R.string.key_return_success)
-                                }else{
+                                } else {
                                     ToastUtils.tip(R.string.key_return_success)
                                 }
                             }
@@ -1440,13 +1440,23 @@ object BusinessManager {
                                     ToastUtils.tip(R.string.continue_the_ticket)
                                     BleManager.getInstance().disconnect(bleDevice)
                                     // 打开卡扣,防止初始化的时候选择不处理钥匙导致无法使用
-                                    val dock = ModBusController.getDockByKeyMac(bleDevice.mac)
-                                    val keyBean =
-                                        dock?.getKeyList()?.find { it.mac == bleDevice.mac }
-                                    keyBean?.let {
-                                        ModBusController.controlKeyBuckle(
-                                            true, keyBean.isLeft, dock.addr
-                                        )
+                                    if (workTicketGetBO.data?.all { it.dataList?.all { it.closed == 1 } == true } == true) {
+                                        workTicketGetBO.data?.firstOrNull()?.taskCode?.toLong()
+                                            ?.let {
+                                                checkStepAndTicketDetailThenSendTicket(
+                                                    it,
+                                                    bleDevice.mac
+                                                )
+                                            }
+                                    }else{
+                                        val dock = ModBusController.getDockByKeyMac(bleDevice.mac)
+                                        val keyBean =
+                                            dock?.getKeyList()?.find { it.mac == bleDevice.mac }
+                                        keyBean?.let {
+                                            ModBusController.controlKeyBuckle(
+                                                true, keyBean.isLeft, dock.addr
+                                            )
+                                        }
                                     }
                                 }
                             }
@@ -1819,6 +1829,51 @@ object BusinessManager {
         }
     }
 
+    /**
+     * 检查步骤和作业票详情并且下发作业票
+     */
+    private fun checkStepAndTicketDetailThenSendTicket(ticketId: Long, mac: String) {
+        NetApi.getStepDetail(ticketId) {
+            var step = 0
+            it?.filter { it.stepStatus == "1" }
+                ?.maxByOrNull { it.stepIndex!! }?.stepIndex?.let {
+                    step = it
+                }
+            NetApi.getTicketDetail(ticketId) { ticketDetail, _ ->
+                if (ticketDetail == null) {
+                    return@getTicketDetail
+                }
+                val role = ticketDetail?.ticketUserVOList?.find {
+                    it.userId == SPUtils.getLoginUser(MyApplication.instance?.applicationContext!!)?.userId && it.userType == USER_TYPE_LOCKER
+                }
+                if (role == null) {
+                    ToastUtils.tip(R.string.you_are_not_locker_tip)
+                    return@getTicketDetail
+                }
+                if (step == 4) {    // 上锁工作票
+                    sendTicketBusiness(
+                        true,
+                        mac,
+                        ticketDetail,
+                        ticketDetail.ticketLockVOList?.filter { it.lockStatus != "2" }
+                            ?.map { it.lockNfc }?.toMutableList(),
+                        ActivityUtils.currentActivity() as BaseActivity<*>,
+                        true
+                    )
+                } else if (step == 7) { // 解锁工作票
+                    sendTicketBusiness(
+                        false,
+                        mac,
+                        ticketDetail,
+                        null,
+                        ActivityUtils.currentActivity() as BaseActivity<*>,
+                        true
+                    )
+                }
+            }
+        }
+    }
+
     fun submitKeyData(context: Context) {
         if (!CAN_RETURN) return
         val updateList = SPUtils.getUpdateLockPoint(context)