Commit f2fd9308 by Wyh

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	table-mode/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/MealStandPresenter.java
#	table-mode/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderContentPresenter.java
#	table-mode/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/OrderPayActivity.java
parents dad8710e 82e6ac03
......@@ -7,8 +7,8 @@ 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.model.bean.SettlementReport;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReportItem;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReportItem5;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem3;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem5;
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;
......@@ -60,10 +60,10 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon
private SettlementReportActivity IActivity;
private SettlementReportItemAdapter mSettlementReportItemAdapter;
private List<SettlementReportItem> mSettlementReportItemList= new ArrayList<>();
private List<SectionTextItem3> mSettlementReportItemList= new ArrayList<>();
private SettlementReportItem5Adapter mSettlementReportItem5Adapter;
private List<SettlementReportItem5> mSettlementReportItem5List= new ArrayList<>();
private List<SectionTextItem5> mSettlementReportItem5List= new ArrayList<>();
@Inject
public SettlementReportPresenter(SettlementReportContract.Model model, SettlementReportContract.View rootView) {
......@@ -91,13 +91,13 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon
}
}
public void notifyReportItemAdapter(List<SettlementReportItem> settlementReportItems) {
public void notifyReportItemAdapter(List<SectionTextItem3> settlementReportItems) {
mSettlementReportItemList.clear();
mSettlementReportItemList.addAll(settlementReportItems);
mSettlementReportItemAdapter.notifyDataSetChanged();
}
public void notifyReportItem5Adapter(List<SettlementReportItem5> settlementReportItems) {
public void notifyReportItem5Adapter(List<SectionTextItem5> settlementReportItems) {
mSettlementReportItem5List.clear();
mSettlementReportItem5List.addAll(settlementReportItems);
mSettlementReportItem5Adapter.notifyDataSetChanged();
......
......@@ -205,7 +205,8 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
functions.add(new Function((long) 141, 150, 5, "預點餐模式", R.drawable.ic_pre_order_mode));
functions.add(new Function((long) 151, 0, 5, "管理", 0));
functions.add(new Function((long) 142, 151, 5, "餐牌管理", R.drawable.ic_meals_menu_management));
// functions.add(new Function((long) 142, 151, 5, "餐牌管理", R.drawable.ic_meals_menu_management));
functions.add(new Function((long) 142, 151, 5, "賬單管理", R.drawable.ic_meals_menu_management));
functions.add(new Function((long) 143, 151, 5, "餐臺管理", R.drawable.ic_dining_table_management));
functions.add(new Function((long) 144, 151, 5, "打印管理", R.drawable.ic_print_management));
functions.add(new Function((long) 145, 151, 5, "支付管理", R.drawable.ic_pay_management));
......@@ -264,7 +265,7 @@ public class NewMainActivity extends BaseActivity<NewMainPresenter> implements N
.setActionName("showPrintActivity")
.build()
.call();
}else if (name.equals("餐牌管理")) {
}else if (name.equals("賬單管理")) {
CC.obtainBuilder("Component.Table")
.setActionName("showOrderCenterActivity")
.build()
......
......@@ -7,13 +7,12 @@ import android.widget.TextView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReportItem5;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem5;
import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter;
import java.util.List;
import butterknife.BindView;
import butterknife.BindViews;
/**
......@@ -24,11 +23,11 @@ import butterknife.BindViews;
* 描述:
*/
public class SettlementReportItem5Adapter extends DefaultAdapter<SettlementReportItem5> {
public class SettlementReportItem5Adapter extends DefaultAdapter<SectionTextItem5> {
private Context mContext;
public SettlementReportItem5Adapter(Context context, List<SettlementReportItem5> infos) {
public SettlementReportItem5Adapter(Context context, List<SectionTextItem5> infos) {
super(infos);
this.mContext = context;
}
......@@ -39,7 +38,7 @@ public class SettlementReportItem5Adapter extends DefaultAdapter<SettlementRepor
}
@Override
public BaseHolder<SettlementReportItem5> getHolder(View v, int viewType) {
public BaseHolder<SectionTextItem5> getHolder(View v, int viewType) {
return new SettlementReportItemHolder(v);
}
......@@ -48,7 +47,7 @@ public class SettlementReportItem5Adapter extends DefaultAdapter<SettlementRepor
return R.layout.item_settlement_report5;
}
class SettlementReportItemHolder extends BaseHolder<SettlementReportItem5> {
class SettlementReportItemHolder extends BaseHolder<SectionTextItem5> {
@BindViews({R2.id.tv_item1, R2.id.tv_item2, R2.id.tv_item3, R2.id.tv_item4, R2.id.tv_item5})
TextView[] tv_items;
......@@ -58,7 +57,7 @@ public class SettlementReportItem5Adapter extends DefaultAdapter<SettlementRepor
}
@Override
public void setData(SettlementReportItem5 reportItem, int position) {
public void setData(SectionTextItem5 reportItem, int position) {
if(!TextUtils.isEmpty(reportItem.getItem1())){
tv_items[0].setText(reportItem.getItem1());
tv_items[0].setVisibility(View.VISIBLE);
......
......@@ -6,7 +6,7 @@ import android.widget.TextView;
import com.gingersoft.gsa.cloud.main.R;
import com.gingersoft.gsa.cloud.main.R2;
import com.gingersoft.gsa.cloud.main.mvp.model.bean.SettlementReportItem;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem3;
import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter;
import java.util.List;
......@@ -20,11 +20,11 @@ import butterknife.BindView;
* 描述:
*/
public class SettlementReportItemAdapter extends DefaultAdapter<SettlementReportItem> {
public class SettlementReportItemAdapter extends DefaultAdapter<SectionTextItem3> {
private Context mContext;
public SettlementReportItemAdapter(Context context, List<SettlementReportItem> infos) {
public SettlementReportItemAdapter(Context context, List<SectionTextItem3> infos) {
super(infos);
this.mContext = context;
}
......@@ -35,7 +35,7 @@ public class SettlementReportItemAdapter extends DefaultAdapter<SettlementReport
}
@Override
public BaseHolder<SettlementReportItem> getHolder(View v, int viewType) {
public BaseHolder<SectionTextItem3> getHolder(View v, int viewType) {
return new SettlementReportItemHolder(v);
}
......@@ -44,7 +44,7 @@ public class SettlementReportItemAdapter extends DefaultAdapter<SettlementReport
return R.layout.item_settlement_report;
}
class SettlementReportItemHolder extends BaseHolder<SettlementReportItem> {
class SettlementReportItemHolder extends BaseHolder<SectionTextItem3> {
@BindView(R2.id.tv_left)
TextView tv_left;
......@@ -58,7 +58,7 @@ public class SettlementReportItemAdapter extends DefaultAdapter<SettlementReport
}
@Override
public void setData(SettlementReportItem reportItem, int position) {
public void setData(SectionTextItem3 reportItem, int position) {
tv_left.setText(reportItem.getLeftText());
tv_center.setText(reportItem.getCenterText());
......
......@@ -21,21 +21,18 @@ public class OrderBean {
* orderDetails : [{"id":1621502,"productName":"胡椒排骨涼瓜煲","productId":"4257","price":58,"lunchboxPrice":0,"number":1,"createTime":"Jan 14, 2020 8:00:11 PM","status":0},{"id":1621503,"productName":"海南雞(例牌)","productId":"4258","price":83,"lunchboxPrice":0,"number":1,"createTime":"Jan 14, 2020 8:00:11 PM","status":0}]
*/
private int id;
private long id;
private String orderNo;
private int status;
private int person;
private double totalAmount;
private double totalPoints;
/**生成訂單時間*/
private String createTime;
private List<OrderDetailsBean> orderDetails;
public OrderBean() {
}
public OrderBean(int orderId) {
this.id = orderId;
}
public OrderBean(OrderBean orderBean) {
this.id = orderBean.id;
this.status = orderBean.status;
......@@ -44,11 +41,14 @@ public class OrderBean {
this.createTime = orderBean.createTime;
}
public int getId() {
public OrderBean(int orderId) {
this.id = orderId;
}
public long getId() {
return id;
}
public void setId(int id) {
public void setId(long id) {
this.id = id;
}
......@@ -128,7 +128,7 @@ public class OrderBean {
private double price;
private double lunchboxPrice;
private int number;
// private String createTime;
private String createTime;
private int status;
private byte type;
......@@ -217,13 +217,13 @@ public class OrderBean {
this.number = number;
}
// public String getCreateTime() {
// return createTime;
// }
//
// public void setCreateTime(String createTime) {
// this.createTime = createTime;
// }
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public int getStatus() {
return status;
......
......@@ -48,25 +48,17 @@ public class MyOrderManage {
private int mseq = 0;//三级序
private OrderBean orderBean;
//食品列表
/**食品列表*/
private List<OrderDetail> orderFoodList = new ArrayList<>();
//本次送單食品,用於打印
/**本次送單食品,用於打印*/
private List<OrderDetail> newFoodList = new ArrayList<>();
// private List<DatasBean> comboOrders = new ArrayList<>();
// private List<MixOldOrder> MixOldOrders = new ArrayList<>();
// private List<MixComboGroupDiscount.DatasBean> mixComboGroup_Discounts;
// private List<MixComboGroup.DatasBean> MixComboGroups;
/**本次支付方式,用於打印*/
private List<PayMethod> billMoney = new ArrayList<>();
private int lastTimeChangeNumber = 1;
private boolean allowAddAutoDiscount = false;
/**是不是修改訂單操作*/
private boolean modifyOrder=false;
public static final int ADD_OPERAT = 1;
public static final int DELETE_OPERAT = 2;
public int getOrderId() {
public long getOrderId() {
if (orderBean != null) {
return orderBean.getId();
}
......@@ -99,7 +91,7 @@ public class MyOrderManage {
orderBean = new OrderBean();
}
if (orderBean != null) {
orderBean.setId((int) orderId);
orderBean.setId((long) orderId);
}
}
......@@ -1016,6 +1008,14 @@ public class MyOrderManage {
if (orderFoodList != null) {
orderFoodList.clear();
}
if (newFoodList != null) {
newFoodList.clear();
}
if (billMoney != null) {
billMoney.clear();
}
orderBean = null;
modifyOrder = false;
}
public boolean isOverMaxQty() {
......@@ -1123,6 +1123,9 @@ public class MyOrderManage {
}
public List<OrderDetail> getOrderFoodList() {
if (orderFoodList == null) {
orderFoodList = new ArrayList<>();
}
return orderFoodList;
}
......@@ -1174,12 +1177,13 @@ public class MyOrderManage {
// this.selectMealAdapter = selectMealAdapter;
// }
public boolean isAllowAddAutoDiscount() {
return allowAddAutoDiscount;
public boolean isModifyOrder() {
return modifyOrder;
}
public void setAllowAddAutoDiscount(boolean allowAddAutoDiscount) {
this.allowAddAutoDiscount = allowAddAutoDiscount;
public void setModifyOrder(boolean modifyOrder) {
this.modifyOrder = modifyOrder;
}
public List<PayMethod> getBillMoney() {
......
......@@ -176,8 +176,8 @@ public class AppCrashHandler implements UncaughtExceptionHandler {
System.arraycopy(trace, 0, trace2, 0, trace.length);
trace2[trace.length + 0] = new StackTraceElement("Android", "MODEL", Build.MODEL, -1);
trace2[trace.length + 1] = new StackTraceElement("Android", "VERSION", Build.VERSION.RELEASE, -1);
trace2[trace.length + 2] = new StackTraceElement("GSA-SUPER", "APP_VERSION_CODE", AppUtils.getVerCode(mContext) + "", -1);
trace2[trace.length + 3] = new StackTraceElement("GSA-SUPER", "APP_VERSION_NAME", AppUtils.getVerName(mContext), -1);
trace2[trace.length + 2] = new StackTraceElement("Gsa-Could", "APP_VERSION_CODE", AppUtils.getVerCode(mContext) + "", -1);
trace2[trace.length + 3] = new StackTraceElement("Gsa-Could", "APP_VERSION_NAME", AppUtils.getVerName(mContext), -1);
trace2[trace.length + 4] = new StackTraceElement("Android", "FINGERPRINT", Build.FINGERPRINT, -1);
// 追加信息,因为后面会回调默认的处理方法
ex.setStackTrace(trace2);
......
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
package com.gingersoft.gsa.cloud.ui.bean.view;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
import java.util.ArrayList;
import java.util.List;
/**
* 作者:ELEGANT_BIN
......@@ -7,14 +13,16 @@ package com.gingersoft.gsa.cloud.main.mvp.model.bean;
* 修订历史:2020-03-04
* 描述:
*/
public class SettlementReportItem {
public class SectionTextItem3 {
private String leftText;
private String centerText;
private String rightText;
public SectionTextItem3() {
}
public SettlementReportItem(String leftText, String centerText, String rightText) {
public SectionTextItem3(String leftText, String centerText, String rightText) {
this.leftText = leftText;
this.centerText = centerText;
this.rightText = rightText;
......@@ -43,4 +51,42 @@ public class SettlementReportItem {
public void setRightText(String rightText) {
this.rightText = rightText;
}
public static List<SectionTextItem3> orderDetailTransSectionTextItem3(List<OrderDetail> orderDetailList) {
List<SectionTextItem3> sectionTextItem3List = new ArrayList<>();
for (OrderDetail orderDetail : orderDetailList) {
SectionTextItem3 sectionTextItem3 = new SectionTextItem3();
String foodName;
switch (orderDetail.getItemType()) {
case 2:
foodName = " " + orderDetail.getProductName();
break;
case 3:
foodName = " " + orderDetail.getProductName();
break;
default:
foodName = orderDetail.getProductName();
break;
}
sectionTextItem3.setLeftText(foodName);
sectionTextItem3.setCenterText(String.valueOf(orderDetail.getNumber()));
sectionTextItem3.setRightText(String.valueOf(orderDetail.getPrice() * orderDetail.getNumber()));
sectionTextItem3List.add(sectionTextItem3);
}
return sectionTextItem3List;
}
public static List<SectionTextItem3> orderPayMethodTransSectionTextItem3(List<PayMethod> payMethodList) {
List<SectionTextItem3> sectionTextItem3List = new ArrayList<>();
for (PayMethod payMethod : payMethodList) {
SectionTextItem3 sectionTextItem3 = new SectionTextItem3();
sectionTextItem3.setLeftText(payMethod.getPayName());
sectionTextItem3.setCenterText(String.valueOf(0));
sectionTextItem3.setRightText(String.valueOf(payMethod.getPayMoney()));
sectionTextItem3List.add(sectionTextItem3);
}
return sectionTextItem3List;
}
}
package com.gingersoft.gsa.cloud.main.mvp.model.bean;
package com.gingersoft.gsa.cloud.ui.bean.view;
/**
* 作者:ELEGANT_BIN
......@@ -7,7 +7,7 @@ package com.gingersoft.gsa.cloud.main.mvp.model.bean;
* 修订历史:2020-03-04
* 描述:
*/
public class SettlementReportItem5 {
public class SectionTextItem5 {
private String item1;
private String item2;
......@@ -15,7 +15,7 @@ public class SettlementReportItem5 {
private String item4;
private String item5;
public SettlementReportItem5(String item1, String item2, String item3, String item4, String item5) {
public SectionTextItem5(String item1, String item2, String item3, String item4, String item5) {
this.item1 = item1;
this.item2 = item2;
this.item3 = item3;
......
......@@ -21,8 +21,11 @@ public interface AllOrderContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void showEmptyView(boolean isSuccess, int size, Throwable t);
void setAllOrderAdapter(DefaultAdapter adapter);
byte getStatus();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -104,7 +104,7 @@ public interface MealStandContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends BaseOrderContract.Model {
Observable<BaseRespose> loadOrder(int orderId);
Observable<BaseRespose> loadOrder(long orderId);
// Observable<BaseResult> createOrder(RequestBody requestBody);
//
......
......@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllOrderFragment;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
......@@ -34,6 +35,8 @@ public interface OrderCenterContract {
int getPageIndex();
AllOrderFragment getCurrentOrderFragment();
int getPageSize();
}
......@@ -41,6 +44,9 @@ public interface OrderCenterContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Observable<BaseResult> loadOrderList(int restaurantId, int pageIndex, int pageSize);
Observable<BaseResult> loadOrderList(int restaurantId,byte status, int pageIndex, int pageSize);
Observable<BaseResult> cancelOrder(long orderId,int restaurantId,byte status);
}
}
......@@ -51,7 +51,7 @@ public interface OrderContentContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends BaseOrderContract.Model {
Observable<BaseRespose> loadOrder(int orderId);
Observable<BaseRespose> loadOrder(long orderId);
// Observable<BaseResult> createOrder(RequestBody requestBody);
//
......
package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
import io.reactivex.Observable;
/**
* ================================================
......@@ -20,10 +24,15 @@ public interface OrderDetailContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void returnOrderDetail(OrderDetailItem orderDetailItem);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Observable<BaseResult> getOrderDetailItem(long orderId);
Observable<BaseResult> cancelOrder(long orderId);
}
}
......@@ -104,7 +104,7 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
}
@Override
public Observable<BaseRespose> loadOrder(int orderId) {
public Observable<BaseRespose> loadOrder(long orderId) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.loadOrder(orderId);
}
......
......@@ -16,6 +16,7 @@ import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderCenterContract;
import io.reactivex.Observable;
import io.reactivex.functions.Function;
/**
......@@ -50,8 +51,23 @@ public class OrderCenterModel extends BaseModel implements OrderCenterContract.M
}
@Override
public Observable<BaseResult> loadOrderList(int restaurantId, int pageIndex, int pageSize) {
public Observable<BaseResult> loadOrderList(int restaurantId,byte status, int pageIndex, int pageSize) {
return mRepositoryManager.obtainRetrofitService(OrderService.class)
.loadOrderList(restaurantId,pageIndex,pageSize);
.loadOrderList(restaurantId, status,pageIndex, pageSize);
}
@Override
public Observable<BaseResult> cancelOrder(long orderId, int restaurantId,byte status) {
return mRepositoryManager.obtainRetrofitService(OrderService.class)
.cancelOrder(orderId)
.flatMap(new Function<BaseResult, Observable<BaseResult>>() {
@Override
public Observable<BaseResult> apply(BaseResult info) throws Exception {
if (info != null && info.isSuccess()) {
return loadOrderList(restaurantId, status,0, 10);
}
return null;
}
});
}
}
\ No newline at end of file
......@@ -50,7 +50,7 @@ public class OrderContentModel extends BaseModel implements OrderContentContract
}
@Override
public Observable<BaseRespose> loadOrder(int orderId) {
public Observable<BaseRespose> loadOrder(long orderId) {
return mRepositoryManager.obtainRetrofitService(MealService.class)
.loadOrder(orderId);
}
......
......@@ -2,6 +2,10 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.table.mvp.model.service.OrderService;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
......@@ -12,6 +16,9 @@ import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
import io.reactivex.Observable;
import io.reactivex.functions.Function;
/**
* ================================================
......@@ -43,4 +50,25 @@ public class OrderDetailModel extends BaseModel implements OrderDetailContract.M
this.mGson = null;
this.mApplication = null;
}
@Override
public Observable<BaseResult> getOrderDetailItem(long orderId) {
return mRepositoryManager.obtainRetrofitService(OrderService.class)
.getOrderDetail(orderId);
}
@Override
public Observable<BaseResult> cancelOrder(long orderId) {
return mRepositoryManager.obtainRetrofitService(OrderService.class)
.cancelOrder(orderId)
.flatMap(new Function<BaseResult, Observable<BaseResult>>() {
@Override
public Observable<BaseResult> apply(BaseResult info) throws Exception {
if (info != null && info.isSuccess()) {
return getOrderDetailItem(orderId);
}
return null;
}
});
}
}
\ No newline at end of file
......@@ -22,23 +22,42 @@ public class OrderDetailItem implements Serializable {
/**
* id : 47040
* tableName : 4
* orderNo : gs200371144969589
* status : 0
* totalAmount : 10
* totalPoints : 0
* createTime : Mar 14, 2020 1:24:12 PM
* endTime : Mar 14, 2020 1:24:12 PM
* person : 2
* payName : 支付寶
* orderDetails : [{"id":1639952,"orderId":47040,"parentId":0,"productName":"包子","productId":"14520","price":5,"lunchboxPrice":0,"number":1,"type":3,"createTime":"Mar 14, 2020 2:55:02 PM","status":0},{"id":1639953,"orderId":47040,"parentId":0,"productName":"燒麥","productId":"14522","price":5,"lunchboxPrice":0,"number":1,"type":3,"createTime":"Mar 14, 2020 2:55:02 PM","status":0}]
*/
private long id;
private String tableName;
private String orderNo;
private int status;
private double totalAmount;
private int totalPoints;
private String payName;
/**生成訂單時間*/
private String createTime;
/**結賬時間*/
private String endTime;
private int person;
private List<OrderBean.OrderDetailsBean> orderDetails;
/**
* 訂單狀態:0:未支付;1:待確認(已支付, 待餐廳確認);2:制作中(餐厅确认);3:派送中;4:确认收货(完成);5:是否评论;6:取消;
*/
public static final byte STATUS_UNPAID = 0;
public static final byte STATUS_NOT_CONFIRM = 1;
public static final byte STATUS_Making = 2;
public static final byte STATUS_Dispatching = 3;
public static final byte STATUS_CONFIRM = 4;
public static final byte STATUS_COMMENT = 5;
public static final byte STATUS_CANCEL = 6;
public long getId() {
return id;
}
......@@ -47,6 +66,14 @@ public class OrderDetailItem implements Serializable {
this.id = id;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getOrderNo() {
return orderNo;
}
......@@ -55,6 +82,14 @@ public class OrderDetailItem implements Serializable {
this.orderNo = orderNo;
}
public String getPayName() {
return payName;
}
public void setPayName(String payName) {
this.payName = payName;
}
public int getStatus() {
return status;
}
......@@ -87,6 +122,14 @@ public class OrderDetailItem implements Serializable {
this.createTime = createTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public int getPerson() {
return person;
}
......
......@@ -15,14 +15,14 @@ import java.util.Map;
public class AddOrderRequest {
private int orderId;
private long orderId;
private Map<String, List<OrderBean.OrderDetailsBean>> maps;
public int getOrderId() {
public long getOrderId() {
return orderId;
}
public void setOrderId(int orderId) {
public void setOrderId(long orderId) {
this.orderId = orderId;
}
......
......@@ -17,6 +17,7 @@ public class CreateOrderRequest {
private int person;
private int tableId;
private String tableName;
private int restaurantId;
private Map<Long, List<OrderBean.OrderDetailsBean>> orderDetails;
......@@ -36,6 +37,14 @@ public class CreateOrderRequest {
this.tableId = tableId;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public int getRestaurantId() {
return restaurantId;
}
......
......@@ -28,7 +28,7 @@ public interface MealService {
@FormUrlEncoded
@POST("order/get" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseRespose> loadOrder(@Field("orderId") int orderId);
Observable<BaseRespose> loadOrder(@Field("orderId") long orderId);
@POST("orderDetails/delete" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> deleteFood(@Body RequestBody requestBody);
......
......@@ -6,6 +6,8 @@ import io.reactivex.Observable;
import me.jessyan.retrofiturlmanager.RetrofitUrlManager;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
......@@ -15,8 +17,14 @@ import retrofit2.http.Query;
*/
public interface OrderService {
@FormUrlEncoded
@POST("order/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> loadOrderList(@Query("restaurantId") int restaurantId, @Query("pageIndex") int pageIndex, @Query("pageSize") int pageSize);
Observable<BaseResult> loadOrderList(@Field("restaurantId") int restaurantId, @Field("status") byte status, @Field("pageIndex") int pageIndex, @Field("pageSize") int pageSize);
@GET("order/pay/success" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> getOrderDetail(@Query("orderId") long orderId);
@FormUrlEncoded
@POST("order/cancel" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> cancelOrder(@Field("orderId") long orderId);
}
......@@ -3,9 +3,19 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderDetailActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderCenterAdapter;
......@@ -21,6 +31,8 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllOrderContract;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import java.util.ArrayList;
import java.util.List;
......@@ -74,14 +86,80 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
mOrderCenterAdapter = new OrderCenterAdapter(context, mOrderItemList);
mRootView.setAllOrderAdapter(mOrderCenterAdapter);
}
mOrderCenterAdapter.setOnItemClickListener(new DefaultAdapter.OnRecyclerViewItemClickListener() {
mOrderCenterAdapter.setOnItemClickListener(new OrderCenterAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int viewType, Object data, int position) {
public void onItemClick(OrderDetailItem datasBean, int position) {
Intent intent = new Intent(IActivity, OrderDetailActivity.class);
intent.putExtra("orderDetailItem", (OrderDetailItem) data);
intent.putExtra("orderDetailItem", datasBean);
mRootView.launchActivity(intent);
}
@Override
public void onPrintClick(OrderDetailItem datasBean, int position) {
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(datasBean.getOrderDetails()));
startPrintOrder(datasBean, orderDetailList);
}
@Override
public void onModifyClick(OrderDetailItem datasBean, int position) {
//設置為修改訂單操作
MyOrderManage.getInstance().setModifyOrder(true);
/**
* 緩存訂單信息
*/
OrderBean orderBean = new OrderBean();
orderBean.setId(datasBean.getId());
orderBean.setStatus(datasBean.getStatus());
orderBean.setOrderNo(datasBean.getOrderNo());
orderBean.setPerson(datasBean.getPerson());
orderBean.setCreateTime(datasBean.getCreateTime());
MyOrderManage.getInstance().setOrderBean(orderBean);
OpenTableManage.getDefault().setPeopleNumber(datasBean.getPerson());
List<OrderBean.OrderDetailsBean> orderDetailsBeans = datasBean.getOrderDetails();
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(orderDetailsBeans));
MyOrderManage.getInstance().setOrderFoodList(orderDetailList);
mRootView.launchActivity(new Intent(IActivity, MealStandActivity.class));
}
@Override
public void onCancelClick(OrderDetailItem datasBean, int position) {
showCancelDialog(datasBean.getId());
}
});
}
private void showCancelDialog(long orderId) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(IActivity);
dialogBuilder.setTitle("溫馨提示");
dialogBuilder.setMessage("是否取消訂單?");
dialogBuilder.addAction("取消", (dialog, index) -> dialog.dismiss());
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
dialog.dismiss();
IActivity.cancelOrder(orderId,mRootView.getStatus());
});
dialogBuilder.create(R.style.MyDialogTheme2).show();
}
private void startPrintOrder(OrderDetailItem orderDetailItem, List<OrderDetail> orderDetailList) {
MyOrderManage.getInstance().setOrderFoodList(orderDetailList);
MyOrderManage.getInstance().setOrderId(orderDetailItem.getId());
OpenTableManage.getDefault().setPeopleNumber(orderDetailItem.getPerson());
TableBean.DataBean dataBean = new TableBean.DataBean();
dataBean.setTableName(orderDetailItem.getTableName());
dataBean.setCreateTime(orderDetailItem.getCreateTime());
OpenTableManage.getDefault().setTableBean(dataBean);
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam("type", 2)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess());
MyOrderManage.getInstance().clear();
OpenTableManage.getDefault().setPeopleNumber(0);
OpenTableManage.getDefault().setTableBean(null);
});
}
public void updateOrderData(List<OrderDetailItem> orderItemList) {
......
......@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Activity;
import android.app.Application;
import android.view.View;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
......@@ -20,6 +21,7 @@ import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.OrderMoneyAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -245,7 +247,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
return false;
}
//旧食品不可以修改数量
if (i != 0 && myOrderManage.getOrderFoodList().get(mSelectMealAdapter.getSelect_start_position()).isNew() == false) {
if (myOrderManage.isModifyOrder() || myOrderManage.getOrderFoodList().get(mSelectMealAdapter.getSelect_start_position()).isNew() == false && i != 0) {
return false;
}
if (mSelectMealAdapter.getSelect_position() == -1) {
......@@ -344,6 +346,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
request.setOrderDetails(orderDetailBeanToFoodRequest(foodList));
request.setPerson(OpenTableManage.getDefault().getPeopleNumber());
request.setTableId(OpenTableManage.getDefault().getTableBean().getId());
request.setTableName(OpenTableManage.getDefault().getTableBean().getTableName());
request.setRestaurantId(restaurantId);
return request;
}
......
......@@ -29,6 +29,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -39,6 +40,7 @@ import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
......@@ -323,7 +325,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
// }
}
private void loadModifierData(long fid) {
List<Modifier> modifierList = mModel.queryDB_ModifierList(fid, ModifierDaoUtils.modifierMode_Child);
updateModifierData(modifierList);
......@@ -345,8 +346,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
@Override
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
saveCreateTime(info.getSysTime());
//創建訂單成功,保存訂單創建時間到開台信息中
if (info.getData() != null) {
setOrderId((Double) info.getData());
}
......@@ -403,22 +402,22 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
}
/**
* 打印
* 打印上菜紙
* @param initTable 是否是開台
*/
private void printSendOrder(boolean initTable) {
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam("type", 3)//廚房單
.addParam("type", 3)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
// if (result.isSuccess()) {
//打印成功
if (initTable) {
IActivity.returnTableActivity(initTable);
} else {
mRootView.killMyself();
}
//打印成功
if (initTable) {
IActivity.returnBeforeActivity(initTable);
} else {
mRootView.killMyself();
}
// } else {
// mRootView.showMessage("打印失敗");
// }
......@@ -483,7 +482,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
mSelectMealAdapter.notifyDataSetChanged();
mSelectMealAdapter.setIndex();
mRootView.showViewModeVisibility(MealConstant.food_group_ViewMode,MealConstant.food_ViewMode);
mRootView.showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
} else {
mRootView.showMessage("刪除失敗");
}
......@@ -491,16 +490,47 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
});
}
private void deleteWithOrderedFoodById() {
public void showInputNumberDialog(OrderDetail datasBean) {
ChooseNumberDialog chooseNumberDialog = new ChooseNumberDialog(IActivity);
chooseNumberDialog.builder();
chooseNumberDialog.setValueHint("請輸入數量");
chooseNumberDialog.setOnBackClickListener(new ChooseNumberDialog.OnBackClickListener() {
@Override
public void OnBackClick() {
}
});
chooseNumberDialog.setOnClickListener(new ChooseNumberDialog.OnClickListener() {
@Override
public void onComfirmClick(String number) {
changeNumber(datasBean.getNumber() - 1);
}
@Override
public void onBackPage() {
}
});
chooseNumberDialog.setCancelable(true);
chooseNumberDialog.show();
}
private void deleteWithOrderedFoodById(OrderDetail deleteFood) {
QMUIDialog.MessageDialogBuilder dialogBuilder = new QMUIDialog.MessageDialogBuilder(IActivity);
dialogBuilder.setTitle("溫馨提示");
dialogBuilder.setMessage("是否確認刪除該食品?");
dialogBuilder.addAction("取消", (dialog, index) -> dialog.dismiss());
dialogBuilder.addAction(0, "確認", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
dialog.dismiss();
// int deletePosition = mSelectMealAdapter.removeFoodItem();
// mRootView.setMealRvScrollToPosition(deletePosition);
deleteFood();
if (myOrderManage.isModifyOrder()) {
if (deleteFood.getNumber() < 1) {
changeNumber(0);
} else {
showInputNumberDialog(deleteFood);
}
} else {
deleteFood();
}
});
dialogBuilder.create(R.style.QMUI_Dialog).show();
}
......@@ -525,7 +555,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
if (!deleteFood.isNew()) {
//TODO 刪除已下單食品
deleteWithOrderedFoodById();
deleteWithOrderedFoodById(deleteFood);
} else {
if (deleteStyle == 2) {
mSelectMealAdapter.removeAllNewFoodItem();
......@@ -815,7 +845,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private void setModifierDefModifier(List<Modifier> modifierList) {
String defmodifier = null;
for (int i = 0; i < modifierList.size(); i++) {
defmodifier = modifierList.get(i).getDefmodifier() + ",";
defmodifier = modifierList.get(i).getDefmodifier() + ",";
}
if (!TextUtils.isEmpty(defmodifier)) {
if (defmodifier.startsWith(",")) {
......
......@@ -14,6 +14,7 @@ import com.jess.arms.http.imageloader.ImageLoader;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
......@@ -51,6 +52,9 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
AppManager mAppManager;
private OrderCenterActivity IActivity;
//是否可以繼續上拉刷新
private boolean noMoreData = false;
@Inject
public OrderCenterPresenter(OrderCenterContract.Model model, OrderCenterContract.View rootView) {
......@@ -68,17 +72,17 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
this.mApplication = null;
}
/**
/***
* 獲取訂單列表
*
* @param status
* @param pageIndex
* @param pageSize
* @param refreshLayout
* @param isLoadMore
*/
public void loadOrderList(int pageIndex, int pageSize, RefreshLayout refreshLayout, boolean isLoadMore) {
public void loadOrderList(byte status, int pageIndex, int pageSize, RefreshLayout refreshLayout, boolean isLoadMore) {
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
mModel.loadOrderList(restaurantId, pageIndex, pageSize)
mModel.loadOrderList(restaurantId, status, pageIndex, pageSize)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> {
if (refreshLayout == null) {
......@@ -92,36 +96,56 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
if (!isLoadMore) {
//初始化或下拉刷新,重置上拉加載標誌
noMoreData = false;
}
}
@Override
public void onNext(@NonNull BaseResult result) {
if (result.isSuccess()) {
if (result.getData() != null) {
List<OrderDetailItem> orderItemList = JsonUtils.parseArray(result.getData(), OrderDetailItem.class);
if (orderItemList.size() > 0) {
mRootView.returnOrderItemList(orderItemList);
//每次更新完數據,頁碼+1
mRootView.setPageIndex(mRootView.getPageIndex() + 1);
if (!noMoreData) {
mRootView.returnOrderItemList(orderItemList);
//每次更新完數據,頁碼+1
mRootView.setPageIndex(mRootView.getPageIndex() + 1);
}
if (orderItemList.size() < pageSize) {
//沒有更多數據不能上拉刷新
noMoreData = true;
} else {
noMoreData = false;
}
} else {
mRootView.showEmptyView(true,0, null);
mRootView.showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(true,0, null);
mRootView.showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(false,0, null);
mRootView.showEmptyView(false, 0, null);
}
resetRefreshLayout();
resetRefreshLayout(noMoreData);
}
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showEmptyView(false,0, t);
resetRefreshLayout();
mRootView.showEmptyView(false, 0, t);
resetRefreshLayout(false);
}
private void resetRefreshLayout() {
private void resetRefreshLayout(boolean noMoreData) {
if (refreshLayout != null) {
if (isLoadMore) {
if (noMoreData) {
refreshLayout.setNoMoreData(true);
}
refreshLayout.finishLoadMore();
} else {
refreshLayout.finishRefresh();
......@@ -132,4 +156,56 @@ public class OrderCenterPresenter extends BasePresenter<OrderCenterContract.Mode
});
}
/**
* 取消訂單
*
* @param orderId
*/
public void cancelOrder(long orderId, byte status) {
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
mModel.cancelOrder(orderId, restaurantId, status)
.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 result) {
if (result.isSuccess()) {
if (result.getData() != null) {
List<OrderDetailItem> orderItemList = JsonUtils.parseArray(result.getData(), OrderDetailItem.class);
if (orderItemList.size() > 0) {
mRootView.returnOrderItemList(orderItemList);
//每次更新完數據,頁碼+1
mRootView.setPageIndex(mRootView.getPageIndex() + 1);
} else {
mRootView.showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(true, 0, null);
}
} else {
mRootView.showEmptyView(false, 0, null);
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.showEmptyView(false, 0, t);
}
});
}
public boolean isNoMoreData() {
return noMoreData;
}
public void setNoMoreData(boolean noMoreData) {
this.noMoreData = noMoreData;
}
}
......@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Application;
import android.graphics.Color;
import android.util.Log;
import android.view.View;
import com.billy.cc.core.component.CC;
......@@ -104,6 +105,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
public void initOrderTopFunctionListener() {
mOrderTopFunctionAdapter.setOnItemClickListener(new DefaultAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View view, int viewType, Object data, int position) {
if (XClickUtil.isFastDoubleClick(view, 1000)) {
......@@ -124,8 +126,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//有未送單食品先送單
sendOrder(true);
} else {
// 沒有未送單食品,將之前的食品列表清空
MyOrderManage.getInstance().getNewFoodList().clear();
printOrder(OpenTableManage.getDefault().getTableBean().getId(), false);
}
break;
......@@ -142,6 +142,14 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
}
public void initTopFunctionData() {
if (MyOrderManage.getInstance().isModifyOrder()) {
//修改訂單隱藏送單,印單功能
functions[0] = new Function("結賬", Color.parseColor("#FFFFFF"), Color.parseColor("#DC0000"), 24);
} else {
functions[0] = new Function("送單", Color.parseColor("#FFFFFF"), Color.parseColor("#008131"), 24);
functions[1] = new Function("印單", Color.parseColor("#FFFFFF"), Color.parseColor("#FF8E04"), 24);
functions[2] = new Function("結賬", Color.parseColor("#FFFFFF"), Color.parseColor("#DC0000"), 24);
}
mFunctionList.addAll(Arrays.asList(functions));
}
......@@ -160,7 +168,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
saveCreateTime(info.getSysTime());
if (info.getData() != null) {
setOrderId((Double) info.getData());
}
......@@ -237,6 +244,11 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
.addParam("type", 3)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess());
// if (result.isSuccess()) {
// //打印成功
//
// }
mRootView.sendSuccess();
});
......@@ -271,8 +283,22 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override
public void onNext(@NonNull BaseRespose info) {
if (info != null && info.isSuccess()) {
CC.obtainBuilder("Component.Print")
.addParam("type", 1)//印單
.setActionName("printActivity")
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess());
if (result.isSuccess()) {
//打印成功
mRootView.showMessage("打印成功!");
} else {
mRootView.showMessage("打印失敗!");
}
//不管打印是否成功,都需要退出當前頁面
mRootView.printSuccess();
});
//打印
printOrder();
} else {
mRootView.showMessage("印單失敗!");
if (isSend) {
......@@ -285,24 +311,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
}
private void printOrder() {
CC.obtainBuilder("Component.Print")
.addParam("type", 1)//印單
.setActionName("printActivity")
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
if (result.isSuccess()) {
//打印成功,接著打印廚房單
mRootView.showMessage("打印成功!");
} else {
mRootView.showMessage("打印失敗!");
}
//不管打印是否成功,都需要退出當前頁面
mRootView.printSuccess();
});
}
public void loadOrder(int orderId) {
public void loadOrder(long orderId) {
mModel.loadOrder(orderId)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
......
......@@ -2,16 +2,24 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Application;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
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 io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderDetailContract;
import com.jess.arms.utils.RxLifecycleUtils;
/**
......@@ -50,4 +58,30 @@ public class OrderDetailPresenter extends BasePresenter<OrderDetailContract.Mode
this.mImageLoader = null;
this.mApplication = null;
}
public void cancelOrder(long orderId) {
mModel.cancelOrder(orderId)
.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 result) {
if (result.isSuccess()) {
if (result.getData() != null) {
OrderDetailItem orderDetailItem = JsonUtils.parseObject((String) result.getData(), OrderDetailItem.class);
mRootView.returnOrderDetail(orderDetailItem);
} else {
mRootView.showMessage("獲取賬單失敗");
}
} else {
mRootView.showMessage("獲取賬單失敗");
}
}
});
}
}
......@@ -82,15 +82,15 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
/**
* 当前选择的操作:
* 1分台
* 2上菜纸
* 3重置
* 4转台
* 5sky_order
* 6結賬、
* 10餐檯模式
* 1#分台
* 2#上菜纸
* 3#重置
* 4#转台
* 5#sky_order
* 6#結賬、
* 10#餐檯模式
*/
private int currentChooseOperatType = -1;
private int mCurrentOperatType = -1;
/**
* 选中操作的台名、id
*/
......@@ -387,7 +387,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
List<TableBean.DataBean> filterTableBeanList = new ArrayList<>();
//如果是餐檯操作過一遍筛选
switch (currentChooseOperatType) {
switch (mCurrentOperatType) {
// case TableOperatTypeConstant.splite_table_1:
// for (int i = 0; i < datasBeans.size(); i++) {
// if (datasBeans.get(i).getStatus() != 0 || datasBeans.get(i).getSplitStatus() == 1 ? true : false) {
......@@ -427,7 +427,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
dialogBuilder.setTitle("溫馨提示");
//是否合併檯
boolean isMergeTable = false;
switch (currentChooseOperatType) {
switch (mCurrentOperatType) {
case TableOperatTypeConstant.splite_table_1:
break;
......@@ -462,7 +462,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
switch (currentChooseOperatType) {
switch (mCurrentOperatType) {
case TableOperatTypeConstant.splite_table_1:
break;
......@@ -551,11 +551,11 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
public int getCurrentChooseOperatType() {
return currentChooseOperatType;
return mCurrentOperatType;
}
public void setCurrentChooseOperatType(int currentChooseOperatType) {
this.currentChooseOperatType = currentChooseOperatType;
public void setCurrentChooseOperatType(int mCurrentOperatType) {
this.mCurrentOperatType = mCurrentOperatType;
}
public String getOriginalTableName() {
......
......@@ -34,6 +34,7 @@ import androidx.viewpager.widget.ViewPager;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.base.utils.constans.Constans;
......@@ -49,6 +50,7 @@ import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.app.GoldConstants;
import com.gingersoft.gsa.cloud.table.di.component.DaggerMealStandComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.gingersoft.gsa.cloud.table.mvp.model.constant.MealConstant;
import com.gingersoft.gsa.cloud.table.mvp.presenter.MealStandPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BaseFragmentAdapter;
......@@ -96,8 +98,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public class MealStandActivity extends BaseActivity<MealStandPresenter> implements MealStandContract.View, PagerGridLayoutManager
.PageListener {
public class MealStandActivity extends BaseActivity<MealStandPresenter> implements MealStandContract.View, PagerGridLayoutManager.PageListener {
private SparseArray<View> map = new SparseArray<>();
......@@ -254,7 +255,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
EventBus.getDefault().registerSticky(this);
//清除食品緩存
//清除Greendao食品緩存
FoodDaoUtils foodDaoUtils = new FoodDaoUtils(this);
foodDaoUtils.detachAll();
FoodComboDaoUtils foodComboDaoUtils = new FoodComboDaoUtils(this);
......@@ -543,7 +544,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
Intent intent = new Intent(this, OrderContentActivity.class);
startActivityForResult(intent, ORDER_CONTENT_CODE);//如果打印成功會回調
} else if (id == R.id.tv_no_save_return) {
returnTableActivity(true);
returnBeforeActivity(true);
} else if (id == R.id.btn_add_delete) {
showFinePage = 1;
showRemarkInfo();
......@@ -596,16 +597,15 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
@Override
public void onBackPressed() {
super.onBackPressed();
returnTableActivity(true);
returnBeforeActivity(true);
}
public void returnTableActivity(boolean initTable) {
public void returnBeforeActivity(boolean initTable) {
SPUtils.put(this, MealConstant.EXIT_IS_PLU_MODE, isPluMode);
if (initTable && OpenTableManage.getDefault() != null) {
if (initTable && OpenTableManage.getDefault().getTableBean() != null) {
//通知更新餐台状态
EventBus.getDefault().post(OpenTableManage.getDefault().getTableBean().getId(), "initTable_status_event");
}
//返回餐台页面
killMyself();
}
......@@ -638,7 +638,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
@Override
public void OnBackClick() {
recordOperat(true);
returnTableActivity(true);
returnBeforeActivity(true);
}
});
int backPageBtnVisibility;
......@@ -658,7 +658,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
@Override
public void onBackPage() {
returnTableActivity(true);
returnBeforeActivity(true);
}
});
chooseNumberDialog.setCancelable(isNeedCancel);
......@@ -871,6 +871,7 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
@Override
public void initIntent() {
}
@Override
......@@ -890,7 +891,10 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
@Override
public void initLayoutVisible() {
if(MyOrderManage.getInstance().isModifyOrder()){
//修改訂單隱藏送單功能
fl_send_order.setVisibility(View.GONE);
}
}
@Override
......
......@@ -6,6 +6,7 @@ import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
......@@ -512,6 +513,11 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
.addParam("type", 2)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess());
// if (result.isSuccess()) {
// //打印成功
// }
MyOrderManage.getInstance().clear();
setResult(Activity.RESULT_OK, null);
killMyself();
});
......
......@@ -6,6 +6,7 @@ import android.os.Bundle;
import android.os.Message;
import android.view.View;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.qmui.arch.QMUIFragmentPagerAdapter;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
......@@ -63,14 +64,12 @@ public class OrderCenterActivity extends BaseActivity<OrderCenterPresenter> impl
QMUITabSegment mTabSegment;
@BindView(R2.id.contentViewPager)
ViewPager mContentViewPager;
@BindView(R2.id.emptyView)
QMUIEmptyView mEmptyView;
private AllOrderFragment allOrderFragment, cancelOrderFragment, voidOrderFragment;
//當前顯示頁下標
private int currentPageIndex = 0;
//標題
private String[] tabTitles = {"全部", "已取消", "已退款"};
private String[] tabTitles = {"已付款", "已取消"};
//是否已經初始化數據,默認初始化第一個頁面
private boolean[] pageDataInit = {true, false, false};
......@@ -93,7 +92,7 @@ public class OrderCenterActivity extends BaseActivity<OrderCenterPresenter> impl
public void initData(@Nullable Bundle savedInstanceState) {
initTabAndPager();
mPresenter.loadOrderList(1, 10, null, false);
mPresenter.loadOrderList(OrderDetailItem.STATUS_CONFIRM, 0, 15, null, false);
}
private void initTabAndPager() {
......@@ -156,13 +155,13 @@ public class OrderCenterActivity extends BaseActivity<OrderCenterPresenter> impl
@Override
public void onTabSelected(int index) {
currentPageIndex = index;
//頁面切換
pagerAdapter.createFragment(index);
if (!pageDataInit[index]) {
//未初始化數據,獲取數據
loadOrderList(null, false);
loadOrderList(getCurrentOrderFragment().getStatus(),null, false);
}
currentPageIndex = index;
pageDataInit[currentPageIndex] = true;
}
......@@ -210,7 +209,6 @@ public class OrderCenterActivity extends BaseActivity<OrderCenterPresenter> impl
@Override
public void initLayoutVisible() {
}
@Override
......@@ -243,116 +241,58 @@ public class OrderCenterActivity extends BaseActivity<OrderCenterPresenter> impl
finish();
}
private View.OnClickListener onRetryClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//重新加載
setPageIndex(1);
loadOrderList(null, false);
}
};
@Override
public void showEmptyView(boolean isSuccess, int size, Throwable t) {
if (t != null) {
if (t instanceof UnknownHostException) {
//沒有網絡
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof SocketTimeoutException) {
//請求超時
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof JsonParseException || t instanceof ParseException || t instanceof JSONException || t instanceof JsonIOException) {
//數據解析錯誤
mEmptyView.show(false, getResources().getString(R.string.response_error_data_parsing_error), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else {
//其他error
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
}
mContentViewPager.setVisibility(View.INVISIBLE);
return;
}
if (!isSuccess) {
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
mContentViewPager.setVisibility(View.INVISIBLE);
return;
}
if (size == 0) {
mEmptyView.show(getResources().getString(R.string.emptyView_mode_desc_double), null);
mContentViewPager.setVisibility(View.INVISIBLE);
return;
}
mEmptyView.hide();
mContentViewPager.setVisibility(View.VISIBLE);
getCurrentOrderFragment().showEmptyView(isSuccess, size, t);
}
@Override
public void returnOrderItemList(List<OrderDetailItem> orderItemList) {
Message message = Message.obtain();
message.obj = orderItemList;
if (getPageIndex() == 1) {
if (getPageIndex() == 0) {
//刷新一頁數據
message.what = 0;
} else {
//加載更多數據
message.what = 1;
}
switch (currentPageIndex) {
case 0:
allOrderFragment.setData(message);
break;
case 1:
cancelOrderFragment.setData(message);
break;
case 2:
voidOrderFragment.setData(message);
break;
}
mEmptyView.hide();
mContentViewPager.setVisibility(View.VISIBLE);
getCurrentOrderFragment().setData(message);
}
public void loadOrderList(byte status, RefreshLayout refreshLayout, boolean isLoadMore) {
mPresenter.loadOrderList(status, getPageIndex(), getPageSize(), refreshLayout, isLoadMore);
}
public void loadOrderList(RefreshLayout refreshLayout, boolean isLoadMore) {
mPresenter.loadOrderList(getPageIndex(), getPageSize(), refreshLayout, isLoadMore);
public void cancelOrder(long orderId, byte status) {
mPresenter.cancelOrder(orderId, status);
}
@Override
public void setPageIndex(int index) {
switch (currentPageIndex) {
case 1:
cancelOrderFragment.setPageIndex(index);
break;
case 2:
voidOrderFragment.setPageIndex(index);
break;
default:
allOrderFragment.setPageIndex(index);
break;
}
getCurrentOrderFragment().setPageIndex(index);
}
@Override
public int getPageIndex() {
switch (currentPageIndex) {
case 1:
return cancelOrderFragment.getPageIndex();
case 2:
return voidOrderFragment.getPageIndex();
default:
return allOrderFragment.getPageIndex();
}
return getCurrentOrderFragment().getPageIndex();
}
@Override
public int getPageSize() {
return getCurrentOrderFragment().getPageSize();
}
@Override
public AllOrderFragment getCurrentOrderFragment() {
switch (currentPageIndex) {
case 1:
return cancelOrderFragment.getPageSize();
return cancelOrderFragment;
case 2:
return voidOrderFragment.getPageSize();
return voidOrderFragment;
default:
return allOrderFragment.getPageSize();
return allOrderFragment;
}
}
}
package com.gingersoft.gsa.cloud.table.mvp.ui.adapter;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtil;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.ModifierAdapter;
import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import java.util.Date;
import java.util.List;
import butterknife.BindView;
......@@ -85,26 +90,93 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderDetailItem> {
}
@Override
public void setData(OrderDetailItem datasBean, int position) {
public void setData(OrderDetailItem item, int position) {
String tableName = LanguageUtils.get_language_system(mContext, "table.number", "檯號") + ":";
String pax = LanguageUtils.get_language_system(mContext, "Meal.Mannumber", "人數") + ":";
String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "訂單號") + ":";
String openTable = LanguageUtils.get_language_system(mContext, "open.table", "開台") + ":";
String payTable = LanguageUtils.get_language_system(mContext, "open.table", "結賬") + ":";
String amount = LanguageUtils.get_language_system(mContext, "amount", "金額") + ":$";
tv_table_name.setText(tableName + datasBean.getId());
tv_order_num.setText(orderNumber + datasBean.getOrderNo());
tv_people_num.setText(pax + datasBean.getPerson());
tv_open_time.setText(openTable + datasBean.getCreateTime());
tv_pay_money.setText(amount + datasBean.getTotalAmount());
btn_print_order.setText(LanguageUtils.get_language_system(mContext, "print.order", "打印賬單"));
btn_tips.setText(LanguageUtils.get_language_system(mContext, "public.tips", "貼士"));
btn_modify_order.setText(LanguageUtils.get_language_system(mContext, "modify.order", "修改訂單"));
btn_cancel_order.setText(LanguageUtils.get_language_system(mContext, "cancel.order", "取消訂單"));
tv_table_name.setText(tableName + item.getTableName());
tv_order_num.setText(orderNumber + item.getId());
tv_people_num.setText(pax + item.getPerson());
tv_open_time.setText(openTable + TimeUtil.getStringByFormat(new Date(item.getCreateTime()), TimeUtil.dateFormatYMDHM));
if (!TextUtils.isEmpty(item.getEndTime())) {
tv_pay_time.setText(payTable + TimeUtil.getStringByFormat(new Date(item.getEndTime()), TimeUtil.dateFormatYMDHM));
}
tv_pay_money.setText(amount + item.getTotalAmount());
setOrderStatus(item,position);
ll_root_container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(item, position);
}
}
});
}
private void setOrderStatus(OrderDetailItem item,int position) {
if(item.getStatus() == 6){
btn_print_order.setVisibility(View.GONE);
btn_modify_order.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
btn_order_status.setVisibility(View.VISIBLE);
}else {
btn_print_order.setText(LanguageUtils.get_language_system(mContext, "print.order", "打印賬單"));
btn_tips.setText(LanguageUtils.get_language_system(mContext, "public.tips", "貼士"));
btn_modify_order.setText(LanguageUtils.get_language_system(mContext, "modify.order", "修改訂單"));
btn_cancel_order.setText(LanguageUtils.get_language_system(mContext, "cancel.order", "取消訂單"));
btn_print_order.setVisibility(View.VISIBLE);
btn_modify_order.setVisibility(View.VISIBLE);
btn_cancel_order.setVisibility(View.VISIBLE);
btn_order_status.setVisibility(View.GONE);
btn_print_order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onPrintClick(item, position);
}
}
});
btn_modify_order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onModifyClick(item, position);
}
}
});
btn_cancel_order.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onCancelClick(item, position);
}
}
});
}
}
}
private OnItemClickListener mOnItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
mOnItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
void onItemClick(OrderDetailItem datasBean, int position);
void onPrintClick(OrderDetailItem datasBean, int position);
void onModifyClick(OrderDetailItem datasBean, int position);
void onCancelClick(OrderDetailItem datasBean, int position);
}
}
package com.gingersoft.gsa.cloud.table.mvp.ui.adapter;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
......@@ -11,38 +12,28 @@ import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem3;
import java.util.List;
import androidx.annotation.Nullable;
public class OrderDetailFoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
public class OrderDetailItemAdapter extends BaseQuickAdapter<SectionTextItem3, BaseViewHolder> {
public OrderDetailFoodAdapter(@Nullable List<OrderDetail> data) {
public OrderDetailItemAdapter(@Nullable List<SectionTextItem3> data) {
super(R.layout.item_order_detail_food, data);
}
@Override
protected void convert(BaseViewHolder helper, OrderDetail item) {
TextView tv_food_name = helper.getView(R.id.tv_food_name);
int flevel = item.getItemType();
String productName = item.getProductName();
switch (flevel) {
case 1:
tv_food_name.setGravity(Gravity.LEFT);
break;
case 2:
productName = " " + productName;
tv_food_name.setGravity(Gravity.CENTER);
break;
case 3:
productName = " " + productName;
tv_food_name.setGravity(Gravity.RIGHT);
break;
protected void convert(BaseViewHolder helper, SectionTextItem3 item) {
helper.setText(R.id.tv_left, item.getLeftText());
if (!item.getCenterText().equals("0")) {
helper.setText(R.id.tv_center, String.valueOf(item.getCenterText()));
helper.setVisible(R.id.tv_center, true);
} else {
helper.setVisible(R.id.tv_center, false);
}
tv_food_name.setText(productName);
helper.setText(R.id.tv_food_number, String.valueOf(item.getNumber()));
helper.setText(R.id.tv_food_total, "$" + item.getPrice() * item.getNumber());
helper.setText(R.id.tv_right, "$" + item.getRightText());
}
}
......@@ -7,21 +7,22 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem3;
import java.util.List;
import androidx.annotation.Nullable;
public class OrderDetailPayMethodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
public class OrderDetailPayMethodAdapter extends BaseQuickAdapter<SectionTextItem3, BaseViewHolder> {
public OrderDetailPayMethodAdapter(@Nullable List<OrderDetail> data) {
public OrderDetailPayMethodAdapter(@Nullable List<SectionTextItem3> data) {
super(R.layout.item_order_detail_pay_method, data);
}
@Override
protected void convert(BaseViewHolder helper, OrderDetail item) {
helper.setText(R.id.tv_name, String.valueOf(item.getNumber()));
helper.setText(R.id.tv_money, "$" + item.getPrice() * item.getNumber());
protected void convert(BaseViewHolder helper, SectionTextItem3 item) {
helper.setText(R.id.tv_name, String.valueOf(item.getLeftText()));
helper.setText(R.id.tv_money, "$" + item.getRightText());
}
}
......@@ -259,12 +259,12 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
private void setNumber(OrderDetail datasBean) {
int number = datasBean.getNumber();
if (number == 0) {
//细项、折扣不需要显示数量
tv_number.setText("");
} else {
// if (number == 0) {
// //细项、折扣不需要显示数量
// tv_number.setText("0");
// } else {
tv_number.setText(String.valueOf(number));
}
// }
}
private void setMoney(OrderDetail datasBean) {
......@@ -300,9 +300,16 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
//设置Item选中颜色
if (datasBean.isNew() == false) {
iv_lock.setVisibility(View.INVISIBLE);
tv_name.setTextColor(ArmsUtils.getColor(mContext, R.color.Grass_green));
tv_number.setTextColor(ArmsUtils.getColor(mContext, R.color.Grass_green));
tv_money.setTextColor(ArmsUtils.getColor(mContext, R.color.Grass_green));
int number = datasBean.getNumber();
if (number == 0) {
tv_name.setTextColor(ArmsUtils.getColor(mContext,R.color.theme_red_color));
tv_number.setTextColor(ArmsUtils.getColor(mContext,R.color.theme_red_color));
tv_money.setTextColor(ArmsUtils.getColor(mContext,R.color.theme_red_color));
} else {
tv_name.setTextColor(ArmsUtils.getColor(mContext, R.color.Grass_green));
tv_number.setTextColor(ArmsUtils.getColor(mContext, R.color.Grass_green));
tv_money.setTextColor(ArmsUtils.getColor(mContext, R.color.Grass_green));
}
} else {
iv_lock.setVisibility(View.INVISIBLE);
tv_number.setTextColor(ArmsUtils.getColor(mContext, R.color.black));
......
package com.gingersoft.gsa.cloud.table.mvp.ui.fragment;
import android.content.Intent;
import android.net.ParseException;
import android.os.Bundle;
import android.os.Message;
import android.view.LayoutInflater;
......@@ -11,6 +12,8 @@ import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.OrderDetailItem;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.google.gson.JsonIOException;
import com.google.gson.JsonParseException;
import com.jess.arms.base.BaseFragment;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent;
......@@ -19,10 +22,15 @@ import com.gingersoft.gsa.cloud.table.di.component.DaggerAllOrderComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.AllOrderContract;
import com.gingersoft.gsa.cloud.table.mvp.presenter.AllOrderPresenter;
import com.gingersoft.gsa.cloud.table.R;
import com.qmuiteam.qmui.widget.QMUIEmptyView;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import org.json.JSONException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.List;
import androidx.annotation.NonNull;
......@@ -52,11 +60,13 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
RefreshLayout refreshLayout;
@BindView(R2.id.recycle_order)
RecyclerView recycle_order;
@BindView(R2.id.emptyView)
QMUIEmptyView mEmptyView;
private OrderCenterActivity orderCenterActivity;
private int currentPageIndex;
private int pageIndex = 1;
private int pageIndex = 0;
private int pageSize = 10;
public static AllOrderFragment newInstance() {
......@@ -93,14 +103,14 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
@Override
public void onRefresh(@NonNull final RefreshLayout refreshLayout) {
//重新獲取第一頁數據
pageIndex = 1;
orderCenterActivity.loadOrderList(refreshLayout, false);
pageIndex = 0;
orderCenterActivity.loadOrderList(getStatus(),refreshLayout, false);
}
});
refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
@Override
public void onLoadMore(@NonNull final RefreshLayout refreshLayout) {
orderCenterActivity.loadOrderList(refreshLayout, true);
orderCenterActivity.loadOrderList(getStatus(),refreshLayout, true);
}
});
}
......@@ -114,12 +124,16 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
if (mPresenter != null) {
mPresenter.updateOrderData(datasBeans);
}
mEmptyView.hide();
recycle_order.setVisibility(View.VISIBLE);
break;
case 1:
List<OrderDetailItem> addDataItem = (List<OrderDetailItem>) ((Message) data).obj;
if (mPresenter != null) {
mPresenter.addOrderData(addDataItem);
}
mEmptyView.hide();
recycle_order.setVisibility(View.VISIBLE);
break;
default:
//do something
......@@ -155,6 +169,48 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
}
private View.OnClickListener onRetryClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//重新加載
setPageIndex(0);
orderCenterActivity.loadOrderList(getStatus(),null, false);
}
};
@Override
public void showEmptyView(boolean isSuccess, int size, Throwable t) {
if (t != null) {
if (t instanceof UnknownHostException) {
//沒有網絡
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof SocketTimeoutException) {
//請求超時
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof JsonParseException || t instanceof ParseException || t instanceof JSONException || t instanceof JsonIOException) {
//數據解析錯誤
mEmptyView.show(false, getResources().getString(R.string.response_error_data_parsing_error), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else {
//其他error
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
}
recycle_order.setVisibility(View.INVISIBLE);
return;
}
if (!isSuccess) {
mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
recycle_order.setVisibility(View.INVISIBLE);
return;
}
if (size == 0) {
mEmptyView.show(getResources().getString(R.string.emptyView_mode_desc_double), null);
recycle_order.setVisibility(View.INVISIBLE);
return;
}
mEmptyView.hide();
recycle_order.setVisibility(View.VISIBLE);
}
@Override
public void setAllOrderAdapter(DefaultAdapter adapter) {
recycle_order.setAdapter(adapter);
......@@ -167,6 +223,15 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
recycle_order.addItemDecoration(new DividerItemDecoration(orderCenterActivity, LinearLayoutManager.VERTICAL));
}
@Override
public byte getStatus() {
switch (currentPageIndex) {
case 1:
return OrderDetailItem.STATUS_CANCEL;
default:
return OrderDetailItem.STATUS_CONFIRM;
}
}
public int getPageIndex() {
return pageIndex;
......@@ -183,4 +248,5 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
......@@ -33,11 +33,5 @@
android:fitsSystemWindows="true"/>
</LinearLayout>
<com.qmuiteam.qmui.widget.QMUIEmptyView
android:id="@+id/emptyView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/qmui_topbar_height"
android:fitsSystemWindows="true"/>
</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout>
\ No newline at end of file
......@@ -94,13 +94,11 @@
android:layout_marginBottom="@dimen/dp_40"
android:layout_marginTop="?attr/qmui_topbar_height"
android:background="@color/qmui_config_color_white"
android:fillViewport="true"
android:fitsSystemWindows="true"
android:focusable="true">
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/dp_8">
......@@ -173,8 +171,9 @@
android:layout_height="wrap_content"
android:layout_below="@+id/tv_open_time"
android:layout_marginTop="@dimen/dp_10"
android:text=""
android:text="食品詳情"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="@dimen/sp_16" />
<com.gingersoft.gsa.cloud.base.widget.NoScrollRecyclerView
......
......@@ -17,6 +17,11 @@
android:overScrollMode="never"
android:background="@color/theme_background_color"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
<com.qmuiteam.qmui.widget.QMUIEmptyView
android:id="@+id/emptyView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"/>
</FrameLayout>
</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout>
\ No newline at end of file
......@@ -115,6 +115,17 @@
android:textSize="@dimen/sp_13" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_modify_order"
android:layout_width="@dimen/dp_65"
android:layout_height="@dimen/dp_35"
android:background="@color/blue_300"
android:text="修改訂單"
android:layout_marginRight="@dimen/dp_10"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13"
android:visibility="visible" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_tips"
android:layout_width="@dimen/dp_65"
android:layout_height="@dimen/dp_35"
......@@ -147,16 +158,6 @@
android:visibility="gone" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_modify_order"
android:layout_width="@dimen/dp_65"
android:layout_height="@dimen/dp_35"
android:background="@color/blue_300"
android:text="修改訂單"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_13"
android:visibility="gone" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_order_status"
android:layout_width="@dimen/dp_65"
android:layout_height="@dimen/dp_35"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_item_layout"
android:layout_width="fill_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical"
android:paddingLeft="@dimen/dp_10"
android:paddingTop="@dimen/dp_5"
android:paddingBottom="@dimen/dp_5">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_10"
android:paddingTop="@dimen/dp_5"
android:paddingBottom="@dimen/dp_5"
android:weightSum="6">
<TextView
android:id="@+id/tv_food_name"
android:id="@+id/tv_left"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
......@@ -30,7 +24,7 @@
android:textColor="@color/black"
android:textSize="@dimen/sp_14"
android:maxLines="1"
android:text="" />
android:text="牛肉拉麵" />
<RelativeLayout
android:layout_width="0dp"
......@@ -39,31 +33,23 @@
android:orientation="horizontal">
<TextView
android:id="@+id/tv_food_number"
android:id="@+id/tv_center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text=""
android:text="1"
android:textColor="@color/black"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_food_total"
android:id="@+id/tv_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text=""
android:text="$15"
android:textColor="@color/black"
android:textSize="@dimen/sp_14" />
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_content_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
......@@ -11,6 +11,7 @@
android:layout_marginTop="@dimen/dp_10"
android:text=""
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="@dimen/sp_16" />
<TextView
......@@ -20,6 +21,7 @@
android:layout_alignParentRight="true"
android:layout_marginTop="@dimen/dp_10"
android:text=""
android:textStyle="bold"
android:textColor="@color/black"
android:textSize="@dimen/sp_16" />
......
......@@ -16,17 +16,17 @@
android:layout_above="@+id/rv_bottom_function"
android:layout_marginTop="?attr/qmui_topbar_height">
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp_table_type"
<com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id="@+id/tabSegment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/qmui_topbar_height" />
android:layout_height="@dimen/dp_45"
android:background="@drawable/shape_tab_panel_bg"/>
<com.gingersoft.gsa.cloud.ui.view.PagerSlidingTabStrip
android:id="@+id/pts_table_type"
<androidx.viewpager.widget.ViewPager
android:id="@+id/contentViewPager"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height"
android:background="@color/theme_white_color" />
android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_45"/>
<LinearLayout
android:id="@+id/ll_table_operat_content"
......
package com.gingersoft.gsa.cloud.user.login.mvp.presenter;
import android.app.Activity;
import android.app.Application;
import android.content.Intent;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.ui.bean.mode.LoginBean;
import com.gingersoft.gsa.cloud.user.login.R;
import com.gingersoft.gsa.cloud.user.login.mvp.contract.BaseLoginContract;
import com.gingersoft.gsa.cloud.user.login.mvp.ui.activity.LoginActivity;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
......@@ -38,9 +41,13 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
@Inject
AppManager mAppManager;
private Activity IAcitivity;
@Inject
public BaseLoginPresenter(BaseLoginContract.Model model, BaseLoginContract.View rootView) {
super(model, rootView);
IAcitivity = (Activity) rootView;
}
@Override
......@@ -83,6 +90,15 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
mRootView.showMessage(info.getErrMsg());
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
if (IAcitivity instanceof LoginActivity) {
} else {
mRootView.launchActivity(new Intent(IAcitivity, LoginActivity.class));
}
}
});
}
}
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