Commit 575c626d by 宁斌

1、完善外賣自取歷史訂單調整 2、新增打印流程監聽類 3、新增Prj原圖查看頁面

parent d1f85c82
...@@ -7,21 +7,23 @@ import okhttp3.FormBody ...@@ -7,21 +7,23 @@ import okhttp3.FormBody
class HistoryOrderRepository private constructor(private val network: CoolWeatherNetwork) { class HistoryOrderRepository private constructor(private val network: CoolWeatherNetwork) {
suspend fun getHistoryOrderList(restaurantId: String, status: String, startDate: String, endDate: String, pageIndex: String, pageSize: String, orderType: Int, orderNo: String = "", phone: String = "") = withContext(Dispatchers.IO) { suspend fun getHistoryOrderList(restaurantId: String, status: String, startDate: String, endDate: String, pageIndex: String, pageSize: String, orderType: String, orderNo: String = "", phone: String = "") = withContext(Dispatchers.IO) {
val builder = FormBody.Builder() // val builder = FormBody.Builder()
.add("restaurantId", restaurantId) // .add("restaurantId", restaurantId)
.add("status", status)//4為已完成 6為取消 // .add("status", status)//4為已完成 6為取消
.add("pageIndex", pageIndex) // .add("pageIndex", pageIndex)
.add("pageSize", pageSize) // .add("pageSize", pageSize)
.add("orderNo", orderNo) // .add("orderNo", orderNo)
.add("startDate", startDate) // .add("startDate", startDate)
.add("endDate", endDate) // .add("endDate", endDate)
.add("phone", phone) //// .add("phone", phone)
if (orderType == 8) { // .add("param", phone)//訂單號或手機號
builder.add("orderType", orderType.toString()) // .add("orderType", "2,7")//訂單類型 2 線上外賣訂單,7 自取訂單
} // if (orderType == 8) {
val requestBody = builder.build() // builder.add("orderType", orderType.toString())
val heWeather = network.getHistoryOrderList(requestBody) // }
// val requestBody = builder.build()
val heWeather = network.getHistoryOrderList(restaurantId,startDate, endDate, phone, status, orderType, pageIndex, pageSize)
heWeather heWeather
} }
......
package com.gingersoft.gsa.delivery_pick_mode.data.model.bean package com.gingersoft.gsa.delivery_pick_mode.data.model.bean
class HistoryOrderBean { import com.google.gson.annotations.SerializedName
/**
* success : true
* sysTime : 1587026350363
* data : [{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)15:30~16:00","PHONE":"18995813316","orderPayType":1,"ORDER_NO":"26201551325454427","STATUS":4,"PAY_AMOUNT":60,"Id":4350992,"CREATE_TIME":"Mar 27, 2020 3:23:45 PM","takeFoodCode":"0036","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)立即","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200681304157037","STATUS":4,"PAY_AMOUNT":60,"Id":4348789,"CREATE_TIME":"Mar 27, 2020 12:27:21 PM","takeFoodCode":"0035","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)立即","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200221368356841","STATUS":4,"PAY_AMOUNT":46,"Id":4348785,"CREATE_TIME":"Mar 27, 2020 12:27:07 PM","takeFoodCode":"0034","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:30~13:00","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26201371328853396","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348780,"CREATE_TIME":"Mar 27, 2020 12:26:44 PM","takeFoodCode":"0033","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26203051303752129","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348467,"CREATE_TIME":"Mar 27, 2020 11:47:59 AM","takeFoodCode":"0032","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26201611370358516","STATUS":4,"PAY_AMOUNT":9999,"Id":4348434,"CREATE_TIME":"Mar 27, 2020 11:42:35 AM","takeFoodCode":"0031","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26201341375950995","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348392,"CREATE_TIME":"Mar 27, 2020 11:35:35 AM","takeFoodCode":"0030","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26200871312851078","STATUS":4,"PAY_AMOUNT":9999,"Id":4348287,"CREATE_TIME":"Mar 27, 2020 11:18:44 AM","takeFoodCode":"0029","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26202231360959188","STATUS":4,"PAY_AMOUNT":9999,"Id":4348114,"CREATE_TIME":"Mar 27, 2020 10:43:53 AM","takeFoodCode":"0028","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200591367856595","STATUS":4,"PAY_AMOUNT":46,"Id":4347838,"CREATE_TIME":"Mar 27, 2020 9:51:13 AM","takeFoodCode":"0027","order_type":7,"RECEIVER":""},{"sumnum":1827}]
*/
var success: Boolean = false
var sysTime: Long = 0
var data: ArrayList<DataBean>? = null
class DataBean { class HistoryOrderBean(
/** @SerializedName("data")
* MEMBER_NAME : Li val `data`: Data,
* ADDRESS_DETAIL : @SerializedName("success")
* takeTime : 03-27 (週五)15:30~16:00 var success: Boolean,
* PHONE : 18995813316 @SerializedName("sysTime")
* orderPayType : 1 val sysTime: Long) {
* ORDER_NO : 26201551325454427
* STATUS : 4
* PAY_AMOUNT : 60.0
* Id : 4350992
* CREATE_TIME : Mar 27, 2020 3:23:45 PM
* takeFoodCode : 0036
* order_type : 7
* RECEIVER :
* sumnum : 1827
*/
var MEMBER_NAME: String? = null class Data(
var ADDRESS_DETAIL: String? = null @SerializedName("count")
var takeTime: String? = null val count: Int,
var PHONE: String? = null @SerializedName("list")
var orderPayType: Int = 0 val list: ArrayList<OrderItem>) {
var ORDER_NO: String? = null
var STATUS: Int = 0 class OrderItem(
var PAY_AMOUNT: Double = 0.toDouble() @SerializedName("addressDetail")
var Id: Int = 0 val addressDetail: String,
var CREATE_TIME: String? = null @SerializedName("createTime")
var takeFoodCode: String? = null val createTime: String,
var order_type: Int = 0 @SerializedName("id")
var RECEIVER: String? = null val id: Int,
var sumnum: Int = 0 @SerializedName("orderNo")
val orderNo: String,
@SerializedName("orderPayType")
val orderPayType: Int,
@SerializedName("orderStatus")
val orderStatus: Int,
@SerializedName("orderType")
val orderType: Int,
@SerializedName("phone")
val phone: String,
@SerializedName("reasonDesc")
val reasonDesc: String,
@SerializedName("receiver")
val `receiver`: String,
@SerializedName("status")
val status: Int,
@SerializedName("takeFoodCode")
val takeFoodCode: String,
@SerializedName("takeTime")
val takeTime: String,
@SerializedName("totalAmount")
val totalAmount: Double,
@SerializedName("trkNo")
val trkNo: String
)
} }
} }
\ No newline at end of file
//class HistoryOrderBean {
// /**
// * success : true
// * sysTime : 1587026350363
// * data : [{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)15:30~16:00","PHONE":"18995813316","orderPayType":1,"ORDER_NO":"26201551325454427","STATUS":4,"PAY_AMOUNT":60,"Id":4350992,"CREATE_TIME":"Mar 27, 2020 3:23:45 PM","takeFoodCode":"0036","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)立即","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200681304157037","STATUS":4,"PAY_AMOUNT":60,"Id":4348789,"CREATE_TIME":"Mar 27, 2020 12:27:21 PM","takeFoodCode":"0035","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)立即","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200221368356841","STATUS":4,"PAY_AMOUNT":46,"Id":4348785,"CREATE_TIME":"Mar 27, 2020 12:27:07 PM","takeFoodCode":"0034","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:30~13:00","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26201371328853396","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348780,"CREATE_TIME":"Mar 27, 2020 12:26:44 PM","takeFoodCode":"0033","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26203051303752129","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348467,"CREATE_TIME":"Mar 27, 2020 11:47:59 AM","takeFoodCode":"0032","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26201611370358516","STATUS":4,"PAY_AMOUNT":9999,"Id":4348434,"CREATE_TIME":"Mar 27, 2020 11:42:35 AM","takeFoodCode":"0031","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26201341375950995","STATUS":4,"PAY_AMOUNT":44.9,"Id":4348392,"CREATE_TIME":"Mar 27, 2020 11:35:35 AM","takeFoodCode":"0030","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26200871312851078","STATUS":4,"PAY_AMOUNT":9999,"Id":4348287,"CREATE_TIME":"Mar 27, 2020 11:18:44 AM","takeFoodCode":"0029","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"嘟嘟嘟1","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"15073379600","orderPayType":1,"ORDER_NO":"26202231360959188","STATUS":4,"PAY_AMOUNT":9999,"Id":4348114,"CREATE_TIME":"Mar 27, 2020 10:43:53 AM","takeFoodCode":"0028","order_type":7,"RECEIVER":""},{"MEMBER_NAME":"Li","ADDRESS_DETAIL":"","takeTime":"03-27 (週五)12:00~12:30","PHONE":"13554770615","orderPayType":1,"ORDER_NO":"26200591367856595","STATUS":4,"PAY_AMOUNT":46,"Id":4347838,"CREATE_TIME":"Mar 27, 2020 9:51:13 AM","takeFoodCode":"0027","order_type":7,"RECEIVER":""},{"sumnum":1827}]
// */
// var success: Boolean = false
// var sysTime: Long = 0
// var data: ArrayList<DataBean>? = null
//
// class DataBean {
// /**
// * MEMBER_NAME : Li
// * ADDRESS_DETAIL :
// * takeTime : 03-27 (週五)15:30~16:00
// * PHONE : 18995813316
// * orderPayType : 1
// * ORDER_NO : 26201551325454427
// * STATUS : 4
// * PAY_AMOUNT : 60.0
// * Id : 4350992
// * CREATE_TIME : Mar 27, 2020 3:23:45 PM
// * takeFoodCode : 0036
// * order_type : 7
// * RECEIVER :
// * sumnum : 1827
// */
//
// var MEMBER_NAME: String? = null
// var ADDRESS_DETAIL: String? = null
// var takeTime: String? = null
// var PHONE: String? = null
// var orderPayType: Int = 0
// var ORDER_NO: String? = null
// var STATUS: Int = 0
// var PAY_AMOUNT: Double = 0.toDouble()
// var Id: Int = 0
// var CREATE_TIME: String? = null
// var takeFoodCode: String? = null
// var order_type: Int = 0
// var RECEIVER: String? = null
// var sumnum: Int = 0
// }
//}
\ No newline at end of file
...@@ -6,6 +6,7 @@ import okhttp3.RequestBody ...@@ -6,6 +6,7 @@ import okhttp3.RequestBody
import retrofit2.Call import retrofit2.Call
import retrofit2.Callback import retrofit2.Callback
import retrofit2.Response import retrofit2.Response
import retrofit2.http.Query
import kotlin.coroutines.resume import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException import kotlin.coroutines.resumeWithException
import kotlin.coroutines.suspendCoroutine import kotlin.coroutines.suspendCoroutine
...@@ -71,7 +72,8 @@ class CoolWeatherNetwork { ...@@ -71,7 +72,8 @@ class CoolWeatherNetwork {
suspend fun getDeliveryConfigDTO(requestBody: RequestBody) = gsposService.getDeliveryConfigDTO(requestBody).await() suspend fun getDeliveryConfigDTO(requestBody: RequestBody) = gsposService.getDeliveryConfigDTO(requestBody).await()
//獲取歷史訂單 //獲取歷史訂單
suspend fun getHistoryOrderList(requestBody: RequestBody) = ricepon_WechatService.getHistoryOrderList(requestBody).await() suspend fun getHistoryOrderList(restaurantId: String, startTime: String, endTime: String, param: String,
status: String, orderType: String, pageIndex: String, pageSize: String) = orderPayService.getHistoryOrderList(restaurantId,startTime, endTime, param, status, orderType, pageIndex, pageSize).await()
//取消物流 //取消物流
suspend fun cancelLogistics(requestBody: RequestBody) = gsposService.cancelLogistics(requestBody).await() suspend fun cancelLogistics(requestBody: RequestBody) = gsposService.cancelLogistics(requestBody).await()
...@@ -83,7 +85,7 @@ class CoolWeatherNetwork { ...@@ -83,7 +85,7 @@ class CoolWeatherNetwork {
suspend fun getCancelReason(brandId: Int, restaurantId: Int, type: Int) = cloudService.getCancelReason(brandId, restaurantId, type).await() suspend fun getCancelReason(brandId: Int, restaurantId: Int, type: Int) = cloudService.getCancelReason(brandId, restaurantId, type).await()
//獲取商家配置的支付方式 //獲取商家配置的支付方式
suspend fun getPayMethod(brandId: Int, restaurantId: Int, payType :Int) = cloudService.getPayMethod(brandId, restaurantId, payType).await() suspend fun getPayMethod(brandId: Int, restaurantId: Int, payType: Int) = cloudService.getPayMethod(brandId, restaurantId, payType).await()
suspend fun addPrj(requestBody: RequestBody) = cloudService.addPrj(requestBody).await() suspend fun addPrj(requestBody: RequestBody) = cloudService.addPrj(requestBody).await()
......
...@@ -50,8 +50,13 @@ interface WeatherService { ...@@ -50,8 +50,13 @@ interface WeatherService {
@POST("gsa/getDeliveryConfigDTO") @POST("gsa/getDeliveryConfigDTO")
fun getDeliveryConfigDTO(@Body requestBody: RequestBody): Call<DeliveryConfig> fun getDeliveryConfigDTO(@Body requestBody: RequestBody): Call<DeliveryConfig>
@POST("wechat/findHistoryOrderList") // @POST("wechat/findHistoryOrderList")
fun getHistoryOrderList(@Body requestBody: RequestBody): Call<HistoryOrderBean> // fun getHistoryOrderList(@Body requestBody: RequestBody): Call<HistoryOrderBean>
@GET("historyOrder/getOrderList")
fun getHistoryOrderList(@Query("restaurantId") restaurantId: String,
@Query("startTime") startTime: String, @Query("endTime") endTime: String, @Query("param") param: String,
@Query("status") status: String, @Query("orderType") orderType: String, @Query("pageIndex") pageIndex: String, @Query("pageSize") pageSize: String): Call<HistoryOrderBean>
@POST("gsa/cancelOrder") @POST("gsa/cancelOrder")
fun cancelLogistics(@Body requestBody: RequestBody): Call<CancelLogisticsBean> fun cancelLogistics(@Body requestBody: RequestBody): Call<CancelLogisticsBean>
...@@ -63,7 +68,7 @@ interface WeatherService { ...@@ -63,7 +68,7 @@ interface WeatherService {
fun getCancelReason(@Query("brandId") brandId: Int, @Query("restaurantId") restaurantId: Int, @Query("type") type: Int): Call<CancelReason> fun getCancelReason(@Query("brandId") brandId: Int, @Query("restaurantId") restaurantId: Int, @Query("type") type: Int): Call<CancelReason>
@GET("restaurant/pay/get") @GET("restaurant/pay/get")
fun getPayMethod(@Query("brandId") brandId: Int, @Query("restaurantId") restaurantId: Int, @Query("payType") payType :Int): Call<PayTypeInfo> fun getPayMethod(@Query("brandId") brandId: Int, @Query("restaurantId") restaurantId: Int, @Query("payType") payType: Int): Call<PayTypeInfo>
@POST("printerRecording/add") @POST("printerRecording/add")
fun addPrj(@Body requestBody: RequestBody): Call<String> fun addPrj(@Body requestBody: RequestBody): Call<String>
......
...@@ -22,10 +22,11 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo ...@@ -22,10 +22,11 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
var historyData = MutableLiveData<HistoryOrderBean>() var historyData = MutableLiveData<HistoryOrderBean>()
var historyTime = MutableLiveData<String>(TimeUtils.getOldDate(0)) //按時間查詢 var historyStartTime = MutableLiveData<String>(TimeUtils.getOldDate(0)) //查詢開始時間
var historyEndTime = MutableLiveData<String>(TimeUtils.getOldDate(0)) //查詢結束時間
var status = MutableLiveData("4") //按類型查詢 var status = MutableLiveData("4") //按類型查詢
var searchValue = MutableLiveData("")//按搜索內容查詢 var searchValue = MutableLiveData("")//按搜索內容查詢
var orderType = 0 var orderType = "2,7" //訂單類型 2 線上外賣訂單,7 自取訂單
fun getHistoryOrderList(pageIndex: String, orderNum: String = "", startDate: String, endDate: String, status: String) { fun getHistoryOrderList(pageIndex: String, orderNum: String = "", startDate: String, endDate: String, status: String) {
launch({ launch({
...@@ -37,17 +38,20 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo ...@@ -37,17 +38,20 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
orderNumber = orderNum orderNumber = orderNum
} }
historyOrderRepository.getHistoryOrderList(RestaurantInfoManager.newInstance().getRestaurantId().toString(), status, startDate, endDate, pageIndex, "10", orderType, orderNumber, phone).apply { historyOrderRepository.getHistoryOrderList(RestaurantInfoManager.newInstance().getRestaurantId().toString(), status, startDate, endDate, pageIndex, "10", orderType, orderNumber, phone).apply {
this.data?.let { if (this.data == null) {
if (it.size > 0) { historyData.postValue(this)
it.removeAt(it.size - 1)//移除最後一個,最後一個是顯示總條數的 } else {
} this.data.let {
if (it?.list != null && it?.list.size > 0) {
if (pageIndex == "1") { it.list.removeAt(it.list.size - 1)//移除最後一個,最後一個是顯示總條數的
historyData.postValue(this) }
} else { if (pageIndex == "1") {
historyData.value!!.data!!.addAll(it) historyData.postValue(this)
historyData.postValue(historyData.value) } else {
historyData.value!!.success = true historyData.value!!.data!!.list.addAll(it.list)
historyData.postValue(historyData.value)
historyData.value!!.success = true
}
} }
} }
} }
...@@ -71,9 +75,9 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo ...@@ -71,9 +75,9 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
}) })
} }
fun printOrder(context: Context, data: HistoryOrderBean.DataBean, listener: (Boolean) -> Unit) { fun printOrder(context: Context, data: HistoryOrderBean.Data.OrderItem, listener: (Boolean) -> Unit) {
launch({ launch({
getOrderInfo(data.Id.toString()) { getOrderInfo(data.id.toString()) {
printOrder(it, data, context, listener) printOrder(it, data, context, listener)
} }
}, { }, {
...@@ -84,10 +88,10 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo ...@@ -84,10 +88,10 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
/** /**
* 打印訂單 * 打印訂單
*/ */
private fun printOrder(orderDetails: OrderDetails, data: HistoryOrderBean.DataBean, context: Context, listener: (Boolean) -> Unit) { private fun printOrder(orderDetails: OrderDetails, data: HistoryOrderBean.Data.OrderItem, context: Context, listener: (Boolean) -> Unit) {
if (orderDetails.data != null) { if (orderDetails.data != null) {
//訂單信息和廚房單 //訂單信息和廚房單
orderDetails.data!![0].order_type = data.order_type orderDetails.data!![0].order_type = data.orderType
orderDetails.data!![0].orderPayType = data.orderPayType orderDetails.data!![0].orderPayType = data.orderPayType
TakeawayOrder.getInstance().shoppingCart.deliveryAndPickupData = orderDetails.data!![0] TakeawayOrder.getInstance().shoppingCart.deliveryAndPickupData = orderDetails.data!![0]
......
...@@ -57,10 +57,13 @@ class HistoryOrderActivity : BaseActivity<IPresenter>() { ...@@ -57,10 +57,13 @@ class HistoryOrderActivity : BaseActivity<IPresenter>() {
private fun initViewModel() { private fun initViewModel() {
mViewModel = ViewModelProvider(this, InjectorUtil.getHistoryModelFactory())[HistoryOrderViewModel::class.java].apply { mViewModel = ViewModelProvider(this, InjectorUtil.getHistoryModelFactory())[HistoryOrderViewModel::class.java].apply {
orderType = CCUtil.getNavigateParam(this@HistoryOrderActivity, DeliveryPickConstans.ORDER_TYPE, 0) orderType = CCUtil.getNavigateParam(this@HistoryOrderActivity, DeliveryPickConstans.ORDER_TYPE, orderType)
historyTime.observe(this@HistoryOrderActivity, androidx.lifecycle.Observer { historyStartTime.observe(this@HistoryOrderActivity, androidx.lifecycle.Observer {
tv_start_time.text = it tv_start_time.text = it
}) })
historyEndTime.observe(this@HistoryOrderActivity, androidx.lifecycle.Observer {
tv_end_time.text = it
})
} }
} }
...@@ -97,11 +100,30 @@ class HistoryOrderActivity : BaseActivity<IPresenter>() { ...@@ -97,11 +100,30 @@ class HistoryOrderActivity : BaseActivity<IPresenter>() {
e.printStackTrace() e.printStackTrace()
} }
TimePickerUtils.showReportTimePicker(this@HistoryOrderActivity, startTime, Calendar.getInstance(), defaultTime) { date, _ -> TimePickerUtils.showReportTimePicker(this@HistoryOrderActivity, startTime, Calendar.getInstance(), defaultTime) { date, _ ->
mViewModel.historyTime.postValue(TimeUtils.DATE_FORMAT_DATE.format(date)) mViewModel.historyStartTime.postValue(TimeUtils.DATE_FORMAT_DATE.format(date))
}.setOnDismissListener { }.setOnDismissListener {
iv_start_time_triangle.toggle() iv_start_time_triangle.toggle()
} }
} }
R.id.iv_end_time_triangle, R.id.tv_end_time -> {
iv_end_time_triangle.toggle()
val startTime = Calendar.getInstance()
startTime.set(2019, 0, 1)
val defaultTime = Calendar.getInstance()
try {
//設置默認時間為當前的結束時間
TimeUtils.DATE_FORMAT_DATE.parse(tv_end_time.text.toString())?.let {
defaultTime.time = it
}
} catch (e: ParseException) {
e.printStackTrace()
}
TimePickerUtils.showReportTimePicker(this@HistoryOrderActivity, startTime, Calendar.getInstance(), defaultTime) { date, _ ->
mViewModel.historyEndTime.postValue(TimeUtils.DATE_FORMAT_DATE.format(date))
}.setOnDismissListener {
iv_end_time_triangle.toggle()
}
}
} }
} }
} }
\ No newline at end of file
...@@ -2,21 +2,25 @@ package com.gingersoft.gsa.delivery_pick_mode.ui.adapter ...@@ -2,21 +2,25 @@ package com.gingersoft.gsa.delivery_pick_mode.ui.adapter
import android.content.Context import android.content.Context
import android.graphics.drawable.GradientDrawable import android.graphics.drawable.GradientDrawable
import android.text.TextUtils
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.Nullable
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.gingersoft.gsa.cloud.pay.contract.PayTypeContract
import com.gingersoft.gsa.delivery_pick_mode.R import com.gingersoft.gsa.delivery_pick_mode.R
import com.gingersoft.gsa.delivery_pick_mode.data.model.bean.HistoryOrderBean.DataBean import com.gingersoft.gsa.delivery_pick_mode.data.model.bean.HistoryOrderBean.Data.OrderItem
import com.gingersoft.gsa.delivery_pick_mode.databinding.LayoutHistoryOrderItemBinding import com.gingersoft.gsa.delivery_pick_mode.databinding.LayoutHistoryOrderItemBinding
import com.scwang.smartrefresh.layout.util.SmartUtil import com.scwang.smartrefresh.layout.util.SmartUtil
class HistoryOrderAdapter(var stauts: String?, private val context: Context, var data: List<DataBean>?) : RecyclerView.Adapter<HistoryOrderAdapter.ViewHolder>() { class HistoryOrderAdapter(var stauts: String?, private val context: Context, var data: List<OrderItem>?) : RecyclerView.Adapter<HistoryOrderAdapter.ViewHolder>() {
//item點擊事件 //item點擊事件
private var listenter: ((item: DataBean) -> Unit)? = null private var listenter: ((item: OrderItem) -> Unit)? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.layout_history_order_item, parent, false)) return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.layout_history_order_item, parent, false))
...@@ -38,11 +42,11 @@ class HistoryOrderAdapter(var stauts: String?, private val context: Context, var ...@@ -38,11 +42,11 @@ class HistoryOrderAdapter(var stauts: String?, private val context: Context, var
orderingMethodBg.shape = GradientDrawable.OVAL orderingMethodBg.shape = GradientDrawable.OVAL
holder.binding.orderingMethod = holder.binding.orderingMethod =
when { when {
data!!.order_type == 2 -> { data!!.orderType == 2 -> {
orderingMethodBg.setColor(getColor(R.color.order_state2_color)) orderingMethodBg.setColor(getColor(R.color.order_state2_color))
"外" "外"
} }
data.order_type == 7 -> { data.orderType == 7 -> {
orderingMethodBg.setColor(getColor(R.color.order_state3_color)) orderingMethodBg.setColor(getColor(R.color.order_state3_color))
"自" "自"
} }
...@@ -81,12 +85,86 @@ class HistoryOrderAdapter(var stauts: String?, private val context: Context, var ...@@ -81,12 +85,86 @@ class HistoryOrderAdapter(var stauts: String?, private val context: Context, var
} else if (stauts.equals("6")) { } else if (stauts.equals("6")) {
//已取消訂單 //已取消訂單
holder.iv_end.setImageResource(R.drawable.img_cancelled) holder.iv_end.setImageResource(R.drawable.img_cancelled)
setOrderReason(holder, stauts!!, data.orderPayType, data.reasonDesc);
} }
// setViewVisableByStatus(holder, stauts!!);
} else { } else {
holder.iv_end.setImageResource(R.drawable.ic_has_end) holder.iv_end.setImageResource(R.drawable.ic_has_end)
} }
} }
private fun setViewVisiableByStatus(holder: ViewHolder, status: String) {
when (status) {
"4" -> {
holder.tv_cancel_reason_text.visibility = View.GONE;
holder.tv_cancel_reason.visibility = View.GONE;
holder.tv_refund_reason_text.visibility = View.GONE;
holder.tv_refund_reason.visibility = View.GONE;
}
"6" -> {
holder.tv_cancel_reason_text.visibility = View.VISIBLE;
holder.tv_cancel_reason.visibility = View.VISIBLE;
holder.tv_refund_reason_text.visibility = View.VISIBLE;
holder.tv_refund_reason.visibility = View.VISIBLE;
}
}
}
private fun setOrderReason(holder: ViewHolder, status: String, orderPayType: Int, reasonDesc: String) {
var refundReason = getRefundReasonByStatus(status, orderPayType);
if (!TextUtils.isEmpty(refundReason)) {
if (status.equals("5")) {
holder.tv_refund_reason.setTextColor(getColor(R.color.green_400))
} else {
holder.tv_refund_reason.setTextColor(getColor(R.color.red))
}
holder.tv_refund_reason.setText(refundReason)
holder.tv_refund_reason_text.setText("退款進度:")
holder.tv_refund_reason_text.visibility = View.VISIBLE
holder.tv_refund_reason.visibility = View.VISIBLE
holder.tv_address_text.visibility = View.GONE
holder.tv_address.visibility = View.GONE
} else {
holder.tv_refund_reason_text.visibility = View.GONE
holder.tv_refund_reason.visibility = View.GONE
holder.tv_address_text.visibility = View.VISIBLE
holder.tv_address.visibility = View.VISIBLE
}
if (reasonDesc != null) {
holder.tv_cancel_reason.setText(reasonDesc)
holder.tv_cancel_reason_text.setText("取消原因:")
holder.tv_cancel_reason_text.visibility = View.VISIBLE
holder.tv_cancel_reason.visibility = View.VISIBLE
} else {
holder.tv_cancel_reason_text.visibility = View.GONE
holder.tv_cancel_reason.visibility = View.GONE
}
}
/**
* 獲取退款說明
*/
private fun getRefundReasonByStatus(status: String, orderPayType: Int): String {
when (status) {
"5" -> {
return "退款完成"
}
else -> {
when (orderPayType) {
PayTypeContract.PAY_METHOD_ID_1021 -> { //只有Google pay需要5-7天,其他支付方式都是秒退
return "退款中(預計5-7個工作日退回原賬戶)"
}
else -> {
return "無";
}
}
}
}
return "";
}
private fun getColor(color: Int): Int { private fun getColor(color: Int): Int {
return ContextCompat.getColor(context, color) return ContextCompat.getColor(context, color)
} }
...@@ -94,9 +172,15 @@ class HistoryOrderAdapter(var stauts: String?, private val context: Context, var ...@@ -94,9 +172,15 @@ class HistoryOrderAdapter(var stauts: String?, private val context: Context, var
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var binding: LayoutHistoryOrderItemBinding = DataBindingUtil.bind(itemView)!! var binding: LayoutHistoryOrderItemBinding = DataBindingUtil.bind(itemView)!!
var iv_end = itemView.findViewById<ImageView>(R.id.iv_end) var iv_end = itemView.findViewById<ImageView>(R.id.iv_end)
var tv_address_text = itemView.findViewById<TextView>(R.id.tv_address_text)
var tv_address = itemView.findViewById<TextView>(R.id.tv_address)
var tv_cancel_reason_text = itemView.findViewById<TextView>(R.id.tv_cancel_reason_text)
var tv_cancel_reason = itemView.findViewById<TextView>(R.id.tv_cancel_reason)
var tv_refund_reason_text = itemView.findViewById<TextView>(R.id.tv_refund_reason_text)
var tv_refund_reason = itemView.findViewById<TextView>(R.id.tv_refund_reason)
} }
fun setOnItemClickListenter(listenter: (item: DataBean) -> Unit) { fun setOnItemClickListenter(listenter: (item: OrderItem) -> Unit) {
this.listenter = listenter this.listenter = listenter
} }
} }
\ No newline at end of file
...@@ -35,19 +35,19 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) { ...@@ -35,19 +35,19 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) {
refresh_layout.finishLoadMore() refresh_layout.finishLoadMore()
it?.let { _ -> it?.let { _ ->
refresh_layout.setEnableLoadMore((it.data != null && it.data!!.size > 0)) refresh_layout.setEnableLoadMore((it.data != null && it.data.list != null && it.data.list!!.size > 0))
if (mHistoryOrderAdapter == null) { if (mHistoryOrderAdapter == null) {
mHistoryOrderAdapter = it.data.let { it1 -> context?.let { it2 -> HistoryOrderAdapter(status.value, it2, it1) } } mHistoryOrderAdapter = it.data.list.let { it1 -> context?.let { it2 -> HistoryOrderAdapter(status.value, it2, it1) } }
rv_other_order.layoutManager = LinearLayoutManager(context) rv_other_order.layoutManager = LinearLayoutManager(context)
rv_other_order.adapter = mHistoryOrderAdapter rv_other_order.adapter = mHistoryOrderAdapter
mHistoryOrderAdapter!!.setOnItemClickListenter { it -> mHistoryOrderAdapter!!.setOnItemClickListenter { it ->
showLoading() showLoading()
viewModel.getOrderInfo(it.Id.toString()) { it2 -> viewModel.getOrderInfo(it.id.toString()) { it2 ->
cancelDialogForLoading() cancelDialogForLoading()
if (it2.data != null && it2.data!!.isNotEmpty()) { if (it2.data != null && it2.data!!.isNotEmpty()) {
//顯示彈窗 //顯示彈窗
context?.let { context -> context?.let { context ->
OtherOrderUtils.showOrderDetailsDialog(context, it2, it.STATUS, it.order_type, true) { _, _, _ -> OtherOrderUtils.showOrderDetailsDialog(context, it2, it.status, it.orderType, true) { _, _, _ ->
//重印 //重印
showLoading() showLoading()
viewModel.printOrder(context, it) { viewModel.printOrder(context, it) {
...@@ -66,15 +66,19 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) { ...@@ -66,15 +66,19 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) {
} }
} }
} else { } else {
mHistoryOrderAdapter!!.data = it.data mHistoryOrderAdapter!!.data = it.data.list
mHistoryOrderAdapter!!.stauts = status.value mHistoryOrderAdapter!!.stauts = status.value
mHistoryOrderAdapter!!.notifyDataSetChanged() mHistoryOrderAdapter!!.notifyDataSetChanged()
} }
} }
layout_nodata.setState(it?.data == null || it.data!!.size <= 0) layout_nodata.setState(it?.data == null || it.data?.list == null || it.data.list!!.size <= 0)
}) })
historyStartTime.observe(viewLifecycleOwner, Observer {
historyTime.observe(viewLifecycleOwner, Observer { //當時間發生變化,請求數據
pageIndex = 1
getHistoryInfo()
})
historyEndTime.observe(viewLifecycleOwner, Observer {
//當時間發生變化,請求數據 //當時間發生變化,請求數據
pageIndex = 1 pageIndex = 1
getHistoryInfo() getHistoryInfo()
...@@ -101,7 +105,7 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) { ...@@ -101,7 +105,7 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) {
private fun getHistoryInfo(page: Int = pageIndex) { private fun getHistoryInfo(page: Int = pageIndex) {
showLoading() showLoading()
viewModel.getHistoryOrderList(page.toString(), viewModel.searchValue.value!!, viewModel.historyTime.value!!, viewModel.historyTime.value!!, viewModel.status.value!!) viewModel.getHistoryOrderList(page.toString(), viewModel.searchValue.value!!, viewModel.historyStartTime.value!!, viewModel.historyEndTime.value!!, viewModel.status.value!!)
} }
......
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
android:onClick="onClickListener" android:onClick="onClickListener"
android:textColor="@color/theme_333_color" android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_14" android:textSize="@dimen/dp_14"
android:visibility="gone" android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@id/tv_to" app:layout_constraintBottom_toBottomOf="@id/tv_to"
app:layout_constraintLeft_toRightOf="@id/tv_to" app:layout_constraintLeft_toRightOf="@id/tv_to"
app:layout_constraintTop_toTopOf="@id/tv_to" /> app:layout_constraintTop_toTopOf="@id/tv_to" />
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
android:layout_height="@dimen/dp_5" android:layout_height="@dimen/dp_5"
android:layout_marginLeft="@dimen/dp_2" android:layout_marginLeft="@dimen/dp_2"
android:onClick="onClickListener" android:onClick="onClickListener"
android:visibility="gone" android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@id/tv_end_time" app:layout_constraintBottom_toBottomOf="@id/tv_end_time"
app:layout_constraintLeft_toRightOf="@id/tv_end_time" app:layout_constraintLeft_toRightOf="@id/tv_end_time"
app:layout_constraintTop_toTopOf="@id/tv_end_time" app:layout_constraintTop_toTopOf="@id/tv_end_time"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android" <layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto">
<data> <data>
...@@ -8,7 +9,7 @@ ...@@ -8,7 +9,7 @@
<variable <variable
name="data" name="data"
type="com.gingersoft.gsa.delivery_pick_mode.data.model.bean.HistoryOrderBean.DataBean" /> type="com.gingersoft.gsa.delivery_pick_mode.data.model.bean.HistoryOrderBean.Data.OrderItem" />
<variable <variable
name="orderingMethod" name="orderingMethod"
...@@ -78,7 +79,7 @@ ...@@ -78,7 +79,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5" android:layout_marginTop="@dimen/dp_5"
android:text="@{data.rECEIVER}" android:text="@{data.receiver}"
android:textColor="@color/theme_333_color" android:textColor="@color/theme_333_color"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
android:textStyle="bold" android:textStyle="bold"
...@@ -92,7 +93,7 @@ ...@@ -92,7 +93,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_5" android:layout_marginLeft="@dimen/dp_5"
android:text="@{TimeUtils.parseTimeRepeat(data.cREATE_TIME,TimeUtils.DEFAULT_DATE_FORMAT)}" android:text="@{TimeUtils.parseTimeRepeat(data.createTime,TimeUtils.DEFAULT_DATE_FORMAT)}"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_order_user_name" /> app:layout_constraintTop_toTopOf="@id/tv_order_user_name" />
...@@ -102,8 +103,7 @@ ...@@ -102,8 +103,7 @@
android:layout_height="0dp" android:layout_height="0dp"
android:src="@drawable/ic_has_end" android:src="@drawable/ic_has_end"
app:layout_constraintBottom_toTopOf="@id/tv_order_amount" app:layout_constraintBottom_toTopOf="@id/tv_order_amount"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent" />
app:layout_constraintTop_toBottomOf="@id/tv_order_time" />
<androidx.constraintlayout.widget.Barrier <androidx.constraintlayout.widget.Barrier
...@@ -130,7 +130,7 @@ ...@@ -130,7 +130,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_5" android:layout_marginLeft="@dimen/dp_5"
android:text="@{data.PHONE}" android:text="@{data.phone}"
app:layout_constraintLeft_toRightOf="@id/barrier_order_info" app:layout_constraintLeft_toRightOf="@id/barrier_order_info"
app:layout_constraintRight_toLeftOf="@id/iv_end" app:layout_constraintRight_toLeftOf="@id/iv_end"
app:layout_constraintTop_toTopOf="@id/tv_cellphone_num_text" /> app:layout_constraintTop_toTopOf="@id/tv_cellphone_num_text" />
...@@ -138,7 +138,6 @@ ...@@ -138,7 +138,6 @@
<TextView <TextView
android:id="@+id/tv_order_num_text" android:id="@+id/tv_order_num_text"
style="@style/otherOrder_item_info_title_textStyle" style="@style/otherOrder_item_info_title_textStyle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_2" android:layout_marginLeft="@dimen/dp_2"
...@@ -152,7 +151,7 @@ ...@@ -152,7 +151,7 @@
style="@style/otherOrder_item_info_textStyle" style="@style/otherOrder_item_info_textStyle"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{data.ORDER_NO}" android:text="@{data.orderNo}"
app:layout_constraintLeft_toLeftOf="@id/tv_cellphone_num" app:layout_constraintLeft_toLeftOf="@id/tv_cellphone_num"
app:layout_constraintRight_toLeftOf="@id/iv_end" app:layout_constraintRight_toLeftOf="@id/iv_end"
app:layout_constraintTop_toTopOf="@id/tv_order_num_text" /> app:layout_constraintTop_toTopOf="@id/tv_order_num_text" />
...@@ -165,7 +164,7 @@ ...@@ -165,7 +164,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_2" android:layout_marginLeft="@dimen/dp_2"
android:layout_marginTop="@dimen/dp_5" android:layout_marginTop="@dimen/dp_5"
android:text="@{data.order_type==7?@string/meal_code:@string/address}" android:text="@{data.orderType==7?@string/meal_code:@string/address}"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_order_num_text" /> app:layout_constraintTop_toBottomOf="@id/tv_order_num_text" />
...@@ -174,7 +173,7 @@ ...@@ -174,7 +173,7 @@
style="@style/otherOrder_item_info_textStyle" style="@style/otherOrder_item_info_textStyle"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{data.order_type==7?data.takeFoodCode:data.ADDRESS_DETAIL}" android:text="@{data.orderType==7?data.takeFoodCode:data.addressDetail}"
app:layout_constraintLeft_toLeftOf="@id/tv_cellphone_num" app:layout_constraintLeft_toLeftOf="@id/tv_cellphone_num"
app:layout_constraintRight_toLeftOf="@id/iv_end" app:layout_constraintRight_toLeftOf="@id/iv_end"
app:layout_constraintTop_toTopOf="@id/tv_address_text" /> app:layout_constraintTop_toTopOf="@id/tv_address_text" />
...@@ -183,12 +182,62 @@ ...@@ -183,12 +182,62 @@
android:id="@+id/tv_order_amount" android:id="@+id/tv_order_amount"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{@string/amount_unit + data.PAY_AMOUNT}" android:text="@{@string/amount_unit + data.totalAmount}"
android:textColor="@color/red_600" android:textColor="@color/red_600"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="@id/tv_address" app:layout_constraintBottom_toBottomOf="@id/tv_address"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_address" /> app:layout_constraintTop_toBottomOf="@id/tv_address" />
<TextView
android:id="@+id/tv_cancel_reason_text"
style="@style/otherOrder_item_info_title_textStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_2"
android:layout_marginTop="@dimen/dp_5"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/tv_address"
tools:text="取消原因: " />
<TextView
android:id="@+id/tv_cancel_reason"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/red_600"
android:textSize="@dimen/sp_14"
android:layout_marginLeft="@dimen/dp_2"
android:layout_marginTop="@dimen/dp_5"
android:visibility="gone"
app:layout_constraintLeft_toRightOf="@id/tv_cancel_reason_text"
app:layout_constraintTop_toBottomOf="@id/tv_address"
tools:text="商戶未確定" />
<TextView
android:id="@+id/tv_refund_reason_text"
style="@style/otherOrder_item_info_title_textStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_2"
android:layout_marginTop="@dimen/dp_5"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/tv_cancel_reason_text"
tools:text="退款進度: " />
<TextView
android:id="@+id/tv_refund_reason"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_2"
android:layout_marginTop="@dimen/dp_5"
android:textColor="@color/green_400"
android:textSize="@dimen/sp_14"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/tv_refund_reason_text"
app:layout_constraintLeft_toRightOf="@id/tv_refund_reason_text"
app:layout_constraintTop_toBottomOf="@id/tv_cancel_reason_text"
tools:text="退款完成" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</com.lihang.ShadowLayout> </com.lihang.ShadowLayout>
</layout> </layout>
\ No newline at end of file
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
<activity android:name=".mvp.ui.activity.SettlementActivity" /> <activity android:name=".mvp.ui.activity.SettlementActivity" />
<activity android:name=".mvp.ui.activity.SettlementReportActivity" /> <activity android:name=".mvp.ui.activity.SettlementReportActivity" />
<activity android:name=".mvp.ui.activity.LookLogActivity" /> <activity android:name=".mvp.ui.activity.LookLogActivity" />
<activity android:name=".mvp.ui.activity.OriginalPrintPaperActivity" />
<activity <activity
android:name=".mvp.ui.activity.menu.FoodMenuManageActivity" android:name=".mvp.ui.activity.menu.FoodMenuManageActivity"
android:launchMode="singleTask" android:launchMode="singleTask"
...@@ -52,4 +53,4 @@ ...@@ -52,4 +53,4 @@
android:value="640" /> android:value="640" />
</application> </application>
</manifest> </manifest>
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.main.di.module.OriginalPrintPaperModule;
import com.gingersoft.gsa.cloud.main.mvp.contract.OriginalPrintPaperContract;
import com.jess.arms.di.scope.ActivityScope;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.OriginalPrintPaperActivity;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/25/2021 09:39
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
@Component(modules = OriginalPrintPaperModule.class, dependencies = AppComponent.class)
public interface OriginalPrintPaperComponent {
void inject(OriginalPrintPaperActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
OriginalPrintPaperComponent.Builder view(OriginalPrintPaperContract.View view);
OriginalPrintPaperComponent.Builder appComponent(AppComponent appComponent);
OriginalPrintPaperComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.di.module;
import com.jess.arms.di.scope.ActivityScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.main.mvp.contract.OriginalPrintPaperContract;
import com.gingersoft.gsa.cloud.main.mvp.model.OriginalPrintPaperModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/25/2021 09:39
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class OriginalPrintPaperModule {
@Binds
abstract OriginalPrintPaperContract.Model bindOriginalPrintPaperModel(OriginalPrintPaperModel model);
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.mvp.contract;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/25/2021 09:39
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface OriginalPrintPaperContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel{
}
}
package com.gingersoft.gsa.cloud.main.mvp.model;
import android.app.Application;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.ActivityScope;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.OriginalPrintPaperContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/25/2021 09:39
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class OriginalPrintPaperModel extends BaseModel implements OriginalPrintPaperContract.Model{
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public OriginalPrintPaperModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.mvp.presenter;
import android.app.Application;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.main.mvp.contract.OriginalPrintPaperContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/25/2021 09:39
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@ActivityScope
public class OriginalPrintPaperPresenter extends BasePresenter<OriginalPrintPaperContract.Model, OriginalPrintPaperContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public OriginalPrintPaperPresenter (OriginalPrintPaperContract.Model model, OriginalPrintPaperContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
...@@ -211,9 +211,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -211,9 +211,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
@Override @Override
protected void onRestart() { protected void onRestart() {
super.onRestart(); super.onRestart();
String restaurantName = RestaurantInfoManager.newInstance().getRestaurantName(); updateTitleInfo();
tvStoreName.setText(restaurantName);
tvRestaurantName.setText(restaurantName);
} }
/** /**
...@@ -231,6 +229,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -231,6 +229,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_password, "修改密碼")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_password, "修改密碼"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "設置")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "設置"));
} }
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "廚房單原圖"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "上傳日誌")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "上傳日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "清機")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "清機"));
...@@ -270,6 +269,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -270,6 +269,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
case "上傳日誌": case "上傳日誌":
LoganManager.uploadLog(mContext, true); LoganManager.uploadLog(mContext, true);
break; break;
case "廚房單原圖":
break;
} }
}); });
} }
......
package com.gingersoft.gsa.cloud.main.mvp.ui.activity;
import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.core.table.TableManagerItem;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.recylcler.event.OnRecyclerItemClickListener;
import com.gingersoft.gsa.cloud.ui.recylcler.event.RecyItemTouchHelperCallback;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.main.mvp.contract.OriginalPrintPaperContract;
import com.gingersoft.gsa.cloud.main.mvp.presenter.OriginalPrintPaperPresenter;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.section.QMUISection;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionLayout;
import java.util.List;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/25/2021 09:39
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class OriginalPrintPaperActivity extends BaseFragmentActivity<OriginalPrintPaperPresenter> implements OriginalPrintPaperContract.View {
@BindView(R2.id.top_bar)
QMUITopBar mTopBar;
@BindView(R2.id.section_kitchen_prj)
QMUIStickySectionLayout mSectionLayout;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerOriginalPrintPaperComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.activity_original_print_paper; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
initStickyLayout();
}
@Override
public void initIntent() {
}
private void initStickyLayout() {
mSectionLayout.setLayoutManager(createLayoutManager());
mAdapter = new TableManageSectiontAdapter();
mAdapter.setCallback(new QMUIStickySectionAdapter.Callback<SectionHeader, TableManagerItem>() {
@Override
public void loadMore(QMUISection<SectionHeader, TableManagerItem> section, boolean loadMoreBefore) {
}
@Override
public void onItemClick(QMUIStickySectionAdapter.ViewHolder holder, int position) {
if (holder instanceof TableManageSectiontAdapter.ViewHolder) {
TableManageSectiontAdapter.ViewHolder viewHolder = (TableManageSectiontAdapter.ViewHolder) holder;
if (viewHolder.getTvName().getText() != null) {
TableManagerItem item = viewHolder.getTableItem(position);
if (item.getLayoutType() == 1) {
start(AddTableFragment.newInstance(item));
} else {
if (isRadioEdit) {
item.setChecked(!item.isChecked());
mAdapter.notifyItemChanged(position);
} else {
if (item.getUseStatus() == 0 && item.getStatus() == 0) {
start(AddTableFragment.newInstance(item));
} else {
CommonTipDialog.showSurpisedDialog(mActivity, item.getTableName() + "檯正在使用中", null, null, null, null, null);
}
}
}
}
} else {
//點擊的頭部,折疊
}
}
@Override
public boolean onItemLongClick(QMUIStickySectionAdapter.ViewHolder holder, int position) {
return false;
}
});
mSectionLayout.getRecyclerView().addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
if (view instanceof TextView) {
int margin = QMUIDisplayHelper.dp2px(getContext(), 10);
outRect.set(margin, margin, margin, margin);
} else {
outRect.set(5, 5, 5, 5);
}
}
});
RecyItemTouchHelperCallback itemTouchHelperCallback = new RecyItemTouchHelperCallback(mAdapter);
final ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemTouchHelperCallback);
itemTouchHelper.attachToRecyclerView(mSectionLayout.getRecyclerView());
mSectionLayout.getRecyclerView().addOnItemTouchListener(new OnRecyclerItemClickListener(mSectionLayout.getRecyclerView()) {
@Override
public void onItemClick(RecyclerView.ViewHolder viewHolder) {
}
@Override
public void onLongClick(RecyclerView.ViewHolder viewHolder) {
// QMUIStickySectionAdapter.ViewHolder viewHolder1 = (QMUIStickySectionAdapter.ViewHolder) viewHolder;
// Toast.makeText(mActivity, "長按:" + viewHolder1.getAdapterPosition(), Toast.LENGTH_SHORT).show();
// if (viewHolder.getLayoutPosition() != 0) {
// itemTouchHelper.startDrag(viewHolder);
// }
}
});
mSectionLayout.setAdapter(mAdapter, true);
}
private RecyclerView.LayoutManager createLayoutManager() {
final GridLayoutManager layoutManager = new GridLayoutManager(this, 2, LinearLayoutManager.VERTICAL, false);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int i) {
return mAdapter.getItemIndex(i) < 0 ? layoutManager.getSpanCount() : 1;
}
});
return layoutManager;
}
@Override
public void initTopBar() {
mTopBar.setBackgroundColor(ContextCompat.getColor(mContext, R.color.theme_color));
mTopBar.addLeftBackImageButton().setOnClickListener(v -> killMyself());
mTopBar.setTitle("廚房單原圖").setTextColor(ContextCompat.getColor(mContext, R.color.theme_white_color));
}
@Override
public void initLanguage() {
}
@Override
public void initLayoutParams() {
}
@Override
public void initLayoutVisible() {
}
@Override
public void showLoading(String message) {
}
@Override
public void hideLoading() {
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.snackbarText(message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
finish();
}
}
package com.gingersoft.gsa.cloud.main.mvp.ui.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import com.gingersoft.gsa.cloud.common.core.table.TableManagerItem;
import com.gingersoft.gsa.cloud.common.utils.StringUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.gingersoft.gsa.cloud.ui.view.TriangleLabelView;
import com.gingersoft.gsa.cloud.ui.view.qm.QDLoadingItemView;
import com.gingersoft.gsa.cloud.ui.view.section.QDSectionHeaderView;
import com.jess.arms.utils.DeviceUtils;
import com.qmuiteam.qmui.layout.QMUIRelativeLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.section.QMUIDefaultStickySectionAdapter;
import com.qmuiteam.qmui.widget.section.QMUISection;
import com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter;
import java.util.HashMap;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-02-09
* 修订历史:2020-02-09
* 描述:
*/
public class OriginalKitcherPrjSectiontAdapter extends QMUIDefaultStickySectionAdapter<SectionHeader, TableManagerItem> {
private Context context;
@NonNull
@Override
protected QMUIStickySectionAdapter.ViewHolder onCreateSectionHeaderViewHolder(@NonNull ViewGroup viewGroup) {
this.context = viewGroup.getContext();
return new QMUIStickySectionAdapter.ViewHolder(new QDSectionHeaderView(viewGroup.getContext()));
}
@NonNull
@Override
protected ViewHolder onCreateSectionItemViewHolder(@NonNull ViewGroup viewGroup) {
this.context = viewGroup.getContext();
return new ViewHolder(View.inflate(viewGroup.getContext(), R.layout.manager_item_manage_table, null));
}
@NonNull
@Override
protected QMUIStickySectionAdapter.ViewHolder onCreateSectionLoadingViewHolder(@NonNull ViewGroup viewGroup) {
return new QMUIStickySectionAdapter.ViewHolder(new QDLoadingItemView(viewGroup.getContext()));
}
@Override
protected void onBindSectionHeader(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, TableManagerItem> section) {
super.onBindSectionHeader(holder, position, section);
QDSectionHeaderView itemView = (QDSectionHeaderView) holder.itemView;
itemView.render(section.getHeader(), section.isFold());
itemView.getArrowView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int pos = holder.isForStickyHeader ? position : holder.getAdapterPosition();
toggleFold(pos, false);
}
});
}
@Override
protected void onBindSectionItem(QMUIStickySectionAdapter.ViewHolder holder, int position, QMUISection<SectionHeader, TableManagerItem> section, int itemIndex) {
super.onBindSectionItem(holder, position, section, itemIndex);
ViewHolder viewHolder = (ViewHolder) holder;
TableManagerItem tableItem = section.getItemAt(itemIndex);
}
public class ViewHolder extends QMUIStickySectionAdapter.ViewHolder {
@BindView(R2.id.ll_container)
QMUIRelativeLayout ll_container;
@BindView(R2.id.rl_table)
RelativeLayout rl_table;
@BindView(R2.id.tv_table)
TextView tv_table;
@BindView(R2.id.tv_people)
TextView tv_people;
// @BindView(R2.id.btn_showMain)
// Button btn_showMain;
// @BindView(R2.id.iv_vip)
// ImageView iv_vip;
// @BindView(R2.id.tv_scan_flag)
// TextView tv_scan_flag;
@BindView(R2.id.tv_service_fee)
TextView tv_service_fee;
@BindView(R2.id.cb_checked)
CheckBox cb_checked;
@BindView(R2.id.fl_add_table)
FrameLayout fl_add_table;
@BindView(R2.id.fl_table_type)
FrameLayout fl_table_type;
@BindView(R2.id.tlv_table_type)
TriangleLabelView tlv_table_type;
@BindView(R2.id.tv_type_labe)
TextView tv_type_labe;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
public TextView getTvName() {
return tv_table;
}
public TextView getTvServiceFee() {
return tv_service_fee;
}
public TableManagerItem getTableItem(int position) {
TableManagerItem item = getSectionItem(position);
return item;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/top_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/pickerview_topbar_height"
android:fitsSystemWindows="true"
app:qmui_topbar_text_btn_color_state_list="@color/theme_white_color"
app:qmui_topbar_title_color="@color/theme_white_color" />
<com.qmuiteam.qmui.widget.section.QMUIStickySectionLayout
android:id="@+id/section_kitchen_prj"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="?attr/qmui_topbar_height"/>
</LinearLayout>
\ No newline at end of file
...@@ -162,11 +162,6 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter> ...@@ -162,11 +162,6 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
} }
@Override @Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
@Override
public void initIntent() { public void initIntent() {
MealPayResultParam payResultParam = CCUtil.getNavigateParam(this, "payResultParam", null); MealPayResultParam payResultParam = CCUtil.getNavigateParam(this, "payResultParam", null);
if (payResultParam != null) { if (payResultParam != null) {
...@@ -281,14 +276,17 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter> ...@@ -281,14 +276,17 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
PosPay.printStub(mContext, this,txnId, new OnPosActionListener() { PosPay.printStub(mContext, this,txnId, new OnPosActionListener() {
@Override @Override
public void onPosSuccess(HywebPosResponse response) { public void onPosSuccess(HywebPosResponse response) {
printBill();
} }
@Override @Override
public void onPosException(Exception e) { public void onPosException(Exception e) {
printBill();
} }
@Override @Override
public void onPosInvalid(String e) { public void onPosInvalid(String e) {
printBill();
} }
@Override @Override
...@@ -362,7 +360,7 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter> ...@@ -362,7 +360,7 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
if (view.getId() == R.id.tv_tips) { if (view.getId() == R.id.tv_tips) {
showKeyboardDialog(); showKeyboardDialog();
} else if (view.getId() == R.id.tv_printer) { } else if (view.getId() == R.id.tv_printer) {
printBill(); printPaymentStub(mMealPayResultParam.getTxnId());
} else if (view.getId() == R.id.btn_complate) { } else if (view.getId() == R.id.btn_complate) {
//返回餐檯頁面 //返回餐檯頁面
CC.obtainBuilder(ComponentName.COMPONENT_TABLE) CC.obtainBuilder(ComponentName.COMPONENT_TABLE)
......
...@@ -373,6 +373,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -373,6 +373,7 @@ public class PrintPrjKitchen extends PrinterRoot {
tvCurrentPageIndex.setText(prjBean.getCurrentIndex() + "/" + prjBean.getTotalPrj()); tvCurrentPageIndex.setText(prjBean.getCurrentIndex() + "/" + prjBean.getTotalPrj());
} }
} }
return viewToZoomBitmap(context, view, printerDeviceBean); return viewToZoomBitmap(context, view, printerDeviceBean);
} }
......
...@@ -33,7 +33,7 @@ import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails; ...@@ -33,7 +33,7 @@ import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils; import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils;
import com.gingersoft.gsa.cloud.common.core.table.TableBean; import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.utils.AidlUtil; import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager; import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
......
...@@ -11,7 +11,6 @@ import android.util.Log; ...@@ -11,7 +11,6 @@ import android.util.Log;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.elvishew.xlog.XLog;
import com.epson.epos2.Epos2Exception; import com.epson.epos2.Epos2Exception;
import com.epson.epos2.printer.Printer; import com.epson.epos2.printer.Printer;
import com.epson.epos2.printer.PrinterStatusInfo; import com.epson.epos2.printer.PrinterStatusInfo;
...@@ -21,19 +20,24 @@ import com.gingersoft.gsa.cloud.common.constans.PrintConstans; ...@@ -21,19 +20,24 @@ import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.user.UserContext; import com.gingersoft.gsa.cloud.common.core.user.UserContext;
import com.gingersoft.gsa.cloud.common.logan.LoganManager; import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.AidlUtil; import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrintPaperPlugins;
import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils; import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager; import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil;
import com.gingersoft.gsa.cloud.database.bean.PrintCurrencyBean; import com.gingersoft.gsa.cloud.database.bean.PrintCurrencyBean;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.database.utils.PrinterDeviceDaoUtils; import com.gingersoft.gsa.cloud.database.utils.PrinterDeviceDaoUtils;
import com.gingersoft.gsa.cloud.print.PrintExecutor; import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder; import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.PrinterWriter58mm; import com.gingersoft.gsa.cloud.print.PrinterWriter58mm;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.PrjBean; import com.gingersoft.gsa.cloud.print.bean.PrjBean;
import com.gingersoft.gsa.cloud.print.bean.UpdateBean; import com.gingersoft.gsa.cloud.print.bean.UpdateBean;
import com.hyweb.n5.lib.constant.PrinterConstant; import com.hyweb.n5.lib.constant.PrinterConstant;
...@@ -50,11 +54,14 @@ import com.joe.print.mvp.print.usb.UsbPrinter; ...@@ -50,11 +54,14 @@ import com.joe.print.mvp.print.usb.UsbPrinter;
import com.joe.print.mvp.print.usb.UsbPrinterFinder; import com.joe.print.mvp.print.usb.UsbPrinterFinder;
import com.joe.print.mvp.print.utils.MyPrintUtils; import com.joe.print.mvp.print.utils.MyPrintUtils;
import com.sunmi.peripheral.printer.InnerResultCallbcak; import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.PrintStream; import java.io.PrintStream;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -108,7 +115,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -108,7 +115,7 @@ public class PrjService extends Service implements ReceiveListener {
public int onStartCommand(Intent intent, int flags, int startId) { public int onStartCommand(Intent intent, int flags, int startId) {
mContext = this; mContext = this;
ThreadPoolManager.getInstence().putExecutableTasks(() -> { ThreadPoolManager.getInstence().putExecutableTasks(() -> {
LoganManager.w_printer(TAG,"開始請求 PRJ 數據"); LoganManager.w_printer(TAG, "開始請求 PRJ 數據");
getPrintList(); getPrintList();
//開始請求 //開始請求
startGetPrjInfo(); startGetPrjInfo();
...@@ -170,23 +177,23 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -170,23 +177,23 @@ public class PrjService extends Service implements ReceiveListener {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
disposable = d; disposable = d;
LoganManager.w_printer(TAG,"startGetPrjInfo onSubscribe"); LoganManager.w_printer(TAG, "startGetPrjInfo onSubscribe");
} }
@Override @Override
public void onNext(Long aLong) { public void onNext(Long aLong) {
LoganManager.w_printer(TAG,"startGetPrjInfo onNext"); LoganManager.w_printer(TAG, "startGetPrjInfo onNext");
getPrjInfo(); getPrjInfo();
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
LoganManager.w_printer(TAG,"startGetPrjInfo onError:" + e.getMessage()); LoganManager.w_printer(TAG, "startGetPrjInfo onError:" + e.getMessage());
} }
@Override @Override
public void onComplete() { public void onComplete() {
LoganManager.w_printer(TAG,"startGetPrjInfo onComplete"); LoganManager.w_printer(TAG, "startGetPrjInfo onComplete");
} }
}); });
} }
...@@ -202,12 +209,12 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -202,12 +209,12 @@ public class PrjService extends Service implements ReceiveListener {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
LoganManager.w_printer(TAG,"getPrjInfo onSubscribe"); LoganManager.w_printer(TAG, "getPrjInfo onSubscribe");
} }
@Override @Override
public void onNext(String s) { public void onNext(String s) {
LoganManager.w_printer(TAG,"getPrjInfo onNext: " + s); LoganManager.w_printer(TAG, "getPrjInfo onNext: " + s);
//請求到數據,停止輪詢,開始打印,在打印完之後再重新開始輪詢 //請求到數據,停止輪詢,開始打印,在打印完之後再重新開始輪詢
// startPrint(s); // startPrint(s);
newPrint(s); newPrint(s);
...@@ -218,35 +225,35 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -218,35 +225,35 @@ public class PrjService extends Service implements ReceiveListener {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
wakeDisposable = d; wakeDisposable = d;
LoganManager.w_printer(TAG,"getPrjInfo timer onSubscribe"); LoganManager.w_printer(TAG, "getPrjInfo timer onSubscribe");
} }
@Override @Override
public void onNext(Long aLong) { public void onNext(Long aLong) {
LoganManager.w_printer(TAG,"getPrjInfo timer onNext"); LoganManager.w_printer(TAG, "getPrjInfo timer onNext");
startGetPrjInfo(); startGetPrjInfo();
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
LoganManager.w_printer(TAG,"getPrjInfo timer onError: " + e.getMessage()); LoganManager.w_printer(TAG, "getPrjInfo timer onError: " + e.getMessage());
} }
@Override @Override
public void onComplete() { public void onComplete() {
LoganManager.w_printer(TAG,"getPrjInfo timer onComplete"); LoganManager.w_printer(TAG, "getPrjInfo timer onComplete");
} }
}); });
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
LoganManager.w_printer(TAG,"getPrjInfo onError:" + e.getMessage()); LoganManager.w_printer(TAG, "getPrjInfo onError:" + e.getMessage());
} }
@Override @Override
public void onComplete() { public void onComplete() {
LoganManager.w_printer(TAG,"getPrjInfo onComplete"); LoganManager.w_printer(TAG, "getPrjInfo onComplete");
} }
}); });
} }
...@@ -351,7 +358,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -351,7 +358,7 @@ public class PrjService extends Service implements ReceiveListener {
totalPrj = 0; totalPrj = 0;
PrjBean prjBean = JsonUtils.parseObject(json, PrjBean.class); PrjBean prjBean = JsonUtils.parseObject(json, PrjBean.class);
if (prjBean == null || prjBean.getData() == null) { if (prjBean == null || prjBean.getData() == null) {
LoganManager.w_printer(TAG,"newPrint prjBean == null || prjBean.getData() == null "); LoganManager.w_printer(TAG, "newPrint prjBean == null || prjBean.getData() == null ");
return; return;
} }
//有數據,取消輪詢,等待打印結束。 //有數據,取消輪詢,等待打印結束。
...@@ -388,7 +395,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -388,7 +395,7 @@ public class PrjService extends Service implements ReceiveListener {
} }
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
LoganManager.w_printer(TAG,"newPrint JSONException: " + e.getMessage()); LoganManager.w_printer(TAG, "newPrint JSONException: " + e.getMessage());
} }
setPrjIndex(listMap, totalPrj); setPrjIndex(listMap, totalPrj);
initPrinterDevices(); initPrinterDevices();
...@@ -396,7 +403,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -396,7 +403,7 @@ public class PrjService extends Service implements ReceiveListener {
} }
private Map<String, List<PrjBean.DataBean.Bean>> setPrjIndex(Map<String, List<PrjBean.DataBean.Bean>> listMap, int totalPrj) { private Map<String, List<PrjBean.DataBean.Bean>> setPrjIndex(Map<String, List<PrjBean.DataBean.Bean>> listMap, int totalPrj) {
LoganManager.w_printer(TAG,"setPrjIndex totalPrj: "+totalPrj); LoganManager.w_printer(TAG, "setPrjIndex totalPrj: " + totalPrj);
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) { for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) {
//上一個對象是否切紙 //上一個對象是否切紙
boolean lastIsCute = false; boolean lastIsCute = false;
...@@ -460,7 +467,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -460,7 +467,7 @@ public class PrjService extends Service implements ReceiveListener {
} }
private void foreachPrint(Map<String, List<PrjBean.DataBean.Bean>> listMap) { private void foreachPrint(Map<String, List<PrjBean.DataBean.Bean>> listMap) {
LoganManager.w_printer(TAG,"foreachPrint"); LoganManager.w_printer(TAG, "foreachPrint");
//雙重遍歷可以以後優化 //雙重遍歷可以以後優化
//第二步:遍歷 Map<廚房位置,需要打印的數據>,通過廚房位置找到對應的打印機,並且通過數據拿到對應的通用配置 //第二步:遍歷 Map<廚房位置,需要打印的數據>,通過廚房位置找到對應的打印機,並且通過數據拿到對應的通用配置
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) { for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) {
...@@ -482,7 +489,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -482,7 +489,7 @@ public class PrjService extends Service implements ReceiveListener {
} }
private void initPrinterDevices() { private void initPrinterDevices() {
LoganManager.w_printer(TAG,"initPrinterDevices"); LoganManager.w_printer(TAG, "initPrinterDevices");
//讀取打印機和通用配置,可以優化 //讀取打印機和通用配置,可以優化
//獲取所有打印機 //獲取所有打印機
PrinterDeviceDaoUtils printerDeviceDaoUtils = new PrinterDeviceDaoUtils(this); PrinterDeviceDaoUtils printerDeviceDaoUtils = new PrinterDeviceDaoUtils(this);
...@@ -513,9 +520,11 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -513,9 +520,11 @@ public class PrjService extends Service implements ReceiveListener {
*/ */
private void generatePrintData(String key, List<PrjBean.DataBean.Bean> beans, PrinterDeviceBean printerDeviceBean) { private void generatePrintData(String key, List<PrjBean.DataBean.Bean> beans, PrinterDeviceBean printerDeviceBean) {
LoganManager.w_printer(TAG,"generatePrintData PrinterDeviceBean deviceType: " + printerDeviceBean.getPrinterDeviceType() LoganManager.w_printer(TAG, "generatePrintData PrinterDeviceBean deviceType: " + printerDeviceBean.getPrinterDeviceType()
+ " ip: " + printerDeviceBean.getIp()); + " ip: " + printerDeviceBean.getIp());
PrintPaperPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(GsonUtils.GsonString(beans), GsonUtils.GsonString(printerDeviceBean));
if (isPinPrinter(printerDeviceBean) && printerDeviceBean.getPrinterDeviceType() == PRINT_IP) { if (isPinPrinter(printerDeviceBean) && printerDeviceBean.getPrinterDeviceType() == PRINT_IP) {
//針式打印機並且打印機類型為IP打印,生成獨特的格式 //針式打印機並且打印機類型為IP打印,生成獨特的格式
List<Map<String, Bitmap>> bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean); List<Map<String, Bitmap>> bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean);
...@@ -704,7 +713,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -704,7 +713,7 @@ public class PrjService extends Service implements ReceiveListener {
* ip設備打印 * ip設備打印
*/ */
public void ipPrint(PrinterDeviceBean printerDeviceBean, List<Map<String, Bitmap>> bitmapMaps) { public void ipPrint(PrinterDeviceBean printerDeviceBean, List<Map<String, Bitmap>> bitmapMaps) {
LoganManager.w_printer(TAG,"ipPrint: " + printerDeviceBean.getPrinterDeviceType() LoganManager.w_printer(TAG, "ipPrint: " + printerDeviceBean.getPrinterDeviceType()
+ " ip: " + printerDeviceBean.getIp()); + " ip: " + printerDeviceBean.getIp());
for (int i = 0; i < bitmapMaps.size(); i++) { for (int i = 0; i < bitmapMaps.size(); i++) {
PrintExecutor executor = new PrintExecutor(printerDeviceBean); PrintExecutor executor = new PrintExecutor(printerDeviceBean);
...@@ -713,18 +722,18 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -713,18 +722,18 @@ public class PrjService extends Service implements ReceiveListener {
switch (errorCode) { switch (errorCode) {
case PrintSocketHolder.ERROR_0: case PrintSocketHolder.ERROR_0:
//更新狀態 //更新狀態
LoganManager.w_printer(TAG,"ipPrint errorCode ERROR_0 i: " + finalI); LoganManager.w_printer(TAG, "ipPrint errorCode ERROR_0 i: " + finalI);
updatePrjSuccess(ids); updatePrjSuccess(ids);
Log.e(TAG, "打印成功"); Log.e(TAG, "打印成功");
break; break;
case PrintSocketHolder.ERROR_2: case PrintSocketHolder.ERROR_2:
LoganManager.w_printer(TAG,"ipPrint errorCode ERROR_2 i: " + finalI); LoganManager.w_printer(TAG, "ipPrint errorCode ERROR_2 i: " + finalI);
Log.e(TAG, "创建Socket失败"); Log.e(TAG, "创建Socket失败");
updatePrjFailure(ids); updatePrjFailure(ids);
break; break;
} }
}); });
LoganManager.w_printer(TAG,"ipPrint for doPrinterRequestAsync i:" + i); LoganManager.w_printer(TAG, "ipPrint for doPrinterRequestAsync i:" + i);
PrjPrintMaker maker = new PrjPrintMaker(bitmapMaps.get(i)); PrjPrintMaker maker = new PrjPrintMaker(bitmapMaps.get(i));
executor.doPrinterRequestAsync(maker); executor.doPrinterRequestAsync(maker);
} }
...@@ -906,9 +915,19 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -906,9 +915,19 @@ public class PrjService extends Service implements ReceiveListener {
stringBuffer.append(noCutData.getId()); stringBuffer.append(noCutData.getId());
stringBuffer.append(","); stringBuffer.append(",");
} }
map.put(stringBuffer.toString(), printPrjKitchen.getKitChenPrintBitmap(mContext, key, noCut, printerDeviceBean)); Bitmap prjBitmap = printPrjKitchen.getKitChenPrintBitmap(mContext, key, noCut, printerDeviceBean);
map.put(stringBuffer.toString(), prjBitmap);
bitmapMaps.add(map); bitmapMaps.add(map);
} }
if (bitmapMaps.size() > 0) {
String prjName = null;
if (beans.size() > 0) {
prjName = beans.get(0).getBillNo();
}
PrintPaperPlugins.getOnPrinterFlowHandler().onPrinterBitmapBefore(prjName, bitmapMaps);
}
return bitmapMaps; return bitmapMaps;
} }
......
...@@ -80,6 +80,7 @@ public class KitChenPrjFoodView extends LinearLayout { ...@@ -80,6 +80,7 @@ public class KitChenPrjFoodView extends LinearLayout {
} }
} }
} }
addView(view);
} }
} }
......
package com.gingersoft.gsa.cloud.table.mvp.action.order; package com.gingersoft.gsa.cloud.table.mvp.action.order;
import android.text.TextUtils; import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.logan.LoganManager; import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.patterns.Strategy; import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam; import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam;
...@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.VoidRespose; ...@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.VoidRespose;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.jess.arms.base.BaseFragmentActivity; import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
...@@ -27,12 +29,12 @@ import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; ...@@ -27,12 +29,12 @@ import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
public class CancelOrder implements Strategy<OrderManagerResponse> { public class CancelOrder implements Strategy<OrderManagerResponse> {
private final String TAG = "CancelOrder"; private final String TAG = "CancelOrder";
private BaseFragmentActivity mActivity; private BaseFragmentActivity mActivity;
private IView mRootView; private IView mRootView;
public CancelOrder(BaseFragmentActivity fragmentActivity, IView rootView){ public CancelOrder(BaseFragmentActivity fragmentActivity, IView rootView) {
this.mActivity = fragmentActivity; this.mActivity = fragmentActivity;
this.mRootView = rootView; this.mRootView = rootView;
} }
...@@ -43,6 +45,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> { ...@@ -43,6 +45,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override @Override
public void destroy() { public void destroy() {
mActivity = null;
mRootView = null;
} }
private void showCancelDialog(OrderManagerResponse datasBean) { private void showCancelDialog(OrderManagerResponse datasBean) {
...@@ -55,7 +59,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> { ...@@ -55,7 +59,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
if (datasBean.withHywebPay()) { if (datasBean.withHywebPay()) {
hywebOrderCancle(datasBean); hywebOrderCancle(datasBean);
} else { } else {
if(cancelListener != null){ if (cancelListener != null) {
cancelListener.cancel(datasBean.getId()); cancelListener.cancel(datasBean.getId());
} }
} }
...@@ -79,7 +83,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> { ...@@ -79,7 +83,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override @Override
public void onPosSuccess(VoidRespose response) { public void onPosSuccess(VoidRespose response) {
LoganManager.w_code(TAG, "onPosSuccess: " + response.toString()); LoganManager.w_code(TAG, "onPosSuccess: " + response.toString());
if(cancelListener != null){ if (cancelListener != null) {
cancelListener.refeshOrders(); cancelListener.refeshOrders();
} }
} }
...@@ -87,7 +91,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> { ...@@ -87,7 +91,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override @Override
public void onPosException(Exception e) { public void onPosException(Exception e) {
LoganManager.w_code(TAG, "onPosException: " + e.getMessage()); LoganManager.w_code(TAG, "onPosException: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) { PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId()); statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount()); statusExceptionParam.setAmount(datasBean.getAmount());
...@@ -96,6 +101,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> { ...@@ -96,6 +101,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試"); statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.VOID); statusExceptionParam.setPosAction(PosAction.VOID);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam)); mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
} }
} }
...@@ -127,11 +134,14 @@ public class CancelOrder implements Strategy<OrderManagerResponse> { ...@@ -127,11 +134,14 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
} }
private OnCancelListener cancelListener; private OnCancelListener cancelListener;
public void setCancelListener(OnCancelListener cancelListener) { public void setCancelListener(OnCancelListener cancelListener) {
this.cancelListener = cancelListener; this.cancelListener = cancelListener;
} }
public interface OnCancelListener{
public interface OnCancelListener {
void cancel(long orderId); void cancel(long orderId);
void refeshOrders(); void refeshOrders();
} }
} }
...@@ -95,7 +95,8 @@ public class ModifyOrderAction implements Strategy<OrderManagerResponse> { ...@@ -95,7 +95,8 @@ public class ModifyOrderAction implements Strategy<OrderManagerResponse> {
@Override @Override
public void destroy() { public void destroy() {
mActivity = null;
mRootView = null;
} }
} }
...@@ -60,6 +60,8 @@ public class PrintOrderAction implements Strategy<OrderManagerResponse> { ...@@ -60,6 +60,8 @@ public class PrintOrderAction implements Strategy<OrderManagerResponse> {
@Override @Override
public void destroy() { public void destroy() {
mActivity = null;
mRootView = null;
} }
private void startPrintOrder(OrderManagerResponse orderDetailItem, List<OrderDetail> orderDetailList) { private void startPrintOrder(OrderManagerResponse orderDetailItem, List<OrderDetail> orderDetailList) {
......
...@@ -30,7 +30,7 @@ import java.util.List; ...@@ -30,7 +30,7 @@ import java.util.List;
*/ */
public class RefundOrder implements Strategy<OrderManagerResponse> { public class RefundOrder implements Strategy<OrderManagerResponse> {
private final String TAG = "RefundlOrder"; private final String TAG = "RefundlOrder";
private BaseFragmentActivity mActivity; private BaseFragmentActivity mActivity;
private IView mRootView; private IView mRootView;
...@@ -46,7 +46,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> { ...@@ -46,7 +46,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
@Override @Override
public void destroy() { public void destroy() {
mActivity = null;
mRootView = null;
} }
private void showHywebRefundDialog(OrderManagerResponse datasBean) { private void showHywebRefundDialog(OrderManagerResponse datasBean) {
...@@ -88,7 +89,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> { ...@@ -88,7 +89,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
@Override @Override
public void onPosException(Exception e) { public void onPosException(Exception e) {
LoganManager.w_code(TAG, "onPosException: " + e.getMessage()); LoganManager.w_code(TAG, "onPosException: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) { PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId()); statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount()); statusExceptionParam.setAmount(datasBean.getAmount());
...@@ -97,6 +99,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> { ...@@ -97,6 +99,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試"); statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.REFUND); statusExceptionParam.setPosAction(PosAction.REFUND);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam)); mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else {
mActivity.start(statusExceptionFragment);
} }
} }
...@@ -114,7 +118,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> { ...@@ -114,7 +118,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
@Override @Override
public void onUpdateStatusError(Throwable e) { public void onUpdateStatusError(Throwable e) {
LoganManager.w_code(TAG, "onUpdateStatusError: " + e.getMessage()); LoganManager.w_code(TAG, "onUpdateStatusError: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) { PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId()); statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount()); statusExceptionParam.setAmount(datasBean.getAmount());
...@@ -123,6 +128,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> { ...@@ -123,6 +128,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試"); statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.REFUND); statusExceptionParam.setPosAction(PosAction.REFUND);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam)); mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
} }
} }
}); });
......
...@@ -42,6 +42,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> { ...@@ -42,6 +42,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
@Override @Override
public void destroy() { public void destroy() {
mActivity = null;
mRootView = null;
} }
private void showKeyboardDialog(OrderManagerResponse datasBean) { private void showKeyboardDialog(OrderManagerResponse datasBean) {
...@@ -75,7 +77,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> { ...@@ -75,7 +77,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
@Override @Override
public void onPosException(Exception e) { public void onPosException(Exception e) {
LoganManager.w_code(TAG, "onPosException: " + e.getMessage()); LoganManager.w_code(TAG, "onPosException: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) { PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId()); statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount()); statusExceptionParam.setAmount(datasBean.getAmount());
...@@ -84,6 +87,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> { ...@@ -84,6 +87,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試"); statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.TIP); statusExceptionParam.setPosAction(PosAction.TIP);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam)); mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
} }
} }
...@@ -100,7 +105,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> { ...@@ -100,7 +105,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
@Override @Override
public void onUpdateStatusError(Throwable e) { public void onUpdateStatusError(Throwable e) {
LoganManager.w_code(TAG, "onUpdateStatusError: " + e.getMessage()); LoganManager.w_code(TAG, "onUpdateStatusError: " + e.getMessage());
if (mActivity.findFragment(PosActionStatusExceptionFragment.class) == null) { PosActionStatusExceptionFragment statusExceptionFragment = (PosActionStatusExceptionFragment) mActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(datasBean.getPayTxnId()); statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount()); statusExceptionParam.setAmount(datasBean.getAmount());
...@@ -109,6 +115,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> { ...@@ -109,6 +115,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試"); statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.TIP); statusExceptionParam.setPosAction(PosAction.TIP);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam)); mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
} }
} }
}); });
......
package com.gingersoft.gsa.cloud.table.mvp.contract; package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.OrderManagerResponse;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
...@@ -28,6 +29,7 @@ public interface AllOrderContract { ...@@ -28,6 +29,7 @@ public interface AllOrderContract {
String getOrderType(); String getOrderType();
String getStatusByFragmentIndex(); String getStatusByFragmentIndex();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
...@@ -40,6 +40,8 @@ public interface OrderCenterContract { ...@@ -40,6 +40,8 @@ public interface OrderCenterContract {
String getStatusByFragmentIndex(); String getStatusByFragmentIndex();
int getPageSize(); int getPageSize();
void setOnCheckedChangedListener(OrderManagerResponse checkOrderBean);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
...@@ -11,6 +11,7 @@ import com.gingersoft.gsa.cloud.common.utils.AppDevices; ...@@ -11,6 +11,7 @@ import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse; import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse; import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod; import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayMethodConstant; import com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayMethodConstant;
import java.io.Serializable; import java.io.Serializable;
...@@ -277,8 +278,19 @@ public class OrderManagerResponse implements Serializable { ...@@ -277,8 +278,19 @@ public class OrderManagerResponse implements Serializable {
return ""; return "";
} }
public PosAction getPosActionByMatterId() {
if (!TextUtils.isEmpty(tipTxnId)) {
return PosAction.TIP;
} else if (!TextUtils.isEmpty(cancelTxnId)) {
return PosAction.VOID;
} else if (!TextUtils.isEmpty(refundTxnId)) {
return PosAction.REFUND;
}
return null;
}
/** /**
* 是是當前設備的訂單 * 是普通手機或者,POS是當前設備的訂單
* @return * @return
*/ */
public boolean isCurrDeviceOrder(){ public boolean isCurrDeviceOrder(){
......
...@@ -383,7 +383,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -383,7 +383,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
if (!TextUtils.isEmpty(orderBean.getTxnId())) { if (!TextUtils.isEmpty(orderBean.getTxnId())) {
//有支付異常事項需要處理 //有支付異常事項需要處理
if (IActivity.findFragment(PosActionStatusExceptionFragment.class) == null) { PosActionStatusExceptionFragment statusExceptionFragment = IActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(orderBean.getTxnId()); statusExceptionParam.setTxnId(orderBean.getTxnId());
statusExceptionParam.setAmount(orderBean.getTotalAmount()); statusExceptionParam.setAmount(orderBean.getTotalAmount());
...@@ -392,6 +393,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -392,6 +393,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
statusExceptionParam.setPayMethodName(orderBean.getPayName()); statusExceptionParam.setPayMethodName(orderBean.getPayName());
statusExceptionParam.setPosAction(PosAction.RETRIEVAL); statusExceptionParam.setPosAction(PosAction.RETRIEVAL);
IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam)); IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
} else {
IActivity.start(statusExceptionFragment);
} }
return; return;
} }
......
...@@ -97,6 +97,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All ...@@ -97,6 +97,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
private OrderCenterAdapter mOrderCenterAdapter; private OrderCenterAdapter mOrderCenterAdapter;
private List<OrderManagerResponse> mOrderItemList = new ArrayList<>(); private List<OrderManagerResponse> mOrderItemList = new ArrayList<>();
private OrderManagerResponse mCheckedOrderBean;
@Inject @Inject
public AllOrderPresenter(AllOrderContract.Model model, AllOrderContract.View rootView) { public AllOrderPresenter(AllOrderContract.Model model, AllOrderContract.View rootView) {
...@@ -112,6 +113,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All ...@@ -112,6 +113,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
this.mAppManager = null; this.mAppManager = null;
this.mImageLoader = null; this.mImageLoader = null;
this.mApplication = null; this.mApplication = null;
this.IActivity = null;
} }
public void initOrderAdapter(Context context) { public void initOrderAdapter(Context context) {
...@@ -126,36 +128,32 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All ...@@ -126,36 +128,32 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
intent.putExtra("orderDetailItem", datasBean); intent.putExtra("orderDetailItem", datasBean);
mRootView.launchActivity(intent); mRootView.launchActivity(intent);
} }
@Override
public void onPrintClick(OrderManagerResponse datasBean, int position) {
}
@Override @Override
public void onModifyClick(OrderManagerResponse datasBean, int position) { public void onCheckedChanged(OrderManagerResponse checkedOrder) {
} if (checkedOrder.isChecked()) {
mCheckedOrderBean = checkedOrder;
@Override } else {
public void onCancelClick(OrderManagerResponse datasBean, int position) { mCheckedOrderBean = null;
} }
IActivity.setOnCheckedChangedListener(mCheckedOrderBean);
@Override
public void onRefundClick(OrderManagerResponse datasBean, int position) {
}
@Override
public void onTipsClick(OrderManagerResponse datasBean, int position) {
} }
@Override @Override
public void onReloadExceptionStatus(OrderManagerResponse orderBean, String txnId) { public void onReloadExceptionStatus(OrderManagerResponse orderBean, String txnId) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); PosActionStatusExceptionFragment statusExceptionFragment = IActivity.findFragment(PosActionStatusExceptionFragment.class);
statusExceptionParam.setTxnId(txnId); if (statusExceptionFragment == null) {
statusExceptionParam.setAmount(orderBean.getTotalAmount()); PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setOrderId(orderBean.getId()); statusExceptionParam.setTxnId(txnId);
statusExceptionParam.setOrderNo(orderBean.getOrderNo()); statusExceptionParam.setAmount(orderBean.getTotalAmount());
statusExceptionParam.setPayMethodName(orderBean.getPayNames()); statusExceptionParam.setOrderId(orderBean.getId());
statusExceptionParam.setPosAction(PosAction.RETRIEVAL); statusExceptionParam.setOrderNo(orderBean.getOrderNo());
IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam)); statusExceptionParam.setPayMethodName(orderBean.getPayNames());
statusExceptionParam.setPosAction(orderBean.getPosActionByMatterId());
IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else {
IActivity.start(statusExceptionFragment);
}
} }
}); });
} }
...@@ -175,13 +173,8 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All ...@@ -175,13 +173,8 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
} }
} }
public OrderManagerResponse getSelectedOrderItem(){ public OrderManagerResponse getCheckedOrderBean() {
for (OrderManagerResponse orderItem:mOrderItemList) { return mCheckedOrderBean;
if(orderItem.isChecked()){
return orderItem;
}
}
return null;
} }
} }
...@@ -74,7 +74,7 @@ public class BaseOrderConterPresenter<M extends IModel,V extends IView> extends ...@@ -74,7 +74,7 @@ public class BaseOrderConterPresenter<M extends IModel,V extends IView> extends
} }
public void orderTips(BaseFragmentActivity activity,OrderManagerResponse orderItem,TipsOrder.OnRefundListener listener){ public void orderTips(BaseFragmentActivity activity,OrderManagerResponse orderItem,TipsOrder.OnRefundListener listener){
TipsOrder tipsOrder = new TipsOrder(activity,mRootView); TipsOrder tipsOrder = new TipsOrder(activity,mRootView);
tipsOrder.action(orderItem); tipsOrder.action(orderItem);
tipsOrder.setTipsListener(listener); tipsOrder.setTipsListener(listener);
} }
......
...@@ -8,6 +8,7 @@ import com.gingersoft.gsa.cloud.common.utils.MoneyUtil; ...@@ -8,6 +8,7 @@ import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse; import com.gingersoft.gsa.cloud.order.bean.response.OrderDiscountResponse;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod; import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.pay.pos.fragment.PosActionStatusExceptionFragment;
import com.gingersoft.gsa.cloud.pay.util.PayMethodUtils; import com.gingersoft.gsa.cloud.pay.util.PayMethodUtils;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract; import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
...@@ -88,8 +89,7 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo ...@@ -88,8 +89,7 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo
OrderManagerResponse orderDetailItem = JsonUtils.parseObject(JsonUtils.toJson(result.getData()), OrderManagerResponse.class); OrderManagerResponse orderDetailItem = JsonUtils.parseObject(JsonUtils.toJson(result.getData()), OrderManagerResponse.class);
mRootView.returnOrderDetail(orderDetailItem); mRootView.returnOrderDetail(orderDetailItem);
//刷新訂單列表 //刷新訂單列表
EventBus.getDefault().post(true, "updateOrderListEvent"); EventBus.getDefault().post(true, PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT); } else {
} else {
mRootView.showMessage("獲取賬單失敗"); mRootView.showMessage("獲取賬單失敗");
} }
} else { } else {
...@@ -116,7 +116,7 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo ...@@ -116,7 +116,7 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo
OrderManagerResponse orderDetailItem = JsonUtils.parseObject(JsonUtils.toJson(result.getData()), OrderManagerResponse.class); OrderManagerResponse orderDetailItem = JsonUtils.parseObject(JsonUtils.toJson(result.getData()), OrderManagerResponse.class);
mRootView.returnOrderDetail(orderDetailItem); mRootView.returnOrderDetail(orderDetailItem);
//刷新訂單列表 //刷新訂單列表
EventBus.getDefault().post(true, "updateOrderListEvent"); EventBus.getDefault().post(true, PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT);
} else { } else {
mRootView.showMessage("獲取賬單失敗"); mRootView.showMessage("獲取賬單失敗");
} }
......
...@@ -469,7 +469,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -469,7 +469,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
mAppManager.killActivity("PrintActivity"); mAppManager.killActivity("PrintActivity");
} }
}); });
RxJavaUtils.delay(1,TimeUnit.SECONDS) RxJavaUtils.delay(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Long>() { .subscribe(new Consumer<Long>() {
@Override @Override
...@@ -480,24 +480,32 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -480,24 +480,32 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
} }
private void printBill() { private void printBill() {
//打印結賬單 if (AppDevices.isHywebPos()) {
PrintContent printContent = new PrintContentAdapter().adaptationBillContent(DoshokuOrder.getInstance(), DoshokuOrder.getInstance().getOpenTableInfo()); printEndBack();
CC.obtainBuilder(ComponentName.COMPONENT_PRINT) } else {
.setActionName("printActivity") //打印結賬單
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL) PrintContent printContent = new PrintContentAdapter().adaptationBillContent(DoshokuOrder.getInstance(), DoshokuOrder.getInstance().getOpenTableInfo());
.addParam(PrintConstans.PRINT_CONTENT, printContent) CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.build() .setActionName("printActivity")
.callAsyncCallbackOnMainThread(new IComponentCallback() { .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
@Override .addParam(PrintConstans.PRINT_CONTENT, printContent)
public void onResult(CC cc, CCResult result) { .build()
LoganManager.w_code(TAG, "printBill " + "是否成功打印:" + result.isSuccess()); .callAsyncCallbackOnMainThread(new IComponentCallback() {
mAppManager.killActivity("PrintActivity"); @Override
mAppManager.killActivity(MealStandActivity.class); public void onResult(CC cc, CCResult result) {
mAppManager.killActivity(OrderContentActivity.class); LoganManager.w_code(TAG, "printBill " + "是否成功打印:" + result.isSuccess());
hideLoading(); printEndBack();
killMyself(); }
} });
}); }
}
private void printEndBack() {
hideLoading();
mAppManager.killActivity("PrintActivity");
mAppManager.killActivity(MealStandActivity.class);
mAppManager.killActivity(OrderContentActivity.class);
killMyself();
} }
private void setBillMoney() { private void setBillMoney() {
...@@ -532,20 +540,22 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -532,20 +540,22 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
if (hywebPayMethodIndex != -1) { if (hywebPayMethodIndex != -1) {
PayMethod hywebPayMethod = mBillMoneyList.get(hywebPayMethodIndex); PayMethod hywebPayMethod = mBillMoneyList.get(hywebPayMethodIndex);
SaleRequest saleRequest = new SaleRequest(); SaleRequest saleRequest = new SaleRequest();
if (hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1030) { switch (hywebPayMethod.getPayType()) {
//卡片支付 case PayTypeContract.PAY_METHOD_ID_1030:
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_CC); saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_CC);
} else if(hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1031){ break;
//掃碼支付 case PayTypeContract.PAY_METHOD_ID_1031:
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_QRC); saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_QRC);
}else if(hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1032){ break;
//八達通支付 case PayTypeContract.PAY_METHOD_ID_1032:
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_OPS); saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_OPS);
}else if(hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1033){ break;
//美国运通 case PayTypeContract.PAY_METHOD_ID_1033:
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_AE); saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_AE);
break;
default:
break;
} }
saleRequest.setTXN_AMT(DoshokuOrder.getInstance().getShoppingCart().getTotalAmount()); saleRequest.setTXN_AMT(DoshokuOrder.getInstance().getShoppingCart().getTotalAmount());
saleRequest.setTIPS(0); saleRequest.setTIPS(0);
......
...@@ -5,6 +5,7 @@ import android.os.Bundle; ...@@ -5,6 +5,7 @@ import android.os.Bundle;
import android.os.Message; import android.os.Message;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.LinearLayout; import android.widget.LinearLayout;
...@@ -75,17 +76,23 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent ...@@ -75,17 +76,23 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
@BindView(R2.id.ll_bottom) @BindView(R2.id.ll_bottom)
LinearLayout ll_bottom; LinearLayout ll_bottom;
@BindView(R2.id.btn_print_order)
QMUIAlphaButton btn_print_order;
@BindView(R2.id.btn_cancel_order)
QMUIAlphaButton btn_cancel_order;
@BindView(R2.id.btn_refund) @BindView(R2.id.btn_refund)
QMUIAlphaButton btn_refund; QMUIAlphaButton btn_refund;
@BindView(R2.id.btn_tips) @BindView(R2.id.btn_tips)
QMUIAlphaButton btn_tips; QMUIAlphaButton btn_tips;
@BindView(R2.id.btn_modify_order)
QMUIAlphaButton btn_modify_order;
private AllOrderFragment mNormalOrderFragment, mCancelOrderFragment, mVoidOrderFragment; private AllOrderFragment mNormalOrderFragment, mCancelOrderFragment, mVoidOrderFragment;
//當前顯示頁下標 //當前顯示頁下標
private int mCurrentFragmentIndex = 0; private int mCurrentFragmentIndex = 0;
//標題 //標題
private String[] mTabTitles = {"已付款", "已取消"}; private String[] mTabTitles = {"已付款", "已取消"};
// private String[] mTabTitles = {"堂食"}; // private String[] mTabTitles = {"堂食"};
//是否已經初始化數據,默認初始化第一個頁面 //是否已經初始化數據,默認初始化第一個頁面
private boolean[] mPageDataInit = {true, false, false}; private boolean[] mPageDataInit = {true, false, false};
...@@ -113,73 +120,68 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent ...@@ -113,73 +120,68 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
lp_content = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); lp_content = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
initTabAndPager(); initTabAndPager();
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "",getStatusByFragmentIndex(), 0, 10, null, false); mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "", getStatusByFragmentIndex(), 0, 10, null, false);
}
@Subscriber(tag = "updateOrderListEvent")
private void updateOrderList(boolean update) {
refeshOrderList(getStatusByFragmentIndex());
} }
@Subscriber(tag = PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT) @Subscriber(tag = PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT)
private void refreafshOrder(boolean refreafsh){ private void refreafshOrder(boolean refreafsh) {
refeshOrderList(getStatusByFragmentIndex()); refeshOrderList(getStatusByFragmentIndex());
} }
public void refeshOrderList(String status) { public void refeshOrderList(String status) {
setPageIndex(0); setPageIndex(0);
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "",status, 0, 10, null, false); mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "", status, 0, 10, null, false);
} }
public void loadOrderList(String orderType,String status, RefreshLayout refreshLayout, boolean isLoadMore) { public void loadOrderList(String orderType, String status, RefreshLayout refreshLayout, boolean isLoadMore) {
mPresenter.loadOrderList(orderType, status, getPageIndex(), getPageSize(), refreshLayout, isLoadMore); mPresenter.loadOrderList(orderType, status, getPageIndex(), getPageSize(), refreshLayout, isLoadMore);
} }
public void cancelOrder(long orderId, String orderType,String status) { public void cancelOrder(long orderId, String orderType, String status) {
mPresenter.cancelOrder(orderId, orderType,status); mPresenter.cancelOrder(orderId, orderType, status);
} }
@OnClick({R2.id.btn_print_order,R2.id.btn_modify_order,R2.id.btn_tips,R2.id.btn_cancel_order,R2.id.btn_refund}) @OnClick({R2.id.btn_print_order, R2.id.btn_modify_order, R2.id.btn_tips, R2.id.btn_cancel_order, R2.id.btn_refund})
public void OnClick(View v){ public void OnClick(View v) {
OrderManagerResponse orderItem = getCurrentOrderFragment().getSelectedOrderItem(); OrderManagerResponse orderItem = getCurrentOrderFragment().getCheckedOrderBean();
if(orderItem != null){ if (orderItem != null) {
int id = v.getId(); int id = v.getId();
if(id == R.id.btn_print_order){ if (id == R.id.btn_print_order) {
mPresenter.printOrder(this,orderItem); mPresenter.printOrder(this, orderItem);
}else if(id == R.id.btn_modify_order){ } else if (id == R.id.btn_modify_order) {
if (orderItem.getRestaurantTable() == null) { if (orderItem.getRestaurantTable() == null) {
showMessage("餐檯不存在,無法修改訂單"); showMessage("餐檯不存在,無法修改訂單");
return; return;
} }
mPresenter.modifyOrder(this,orderItem); mPresenter.modifyOrder(this, orderItem);
}else if(id == R.id.btn_tips){ } else if (id == R.id.btn_tips) {
mPresenter.orderTips(this, orderItem, new TipsOrder.OnRefundListener() { mPresenter.orderTips(this, orderItem, new TipsOrder.OnRefundListener() {
@Override @Override
public void refeshOrders() { public void refeshOrders() {
refeshOrderList(getStatusByFragmentIndex()); refreafshOrder(true);
} }
}); });
}else if(id == R.id.btn_cancel_order){ } else if (id == R.id.btn_cancel_order) {
mPresenter.orderCancel(this, orderItem, new CancelOrder.OnCancelListener() { mPresenter.orderCancel(this, orderItem, new CancelOrder.OnCancelListener() {
@Override @Override
public void cancel(long orderId) { public void cancel(long orderId) {
cancelOrder(orderId, getOrderType(),getStatusByFragmentIndex()); cancelOrder(orderId, getOrderType(), getStatusByFragmentIndex());
} }
@Override @Override
public void refeshOrders() { public void refeshOrders() {
refreafshOrder(true);
} }
}); });
}else if(id == R.id.btn_refund){ } else if (id == R.id.btn_refund) {
mPresenter.orderRefund(this, orderItem, new RefundOrder.OnRefundListener() { mPresenter.orderRefund(this, orderItem, new RefundOrder.OnRefundListener() {
@Override @Override
public void refeshOrders() { public void refeshOrders() {
refeshOrderList(getStatusByFragmentIndex()); refreafshOrder(true);
} }
}); });
} }
}else { } else {
showMessage("請選中需要操作的訂單!"); showMessage("請選中需要操作的訂單!");
} }
} }
...@@ -249,7 +251,7 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent ...@@ -249,7 +251,7 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
pagerAdapter.createFragment(index); pagerAdapter.createFragment(index);
if (!mPageDataInit[index]) { if (!mPageDataInit[index]) {
//未初始化數據,獲取數據 //未初始化數據,獲取數據
loadOrderList(getCurrentOrderFragment().getOrderType(),getStatusByFragmentIndex(), null, false); loadOrderList(getCurrentOrderFragment().getOrderType(), getStatusByFragmentIndex(), null, false);
} }
mPageDataInit[mCurrentFragmentIndex] = true; mPageDataInit[mCurrentFragmentIndex] = true;
...@@ -370,6 +372,29 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent ...@@ -370,6 +372,29 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
} }
@Override @Override
public void setOnCheckedChangedListener(OrderManagerResponse checkOrderBean) {
if (checkOrderBean != null) {
if (checkOrderBean.isCurrDeviceOrder()) {
setBtnEnabled(btn_cancel_order, true);
setBtnEnabled(btn_modify_order, true);
} else {
setBtnEnabled(btn_cancel_order, false);
setBtnEnabled(btn_modify_order, false);
}
setBtnEnabled(btn_print_order, true);
} else {
setBtnEnabled(btn_print_order, false);
setBtnEnabled(btn_cancel_order, false);
setBtnEnabled(btn_modify_order, false);
}
}
private void setBtnEnabled(Button btn, boolean enabled) {
btn.setEnabled(enabled);
btn.setClickable(enabled);
}
@Override
public AllOrderFragment getCurrentOrderFragment() { public AllOrderFragment getCurrentOrderFragment() {
switch (mCurrentFragmentIndex) { switch (mCurrentFragmentIndex) {
case 1: case 1:
...@@ -387,12 +412,12 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent ...@@ -387,12 +412,12 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
} }
@Override @Override
public String getStatusByFragmentIndex(){ public String getStatusByFragmentIndex() {
switch (mCurrentFragmentIndex) { switch (mCurrentFragmentIndex) {
case 1: case 1:
return OrderStatusContract.STATUS_6+""; return OrderStatusContract.STATUS_6 + "";
default: default:
return OrderStatusContract.STATUS_4+","+OrderStatusContract.STATUS_5; return OrderStatusContract.STATUS_4 + "," + OrderStatusContract.STATUS_5;
} }
} }
......
...@@ -211,7 +211,7 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent ...@@ -211,7 +211,7 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
} }
@Subscriber(tag = PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT) @Subscriber(tag = PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT)
private void refreafshOrder(boolean refreafsh){ private void refreafshOrder(boolean refreafsh) {
refreafshOrderDetail(); refreafshOrderDetail();
} }
...@@ -219,13 +219,13 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent ...@@ -219,13 +219,13 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
public void onClick(View v) { public void onClick(View v) {
int id = v.getId(); int id = v.getId();
if (id == R.id.btn_print_order) { if (id == R.id.btn_print_order) {
mPresenter.printOrder(this,mOrderDetailItem); mPresenter.printOrder(this, mOrderDetailItem);
} else if (id == R.id.btn_modify_order) { } else if (id == R.id.btn_modify_order) {
if (mOrderDetailItem.getRestaurantTable() == null) { if (mOrderDetailItem.getRestaurantTable() == null) {
showMessage("餐檯不存在,無法修改訂單"); showMessage("餐檯不存在,無法修改訂單");
return; return;
} }
mPresenter.modifyOrder(this,mOrderDetailItem); mPresenter.modifyOrder(this, mOrderDetailItem);
} else if (id == R.id.btn_cancel_order) { } else if (id == R.id.btn_cancel_order) {
mPresenter.orderCancel(this, mOrderDetailItem, new CancelOrder.OnCancelListener() { mPresenter.orderCancel(this, mOrderDetailItem, new CancelOrder.OnCancelListener() {
@Override @Override
...@@ -344,16 +344,16 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent ...@@ -344,16 +344,16 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
if (mOrderDetailItem.getRestaurantOperationId() != null) { if (mOrderDetailItem.getRestaurantOperationId() != null) {
setWithSettlementLayoutVisible(); setWithSettlementLayoutVisible();
} else { } else {
if(mOrderDetailItem.withHywebPay()){ if (mOrderDetailItem.withHywebPay()) {
if(mOrderDetailItem.isCurrDeviceOrder()){ if (mOrderDetailItem.isCurrDeviceOrder()) {
setCurrPosDeviceLayoutVisible(); setCurrPosDeviceLayoutVisible();
}else { } else {
setNotCurrPosDeviceLayoutVisible(); setNotCurrPosDeviceLayoutVisible();
} }
}else{ } else {
setNomalDeviceLayoutVisible(); setNomalDeviceLayoutVisible();
} }
setPublicLayoutVisible(); setPublicLayoutVisible();
} }
} }
...@@ -439,47 +439,55 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent ...@@ -439,47 +439,55 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
@Override @Override
public void setCurrPosDeviceLayoutVisible() { public void setCurrPosDeviceLayoutVisible() {
boolean containCard = mPresenter.containCardPayment(mOrderDetailItem.getOrderPays());
if (containCard) {
//當前設備訂單,且只有卡片支付才支持補小費
btn_tips.setVisibility(View.VISIBLE);
} else {
btn_tips.setVisibility(View.GONE);
}
if (!TextUtils.isEmpty(mOrderDetailItem.getCancelTxnId())) {
tv_order_status.setText("已取消");
tv_order_status.setVisibility(View.VISIBLE);
ll_bottom.setVisibility(View.GONE);
}else if (!TextUtils.isEmpty(mOrderDetailItem.getRefundTxnId())) {
tv_order_status.setVisibility(View.VISIBLE);
tv_order_status.setText("已退款");
ll_bottom.setVisibility(View.GONE);
}
//N5 POS異常重試 //N5 POS異常重試
if(mOrderDetailItem.getMatterStatus() == OrderManagerResponse.MATTER_STATUS_EXCEPTION){ if (mOrderDetailItem.getMatterStatus() == OrderManagerResponse.MATTER_STATUS_EXCEPTION) {
tv_reload_exception_status.setText(mOrderDetailItem.getExceptionReloadText()); tv_reload_exception_status.setText(mOrderDetailItem.getExceptionReloadText());
tv_reload_exception_status.setVisibility(View.VISIBLE); tv_reload_exception_status.setVisibility(View.VISIBLE);
tv_reload_exception_status.setOnClickListener(new View.OnClickListener() { tv_reload_exception_status.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); PosActionStatusExceptionFragment statusExceptionFragment = findFragment(PosActionStatusExceptionFragment.class);
statusExceptionParam.setTxnId(mOrderDetailItem.getMatterTxnId()); if (statusExceptionFragment == null) {
statusExceptionParam.setAmount(mOrderDetailItem.getTotalAmount()); PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setOrderId(mOrderDetailItem.getId()); statusExceptionParam.setTxnId(mOrderDetailItem.getMatterTxnId());
statusExceptionParam.setOrderNo(mOrderDetailItem.getOrderNo()); statusExceptionParam.setAmount(mOrderDetailItem.getTotalAmount());
statusExceptionParam.setPayMethodName(mOrderDetailItem.getPayNames()); statusExceptionParam.setOrderId(mOrderDetailItem.getId());
statusExceptionParam.setPosAction(PosAction.RETRIEVAL); statusExceptionParam.setOrderNo(mOrderDetailItem.getOrderNo());
loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam)); statusExceptionParam.setPayMethodName(mOrderDetailItem.getPayNames());
statusExceptionParam.setPosAction(mOrderDetailItem.getPosActionByMatterId());
loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
} else {
start(statusExceptionFragment);
}
} }
}); });
rl_container.setVisibility(View.VISIBLE); rl_container.setVisibility(View.VISIBLE);
rl_container.setBackgroundResource(R.color.transparent); rl_container.setBackgroundResource(R.color.transparent);
}else { ll_bottom.setVisibility(View.GONE);
} else {
tv_reload_exception_status.setText(""); tv_reload_exception_status.setText("");
tv_reload_exception_status.setVisibility(View.GONE); tv_reload_exception_status.setVisibility(View.GONE);
tv_reload_exception_status.setOnClickListener(null); tv_reload_exception_status.setOnClickListener(null);
rl_container.setVisibility(View.GONE); rl_container.setVisibility(View.GONE);
rl_container.setBackgroundResource(R.color.trans); rl_container.setBackgroundResource(R.color.trans);
ll_bottom.setVisibility(View.VISIBLE);
boolean containCard = mPresenter.containCardPayment(mOrderDetailItem.getOrderPays());
if (containCard) {
//當前設備訂單,且只有卡片支付才支持補小費
btn_tips.setVisibility(View.VISIBLE);
} else {
btn_tips.setVisibility(View.GONE);
}
if (!TextUtils.isEmpty(mOrderDetailItem.getCancelTxnId())) {
tv_order_status.setText("已取消");
tv_order_status.setVisibility(View.VISIBLE);
ll_bottom.setVisibility(View.GONE);
} else if (!TextUtils.isEmpty(mOrderDetailItem.getRefundTxnId())) {
tv_order_status.setVisibility(View.VISIBLE);
tv_order_status.setText("已退款");
ll_bottom.setVisibility(View.GONE);
}
} }
} }
......
...@@ -105,27 +105,27 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> { ...@@ -105,27 +105,27 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
@BindView(R2.id.tv_reload_exception_status) @BindView(R2.id.tv_reload_exception_status)
TextView tv_reload_exception_status; TextView tv_reload_exception_status;
public OrderCenterItemHolder(View itemView) { public OrderCenterItemHolder(View orderBeanView) {
super(itemView); super(orderBeanView);
} }
@Override @Override
public void setData(OrderManagerResponse item, int position) { public void setData(OrderManagerResponse orderBean, int position) {
setOrderItemDetail(item); setOrderItemDetail(orderBean);
setBtnListener(item, position); setBtnListener(orderBean);
rl_root_container.setOnClickListener(new View.OnClickListener() { rl_root_container.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (mOnItemClickListener != null) { if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(item, position); mOnItemClickListener.onItemClick(orderBean, position);
} }
} }
}); });
} }
private void setOrderItemDetail(OrderManagerResponse item) { private void setOrderItemDetail(OrderManagerResponse orderBean) {
String pax = LanguageUtils.get_language_system(mContext, "Meal.Mannumber", "人數") + ":"; String pax = LanguageUtils.get_language_system(mContext, "Meal.Mannumber", "人數") + ":";
String openTable = LanguageUtils.get_language_system(mContext, "open.table", "開台") + ":"; String openTable = LanguageUtils.get_language_system(mContext, "open.table", "開台") + ":";
String payTable = LanguageUtils.get_language_system(mContext, "open.table", "結賬") + ":"; String payTable = LanguageUtils.get_language_system(mContext, "open.table", "結賬") + ":";
...@@ -133,115 +133,86 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> { ...@@ -133,115 +133,86 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
String orderCode = LanguageUtils.get_language_system(mContext, "order.code", "訂單碼") + ": "; String orderCode = LanguageUtils.get_language_system(mContext, "order.code", "訂單碼") + ": ";
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "取餐碼") + ": "; String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "取餐碼") + ": ";
tv_people_num.setText(pax + item.getPerson()); tv_people_num.setText(pax + orderBean.getPerson());
tv_open_time.setText(openTable + TimeUtils.getStringByFormat(new Date(item.getCreateTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM)); tv_open_time.setText(openTable + TimeUtils.getStringByFormat(new Date(orderBean.getCreateTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
if (!TextUtils.isEmpty(item.getEndTime())) { if (!TextUtils.isEmpty(orderBean.getEndTime())) {
tv_pay_time.setText(payTable + TimeUtils.getStringByFormat(new Date(item.getEndTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM)); tv_pay_time.setText(payTable + TimeUtils.getStringByFormat(new Date(orderBean.getEndTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
} }
tv_pay_money_text.setText(amountText); tv_pay_money_text.setText(amountText);
tv_pay_money.setText(AppConstans.CARSH_STR + item.getTotalAmount()); tv_pay_money.setText(AppConstans.CARSH_STR + orderBean.getTotalAmount());
// btn_print_order.setText(LanguageUtils.get_language_system(mContext, "print.order", "打印賬單")); // btn_print_order.setText(LanguageUtils.get_language_system(mContext, "print.order", "打印賬單"));
// btn_tips.setText(LanguageUtils.get_language_system(mContext, "public.tips", "貼士")); // btn_tips.setText(LanguageUtils.get_language_system(mContext, "public.tips", "貼士"));
// btn_modify_order.setText(LanguageUtils.get_language_system(mContext, "modify.order", "修改訂單")); // btn_modify_order.setText(LanguageUtils.get_language_system(mContext, "modify.order", "修改訂單"));
// btn_cancel_order.setText(LanguageUtils.get_language_system(mContext, "cancel.order", "取消訂單")); // btn_cancel_order.setText(LanguageUtils.get_language_system(mContext, "cancel.order", "取消訂單"));
if (item.getOrderType() == OrderTypeConstans.order_type_2) { if (orderBean.getOrderType() == OrderTypeConstans.order_type_2) {
tv_table_name.setText("外賣"); tv_table_name.setText("外賣");
tv_order_num.setText(orderCode + item.getTakeFoodCode()); tv_order_num.setText(orderCode + orderBean.getTakeFoodCode());
} else if (item.getOrderType() == OrderTypeConstans.order_type_7) { } else if (orderBean.getOrderType() == OrderTypeConstans.order_type_7) {
tv_table_name.setText("自取"); tv_table_name.setText("自取");
tv_order_num.setText(orderCode + item.getBillNo() + " " + mealCode + item.getTakeFoodCode()); tv_order_num.setText(orderCode + orderBean.getBillNo() + " " + mealCode + orderBean.getTakeFoodCode());
} else { } else {
String tableName = LanguageUtils.get_language_system(mContext, "table.number", "檯號") + ": "; String tableName = LanguageUtils.get_language_system(mContext, "table.number", "檯號") + ": ";
String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "訂單號") + ": "; String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "訂單號") + ": ";
tv_table_name.setText(tableName + item.getTableName()); tv_table_name.setText(tableName + orderBean.getTableName());
tv_order_num.setText(orderNumber + item.getId()); tv_order_num.setText(orderNumber + orderBean.getId());
} }
//先将check回调情况,防止setChecked时反复调用onCheckedChanged方法 //先将check回调情况,防止setChecked时反复调用onCheckedChanged方法
cb_order.setOnCheckedChangeListener(null); cb_order.setOnCheckedChangeListener(null);
if (item.getStatus() == OrderStatusContract.STATUS_6) { if (orderBean.getStatus() == OrderStatusContract.STATUS_6) {
cb_order.setVisibility(View.GONE); cb_order.setVisibility(View.GONE);
}else { } else {
cb_order.setChecked(item.isChecked()); cb_order.setChecked(orderBean.isChecked());
} }
} }
private void setBtnListener(OrderManagerResponse item, int position) { private void setBtnListener(OrderManagerResponse orderBean) {
if (item.getStatus() != OrderStatusContract.STATUS_6) { if (orderBean.getStatus() != OrderStatusContract.STATUS_6) {
// btn_print_order.setOnClickListener(new View.OnClickListener() {
// @Override if (orderBean.isCurrDeviceOrder()) {
// public void onClick(View v) { if (orderBean.getMatterStatus() == OrderManagerResponse.MATTER_STATUS_SUCCESS) {
// if (mOnItemClickListener != null) { cb_order.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
// mOnItemClickListener.onPrintClick(item, position); @Override
// } public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// } for (int i = 0; i < mInfos.size(); i++) {
// }); OrderManagerResponse orderBean = mInfos.get(i);
// btn_modify_order.setOnClickListener(new View.OnClickListener() { orderBean.setChecked(false);
// @Override }
// public void onClick(View v) { orderBean.setChecked(isChecked);
// if (mOnItemClickListener != null) { notifyDataSetChanged();
// mOnItemClickListener.onModifyClick(item, position); if (mOnItemClickListener != null) {
// } mOnItemClickListener.onCheckedChanged(orderBean);
// } }
// }); }
// btn_cancel_order.setOnClickListener(new View.OnClickListener() { });
// @Override tv_reload_exception_status.setText("");
// public void onClick(View v) { tv_reload_exception_status.setVisibility(View.GONE);
// if (mOnItemClickListener != null) { tv_reload_exception_status.setOnClickListener(null);
// mOnItemClickListener.onCancelClick(item, position); horizontal_dividing_line.setVisibility(View.VISIBLE);
// } rl_root_container.setBackgroundResource(R.drawable.shape_rect_radius_white_5);
// } } else {
// }); cb_order.setOnCheckedChangeListener(null);
// btn_refund.setOnClickListener(new View.OnClickListener() { tv_reload_exception_status.setText(orderBean.getExceptionReloadText());
// @Override tv_reload_exception_status.setVisibility(View.VISIBLE);
// public void onClick(View v) { tv_reload_exception_status.setOnClickListener(new View.OnClickListener() {
// if (mOnItemClickListener != null) { @Override
// mOnItemClickListener.onRefundClick(item, position); public void onClick(View v) {
// } if (mOnItemClickListener != null) {
// } mOnItemClickListener.onReloadExceptionStatus(orderBean, orderBean.getMatterTxnId());
// }); }
// btn_tips.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// if (mOnItemClickListener != null) {
// mOnItemClickListener.onTipsClick(item, position);
// }
// }
// });
if (item.getMatterStatus() == OrderManagerResponse.MATTER_STATUS_SUCCESS) {
cb_order.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
for (int i = 0; i < mInfos.size(); i++) {
OrderManagerResponse item = mInfos.get(i);
item.setChecked(false);
} }
item.setChecked(isChecked); });
notifyDataSetChanged(); horizontal_dividing_line.setVisibility(View.GONE);
} rl_root_container.setBackgroundResource(R.drawable.shape_rect_radius_transparent_5);
}); }
tv_reload_exception_status.setText("");
tv_reload_exception_status.setVisibility(View.GONE);
tv_reload_exception_status.setOnClickListener(null);
horizontal_dividing_line.setVisibility(View.VISIBLE);
rl_root_container.setBackgroundResource(R.drawable.shape_rect_radius_white_5);
} else { } else {
//非当前POS设备不可操作
cb_order.setVisibility(View.GONE);
cb_order.setOnCheckedChangeListener(null); cb_order.setOnCheckedChangeListener(null);
tv_reload_exception_status.setText(item.getExceptionReloadText());
tv_reload_exception_status.setVisibility(View.VISIBLE);
tv_reload_exception_status.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mOnItemClickListener != null){
mOnItemClickListener.onReloadExceptionStatus(item,item.getMatterTxnId());
}
}
});
horizontal_dividing_line.setVisibility(View.GONE);
rl_root_container.setBackgroundResource(R.drawable.shape_rect_radius_transparent_5);
} }
} }
} }
} }
...@@ -255,15 +226,17 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> { ...@@ -255,15 +226,17 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
void onItemClick(OrderManagerResponse datasBean, int position); void onItemClick(OrderManagerResponse datasBean, int position);
void onPrintClick(OrderManagerResponse datasBean, int position); // void onPrintClick(OrderManagerResponse datasBean, int position);
//
void onModifyClick(OrderManagerResponse datasBean, int position); // void onModifyClick(OrderManagerResponse datasBean, int position);
//
void onCancelClick(OrderManagerResponse datasBean, int position); // void onCancelClick(OrderManagerResponse datasBean, int position);
//
void onRefundClick(OrderManagerResponse datasBean, int position); // void onRefundClick(OrderManagerResponse datasBean, int position);
//
void onTipsClick(OrderManagerResponse datasBean, int position); // void onTipsClick(OrderManagerResponse datasBean, int position);
void onCheckedChanged(OrderManagerResponse checkedOrder);
void onReloadExceptionStatus(OrderManagerResponse datasBean, String txnId); void onReloadExceptionStatus(OrderManagerResponse datasBean, String txnId);
......
...@@ -254,8 +254,8 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements ...@@ -254,8 +254,8 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
} }
@Nullable @Nullable
public OrderManagerResponse getSelectedOrderItem(){ public OrderManagerResponse getCheckedOrderBean(){
return mPresenter.getSelectedOrderItem(); return mPresenter.getCheckedOrderBean();
} }
public RefreshLayout getRefreshLayout() { public RefreshLayout getRefreshLayout() {
......
...@@ -32,11 +32,6 @@ ...@@ -32,11 +32,6 @@
android:fitsSystemWindows="true"/> android:fitsSystemWindows="true"/>
</LinearLayout> </LinearLayout>
<FrameLayout
android:id="@+id/rl_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<LinearLayout <LinearLayout
android:id="@+id/ll_bottom" android:id="@+id/ll_bottom"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -53,7 +48,9 @@ ...@@ -53,7 +48,9 @@
android:background="@color/orange_400" android:background="@color/orange_400"
android:text="打印訂單" android:text="打印訂單"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13" /> android:textSize="@dimen/sp_13"
android:clickable="false"
android:enabled="false"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton <com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_modify_order" android:id="@+id/btn_modify_order"
...@@ -64,7 +61,9 @@ ...@@ -64,7 +61,9 @@
android:text="修改訂單" android:text="修改訂單"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13" android:textSize="@dimen/sp_13"
android:visibility="visible" /> android:visibility="visible"
android:clickable="false"
android:enabled="false"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton <com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_order_status" android:id="@+id/btn_order_status"
...@@ -87,7 +86,9 @@ ...@@ -87,7 +86,9 @@
android:text="取消訂單" android:text="取消訂單"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13" android:textSize="@dimen/sp_13"
android:visibility="visible" /> android:visibility="visible"
android:clickable="false"
android:enabled="false"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton <com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_refund" android:id="@+id/btn_refund"
...@@ -98,7 +99,9 @@ ...@@ -98,7 +99,9 @@
android:text="退款" android:text="退款"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13" android:textSize="@dimen/sp_13"
android:visibility="gone"/> android:visibility="gone"
android:clickable="false"
android:enabled="false"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton <com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_tips" android:id="@+id/btn_tips"
...@@ -109,7 +112,9 @@ ...@@ -109,7 +112,9 @@
android:text="貼士" android:text="貼士"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13" android:textSize="@dimen/sp_13"
android:visibility="gone"/> android:visibility="gone"
android:clickable="false"
android:enabled="false"/>
</LinearLayout> </LinearLayout>
<FrameLayout <FrameLayout
......
...@@ -7,8 +7,8 @@ ext { ...@@ -7,8 +7,8 @@ ext {
targetSdkVersion : 29, targetSdkVersion : 29,
//正式版: 1.0.3 3 //正式版: 1.0.3 3
//內部測試版:1.2.0 20 //內部測試版:1.2.0 20
versionCode : 20, versionCode : 21,
versionName : "1.2.0" versionName : "1.2.1"
] ]
version = [ version = [
......
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006eafeceb, pid=7608, tid=0x0000000000005338
#
# JRE version: OpenJDK Runtime Environment (8.0_242-b01) (build 1.8.0_242-release-1644-b01)
# Java VM: OpenJDK 64-Bit Server VM (25.242-b01 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V [jvm.dll+0x48eceb]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
#
#
--------------- T H R E A D ---------------
Current thread (0x0000000018c5d800): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=21304, stack(0x0000000019420000,0x0000000019520000)]
siginfo: ExceptionCode=0xc0000005, reading address 0xffffffffffffffff
Registers:
RAX=0x000000003529a100, RBX=0x0016460c10000000, RCX=0x00000000000014cc, RDX=0x000000002fda7060
RSP=0x000000001951b5c0, RBP=0x000000000000003f, RSI=0x000000002fda7060, RDI=0x000000001951bba0
R8 =0x00000000000014cc, R9 =0x0000000000000283, R10=0x00000000321c4640, R11=0x0000000032c52ba0
R12=0x000000001b2cbdf8, R13=0x0000000035ecd578, R14=0x000000001951bba0, R15=0x000000002fda7060
RIP=0x000000006eafeceb, EFLAGS=0x0000000000010283
Top of Stack: (sp=0x000000001951b5c0)
0x000000001951b5c0: 00000000319a3520 000000001951bba0
0x000000001951b5d0: 0000000035425d00 000000001b2cbdf8
0x000000001951b5e0: 0000000035ecd578 000000006eb03216
0x000000001951b5f0: 000000001951b630 00000000319a3520
0x000000001951b600: 0000000035ecea70 0000000027210b80
0x000000001951b610: 0000000018c5bac0 0000000000004000
0x000000001951b620: 0000000032c32ba0 0000000000002038
0x000000001951b630: 000000001951b768 000000001951b748
0x000000001951b640: 0000000000000001 000000001951bba0
0x000000001951b650: 0000000027210b80 000000006eb033d3
0x000000001951b660: 00000000321cab08 0000000027210b80
0x000000001951b670: 000000000000045a 000000002fda7060
0x000000001951b680: 0000000027210b80 000000001951b7b8
0x000000001951b690: 0000000000000000 000000006eb04c79
0x000000001951b6a0: 00000000321cab08 000000000000045a
0x000000001951b6b0: 0000000000000001 0000000000000160
Instructions: (pc=0x000000006eafeceb)
0x000000006eafeccb: 48 8b 87 00 0a 00 00 39 2c 88 72 51 48 3b de 74
0x000000006eafecdb: 48 44 8b 43 28 4c 8b 8f f8 09 00 00 4b 8b 1c c1
0x000000006eafeceb: 48 8b 43 08 48 83 38 00 75 26 8b 57 28 8b 43 28
0x000000006eafecfb: 3b c2 73 0c 8b c8 48 8b 47 30 48 8b 1c c8 eb 02
Register to memory mapping:
RAX=0x000000003529a100 is an unknown value
RBX=0x0016460c10000000 is an unknown value
RCX=0x00000000000014cc is an unknown value
RDX=0x000000002fda7060 is an unknown value
RSP=0x000000001951b5c0 is pointing into the stack for thread: 0x0000000018c5d800
RBP=0x000000000000003f is an unknown value
RSI=0x000000002fda7060 is an unknown value
RDI=0x000000001951bba0 is pointing into the stack for thread: 0x0000000018c5d800
R8 =0x00000000000014cc is an unknown value
R9 =0x0000000000000283 is an unknown value
R10=0x00000000321c4640 is an unknown value
R11=0x0000000032c52ba0 is an unknown value
R12=0x000000001b2cbdf8 is an unknown value
R13=0x0000000035ecd578 is an unknown value
R14=0x000000001951bba0 is pointing into the stack for thread: 0x0000000018c5d800
R15=0x000000002fda7060 is an unknown value
Stack: [0x0000000019420000,0x0000000019520000], sp=0x000000001951b5c0, free space=1005k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [jvm.dll+0x48eceb]
V [jvm.dll+0x493216]
V [jvm.dll+0x4933d3]
V [jvm.dll+0x494c79]
V [jvm.dll+0x496a23]
V [jvm.dll+0x4470f0]
V [jvm.dll+0x447f14]
V [jvm.dll+0x42b072]
V [jvm.dll+0x8230f]
V [jvm.dll+0x82c7f]
V [jvm.dll+0x220b7f]
V [jvm.dll+0x27276a]
C [msvcr100.dll+0x21d9f]
C [msvcr100.dll+0x21e3b]
C [KERNEL32.DLL+0x17c24]
C [ntdll.dll+0x6d4d1]
Current CompileTask:
C2: 988013 50680 4 com.android.tools.r8.ir.conversion.K::a (1421 bytes)
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x00000000226e6800 JavaThread "WorkerExecutor Queue Thread 11" [_thread_blocked, id=16272, stack(0x0000000034220000,0x0000000034320000)]
0x0000000018dcf800 JavaThread "WorkerExecutor Queue Thread 10" [_thread_blocked, id=7644, stack(0x000000002ece0000,0x000000002ede0000)]
0x0000000018dd2000 JavaThread "WorkerExecutor Queue Thread 9" [_thread_blocked, id=2448, stack(0x000000002ebe0000,0x000000002ece0000)]
0x000000001ddcd800 JavaThread "WorkerExecutor Queue Thread 8" [_thread_blocked, id=12528, stack(0x000000002eae0000,0x000000002ebe0000)]
0x000000001ddcf000 JavaThread "WorkerExecutor Queue Thread 7" [_thread_blocked, id=8008, stack(0x000000002e300000,0x000000002e400000)]
0x000000001ddcb000 JavaThread "WorkerExecutor Queue Thread 6" [_thread_blocked, id=13420, stack(0x000000002de40000,0x000000002df40000)]
0x000000001ddcc000 JavaThread "WorkerExecutor Queue Thread 5" [_thread_blocked, id=21412, stack(0x000000002d540000,0x000000002d640000)]
0x000000001a9ad800 JavaThread "WorkerExecutor Queue Thread 4" [_thread_blocked, id=20900, stack(0x000000002d440000,0x000000002d540000)]
0x000000001a9ab000 JavaThread "ForkJoinPool.commonPool-worker-6" daemon [_thread_blocked, id=20256, stack(0x000000002d340000,0x000000002d440000)]
0x000000001a9ac800 JavaThread "ForkJoinPool.commonPool-worker-5" daemon [_thread_blocked, id=20704, stack(0x000000002ca40000,0x000000002cb40000)]
0x000000001a9a9800 JavaThread "ForkJoinPool.commonPool-worker-4" daemon [_thread_blocked, id=12024, stack(0x000000002c740000,0x000000002c840000)]
0x00000000226e9800 JavaThread "WorkerExecutor Queue Thread 3" [_thread_blocked, id=17376, stack(0x0000000000f70000,0x0000000001070000)]
0x000000001b1a6800 JavaThread "RMI TCP Connection(15)-127.0.0.1" daemon [_thread_in_native, id=15416, stack(0x000000002c940000,0x000000002ca40000)]
0x000000001b1a6000 JavaThread "RMI TCP Connection(13)-127.0.0.1" daemon [_thread_in_native, id=20208, stack(0x000000002c840000,0x000000002c940000)]
0x000000001b1a4800 JavaThread "Cache worker for execution history cache (D:\Android\workspace\GSA-Cloud2\.gradle\5.4.1\executionHistory)" [_thread_blocked, id=16140, stack(0x0000000029bf0000,0x0000000029cf0000)]
0x000000001b1a3800 JavaThread "Execution worker for ':' Thread 7" [_thread_blocked, id=20828, stack(0x0000000029af0000,0x0000000029bf0000)]
0x000000001b1a0800 JavaThread "Execution worker for ':' Thread 6" [_thread_blocked, id=15584, stack(0x0000000029190000,0x0000000029290000)]
0x0000000022c8c000 JavaThread "Execution worker for ':' Thread 5" [_thread_blocked, id=1400, stack(0x0000000028c90000,0x0000000028d90000)]
0x0000000022c8b800 JavaThread "Execution worker for ':' Thread 4" [_thread_blocked, id=12156, stack(0x0000000028890000,0x0000000028990000)]
0x0000000022c90000 JavaThread "Execution worker for ':' Thread 3" [_thread_blocked, id=1620, stack(0x0000000028290000,0x0000000028390000)]
0x0000000022c8e800 JavaThread "Execution worker for ':' Thread 2" [_thread_blocked, id=1928, stack(0x0000000028190000,0x0000000028290000)]
0x0000000022c84000 JavaThread "Execution worker for ':'" [_thread_blocked, id=17444, stack(0x0000000028090000,0x0000000028190000)]
0x0000000022c8a000 JavaThread "Cache worker for file content cache (D:\Android\workspace\GSA-Cloud2\.gradle\5.4.1\fileContent)" [_thread_blocked, id=7484, stack(0x0000000027f90000,0x0000000028090000)]
0x0000000022c85800 JavaThread "Cache worker for Build Output Cleanup Cache (D:\Android\workspace\GSA-Cloud2\.gradle\buildOutputCleanup)" [_thread_blocked, id=2772, stack(0x0000000026560000,0x0000000026660000)]
0x0000000025e5d000 JavaThread "Build operations Thread 8" [_thread_blocked, id=22296, stack(0x0000000023a80000,0x0000000023b80000)]
0x0000000025e5b800 JavaThread "Build operations Thread 7" [_thread_blocked, id=2776, stack(0x00000000225b0000,0x00000000226b0000)]
0x0000000025e61800 JavaThread "Build operations Thread 6" [_thread_blocked, id=9432, stack(0x00000000224b0000,0x00000000225b0000)]
0x0000000025e60000 JavaThread "Build operations Thread 5" [_thread_blocked, id=15136, stack(0x00000000223b0000,0x00000000224b0000)]
0x0000000025e54000 JavaThread "Build operations Thread 4" [_thread_blocked, id=19312, stack(0x00000000222b0000,0x00000000223b0000)]
0x0000000025e5a800 JavaThread "Build operations Thread 3" [_thread_blocked, id=9224, stack(0x00000000221b0000,0x00000000222b0000)]
0x0000000025e57000 JavaThread "Build operations Thread 2" [_thread_blocked, id=20012, stack(0x00000000220b0000,0x00000000221b0000)]
0x0000000025e56000 JavaThread "Build operations" [_thread_blocked, id=1624, stack(0x0000000021650000,0x0000000021750000)]
0x0000000025e5a000 JavaThread "Cache worker for cache directory md-rule (D:\gradle\caches\5.4.1\md-rule)" [_thread_blocked, id=4140, stack(0x000000001fd40000,0x000000001fe40000)]
0x0000000025e59000 JavaThread "Cache worker for cache directory md-supplier (D:\gradle\caches\5.4.1\md-supplier)" [_thread_blocked, id=9172, stack(0x000000001fc40000,0x000000001fd40000)]
0x000000001e57a000 JavaThread "Cache worker for file hash cache (D:\Android\workspace\GSA-Cloud2\.gradle\5.4.1\fileHashes)" [_thread_blocked, id=20452, stack(0x000000001fb40000,0x000000001fc40000)]
0x000000001e57b800 JavaThread "Thread-153" [_thread_blocked, id=19388, stack(0x000000001bfd0000,0x000000001c0d0000)]
0x000000001e579800 JavaThread "Stdin handler" [_thread_blocked, id=5204, stack(0x000000001bdd0000,0x000000001bed0000)]
0x000000001e578800 JavaThread "Asynchronous log dispatcher for DefaultDaemonConnection: socket connection from /127.0.0.1:54783 to /127.0.0.1:54901" [_thread_blocked, id=2516, stack(0x000000001bcd0000,0x000000001bdd0000)]
0x000000001e57f800 JavaThread "Daemon worker Thread 4" [_thread_blocked, id=19868, stack(0x000000001bbd0000,0x000000001bcd0000)]
0x000000001e57e000 JavaThread "Cancel handler" [_thread_blocked, id=16276, stack(0x000000001b8d0000,0x000000001b9d0000)]
0x000000001e57b000 JavaThread "Handler for socket connection from /127.0.0.1:54783 to /127.0.0.1:54901" [_thread_in_native, id=1404, stack(0x000000001b7d0000,0x000000001b8d0000)]
0x000000001e570800 JavaThread "Daemon Thread 4" [_thread_blocked, id=6776, stack(0x0000000000e70000,0x0000000000f70000)]
0x000000001e571000 JavaThread "RMI TCP Connection(idle)" daemon [_thread_blocked, id=6344, stack(0x0000000001070000,0x0000000001170000)]
0x00000000226e5000 JavaThread "Cache worker for Java compile cache (D:\gradle\caches\5.4.1\javaCompile)" [_thread_blocked, id=2780, stack(0x000000001bed0000,0x000000001bfd0000)]
0x000000001ddc9000 JavaThread "RMI Reaper" [_thread_blocked, id=20588, stack(0x0000000028b90000,0x0000000028c90000)]
0x000000001ddc4800 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=8112, stack(0x0000000028a90000,0x0000000028b90000)]
0x000000001ddc1800 JavaThread "GC Daemon" daemon [_thread_blocked, id=19644, stack(0x0000000028990000,0x0000000028a90000)]
0x000000001ddc8000 JavaThread "RMI Scheduler(0)" daemon [_thread_blocked, id=20336, stack(0x0000000028790000,0x0000000028890000)]
0x000000001e577000 JavaThread "Cache worker for file content cache (D:\gradle\caches\5.4.1\fileContent)" [_thread_blocked, id=148, stack(0x0000000024e80000,0x0000000024f80000)]
0x000000001a9a9000 JavaThread "Memory manager" [_thread_blocked, id=21744, stack(0x0000000024380000,0x0000000024480000)]
0x000000001b19b800 JavaThread "Cache worker for execution history cache (D:\gradle\caches\5.4.1\executionHistory)" [_thread_blocked, id=2940, stack(0x0000000021750000,0x0000000021850000)]
0x000000001b19c000 JavaThread "Cache worker for journal cache (D:\gradle\caches\journal-1)" [_thread_blocked, id=6248, stack(0x000000001c4d0000,0x000000001c5d0000)]
0x000000001b19a000 JavaThread "File lock request listener" [_thread_in_native, id=12180, stack(0x000000001c1d0000,0x000000001c2d0000)]
0x000000001b19e800 JavaThread "Cache worker for file hash cache (D:\gradle\caches\5.4.1\fileHashes)" [_thread_blocked, id=16904, stack(0x000000001c0d0000,0x000000001c1d0000)]
0x0000000018dd1000 JavaThread "Daemon periodic checks" [_thread_blocked, id=11052, stack(0x000000001b6d0000,0x000000001b7d0000)]
0x0000000018dd5000 JavaThread "Incoming local TCP Connector on port 54783" [_thread_in_native, id=11520, stack(0x000000001b5d0000,0x000000001b6d0000)]
0x0000000018dd0800 JavaThread "Daemon health stats" [_thread_blocked, id=20260, stack(0x0000000019a20000,0x0000000019b20000)]
0x0000000018d55800 JavaThread "Service Thread" daemon [_thread_blocked, id=10592, stack(0x0000000019820000,0x0000000019920000)]
0x0000000018cbd000 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=20376, stack(0x0000000019720000,0x0000000019820000)]
0x0000000018cb9000 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=20892, stack(0x0000000019620000,0x0000000019720000)]
0x0000000018c63000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=20232, stack(0x0000000019520000,0x0000000019620000)]
=>0x0000000018c5d800 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=21304, stack(0x0000000019420000,0x0000000019520000)]
0x0000000018c5b000 JavaThread "Attach Listener" daemon [_thread_blocked, id=19420, stack(0x0000000019320000,0x0000000019420000)]
0x0000000018c46800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=8928, stack(0x0000000019220000,0x0000000019320000)]
0x000000000308d800 JavaThread "Finalizer" daemon [_thread_blocked, id=15452, stack(0x0000000019120000,0x0000000019220000)]
0x0000000016e4c800 JavaThread "Reference Handler" daemon [_thread_blocked, id=10528, stack(0x0000000019020000,0x0000000019120000)]
0x0000000002a8d800 JavaThread "main" [_thread_blocked, id=8560, stack(0x0000000002e90000,0x0000000002f90000)]
Other Threads:
0x0000000016e48800 VMThread [stack: 0x0000000018b20000,0x0000000018c20000] [id=5324]
0x0000000018d57000 WatcherThread [stack: 0x0000000019920000,0x0000000019a20000] [id=11420]
VM state:at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
[0x0000000002a8c900] Threads_lock - owner thread: 0x0000000016e48800
[0x0000000002a8cb80] Heap_lock - owner thread: 0x000000001ddcd800
heap address: 0x00000000a0000000, size: 1536 MB, Compressed Oops mode: 32-bit
Narrow klass base: 0x0000000000000000, Narrow klass shift: 3
Compressed class space size: 1073741824 Address: 0x0000000100000000
Heap:
PSYoungGen total 349696K, used 210908K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000)
eden space 175104K, 100% used [0x00000000e0000000,0x00000000eab00000,0x00000000eab00000)
from space 174592K, 20% used [0x00000000f5580000,0x00000000f7877108,0x0000000100000000)
to space 174592K, 19% used [0x00000000eab00000,0x00000000ecb7bf60,0x00000000f5580000)
ParOldGen total 790016K, used 382593K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 48% used [0x00000000a0000000,0x00000000b75a04b8,0x00000000d0380000)
Metaspace used 156274K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
Card table byte_map: [0x0000000012450000,0x0000000012760000] byte_map_base: 0x0000000011f50000
Marking Bits: (ParMarkBitMap*) 0x000000006ee3f030
Begin Bits: [0x0000000013160000, 0x0000000014960000)
End Bits: [0x0000000014960000, 0x0000000016160000)
Polling page: 0x0000000000d60000
CodeCache: size=245760Kb used=124517Kb max_used=126801Kb free=121242Kb
bounds [0x0000000003090000, 0x000000000ad00000, 0x0000000012090000]
total_blobs=33767 nmethods=32792 adapters=883
compilation: enabled
Compilation events (10 events):
Event: 986.644 Thread 0x0000000018cbd000 50826 2 com.android.tools.r8.q.a.a.b.f$a$b::next (35 bytes)
Event: 986.646 Thread 0x0000000018c63000 nmethod 50696 0x0000000007157c50 code [0x0000000007157e60, 0x0000000007158a88]
Event: 986.646 Thread 0x0000000018cbd000 nmethod 50826 0x0000000005353150 code [0x0000000005353300, 0x0000000005353728]
Event: 986.646 Thread 0x0000000018cbd000 50827 2 com.android.tools.r8.q.a.a.b.f$a::a (35 bytes)
Event: 986.646 Thread 0x0000000018c63000 50822 4 com.android.tools.r8.ir.regalloc.a::a (952 bytes)
Event: 986.647 Thread 0x0000000018cbd000 nmethod 50827 0x0000000005352b90 code [0x0000000005352d20, 0x0000000005352fe8]
Event: 986.647 Thread 0x0000000018cbd000 50828 2 com.android.tools.r8.q.a.a.b.f$i::spliterator (14 bytes)
Event: 986.648 Thread 0x0000000018cbd000 nmethod 50828 0x00000000053527d0 code [0x0000000005352940, 0x0000000005352ad8]
Event: 986.833 Thread 0x0000000018cbd000 50829 2 com.google.common.collect.AbstractListMultimap::createUnmodifiableEmptyCollection (5 bytes)
Event: 986.834 Thread 0x0000000018cbd000 nmethod 50829 0x0000000005352490 code [0x00000000053525e0, 0x0000000005352730]
GC Heap History (10 events):
Event: 982.715 GC heap before
{Heap before GC invocations=220 (full 38):
PSYoungGen total 332288K, used 274593K [0x00000000e0000000, 0x00000000ff280000, 0x0000000100000000)
eden space 162304K, 100% used [0x00000000e0000000,0x00000000e9e80000,0x00000000e9e80000)
from space 169984K, 66% used [0x00000000e9e80000,0x00000000f0c287a8,0x00000000f4480000)
to space 171520K, 0% used [0x00000000f4b00000,0x00000000f4b00000,0x00000000ff280000)
ParOldGen total 790016K, used 296764K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 37% used [0x00000000a0000000,0x00000000b21cf280,0x00000000d0380000)
Metaspace used 156259K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
Event: 982.900 GC heap after
Heap after GC invocations=220 (full 38):
PSYoungGen total 336384K, used 117165K [0x00000000e0000000, 0x00000000ff900000, 0x0000000100000000)
eden space 164864K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000ea100000)
from space 171520K, 68% used [0x00000000f4b00000,0x00000000fbd6b570,0x00000000ff280000)
to space 174080K, 0% used [0x00000000ea100000,0x00000000ea100000,0x00000000f4b00000)
ParOldGen total 790016K, used 296812K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 37% used [0x00000000a0000000,0x00000000b21db280,0x00000000d0380000)
Metaspace used 156259K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
}
Event: 983.434 GC heap before
{Heap before GC invocations=221 (full 38):
PSYoungGen total 336384K, used 282029K [0x00000000e0000000, 0x00000000ff900000, 0x0000000100000000)
eden space 164864K, 100% used [0x00000000e0000000,0x00000000ea100000,0x00000000ea100000)
from space 171520K, 68% used [0x00000000f4b00000,0x00000000fbd6b570,0x00000000ff280000)
to space 174080K, 0% used [0x00000000ea100000,0x00000000ea100000,0x00000000f4b00000)
ParOldGen total 790016K, used 296815K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 37% used [0x00000000a0000000,0x00000000b21dbfb8,0x00000000d0380000)
Metaspace used 156260K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
Event: 983.719 GC heap after
Heap after GC invocations=221 (full 38):
PSYoungGen total 338944K, used 119963K [0x00000000e0000000, 0x00000000ffe00000, 0x0000000100000000)
eden space 164864K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000ea100000)
from space 174080K, 68% used [0x00000000ea100000,0x00000000f1626e40,0x00000000f4b00000)
to space 174592K, 0% used [0x00000000f5380000,0x00000000f5380000,0x00000000ffe00000)
ParOldGen total 790016K, used 296871K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 37% used [0x00000000a0000000,0x00000000b21e9fb8,0x00000000d0380000)
Metaspace used 156260K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
}
Event: 984.132 GC heap before
{Heap before GC invocations=222 (full 38):
PSYoungGen total 338944K, used 284827K [0x00000000e0000000, 0x00000000ffe00000, 0x0000000100000000)
eden space 164864K, 100% used [0x00000000e0000000,0x00000000ea100000,0x00000000ea100000)
from space 174080K, 68% used [0x00000000ea100000,0x00000000f1626e40,0x00000000f4b00000)
to space 174592K, 0% used [0x00000000f5380000,0x00000000f5380000,0x00000000ffe00000)
ParOldGen total 790016K, used 296871K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 37% used [0x00000000a0000000,0x00000000b21e9fb8,0x00000000d0380000)
Metaspace used 156260K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
Event: 984.271 GC heap after
Heap after GC invocations=222 (full 38):
PSYoungGen total 347648K, used 129584K [0x00000000e0000000, 0x00000000ffe80000, 0x0000000100000000)
eden space 173056K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000ea900000)
from space 174592K, 74% used [0x00000000f5380000,0x00000000fd20c208,0x00000000ffe00000)
to space 174592K, 0% used [0x00000000ea900000,0x00000000ea900000,0x00000000f5380000)
ParOldGen total 790016K, used 296967K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 37% used [0x00000000a0000000,0x00000000b2201fd8,0x00000000d0380000)
Metaspace used 156260K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
}
Event: 984.892 GC heap before
{Heap before GC invocations=223 (full 38):
PSYoungGen total 347648K, used 302640K [0x00000000e0000000, 0x00000000ffe80000, 0x0000000100000000)
eden space 173056K, 100% used [0x00000000e0000000,0x00000000ea900000,0x00000000ea900000)
from space 174592K, 74% used [0x00000000f5380000,0x00000000fd20c208,0x00000000ffe00000)
to space 174592K, 0% used [0x00000000ea900000,0x00000000ea900000,0x00000000f5380000)
ParOldGen total 790016K, used 296967K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 37% used [0x00000000a0000000,0x00000000b2201fd8,0x00000000d0380000)
Metaspace used 156269K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
Event: 985.307 GC heap after
Heap after GC invocations=223 (full 38):
PSYoungGen total 347648K, used 71843K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000)
eden space 173056K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000ea900000)
from space 174592K, 41% used [0x00000000ea900000,0x00000000eef28ed8,0x00000000f5380000)
to space 174592K, 0% used [0x00000000f5580000,0x00000000f5580000,0x0000000100000000)
ParOldGen total 790016K, used 340863K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 43% used [0x00000000a0000000,0x00000000b4cdfcc0,0x00000000d0380000)
Metaspace used 156269K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
}
Event: 986.202 GC heap before
{Heap before GC invocations=224 (full 38):
PSYoungGen total 347648K, used 244899K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000)
eden space 173056K, 100% used [0x00000000e0000000,0x00000000ea900000,0x00000000ea900000)
from space 174592K, 41% used [0x00000000ea900000,0x00000000eef28ed8,0x00000000f5380000)
to space 174592K, 0% used [0x00000000f5580000,0x00000000f5580000,0x0000000100000000)
ParOldGen total 790016K, used 340863K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 43% used [0x00000000a0000000,0x00000000b4cdfcc0,0x00000000d0380000)
Metaspace used 156271K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
Event: 986.572 GC heap after
Heap after GC invocations=224 (full 38):
PSYoungGen total 349696K, used 35804K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000)
eden space 175104K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000eab00000)
from space 174592K, 20% used [0x00000000f5580000,0x00000000f7877108,0x0000000100000000)
to space 174592K, 0% used [0x00000000eab00000,0x00000000eab00000,0x00000000f5580000)
ParOldGen total 790016K, used 377455K [0x00000000a0000000, 0x00000000d0380000, 0x00000000e0000000)
object space 790016K, 47% used [0x00000000a0000000,0x00000000b709bc10,0x00000000d0380000)
Metaspace used 156271K, capacity 167228K, committed 195328K, reserved 1218560K
class space used 19720K, capacity 22241K, committed 26624K, reserved 1048576K
}
Deoptimization events (10 events):
Event: 982.379 Thread 0x000000001ddcd800 Uncommon trap: reason=speculate_class_check action=maybe_recompile pc=0x0000000005497b0c method=com.android.tools.r8.ir.conversion.K.a(Lcom/android/tools/r8/s/b/o;)Lcom/android/tools/r8/ir/conversion/F; @ 67
Event: 982.379 Thread 0x000000001ddcd800 Uncommon trap: reason=speculate_class_check action=maybe_recompile pc=0x0000000005497b0c method=com.android.tools.r8.ir.conversion.K.a(Lcom/android/tools/r8/s/b/o;)Lcom/android/tools/r8/ir/conversion/F; @ 67
Event: 982.381 Thread 0x000000001ddcd800 Uncommon trap: reason=speculate_class_check action=maybe_recompile pc=0x0000000005497b0c method=com.android.tools.r8.ir.conversion.K.a(Lcom/android/tools/r8/s/b/o;)Lcom/android/tools/r8/ir/conversion/F; @ 67
Event: 982.571 Thread 0x000000001a9ad800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000007e10724 method=com.android.tools.r8.utils.T.a(C)Z @ 45
Event: 983.216 Thread 0x000000001ddcc000 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x00000000036e8158 method=com.android.tools.r8.s.a.h.e.a(Lcom/android/tools/r8/s/b/U0;)V @ 75
Event: 983.354 Thread 0x000000001ddcb000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000081590cc method=com.android.tools.r8.ir.optimize.l.r(Lcom/android/tools/r8/s/b/X;)Z @ 440
Event: 984.082 Thread 0x000000001ddcb000 Uncommon trap: reason=predicate action=maybe_recompile pc=0x0000000007051838 method=java.lang.Iterable.forEach(Ljava/util/function/Consumer;)V @ 21
Event: 984.370 Thread 0x00000000226e9800 Uncommon trap: reason=predicate action=maybe_recompile pc=0x0000000005e8e18c method=java.lang.Iterable.forEach(Ljava/util/function/Consumer;)V @ 21
Event: 984.385 Thread 0x0000000018dd2000 Uncommon trap: reason=predicate action=maybe_recompile pc=0x0000000006ac20c0 method=java.lang.Iterable.forEach(Ljava/util/function/Consumer;)V @ 21
Event: 985.460 Thread 0x000000001ddcd800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000009280eb8 method=com.android.tools.r8.dex.m.c(I)V @ 108
Classes redefined (0 events):
No events
Internal exceptions (10 events):
Event: 981.933 Thread 0x000000001ddcb000 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e4512808) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Event: 981.936 Thread 0x000000001ddcb000 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e4517bd0) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Event: 981.943 Thread 0x0000000022c8e800 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e468eaa0) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Event: 982.000 Thread 0x0000000022c8e800 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e76ecb20) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Event: 982.380 Thread 0x0000000022c8e800 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e1935488) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Event: 982.541 Thread 0x0000000022c8e800 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e5b104e8) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Event: 982.629 Thread 0x0000000022c8e800 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e85caec0) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Event: 983.083 Thread 0x0000000022c8e800 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e1c45ca0) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Event: 983.196 Thread 0x0000000022c8e800 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e4dd77a0) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Event: 983.396 Thread 0x0000000022c8e800 Exception <a 'sun/nio/fs/WindowsException'> (0x00000000e7b11830) thrown at [C:\src\AOSP-openjdk-git\hotspot\src\share\vm\prims\jni.cpp, line 710]
Events (10 events):
Event: 986.167 Thread 0x000000001ddcd800 DEOPT PACKING pc=0x0000000006508386 sp=0x000000002ebdcdc0
Event: 986.167 Thread 0x000000001ddcd800 DEOPT UNPACKING pc=0x00000000030d75d0 sp=0x000000002ebdcc78 mode 0
Event: 986.199 Executing VM operation: ParallelGCFailedAllocation
Event: 986.572 Executing VM operation: ParallelGCFailedAllocation done
Event: 986.598 Thread 0x000000001ddcf000 DEOPT PACKING pc=0x0000000007a9edc6 sp=0x000000002e3fcec0
Event: 986.598 Thread 0x000000001ddcf000 DEOPT UNPACKING pc=0x00000000030d75d0 sp=0x000000002e3fcdc8 mode 0
Event: 986.627 Thread 0x000000001a9ad800 DEOPT PACKING pc=0x0000000007a9ec4e sp=0x000000002d53d030
Event: 986.627 Thread 0x000000001a9ad800 DEOPT UNPACKING pc=0x00000000030d75d0 sp=0x000000002d53cf40 mode 0
Event: 986.638 Thread 0x000000001a9ad800 DEOPT PACKING pc=0x0000000007b90566 sp=0x000000002d53d180
Event: 986.638 Thread 0x000000001a9ad800 DEOPT UNPACKING pc=0x00000000030d75d0 sp=0x000000002d53d128 mode 0
Dynamic libraries:
0x00007ff69e580000 - 0x00007ff69e5b1000 D:\Android\AndroidStudio\jre\bin\java.exe
0x00007ff9627a0000 - 0x00007ff962990000 C:\Windows\SYSTEM32\ntdll.dll
0x00007ff9610f0000 - 0x00007ff9611a2000 C:\Windows\System32\KERNEL32.DLL
0x00007ff960450000 - 0x00007ff9606f5000 C:\Windows\System32\KERNELBASE.dll
0x00007ff9614c0000 - 0x00007ff961563000 C:\Windows\System32\ADVAPI32.dll
0x00007ff9623a0000 - 0x00007ff96243e000 C:\Windows\System32\msvcrt.dll
0x00007ff9622d0000 - 0x00007ff962367000 C:\Windows\System32\sechost.dll
0x00007ff9612f0000 - 0x00007ff96140f000 C:\Windows\System32\RPCRT4.dll
0x00007ff9624f0000 - 0x00007ff962684000 C:\Windows\System32\USER32.dll
0x00007ff95fb00000 - 0x00007ff95fb21000 C:\Windows\System32\win32u.dll
0x00007ff960ae0000 - 0x00007ff960b06000 C:\Windows\System32\GDI32.dll
0x00007ff95fb30000 - 0x00007ff95fcc8000 C:\Windows\System32\gdi32full.dll
0x00007ff9607b0000 - 0x00007ff96084e000 C:\Windows\System32\msvcp_win.dll
0x00007ff95f7d0000 - 0x00007ff95f8ca000 C:\Windows\System32\ucrtbase.dll
0x00007ff947830000 - 0x00007ff947ab4000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.1316_none_9e7a364fe461dbd7\COMCTL32.dll
0x00007ff961cd0000 - 0x00007ff962007000 C:\Windows\System32\combase.dll
0x00007ff960700000 - 0x00007ff960781000 C:\Windows\System32\bcryptPrimitives.dll
0x00007ff962370000 - 0x00007ff96239e000 C:\Windows\System32\IMM32.DLL
0x000000006e4b0000 - 0x000000006e582000 D:\Android\AndroidStudio\jre\jre\bin\msvcr100.dll
0x000000006e670000 - 0x000000006eebb000 D:\Android\AndroidStudio\jre\jre\bin\server\jvm.dll
0x00007ff9615d0000 - 0x00007ff9615d8000 C:\Windows\System32\PSAPI.DLL
0x00007ff946d00000 - 0x00007ff946d09000 C:\Windows\SYSTEM32\WSOCK32.dll
0x00007ff95ad90000 - 0x00007ff95adb4000 C:\Windows\SYSTEM32\WINMM.dll
0x00007ff95e100000 - 0x00007ff95e10a000 C:\Windows\SYSTEM32\VERSION.dll
0x00007ff9626f0000 - 0x00007ff96275f000 C:\Windows\System32\WS2_32.dll
0x00007ff95ad60000 - 0x00007ff95ad8d000 C:\Windows\SYSTEM32\winmmbase.dll
0x00007ff95f780000 - 0x00007ff95f7ca000 C:\Windows\System32\cfgmgr32.dll
0x00007ff95a920000 - 0x00007ff95a92f000 D:\Android\AndroidStudio\jre\jre\bin\verify.dll
0x00007ff953b50000 - 0x00007ff953b79000 D:\Android\AndroidStudio\jre\jre\bin\java.dll
0x00007ff93a590000 - 0x00007ff93a5a6000 D:\Android\AndroidStudio\jre\jre\bin\zip.dll
0x00007ff9615e0000 - 0x00007ff961cc8000 C:\Windows\System32\SHELL32.dll
0x00007ff962440000 - 0x00007ff9624e7000 C:\Windows\System32\shcore.dll
0x00007ff95fcd0000 - 0x00007ff96044b000 C:\Windows\System32\windows.storage.dll
0x00007ff95f680000 - 0x00007ff95f6a3000 C:\Windows\System32\profapi.dll
0x00007ff95f6d0000 - 0x00007ff95f71a000 C:\Windows\System32\powrprof.dll
0x00007ff95f650000 - 0x00007ff95f660000 C:\Windows\System32\UMPDC.dll
0x00007ff961570000 - 0x00007ff9615c2000 C:\Windows\System32\shlwapi.dll
0x00007ff95f6b0000 - 0x00007ff95f6c1000 C:\Windows\System32\kernel.appcore.dll
0x00007ff960790000 - 0x00007ff9607a7000 C:\Windows\System32\cryptsp.dll
0x00007ff938d00000 - 0x00007ff938d1a000 D:\Android\AndroidStudio\jre\jre\bin\net.dll
0x00007ff95ee40000 - 0x00007ff95eea7000 C:\Windows\system32\mswsock.dll
0x00007ff9386f0000 - 0x00007ff938703000 D:\Android\AndroidStudio\jre\jre\bin\nio.dll
0x00007ff953970000 - 0x00007ff953996000 D:\gradle\native\29\windows-amd64\native-platform.dll
0x00007ff953d30000 - 0x00007ff953d3d000 D:\Android\AndroidStudio\jre\jre\bin\management.dll
0x00007ff95e9d0000 - 0x00007ff95ea03000 C:\Windows\system32\rsaenh.dll
0x00007ff95fa20000 - 0x00007ff95fa46000 C:\Windows\System32\bcrypt.dll
0x00007ff95f530000 - 0x00007ff95f555000 C:\Windows\SYSTEM32\USERENV.dll
0x00007ff95efd0000 - 0x00007ff95efdc000 C:\Windows\SYSTEM32\CRYPTBASE.dll
0x00007ff95eb60000 - 0x00007ff95eb9a000 C:\Windows\SYSTEM32\IPHLPAPI.DLL
0x00007ff9622c0000 - 0x00007ff9622c8000 C:\Windows\System32\NSI.dll
0x00007ff9562b0000 - 0x00007ff9562c6000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL
0x00007ff956290000 - 0x00007ff9562ac000 C:\Windows\SYSTEM32\dhcpcsvc.DLL
0x00007ff95eba0000 - 0x00007ff95ec6b000 C:\Windows\SYSTEM32\DNSAPI.dll
0x00007ff957630000 - 0x00007ff957654000 D:\Android\AndroidStudio\jre\jre\bin\sunec.dll
0x00007ff955d10000 - 0x00007ff955d1a000 C:\Windows\System32\rasadhlp.dll
0x00007ff95ae70000 - 0x00007ff95ae8e000 C:\Users\86186\AppData\Local\Temp\native-platform8201380889104489996dir\native-platform.dll
0x00007ff95e650000 - 0x00007ff95e681000 C:\Windows\SYSTEM32\ntmarta.dll
0x00007ff95d3b0000 - 0x00007ff95d5a4000 C:\Windows\SYSTEM32\dbghelp.dll
VM Arguments:
jvm_args: -Xmx1536m -Dfile.encoding=UTF-8 -Duser.country=CN -Duser.language=zh -Duser.variant
java_command: org.gradle.launcher.daemon.bootstrap.GradleDaemon 5.4.1
java_class_path (initial): D:\gradle\wrapper\dists\gradle-5.4.1-all\3221gyojl5jsh0helicew7rwx\gradle-5.4.1\lib\gradle-launcher-5.4.1.jar
Launcher Type: SUN_STANDARD
Environment Variables:
JAVA_HOME=D:\Android\AndroidStudio\jre
CLASSPATH=.;D:\Android\AndroidStudio\jre/lib/tools.jar;D:\Android\AndroidStudio\jre/lib/dt.jar
PATH=D:\Android\AndroidStudio\jre/bin;D:\Android\AndroidStudio\jre/jre/bin;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:\Android\AndroidSDK\platform-tools;D:\Git\cmd;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Users\86186\AppData\Local\Microsoft\WindowsApps;
USERNAME=86186
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 126 Stepping 5, GenuineIntel
--------------- S Y S T E M ---------------
OS: Windows 10.0 , 64 bit Build 18362 (10.0.18362.1316)
CPU:total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 126 stepping 5, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx
Memory: 4k page, physical 8084284k(396408k free), swap 22096564k(9426460k free)
vm_info: OpenJDK 64-Bit Server VM (25.242-b01) for windows-amd64 JRE (1.8.0_242-release-1644-b01), built by "builder" with MS VC++ 10.0 (VS2010)
time: Fri Jan 22 15:12:54 2021
timezone: й׼ʱ
elapsed time: 988 seconds (0d 0h 16m 28s)
...@@ -5,6 +5,7 @@ import android.content.Context; ...@@ -5,6 +5,7 @@ import android.content.Context;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.os.Build; import android.os.Build;
import android.os.RemoteException; import android.os.RemoteException;
...@@ -45,16 +46,19 @@ import com.gingersoft.gsa.cloud.common.loadsir.pos.PosTipsStatusExceptionCallbac ...@@ -45,16 +46,19 @@ import com.gingersoft.gsa.cloud.common.loadsir.pos.PosTipsStatusExceptionCallbac
import com.gingersoft.gsa.cloud.common.loadsir.pos.PosVoidStatusExceptionCallback; import com.gingersoft.gsa.cloud.common.loadsir.pos.PosVoidStatusExceptionCallback;
import com.gingersoft.gsa.cloud.common.logan.LoganManager; import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.oaId.DeviceID; import com.gingersoft.gsa.cloud.common.oaId.DeviceID;
import com.gingersoft.gsa.cloud.common.utils.AidlUtil; import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.utils.AppDevices; import com.gingersoft.gsa.cloud.common.printer.plugins.PrintPaperPlugins;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterFlowListener;
import com.gingersoft.gsa.cloud.common.utils.FileUtils; import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler; import com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil; import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils; import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil;
import com.gingersoft.gsa.cloud.common.utils.xlog.MyBackupStrategy; import com.gingersoft.gsa.cloud.common.utils.xlog.MyBackupStrategy;
import com.gingersoft.gsa.cloud.component.ComponentAction; import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.DaoManager; import com.gingersoft.gsa.cloud.database.DaoManager;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.hyweb.n5.lib.exception.NoInitPrinterException; import com.hyweb.n5.lib.exception.NoInitPrinterException;
import com.hyweb.n5.lib.util.PrinterUtil; import com.hyweb.n5.lib.util.PrinterUtil;
import com.jess.arms.base.BaseApplication; import com.jess.arms.base.BaseApplication;
...@@ -62,10 +66,18 @@ import com.kingja.loadsir.core.LoadSir; ...@@ -62,10 +66,18 @@ import com.kingja.loadsir.core.LoadSir;
import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter; import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader; import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.io.File; import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map;
import java.util.Set;
import io.reactivex.functions.Consumer;
import io.reactivex.plugins.RxJavaPlugins;
import me.jessyan.autosize.AutoSize; import me.jessyan.autosize.AutoSize;
import me.jessyan.autosize.AutoSizeConfig; import me.jessyan.autosize.AutoSizeConfig;
import me.jessyan.autosize.onAdaptListener; import me.jessyan.autosize.onAdaptListener;
...@@ -145,12 +157,15 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -145,12 +157,15 @@ public class GsaCloudApplication extends BaseApplication {
initXLog(); initXLog();
//初始化crash記錄 //初始化crash記錄
AppCrashHandler.getInstance().init(this); AppCrashHandler.getInstance().init(this);
//初始化Rxjava相關
initRxjava();
uiStyleConfiguration = new UIStyleExtendedConfiguration(); uiStyleConfiguration = new UIStyleExtendedConfiguration();
functionConfiguration = new FunctionExtendedConfiguration(); functionConfiguration = new FunctionExtendedConfiguration();
//上傳餐廳擴展信息 //上傳餐廳擴展信息
ExpandInfoSetting.initUpdateExtendedConfiguration(uiStyleConfiguration, functionConfiguration); ExpandInfoSetting.initUpdateExtendedConfiguration(uiStyleConfiguration, functionConfiguration);
LoganManager.w_action(TAG, TAG + ": onCreate end....."); LoganManager.w_action(TAG, TAG + ": onCreate end.....");
} }
...@@ -196,13 +211,24 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -196,13 +211,24 @@ public class GsaCloudApplication extends BaseApplication {
*/ */
private void initHywebCommandImpl() { private void initHywebCommandImpl() {
// if (AppDevices.isHywebPos()) { // if (AppDevices.isHywebPos()) {
CC.obtainBuilder(ComponentName.COMPONENT_LOGIN) CC.obtainBuilder(ComponentName.COMPONENT_LOGIN)
.setActionName(ComponentAction.Login.INIT_HYWEB_COMMAND_IMPL) .setActionName(ComponentAction.Login.INIT_HYWEB_COMMAND_IMPL)
.build() .build()
.call(); .call();
// } // }
} }
private void initRxjava() {
//全局Rxjava異常
RxJavaPlugins.setErrorHandler(new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) {
//异常处理
LoganManager.w_code(TAG, "onRxJavaErrorHandler: " + throwable.getMessage());
}
});
}
public Activity getCurrentActivity() { public Activity getCurrentActivity() {
return mCurrentActivity; return mCurrentActivity;
} }
...@@ -307,6 +333,94 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -307,6 +333,94 @@ public class GsaCloudApplication extends BaseApplication {
//這個默認值的優先級<用戶在打印機列表中設置的默認打印機 //這個默認值的優先級<用戶在打印機列表中設置的默認打印機
SPUtils.put(PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.IP_PRINT); SPUtils.put(PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.IP_PRINT);
} }
//打印流程
PrintPaperPlugins.setOnPrinterFlowHandler(new PrinterFlowListener() {
@Override
public void onPrinterDataBefore(String printerData, String printerDeviceInfo) {
LoganManager.w_code(TAG, "onPrinterDataBefore printerData=" + printerData + " printerDeviceInfo=" + printerDeviceInfo);
}
@Override
public void onPrinterBitmapBefore(String directoryName, List<Map<String, Bitmap>> bitmaps) {
LoganManager.w_code(TAG, "onPrinterBitmapBefore");
RxIOTask rxIOTask = new RxIOTask(0) {
@Override
public Object doInIOThread(Object o) {
long FILE_SIZE = FileUtils.getFileSize(FileUtils.PrinterImagePath.KITCHEN_PRJ_IMAGE_PATH);
if (FILE_SIZE > FileUtils.PrinterImagePath.PRINTER_MAX_FILE_SIZE) {
//大於100M 就刪除
File prjPath = new File(FileUtils.PrinterImagePath.KITCHEN_PRJ_IMAGE_PATH);
if (prjPath.isDirectory()) {
File[] prjDirectorys = prjPath.listFiles();
for (int i = prjDirectorys.length - 1; i >= 0; i--) {
File prjDirectory = prjDirectorys[i];
boolean deleteResult = prjDirectory.delete();
if (deleteResult && FILE_SIZE <= FileUtils.PrinterImagePath.PRINTER_KEEP_FILE_SIZE) {
FILE_SIZE = FileUtils.getFileSize(FileUtils.PrinterImagePath.KITCHEN_PRJ_IMAGE_PATH);
LoganManager.w_code(TAG, "onPrinterBitmapBefore delete kitchen prj file after size :" + FILE_SIZE);
break;
}
}
}
}
for (Map<String, Bitmap> bitmapMap : bitmaps) {
Set<Map.Entry<String, Bitmap>> bitmapSet = bitmapMap.entrySet();
Iterator<Map.Entry<String, Bitmap>> bitmapIterator = bitmapSet.iterator();
while (bitmapIterator.hasNext()) {
Map.Entry<String, Bitmap> bitmapEntry = bitmapIterator.next();
String prjName = directoryName + "-" + System.currentTimeMillis();
BitmapUtil.saveBitmap(bitmapEntry.getValue(), FileUtils.PrinterImagePath.KITCHEN_PRJ_IMAGE_PATH + directoryName + File.separator, prjName + ".jpeg", new BitmapUtil.OnSaveBitmapListener() {
@Override
public void onSuccess() {
LoganManager.w_code(TAG, "onPrinterBitmapBefore saveBitmap onSuccess");
}
@Override
public void onError(Exception e) {
LoganManager.w_code(TAG, "onPrinterBitmapBefore saveBitmap onError :" + e.getMessage());
}
});
}
}
return null;
}
};
RxJavaUtils.doInIOThread(rxIOTask);
}
@Override
public void onPrintSuccess(PrinterDeviceBean printerDeviceBean) {
LoganManager.w_code(TAG, "onPrintSuccess");
}
@Override
public void onPrintError(int errorCode, PrinterDeviceBean printerDeviceBean) {
LoganManager.w_code(TAG, "onPrintError errorCode:" + errorCode);
}
@Override
public void connectionBefore(int type, String IP, String port, String ioTimeout, long printTimeout) {
Object[] objs = {type, IP, port, ioTimeout, printTimeout};
LoganManager.w_code(TAG, String.format("connectionBefore type=%s ,IP=%s ,port=%s ,ioTimeout=%s ,printTimeout=%s", objs));
}
@Override
public void connectionSuccess() {
LoganManager.w_code(TAG, "connectionSuccess");
}
@Override
public void connectionError(Exception e) {
LoganManager.w_code(TAG, "connectionError e: " + e.getMessage());
}
@Override
public void disconnect() {
LoganManager.w_code(TAG, "disconnect");
}
});
} }
public static void setGlobalDomain() { public static void setGlobalDomain() {
......
package com.gingersoft.gsa.cloud.common.utils; package com.gingersoft.gsa.cloud.common.printer;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.os.RemoteException; import android.os.RemoteException;
import android.widget.Toast; import android.widget.Toast;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil; import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.utils.view.ImageUtils; import com.gingersoft.gsa.cloud.common.utils.view.ImageUtils;
import com.sunmi.peripheral.printer.InnerPrinterCallback; import com.sunmi.peripheral.printer.InnerPrinterCallback;
......
package com.gingersoft.gsa.cloud.common.printer.plugins;
/**
* @作者: bin
* @創建時間: 2021-01-25 10:20
* @更新時間: 2021-01-25 10:20
* @描述:外部打印机连接流程
*/
public interface ExternalPrinterConnection {
void connectionBefore(int type, String IP, String port, String ioTimeout, long printTimeout);
void connectionSuccess();
void connectionError(Exception e);
void disconnect();
}
package com.gingersoft.gsa.cloud.common.printer.plugins;
import io.reactivex.annotations.NonNull;
import io.reactivex.annotations.Nullable;
import io.reactivex.exceptions.UndeliverableException;
import io.reactivex.functions.Consumer;
/**
* @作者: bin
* @創建時間: 2021-01-25 9:46
* @更新時間: 2021-01-25 9:46
* @描述:
*/
public class PrintPaperPlugins {
@Nullable
static volatile Consumer<? super Throwable> errorHandler;
@Nullable
static volatile PrinterFlowListener onPrinterFlowHandler;
public static void onError(@NonNull Throwable error) {
Consumer<? super Throwable> f = errorHandler;
if (error == null) {
error = new NullPointerException("onError called with null");
}
if (f != null) {
try {
f.accept(error);
return;
} catch (Throwable e) {
e.printStackTrace();
uncaught(e);
}
}
error.printStackTrace();
uncaught(error);
}
static void uncaught(@NonNull Throwable error) {
Thread currentThread = Thread.currentThread();
Thread.UncaughtExceptionHandler handler = currentThread.getUncaughtExceptionHandler();
handler.uncaughtException(currentThread, error);
}
public static void setErrorHandler(Consumer<? super Throwable> errorHandler) {
PrintPaperPlugins.errorHandler = errorHandler;
}
public static PrinterFlowListener getOnPrinterFlowHandler() {
if (onPrinterFlowHandler == null) {
new NullPointerException("onPrinterFlowHandler called with null");
}
return onPrinterFlowHandler;
}
public static void setOnPrinterFlowHandler(PrinterFlowListener onPrinterFlowHandler) {
PrintPaperPlugins.onPrinterFlowHandler = onPrinterFlowHandler;
}
}
package com.gingersoft.gsa.cloud.common.printer.plugins;
import android.graphics.Bitmap;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import java.util.List;
import java.util.Map;
/**
* @作者: bin
* @創建時間: 2021-01-25 10:19
* @更新時間: 2021-01-25 10:19
* @描述:打印整體打印流程(打印前數據信息,圖片->連接成功(失敗)->打印成功(失敗)->斷開連接)
*/
public interface PrinterFlowListener extends ExternalPrinterConnection {
void onPrinterDataBefore(String printerData,String printerDeviceInfo);
void onPrinterBitmapBefore(String directoryName, List<Map<String, Bitmap>> bitmaps);
void onPrintSuccess(PrinterDeviceBean printerDeviceBean);
void onPrintError(int errorCode, PrinterDeviceBean printerDeviceBean);
}
...@@ -13,6 +13,7 @@ import android.text.TextUtils; ...@@ -13,6 +13,7 @@ import android.text.TextUtils;
import com.elvishew.xlog.XLog; import com.elvishew.xlog.XLog;
import com.gingersoft.gsa.cloud.common.utils.encryption.BASE64Encoder; import com.gingersoft.gsa.cloud.common.utils.encryption.BASE64Encoder;
import com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
...@@ -62,6 +63,27 @@ public class FileUtils { ...@@ -62,6 +63,27 @@ public class FileUtils {
public final static String ERRORLOG_PATH = LOG_PATH + ErrorLog + File.separator; public final static String ERRORLOG_PATH = LOG_PATH + ErrorLog + File.separator;
public final static String APK_PATH = Environment.getExternalStorageDirectory() + File.separator + APK + File.separator; public final static String APK_PATH = Environment.getExternalStorageDirectory() + File.separator + APK + File.separator;
/**
* 打印前圖片存儲路徑
*/
public final static class PrinterImagePath {
//Prj圖片文件最大文件大小不能超過100M
public static final int PRINTER_MAX_FILE_SIZE = 100 * 1024 * 1024;
//Prj最少保留文件大小
public static final int PRINTER_KEEP_FILE_SIZE = 20 * 1024 * 1024;
public static String PrinterImagesRootPath = "PrinterImages";
public static String KitchenImage = "KitchenPrj";
public static String OrderImage = "OrderImage";
public static String BillImage = "BillImage";
public static String ServingPaperImage = "ServingPaperImage";
public final static String ROOT_PATH = ALBUM_PATH + PrinterImagesRootPath + File.separator;
public final static String KITCHEN_PRJ_IMAGE_PATH = ROOT_PATH + KitchenImage;
public final static String ORDER_IMAGE_PATH = ROOT_PATH + OrderImage;
public final static String BILL_IMAGE_PATH = ROOT_PATH + BillImage;
public final static String SERVING_PAPER_IMAGE_PATH = ROOT_PATH + ServingPaperImage;
}
public final static String FILE_EXTENSION_SEPARATOR = "."; public final static String FILE_EXTENSION_SEPARATOR = ".";
//操作日志單最大文件大小 //操作日志單最大文件大小
......
...@@ -95,7 +95,7 @@ public class OkHttp3Utils { ...@@ -95,7 +95,7 @@ public class OkHttp3Utils {
@Override @Override
public void onFailure(Call call, IOException e) { public void onFailure(Call call, IOException e) {
// emitter.onError(e); emitter.onError(e);
emitter.onComplete(); emitter.onComplete();
call.cancel(); call.cancel();
} }
......
...@@ -13,6 +13,7 @@ import android.media.ExifInterface; ...@@ -13,6 +13,7 @@ import android.media.ExifInterface;
import android.net.Uri; import android.net.Uri;
import android.util.Log; import android.util.Log;
import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import com.google.zxing.BarcodeFormat; import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType; import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter; import com.google.zxing.MultiFormatWriter;
...@@ -21,6 +22,7 @@ import com.google.zxing.common.BitMatrix; ...@@ -21,6 +22,7 @@ import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
...@@ -33,6 +35,7 @@ import java.util.Map; ...@@ -33,6 +35,7 @@ import java.util.Map;
public class BitmapUtil { public class BitmapUtil {
/** /**
* 生成条码bitmap * 生成条码bitmap
* *
...@@ -254,6 +257,7 @@ public class BitmapUtil { ...@@ -254,6 +257,7 @@ public class BitmapUtil {
/** /**
* 转换为圆形状的bitmap * 转换为圆形状的bitmap
*
* @param source * @param source
* @return * @return
*/ */
...@@ -340,5 +344,34 @@ public class BitmapUtil { ...@@ -340,5 +344,34 @@ public class BitmapUtil {
return inSampleSize; return inSampleSize;
} }
public static void saveBitmap(Bitmap bm, String targetPath, String name, OnSaveBitmapListener listener) {
//判断指定文件夹的路径是否存在 不存在則創建
FileUtils.makeDirs(targetPath);
Log.d("Save Bitmap", "TargetPath isn't exist");
//如果指定文件夹创建成功,那么我们则需要进行图片存储操作
File saveFile = new File(targetPath, name);
try {
FileOutputStream fos = new FileOutputStream(saveFile);
// compress - 压缩的意思
bm.compress(Bitmap.CompressFormat.JPEG, 80, fos);
//存储完成后需要清除相关的进程
fos.flush();
fos.close();
if (listener != null) {
listener.onSuccess();
}
Log.d("Save Bitmap", "The picture is save to your phone!");
} catch (IOException e) {
e.printStackTrace();
if (listener != null) {
listener.onError(e);
}
}
}
public interface OnSaveBitmapListener {
void onSuccess();
void onError(Exception e);
}
} }
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/emptyView_mode_desc_fail_click_blank_refresh" android:text="@string/emptyView_mode_desc_fail_click_blank_refresh"
android:textColor="@color/dk_color_999999" android:textColor="#999999"
android:textSize="@dimen/text_size_default" android:textSize="@dimen/text_size_default"
android:visibility="gone" android:visibility="gone"
android:layout_marginTop="@dimen/dp_10" android:layout_marginTop="@dimen/dp_10"
......
...@@ -322,7 +322,7 @@ public class ModifierDaoUtils { ...@@ -322,7 +322,7 @@ public class ModifierDaoUtils {
// " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.seq,MODIFIER.SEQ_NO"; // " FROM MODIFIER join FOOD_MODIFIER on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.VISIBLE=0 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.seq,MODIFIER.SEQ_NO";
String sql = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT,PRINT_SET,COST" + String sql = " SELECT MODIFIER.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT,PRINT_SET,COST" +
" FROM MODIFIER join FOOD_MODIFIER fm on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE!=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.SEQ_NO"; " FROM MODIFIER join FOOD_MODIFIER fm on MODIFIER.MID=FOOD_MODIFIER.MID where MODIFIER.INVISIBLE!=1 and FOOD_MODIFIER.FID='" + fid + "' order by FOOD_MODIFIER.SEQ_NO,MODIFIER.TOP_ID,MODIFIER.SEQ_NO";
List<Modifier> mfs_child = new ArrayList<>(); List<Modifier> mfs_child = new ArrayList<>();
...@@ -335,14 +335,14 @@ public class ModifierDaoUtils { ...@@ -335,14 +335,14 @@ public class ModifierDaoUtils {
switch (mode) { switch (mode) {
case modifierMode_All: case modifierMode_All:
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT,PRINT_SET,KT_SETTING,COST" + sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT,PRINT_SET,KT_SETTING,COST" +
" FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=1 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO"; " FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=1 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.TOP_ID,m.SEQ_NO";
mfs_child1 = query_modifier_Child_new(sqlstr, fid); mfs_child1 = query_modifier_Child_new(sqlstr, fid);
List<Modifier> mfs_child2 = new ArrayList<>(); List<Modifier> mfs_child2 = new ArrayList<>();
sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT,PRINT_SET,KT_SETTING,COST" + sqlstr = " SELECT m.MID,MODIFIER_NAME,MODIFIER_NAME1,MODIFIER_NAME2,TOP_ID,PRICE,MOD_COMM,MOD_TASTE,MOD_MSG,INVISIBLE,VISIBLE,MULTIPLE,IS_PARENT,DEFMODIFIER,MAX_QTY,MIN_QTY,ABLE_DIS_COUNT,PRINT_SET,KT_SETTING,COST" +
" FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=0 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.SEQ_NO"; " FROM MODIFIER m join FOOD_MODIFIER fm on m.TOP_ID=fm.MID where m.INVISIBLE!=1 and m.IS_PARENT=0 and fm.FID='" + fid + "' order by fm.SEQ_NO,m.TOP_ID,m.SEQ_NO";
mfs_child2 = query_modifier_Child_new(sqlstr, fid); mfs_child2 = query_modifier_Child_new(sqlstr, fid);
mfs_child1.addAll(mfs_child2); mfs_child1.addAll(mfs_child2);
......
...@@ -26,6 +26,7 @@ public class PosActionStatusExceptionParam implements Parcelable { ...@@ -26,6 +26,7 @@ public class PosActionStatusExceptionParam implements Parcelable {
public PosActionStatusExceptionParam() { public PosActionStatusExceptionParam() {
} }
@Override @Override
public int describeContents() { public int describeContents() {
return 0; return 0;
......
...@@ -4,38 +4,43 @@ package com.gingersoft.gsa.cloud.pay.contract; ...@@ -4,38 +4,43 @@ package com.gingersoft.gsa.cloud.pay.contract;
* @作者: bin * @作者: bin
* @創建時間: 2020-12-28 10:40 * @創建時間: 2020-12-28 10:40
* @更新時間: 2020-12-28 10:40 * @更新時間: 2020-12-28 10:40
* @描述: * @描述:支付方式類型
*/ */
public interface PayTypeContract { public class PayTypeContract {
/** /**
* 支付方式 * 支付方式
* 1:寶達通 * 1:寶達通
* 8:支付寶 * 8:支付寶
* 1001:現金 * 1001:現金
* 1021:Google Pay
* 1023:支付寶HK * 1023:支付寶HK
* *
*
* <p>
* 1030:N5卡片 * 1030:N5卡片
* 1031:N5掃碼 * 1031:N5掃碼
* 1032:N5八達通 * 1032:N5八達通
* 1033:N5美國運通 * 1033:N5美國運通
*/ */
int PAY_METHOD_ID_1 = 1; public static final int PAY_METHOD_ID_1 = 1;
int PAY_METHOD_ID_8 = 8;
int PAY_METHOD_ID_1001 = 1001;
int PAY_METHOD_ID_1023 = 1023; public static final int PAY_METHOD_ID_8 = 8;
int PAY_METHOD_ID_1030 = 1030; public static final int PAY_METHOD_ID_1001 = 1001;
int PAY_METHOD_ID_1031 = 1031; public static final int PAY_METHOD_ID_1021 = 1021;
int PAY_METHOD_ID_1032 = 1031; public static final int PAY_METHOD_ID_1023 = 1023;
int PAY_METHOD_ID_1033 = 1031;
/**
* Hyweb POS支付方式
*/
public static final int PAY_METHOD_ID_1030 = 1030;
public static final int PAY_METHOD_ID_1031 = 1031;
public static final int PAY_METHOD_ID_1032 = 1032;
public static final int PAY_METHOD_ID_1033 = 1033;
public static final int[] HYWEB_PAY_METHODS = {PAY_METHOD_ID_1030,PAY_METHOD_ID_1031,PAY_METHOD_ID_1032,PAY_METHOD_ID_1033};
} }
...@@ -18,8 +18,9 @@ import com.jess.arms.mvp.IView; ...@@ -18,8 +18,9 @@ import com.jess.arms.mvp.IView;
* 修订历史:2019/6/13 * 修订历史:2019/6/13
* 描述: * 描述:
*/ */
public abstract class IPosAction <T extends HywebPosResponse>{ public abstract class IPosAction<T extends HywebPosResponse> {
protected final String TAG = this.getClass().getSimpleName();
protected Context mContext; protected Context mContext;
protected IView mView; protected IView mView;
protected PosAction mPosAction; protected PosAction mPosAction;
...@@ -73,11 +74,12 @@ public abstract class IPosAction <T extends HywebPosResponse>{ ...@@ -73,11 +74,12 @@ public abstract class IPosAction <T extends HywebPosResponse>{
/** /**
* POS回調成功的方法 * POS回調成功的方法
*
* @param context * @param context
* @param originalActivity * @param originalActivity
* @param response * @param response
*/ */
public void onPosSuccess(Context context, Activity originalActivity,T response) { public void onPosSuccess(Context context, Activity originalActivity, T response) {
if (mStatusLoadingDialog != null) { if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + mLoadingActionComplteText); mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + mLoadingActionComplteText);
mStatusLoadingDialog.loadSuccess(); mStatusLoadingDialog.loadSuccess();
...@@ -91,8 +93,8 @@ public abstract class IPosAction <T extends HywebPosResponse>{ ...@@ -91,8 +93,8 @@ public abstract class IPosAction <T extends HywebPosResponse>{
/** /**
* POS回調為null或狀態異常 * POS回調為null或狀態異常
*/ */
public void onPosException(Context context, Activity originalActivity,T response) { public void onPosException(Context context, Activity originalActivity, T response) {
String codeRequest = HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS()); String codeRequest = HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS());
if (mStatusLoadingDialog != null) { if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getCallbackExceptionText() + codeRequest); mStatusLoadingDialog.setStatusText(mPosAction.getCallbackExceptionText() + codeRequest);
mStatusLoadingDialog.loadFailure(); mStatusLoadingDialog.loadFailure();
...@@ -107,7 +109,7 @@ public abstract class IPosAction <T extends HywebPosResponse>{ ...@@ -107,7 +109,7 @@ public abstract class IPosAction <T extends HywebPosResponse>{
* POS調起失敗 * POS調起失敗
*/ */
public void onPosInvalid(Context context, Activity originalActivity, T response) { public void onPosInvalid(Context context, Activity originalActivity, T response) {
String codeRequest = HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS()); String codeRequest = HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS());
if (mStatusLoadingDialog != null) { if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + codeRequest); mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + codeRequest);
mStatusLoadingDialog.loadFailure(); mStatusLoadingDialog.loadFailure();
...@@ -123,11 +125,11 @@ public abstract class IPosAction <T extends HywebPosResponse>{ ...@@ -123,11 +125,11 @@ public abstract class IPosAction <T extends HywebPosResponse>{
* *
* @param response * @param response
*/ */
public void onUpdateStatusSuccess(T response) { public void onUpdateStatusSuccess(T response) {
if (mStatusLoadingDialog != null) { // if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS())); // mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS()));
mStatusLoadingDialog.cancel(); // mStatusLoadingDialog.cancel();
} // }
if (mOnPosActionListener != null) { if (mOnPosActionListener != null) {
mOnPosActionListener.onUpdateStatusSuccess(response); mOnPosActionListener.onUpdateStatusSuccess(response);
} }
...@@ -139,10 +141,10 @@ public abstract class IPosAction <T extends HywebPosResponse>{ ...@@ -139,10 +141,10 @@ public abstract class IPosAction <T extends HywebPosResponse>{
* @param e * @param e
*/ */
public void onUpdateStatusError(Exception e) { public void onUpdateStatusError(Exception e) {
if (mStatusLoadingDialog != null) { // if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + e.getMessage()); // mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + e.getMessage());
mStatusLoadingDialog.cancel(); // mStatusLoadingDialog.cancel();
} // }
if (mOnPosActionListener != null) { if (mOnPosActionListener != null) {
mOnPosActionListener.onUpdateStatusError(e); mOnPosActionListener.onUpdateStatusError(e);
} }
......
...@@ -71,7 +71,10 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV ...@@ -71,7 +71,10 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
private TextView tv_order_num, tv_final_prompt, tv_exception, tv_amount, tv_pay_method; private TextView tv_order_num, tv_final_prompt, tv_exception, tv_amount, tv_pay_method;
private int retryCount; /**
* 最多重试三次,显示联系开发人员提示
*/
private int retryCount = 3;
public static final String REFREAFSH_ORDER_EVENT = "refreafsh_order"; public static final String REFREAFSH_ORDER_EVENT = "refreafsh_order";
...@@ -195,6 +198,7 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV ...@@ -195,6 +198,7 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
@Override @Override
public void onUpdateStatusSuccess(HywebPosResponse response) { public void onUpdateStatusSuccess(HywebPosResponse response) {
EventBus.getDefault().post(true,REFREAFSH_ORDER_EVENT);
tvPosStatus.setText(mPosStatusExceptionParam.getPosAction().getActionName() + "成功"); tvPosStatus.setText(mPosStatusExceptionParam.getPosAction().getActionName() + "成功");
loadService.showSuccess(); loadService.showSuccess();
setPosActionStatus(response.getSTATUS()); setPosActionStatus(response.getSTATUS());
...@@ -206,26 +210,6 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV ...@@ -206,26 +210,6 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
}); });
} }
// private MealOrderPayRequest getMealOrderPayRequest(){
// SaleRequest saleRequest = new SaleRequest();
// saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_CC);
// saleRequest.setTXN_AMT(DoshokuOrder.getInstance().getShoppingCart().getTotalAmount());
// saleRequest.setTIPS(0);
//
// GetTxnIdRequest txnIdRequest = new GetTxnIdRequest();
// txnIdRequest.setOrderId(DoshokuOrder.getInstance().getOrderId());
// if (!TextUtils.isEmpty(DoshokuOrder.getInstance().getOpenTableInfo().getTableNumber())) {
// txnIdRequest.setTableExtId(DoshokuOrder.getInstance().getOpenTableInfo().getId());
// } else {
// txnIdRequest.setTableId(DoshokuOrder.getInstance().getOpenTableInfo().getId());
// }
// txnIdRequest.setPayMethodId(hywebPayMethod.getId());
// txnIdRequest.setAmount(hywebPayMethod.getPayMoney());
//
// MealOrderPayRequest orderPayRequest = mPresenter.getOrderPayRequest(gsaPayView);
// List<BillItem> billItemList = DoshokuOrder.getInstance().getShoppingCart().getBillItemList();
// }
@OnClick({R2.id.btn_back}) @OnClick({R2.id.btn_back})
public void onViewClicked(View view) { public void onViewClicked(View view) {
int id = view.getId(); int id = view.getId();
...@@ -262,12 +246,11 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV ...@@ -262,12 +246,11 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
@Override @Override
public void killMyself() { public void killMyself() {
_mActivity.onBackPressed(); onBackPressedSupport();
} }
@Override @Override
public boolean onBackPressedSupport() { public boolean onBackPressedSupport() {
EventBus.getDefault().post(true,REFREAFSH_ORDER_EVENT);
return super.onBackPressedSupport(); return super.onBackPressedSupport();
} }
} }
...@@ -171,7 +171,7 @@ public class CommandImpl implements ICommand { ...@@ -171,7 +171,7 @@ public class CommandImpl implements ICommand {
} }
private HywebPosResponse returnErrorPosActionResponse(PosAction posAction,String errorStatus){ private HywebPosResponse returnErrorPosActionResponse(PosAction posAction,String errorStatus){
HywebPosResponse posResponse = null; HywebPosResponse posResponse;
if(posAction == PosAction.SALE){ if(posAction == PosAction.SALE){
posResponse = new SaleRespose(); posResponse = new SaleRespose();
}else if(posAction == PosAction.VOID){ }else if(posAction == PosAction.VOID){
...@@ -186,6 +186,8 @@ public class CommandImpl implements ICommand { ...@@ -186,6 +186,8 @@ public class CommandImpl implements ICommand {
posResponse = new RetrievalRespose(); posResponse = new RetrievalRespose();
}else if(posAction == PosAction.SETTLEMENT){ }else if(posAction == PosAction.SETTLEMENT){
posResponse = new SettlementRespose(); posResponse = new SettlementRespose();
}else{
posResponse = new HywebPosResponse();
} }
if(posResponse != null) { if(posResponse != null) {
posResponse.setSTATUS(errorStatus); posResponse.setSTATUS(errorStatus);
......
...@@ -45,4 +45,8 @@ public class PrintPaymentStubImpl extends IPosAction { ...@@ -45,4 +45,8 @@ public class PrintPaymentStubImpl extends IPosAction {
super.onPosException(context, originalActivity, response); super.onPosException(context, originalActivity, response);
} }
@Override
public void onPosInvalid(Context context, Activity originalActivity, HywebPosResponse response) {
super.onPosInvalid(context, originalActivity, response);
}
} }
...@@ -6,6 +6,7 @@ import android.text.TextUtils; ...@@ -6,6 +6,7 @@ import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans; import com.gingersoft.gsa.cloud.common.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode; import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
...@@ -74,7 +75,6 @@ public class RefundActionImpl extends IPosAction<RefundRespose> { ...@@ -74,7 +75,6 @@ public class RefundActionImpl extends IPosAction<RefundRespose> {
mRefundRequest.setTXN_ID(mGetRefundIdResponse.getRefundId()); mRefundRequest.setTXN_ID(mGetRefundIdResponse.getRefundId());
//調起N5退款 //調起N5退款
onPosToAction(GsonUtils.GsonString(mRefundRequest)); onPosToAction(GsonUtils.GsonString(mRefundRequest));
// canCelLoadingDialog();
} else { } else {
onBeforeActionPosError(new Exception(error + PayExceptionCode.refund_901)); onBeforeActionPosError(new Exception(error + PayExceptionCode.refund_901));
} }
...@@ -138,7 +138,7 @@ public class RefundActionImpl extends IPosAction<RefundRespose> { ...@@ -138,7 +138,7 @@ public class RefundActionImpl extends IPosAction<RefundRespose> {
@Override @Override
public void onNext(String result) { public void onNext(String result) {
displayRefundResult(context, response, originalActivity); LoganManager.w_code(TAG, "RefundResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) { if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class); BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
...@@ -158,12 +158,13 @@ public class RefundActionImpl extends IPosAction<RefundRespose> { ...@@ -158,12 +158,13 @@ public class RefundActionImpl extends IPosAction<RefundRespose> {
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
LoganManager.w_code(TAG, "RefundResponse onError :" + e.getMessage());
onUpdateStatusError(new Exception(e.getMessage())); onUpdateStatusError(new Exception(e.getMessage()));
displayRefundResult(context, response, originalActivity);
} }
@Override @Override
public void onComplete() { public void onComplete() {
displayRefundResult(context, response, originalActivity);
} }
}); });
} }
...@@ -196,6 +197,8 @@ public class RefundActionImpl extends IPosAction<RefundRespose> { ...@@ -196,6 +197,8 @@ public class RefundActionImpl extends IPosAction<RefundRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter); String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "RefundRequest JSON :" + json);
return requestBody; return requestBody;
} }
......
...@@ -7,8 +7,10 @@ import android.text.TextUtils; ...@@ -7,8 +7,10 @@ import android.text.TextUtils;
import com.etps.aca.lib.constant.Constant; import com.etps.aca.lib.constant.Constant;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans; import com.gingersoft.gsa.cloud.common.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.order.bean.request.MealOrderPayRequest;
import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode; import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
import com.gingersoft.gsa.cloud.pay.pos.IPosAction; import com.gingersoft.gsa.cloud.pay.pos.IPosAction;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener; import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
...@@ -57,17 +59,17 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -57,17 +59,17 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
@Override @Override
public void onPosSuccess(Context context, Activity originalActivity, RetrievalRespose response) { public void onPosSuccess(Context context, Activity originalActivity, RetrievalRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS()); updateMatter(context, originalActivity, response, response.getSTATUS());
} }
@Override @Override
public void onPosException(Context context, Activity originalActivity, RetrievalRespose response) { public void onPosException(Context context, Activity originalActivity, RetrievalRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS()); updateMatter(context, originalActivity, response, response.getSTATUS());
} }
@Override @Override
public void onPosInvalid(Context context, Activity originalActivity, RetrievalRespose response) { public void onPosInvalid(Context context, Activity originalActivity, RetrievalRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS()); updateMatter(context, originalActivity, response, response.getSTATUS());
} }
/** /**
...@@ -80,22 +82,22 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -80,22 +82,22 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
* @param response * @param response
* @param status * @param status
*/ */
private void updateMatter(Context context, Activity originalActivity, RetrievalRespose response, String status){ private void updateMatter(Context context, Activity originalActivity, RetrievalRespose response, String status) {
String url = null; String url = null;
RequestBody requestBody; RequestBody requestBody;
switch (response.getTXN_TYPE()) { switch (response.getTXN_TYPE()) {
case Constant.EVENT.NAME.SALE: case Constant.EVENT.NAME.SALE:
if (mRetrievalAction == PosAction.TIP) { if (mRetrievalAction == PosAction.TIP) {
//查詢補消費狀態 //更新贴士狀態
url = "posPay/updatePosTip"; url = "posPay/updatePosTip";
requestBody = getPosMatterTipsRequest(response); requestBody = getPosMatterTipsRequest(response);
} else if (mRetrievalAction == PosAction.VOID) { } else if (mRetrievalAction == PosAction.VOID) {
//查詢取消狀態 //更新取消狀態
url = "posPay/updatePosCancel"; url = "posPay/updatePosCancel";
requestBody = getPosMatterVoidRequest(response); requestBody = getPosMatterVoidRequest(response);
} else { } else {
//查詢支付狀態 //更新支付狀態
url = "posPay/updatePosMatter"; url = "orderPay/add";
requestBody = getPosMatterSaleRequest(response); requestBody = getPosMatterSaleRequest(response);
} }
break; break;
...@@ -118,7 +120,7 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -118,7 +120,7 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
//1、更新上傳狀態 //1、更新上傳狀態
OkHttp3Utils.post(HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL + url, requestBody) OkHttp3Utils.post(HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL + url, requestBody)
.compose(RxSchedulerUtils._io_main_o()) .compose(RxSchedulerUtils._io_main_o())
.compose(RxLifecycleUtils.bindToLifecycle(mView)) // .compose(RxLifecycleUtils.bindToLifecycle(mView))
.subscribe(new Observer<String>() { .subscribe(new Observer<String>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(Disposable d) {
...@@ -127,7 +129,7 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -127,7 +129,7 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
@Override @Override
public void onNext(String result) { public void onNext(String result) {
displayRetrievalResult(context, response, originalActivity); LoganManager.w_code(TAG, "RetrievalResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) { if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class); BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
...@@ -147,11 +149,12 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -147,11 +149,12 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
displayRetrievalResult(context, response, originalActivity); LoganManager.w_code(TAG, "RetrievalResponse onError :" + e.getMessage());
} }
@Override @Override
public void onComplete() { public void onComplete() {
displayRetrievalResult(context, response, originalActivity);
} }
}); });
} }
...@@ -165,11 +168,11 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -165,11 +168,11 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
*/ */
private void displayRetrievalResult(Context context, RetrievalRespose response, Activity originalActivity) { private void displayRetrievalResult(Context context, RetrievalRespose response, Activity originalActivity) {
if (HywebActionStatusCode.withSuccess(response.getSTATUS())) { if (HywebActionStatusCode.withSuccess(response.getSTATUS())) {
super.onPosSuccess(context,originalActivity,response); super.onPosSuccess(context, originalActivity, response);
} else if(HywebActionStatusCode.withException(response.getSTATUS())){ } else if (HywebActionStatusCode.withException(response.getSTATUS())) {
super.onPosException(context,originalActivity,response); super.onPosException(context, originalActivity, response);
}else { } else {
super.onPosInvalid(context,originalActivity,response); super.onPosInvalid(context, originalActivity, response);
} }
} }
...@@ -179,12 +182,19 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -179,12 +182,19 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
posMatter.setOrderId(mOrderId); posMatter.setOrderId(mOrderId);
posMatter.setPayId(response.getTXN_ID()); posMatter.setPayId(response.getTXN_ID());
posMatter.setContent(GsonUtils.GsonString(response)); posMatter.setContent(GsonUtils.GsonString(response));
posMatter.setStatus(getPosMatterStatus(response.getSTATUS())); if (response.getTXN_STATUS().equals(TransactionStatusCode.TXN_STATUS_A)) {
// mMealOrderPayRequest.setPosMatter(posMatter); //TXN_STATUS:A 支付成功
posMatter.setStatus(PosMatter.status_1);
} else {
posMatter.setStatus(getPosMatterStatus(HywebActionStatusCode.PAY_STATUS_99));
}
MealOrderPayRequest mealOrderPayRequest = new MealOrderPayRequest();
mealOrderPayRequest.setPosMatter(posMatter);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(mealOrderPayRequest));
String json = GsonUtils.GsonString(posMatter); String json = GsonUtils.GsonString(mealOrderPayRequest);
LoganManager.w_code(TAG, "SaleRequest JSON :" + json);
return requestBody; return requestBody;
} }
...@@ -197,6 +207,8 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -197,6 +207,8 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter); String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "RefundRequest JSON :" + json);
return requestBody; return requestBody;
} }
...@@ -213,6 +225,8 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -213,6 +225,8 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
} }
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter); String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "VoidRequest JSON :" + json);
return requestBody; return requestBody;
} }
...@@ -226,6 +240,8 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> { ...@@ -226,6 +240,8 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter); String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "TipRequest JSON :" + json);
return requestBody; return requestBody;
} }
......
...@@ -8,6 +8,7 @@ import com.billy.cc.core.component.CC; ...@@ -8,6 +8,7 @@ import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans; import com.gingersoft.gsa.cloud.common.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.common.core.table.TableBean; import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.component.ComponentAction; import com.gingersoft.gsa.cloud.component.ComponentAction;
...@@ -88,7 +89,7 @@ public class SaleActionImpl extends IPosAction<SaleRespose> { ...@@ -88,7 +89,7 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
@Override @Override
protected void onPosActionBefore() { protected void onPosActionBefore() {
mTxnIdRequest.setContent(mMealOrderPayRequest.toString()); mTxnIdRequest.setContent(GsonUtils.GsonString(mMealOrderPayRequest));
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(mTxnIdRequest)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(mTxnIdRequest));
String json = GsonUtils.GsonString(mTxnIdRequest); String json = GsonUtils.GsonString(mTxnIdRequest);
...@@ -178,14 +179,14 @@ public class SaleActionImpl extends IPosAction<SaleRespose> { ...@@ -178,14 +179,14 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
@Override @Override
public void onNext(String result) { public void onNext(String result) {
displayPaymentResult(context, response, originalActivity); LoganManager.w_code(TAG, "SaleResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) { if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class); BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
if (baseResult != null) { if (baseResult != null) {
if (baseResult.isSuccess()) { if (baseResult.isSuccess()) {
onUpdateStatusSuccess(response); onUpdateStatusSuccess(response);
startPaymentDetailActivity(context, response); // startPaymentDetailActivity(context, response);
} else { } else {
onUpdateStatusError(new Exception(mPosAction.getCallbackExceptionText() + "[" + baseResult.getErrMsg() + "]")); onUpdateStatusError(new Exception(mPosAction.getCallbackExceptionText() + "[" + baseResult.getErrMsg() + "]"));
} }
...@@ -199,19 +200,18 @@ public class SaleActionImpl extends IPosAction<SaleRespose> { ...@@ -199,19 +200,18 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
displayPaymentResult(context, response, originalActivity); LoganManager.w_code(TAG, "SaleResponse onError :" + e.getMessage());
startPaymentDetailActivity(context, response);
} }
@Override @Override
public void onComplete() { public void onComplete() {
displayPaymentResult(context, response, originalActivity);
} }
}); });
} }
/** /**
* 2、顯示支付結果 * 2、顯示支付結果
*
* @param context * @param context
* @param response * @param response
* @param originalActivity * @param originalActivity
...@@ -219,8 +219,10 @@ public class SaleActionImpl extends IPosAction<SaleRespose> { ...@@ -219,8 +219,10 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
private void displayPaymentResult(Context context, SaleRespose response, Activity originalActivity) { private void displayPaymentResult(Context context, SaleRespose response, Activity originalActivity) {
if (HywebActionStatusCode.withSuccess(response.getSTATUS())) { if (HywebActionStatusCode.withSuccess(response.getSTATUS())) {
super.onPosSuccess(context,originalActivity,response); super.onPosSuccess(context,originalActivity,response);
startPaymentDetailActivity(context, response);
} else if(HywebActionStatusCode.withException(response.getSTATUS())){ } else if(HywebActionStatusCode.withException(response.getSTATUS())){
super.onPosException(context,originalActivity,response); super.onPosException(context,originalActivity,response);
startPaymentDetailActivity(context, response);
}else { }else {
super.onPosInvalid(context,originalActivity,response); super.onPosInvalid(context,originalActivity,response);
} }
...@@ -271,6 +273,8 @@ public class SaleActionImpl extends IPosAction<SaleRespose> { ...@@ -271,6 +273,8 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(mMealOrderPayRequest)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(mMealOrderPayRequest));
String json = GsonUtils.GsonString(mMealOrderPayRequest); String json = GsonUtils.GsonString(mMealOrderPayRequest);
LoganManager.w_code(TAG, "SaleRequest JSON :" + json);
return requestBody; return requestBody;
} }
......
...@@ -132,9 +132,6 @@ public class SettlementActionImpl extends IPosAction<SettlementRespose> { ...@@ -132,9 +132,6 @@ public class SettlementActionImpl extends IPosAction<SettlementRespose> {
@Override @Override
public void onNext(String result) { public void onNext(String result) {
// displayTipsResult(context, response, originalActivity);
if (!TextUtils.isEmpty(result)) { if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class); BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
if (baseResult != null) { if (baseResult != null) {
...@@ -154,11 +151,11 @@ public class SettlementActionImpl extends IPosAction<SettlementRespose> { ...@@ -154,11 +151,11 @@ public class SettlementActionImpl extends IPosAction<SettlementRespose> {
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
// displayTipsResult(context, response, originalActivity);
} }
@Override @Override
public void onComplete() { public void onComplete() {
// displayTipsResult(context, response, originalActivity);
} }
}); });
} }
......
...@@ -6,6 +6,7 @@ import android.text.TextUtils; ...@@ -6,6 +6,7 @@ import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans; import com.gingersoft.gsa.cloud.common.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode; import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
...@@ -145,7 +146,7 @@ public class TipsActionImpl extends IPosAction<AdjustTipRespose> { ...@@ -145,7 +146,7 @@ public class TipsActionImpl extends IPosAction<AdjustTipRespose> {
@Override @Override
public void onNext(String result) { public void onNext(String result) {
displayTipsResult(context, response, originalActivity); LoganManager.w_code(TAG, "TipResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) { if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class); BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
...@@ -166,11 +167,12 @@ public class TipsActionImpl extends IPosAction<AdjustTipRespose> { ...@@ -166,11 +167,12 @@ public class TipsActionImpl extends IPosAction<AdjustTipRespose> {
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
displayTipsResult(context, response, originalActivity); LoganManager.w_code(TAG, "TipResponse onError :" + e.getMessage());
} }
@Override @Override
public void onComplete() { public void onComplete() {
displayTipsResult(context, response, originalActivity);
} }
}); });
} }
...@@ -204,6 +206,8 @@ public class TipsActionImpl extends IPosAction<AdjustTipRespose> { ...@@ -204,6 +206,8 @@ public class TipsActionImpl extends IPosAction<AdjustTipRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter); String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "TipRequest JSON :" + json);
return requestBody; return requestBody;
} }
......
...@@ -6,6 +6,7 @@ import android.text.TextUtils; ...@@ -6,6 +6,7 @@ import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans; import com.gingersoft.gsa.cloud.common.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode; import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
...@@ -101,22 +102,22 @@ public class VoidActionImpl extends IPosAction<VoidRespose> { ...@@ -101,22 +102,22 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
@Override @Override
public void onPosSuccess(Context context, Activity originalActivity, VoidRespose response) { public void onPosSuccess(Context context, Activity originalActivity, VoidRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS()); updateMatter(context, originalActivity, response, response.getSTATUS());
} }
@Override @Override
public void onPosException(Context context, Activity originalActivity, VoidRespose response) { public void onPosException(Context context, Activity originalActivity, VoidRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS()); updateMatter(context, originalActivity, response, response.getSTATUS());
} }
@Override @Override
public void onPosInvalid(Context context, Activity originalActivity, VoidRespose response) { public void onPosInvalid(Context context, Activity originalActivity, VoidRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS()); updateMatter(context, originalActivity, response, response.getSTATUS());
} }
/** /**
* 取消回調成功 * 取消回調成功
* * <p>
* 1、更新上傳取消狀態 * 1、更新上傳取消狀態
* 2、顯示取消結果 * 2、顯示取消結果
* 3、刷新當前頁面 * 3、刷新當前頁面
...@@ -139,7 +140,7 @@ public class VoidActionImpl extends IPosAction<VoidRespose> { ...@@ -139,7 +140,7 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
@Override @Override
public void onNext(String result) { public void onNext(String result) {
displayVoidResult(context, response, originalActivity); LoganManager.w_code(TAG, "VoidResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) { if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class); BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
...@@ -159,11 +160,12 @@ public class VoidActionImpl extends IPosAction<VoidRespose> { ...@@ -159,11 +160,12 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
displayVoidResult(context, response, originalActivity); LoganManager.w_code(TAG, "VoidResponse onError :" + e.getMessage());
} }
@Override @Override
public void onComplete() { public void onComplete() {
displayVoidResult(context, response, originalActivity);
} }
}); });
} }
...@@ -177,11 +179,11 @@ public class VoidActionImpl extends IPosAction<VoidRespose> { ...@@ -177,11 +179,11 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
*/ */
private void displayVoidResult(Context context, VoidRespose response, Activity originalActivity) { private void displayVoidResult(Context context, VoidRespose response, Activity originalActivity) {
if (HywebActionStatusCode.withSuccess(response.getSTATUS())) { if (HywebActionStatusCode.withSuccess(response.getSTATUS())) {
super.onPosSuccess(context,originalActivity,response); super.onPosSuccess(context, originalActivity, response);
} else if(HywebActionStatusCode.withException(response.getSTATUS())){ } else if (HywebActionStatusCode.withException(response.getSTATUS())) {
super.onPosException(context,originalActivity,response); super.onPosException(context, originalActivity, response);
}else { } else {
super.onPosInvalid(context,originalActivity,response); super.onPosInvalid(context, originalActivity, response);
} }
} }
...@@ -196,6 +198,8 @@ public class VoidActionImpl extends IPosAction<VoidRespose> { ...@@ -196,6 +198,8 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter); String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "VoidRequest JSON :" + json);
return requestBody; return requestBody;
} }
} }
...@@ -48,11 +48,12 @@ public class PayMethodUtils { ...@@ -48,11 +48,12 @@ public class PayMethodUtils {
*/ */
public static int hasHywebPayMethod(List<PayMethod> payMethods) { public static int hasHywebPayMethod(List<PayMethod> payMethods) {
if (payMethods != null && payMethods.size() > 0) { if (payMethods != null && payMethods.size() > 0) {
int[] payTypes = {PayTypeContract.PAY_METHOD_ID_1030, PayTypeContract.PAY_METHOD_ID_1031, PayTypeContract.PAY_METHOD_ID_1032, PayTypeContract.PAY_METHOD_ID_1033};
for (int i = 0; i < payMethods.size(); i++) { for (int i = 0; i < payMethods.size(); i++) {
PayMethod payMethod = payMethods.get(i); PayMethod payMethod = payMethods.get(i);
if (payMethod.getPayType() == payTypes[0] || payMethod.getPayType() == payTypes[1]) { for (int type: PayTypeContract.HYWEB_PAY_METHODS) {
return i; if (payMethod.getPayType() == type) {
return i;
}
} }
} }
} }
...@@ -60,9 +61,10 @@ public class PayMethodUtils { ...@@ -60,9 +61,10 @@ public class PayMethodUtils {
} }
public static boolean withHywebPayMethod(PayMethod payMethod) { public static boolean withHywebPayMethod(PayMethod payMethod) {
int[] payTypes = {PayTypeContract.PAY_METHOD_ID_1030, PayTypeContract.PAY_METHOD_ID_1031, PayTypeContract.PAY_METHOD_ID_1032, PayTypeContract.PAY_METHOD_ID_1033}; for (int type: PayTypeContract.HYWEB_PAY_METHODS) {
if (payMethod.getPayType() == payTypes[0] || payMethod.getPayType() == payTypes[1]) { if (payMethod.getPayType() == type) {
return true; return true;
}
} }
return false; return false;
} }
...@@ -74,11 +76,12 @@ public class PayMethodUtils { ...@@ -74,11 +76,12 @@ public class PayMethodUtils {
*/ */
public static PayMethod getHywebPayMethod(List<PayMethod> payMethods) { public static PayMethod getHywebPayMethod(List<PayMethod> payMethods) {
if (payMethods != null && payMethods.size() > 0) { if (payMethods != null && payMethods.size() > 0) {
int[] payTypes = {PayTypeContract.PAY_METHOD_ID_1030, PayTypeContract.PAY_METHOD_ID_1031, PayTypeContract.PAY_METHOD_ID_1032, PayTypeContract.PAY_METHOD_ID_1033};
for (int i = 0; i < payMethods.size(); i++) { for (int i = 0; i < payMethods.size(); i++) {
PayMethod payMethod = payMethods.get(i); PayMethod payMethod = payMethods.get(i);
if (payMethod.getPayType() == payTypes[0] || payMethod.getPayType() == payTypes[1]) { for (int type: PayTypeContract.HYWEB_PAY_METHODS) {
return payMethod; if (payMethod.getPayType() == type) {
return payMethod;
}
} }
} }
} }
......
...@@ -4,7 +4,7 @@ package com.gingersoft.gsa.cloud.print.bean; ...@@ -4,7 +4,7 @@ package com.gingersoft.gsa.cloud.print.bean;
* @author : bin * @author : bin
* @create date: 2020-11-06 * @create date: 2020-11-06
* @update date: 2020-11-06 * @update date: 2020-11-06
* @description:打印實體接口 所有打印實體類都實現這個接口 * @description:打印實體接口,所有打印實體類都實現這個接口
* */ * */
public interface PrintContent { public interface PrintContent {
......
...@@ -32,7 +32,7 @@ import lombok.Data; ...@@ -32,7 +32,7 @@ import lombok.Data;
* @author : bin * @author : bin
* @create date: 2020-12-01 * @create date: 2020-12-01
* @update date: 2020-12-01 * @update date: 2020-12-01
* @description:打印內容適配類,打印類只需要拿到自身需要的實體信息 * @description:打印內容適配類,打印類只需要關注自身需要的實體信息
*/ */
@Data @Data
public class PrintContentAdapter implements AdaptationContent { public class PrintContentAdapter implements AdaptationContent {
......
...@@ -197,7 +197,6 @@ ...@@ -197,7 +197,6 @@
android:layout_marginTop="@dimen/dp_10" android:layout_marginTop="@dimen/dp_10"
android:orientation="vertical" /> android:orientation="vertical" />
<TextView <TextView
android:id="@+id/tv_kitchen_print_table_number2" android:id="@+id/tv_kitchen_print_table_number2"
style="@style/Print_kitchen_table_number_text_style" style="@style/Print_kitchen_table_number_text_style"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment