From bd6a8872438a35d47821c5d5da7fe149e5fed3ab Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期三, 21 六月 2023 09:53:36 +0800 Subject: [PATCH] 处理收不到广播 --- app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt | 102 +++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 87 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt b/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt index 93730ba..e98e7f3 100644 --- a/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt +++ b/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt @@ -3,12 +3,14 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import android.net.ConnectivityManager import android.os.Handler import android.os.Looper +import android.util.Log import cn.sinata.xldutils.netstatus.NetUtils import cn.sinata.xldutils.utils.toast +import com.google.gson.Gson import com.okgoincar.bean.LocalOrderBean +import com.okgoincar.bean.OrderBean import com.okgoincar.netUtls.Api import com.okgoincar.netUtls.callNet import com.okgoincar.netUtls.getMapByAny @@ -16,8 +18,31 @@ import org.greenrobot.eventbus.EventBus import java.lang.Exception +/*** + * 为了支持本页面所需的 MyApplication.currentOrderId 所以在订单列表获取处,订单页面,设置了这个常量的值 + * + * 1:接单后 重车时无网 + * --车载屏无反应 + * 缓存 订单开始状态 + * 来网后空车时 --》 查看是否有进行中id,是否有缓存 + * + * + * 2:接单后 空车时无网 + * + * + * + * 3:接单后 正常状态 + * + * + * + * 4:接单后 都没有网络 + * + * + */ class MoneyBroadCastReceiver : BroadcastReceiver() { override fun onReceive(contexts: Context?, intent: Intent?) { + MyApplication.upLog("收到广播,Action:${intent?.action}") + Log.e("MoneyBroadCastReceiver","收到广播,Action:${intent?.action}") if (intent == null && contexts == null) { toast("内容获取为空,广播接收消息错误") return @@ -27,6 +52,7 @@ when (intent!!.action) { "wisdom.intent.action.ledLight" -> { val isHeavy = intent!!.getBooleanExtra("isHeavy", true) + MyApplication.upLog("广播内容,isHeavy:${isHeavy}") if (isHeavy) { callStatue(contexts!!, 5) //代表让订单到进行中 } @@ -47,6 +73,7 @@ companion object { fun callStatue(contexts: Context, i: Int) { if (MyApplication.currentOrderId.isEmpty()) { + MyApplication.upLog("callStatue error,MyApplication.currentOrderId.isEmpty") toast("没有进行中的订单,无法开始") return } @@ -54,6 +81,7 @@ if (NetUtils.isNetworkConnected(MyApplication.getInstance())) { //有网络直接处理 callStartOrder(contexts, i) } else { //无网络 存本地 + toast("当前没有网络,订单将保存在本地") var bean = LocalOrderBean() bean.orderId = MyApplication.currentOrderId bean.startTime = System.currentTimeMillis() @@ -61,11 +89,11 @@ } } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单 if (NetUtils.isNetworkConnected(MyApplication.getInstance())) { - callErrorOrder(contexts) + toast("有网络,有异常数据,此次数据不受理") +// callErrorOrder(contexts) } } } - fun callOver(contexts: Context, travelFee: Double) { if (MyApplication.currentOrderId.isEmpty()) { @@ -76,9 +104,11 @@ if (NetUtils.isNetworkConnected(MyApplication.getInstance())) { //有网络直接处理 callEndOrder(contexts, travelFee) } else { //无网络 存本地 + toast("当前没有网络,订单将保存在本地") var bean = LocalOrderBean() bean.orderId = MyApplication.currentOrderId bean.endTime = System.currentTimeMillis() + bean.money = travelFee CacheKey.saveLocalOrderBean(bean) } } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单 @@ -91,6 +121,7 @@ bean.endTime = System.currentTimeMillis() CacheKey.saveLocalOrderBean(bean) } +// callEndOrder(contexts, travelFee) callErrorOrder(contexts) } } else { @@ -114,18 +145,33 @@ fun callErrorOrder(contexts: Context) { var bean = CacheKey.getLocalOrderBean() bean?.let { - if (bean.money <= 0.0) { + if (bean.endTime <= 0L){ return@let } - CacheKey.saveLocalOrderBeanNull() - val map = getMapByAny() - map["orderId"] = bean.orderId - map["orderType"] = bean.orderType - map["type"] = "1" - map["travelFee"] = bean.money - callNet(contexts, "api/order/confirmFees$", map) { - toast("上传异常订单成功") - EventBus.getDefault().post(BaseEvent(BaseEvent.ERROR_INFO)) + if (bean.startTime <= 0L) { + if (NetUtils.isNetworkConnected(MyApplication.getInstance())){ + CacheKey.saveLocalOrderBeanNull() + toast("调用正常结束,在异常订单中") + callEndOrder(contexts,bean.money) + } + }else{ + if (NetUtils.isNetworkConnected(MyApplication.getInstance())){ + val map = getMapByAny() + map["orderId"] = bean.orderId + map["orderType"] = bean.orderType + map["type"] = "1" + map["travelFee"] = bean.money + CacheKey.saveLocalOrderBeanNull() + toast("调用异常结束,在异常订单中 id==="+bean.orderId) + callNet(contexts, "api/order/confirmFees$", map,{ + MyApplication.currentOrderId = "" + toast("上传异常订单成功") + EventBus.getDefault().post(BaseEvent(BaseEvent.ERROR_INFO)) + }) { + toast("上传异常订单失败") + CacheKey.saveLocalOrderBean(bean) + } + } } } } @@ -142,8 +188,13 @@ } } - private fun callEndOrder(contexts: Context, travelFee: Double) { + if (MyApplication.getLocation().latitude == 0.0){ + Handler(Looper.getMainLooper()).post { + toast("结束时的位置为空,停止结束") + } + return + } var map = getMapByAny() map["orderId"] = MyApplication.currentOrderId map["orderType"] = MyApplication.currentOrderType @@ -152,7 +203,28 @@ map["lon"] = MyApplication.getLocation().longitude map["type"] = 1 callNet(contexts, Api.confirmFees_, map) { - EventBus.getDefault().post(BaseEvent(BaseEvent.SURE_MONEY)) + var mapOrder = getMapByAny() + mapOrder["orderId"] = MyApplication.currentOrderId + mapOrder["orderType"] = MyApplication.currentOrderType + callNet(contexts, Api.queryOrderInfo, mapOrder) { + var orderBean = Gson().fromJson(it, OrderBean::class.java) + EventBus.getDefault().post(BaseEvent(BaseEvent.UPDATA_MAIN_CAR)) + if (orderBean.data.orderState == 7){ + EventBus.getDefault().post(BaseEvent(BaseEvent.SURE_MONEY)) + } + MyApplication.currentOrderId = "" + if (orderBean.data.orderState == 2 ||orderBean.data.orderState == 3 || orderBean.data.orderState == 4 ){ + Handler(Looper.getMainLooper()).postDelayed({ + toast("发送网约") + var intent = Intent(); + intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK; + intent.action = "wisdom.intent.action.topLight"; + intent.putExtra("state", 0) + contexts.sendBroadcast(intent) + },10000) + } + } + } } -- Gitblit v1.7.1