Commit 09fb6511 by Wyh

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	component-coldchain/src/main/java/com/gingersoft/coldchain_module/mvp/ui/activity/OrderDetailsActivity.java
parents 60d1a9cf 35f60e81
......@@ -372,10 +372,9 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
view.findViewById(R.id.layout_history_order).setOnClickListener(v1 -> {
CC.obtainBuilder(com.gingersoft.gsa.cloud.component.ComponentName.COMPONENT_DELIVERYPICK)
.setActionName("historyActivity")
.addParam(DeliveryPickConstans.ORDER_TYPE, 8)
.addParam(DeliveryPickConstans.ORDER_TYPE, "1")
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
});
.call();
pop.dismiss();
});
} else {
......
......@@ -5,10 +5,12 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.print.PrintManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
......@@ -69,6 +71,8 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
TextView mTvCreateTime;
@BindView(R2.id.tv_receiver)
TextView mTvReceiver;
@BindView(R2.id.rl_bill_num)
RelativeLayout rl_bill_num;
@BindView(R2.id.tv_bill_num)
TextView mTvOrderNum;
@BindView(R2.id.tv_receive_phone)
......@@ -233,10 +237,15 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
}
mTvOrderNo.setText(getResources().getString(R.string.order_no) + bean.getORDER_NO());
mTvCreateTime.setText(getResources().getString(R.string.create_order_time) + TimeUtils.parseTimeRepeat(bean.getCREATE_TIME(), TimeUtils.DEFAULT_DATE_FORMAT));
if(TextUtil.isNotEmptyOrNullOrUndefined(bean.getRECEIVER())) {
if (TextUtil.isNotEmptyOrNullOrUndefined(bean.getRECEIVER())) {
mTvReceiver.setText(bean.getRECEIVER());
}
mTvOrderNum.setText(bean.getTakeFoodCode());
if (!TextUtils.isEmpty(bean.getTakeFoodCode()) && !bean.getTakeFoodCode().equals("0")) {
rl_bill_num.setVisibility(View.VISIBLE);
mTvOrderNum.setText(bean.getTakeFoodCode());
} else {
rl_bill_num.setVisibility(View.GONE);
}
mTvReceiverPhone.setText(bean.getPHONE());
mTvReceiverTime.setText(TextUtil.isNotEmptyOrNullOrUndefined(bean.getTakeTime()) ? bean.getTakeTime() : bean.getSEND_TIME());
mTvReceiverAddress.setText(bean.getAddressDetail());
......
......@@ -137,6 +137,7 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_bill_num"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
......
......@@ -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,orderFrom: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)
// .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,orderFrom, 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, orderFrom:Int, pageIndex: String, pageSize: String) = orderPayService.getHistoryOrderList(restaurantId,startTime, endTime, param, status, orderType,orderFrom, 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("orderFrom") orderFrom: Int,@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,12 @@ 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 自取訂單
var orderFrom = 0 //訂單來源 8 冷鏈用
fun getHistoryOrderList(pageIndex: String, orderNum: String = "", startDate: String, endDate: String, status: String) {
launch({
......@@ -36,18 +38,24 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
} else {
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 (orderType.equals("1")) {
orderFrom = 8;
}
historyOrderRepository.getHistoryOrderList(RestaurantInfoManager.newInstance().getRestaurantId().toString(), status, startDate, endDate, pageIndex, "10", orderType, orderFrom, orderNumber, phone).apply {
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 +79,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 +92,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))
"自"
}
......@@ -78,15 +82,88 @@ class HistoryOrderAdapter(var stauts: String?, private val context: Context, var
if (stauts.equals("4")) {
//已完成訂單
holder.iv_end.setImageResource(R.drawable.ic_has_end)
setReasonViewVisvible(holder);
} else if (stauts.equals("6")) {
//已取消訂單
holder.iv_end.setImageResource(R.drawable.img_cancelled)
setOrderReason(holder, data.status, data.orderPayType, data.payType, data.reasonDesc);
}
} else {
holder.iv_end.setImageResource(R.drawable.ic_has_end)
}
}
private fun setReasonViewVisvible(holder: ViewHolder) {
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
holder.tv_address_text.visibility = View.GONE
holder.tv_address.visibility = View.GONE
}
private fun setOrderReason(holder: ViewHolder, refundStatus: Int, orderPayType: Int, payType: Int, reasonDesc: String) {
var refundReason = getRefundReasonByStatus(refundStatus, orderPayType, payType);
if (!TextUtils.isEmpty(refundReason)) {
if (refundStatus == 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(refundStatus: Int, orderPayType: Int, payType: Int): String {
when (refundStatus) {
5 -> {
return "退款完成"
}
else -> {
when (orderPayType) {
1 -> {
return "無"
}
else -> {
when (payType) {
PayTypeContract.PAY_METHOD_ID_1021 -> { //Google pay需要5-7天
return "退款中(預計5-7個工作日退回原賬戶)"
}
else -> {
return "退款中(預計1-3個工作日退回原賬戶)"
}
}
}
}
}
}
return "";
}
private fun getColor(color: Int): Int {
return ContextCompat.getColor(context, color)
}
......@@ -94,9 +171,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
......@@ -29,25 +29,29 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProvider(requireActivity().viewModelStore, InjectorUtil.getHistoryModelFactory())[HistoryOrderViewModel::class.java].apply {
historyData.observe(viewLifecycleOwner, Observer{ it ->
historyData.observe(viewLifecycleOwner, Observer { it ->
cancelDialogForLoading()
refresh_layout.finishRefresh()
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) { _, _, _ ->
var reasonDesc = it.reasonDesc
if (reasonDesc == null) {
reasonDesc = ""
}
OtherOrderUtils.showOrderDetailsDialog(context, it2, it.orderStatus, it.orderType,it.orderPayType,it.payType, it.status, reasonDesc, true) { _, _, _ ->
//重印
showLoading()
viewModel.printOrder(context, it) {
......@@ -66,15 +70,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 +109,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!!)
}
......
......@@ -6,6 +6,7 @@ import android.media.AudioAttributes
import android.media.AudioManager
import android.media.SoundPool
import android.os.Build
import android.text.TextUtils
import android.view.View
import android.widget.ImageView
import android.widget.TextView
......@@ -13,30 +14,40 @@ import androidx.core.content.ContextCompat
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.gingersoft.gsa.cloud.app.GsaCloudApplication
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil
import com.gingersoft.gsa.cloud.pay.contract.PayTypeContract
import com.gingersoft.gsa.cloud.ui.utils.DialogUtils
import com.gingersoft.gsa.delivery_pick_mode.R
import com.gingersoft.gsa.delivery_pick_mode.data.model.bean.BillBean
import com.gingersoft.gsa.delivery_pick_mode.databinding.LayoutOrderInfoDialogNewBinding
import com.gingersoft.gsa.delivery_pick_mode.ui.adapter.FoodListAdapter
import com.gingersoft.gsa.delivery_pick_mode.ui.adapter.HistoryOrderAdapter
import com.gingersoft.gsa.delivery_pick_mode.ui.adapter.PayBillAdapter
import com.jess.arms.utils.ArmsUtils
import java.lang.Double.parseDouble
object OtherOrderUtils {
fun showOrderDetailsDialog(context: Context, data: OrderDetails, orderStuats: Int, orderType: Int, isHistory: Boolean = false, listenter: ((view: View, data: OrderDetails.DataBean, dialog: Dialog) -> Unit)?) {
fun showOrderDetailsDialog(context: Context, data: OrderDetails, orderStuats: Int, orderType: Int,orderPayType :Int, payType: Int, refundStatus: Int, reasonDesc: String = "", isHistory: Boolean = false, listenter: ((view: View, data: OrderDetails.DataBean, dialog: Dialog) -> Unit)?) {
object : DialogUtils(context, R.layout.layout_order_info_dialog_new) {
override fun initLayout(hepler: ViewHepler, dialog: Dialog) {
if (data.data != null) {
val tvStatus = hepler.getView<TextView>(R.id.tv_order_state)
val ivOrderState = hepler.getView<ImageView>(R.id.iv_order_state)
var tv_receive_address_text = hepler.getView<TextView>(R.id.tv_receive_address_text)
var tv_receive_address = hepler.getView<TextView>(R.id.tv_receive_address)
var tv_cancel_reason_text = hepler.getView<TextView>(R.id.tv_cancel_reason_text)
var tv_cancel_reason = hepler.getView<TextView>(R.id.tv_cancel_reason)
var tv_refund_reason_text = hepler.getView<TextView>(R.id.tv_refund_reason_text)
var tv_refund_reason = hepler.getView<TextView>(R.id.tv_refund_reason)
val orderData = data.data!![0]
val layoutOrderInfoDialogBinding: LayoutOrderInfoDialogNewBinding = DataBindingUtil.bind(hepler.contentView)!!
var totalAmount = orderData.TOTAL_AMOUNT!!.toDouble()
orderData.couponList?.let {
for(coupon in it){
for (coupon in it) {
totalAmount = MoneyUtil.sub(totalAmount, coupon.discount_amount)
}
}
......@@ -92,6 +103,23 @@ object OtherOrderUtils {
cancelBtnContent = "取消訂單"
}
}
when (orderStuats) {
4 -> {
//已完成訂單
ivOrderState.setImageResource(R.drawable.ic_has_end)
tv_cancel_reason_text.visibility = View.GONE
tv_cancel_reason.visibility = View.GONE
tv_refund_reason_text.visibility = View.GONE
tv_refund_reason.visibility = View.GONE
tv_receive_address_text.visibility = View.GONE
tv_receive_address.visibility = View.GONE
}
6 -> {
//已取消訂單
ivOrderState.setImageResource(R.drawable.img_cancelled)
setOrderReason(hepler, orderStuats, refundStatus, orderPayType,payType, reasonDesc)
}
}
// val payName = StringBuffer()
// if (orderData.payMultiple != null) {
// for (payMethod in orderData.payMultiple!!) {
......@@ -179,7 +207,78 @@ object OtherOrderUtils {
}.setWidth((ArmsUtils.getScreenWidth(context) * 0.9).toInt())
.setHeight((ArmsUtils.getScreenHeidth(context) * 0.9).toInt())
.show()
}
private fun setOrderReason(holder: DialogUtils.ViewHepler, orderStatus: Int, refundStatus: Int, orderPayType: Int,payType: Int, reasonDesc: String) {
var tv_address_text = holder.getView<TextView>(R.id.tv_receive_address_text)
var tv_address = holder.getView<TextView>(R.id.tv_receive_address)
var tv_cancel_reason_text = holder.getView<TextView>(R.id.tv_cancel_reason_text)
var tv_cancel_reason = holder.getView<TextView>(R.id.tv_cancel_reason)
var tv_refund_reason_text = holder.getView<TextView>(R.id.tv_refund_reason_text)
var tv_refund_reason = holder.getView<TextView>(R.id.tv_refund_reason)
var refundReason = getRefundReasonByStatus(refundStatus, orderPayType,payType);
if (!TextUtils.isEmpty(refundReason)) {
if (refundStatus == 5) {
tv_refund_reason.setTextColor(getColor(R.color.green_400))
} else {
tv_refund_reason.setTextColor(getColor(R.color.red))
}
tv_refund_reason.setText(refundReason)
tv_refund_reason_text.setText("退款進度:")
tv_refund_reason_text.visibility = View.VISIBLE
tv_refund_reason.visibility = View.VISIBLE
tv_address_text.visibility = View.GONE
tv_address.visibility = View.GONE
} else {
tv_refund_reason_text.visibility = View.GONE
tv_refund_reason.visibility = View.GONE
tv_address_text.visibility = View.VISIBLE
tv_address.visibility = View.VISIBLE
}
if (reasonDesc != null) {
tv_cancel_reason.setText(reasonDesc)
tv_cancel_reason_text.setText("取消原因:")
tv_cancel_reason_text.visibility = View.VISIBLE
tv_cancel_reason.visibility = View.VISIBLE
} else {
tv_cancel_reason_text.visibility = View.GONE
tv_cancel_reason.visibility = View.GONE
}
}
/**
* 獲取退款說明
*/
private fun getRefundReasonByStatus(refundStatus: Int, orderPayType: Int,payType: Int): String {
when (refundStatus) {
5 -> {
return "退款完成"
}
else -> {
when (orderPayType) {
1 -> {
return "無"
}
else -> {
when (payType) {
PayTypeContract.PAY_METHOD_ID_1021 -> { //Google pay需要5-7天
return "退款中(預計5-7個工作日退回原賬戶)"
}
else -> {
return "退款中(預計1-3個工作日退回原賬戶)"
}
}
}
}
}
}
return "";
}
private fun getColor(color: Int): Int {
return ContextCompat.getColor(GsaCloudApplication.getAppContext(), color)
}
private var soundPool: SoundPool? = null
......
......@@ -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
......@@ -122,6 +122,14 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_total_amount_text" />
<ImageView
android:id="@+id/iv_order_state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_10"
app:layout_constraintRight_toRightOf="parent"
android:src="@drawable/ic_has_end"/>
<TextView
android:id="@+id/tv_take_food_code"
android:layout_width="wrap_content"
......@@ -394,13 +402,69 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_delivery_num_text" />
<TextView
android:id="@+id/tv_cancel_reason_text"
style="@style/otherOrderReceiving_title_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/other_order_info_dialog_content_marginLeft"
android:layout_marginTop="@dimen/dp_10"
android:visibility="gone"
android:text="取消原因: "
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_delivery_num_text" />
<TextView
android:id="@+id/tv_cancel_reason"
style="@style/otherOrderReceiving_information_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/other_order_info_dialog_content_marginRight"
android:gravity="left"
android:textColor="@color/red_600"
android:textSize="@dimen/sp_14"
android:text="商戶未確定"
android:visibility="gone"
app:layout_constraintTop_toTopOf="@+id/tv_cancel_reason_text"
app:layout_constraintLeft_toRightOf="@id/tv_cancel_reason_text"
app:layout_constraintRight_toRightOf="parent" />
<TextView
android:id="@+id/tv_refund_reason_text"
style="@style/otherOrderReceiving_title_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/other_order_info_dialog_content_marginLeft"
android:layout_marginTop="@dimen/dp_10"
android:text="退款進度: "
android:visibility="gone"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_cancel_reason_text" />
<TextView
android:id="@+id/tv_refund_reason"
style="@style/otherOrderReceiving_information_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/other_order_info_dialog_content_marginRight"
android:gravity="left"
android:layout_marginTop="@dimen/dp_5"
android:textColor="@color/green_400"
android:textSize="@dimen/sp_14"
android:text="退款完成"
android:visibility="gone"
app:layout_constraintTop_toTopOf="@+id/tv_refund_reason_text"
app:layout_constraintBottom_toBottomOf="@+id/tv_refund_reason_text"
app:layout_constraintLeft_toRightOf="@id/tv_refund_reason_text"
app:layout_constraintRight_toRightOf="parent" />
<View
android:id="@+id/line_info_bottom"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_10"
android:layout_marginTop="@dimen/dp_10"
android:background="@color/color_ef"
app:layout_constraintTop_toBottomOf="@id/tv_delivery_num" />
app:layout_constraintTop_toBottomOf="@id/tv_refund_reason_text" />
<TextView
android:id="@+id/tv_food_details_text"
......@@ -491,5 +555,4 @@
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
......@@ -32,6 +32,8 @@ import com.jess.arms.base.BaseActivity;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.StatusBarUtil;
import butterknife.BindView;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -84,8 +86,8 @@ public class DownloadActivity extends BaseActivity<DownloadPresenter> implements
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
setTransparent(this);
super.onCreate(savedInstanceState);
setTransparent(this);
}
@Override
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -12,12 +12,10 @@ import android.view.animation.DecelerateInterpolator;
import android.view.animation.ScaleAnimation;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.viewpager2.widget.ViewPager2;
import com.gingersoft.gsa.cloud.common.core.login.LoginBean;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.user.UserConstans;
......@@ -36,13 +34,12 @@ import com.gingersoft.gsa.cloud.login.mvp.ui.adapter.GuideAdapter;
import com.gingersoft.gsa.cloud.ui.widget.Indicator.UIndicator;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.util.QMUIStatusBarHelper;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......
......@@ -4,8 +4,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/theme_white_color"
android:fillViewport="true"
android:fitsSystemWindows="false"
android:orientation="vertical">
<LinearLayout
......@@ -185,7 +183,6 @@
app:layout_constraintTop_toBottomOf="@id/rb_auto_login"
app:layout_constraintTop_toTopOf="@id/rb_auto_login" />
</LinearLayout>
</LinearLayout>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
......
......@@ -9,7 +9,8 @@
android:screenOrientation="portrait" />
<activity
android:name=".mvp.ui.activity.NewMainActivity"
android:launchMode="singleTop" />
android:launchMode="singleTop"
android:screenOrientation="portrait"/>
<activity
android:name=".mvp.ui.activity.ExpandListActivity"
android:screenOrientation="portrait" />
......
......@@ -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{
}
}
......@@ -47,5 +47,9 @@ public interface SettlementReportContract {
Observable<SendSettlement> sendSettlement(RequestBody requestBody);
Observable<BaseResult> getSettlementReport(int restaurantId);
Observable<BaseResult> addHywebPosSettlementOperation();
Observable<BaseResult> updateHywebPosSettlementOperation(RequestBody requestBody);
}
}
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
......@@ -4,6 +4,7 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement;
import com.gingersoft.gsa.cloud.main.mvp.model.service.MainService;
import com.gingersoft.gsa.cloud.main.mvp.model.service.SettlementService;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
......@@ -60,4 +61,17 @@ public class SettlementReportModel extends BaseModel implements SettlementReport
return mRepositoryManager.obtainRetrofitService(SettlementService.class)
.getSettlementReport(restaurantId);
}
@Override
public Observable<BaseResult> addHywebPosSettlementOperation() {
return mRepositoryManager.obtainRetrofitService(SettlementService.class)
.addHywebPosSettlementOperation();
}
@Override
public Observable<BaseResult> updateHywebPosSettlementOperation(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(SettlementService.class)
.updateHywebPosSettlementOperation(requestBody);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import android.graphics.Bitmap;
import android.os.Parcel;
import android.os.Parcelable;
import com.gingersoft.gsa.cloud.common.core.table.TableManagerItem;
import com.qmuiteam.qmui.widget.section.QMUISection;
import lombok.Data;
/**
* @作者: bin
* @創建時間: 2021-01-25 15:10
* @更新時間: 2021-01-25 15:10
* @描述:
*/
@Data
public class OriginalKitchenPrjBean implements QMUISection.Model<OriginalKitchenPrjBean>{
private Bitmap bitmap;
@Override
public OriginalKitchenPrjBean cloneForDiff() {
return null;
}
@Override
public boolean isSameItem(OriginalKitchenPrjBean other) {
return false;
}
@Override
public boolean isSameContent(OriginalKitchenPrjBean other) {
return false;
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
import android.graphics.Bitmap;
import com.qmuiteam.qmui.widget.section.QMUISection;
import lombok.Data;
/**
* @作者: bin
* @創建時間: 2021-01-25 15:10
* @更新時間: 2021-01-25 15:10
* @描述:
*/
@Data
public class OriginalKitchenPrjDirectoryBean implements QMUISection.Model<OriginalKitchenPrjDirectoryBean>{
private String directoryName;
@Override
public OriginalKitchenPrjDirectoryBean cloneForDiff() {
return null;
}
@Override
public boolean isSameItem(OriginalKitchenPrjDirectoryBean other) {
return false;
}
@Override
public boolean isSameContent(OriginalKitchenPrjDirectoryBean other) {
return false;
}
}
......@@ -28,4 +28,10 @@ public interface SettlementService {
@GET("ricepon-report/api/restaurantOperation/report" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> getSettlementReport(@Query("restaurantId") int restaurantId);
@POST("posPay/addOperation" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> addHywebPosSettlementOperation();
@POST("posPay/updateOperation" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> updateHywebPosSettlementOperation(@Body RequestBody requestBody);
}
......@@ -23,7 +23,9 @@ import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.DeviceUtils;
import com.jess.arms.utils.RxLifecycleUtils;
import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.schedulers.Schedulers;
......@@ -163,7 +165,7 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
public void addSettlementOperation(int restaurantId) {
RequestBody requestBody = new FormBody.Builder()
.add("restaurantId",String.valueOf(restaurantId))
.add("restaurantId", String.valueOf(restaurantId))
.build();
mModel.addSettlementOperation()
.subscribeOn(Schedulers.io())
......@@ -182,19 +184,19 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
@Override
public void onPosSuccess(HywebPosResponse response) {
mRootView.showMessage("清機成功!");
updateSettlementOperation(restaurantId, GsonUtils.GsonString(response),1);
updateSettlementOperation(restaurantId, GsonUtils.GsonString(response), 1);
}
@Override
public void onPosException(Exception e) {
mRootView.showMessage("清機Exception :"+e.getMessage());
updateSettlementOperation(restaurantId, e.getMessage(),0);
mRootView.showMessage("清機Exception :" + e.getMessage());
updateSettlementOperation(restaurantId, e.getMessage(), 0);
}
@Override
public void onPosInvalid(String e) {
mRootView.showMessage(e);
updateSettlementOperation(restaurantId, e,2);
updateSettlementOperation(restaurantId, e, 2);
}
@Override
......@@ -214,16 +216,16 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showMessage("調起POS清機失敗: "+t.getMessage());
mRootView.showMessage("調起POS清機失敗: " + t.getMessage());
}
});
}
public void updateSettlementOperation(int restaurantId,String content,int status) {
public void updateSettlementOperation(int restaurantId, String content, int status) {
RequestBody requestBody = new FormBody.Builder()
.add("restaurantId",String.valueOf(restaurantId))
.add("content",content)
.add("status",String.valueOf(status))
.add("restaurantId", String.valueOf(restaurantId))
.add("content", content)
.add("status", String.valueOf(status))
.build();
mModel.updateSettlementOperation(requestBody)
.subscribeOn(Schedulers.io())
......@@ -238,7 +240,7 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
mRootView.showMessage("更新清機狀態成功");
}else {
} else {
mRootView.showMessage("更新清機狀態無效");
}
}
......@@ -246,12 +248,12 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showMessage("更新清機狀態失敗: "+t.getMessage());
mRootView.showMessage("更新清機狀態失敗: " + t.getMessage());
}
});
}
public void clearHeartbeat(){
public void clearHeartbeat() {
RequestBody requestBody = new FormBody.Builder()
.add("restaurantId", RestaurantInfoManager.newInstance().getRestaurantId() + "")
.build();
......@@ -272,25 +274,25 @@ public class NewMainPresenter extends BasePresenter<NewMainContract.Model, NewMa
}
public void updateAPK(int type, String downApkURL) {
if(type == 4 || type == 5){
if(type == 4){
if (type == 4 || type == 5) {
if (type == 4) {
try {
DeviceUtils.launchAppDetail(IActivity, mApplication.getPackageName(), "com.android.vending");
} catch (Exception e) {
//跳转goole play下载app
CC.obtainBuilder(ComponentName.COMPONENT_WEBVIEW)
.setActionName("openWebActivity")
.addParam(WebviewHelper.TYPE_KEY,downApkURL)
.addParam(WebviewHelper.URL_KEY,WebviewHelper.RIGHT_TYPE_REFRESH)
.addParam(WebviewHelper.RIGHT_IMG_TYPE,WebviewHelper.RIGHT_TYPE_REFRESH)
.addParam(WebviewHelper.TYPE_KEY, downApkURL)
.addParam(WebviewHelper.URL_KEY, WebviewHelper.RIGHT_TYPE_REFRESH)
.addParam(WebviewHelper.RIGHT_IMG_TYPE, WebviewHelper.RIGHT_TYPE_REFRESH)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
});
}
}else{
} else {
try {
DeviceUtils.launchAppDetail(IActivity,mApplication.getPackageName(), "com.android.vending");
DeviceUtils.launchAppDetail(IActivity, mApplication.getPackageName(), "com.android.vending");
} catch (Exception e) {
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
......
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;
}
}
......@@ -5,8 +5,12 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementContract;
import com.gingersoft.gsa.cloud.common.core.settlement.SettlementReport;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -20,6 +24,8 @@ import io.reactivex.annotations.NonNull;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import okhttp3.FormBody;
import okhttp3.RequestBody;
/**
......@@ -45,6 +51,9 @@ public class SettlementPresenter extends BasePresenter<SettlementContract.Model,
@Inject
AppManager mAppManager;
@Inject
public SettlementPresenter(SettlementContract.Model model, SettlementContract.View rootView) {
super(model, rootView);
......@@ -59,7 +68,7 @@ public class SettlementPresenter extends BasePresenter<SettlementContract.Model,
this.mApplication = null;
}
public void getSettlementReport() {
public void getSettlementReport(int settlementType) {
int restaurantId = RestaurantInfoManager.newInstance().getRestaurantId();
mModel.getSettlementReport(restaurantId)
.subscribeOn(Schedulers.io())
......@@ -85,4 +94,5 @@ public class SettlementPresenter extends BasePresenter<SettlementContract.Model,
}
});
}
}
......@@ -7,12 +7,16 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.settlement.SettlementReport;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.contract.SettlementReportContract;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SendSettlement;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.SettlementReportActivity;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.SettlementReportItem5Adapter;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.SettlementReportItemAdapter;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem3;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem5;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
......@@ -209,7 +213,97 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon
});
}
public void getSettlementReport() {
public void addSettlementOperation(int restaurantId) {
RequestBody requestBody = new FormBody.Builder()
.add("restaurantId", String.valueOf(restaurantId))
.build();
mModel.addHywebPosSettlementOperation()
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("調起POS清機中..."))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
if (info.getData() != null) {
PosPay.settlement(IActivity, mRootView, new OnPosActionListener() {
@Override
public void onPosSuccess(HywebPosResponse response) {
mRootView.showMessage("清機成功!");
updateSettlementOperation(restaurantId, GsonUtils.GsonString(response), 1);
}
@Override
public void onPosException(Exception e) {
mRootView.showMessage("清機Exception :" + e.getMessage());
updateSettlementOperation(restaurantId, e.getMessage(), 0);
}
@Override
public void onPosInvalid(String e) {
mRootView.showMessage(e);
updateSettlementOperation(restaurantId, e, 2);
}
@Override
public void onUpdateStatusSuccess(HywebPosResponse response) {
}
@Override
public void onUpdateStatusError(Throwable e) {
}
});
}
} else {
mRootView.showMessage("調起POS清機失敗");
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showMessage("調起POS清機失敗: " + t.getMessage());
}
});
}
public void updateSettlementOperation(int restaurantId, String content, int status) {
RequestBody requestBody = new FormBody.Builder()
.add("restaurantId", String.valueOf(restaurantId))
.add("content", content)
.add("status", String.valueOf(status))
.build();
mModel.updateHywebPosSettlementOperation(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
mRootView.showMessage("更新清機狀態成功");
} else {
mRootView.showMessage("更新清機狀態無效");
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showMessage("更新清機狀態失敗: " + t.getMessage());
}
});
}
public void getSettlementReport(int settlementType) {
int restaurantId = RestaurantInfoManager.newInstance().getRestaurantId();
mModel.getSettlementReport(restaurantId)
.subscribeOn(Schedulers.io())
......
......@@ -24,6 +24,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.constans.AppConstans;
import com.gingersoft.gsa.cloud.common.constans.ResultConstans;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
......@@ -34,7 +35,9 @@ import com.gingersoft.gsa.cloud.common.function.FunctionManager;
import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpBean;
import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpStrategy;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.StytemUtils;
import com.gingersoft.gsa.cloud.common.utils.encryption.Aes;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
......@@ -201,19 +204,20 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
} else {
tv_version_name.setText("v_" + DeviceUtils.getVersionName(this));
}
//開啟Prj打印服務
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("openPrintService")
.build()
.call();
boolean prjServiceRunning = StytemUtils.isServiceRunning("com.joe.print.mvp.print.service.PrjService", this);
if (!prjServiceRunning) {
//開啟Prj打印服務
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("openPrintService")
.build()
.call();
}
}
@Override
protected void onRestart() {
super.onRestart();
String restaurantName = RestaurantInfoManager.newInstance().getRestaurantName();
tvStoreName.setText(restaurantName);
tvRestaurantName.setText(restaurantName);
updateTitleInfo();
}
/**
......@@ -226,16 +230,18 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
if (BuildConfig.DEBUG) {
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "複製Token"));
// mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌"));
// mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "廚房單原圖"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_mall_center, "商城中心"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_about_us, "關於我們"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_password, "修改密碼"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "設置"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "上傳日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "切換環境"));
}
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "上傳日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "清機"));
if (BuildConfig.DEBUG) {
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "切換環境"));
if (AppDevices.isHywebPos()) {
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "N5清機"));
}
MainSideMenuAdapter adapter = new MainSideMenuAdapter(mainSideMenuBeans);
mRvSideMenu.setAdapter(adapter);
......@@ -261,15 +267,27 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
cm.setPrimaryClip(label);
ToastUtils.show(mContext, "已複製");
break;
case "清機":
launchActivity(new Intent(mContext, SettlementActivity.class));
break;
case "清機": {
Intent intent = new Intent(this, SettlementActivity.class);
intent.putExtra(SettlementActivity.SETTLEMENT_TYPE_TAG, SettlementActivity.SETTLEMENT_TYPE_NOMAL);
startActivity(intent);
}
break;
case "N5清機": {
Intent intent = new Intent(this, SettlementActivity.class);
intent.putExtra(SettlementActivity.SETTLEMENT_TYPE_TAG, SettlementActivity.SETTLEMENT_TYPE_HYWEB_POS);
startActivity(intent);
}
break;
case "查看日誌":
launchActivity(new Intent(mContext, LookLogActivity.class));
break;
case "上傳日誌":
LoganManager.uploadLog(mContext, true);
break;
case "廚房單原圖":
break;
}
});
}
......@@ -289,7 +307,6 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
}
List<Function> managerFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager");
managerFuncations.add(new Function(172, 163, 5, "N5清機", R.drawable.ic_expand_list, 0));
managerFuncations.add(new Function(171, 163, 5, "配置列表", R.drawable.ic_expand_list, 0));
// managerFuncations.add(new Function(171, 163, 5, "廚房打印查詢", R.drawable.ic_kitchen_print_query, 0));
// managerFuncations.add(new Function(171, 163, 5, "餐牌管理", R.drawable.ic_food_menu_manger, 0));
......@@ -372,9 +389,6 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
private void functionClick(String name, int status) {
switch (name) {
case "N5清機":
mPresenter.addSettlementOperation(RestaurantInfoManager.newInstance().getRestaurantId());
break;
case "餐檯模式":
CC.obtainBuilder(ComponentName.COMPONENT_TABLE)
.setActionName("showTableActivity")
......
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.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.di.component.DaggerOriginalPrintPaperComponent;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.OriginalKitchenPrjBean;
import com.gingersoft.gsa.cloud.main.mvp.ui.adapter.OriginalKitchenPrjSectiontAdapter;
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;
private OriginalKitchenPrjSectiontAdapter mKitchenPrjSectiontAdapter;
@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();
initSectionData();
}
@Override
public void initIntent() {
}
private void initStickyLayout() {
mSectionLayout.setLayoutManager(createLayoutManager());
mKitchenPrjSectiontAdapter = new OriginalKitchenPrjSectiontAdapter();
mKitchenPrjSectiontAdapter.setCallback(new QMUIStickySectionAdapter.Callback<SectionHeader, OriginalKitchenPrjBean>() {
@Override
public void loadMore(QMUISection<SectionHeader, OriginalKitchenPrjBean> section, boolean loadMoreBefore) {
}
@Override
public void onItemClick(QMUIStickySectionAdapter.ViewHolder holder, int position) {
}
@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(mContext, 10);
outRect.set(margin, margin, margin, margin);
} else {
outRect.set(5, 5, 5, 5);
}
}
});
RecyItemTouchHelperCallback itemTouchHelperCallback = new RecyItemTouchHelperCallback(mKitchenPrjSectiontAdapter);
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(mKitchenPrjSectiontAdapter, 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 mKitchenPrjSectiontAdapter.getItemIndex(i) < 0 ? layoutManager.getSpanCount() : 1;
}
});
return layoutManager;
}
private void initSectionData() {
}
@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();
}
}
......@@ -51,6 +51,11 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
private SettlementReport mSettlementReportBean;
private int mSettlementType;
public static final String SETTLEMENT_TYPE_TAG = "settlement_type";
public static final int SETTLEMENT_TYPE_NOMAL = 1;
public static final int SETTLEMENT_TYPE_HYWEB_POS = 2;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerSettlementComponent //如找不到该类,请编译一下项目
......@@ -69,12 +74,13 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
@Override
public void initData(@Nullable Bundle savedInstanceState) {
// tv_settlement_time.setVisibility(View.GONE);
mPresenter.getSettlementReport();
mPresenter.getSettlementReport(mSettlementType);
}
@Override
public void initIntent() {
Intent intent = getIntent();
mSettlementType = intent.getIntExtra(SETTLEMENT_TYPE_TAG, SETTLEMENT_TYPE_NOMAL);
}
@Override
......@@ -85,7 +91,6 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
@Override
public void onClick(View v) {
killMyself();
// overridePendingTransition(R.anim.slide_still, R.anim.slide_out_right);
}
});
mTopBar.setTitle(LanguageUtils.get_language_system(this, "funcSelect.settlement", "清機")).setTextColor(ArmsUtils.getColor(this, R.color.theme_white_color));
......@@ -96,6 +101,7 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
if (v.getId() == R.id.btn_settlement_report) {
Intent intent = new Intent(this, SettlementReportActivity.class);
intent.putExtra("settlementReportBean", mSettlementReportBean);
intent.putExtra(SETTLEMENT_TYPE_TAG, mSettlementType);
launchActivity(intent);
mSettlementReportBean = null;
}
......@@ -137,9 +143,9 @@ public class SettlementActivity extends BaseActivity<SettlementPresenter> implem
@Override
public void returnSettlementData(SettlementReport datasBean) {
this.mSettlementReportBean = datasBean;
if(mSettlementReportBean.getRestaurantOperation() != null) {
if (mSettlementReportBean.getRestaurantOperation() != null) {
String lastSettlementText = LanguageUtils.get_language_system(this, "", "上次清機時間:");
setLastTime(lastSettlementText + TimeUtils.getStringByFormat(mSettlementReportBean.getRestaurantOperation().getOperationTime(), TimeUtils.DEFAULT_DATE_FORMAT) );
setLastTime(lastSettlementText + TimeUtils.getStringByFormat(mSettlementReportBean.getRestaurantOperation().getOperationTime(), TimeUtils.DEFAULT_DATE_FORMAT));
}
}
......
......@@ -124,6 +124,8 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
private int type;
private SettlementReport mSettlementReport;
private SettlementReport mSettlementReportBean;
private int mSettlementType;
/**
* 1#全部計入到10號清機數據
* 2#全部計入到12號清機數據
......@@ -158,28 +160,28 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
public void initData(@Nullable Bundle savedInstanceState) {
// tv_last_time.setVisibility(View.GONE);
scrollView.post(() -> scrollView.fullScroll(ScrollView.FOCUS_UP));
}
@Override
public void initIntent() {
Intent intent = getIntent();
SettlementReport settlementReportBean = intent.getParcelableExtra("settlementReportBean");
df = new DecimalFormat(dfformat);
if (settlementReportBean != null) {
if (mSettlementReportBean != null) {
mPresenter.initAdapter();
returnSettlementData(settlementReportBean);
returnSettlementData(mSettlementReportBean);
} else {
mPresenter.initAdapter();
mPresenter.getSettlementReport();
mPresenter.getSettlementReport(mSettlementType);
}
}
@Override
public void initIntent() {
Intent intent = getIntent();
mSettlementType = intent.getIntExtra(SettlementActivity.SETTLEMENT_TYPE_TAG, SettlementActivity.SETTLEMENT_TYPE_NOMAL);
mSettlementReportBean = intent.getParcelableExtra("settlementReportBean");
}
@Override
public void initTopBar() {
mTopBar.setBackgroundColor(ContextCompat.getColor(this, R.color.theme_color));
mTopBar.addLeftBackImageButton().setOnClickListener(v -> {
killMyself();
// overridePendingTransition(R.anim.slide_still, R.anim.slide_out_right);
});
rightBtn = mTopBar.addRightTextButton("打印", R.id.tv_right);
rightBtn.setTextColor(ArmsUtils.getColor(this, R.color.theme_white_color));
......
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.utils.StringUtils;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.OriginalKitchenPrjBean;
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 OriginalKitchenPrjSectiontAdapter extends QMUIDefaultStickySectionAdapter<SectionHeader, OriginalKitchenPrjBean> {
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.main_item_original_kitchen, 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, OriginalKitchenPrjBean> 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, OriginalKitchenPrjBean> section, int itemIndex) {
super.onBindSectionItem(holder, position, section, itemIndex);
ViewHolder viewHolder = (ViewHolder) holder;
}
public class ViewHolder extends QMUIStickySectionAdapter.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}
<?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
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/iv_kitchen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:scaleType="fitXY">
</ImageView>
......@@ -324,6 +324,7 @@ public class TableManageActivity extends BaseFragmentActivity<TableManagePresent
}
}
public List<TableArea> getTableAreaList() {
return mTableAreaList;
}
......
......@@ -230,15 +230,19 @@ public class AddAreaFragment extends BaseFragment<AddAreaPresenter> implements A
@Override
public void killMyself() {
_mActivity.onBackPressed();
_mActivity.onBackPressedSupport();
}
@Override
public boolean onBackPressedSupport() {
return super.onBackPressedSupport();
}
public AreaRequest.Add createAddAreaRequest() {
int restaurantId = RestaurantInfoManager.newInstance().getRestaurantId();
AreaRequest.Add areaRequest = new AreaRequest.Add();
areaRequest.setRestaurantId(restaurantId);
areaRequest.setRegionName(ed_area_name.getText().toString());
areaRequest.setRegionName(ed_area_name.getText().toString().trim());
areaRequest.setSort(Integer.parseInt(ed_area_sort.getText().toString()));
return areaRequest;
}
......@@ -246,7 +250,7 @@ public class AddAreaFragment extends BaseFragment<AddAreaPresenter> implements A
public AreaRequest.Update createUpateAreaRequest(int id) {
AreaRequest.Update areaRequest = new AreaRequest.Update();
areaRequest.setId(id);
areaRequest.setRegionName(ed_area_name.getText().toString());
areaRequest.setRegionName(ed_area_name.getText().toString().trim());
areaRequest.setSort(Integer.parseInt(ed_area_sort.getText().toString()));
return areaRequest;
}
......
......@@ -425,14 +425,19 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
@Override
public void killMyself() {
_mActivity.onBackPressed();
_mActivity.onBackPressedSupport();
}
@Override
public boolean onBackPressedSupport() {
return super.onBackPressedSupport();
}
public TableRequest.Add createAddTableRequest() {
TableRequest.Add addTableRequest = new TableRequest.Add();
addTableRequest.setRegionId(currentAreaId);
addTableRequest.setRestaurantId(RestaurantInfoManager.newInstance().getRestaurantId());
addTableRequest.setTableName(tableNameEditText.getText().toString());
addTableRequest.setTableName(tableNameEditText.getText().toString().trim());
if (!TextUtils.isEmpty(serverchargeEditText.getText().toString())) {
addTableRequest.setServiceCharge(Double.parseDouble(serverchargeEditText.getText().toString()));
}
......@@ -454,7 +459,7 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
update.setId(id);
update.setRegionId(currentAreaId);
update.setRestaurantId(RestaurantInfoManager.newInstance().getRestaurantId());
update.setTableName(tableNameEditText.getText().toString());
update.setTableName(tableNameEditText.getText().toString().trim());
if (!TextUtils.isEmpty(serverchargeEditText.getText().toString())) {
update.setServiceCharge(Double.parseDouble(serverchargeEditText.getText().toString()));
}
......
......@@ -122,12 +122,6 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
.inject(this);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_area_list, container, false);
......@@ -388,7 +382,7 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
@Override
public void killMyself() {
_mActivity.onBackPressed();
_mActivity.onBackPressedSupport();
}
private View.OnClickListener onRetryClickListener = new View.OnClickListener() {
......
......@@ -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)
......
......@@ -208,7 +208,7 @@ public class PrintBill extends PrinterRoot<PrintBillContent> {
layout.addView(getLine(mContext));
//食品信息
layout.addView(getDiningFoodList(mContext, mPrintBillContent.getFoodItemList(), deviceBean, 1, true));
layout.addView(getDiningFoodList(mContext, mPrintBillContent.getFoodItemList(), deviceBean, 1, true));
layout.addView(getHalfLine(mContext));
//訂單金額信息
......
......@@ -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;
......
package com.joe.print.mvp.print.service;
import android.app.IntentService;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
......@@ -7,11 +8,11 @@ import android.graphics.Bitmap;
import android.os.Build;
import android.os.IBinder;
import android.os.RemoteException;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.Nullable;
import com.elvishew.xlog.XLog;
import com.epson.epos2.Epos2Exception;
import com.epson.epos2.printer.Printer;
import com.epson.epos2.printer.PrinterStatusInfo;
......@@ -21,24 +22,30 @@ import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.user.UserContext;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.AidlUtil;
import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrintPaperPlugins;
import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil;
import com.gingersoft.gsa.cloud.database.bean.PrintCurrencyBean;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.database.utils.PrinterDeviceDaoUtils;
import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.PrinterWriter58mm;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.PrjBean;
import com.gingersoft.gsa.cloud.print.bean.UpdateBean;
import com.hyweb.n5.lib.constant.PrinterConstant;
import com.hyweb.n5.lib.util.PrinterUtil;
import com.hyweb.n5.server.aidl.IOnPrintCallback;
import com.jess.arms.utils.RxLifecycleUtils;
import com.joe.print.mvp.print.PrintPrjKitchen;
import com.joe.print.mvp.print.PrinterRoot;
import com.joe.print.mvp.print.common.PrinterFinderCallback;
......@@ -50,11 +57,14 @@ import com.joe.print.mvp.print.usb.UsbPrinter;
import com.joe.print.mvp.print.usb.UsbPrinterFinder;
import com.joe.print.mvp.print.utils.MyPrintUtils;
import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
......@@ -69,6 +79,7 @@ import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream;
......@@ -97,6 +108,7 @@ public class PrjService extends Service implements ReceiveListener {
private Context mContext;
private String TAG = "Prj";
@Override
public void onCreate() {
super.onCreate();
......@@ -108,6 +120,7 @@ public class PrjService extends Service implements ReceiveListener {
public int onStartCommand(Intent intent, int flags, int startId) {
mContext = this;
ThreadPoolManager.getInstence().putExecutableTasks(() -> {
LoganManager.w_printer(TAG, "currentThreadName: " + Thread.currentThread().getName());
LoganManager.w_printer(TAG, "開始請求 PRJ 數據");
getPrintList();
//開始請求
......@@ -202,15 +215,16 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public void onSubscribe(Disposable d) {
LoganManager.w_printer(TAG, "RxCurrentThreadName: " + Thread.currentThread().getName());
LoganManager.w_printer(TAG, "getPrjInfo onSubscribe");
}
@Override
public void onNext(String s) {
LoganManager.w_printer(TAG, "getPrjInfo onNext: " + s);
public void onNext(String prjInfo) {
LoganManager.w_printer(TAG, "getPrjInfo onNext: " + prjInfo);
//請求到數據,停止輪詢,開始打印,在打印完之後再重新開始輪詢
// startPrint(s);
newPrint(s);
newPrint(prjInfo);
//開啟另一個定時,三十秒之後自動請求,避免上面的打印成功或失敗時沒有回調。
cancel(wakeDisposable);
Observable.timer(30, TimeUnit.SECONDS)
......@@ -390,10 +404,6 @@ public class PrjService extends Service implements ReceiveListener {
e.printStackTrace();
LoganManager.w_printer(TAG, "newPrint JSONException: " + e.getMessage());
}
if (listMap.size() <= 0) {
LoganManager.w_printer(TAG, "newPrint listMap.size()<=0");
return;
}
setPrjIndex(listMap, totalPrj);
initPrinterDevices();
foreachPrint(listMap);
......@@ -520,6 +530,12 @@ public class PrjService extends Service implements ReceiveListener {
LoganManager.w_printer(TAG, "generatePrintData PrinterDeviceBean deviceType: " + printerDeviceBean.getPrinterDeviceType()
+ " ip: " + printerDeviceBean.getIp());
int orderType = 1;
if (beans.size() > 0) {
orderType = beans.get(0).getOrderType();
}
PrintPaperPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(orderType, GsonUtils.GsonString(beans), GsonUtils.GsonString(printerDeviceBean));
if (isPinPrinter(printerDeviceBean) && printerDeviceBean.getPrinterDeviceType() == PRINT_IP) {
//針式打印機並且打印機類型為IP打印,生成獨特的格式
List<Map<String, Bitmap>> bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean);
......@@ -910,9 +926,28 @@ public class PrjService extends Service implements ReceiveListener {
stringBuffer.append(noCutData.getId());
stringBuffer.append(",");
}
map.put(stringBuffer.toString(), printPrjKitchen.getKitChenPrintBitmap(mContext, key, noCut, printerDeviceBean));
Bitmap prjBitmap = printPrjKitchen.getKitChenPrintBitmap(mContext, key, noCut, printerDeviceBean);
map.put(stringBuffer.toString(), prjBitmap);
bitmapMaps.add(map);
}
if (bitmapMaps.size() > 0) {
String prjName = String.valueOf(System.currentTimeMillis());
int orderType = 1;
if (beans.size() > 0) {
PrjBean.DataBean.Bean prjBean = beans.get(0);
if (prjBean != null) {
if (!TextUtils.isEmpty(prjBean.getBillNo())) {
prjName = prjBean.getBillNo();
} else {
prjName = prjBean.getOrderNo();
}
orderType = prjBean.getOrderType();
}
}
PrintPaperPlugins.getOnPrinterFlowHandler().onPrinterBitmapBefore(orderType, prjName, bitmapMaps);
}
return bitmapMaps;
}
......
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.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
......@@ -14,6 +16,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 +30,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 +46,8 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
@Override
public void destroy() {
mActivity = null;
mRootView = null;
}
private void showCancelDialog(OrderManagerResponse datasBean) {
......@@ -52,10 +57,10 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
dialogBuilder.setMessage("是否取消訂單?");
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
dialog.dismiss();
if (datasBean.withHywebPay()) {
if (datasBean.withHywebPay() && AppDevices.isHywebPos()) {
hywebOrderCancle(datasBean);
} else {
if(cancelListener != null){
if (cancelListener != null) {
cancelListener.cancel(datasBean.getId());
}
}
......@@ -79,7 +84,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 +92,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 +102,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 +135,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;
......@@ -227,7 +228,6 @@ public class OrderManagerResponse implements Serializable {
}
}
public boolean withHywebPay() {
if (!TextUtils.isEmpty(payTxnId) || !TextUtils.isEmpty(cancelTxnId) || !TextUtils.isEmpty(refundTxnId)) {
return true;
......@@ -277,8 +277,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(){
......
......@@ -259,9 +259,9 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
* 1、更新食品折扣
* 2、更新合計
* 3、更新食品折扣
* 4、更新服務費項
* 4、更新服務費項{@link ServiceChargeItem}
* 5、更新賬單折扣項{@link NomalDiscount}
* 6、更新賬單小數項
* 6、更新賬單小數項{@link RoundingItem}
* 7、總金額
*/
public void updateBillInfo(UpdateBillInfoEndListener updateBillInfoEndListener) {
......@@ -436,7 +436,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
* @param cla
* @return
*/
private BillItem findBillItemByClass(Class<?> cla) {
public BillItem findBillItemByClass(Class<?> cla) {
BillItem billItem = null;
for (BillItem item : mBillItemList) {
if (item.getClass().equals(cla)) {
......@@ -1134,7 +1134,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
orderItem.setDiscountList(discountList);
}
}
orderItem.setLunchboxPrice(0);
// orderItem.setLunchboxPrice(0);
orderItem.setPointsAdd(item.getPointsAdd());
orderItem.setPointsRedeem(item.getPointsRedeem());
......
......@@ -150,7 +150,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
if(mNomalDiscountAction != null){
if (mNomalDiscountAction != null) {
mNomalDiscountAction.destroy();
}
stopTablePolling();
......@@ -249,7 +249,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override
public void onItemDeleteClick(BillItem datasBean, int position) {
removeBillItem(position);
removeBillItemByPosition(position);
}
});
}
......@@ -385,7 +385,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mergeMainFoodNumber(mOrderMealList);
}
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(),mTableInfo);
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(), mTableInfo);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
......@@ -432,7 +432,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
mergeMainFoodNumber(mOrderMealList);
}
PrintContent printContent = new PrintContentAdapter().adaptationPrintSlipContent(DoshokuOrder.getInstance(),mTableInfo);
PrintContent printContent = new PrintContentAdapter().adaptationPrintSlipContent(DoshokuOrder.getInstance(), mTableInfo);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SLIP)//印單
......@@ -810,15 +810,18 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
private void updateOrderDetails(BaseOrderResponse info) {
if (mDoshokuOrder != null && info.getData() != null) {
if (info.getData().getOrderDetails() != null) {
mTableInfo.setPerson(info.getData().getPerson());
mTableInfo.setCreateTime(info.getData().getCreateTime());
mDoshokuOrder.setOpenTableInfo(mTableInfo);
mDoshokuOrder.setOrderPlaced(info.getData());
mTableInfo.setPerson(info.getData().getPerson());
//緩存訂單信息
mDoshokuOrder.setOrderPlaced(new OrderResponse(info.getData()));
//緩存食品信息
// List<OrderDetail> orderDetailList = OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails());
if (info.getData().getOrderDetails() != null) {
//组装食品信息
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails()));
mDoshokuOrder.setNewFoodList(orderDetailList);
mOrderMealList.clear();
mOrderMealList.addAll(orderDetailList);
mSelectMealAdapter.notifyDataSetChanged();
......@@ -874,8 +877,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
return true;
}
public void removeBillItem(int index) {
public void removeBillItemByPosition(int index) {
if (index < mBillItemList.size()) {
BillItem billItem = mBillItemList.get(index);
if (billItem instanceof DiscountItem) {
......@@ -888,11 +890,12 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
/**
* 修改訂單包含修改或刪除過的的食品
*
* @return
*/
private boolean hasModifyFoods() {
for (OrderDetail orderDetail : getOrderFoodLists()) {
if(orderDetail.isModify()){
if (orderDetail.isModify()) {
return true;
}
}
......
......@@ -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;
......@@ -56,6 +57,7 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo
@Inject
AppManager mAppManager;
@Inject
public OrderDetailPresenter(OrderDetailContract.Model model, OrderDetailContract.View rootView) {
super(model, rootView);
......@@ -87,8 +89,6 @@ public class OrderDetailPresenter extends BaseOrderConterPresenter<OrderDetailCo
if (result.getData() != null) {
OrderManagerResponse orderDetailItem = JsonUtils.parseObject(JsonUtils.toJson(result.getData()), OrderManagerResponse.class);
mRootView.returnOrderDetail(orderDetailItem);
//刷新訂單列表
EventBus.getDefault().post(true, "updateOrderListEvent");
} else {
mRootView.showMessage("獲取賬單失敗");
}
......@@ -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("獲取賬單失敗");
}
......
......@@ -49,8 +49,10 @@ import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.MemberDiscount;
import com.gingersoft.gsa.cloud.order.discount.MultyDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
......@@ -440,8 +442,8 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
} else {
ivPoints[i].setImageResource(R.drawable.meal_food_group_point_unfocused);
}
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ArmsUtils.dip2px(this,20),ArmsUtils.dip2px(this,12));
lp.leftMargin = ArmsUtils.dip2px(this,5);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ArmsUtils.dip2px(this, 20), ArmsUtils.dip2px(this, 12));
lp.leftMargin = ArmsUtils.dip2px(this, 5);
ivPoints[i].setLayoutParams(lp);
ivPoints[i].setPadding(0, 0, 0, 0);
ll_food_group_point.addView(ivPoints[i]);
......@@ -648,8 +650,14 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
public void clearMemberInfo() {
btn_table.setBackgroundColor(Color.parseColor("#336699"));
DoshokuOrder.getInstance().setMemberInfo(null);
//更新賬單信息
mPresenter.updateBillInfo();
DiscountItem memberDiscountBillItem = (DiscountItem) mPresenter.findBillItemByClass(MemberDiscount.class);
if(memberDiscountBillItem != null){
ShoppingCart shoppingCart = mPresenter.getShoppingCart();
shoppingCart.delMultyDiscount(memberDiscountBillItem.getDiscount());
//更新賬單信息
mPresenter.updateBillInfo();
}
if (DoshokuOrder.getInstance().needUpdateMemberInfo()) {
return;
}
......
......@@ -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() && AppDevices.isHywebPos()) {
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
......
......@@ -34,6 +34,7 @@ import com.jess.arms.integration.lifecycle.ActivityLifecycleable;
import com.jess.arms.mvp.IPresenter;
import com.jess.arms.utils.AndroidWorkaround;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.arch.QMUIActivity;
import com.qmuiteam.qmui.util.QMUIDeviceHelper;
import com.trello.rxlifecycle2.android.ActivityEvent;
......
......@@ -30,14 +30,19 @@ import com.jess.arms.integration.lifecycle.FragmentLifecycleable;
import com.jess.arms.mvp.IPresenter;
import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.arch.QMUIFragment;
import com.qmuiteam.qmui.arch.QMUIFragmentLazyLifecycleOwner;
import com.trello.rxlifecycle2.android.FragmentEvent;
import java.util.Observable;
import javax.inject.Inject;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import io.reactivex.Observer;
import io.reactivex.subjects.BehaviorSubject;
import io.reactivex.subjects.Subject;
......@@ -91,8 +96,6 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
return mLifecycleSubject;
}
private View view;
@Override
public SupportFragmentDelegate getSupportDelegate() {
return mDelegate;
......@@ -121,7 +124,7 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
Activity activity = (Activity) context;
mDelegate.onAttach(activity);
_mActivity = (BaseFragmentActivity) mDelegate.getActivity();
mContext = mDelegate.getActivity();
mContext = mDelegate.getActivity();
}
@Override
......@@ -141,6 +144,14 @@ public abstract class BaseFragment<P extends IPresenter> extends Fragment implem
mDelegate.onActivityCreated(savedInstanceState);
}
// @Override
// protected View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container) {
// mCacheRootView = initView(inflater, container, null);
// return mCacheRootView;
// }
private View view;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
......
......@@ -34,6 +34,8 @@ import com.jess.arms.integration.lifecycle.ActivityLifecycleable;
import com.jess.arms.mvp.IPresenter;
import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import com.qmuiteam.qmui.arch.QMUIActivity;
import com.qmuiteam.qmui.arch.QMUIFragmentActivity;
import com.qmuiteam.qmui.util.QMUIDeviceHelper;
import com.trello.rxlifecycle2.android.ActivityEvent;
......@@ -95,6 +97,7 @@ public abstract class BaseFragmentActivity<P extends IPresenter> extends Fragmen
return view == null ? super.onCreateView(name, context, attrs) : view;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -179,6 +182,7 @@ public abstract class BaseFragmentActivity<P extends IPresenter> extends Fragmen
*/
@Override
final public void onBackPressed() {
// super.onBackPressed();
mDelegate.onBackPressed();
}
......
......@@ -17,6 +17,7 @@ package com.jess.arms.utils;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.ClipboardManager;
......@@ -1142,6 +1143,27 @@ public class DeviceUtils {
}
return sb.toString().toUpperCase(Locale.CHINA);
}
/**
* 判断服务是否正在运行
*
* @param serviceName 服务类的全路径名称 例如: com.jaychan.demo.service.PushService
* @param context 上下文对象
* @return
*/
public static boolean isServiceRunning(String serviceName, Context context) {
//活动管理器
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> runningServices = am.getRunningServices(100); //获取运行的服务,参数表示最多返回的数量
for (ActivityManager.RunningServiceInfo runningServiceInfo : runningServices) {
String className = runningServiceInfo.service.getClassName();
if (className.equals(serviceName)) {
return true; //判断服务是否运行
}
}
return false;
}
}
......@@ -3,4 +3,6 @@ package com.gingersoft.gsa.cloud.common.constans;
public class DeliveryPickConstans {
public static final String ORDER_TYPE = "orderType";
}
......@@ -11,7 +11,7 @@ public interface OrderTypeConstans {
*/
int order_type_2 = 2;
/**
* 掃碼點餐
* skyorder
*/
int order_type_3 = 3;
/**
......
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(int orderType,String printerData,String printerDeviceInfo);
void onPrinterBitmapBefore(int orderType,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 + File.separator;
public final static String ORDER_IMAGE_PATH = ROOT_PATH + OrderImage + File.separator;
public final static String BILL_IMAGE_PATH = ROOT_PATH + BillImage + File.separator;
public final static String SERVING_PAPER_IMAGE_PATH = ROOT_PATH + ServingPaperImage + File.separator;
}
public final static String FILE_EXTENSION_SEPARATOR = ".";
//操作日志單最大文件大小
......@@ -262,6 +284,28 @@ public class FileUtils {
return size;
}
/**
* 获取目录文件大小
*/
public static long getDirSize(File dir) {
if (dir == null) {
return 0;
}
if (!dir.isDirectory()) {
return 0;
}
long dirSize = 0;
File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile()) {
dirSize += file.length();
} else if (file.isDirectory()) {
dirSize += getDirSize(file); // 递归调用继续统计
}
}
return dirSize;
}
/*
* Java文件操作 获取文件扩展名
* */
......
package com.gingersoft.gsa.cloud.common.utils;
import android.app.ActivityManager;
import android.content.Context;
import java.util.List;
/**
* @作者: bin
* @創建時間: 2021-01-28 15:18
* @更新時間: 2021-01-28 15:18
* @描述:
*/
public class StytemUtils {
/**
* 判断服务是否正在运行
*
* @param serviceName 服务类的全路径名称 例如: com.jaychan.demo.service.PushService
* @param context 上下文对象
* @return
*/
public static boolean isServiceRunning(String serviceName, Context context) {
//活动管理器
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> runningServices = am.getRunningServices(100); //获取运行的服务,参数表示最多返回的数量
for (ActivityManager.RunningServiceInfo runningServiceInfo : runningServices) {
String className = runningServiceInfo.service.getClassName();
if (className.equals(serviceName)) {
return true; //判断服务是否运行
}
}
return false;
}
}
......@@ -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);
......
......@@ -40,7 +40,7 @@ public class OrderDiscountRequest {
/**
* 折扣金額
*/
private double discountAmount;
private Double discountAmount;
/**
* 是否计算服务费
*/
......
......@@ -26,7 +26,7 @@ public class OrderDiscountResponse implements Serializable {
* 1#會員折扣
* 2#优惠券折扣
*/
private int type;
private byte type;
/**
* 餐廳折扣類型 0:金額,1:折扣,2:自定義金額,3:自由金額,數字盤,4:免服務費
*/
......
......@@ -138,7 +138,7 @@ public class OrderResponse {
/**
* 成本價
*/
private double cost;
private Double cost;
/**
* 自定義字段
......
......@@ -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();
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
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