Commit 575c626d by 宁斌

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

parent d1f85c82
......@@ -7,21 +7,23 @@ import okhttp3.FormBody
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) {
val builder = FormBody.Builder()
.add("restaurantId", restaurantId)
.add("status", status)//4為已完成 6為取消
.add("pageIndex", pageIndex)
.add("pageSize", pageSize)
.add("orderNo", orderNo)
.add("startDate", startDate)
.add("endDate", endDate)
.add("phone", phone)
if (orderType == 8) {
builder.add("orderType", orderType.toString())
}
val requestBody = builder.build()
val heWeather = network.getHistoryOrderList(requestBody)
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()
// .add("restaurantId", restaurantId)
// .add("status", status)//4為已完成 6為取消
// .add("pageIndex", pageIndex)
// .add("pageSize", pageSize)
// .add("orderNo", orderNo)
// .add("startDate", startDate)
// .add("endDate", endDate)
//// .add("phone", phone)
// .add("param", phone)//訂單號或手機號
// .add("orderType", "2,7")//訂單類型 2 線上外賣訂單,7 自取訂單
// if (orderType == 8) {
// builder.add("orderType", orderType.toString())
// }
// val requestBody = builder.build()
val heWeather = network.getHistoryOrderList(restaurantId,startDate, endDate, phone, status, orderType, pageIndex, pageSize)
heWeather
}
......
package com.gingersoft.gsa.delivery_pick_mode.data.model.bean
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
import com.google.gson.annotations.SerializedName
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
*/
class HistoryOrderBean(
@SerializedName("data")
val `data`: Data,
@SerializedName("success")
var success: Boolean,
@SerializedName("sysTime")
val sysTime: Long) {
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
class Data(
@SerializedName("count")
val count: Int,
@SerializedName("list")
val list: ArrayList<OrderItem>) {
class OrderItem(
@SerializedName("addressDetail")
val addressDetail: String,
@SerializedName("createTime")
val createTime: String,
@SerializedName("id")
val id: Int,
@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
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.http.Query
import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException
import kotlin.coroutines.suspendCoroutine
......@@ -71,7 +72,8 @@ class CoolWeatherNetwork {
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()
......@@ -83,7 +85,7 @@ class CoolWeatherNetwork {
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()
......
......@@ -50,8 +50,13 @@ interface WeatherService {
@POST("gsa/getDeliveryConfigDTO")
fun getDeliveryConfigDTO(@Body requestBody: RequestBody): Call<DeliveryConfig>
@POST("wechat/findHistoryOrderList")
fun getHistoryOrderList(@Body requestBody: RequestBody): Call<HistoryOrderBean>
// @POST("wechat/findHistoryOrderList")
// 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")
fun cancelLogistics(@Body requestBody: RequestBody): Call<CancelLogisticsBean>
......@@ -63,7 +68,7 @@ interface WeatherService {
fun getCancelReason(@Query("brandId") brandId: Int, @Query("restaurantId") restaurantId: Int, @Query("type") type: Int): Call<CancelReason>
@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")
fun addPrj(@Body requestBody: RequestBody): Call<String>
......
......@@ -22,10 +22,11 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
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 searchValue = MutableLiveData("")//按搜索內容查詢
var orderType = 0
var orderType = "2,7" //訂單類型 2 線上外賣訂單,7 自取訂單
fun getHistoryOrderList(pageIndex: String, orderNum: String = "", startDate: String, endDate: String, status: String) {
launch({
......@@ -37,17 +38,20 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
orderNumber = orderNum
}
historyOrderRepository.getHistoryOrderList(RestaurantInfoManager.newInstance().getRestaurantId().toString(), status, startDate, endDate, pageIndex, "10", orderType, orderNumber, phone).apply {
this.data?.let {
if (it.size > 0) {
it.removeAt(it.size - 1)//移除最後一個,最後一個是顯示總條數的
}
if (pageIndex == "1") {
historyData.postValue(this)
} else {
historyData.value!!.data!!.addAll(it)
historyData.postValue(historyData.value)
historyData.value!!.success = true
if (this.data == null) {
historyData.postValue(this)
} else {
this.data.let {
if (it?.list != null && it?.list.size > 0) {
it.list.removeAt(it.list.size - 1)//移除最後一個,最後一個是顯示總條數的
}
if (pageIndex == "1") {
historyData.postValue(this)
} else {
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
})
}
fun printOrder(context: Context, data: HistoryOrderBean.DataBean, listener: (Boolean) -> Unit) {
fun printOrder(context: Context, data: HistoryOrderBean.Data.OrderItem, listener: (Boolean) -> Unit) {
launch({
getOrderInfo(data.Id.toString()) {
getOrderInfo(data.id.toString()) {
printOrder(it, data, context, listener)
}
}, {
......@@ -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) {
//訂單信息和廚房單
orderDetails.data!![0].order_type = data.order_type
orderDetails.data!![0].order_type = data.orderType
orderDetails.data!![0].orderPayType = data.orderPayType
TakeawayOrder.getInstance().shoppingCart.deliveryAndPickupData = orderDetails.data!![0]
......
......@@ -57,10 +57,13 @@ class HistoryOrderActivity : BaseActivity<IPresenter>() {
private fun initViewModel() {
mViewModel = ViewModelProvider(this, InjectorUtil.getHistoryModelFactory())[HistoryOrderViewModel::class.java].apply {
orderType = CCUtil.getNavigateParam(this@HistoryOrderActivity, DeliveryPickConstans.ORDER_TYPE, 0)
historyTime.observe(this@HistoryOrderActivity, androidx.lifecycle.Observer {
orderType = CCUtil.getNavigateParam(this@HistoryOrderActivity, DeliveryPickConstans.ORDER_TYPE, orderType)
historyStartTime.observe(this@HistoryOrderActivity, androidx.lifecycle.Observer {
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>() {
e.printStackTrace()
}
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 {
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
import android.content.Context
import android.graphics.drawable.GradientDrawable
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.Nullable
import androidx.core.content.ContextCompat
import androidx.databinding.DataBindingUtil
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.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.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點擊事件
private var listenter: ((item: DataBean) -> Unit)? = null
private var listenter: ((item: OrderItem) -> Unit)? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
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
orderingMethodBg.shape = GradientDrawable.OVAL
holder.binding.orderingMethod =
when {
data!!.order_type == 2 -> {
data!!.orderType == 2 -> {
orderingMethodBg.setColor(getColor(R.color.order_state2_color))
"外"
}
data.order_type == 7 -> {
data.orderType == 7 -> {
orderingMethodBg.setColor(getColor(R.color.order_state3_color))
"自"
}
......@@ -81,12 +85,86 @@ class HistoryOrderAdapter(var stauts: String?, private val context: Context, var
} else if (stauts.equals("6")) {
//已取消訂單
holder.iv_end.setImageResource(R.drawable.img_cancelled)
setOrderReason(holder, stauts!!, data.orderPayType, data.reasonDesc);
}
// setViewVisableByStatus(holder, stauts!!);
} else {
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 {
return ContextCompat.getColor(context, color)
}
......@@ -94,9 +172,15 @@ class HistoryOrderAdapter(var stauts: String?, private val context: Context, var
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var binding: LayoutHistoryOrderItemBinding = DataBindingUtil.bind(itemView)!!
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
}
}
\ No newline at end of file
......@@ -35,19 +35,19 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) {
refresh_layout.finishLoadMore()
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) {
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.adapter = mHistoryOrderAdapter
mHistoryOrderAdapter!!.setOnItemClickListenter { it ->
showLoading()
viewModel.getOrderInfo(it.Id.toString()) { it2 ->
viewModel.getOrderInfo(it.id.toString()) { it2 ->
cancelDialogForLoading()
if (it2.data != null && it2.data!!.isNotEmpty()) {
//顯示彈窗
context?.let { context ->
OtherOrderUtils.showOrderDetailsDialog(context, it2, it.STATUS, it.order_type, true) { _, _, _ ->
OtherOrderUtils.showOrderDetailsDialog(context, it2, it.status, it.orderType, true) { _, _, _ ->
//重印
showLoading()
viewModel.printOrder(context, it) {
......@@ -66,15 +66,19 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) {
}
}
} else {
mHistoryOrderAdapter!!.data = it.data
mHistoryOrderAdapter!!.data = it.data.list
mHistoryOrderAdapter!!.stauts = status.value
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)
})
historyTime.observe(viewLifecycleOwner, Observer {
historyStartTime.observe(viewLifecycleOwner, Observer {
//當時間發生變化,請求數據
pageIndex = 1
getHistoryInfo()
})
historyEndTime.observe(viewLifecycleOwner, Observer {
//當時間發生變化,請求數據
pageIndex = 1
getHistoryInfo()
......@@ -101,7 +105,7 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) {
private fun getHistoryInfo(page: Int = pageIndex) {
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 @@
android:onClick="onClickListener"
android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_14"
android:visibility="gone"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@id/tv_to"
app:layout_constraintLeft_toRightOf="@id/tv_to"
app:layout_constraintTop_toTopOf="@id/tv_to" />
......@@ -112,7 +112,7 @@
android:layout_height="@dimen/dp_5"
android:layout_marginLeft="@dimen/dp_2"
android:onClick="onClickListener"
android:visibility="gone"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="@id/tv_end_time"
app:layout_constraintLeft_toRightOf="@id/tv_end_time"
app:layout_constraintTop_toTopOf="@id/tv_end_time"
......
<?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">
<data>
......@@ -8,7 +9,7 @@
<variable
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
name="orderingMethod"
......@@ -78,7 +79,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:text="@{data.rECEIVER}"
android:text="@{data.receiver}"
android:textColor="@color/theme_333_color"
android:textSize="@dimen/sp_14"
android:textStyle="bold"
......@@ -92,7 +93,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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_constraintTop_toTopOf="@id/tv_order_user_name" />
......@@ -102,8 +103,7 @@
android:layout_height="0dp"
android:src="@drawable/ic_has_end"
app:layout_constraintBottom_toTopOf="@id/tv_order_amount"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_order_time" />
app:layout_constraintRight_toRightOf="parent" />
<androidx.constraintlayout.widget.Barrier
......@@ -130,7 +130,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_5"
android:text="@{data.PHONE}"
android:text="@{data.phone}"
app:layout_constraintLeft_toRightOf="@id/barrier_order_info"
app:layout_constraintRight_toLeftOf="@id/iv_end"
app:layout_constraintTop_toTopOf="@id/tv_cellphone_num_text" />
......@@ -138,7 +138,6 @@
<TextView
android:id="@+id/tv_order_num_text"
style="@style/otherOrder_item_info_title_textStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_2"
......@@ -152,7 +151,7 @@
style="@style/otherOrder_item_info_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@{data.ORDER_NO}"
android:text="@{data.orderNo}"
app:layout_constraintLeft_toLeftOf="@id/tv_cellphone_num"
app:layout_constraintRight_toLeftOf="@id/iv_end"
app:layout_constraintTop_toTopOf="@id/tv_order_num_text" />
......@@ -165,7 +164,7 @@
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_2"
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_constraintTop_toBottomOf="@id/tv_order_num_text" />
......@@ -174,7 +173,7 @@
style="@style/otherOrder_item_info_textStyle"
android:layout_width="0dp"
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_constraintRight_toLeftOf="@id/iv_end"
app:layout_constraintTop_toTopOf="@id/tv_address_text" />
......@@ -183,12 +182,62 @@
android:id="@+id/tv_order_amount"
android:layout_width="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:textSize="@dimen/sp_14"
app:layout_constraintBottom_toBottomOf="@id/tv_address"
app:layout_constraintRight_toRightOf="parent"
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>
</com.lihang.ShadowLayout>
</layout>
\ No newline at end of file
......@@ -29,6 +29,7 @@
<activity android:name=".mvp.ui.activity.SettlementActivity" />
<activity android:name=".mvp.ui.activity.SettlementReportActivity" />
<activity android:name=".mvp.ui.activity.LookLogActivity" />
<activity android:name=".mvp.ui.activity.OriginalPrintPaperActivity" />
<activity
android:name=".mvp.ui.activity.menu.FoodMenuManageActivity"
android:launchMode="singleTask"
......@@ -52,4 +53,4 @@
android:value="640" />
</application>
</manifest>
\ No newline at end of file
</manifest>
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
@Override
protected void onRestart() {
super.onRestart();
String restaurantName = RestaurantInfoManager.newInstance().getRestaurantName();
tvStoreName.setText(restaurantName);
tvRestaurantName.setText(restaurantName);
updateTitleInfo();
}
/**
......@@ -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_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, "清機"));
......@@ -270,6 +269,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
case "上傳日誌":
LoganManager.uploadLog(mContext, true);
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>
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
@Override
public void initIntent() {
MealPayResultParam payResultParam = CCUtil.getNavigateParam(this, "payResultParam", null);
if (payResultParam != null) {
......@@ -281,14 +276,17 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
PosPay.printStub(mContext, this,txnId, new OnPosActionListener() {
@Override
public void onPosSuccess(HywebPosResponse response) {
printBill();
}
@Override
public void onPosException(Exception e) {
printBill();
}
@Override
public void onPosInvalid(String e) {
printBill();
}
@Override
......@@ -362,7 +360,7 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
if (view.getId() == R.id.tv_tips) {
showKeyboardDialog();
} else if (view.getId() == R.id.tv_printer) {
printBill();
printPaymentStub(mMealPayResultParam.getTxnId());
} else if (view.getId() == R.id.btn_complate) {
//返回餐檯頁面
CC.obtainBuilder(ComponentName.COMPONENT_TABLE)
......
......@@ -373,6 +373,7 @@ public class PrintPrjKitchen extends PrinterRoot {
tvCurrentPageIndex.setText(prjBean.getCurrentIndex() + "/" + prjBean.getTotalPrj());
}
}
return viewToZoomBitmap(context, view, printerDeviceBean);
}
......
......@@ -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.utils.RestaurantExpandInfoUtils;
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.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
......
......@@ -11,7 +11,6 @@ import android.util.Log;
import androidx.annotation.Nullable;
import com.elvishew.xlog.XLog;
import com.epson.epos2.Epos2Exception;
import com.epson.epos2.printer.Printer;
import com.epson.epos2.printer.PrinterStatusInfo;
......@@ -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.user.UserContext;
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.gson.GsonUtils;
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.threadPool.ThreadPoolManager;
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.view.BitmapUtil;
import com.gingersoft.gsa.cloud.database.bean.PrintCurrencyBean;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.database.utils.PrinterDeviceDaoUtils;
import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
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.UpdateBean;
import com.hyweb.n5.lib.constant.PrinterConstant;
......@@ -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.utils.MyPrintUtils;
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.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
......@@ -108,7 +115,7 @@ public class PrjService extends Service implements ReceiveListener {
public int onStartCommand(Intent intent, int flags, int startId) {
mContext = this;
ThreadPoolManager.getInstence().putExecutableTasks(() -> {
LoganManager.w_printer(TAG,"開始請求 PRJ 數據");
LoganManager.w_printer(TAG, "開始請求 PRJ 數據");
getPrintList();
//開始請求
startGetPrjInfo();
......@@ -170,23 +177,23 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public void onSubscribe(Disposable d) {
disposable = d;
LoganManager.w_printer(TAG,"startGetPrjInfo onSubscribe");
LoganManager.w_printer(TAG, "startGetPrjInfo onSubscribe");
}
@Override
public void onNext(Long aLong) {
LoganManager.w_printer(TAG,"startGetPrjInfo onNext");
LoganManager.w_printer(TAG, "startGetPrjInfo onNext");
getPrjInfo();
}
@Override
public void onError(Throwable e) {
LoganManager.w_printer(TAG,"startGetPrjInfo onError:" + e.getMessage());
LoganManager.w_printer(TAG, "startGetPrjInfo onError:" + e.getMessage());
}
@Override
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 {
@Override
public void onSubscribe(Disposable d) {
LoganManager.w_printer(TAG,"getPrjInfo onSubscribe");
LoganManager.w_printer(TAG, "getPrjInfo onSubscribe");
}
@Override
public void onNext(String s) {
LoganManager.w_printer(TAG,"getPrjInfo onNext: " + s);
LoganManager.w_printer(TAG, "getPrjInfo onNext: " + s);
//請求到數據,停止輪詢,開始打印,在打印完之後再重新開始輪詢
// startPrint(s);
newPrint(s);
......@@ -218,35 +225,35 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public void onSubscribe(Disposable d) {
wakeDisposable = d;
LoganManager.w_printer(TAG,"getPrjInfo timer onSubscribe");
LoganManager.w_printer(TAG, "getPrjInfo timer onSubscribe");
}
@Override
public void onNext(Long aLong) {
LoganManager.w_printer(TAG,"getPrjInfo timer onNext");
LoganManager.w_printer(TAG, "getPrjInfo timer onNext");
startGetPrjInfo();
}
@Override
public void onError(Throwable e) {
LoganManager.w_printer(TAG,"getPrjInfo timer onError: " + e.getMessage());
LoganManager.w_printer(TAG, "getPrjInfo timer onError: " + e.getMessage());
}
@Override
public void onComplete() {
LoganManager.w_printer(TAG,"getPrjInfo timer onComplete");
LoganManager.w_printer(TAG, "getPrjInfo timer onComplete");
}
});
}
@Override
public void onError(Throwable e) {
LoganManager.w_printer(TAG,"getPrjInfo onError:" + e.getMessage());
LoganManager.w_printer(TAG, "getPrjInfo onError:" + e.getMessage());
}
@Override
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 {
totalPrj = 0;
PrjBean prjBean = JsonUtils.parseObject(json, PrjBean.class);
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;
}
//有數據,取消輪詢,等待打印結束。
......@@ -388,7 +395,7 @@ public class PrjService extends Service implements ReceiveListener {
}
} catch (JSONException e) {
e.printStackTrace();
LoganManager.w_printer(TAG,"newPrint JSONException: " + e.getMessage());
LoganManager.w_printer(TAG, "newPrint JSONException: " + e.getMessage());
}
setPrjIndex(listMap, totalPrj);
initPrinterDevices();
......@@ -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) {
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()) {
//上一個對象是否切紙
boolean lastIsCute = false;
......@@ -460,7 +467,7 @@ public class PrjService extends Service implements ReceiveListener {
}
private void foreachPrint(Map<String, List<PrjBean.DataBean.Bean>> listMap) {
LoganManager.w_printer(TAG,"foreachPrint");
LoganManager.w_printer(TAG, "foreachPrint");
//雙重遍歷可以以後優化
//第二步:遍歷 Map<廚房位置,需要打印的數據>,通過廚房位置找到對應的打印機,並且通過數據拿到對應的通用配置
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) {
......@@ -482,7 +489,7 @@ public class PrjService extends Service implements ReceiveListener {
}
private void initPrinterDevices() {
LoganManager.w_printer(TAG,"initPrinterDevices");
LoganManager.w_printer(TAG, "initPrinterDevices");
//讀取打印機和通用配置,可以優化
//獲取所有打印機
PrinterDeviceDaoUtils printerDeviceDaoUtils = new PrinterDeviceDaoUtils(this);
......@@ -513,9 +520,11 @@ public class PrjService extends Service implements ReceiveListener {
*/
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());
PrintPaperPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(GsonUtils.GsonString(beans), GsonUtils.GsonString(printerDeviceBean));
if (isPinPrinter(printerDeviceBean) && printerDeviceBean.getPrinterDeviceType() == PRINT_IP) {
//針式打印機並且打印機類型為IP打印,生成獨特的格式
List<Map<String, Bitmap>> bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean);
......@@ -704,7 +713,7 @@ public class PrjService extends Service implements ReceiveListener {
* ip設備打印
*/
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());
for (int i = 0; i < bitmapMaps.size(); i++) {
PrintExecutor executor = new PrintExecutor(printerDeviceBean);
......@@ -713,18 +722,18 @@ public class PrjService extends Service implements ReceiveListener {
switch (errorCode) {
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);
Log.e(TAG, "打印成功");
break;
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失败");
updatePrjFailure(ids);
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));
executor.doPrinterRequestAsync(maker);
}
......@@ -906,9 +915,19 @@ public class PrjService extends Service implements ReceiveListener {
stringBuffer.append(noCutData.getId());
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);
}
if (bitmapMaps.size() > 0) {
String prjName = null;
if (beans.size() > 0) {
prjName = beans.get(0).getBillNo();
}
PrintPaperPlugins.getOnPrinterFlowHandler().onPrinterBitmapBefore(prjName, bitmapMaps);
}
return bitmapMaps;
}
......
......@@ -80,6 +80,7 @@ public class KitChenPrjFoodView extends LinearLayout {
}
}
}
addView(view);
}
}
......
package com.gingersoft.gsa.cloud.table.mvp.action.order;
import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam;
......@@ -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.mvp.model.bean.response.OrderManagerResponse;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.delegate.IActivity;
import com.jess.arms.mvp.IView;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
......@@ -27,12 +29,12 @@ import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
public class CancelOrder implements Strategy<OrderManagerResponse> {
private final String TAG = "CancelOrder";
private BaseFragmentActivity mActivity;
private IView mRootView;
public CancelOrder(BaseFragmentActivity fragmentActivity, IView rootView){
this.mActivity = fragmentActivity;
public CancelOrder(BaseFragmentActivity fragmentActivity, IView rootView) {
this.mActivity = fragmentActivity;
this.mRootView = rootView;
}
......@@ -43,6 +45,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
private void showCancelDialog(OrderManagerResponse datasBean) {
......@@ -55,7 +59,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
if (datasBean.withHywebPay()) {
hywebOrderCancle(datasBean);
} else {
if(cancelListener != null){
if (cancelListener != null) {
cancelListener.cancel(datasBean.getId());
}
}
......@@ -79,7 +83,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override
public void onPosSuccess(VoidRespose response) {
LoganManager.w_code(TAG, "onPosSuccess: " + response.toString());
if(cancelListener != null){
if (cancelListener != null) {
cancelListener.refeshOrders();
}
}
......@@ -87,7 +91,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override
public void onPosException(Exception e) {
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();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -96,6 +101,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.VOID);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
}
}
......@@ -127,11 +134,14 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
}
private OnCancelListener cancelListener;
public void setCancelListener(OnCancelListener cancelListener) {
this.cancelListener = cancelListener;
}
public interface OnCancelListener{
public interface OnCancelListener {
void cancel(long orderId);
void refeshOrders();
}
}
......@@ -95,7 +95,8 @@ public class ModifyOrderAction implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
}
......@@ -60,6 +60,8 @@ public class PrintOrderAction implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
private void startPrintOrder(OrderManagerResponse orderDetailItem, List<OrderDetail> orderDetailList) {
......
......@@ -30,7 +30,7 @@ import java.util.List;
*/
public class RefundOrder implements Strategy<OrderManagerResponse> {
private final String TAG = "RefundlOrder";
private final String TAG = "RefundlOrder";
private BaseFragmentActivity mActivity;
private IView mRootView;
......@@ -46,7 +46,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
private void showHywebRefundDialog(OrderManagerResponse datasBean) {
......@@ -88,7 +89,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
@Override
public void onPosException(Exception e) {
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();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -97,6 +99,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.REFUND);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else {
mActivity.start(statusExceptionFragment);
}
}
......@@ -114,7 +118,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
@Override
public void onUpdateStatusError(Throwable e) {
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();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -123,6 +128,8 @@ public class RefundOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.REFUND);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
}
}
});
......
......@@ -42,6 +42,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
private void showKeyboardDialog(OrderManagerResponse datasBean) {
......@@ -75,7 +77,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
@Override
public void onPosException(Exception e) {
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();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -84,6 +87,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.TIP);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
}
}
......@@ -100,7 +105,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
@Override
public void onUpdateStatusError(Throwable e) {
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();
statusExceptionParam.setTxnId(datasBean.getPayTxnId());
statusExceptionParam.setAmount(datasBean.getAmount());
......@@ -109,6 +115,8 @@ public class TipsOrder implements Strategy<OrderManagerResponse> {
statusExceptionParam.setPayMethodName("VISA測試");
statusExceptionParam.setPosAction(PosAction.TIP);
mActivity.loadRootFragment(R.id.rl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
}else{
mActivity.start(statusExceptionFragment);
}
}
});
......
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.mvp.IView;
import com.jess.arms.mvp.IModel;
......@@ -28,6 +29,7 @@ public interface AllOrderContract {
String getOrderType();
String getStatusByFragmentIndex();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -40,6 +40,8 @@ public interface OrderCenterContract {
String getStatusByFragmentIndex();
int getPageSize();
void setOnCheckedChangedListener(OrderManagerResponse checkOrderBean);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -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.OrderResponse;
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 java.io.Serializable;
......@@ -277,8 +278,19 @@ public class OrderManagerResponse implements Serializable {
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
*/
public boolean isCurrDeviceOrder(){
......
......@@ -383,7 +383,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
if (!TextUtils.isEmpty(orderBean.getTxnId())) {
//有支付異常事項需要處理
if (IActivity.findFragment(PosActionStatusExceptionFragment.class) == null) {
PosActionStatusExceptionFragment statusExceptionFragment = IActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(orderBean.getTxnId());
statusExceptionParam.setAmount(orderBean.getTotalAmount());
......@@ -392,6 +393,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
statusExceptionParam.setPayMethodName(orderBean.getPayName());
statusExceptionParam.setPosAction(PosAction.RETRIEVAL);
IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
} else {
IActivity.start(statusExceptionFragment);
}
return;
}
......
......@@ -97,6 +97,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
private OrderCenterAdapter mOrderCenterAdapter;
private List<OrderManagerResponse> mOrderItemList = new ArrayList<>();
private OrderManagerResponse mCheckedOrderBean;
@Inject
public AllOrderPresenter(AllOrderContract.Model model, AllOrderContract.View rootView) {
......@@ -112,6 +113,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
this.IActivity = null;
}
public void initOrderAdapter(Context context) {
......@@ -126,36 +128,32 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
intent.putExtra("orderDetailItem", datasBean);
mRootView.launchActivity(intent);
}
@Override
public void onPrintClick(OrderManagerResponse datasBean, int position) {
}
@Override
public void onModifyClick(OrderManagerResponse datasBean, int position) {
}
@Override
public void onCancelClick(OrderManagerResponse datasBean, int position) {
}
@Override
public void onRefundClick(OrderManagerResponse datasBean, int position) {
}
@Override
public void onTipsClick(OrderManagerResponse datasBean, int position) {
public void onCheckedChanged(OrderManagerResponse checkedOrder) {
if (checkedOrder.isChecked()) {
mCheckedOrderBean = checkedOrder;
} else {
mCheckedOrderBean = null;
}
IActivity.setOnCheckedChangedListener(mCheckedOrderBean);
}
@Override
public void onReloadExceptionStatus(OrderManagerResponse orderBean, String txnId) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(txnId);
statusExceptionParam.setAmount(orderBean.getTotalAmount());
statusExceptionParam.setOrderId(orderBean.getId());
statusExceptionParam.setOrderNo(orderBean.getOrderNo());
statusExceptionParam.setPayMethodName(orderBean.getPayNames());
statusExceptionParam.setPosAction(PosAction.RETRIEVAL);
IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
PosActionStatusExceptionFragment statusExceptionFragment = IActivity.findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(txnId);
statusExceptionParam.setAmount(orderBean.getTotalAmount());
statusExceptionParam.setOrderId(orderBean.getId());
statusExceptionParam.setOrderNo(orderBean.getOrderNo());
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
}
}
public OrderManagerResponse getSelectedOrderItem(){
for (OrderManagerResponse orderItem:mOrderItemList) {
if(orderItem.isChecked()){
return orderItem;
}
}
return null;
public OrderManagerResponse getCheckedOrderBean() {
return mCheckedOrderBean;
}
}
......@@ -74,7 +74,7 @@ public class BaseOrderConterPresenter<M extends IModel,V extends IView> extends
}
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.setTipsListener(listener);
}
......
......@@ -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.commodity.OrderDetail;
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.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
......@@ -88,8 +89,7 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo
OrderManagerResponse orderDetailItem = JsonUtils.parseObject(JsonUtils.toJson(result.getData()), OrderManagerResponse.class);
mRootView.returnOrderDetail(orderDetailItem);
//刷新訂單列表
EventBus.getDefault().post(true, "updateOrderListEvent");
} else {
EventBus.getDefault().post(true, PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT); } else {
mRootView.showMessage("獲取賬單失敗");
}
} else {
......@@ -116,7 +116,7 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo
OrderManagerResponse orderDetailItem = JsonUtils.parseObject(JsonUtils.toJson(result.getData()), OrderManagerResponse.class);
mRootView.returnOrderDetail(orderDetailItem);
//刷新訂單列表
EventBus.getDefault().post(true, "updateOrderListEvent");
EventBus.getDefault().post(true, PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT);
} else {
mRootView.showMessage("獲取賬單失敗");
}
......
......@@ -469,7 +469,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
mAppManager.killActivity("PrintActivity");
}
});
RxJavaUtils.delay(1,TimeUnit.SECONDS)
RxJavaUtils.delay(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Long>() {
@Override
......@@ -480,24 +480,32 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
}
private void printBill() {
//打印結賬單
PrintContent printContent = new PrintContentAdapter().adaptationBillContent(DoshokuOrder.getInstance(), DoshokuOrder.getInstance().getOpenTableInfo());
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.build()
.callAsyncCallbackOnMainThread(new IComponentCallback() {
@Override
public void onResult(CC cc, CCResult result) {
LoganManager.w_code(TAG, "printBill " + "是否成功打印:" + result.isSuccess());
mAppManager.killActivity("PrintActivity");
mAppManager.killActivity(MealStandActivity.class);
mAppManager.killActivity(OrderContentActivity.class);
hideLoading();
killMyself();
}
});
if (AppDevices.isHywebPos()) {
printEndBack();
} else {
//打印結賬單
PrintContent printContent = new PrintContentAdapter().adaptationBillContent(DoshokuOrder.getInstance(), DoshokuOrder.getInstance().getOpenTableInfo());
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.build()
.callAsyncCallbackOnMainThread(new IComponentCallback() {
@Override
public void onResult(CC cc, CCResult result) {
LoganManager.w_code(TAG, "printBill " + "是否成功打印:" + result.isSuccess());
printEndBack();
}
});
}
}
private void printEndBack() {
hideLoading();
mAppManager.killActivity("PrintActivity");
mAppManager.killActivity(MealStandActivity.class);
mAppManager.killActivity(OrderContentActivity.class);
killMyself();
}
private void setBillMoney() {
......@@ -532,20 +540,22 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
if (hywebPayMethodIndex != -1) {
PayMethod hywebPayMethod = mBillMoneyList.get(hywebPayMethodIndex);
SaleRequest saleRequest = new SaleRequest();
if (hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1030) {
//卡片支付
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_CC);
} else if(hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1031){
//掃碼支付
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_QRC);
}else if(hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1032){
//八達通支付
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_OPS);
}else if(hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1033){
//美国运通
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_AE);
switch (hywebPayMethod.getPayType()) {
case PayTypeContract.PAY_METHOD_ID_1030:
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_CC);
break;
case PayTypeContract.PAY_METHOD_ID_1031:
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_QRC);
break;
case PayTypeContract.PAY_METHOD_ID_1032:
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_OPS);
break;
case PayTypeContract.PAY_METHOD_ID_1033:
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_AE);
break;
default:
break;
}
saleRequest.setTXN_AMT(DoshokuOrder.getInstance().getShoppingCart().getTotalAmount());
saleRequest.setTIPS(0);
......
......@@ -5,6 +5,7 @@ import android.os.Bundle;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
......@@ -75,17 +76,23 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
@BindView(R2.id.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)
QMUIAlphaButton btn_refund;
@BindView(R2.id.btn_tips)
QMUIAlphaButton btn_tips;
@BindView(R2.id.btn_modify_order)
QMUIAlphaButton btn_modify_order;
private AllOrderFragment mNormalOrderFragment, mCancelOrderFragment, mVoidOrderFragment;
//當前顯示頁下標
private int mCurrentFragmentIndex = 0;
//標題
private String[] mTabTitles = {"已付款", "已取消"};
// private String[] mTabTitles = {"堂食"};
// private String[] mTabTitles = {"堂食"};
//是否已經初始化數據,默認初始化第一個頁面
private boolean[] mPageDataInit = {true, false, false};
......@@ -113,73 +120,68 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
lp_content = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
initTabAndPager();
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "",getStatusByFragmentIndex(), 0, 10, null, false);
}
@Subscriber(tag = "updateOrderListEvent")
private void updateOrderList(boolean update) {
refeshOrderList(getStatusByFragmentIndex());
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "", getStatusByFragmentIndex(), 0, 10, null, false);
}
@Subscriber(tag = PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT)
private void refreafshOrder(boolean refreafsh){
private void refreafshOrder(boolean refreafsh) {
refeshOrderList(getStatusByFragmentIndex());
}
public void refeshOrderList(String status) {
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);
}
public void cancelOrder(long orderId, String orderType,String status) {
mPresenter.cancelOrder(orderId, orderType,status);
public void cancelOrder(long orderId, String orderType, String 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})
public void OnClick(View v){
OrderManagerResponse orderItem = getCurrentOrderFragment().getSelectedOrderItem();
if(orderItem != null){
@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) {
OrderManagerResponse orderItem = getCurrentOrderFragment().getCheckedOrderBean();
if (orderItem != null) {
int id = v.getId();
if(id == R.id.btn_print_order){
mPresenter.printOrder(this,orderItem);
}else if(id == R.id.btn_modify_order){
if (id == R.id.btn_print_order) {
mPresenter.printOrder(this, orderItem);
} else if (id == R.id.btn_modify_order) {
if (orderItem.getRestaurantTable() == null) {
showMessage("餐檯不存在,無法修改訂單");
return;
}
mPresenter.modifyOrder(this,orderItem);
}else if(id == R.id.btn_tips){
mPresenter.modifyOrder(this, orderItem);
} else if (id == R.id.btn_tips) {
mPresenter.orderTips(this, orderItem, new TipsOrder.OnRefundListener() {
@Override
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() {
@Override
public void cancel(long orderId) {
cancelOrder(orderId, getOrderType(),getStatusByFragmentIndex());
cancelOrder(orderId, getOrderType(), getStatusByFragmentIndex());
}
@Override
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() {
@Override
public void refeshOrders() {
refeshOrderList(getStatusByFragmentIndex());
}
});
@Override
public void refeshOrders() {
refreafshOrder(true);
}
});
}
}else {
} else {
showMessage("請選中需要操作的訂單!");
}
}
......@@ -249,7 +251,7 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
pagerAdapter.createFragment(index);
if (!mPageDataInit[index]) {
//未初始化數據,獲取數據
loadOrderList(getCurrentOrderFragment().getOrderType(),getStatusByFragmentIndex(), null, false);
loadOrderList(getCurrentOrderFragment().getOrderType(), getStatusByFragmentIndex(), null, false);
}
mPageDataInit[mCurrentFragmentIndex] = true;
......@@ -370,6 +372,29 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
}
@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() {
switch (mCurrentFragmentIndex) {
case 1:
......@@ -387,12 +412,12 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
}
@Override
public String getStatusByFragmentIndex(){
public String getStatusByFragmentIndex() {
switch (mCurrentFragmentIndex) {
case 1:
return OrderStatusContract.STATUS_6+"";
return OrderStatusContract.STATUS_6 + "";
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
}
@Subscriber(tag = PosActionStatusExceptionFragment.REFREAFSH_ORDER_EVENT)
private void refreafshOrder(boolean refreafsh){
private void refreafshOrder(boolean refreafsh) {
refreafshOrderDetail();
}
......@@ -219,13 +219,13 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
public void onClick(View v) {
int id = v.getId();
if (id == R.id.btn_print_order) {
mPresenter.printOrder(this,mOrderDetailItem);
mPresenter.printOrder(this, mOrderDetailItem);
} else if (id == R.id.btn_modify_order) {
if (mOrderDetailItem.getRestaurantTable() == null) {
showMessage("餐檯不存在,無法修改訂單");
return;
}
mPresenter.modifyOrder(this,mOrderDetailItem);
mPresenter.modifyOrder(this, mOrderDetailItem);
} else if (id == R.id.btn_cancel_order) {
mPresenter.orderCancel(this, mOrderDetailItem, new CancelOrder.OnCancelListener() {
@Override
......@@ -344,16 +344,16 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
if (mOrderDetailItem.getRestaurantOperationId() != null) {
setWithSettlementLayoutVisible();
} else {
if(mOrderDetailItem.withHywebPay()){
if(mOrderDetailItem.isCurrDeviceOrder()){
setCurrPosDeviceLayoutVisible();
}else {
setNotCurrPosDeviceLayoutVisible();
}
}else{
setNomalDeviceLayoutVisible();
}
setPublicLayoutVisible();
if (mOrderDetailItem.withHywebPay()) {
if (mOrderDetailItem.isCurrDeviceOrder()) {
setCurrPosDeviceLayoutVisible();
} else {
setNotCurrPosDeviceLayoutVisible();
}
} else {
setNomalDeviceLayoutVisible();
}
setPublicLayoutVisible();
}
}
......@@ -439,47 +439,55 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
@Override
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異常重試
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.setVisibility(View.VISIBLE);
tv_reload_exception_status.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(mOrderDetailItem.getMatterTxnId());
statusExceptionParam.setAmount(mOrderDetailItem.getTotalAmount());
statusExceptionParam.setOrderId(mOrderDetailItem.getId());
statusExceptionParam.setOrderNo(mOrderDetailItem.getOrderNo());
statusExceptionParam.setPayMethodName(mOrderDetailItem.getPayNames());
statusExceptionParam.setPosAction(PosAction.RETRIEVAL);
loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
PosActionStatusExceptionFragment statusExceptionFragment = findFragment(PosActionStatusExceptionFragment.class);
if (statusExceptionFragment == null) {
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(mOrderDetailItem.getMatterTxnId());
statusExceptionParam.setAmount(mOrderDetailItem.getTotalAmount());
statusExceptionParam.setOrderId(mOrderDetailItem.getId());
statusExceptionParam.setOrderNo(mOrderDetailItem.getOrderNo());
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.setBackgroundResource(R.color.transparent);
}else {
ll_bottom.setVisibility(View.GONE);
} else {
tv_reload_exception_status.setText("");
tv_reload_exception_status.setVisibility(View.GONE);
tv_reload_exception_status.setOnClickListener(null);
rl_container.setVisibility(View.GONE);
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> {
@BindView(R2.id.tv_reload_exception_status)
TextView tv_reload_exception_status;
public OrderCenterItemHolder(View itemView) {
super(itemView);
public OrderCenterItemHolder(View orderBeanView) {
super(orderBeanView);
}
@Override
public void setData(OrderManagerResponse item, int position) {
public void setData(OrderManagerResponse orderBean, int position) {
setOrderItemDetail(item);
setBtnListener(item, position);
setOrderItemDetail(orderBean);
setBtnListener(orderBean);
rl_root_container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
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 openTable = 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> {
String orderCode = LanguageUtils.get_language_system(mContext, "order.code", "訂單碼") + ": ";
String mealCode = LanguageUtils.get_language_system(mContext, "meal.code", "取餐碼") + ": ";
tv_people_num.setText(pax + item.getPerson());
tv_open_time.setText(openTable + TimeUtils.getStringByFormat(new Date(item.getCreateTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
if (!TextUtils.isEmpty(item.getEndTime())) {
tv_pay_time.setText(payTable + TimeUtils.getStringByFormat(new Date(item.getEndTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
tv_people_num.setText(pax + orderBean.getPerson());
tv_open_time.setText(openTable + TimeUtils.getStringByFormat(new Date(orderBean.getCreateTime()), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
if (!TextUtils.isEmpty(orderBean.getEndTime())) {
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.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_tips.setText(LanguageUtils.get_language_system(mContext, "public.tips", "貼士"));
// btn_modify_order.setText(LanguageUtils.get_language_system(mContext, "modify.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_order_num.setText(orderCode + item.getTakeFoodCode());
} else if (item.getOrderType() == OrderTypeConstans.order_type_7) {
tv_order_num.setText(orderCode + orderBean.getTakeFoodCode());
} else if (orderBean.getOrderType() == OrderTypeConstans.order_type_7) {
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 {
String tableName = LanguageUtils.get_language_system(mContext, "table.number", "檯號") + ": ";
String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "訂單號") + ": ";
tv_table_name.setText(tableName + item.getTableName());
tv_order_num.setText(orderNumber + item.getId());
tv_table_name.setText(tableName + orderBean.getTableName());
tv_order_num.setText(orderNumber + orderBean.getId());
}
//先将check回调情况,防止setChecked时反复调用onCheckedChanged方法
cb_order.setOnCheckedChangeListener(null);
if (item.getStatus() == OrderStatusContract.STATUS_6) {
if (orderBean.getStatus() == OrderStatusContract.STATUS_6) {
cb_order.setVisibility(View.GONE);
}else {
cb_order.setChecked(item.isChecked());
} else {
cb_order.setChecked(orderBean.isChecked());
}
}
private void setBtnListener(OrderManagerResponse item, int position) {
if (item.getStatus() != OrderStatusContract.STATUS_6) {
// btn_print_order.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// if (mOnItemClickListener != null) {
// mOnItemClickListener.onPrintClick(item, position);
// }
// }
// });
// btn_modify_order.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// if (mOnItemClickListener != null) {
// mOnItemClickListener.onModifyClick(item, position);
// }
// }
// });
// btn_cancel_order.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// if (mOnItemClickListener != null) {
// mOnItemClickListener.onCancelClick(item, position);
// }
// }
// });
// btn_refund.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// if (mOnItemClickListener != null) {
// mOnItemClickListener.onRefundClick(item, position);
// }
// }
// });
// 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);
private void setBtnListener(OrderManagerResponse orderBean) {
if (orderBean.getStatus() != OrderStatusContract.STATUS_6) {
if (orderBean.isCurrDeviceOrder()) {
if (orderBean.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 orderBean = mInfos.get(i);
orderBean.setChecked(false);
}
orderBean.setChecked(isChecked);
notifyDataSetChanged();
if (mOnItemClickListener != null) {
mOnItemClickListener.onCheckedChanged(orderBean);
}
}
});
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 {
cb_order.setOnCheckedChangeListener(null);
tv_reload_exception_status.setText(orderBean.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(orderBean, orderBean.getMatterTxnId());
}
}
item.setChecked(isChecked);
notifyDataSetChanged();
}
});
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);
});
horizontal_dividing_line.setVisibility(View.GONE);
rl_root_container.setBackgroundResource(R.drawable.shape_rect_radius_transparent_5);
}
} else {
//非当前POS设备不可操作
cb_order.setVisibility(View.GONE);
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> {
void onItemClick(OrderManagerResponse datasBean, int position);
void onPrintClick(OrderManagerResponse datasBean, int position);
void onModifyClick(OrderManagerResponse datasBean, int position);
void onCancelClick(OrderManagerResponse datasBean, int position);
void onRefundClick(OrderManagerResponse datasBean, int position);
void onTipsClick(OrderManagerResponse datasBean, int position);
// void onPrintClick(OrderManagerResponse datasBean, int position);
//
// void onModifyClick(OrderManagerResponse datasBean, int position);
//
// void onCancelClick(OrderManagerResponse datasBean, int position);
//
// void onRefundClick(OrderManagerResponse datasBean, int position);
//
// void onTipsClick(OrderManagerResponse datasBean, int position);
void onCheckedChanged(OrderManagerResponse checkedOrder);
void onReloadExceptionStatus(OrderManagerResponse datasBean, String txnId);
......
......@@ -254,8 +254,8 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
}
@Nullable
public OrderManagerResponse getSelectedOrderItem(){
return mPresenter.getSelectedOrderItem();
public OrderManagerResponse getCheckedOrderBean(){
return mPresenter.getCheckedOrderBean();
}
public RefreshLayout getRefreshLayout() {
......
......@@ -32,11 +32,6 @@
android:fitsSystemWindows="true"/>
</LinearLayout>
<FrameLayout
android:id="@+id/rl_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<LinearLayout
android:id="@+id/ll_bottom"
android:layout_width="match_parent"
......@@ -53,7 +48,9 @@
android:background="@color/orange_400"
android:text="打印訂單"
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
android:id="@+id/btn_modify_order"
......@@ -64,7 +61,9 @@
android:text="修改訂單"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13"
android:visibility="visible" />
android:visibility="visible"
android:clickable="false"
android:enabled="false"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_order_status"
......@@ -87,7 +86,9 @@
android:text="取消訂單"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13"
android:visibility="visible" />
android:visibility="visible"
android:clickable="false"
android:enabled="false"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_refund"
......@@ -98,7 +99,9 @@
android:text="退款"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13"
android:visibility="gone"/>
android:visibility="gone"
android:clickable="false"
android:enabled="false"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_tips"
......@@ -109,7 +112,9 @@
android:text="貼士"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13"
android:visibility="gone"/>
android:visibility="gone"
android:clickable="false"
android:enabled="false"/>
</LinearLayout>
<FrameLayout
......
......@@ -7,8 +7,8 @@ ext {
targetSdkVersion : 29,
//正式版: 1.0.3 3
//內部測試版:1.2.0 20
versionCode : 20,
versionName : "1.2.0"
versionCode : 21,
versionName : "1.2.1"
]
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;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.RemoteException;
......@@ -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.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.oaId.DeviceID;
import com.gingersoft.gsa.cloud.common.utils.AidlUtil;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
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.crash.AppCrashHandler;
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.view.BitmapUtil;
import com.gingersoft.gsa.cloud.common.utils.xlog.MyBackupStrategy;
import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.component.ComponentName;
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.util.PrinterUtil;
import com.jess.arms.base.BaseApplication;
......@@ -62,10 +66,18 @@ import com.kingja.loadsir.core.LoadSir;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
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.util.Iterator;
import java.util.List;
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.AutoSizeConfig;
import me.jessyan.autosize.onAdaptListener;
......@@ -145,12 +157,15 @@ public class GsaCloudApplication extends BaseApplication {
initXLog();
//初始化crash記錄
AppCrashHandler.getInstance().init(this);
//初始化Rxjava相關
initRxjava();
uiStyleConfiguration = new UIStyleExtendedConfiguration();
functionConfiguration = new FunctionExtendedConfiguration();
//上傳餐廳擴展信息
ExpandInfoSetting.initUpdateExtendedConfiguration(uiStyleConfiguration, functionConfiguration);
LoganManager.w_action(TAG, TAG + ": onCreate end.....");
}
......@@ -196,13 +211,24 @@ public class GsaCloudApplication extends BaseApplication {
*/
private void initHywebCommandImpl() {
// if (AppDevices.isHywebPos()) {
CC.obtainBuilder(ComponentName.COMPONENT_LOGIN)
.setActionName(ComponentAction.Login.INIT_HYWEB_COMMAND_IMPL)
.build()
.call();
CC.obtainBuilder(ComponentName.COMPONENT_LOGIN)
.setActionName(ComponentAction.Login.INIT_HYWEB_COMMAND_IMPL)
.build()
.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() {
return mCurrentActivity;
}
......@@ -307,6 +333,94 @@ public class GsaCloudApplication extends BaseApplication {
//這個默認值的優先級<用戶在打印機列表中設置的默認打印機
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() {
......
package com.gingersoft.gsa.cloud.common.utils;
package com.gingersoft.gsa.cloud.common.printer;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.RemoteException;
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.view.ImageUtils;
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;
import com.elvishew.xlog.XLog;
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.ByteArrayOutputStream;
......@@ -62,6 +63,27 @@ public class FileUtils {
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 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 = ".";
//操作日志單最大文件大小
......
......@@ -95,7 +95,7 @@ public class OkHttp3Utils {
@Override
public void onFailure(Call call, IOException e) {
// emitter.onError(e);
emitter.onError(e);
emitter.onComplete();
call.cancel();
}
......
......@@ -13,6 +13,7 @@ import android.media.ExifInterface;
import android.net.Uri;
import android.util.Log;
import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
......@@ -21,6 +22,7 @@ import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
......@@ -33,6 +35,7 @@ import java.util.Map;
public class BitmapUtil {
/**
* 生成条码bitmap
*
......@@ -254,6 +257,7 @@ public class BitmapUtil {
/**
* 转换为圆形状的bitmap
*
* @param source
* @return
*/
......@@ -340,5 +344,34 @@ public class BitmapUtil {
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 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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:visibility="gone"
android:layout_marginTop="@dimen/dp_10"
......
......@@ -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";
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<>();
......@@ -335,14 +335,14 @@ public class ModifierDaoUtils {
switch (mode) {
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" +
" 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);
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" +
" 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_child1.addAll(mfs_child2);
......
......@@ -26,6 +26,7 @@ public class PosActionStatusExceptionParam implements Parcelable {
public PosActionStatusExceptionParam() {
}
@Override
public int describeContents() {
return 0;
......
......@@ -4,38 +4,43 @@ package com.gingersoft.gsa.cloud.pay.contract;
* @作者: bin
* @創建時間: 2020-12-28 10:40
* @更新時間: 2020-12-28 10:40
* @描述:
* @描述:支付方式類型
*/
public interface PayTypeContract {
public class PayTypeContract {
/**
* 支付方式
* 1:寶達通
* 8:支付寶
* 1001:現金
* 1021:Google Pay
* 1023:支付寶HK
*
*
* <p>
* 1030:N5卡片
* 1031:N5掃碼
* 1032:N5八達通
* 1033:N5美國運通
*/
int PAY_METHOD_ID_1 = 1;
int PAY_METHOD_ID_8 = 8;
int PAY_METHOD_ID_1001 = 1001;
public static final int PAY_METHOD_ID_1 = 1;
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;
int PAY_METHOD_ID_1033 = 1031;
public static final int PAY_METHOD_ID_1023 = 1023;
/**
* 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;
* 修订历史: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 IView mView;
protected PosAction mPosAction;
......@@ -73,11 +74,12 @@ public abstract class IPosAction <T extends HywebPosResponse>{
/**
* POS回調成功的方法
*
* @param context
* @param originalActivity
* @param response
*/
public void onPosSuccess(Context context, Activity originalActivity,T response) {
public void onPosSuccess(Context context, Activity originalActivity, T response) {
if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + mLoadingActionComplteText);
mStatusLoadingDialog.loadSuccess();
......@@ -91,8 +93,8 @@ public abstract class IPosAction <T extends HywebPosResponse>{
/**
* POS回調為null或狀態異常
*/
public void onPosException(Context context, Activity originalActivity,T response) {
String codeRequest = HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS());
public void onPosException(Context context, Activity originalActivity, T response) {
String codeRequest = HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS());
if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getCallbackExceptionText() + codeRequest);
mStatusLoadingDialog.loadFailure();
......@@ -107,7 +109,7 @@ public abstract class IPosAction <T extends HywebPosResponse>{
* POS調起失敗
*/
public void onPosInvalid(Context context, Activity originalActivity, T response) {
String codeRequest = HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS());
String codeRequest = HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS());
if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + codeRequest);
mStatusLoadingDialog.loadFailure();
......@@ -123,11 +125,11 @@ public abstract class IPosAction <T extends HywebPosResponse>{
*
* @param response
*/
public void onUpdateStatusSuccess(T response) {
if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS()));
mStatusLoadingDialog.cancel();
}
public void onUpdateStatusSuccess(T response) {
// if (mStatusLoadingDialog != null) {
// mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + HywebActionStatusCode.getHywebRequestTextByCode(response.getSTATUS()));
// mStatusLoadingDialog.cancel();
// }
if (mOnPosActionListener != null) {
mOnPosActionListener.onUpdateStatusSuccess(response);
}
......@@ -139,10 +141,10 @@ public abstract class IPosAction <T extends HywebPosResponse>{
* @param e
*/
public void onUpdateStatusError(Exception e) {
if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + e.getMessage());
mStatusLoadingDialog.cancel();
}
// if (mStatusLoadingDialog != null) {
// mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + e.getMessage());
// mStatusLoadingDialog.cancel();
// }
if (mOnPosActionListener != null) {
mOnPosActionListener.onUpdateStatusError(e);
}
......
......@@ -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 int retryCount;
/**
* 最多重试三次,显示联系开发人员提示
*/
private int retryCount = 3;
public static final String REFREAFSH_ORDER_EVENT = "refreafsh_order";
......@@ -195,6 +198,7 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
@Override
public void onUpdateStatusSuccess(HywebPosResponse response) {
EventBus.getDefault().post(true,REFREAFSH_ORDER_EVENT);
tvPosStatus.setText(mPosStatusExceptionParam.getPosAction().getActionName() + "成功");
loadService.showSuccess();
setPosActionStatus(response.getSTATUS());
......@@ -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})
public void onViewClicked(View view) {
int id = view.getId();
......@@ -262,12 +246,11 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
@Override
public void killMyself() {
_mActivity.onBackPressed();
onBackPressedSupport();
}
@Override
public boolean onBackPressedSupport() {
EventBus.getDefault().post(true,REFREAFSH_ORDER_EVENT);
return super.onBackPressedSupport();
}
}
......@@ -171,7 +171,7 @@ public class CommandImpl implements ICommand {
}
private HywebPosResponse returnErrorPosActionResponse(PosAction posAction,String errorStatus){
HywebPosResponse posResponse = null;
HywebPosResponse posResponse;
if(posAction == PosAction.SALE){
posResponse = new SaleRespose();
}else if(posAction == PosAction.VOID){
......@@ -186,6 +186,8 @@ public class CommandImpl implements ICommand {
posResponse = new RetrievalRespose();
}else if(posAction == PosAction.SETTLEMENT){
posResponse = new SettlementRespose();
}else{
posResponse = new HywebPosResponse();
}
if(posResponse != null) {
posResponse.setSTATUS(errorStatus);
......
......@@ -45,4 +45,8 @@ public class PrintPaymentStubImpl extends IPosAction {
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;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
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.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
......@@ -74,7 +75,6 @@ public class RefundActionImpl extends IPosAction<RefundRespose> {
mRefundRequest.setTXN_ID(mGetRefundIdResponse.getRefundId());
//調起N5退款
onPosToAction(GsonUtils.GsonString(mRefundRequest));
// canCelLoadingDialog();
} else {
onBeforeActionPosError(new Exception(error + PayExceptionCode.refund_901));
}
......@@ -138,7 +138,7 @@ public class RefundActionImpl extends IPosAction<RefundRespose> {
@Override
public void onNext(String result) {
displayRefundResult(context, response, originalActivity);
LoganManager.w_code(TAG, "RefundResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
......@@ -158,12 +158,13 @@ public class RefundActionImpl extends IPosAction<RefundRespose> {
@Override
public void onError(Throwable e) {
LoganManager.w_code(TAG, "RefundResponse onError :" + e.getMessage());
onUpdateStatusError(new Exception(e.getMessage()));
displayRefundResult(context, response, originalActivity);
}
@Override
public void onComplete() {
displayRefundResult(context, response, originalActivity);
}
});
}
......@@ -196,6 +197,8 @@ public class RefundActionImpl extends IPosAction<RefundRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "RefundRequest JSON :" + json);
return requestBody;
}
......
......@@ -7,8 +7,10 @@ import android.text.TextUtils;
import com.etps.aca.lib.constant.Constant;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
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.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.pos.IPosAction;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
......@@ -57,17 +59,17 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
@Override
public void onPosSuccess(Context context, Activity originalActivity, RetrievalRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS());
updateMatter(context, originalActivity, response, response.getSTATUS());
}
@Override
public void onPosException(Context context, Activity originalActivity, RetrievalRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS());
updateMatter(context, originalActivity, response, response.getSTATUS());
}
@Override
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> {
* @param response
* @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;
RequestBody requestBody;
switch (response.getTXN_TYPE()) {
case Constant.EVENT.NAME.SALE:
if (mRetrievalAction == PosAction.TIP) {
//查詢補消費狀態
//更新贴士狀態
url = "posPay/updatePosTip";
requestBody = getPosMatterTipsRequest(response);
} else if (mRetrievalAction == PosAction.VOID) {
//查詢取消狀態
//更新取消狀態
url = "posPay/updatePosCancel";
requestBody = getPosMatterVoidRequest(response);
} else {
//查詢支付狀態
url = "posPay/updatePosMatter";
//更新支付狀態
url = "orderPay/add";
requestBody = getPosMatterSaleRequest(response);
}
break;
......@@ -118,7 +120,7 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
//1、更新上傳狀態
OkHttp3Utils.post(HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL + url, requestBody)
.compose(RxSchedulerUtils._io_main_o())
.compose(RxLifecycleUtils.bindToLifecycle(mView))
// .compose(RxLifecycleUtils.bindToLifecycle(mView))
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
......@@ -127,7 +129,7 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
@Override
public void onNext(String result) {
displayRetrievalResult(context, response, originalActivity);
LoganManager.w_code(TAG, "RetrievalResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
......@@ -147,11 +149,12 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
@Override
public void onError(Throwable e) {
displayRetrievalResult(context, response, originalActivity);
LoganManager.w_code(TAG, "RetrievalResponse onError :" + e.getMessage());
}
@Override
public void onComplete() {
displayRetrievalResult(context, response, originalActivity);
}
});
}
......@@ -165,11 +168,11 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
*/
private void displayRetrievalResult(Context context, RetrievalRespose response, Activity originalActivity) {
if (HywebActionStatusCode.withSuccess(response.getSTATUS())) {
super.onPosSuccess(context,originalActivity,response);
} else if(HywebActionStatusCode.withException(response.getSTATUS())){
super.onPosException(context,originalActivity,response);
}else {
super.onPosInvalid(context,originalActivity,response);
super.onPosSuccess(context, originalActivity, response);
} else if (HywebActionStatusCode.withException(response.getSTATUS())) {
super.onPosException(context, originalActivity, response);
} else {
super.onPosInvalid(context, originalActivity, response);
}
}
......@@ -179,12 +182,19 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
posMatter.setOrderId(mOrderId);
posMatter.setPayId(response.getTXN_ID());
posMatter.setContent(GsonUtils.GsonString(response));
posMatter.setStatus(getPosMatterStatus(response.getSTATUS()));
// mMealOrderPayRequest.setPosMatter(posMatter);
if (response.getTXN_STATUS().equals(TransactionStatusCode.TXN_STATUS_A)) {
//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));
String json = GsonUtils.GsonString(posMatter);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(mealOrderPayRequest));
String json = GsonUtils.GsonString(mealOrderPayRequest);
LoganManager.w_code(TAG, "SaleRequest JSON :" + json);
return requestBody;
}
......@@ -197,6 +207,8 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "RefundRequest JSON :" + json);
return requestBody;
}
......@@ -213,6 +225,8 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
}
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "VoidRequest JSON :" + json);
return requestBody;
}
......@@ -226,6 +240,8 @@ public class RetrievalActionImpl extends IPosAction<RetrievalRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "TipRequest JSON :" + json);
return requestBody;
}
......
......@@ -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.constans.HttpsConstans;
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.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.component.ComponentAction;
......@@ -88,7 +89,7 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
@Override
protected void onPosActionBefore() {
mTxnIdRequest.setContent(mMealOrderPayRequest.toString());
mTxnIdRequest.setContent(GsonUtils.GsonString(mMealOrderPayRequest));
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(mTxnIdRequest));
String json = GsonUtils.GsonString(mTxnIdRequest);
......@@ -178,14 +179,14 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
@Override
public void onNext(String result) {
displayPaymentResult(context, response, originalActivity);
LoganManager.w_code(TAG, "SaleResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
if (baseResult != null) {
if (baseResult.isSuccess()) {
onUpdateStatusSuccess(response);
startPaymentDetailActivity(context, response);
// startPaymentDetailActivity(context, response);
} else {
onUpdateStatusError(new Exception(mPosAction.getCallbackExceptionText() + "[" + baseResult.getErrMsg() + "]"));
}
......@@ -199,19 +200,18 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
@Override
public void onError(Throwable e) {
displayPaymentResult(context, response, originalActivity);
startPaymentDetailActivity(context, response);
LoganManager.w_code(TAG, "SaleResponse onError :" + e.getMessage());
}
@Override
public void onComplete() {
displayPaymentResult(context, response, originalActivity);
}
});
}
/**
* 2、顯示支付結果
*
* @param context
* @param response
* @param originalActivity
......@@ -219,8 +219,10 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
private void displayPaymentResult(Context context, SaleRespose response, Activity originalActivity) {
if (HywebActionStatusCode.withSuccess(response.getSTATUS())) {
super.onPosSuccess(context,originalActivity,response);
startPaymentDetailActivity(context, response);
} else if(HywebActionStatusCode.withException(response.getSTATUS())){
super.onPosException(context,originalActivity,response);
startPaymentDetailActivity(context, response);
}else {
super.onPosInvalid(context,originalActivity,response);
}
......@@ -271,6 +273,8 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(mMealOrderPayRequest));
String json = GsonUtils.GsonString(mMealOrderPayRequest);
LoganManager.w_code(TAG, "SaleRequest JSON :" + json);
return requestBody;
}
......
......@@ -132,9 +132,6 @@ public class SettlementActionImpl extends IPosAction<SettlementRespose> {
@Override
public void onNext(String result) {
// displayTipsResult(context, response, originalActivity);
if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
if (baseResult != null) {
......@@ -154,11 +151,11 @@ public class SettlementActionImpl extends IPosAction<SettlementRespose> {
@Override
public void onError(Throwable e) {
// displayTipsResult(context, response, originalActivity);
}
@Override
public void onComplete() {
// displayTipsResult(context, response, originalActivity);
}
});
}
......
......@@ -6,6 +6,7 @@ import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
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.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
......@@ -145,7 +146,7 @@ public class TipsActionImpl extends IPosAction<AdjustTipRespose> {
@Override
public void onNext(String result) {
displayTipsResult(context, response, originalActivity);
LoganManager.w_code(TAG, "TipResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
......@@ -166,11 +167,12 @@ public class TipsActionImpl extends IPosAction<AdjustTipRespose> {
@Override
public void onError(Throwable e) {
displayTipsResult(context, response, originalActivity);
LoganManager.w_code(TAG, "TipResponse onError :" + e.getMessage());
}
@Override
public void onComplete() {
displayTipsResult(context, response, originalActivity);
}
});
}
......@@ -204,6 +206,8 @@ public class TipsActionImpl extends IPosAction<AdjustTipRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "TipRequest JSON :" + json);
return requestBody;
}
......
......@@ -6,6 +6,7 @@ import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
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.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
......@@ -101,22 +102,22 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
@Override
public void onPosSuccess(Context context, Activity originalActivity, VoidRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS());
updateMatter(context, originalActivity, response, response.getSTATUS());
}
@Override
public void onPosException(Context context, Activity originalActivity, VoidRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS());
updateMatter(context, originalActivity, response, response.getSTATUS());
}
@Override
public void onPosInvalid(Context context, Activity originalActivity, VoidRespose response) {
updateMatter(context,originalActivity,response,response.getSTATUS());
updateMatter(context, originalActivity, response, response.getSTATUS());
}
/**
* 取消回調成功
*
* <p>
* 1、更新上傳取消狀態
* 2、顯示取消結果
* 3、刷新當前頁面
......@@ -139,7 +140,7 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
@Override
public void onNext(String result) {
displayVoidResult(context, response, originalActivity);
LoganManager.w_code(TAG, "VoidResponse onNext :" + result);
if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
......@@ -159,11 +160,12 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
@Override
public void onError(Throwable e) {
displayVoidResult(context, response, originalActivity);
LoganManager.w_code(TAG, "VoidResponse onError :" + e.getMessage());
}
@Override
public void onComplete() {
displayVoidResult(context, response, originalActivity);
}
});
}
......@@ -177,11 +179,11 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
*/
private void displayVoidResult(Context context, VoidRespose response, Activity originalActivity) {
if (HywebActionStatusCode.withSuccess(response.getSTATUS())) {
super.onPosSuccess(context,originalActivity,response);
} else if(HywebActionStatusCode.withException(response.getSTATUS())){
super.onPosException(context,originalActivity,response);
}else {
super.onPosInvalid(context,originalActivity,response);
super.onPosSuccess(context, originalActivity, response);
} else if (HywebActionStatusCode.withException(response.getSTATUS())) {
super.onPosException(context, originalActivity, response);
} else {
super.onPosInvalid(context, originalActivity, response);
}
}
......@@ -196,6 +198,8 @@ public class VoidActionImpl extends IPosAction<VoidRespose> {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(posMatter));
String json = GsonUtils.GsonString(posMatter);
LoganManager.w_code(TAG, "VoidRequest JSON :" + json);
return requestBody;
}
}
......@@ -48,11 +48,12 @@ public class PayMethodUtils {
*/
public static int hasHywebPayMethod(List<PayMethod> payMethods) {
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++) {
PayMethod payMethod = payMethods.get(i);
if (payMethod.getPayType() == payTypes[0] || payMethod.getPayType() == payTypes[1]) {
return i;
for (int type: PayTypeContract.HYWEB_PAY_METHODS) {
if (payMethod.getPayType() == type) {
return i;
}
}
}
}
......@@ -60,9 +61,10 @@ public class PayMethodUtils {
}
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};
if (payMethod.getPayType() == payTypes[0] || payMethod.getPayType() == payTypes[1]) {
return true;
for (int type: PayTypeContract.HYWEB_PAY_METHODS) {
if (payMethod.getPayType() == type) {
return true;
}
}
return false;
}
......@@ -74,11 +76,12 @@ public class PayMethodUtils {
*/
public static PayMethod getHywebPayMethod(List<PayMethod> payMethods) {
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++) {
PayMethod payMethod = payMethods.get(i);
if (payMethod.getPayType() == payTypes[0] || payMethod.getPayType() == payTypes[1]) {
return payMethod;
for (int type: PayTypeContract.HYWEB_PAY_METHODS) {
if (payMethod.getPayType() == type) {
return payMethod;
}
}
}
}
......
......@@ -4,7 +4,7 @@ package com.gingersoft.gsa.cloud.print.bean;
* @author : bin
* @create date: 2020-11-06
* @update date: 2020-11-06
* @description:打印實體接口 所有打印實體類都實現這個接口
* @description:打印實體接口,所有打印實體類都實現這個接口
* */
public interface PrintContent {
......
......@@ -32,7 +32,7 @@ import lombok.Data;
* @author : bin
* @create date: 2020-12-01
* @update date: 2020-12-01
* @description:打印內容適配類,打印類只需要拿到自身需要的實體信息
* @description:打印內容適配類,打印類只需要關注自身需要的實體信息
*/
@Data
public class PrintContentAdapter implements AdaptationContent {
......
......@@ -197,7 +197,6 @@
android:layout_marginTop="@dimen/dp_10"
android:orientation="vertical" />
<TextView
android:id="@+id/tv_kitchen_print_table_number2"
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