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
}
......
......@@ -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;
......
......@@ -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);
}
}
}
......
......@@ -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 = [
......
......@@ -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