Browse Source

工作票未完成时,弹框提示;移除直接从indicate往下走

Frankensteinly 8 months ago
parent
commit
1059815e4b

+ 61 - 43
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -58,6 +58,7 @@ import com.grkj.iscs.util.SPUtils
 import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.util.ToastUtils
 import com.grkj.iscs.util.log.LogUtil
 import com.grkj.iscs.util.log.LogUtil
 import com.grkj.iscs.view.base.BaseActivity
 import com.grkj.iscs.view.base.BaseActivity
+import com.grkj.iscs.view.dialog.TipDialog
 import pub.devrel.easypermissions.AfterPermissionGranted
 import pub.devrel.easypermissions.AfterPermissionGranted
 
 
 /**
 /**
@@ -361,14 +362,17 @@ object BusinessManager {
     /**
     /**
      * 钥匙归还提示确认弹框
      * 钥匙归还提示确认弹框
      */
      */
-    private fun showKeyReturnDialog(mac: String, isLeft: Boolean, slaveAddress: Byte) {
-//        val dlg = TipDialog(MyApplication.instance!!.applicationContext)
-//        dlg.setTip(MyApplication.instance!!.getString(R.string.key_return_tip))
-//        dlg.setType(TipDialog.TYPE_CONFIRM)
-//        dlg.setConfirmListener {
-//            ModBusController.controlKeyBuckle(false, isLeft, slaveAddress)
-//            getTicketStatusBusiness(mac, true)
-//        }
+    private fun showKeyReturnDialog(onConfirm: () -> Unit, onCancel: () -> Unit) {
+        val ctx = ActivityUtils.currentActivity() as BaseActivity<*>
+        val dlg = TipDialog(ctx)
+        dlg.setTip(ctx.getString(R.string.key_return_tip))
+        dlg.setConfirmListener {
+            onConfirm.invoke()
+        }
+        dlg.setCancelListener {
+            onCancel.invoke()
+        }
+        dlg.show()
     }
     }
 
 
     fun readLockBuckleStatus() {
     fun readLockBuckleStatus() {
@@ -563,12 +567,12 @@ object BusinessManager {
     ) {
     ) {
         Executor.runOnMain {
         Executor.runOnMain {
             // 如果是已经连上的设备,从indicate开始往下走,不需要再扫描了
             // 如果是已经连上的设备,从indicate开始往下走,不需要再扫描了
-            if (BleManager.getInstance().isConnected(mac)) {
-                deviceList.find { it.bleDevice.mac == mac }?.let { itBleDevice ->
-                    indicate(itBleDevice, isNeedLoading, prepareDoneCallBack)
-                    return@runOnMain
-                }
-            }
+//            if (BleManager.getInstance().isConnected(mac)) {
+//                deviceList.find { it.bleDevice.mac == mac }?.let { itBleDevice ->
+//                    indicate(itBleDevice, isNeedLoading, prepareDoneCallBack)
+//                    return@runOnMain
+//                }
+//            }
             CommonUtils.checkBlePermission(activity) {
             CommonUtils.checkBlePermission(activity) {
                 doScanBle(mac, isNeedLoading, prepareDoneCallBack)
                 doScanBle(mac, isNeedLoading, prepareDoneCallBack)
             }
             }
@@ -1047,42 +1051,56 @@ object BusinessManager {
             LogUtil.i("Get ticket status complete : ${bleDevice.mac}")
             LogUtil.i("Get ticket status complete : ${bleDevice.mac}")
             // TD:Ticket Done
             // TD:Ticket Done
             if (isNeedLoading) mEventBus.postValue(MsgEvent(MSG_EVENT_LOADING, LoadingMsg(false, "TD$ticketJson}", true)))
             if (isNeedLoading) mEventBus.postValue(MsgEvent(MSG_EVENT_LOADING, LoadingMsg(false, "TD$ticketJson}", true)))
-            // TODO 根据工作票完成情况,切换为待机模式
-            switchReadyMode(bleDevice)
-
-            // TODO 和confirm dialog冲突,待定
-            val dock = ModBusController.getDockByKeyMac(bleDevice.mac)
-            val keyBean = dock?.getKeyList()?.find { it.mac == bleDevice.mac }
-            keyBean?.let {
-                ModBusController.controlKeyBuckle(false, keyBean.isLeft, dock.addr)
-            }
 
 
-            // 上报隔离点状态
             val workTicketGetBO = Gson().fromJson(ticketJson, WorkTicketGetBO::class.java)
             val workTicketGetBO = Gson().fromJson(ticketJson, WorkTicketGetBO::class.java)
-            val keyNfc = ModBusController.getKeyByMac(bleDevice.mac)?.rfid
-            workTicketGetBO?.data?.forEach { data ->
-                val updateList = mutableListOf<LockPointUpdateReqVO>()
-                data.dataList?.forEach { dataListDTO ->
-                    val updateVO = LockPointUpdateReqVO(
-                        data.taskCode?.toLong(),
-                        dataListDTO.infoRfidNo,
-                        dataListDTO.equipRfidNo,
-                        keyNfc!!,
-                        dataListDTO.target,
-                        dataListDTO.status
-                    )
-                    updateList.add(updateVO)
+
+            // 判断workTicketGetBO里是否有未完成的
+            if (workTicketGetBO.hasFinished()) {
+                handleKeyReturn(bleDevice, workTicketGetBO)
+            } else {
+                showKeyReturnDialog({
+                    handleKeyReturn(bleDevice, workTicketGetBO)
+                }) {
+                    BleManager.getInstance().disconnect(bleDevice)
                 }
                 }
+            }
+        }
+    }
 
 
-                // 上报点位钥匙绑定
-                NetApi.updateLockPointBatch(updateList) { isSuccess ->
+    private fun handleKeyReturn(bleDevice: BleDevice, workTicketGetBO: WorkTicketGetBO?) {
+        // 确认归还,切换为待机模式
+        switchReadyMode(bleDevice)
 
 
-                }
+        val dock = ModBusController.getDockByKeyMac(bleDevice.mac)
+        val keyBean = dock?.getKeyList()?.find { it.mac == bleDevice.mac }
+        keyBean?.let {
+            ModBusController.controlKeyBuckle(false, keyBean.isLeft, dock.addr)
+        }
+
+        // 上报隔离点状态
+        val keyNfc = ModBusController.getKeyByMac(bleDevice.mac)?.rfid
+        workTicketGetBO?.data?.forEach { data ->
+            val updateList = mutableListOf<LockPointUpdateReqVO>()
+            data.dataList?.forEach { dataListDTO ->
+                val updateVO = LockPointUpdateReqVO(
+                    data.taskCode?.toLong(),
+                    dataListDTO.infoRfidNo,
+                    dataListDTO.equipRfidNo,
+                    keyNfc!!,
+                    dataListDTO.target,
+                    dataListDTO.status
+                )
+                updateList.add(updateVO)
+            }
 
 
-                // 上报钥匙归还
-                NetApi.updateKeyReturn(data.taskCode?.toLong()!!, keyNfc!!, MyApplication.instance!!.serialNo()) { isSuccess ->
+            // 上报点位钥匙绑定
+            NetApi.updateLockPointBatch(updateList) { isSuccess ->
+
+            }
+
+            // 上报钥匙归还
+            NetApi.updateKeyReturn(data.taskCode?.toLong()!!, keyNfc!!, MyApplication.instance!!.serialNo()) { isSuccess ->
 
 
-                }
             }
             }
         }
         }
     }
     }

+ 11 - 1
app/src/main/java/com/grkj/iscs/model/bo/WorkTicketGetBO.kt

@@ -73,5 +73,15 @@ class WorkTicketGetBO {
         return "WorkTicketStatusBean(cardNo=$cardNo, password=$password, data=$data)"
         return "WorkTicketStatusBean(cardNo=$cardNo, password=$password, data=$data)"
     }
     }
 
 
-
+    // 判断是否有closed字段为0的
+    fun hasFinished(): Boolean {
+        data?.forEach {
+            it.dataList?.forEach {
+                if (it.closed == 0) {
+                    return false
+                }
+            }
+        }
+        return true
+    }
 }
 }

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

@@ -46,11 +46,7 @@ class LoginActivity : BaseMvpActivity<ILoginView, LoginPresenter, ActivityLoginB
             }
             }
 
 
         // TODO 只适配armeabi-v7a
         // TODO 只适配armeabi-v7a
-//        handleLoading(true, resources.getString(R.string.device_is_initializing))
         BusinessManager.connectDock(true)
         BusinessManager.connectDock(true)
-//        Executor.delayOnMain(2000) {
-//            handleLoading(false)
-//        }
     }
     }
 
 
     /**
     /**

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -68,7 +68,7 @@
 
 
     <string name="make_sure_to_colock">确定要共锁吗?</string>
     <string name="make_sure_to_colock">确定要共锁吗?</string>
     <string name="make_sure_to_unlock">确定要解锁吗?</string>
     <string name="make_sure_to_unlock">确定要解锁吗?</string>
-    <string name="key_return_tip">将读取工作票完成情况</string>
+    <string name="key_return_tip">作业票尚未完成,是否确认归还钥匙?</string>
 
 
     <!--  演示页  -->
     <!--  演示页  -->
     <string name="presentation_select_sop">选择SOP</string>
     <string name="presentation_select_sop">选择SOP</string>