Commit 183a3d74 by 宁斌

1、相同食品主食品數量合併

parent 67a1c0bc
......@@ -22,6 +22,7 @@ import com.elvishew.xlog.printer.file.clean.FileLastModifiedCleanStrategy;
import com.elvishew.xlog.printer.file.naming.DateFileNameGenerator;
import com.gingersoft.gsa.cloud.base.BuildConfig;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.common.bean.RestaurantExpandInfo;
import com.gingersoft.gsa.cloud.base.utils.AidlUtil;
import com.gingersoft.gsa.cloud.base.utils.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.base.utils.file.FileUtils;
......@@ -58,6 +59,10 @@ public class GsaCloudApplication extends BaseApplication {
private static GsaCloudApplication mAppContext;
private Activity mCurrentActivity;
/**餐廳擴展信息*/
public static RestaurantExpandInfo restaurantExpandInfo;
public static FunctionStyleUtils androidSetting;
/**是否開啟皮膚切換*/
public static boolean openSkinMake = false;
/**
......@@ -66,7 +71,6 @@ public class GsaCloudApplication extends BaseApplication {
public static int REQUEST_TIMEOUT = 15;
public static boolean isLogin = false;
public static FunctionStyleUtils androidSetting;
public static String userName = "";
/**
* 商米:V2、V2_PRO N5:N5
......
......@@ -23,6 +23,7 @@ public class OrderPayRequest {
private long orderId;
private int linePayType;
private int orderPayType;
private String tableNumber;
private List<orderPay> orderPays = new ArrayList<>();
@Data
......
package com.gingersoft.gsa.cloud.base.common.bean;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-07-28
* 修订历史:2020-07-28
* 描述:
*/
@Data
public class RestaurantExpandInfo {
}
package com.gingersoft.gsa.cloud.base.common.bean;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.database.bean.ExpandInfo;
......@@ -17,9 +18,10 @@ public class RestaurantExpandInfoUtils {
/**
* 保存常用信息
*
* @param expandInfoList
*/
public static void setCommonExpandInfo(List<ExpandInfo> expandInfoList){
public static void setCommonExpandInfo(List<ExpandInfo> expandInfoList) {
for (ExpandInfo expandInfo : expandInfoList) {
if (expandInfo.getSettingName().equals("Rounding")) {
MoneyUtil.rounding = expandInfo.getValueInt();
......@@ -30,10 +32,12 @@ public class RestaurantExpandInfoUtils {
if (expandInfo.getSettingName().equals("ItemDecimals")) {
MoneyUtil.ItemDecimals = expandInfo.getValueInt();
}
if (expandInfo.getSettingName().equals("MergeSendFood")) {
GsaCloudApplication.androidSetting.setMergeSendFood(Boolean.parseBoolean(expandInfo.getValueChar()));
}
}
}
}
}
......@@ -2,6 +2,8 @@ package com.gingersoft.gsa.cloud.base.common.bean;
import java.util.List;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
......@@ -55,6 +57,7 @@ public class TableBean {
this.data = data;
}
@Data
public static class DataBean {
/**
* id : 25839
......@@ -77,15 +80,19 @@ public class TableBean {
* maxSeatCount : 8
*/
private int id;
private long id;
private String tableName;
private int restaurantId;
private Long orderId;
private String qrCode;
private int seatCount;
/**最大就餐人數*/
/**
* 最大就餐人數
*/
private Integer maxSeatCount;
/**最小就餐人數*/
/**
* 最小就餐人數
*/
private Integer minSeatCount;
private String createTime;
private String createBy;
......@@ -98,6 +105,7 @@ public class TableBean {
* 已開檯 1
* 已送單 2
* 已印单 3
* 已分檯 4
*/
private int status;
/**
......@@ -115,12 +123,17 @@ public class TableBean {
*/
private int sort;
/**
0#堂食
1#外賣
2#自取
* 0#堂食
* 1#外賣
* 2#自取
*/
private int type;
/**
* 分檯编号
*/
private String tableNumber;
public DataBean() {
}
......@@ -145,158 +158,23 @@ public class TableBean {
this.useStatus = dataBean.useStatus;
this.sort = dataBean.sort;
this.type = dataBean.type;
this.tableNumber = dataBean.tableNumber;
}
public int getPerson() {
return person;
}
public void setPerson(int person) {
this.person = person;
}
public int getUseStatus() {
return useStatus;
}
public void setUseStatus(int useStatus) {
this.useStatus = useStatus;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public int getRestaurantId() {
return restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
}
public String getQrCode() {
return qrCode;
}
public void setQrCode(String qrCode) {
this.qrCode = qrCode;
}
public int getSeatCount() {
return seatCount;
}
public void setSeatCount(int seatCount) {
this.seatCount = seatCount;
}
public Integer getMaxSeatCount() {
return maxSeatCount;
}
public void setMaxSeatCount(Integer maxSeatCount) {
this.maxSeatCount = maxSeatCount;
}
public Integer getMinSeatCount() {
return minSeatCount;
}
public void setMinSeatCount(Integer minSeatCount) {
this.minSeatCount = minSeatCount;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public String getQrCodeImg() {
return qrCodeImg;
}
public void setQrCodeImg(String qrCodeImg) {
this.qrCodeImg = qrCodeImg;
}
public int getPosTableId() {
return posTableId;
}
public void setPosTableId(int posTableId) {
this.posTableId = posTableId;
}
public long getServiceCharge() {
return serviceCharge;
}
public void setServiceCharge(long serviceCharge) {
this.serviceCharge = serviceCharge;
}
public long getMemberId() {
return memberId;
}
public void setMemberId(long memberId) {
this.memberId = memberId;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public static TableBean.DataBean splitTableTransformTable(TableBean.DataBean mainTable, TableExtBean.DataBean dataBean) {
TableBean.DataBean tableBean = new TableBean.DataBean();
tableBean.setId(dataBean.getId());
tableBean.setTableName(mainTable.getTableName() + "-" + dataBean.getTableNumber());
tableBean.setOrderId(dataBean.getOrderId());
// tableBean.setRestaurantId();
// tableBean.setQrCode();
// tableBean.setQrCodeImg();
// tableBean.setSeatCount();
// tableBean.setMaxSeatCount();
tableBean.setStatus(dataBean.getTableStatus());
tableBean.setUseStatus(dataBean.getInUse());
return tableBean;
}
}
package com.gingersoft.gsa.cloud.base.common.bean;
import java.util.List;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-07-29
* 修订历史:2020-07-29
* 描述:
*/
@Data
public class TableExtBean {
private TableBean.DataBean restaurantTable;
private List<DataBean> restaurantTableExtList;
@Data
public static class DataBean{
private long id;
private long tableId;
private long orderId;
private int inUse;
private int tableStatus;
private long updateTime;
private long createTime;
private String deviceName;
private String tableNumber;
}
}
package com.gingersoft.gsa.cloud.ui.widget.dialog;
import android.app.Dialog;
import android.content.Context;
import android.net.ParseException;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.google.gson.JsonIOException;
import com.google.gson.JsonParseException;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.utils.DeviceUtils;
import com.qmuiteam.qmui.layout.QMUILinearLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUIEmptyView;
import com.qmuiteam.qmui.widget.QMUITopBar;
import org.json.JSONException;
import java.net.SocketTimeoutException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-07-29
* 修订历史:2020-07-29
* 描述:
*/
public abstract class BaseRetryDialog extends Dialog {
private static final String TAG = "BaseRetryDialog";
private Context mContext;
public BaseRetryDialog(@NonNull Context context) {
super(context, R.style.MyDialogTheme2);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = getContext();
setCanceledOnTouchOutside(true);
}
@Override
public void show() {
super.show();
}
@Override
public void dismiss() {
super.dismiss();
}
protected void showEmptyView(boolean isSuccess, int size, Throwable t, QMUIEmptyView emptyView, RecyclerView recyclerView) {
if (t != null) {
if (t instanceof UnknownHostException) {
//沒有網絡
emptyView.show(false, mContext.getResources().getString(R.string.emptyView_mode_desc_fail_title), mContext.getResources().getString(R.string.emptyView_mode_desc_fail_desc), mContext.getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof SocketTimeoutException) {
//請求超時
emptyView.show(false, mContext.getResources().getString(R.string.emptyView_mode_desc_fail_title), mContext.getResources().getString(R.string.emptyView_mode_desc_fail_desc), mContext.getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else if (t instanceof JsonParseException || t instanceof ParseException || t instanceof JSONException || t instanceof JsonIOException) {
//數據解析錯誤
emptyView.show(false, mContext.getResources().getString(R.string.response_error_data_parsing_error), null, mContext.getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
} else {
//其他error
emptyView.show(false, mContext.getResources().getString(R.string.emptyView_mode_desc_fail_title), null, mContext.getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
}
recyclerView.setVisibility(View.INVISIBLE);
return;
}
if (!isSuccess) {
emptyView.show(false, mContext.getResources().getString(R.string.emptyView_mode_desc_fail_title), null, mContext.getResources().getString(R.string.emptyView_mode_desc_retry), onRetryClickListener);
recyclerView.setVisibility(View.INVISIBLE);
return;
}
if (size == 0) {
emptyView.show(mContext.getResources().getString(R.string.emptyView_mode_desc_double), null);
recyclerView.setVisibility(View.INVISIBLE);
return;
}
emptyView.hide();
recyclerView.setVisibility(View.VISIBLE);
return;
}
private View.OnClickListener onRetryClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
//重新加載
if (onRetryListener != null) {
onRetryListener.onRetryClick();
}
}
};
private OnRetryListener onRetryListener;
public void setOnRetryListener(OnRetryListener onRetryListener) {
this.onRetryListener = onRetryListener;
}
public interface OnRetryListener {
void onRetryClick();
}
}
......@@ -471,6 +471,10 @@ public class AddTableFragment extends BaseFragment<AddTablePresenter> implements
showMessage("請輸入餐檯名稱");
return false;
}
if (Integer.parseInt(peopleMixNumberEditText.getText().toString()) > Integer.parseInt(peopleMaxNumberEditText.getText().toString())) {
showMessage("最少人数不能大于最小人数!");
return false;
}
// if (TextUtils.isEmpty(defalutPeopleNumberEditText.getText().toString())) {
// showMessage("請輸入就餐人數");
// return false;
......
......@@ -270,7 +270,8 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
} else {
if (isRadioEdit) {
item.setChecked(!item.isChecked());
mAdapter.notifyDataSetChanged();
mAdapter.notifyItemChanged(position);
// mAdapter.notifyDataSetChanged();
} else {
if (item.getStatus() == 0) {
start(AddTableFragment.newInstance(item));
......
......@@ -35,6 +35,8 @@ public interface TableContract {
void returnTableList(List<TableBean.DataBean> dataBeanList);
void returnSplitTableList(List<TableBean.DataBean> dataBeanList);
AllTableFragment getCurrentTableFragment();
void clickTableItem(TableBean.DataBean dataBean);
......@@ -68,7 +70,7 @@ public interface TableContract {
Observable<TableBean> getTables(int restaurantId);
Observable<TableDetail> getTable(int tableId);
Observable<TableDetail> getTable(long tableId);
Observable<BaseRespose> getOrderById(long orderId);
......@@ -77,5 +79,9 @@ public interface TableContract {
Observable<BaseRespose> turnTable(RequestBody requestBody);
Observable<BaseRespose> initTable(RequestBody requestBody);
Observable<BaseResult> getSplitTables(long tableId);
Observable<BaseResult> splitTable(long tableId);
}
}
......@@ -2,6 +2,7 @@ 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.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
......@@ -71,7 +72,7 @@ public class TableModel extends BaseModel implements TableContract.Model {
}
@Override
public Observable<TableDetail> getTable(int tableId) {
public Observable<TableDetail> getTable(long tableId) {
return mRepositoryManager.obtainRetrofitService(TableService.class)
.getTable(tableId);
}
......@@ -100,5 +101,17 @@ public class TableModel extends BaseModel implements TableContract.Model {
.initTable(requestBody);
}
@Override
public Observable<BaseResult> getSplitTables(long tableId) {
return mRepositoryManager.obtainRetrofitService(TableService.class)
.getSplitTables(tableId);
}
@Override
public Observable<BaseResult> splitTable(long tableId) {
return mRepositoryManager.obtainRetrofitService(TableService.class)
.splitTable(tableId);
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.table.mvp.model.bean;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-07-29
* 修订历史:2020-07-29
* 描述:
*/
@Data
public class SplitTableNumber {
/**
* id : 1
* tableNumber : A
*/
private int id;
private String tableNumber;
}
......@@ -5,6 +5,8 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import java.util.List;
import java.util.Map;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
......@@ -12,65 +14,17 @@ import java.util.Map;
* 修订历史:2020-01-06
* 描述:
*/
@Data
public class AddOrderRequest {
private long orderId;
private int tableId;
private long tableId;
private String tableNumber;
/**賬單小數*/
private Double rounding;
/**整單折扣ID*/
private Long discountId;
private Map<String, List<OrderBean.OrderDetailsBean>> maps;
public long getOrderId() {
return orderId;
}
public void setOrderId(long orderId) {
this.orderId = orderId;
}
public int getTableId() {
return tableId;
}
public void setTableId(int tableId) {
this.tableId = tableId;
}
public Double getRounding() {
return rounding;
}
public void setRounding(Double rounding) {
this.rounding = rounding;
}
public Long getDiscountId() {
return discountId;
}
public void setDiscountId(Long discountId) {
this.discountId = discountId;
}
public Map<String, List<OrderBean.OrderDetailsBean>> getMaps() {
return maps;
}
public void setMaps(Map<String, List<OrderBean.OrderDetailsBean>> maps) {
this.maps = maps;
}
@Override
public String toString() {
return "AddOrderRequest{" +
"orderId=" + orderId +
", rounding=" + rounding +
", discountId=" + discountId +
", maps=" + maps +
'}';
}
}
......@@ -5,6 +5,8 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import java.util.List;
import java.util.Map;
import lombok.Data;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
......@@ -12,11 +14,12 @@ import java.util.Map;
* 修订历史:2020-01-06
* 描述:
*/
@Data
public class CreateOrderRequest {
private int person;
private int tableId;
private long tableId;
private String tableNumber;
private String tableName;
private int restaurantId;
/**賬單小數*/
......@@ -25,62 +28,6 @@ public class CreateOrderRequest {
private Long discountId;
private Map<Long, List<OrderBean.OrderDetailsBean>> orderDetails;
public int getPerson() {
return person;
}
public void setPerson(int person) {
this.person = person;
}
public int getTableId() {
return tableId;
}
public void setTableId(int tableId) {
this.tableId = tableId;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public int getRestaurantId() {
return restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
}
public Double getRounding() {
return rounding;
}
public void setRounding(Double rounding) {
this.rounding = rounding;
}
public Long getDiscountId() {
return discountId;
}
public void setDiscountId(Long discountId) {
this.discountId = discountId;
}
public Map<Long, List<OrderBean.OrderDetailsBean>> getOrderDetails() {
return orderDetails;
}
public void setOrderDetails(Map<Long, List<OrderBean.OrderDetailsBean>> orderDetails) {
this.orderDetails = orderDetails;
}
// public static class Request {
// private long productId;
......@@ -152,18 +99,5 @@ public class CreateOrderRequest {
// }
// }
@Override
public String toString() {
return "CreateOrderRequest{" +
"person=" + person +
", tableId=" + tableId +
", tableName='" + tableName + '\'' +
", restaurantId=" + restaurantId +
", rounding=" + rounding +
", discountId=" + discountId +
", orderDetails=" + orderDetails +
'}';
}
}
......@@ -18,7 +18,7 @@ public class DeleteOrderRequest {
private List<Map<Byte, DeleteOrderRequest.DeleteBean>> mapsDelete;
private long orderId ;
private int tableId;
private long tableId;
private byte type;
private long reasonId;
......@@ -38,11 +38,11 @@ public class DeleteOrderRequest {
this.orderId = orderId;
}
public int getTableId() {
public long getTableId() {
return tableId;
}
public void setTableId(int tableId) {
public void setTableId(long tableId) {
this.tableId = tableId;
}
......
......@@ -26,7 +26,7 @@ public interface TableService {
Observable<TableBean> getTables(@Query("restaurantId") int restaurantId);
@GET("restaurantTable/get" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<TableDetail> getTable(@Query("id") int table);
Observable<TableDetail> getTable(@Query("id") long table);
@POST("restaurantTable/kickOff" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseRespose> openTable(@Body RequestBody requestBody);
......@@ -36,4 +36,10 @@ public interface TableService {
@POST("restaurantTable/set/status" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseRespose> initTable(@Body RequestBody requestBody);
@GET("restaurantTable/getSplitTableAvailable" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> getSplitTables(@Query("tableId") long tableId);
@GET("restaurantTable/getSplitTable" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> splitTable(@Query("tableId") long tableId);
}
......@@ -324,7 +324,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
/**
* 添加會員項
*/
private void addOrderMember(){
private void addOrderMember() {
}
......@@ -729,9 +729,16 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
protected CreateOrderRequest getCreateOrderRequest(List<OrderDetail> foodList) {
List<OrderDetail> newFoodList = new ArrayList<>();
newFoodList.addAll(foodList);
if (GsaCloudApplication.androidSetting.isMergeSendFood()) {
//合并未送单主食品
mergeMainFoodNumber(newFoodList);
}
int restaurantId = GsaCloudApplication.getRestaurantId(mApplication);
CreateOrderRequest request = new CreateOrderRequest();
request.setOrderDetails(orderDetailBeanToFoodRequest(foodList));
request.setOrderDetails(orderDetailBeanToFoodRequest(newFoodList));
request.setPerson(OpenTableManage.getDefault().getPeopleNumber());
request.setTableId(OpenTableManage.getDefault().getTableBean().getId());
request.setTableName(OpenTableManage.getDefault().getTableBean().getTableName());
......@@ -745,8 +752,15 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
protected AddOrderRequest getAddOrderRequest(List<OrderDetail> foodList) {
List<OrderDetail> newFoodList = new ArrayList<>();
newFoodList.addAll(foodList);
if (GsaCloudApplication.androidSetting.isMergeSendFood()) {
//合并未送单主食品
mergeMainFoodNumber(newFoodList);
}
AddOrderRequest request = new AddOrderRequest();
request.setMaps(orderDetailBeanToAddFoodRequest(foodList));
request.setMaps(orderDetailBeanToAddFoodRequest(newFoodList));
request.setOrderId(MyOrderManage.getInstance().getOrderId());
request.setTableId(OpenTableManage.getDefault().getTableBean().getId());
Double rounding = getRounding();
......@@ -758,6 +772,7 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
return request;
}
protected Map<Long, List<OrderBean.OrderDetailsBean>> orderDetailBeanToFoodRequest(List<OrderDetail> foodList) {
Map<Long, List<OrderBean.OrderDetailsBean>> orderDetails = new HashMap<>();
if (foodList != null) {
......@@ -906,6 +921,54 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
/**
* 合并新下单主食品数量
*
* @param foodList
*/
private void mergeMainFoodNumber(List<OrderDetail> foodList) {
for (int i = 0; i < foodList.size(); i++) {
OrderDetail orderFood = foodList.get(i);
if (!orderFood.isNew() || orderFood.getItemType() != 1)
continue;
if (hasChildFood(foodList, orderFood))
continue;
//合并总数量
int mergeNum = orderFood.getNumber();
for (int j = i; j < foodList.size(); j++) {
if (!orderFood.isNew() || i == j)
continue;
OrderDetail mergeFood = foodList.get(j);
boolean canMerge = mergeFood.getItemType() == 1 && mergeFood.getProductId() == orderFood.getProductId() && !hasChildFood(foodList, mergeFood);
if (canMerge) {
//合并数量
mergeNum += mergeFood.getNumber();
//移除已合并的食品
foodList.remove(j);
}
}
orderFood.setNumber(mergeNum);
}
}
/**
* 是否包含子项
*
* @param orderDetailList
* @param orderDetail
* @return
*/
private boolean hasChildFood(List<OrderDetail> orderDetailList, OrderDetail orderDetail) {
if (orderDetail.getItemType() == 3)
return false;
for (int i = 0; i < orderDetailList.size(); i++) {
if (orderDetailList.get(i).getParentIndex() == orderDetail.getMyIndex()) {
return true;
}
}
return false;
}
/**
* 根據主食品ID獲取對應折扣ID
*
* @param orderItems
......
......@@ -385,7 +385,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
// });
}
public void printOrder(int tableId, boolean isSend) {
public void printOrder(long tableId, boolean isSend) {
RequestBody requestBody = new FormBody.Builder()
.add("tableId", tableId + "")
.build();
......@@ -530,7 +530,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
});
}
public void getTable(int tableId, TextView tv_table_name) {
public void getTable(long tableId, TextView tv_table_name) {
mModel.getTable(tableId)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(null))
......
......@@ -345,7 +345,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
private void initOrderDetail() {
TableBean.DataBean dataBean = OpenTableManage.getDefault().getTableBean();
if (dataBean != null) {
if (TextUtils.isEmpty(dataBean.getTableNumber())) {
btn_table.setText(dataBean.getTableName());
} else {
btn_table.setText(dataBean.getTableName());
}
btn_numberman.setText("人數:" + OpenTableManage.getDefault().getPeopleNumber() + "");
}
}
......@@ -676,6 +680,10 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
if (mPresenter.getSelectMealAdapter().getSelectedMode() == SelectMealAdapter.MULTIPLE_SELECTED)
return;
mPresenter.deleteFoodItem(1);
showViewModeVisibility(MealConstant.food_group_ViewMode, MealConstant.food_ViewMode);
SPUtils.put(this, MealConstant.EXIT_IS_PLU_MODE, false);
setPluMode();
} else if (id == R.id.btn_send_order) {
mPresenter.sendOrder(false);
} else if (id == R.id.fl_order_content) {
......
......@@ -9,6 +9,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
......@@ -22,6 +23,8 @@ import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.presenter.OrderContentPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.CommonTipDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.jess.arms.base.BaseActivity;
......@@ -118,6 +121,10 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
private String[] mTabTitles = {"編號", "全部", "狀態:全部"};
/**
* 分檯弹窗
*/
private SplitTableDialog mSplitTableDialog;
/**
* 切換餐檯狀態下拉框
*/
private QMUIPopup mTableStatusPopup;
......@@ -265,6 +272,11 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
}
@Override
public void returnSplitTableList(List<TableBean.DataBean> dataBeanList) {
}
@Override
public AllTableFragment getCurrentTableFragment() {
switch (mCurrentPageIndex) {
case FUNCTION_STATE_TABLE:
......@@ -280,7 +292,8 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
return;
switch (mPresenter.getCurrentChooseOperatType()) {
case TableOperatTypeConstant.splite_table_1:
setOperatContentText(dataBean.getTableName());
mPresenter.splitTable(dataBean.getId());
break;
case TableOperatTypeConstant.print_parper_2:
setOperatContentText(dataBean.getTableName());
......@@ -291,7 +304,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
mPresenter.showOperatTipDialog(dataBean);
break;
case TableOperatTypeConstant.move_table_4:
if(mPresenter.getOriginalTableId() == dataBean.getId()){
if (mPresenter.getOriginalTableId() == dataBean.getId()) {
CommonTipDialog.showCancelDialog(this, "相同檯不能转檯", OrderContentPresenter.class, mPresenter, "", null, null);
return;
}
......@@ -302,7 +315,11 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
break;
default:
mPresenter.openTable(dataBean.getId());
if (dataBean.getStatus() == 4) {
showSplitTableDialog(dataBean.getId());
} else {
mPresenter.openTable(dataBean.getId(), "");
}
break;
}
}
......@@ -378,10 +395,29 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
killMyself();
}
});
mPresenter.initTableParameter();
mPresenter.filterTableByOperatType();
}
private void showSplitTableDialog(long tableId) {
if (mSplitTableDialog == null) {
mSplitTableDialog = new SplitTableDialog(this);
mSplitTableDialog.setOnClickListener(new SplitTableDialog.OnClickListener() {
@Override
public void onItemClick(SplitTableDialog dialog,TableBean.DataBean item, int position) {
dialog.dismiss();
mPresenter.openTable(item.getId(),item.getTableNumber());
}
});
mSplitTableDialog.setOnRetryListener(new BaseRetryDialog.OnRetryListener() {
@Override
public void onRetryClick() {
mPresenter.getSplitTables(tableId);
}
});
}
mSplitTableDialog.show();
mPresenter.getSplitTables(tableId);
}
@Override
......@@ -629,4 +665,8 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
public void setCurrentSelectTableStatus(int mCurrentSelectTableStatus) {
this.mCurrentSelectTableStatus = mCurrentSelectTableStatus;
}
public SplitTableDialog getSplitTableDialog() {
return mSplitTableDialog;
}
}
......@@ -647,7 +647,7 @@ public class SelectMealAdapter extends DefaultAdapter<OrderDetail> {
return false;
}
private boolean hasChildFood(OrderDetail orderDetail) {
public boolean hasChildFood(OrderDetail orderDetail) {
if (orderDetail.getItemType() == 3)
return false;
for (int i = 0; i < mInfos.size(); i++) {
......
package com.gingersoft.gsa.cloud.table.mvp.ui.widget;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.TableAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.DiscountAdapter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog;
import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.utils.DeviceUtils;
import com.qmuiteam.qmui.layout.QMUILinearLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUIEmptyView;
import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-07-29
* 修订历史:2020-07-29
* 描述:
*/
public class SplitTableDialog extends BaseRetryDialog {
private static final String TAG = "SplitTableDialog";
private Context mContext;
private SplitTableDialog mDialog;
private int spanCount = 3;
private int mRadius;
private float mShadowAlpha = 0.25f;
private int mShadowElevationDp = 14;
private int mBagcolor;
private List<TableBean.DataBean> mItems;
private TableAdapter mAdapter;
private QMUITopBar mTopBar;
private QMUILinearLayout ll_container;
private QMUIEmptyView mEmptyView;
private ProgressBar progress;
private RecyclerView recycler_table;
private ImageView btn_close;
public SplitTableDialog(@NonNull Context context) {
super(context);
mContext = context;
mItems = new ArrayList<>();
mRadius = QMUIDisplayHelper.dp2px(mContext, 8);
}
public void addItem(TableBean.DataBean item) {
mItems.add(item);
}
public void addItems(List<TableBean.DataBean> items) {
if (mItems.size() > 0)
mItems.clear();
mItems.addAll(items);
}
public void notifyDataSetChanged(){
mAdapter.notifyDataSetChanged();
}
public SplitTableDialog build() {
if (mDialog != null) {
return mDialog;
}
mDialog = new SplitTableDialog(mContext);
View contentView = buildViews();
int screenHeight = (int) (QMUIDisplayHelper.getScreenHeight(mContext) * 0.7);
mDialog.setContentView(contentView, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, screenHeight));
return mDialog;
}
private View buildViews() {
View view = View.inflate(mContext, getContentViewLayoutId(), null);
mTopBar = view.findViewById(R.id.topbar);
recycler_table = view.findViewById(R.id.recycler_table);
ll_container = view.findViewById(R.id.ll_container);
mEmptyView = view.findViewById(R.id.emptyView);
progress = view.findViewById(R.id.progress);
// btn_close = view.findViewById(R.id.btn_close);
// btn_close.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// closeDialog() ;
// }
// });
ll_container.setRadiusAndShadow(mRadius, QMUIDisplayHelper.dp2px(mContext, mShadowElevationDp), mShadowAlpha);
initTopbar();
initTableRecycleView();
return view;
}
private void initTopbar() {
if (mBagcolor != 0) {
mTopBar.setBackgroundColor(mBagcolor);
} else {
mTopBar.setBackgroundColor(ContextCompat.getColor(mContext, R.color.theme_color));
}
mTopBar.setTitle("分檯");
}
private void initTableRecycleView() {
if (mAdapter == null) {
mAdapter = new TableAdapter(mContext, mItems, DeviceUtils.getScreenHeight(mContext), TableActivity.FUNCTION_ALL_TABLE);
}
mAdapter.setOnItemClickListener(new DefaultAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View view, int viewType, Object data, int position) {
if (onClickListener != null) {
onClickListener.onItemClick(SplitTableDialog.this,(TableBean.DataBean) data, position);
}
// closeDialog();
}
});
recycler_table.setLayoutManager(createLayoutManager());
recycler_table.setAdapter(mAdapter);
}
private RecyclerView.LayoutManager createLayoutManager() {
return new GridLayoutManager(mContext, spanCount, LinearLayoutManager.VERTICAL, false) {
@Override
public RecyclerView.LayoutParams generateDefaultLayoutParams() {
return new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
};
}
public void showEmptyView(boolean isSuccess, int size, Throwable t) {
showEmptyView(isSuccess, size, t,mEmptyView,recycler_table);
}
public void setProgressVisibility(boolean show) {
progress.setVisibility(show ? View.VISIBLE : View.INVISIBLE);
}
public void closeDialog() {
mDialog.dismiss();
}
public void setTopBarBagcolor(int mBagcolor) {
this.mBagcolor = mBagcolor;
}
protected int getContentViewLayoutId() {
return R.layout.table_dialog_split;
}
private SplitTableDialog.OnClickListener onClickListener;
public void setOnClickListener(SplitTableDialog.OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public interface OnClickListener {
void onItemClick(SplitTableDialog dialog,TableBean.DataBean item, int position);
}
}
<?xml version="1.0" encoding="utf-8"?>
<com.qmuiteam.qmui.layout.QMUILinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/theme_white_color"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
android:layout_width="match_parent"
android:layout_height="?attr/qmui_topbar_height"
app:qmui_topbar_title_color="@color/theme_white_color" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.qmuiteam.qmui.widget.QMUIEmptyView
android:id="@+id/emptyView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" />
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="invisible"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_table"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="3" />
</FrameLayout>
<!-- <ImageView-->
<!-- android:id="@+id/btn_close"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_margin="@dimen/dp_20"-->
<!-- android:src="@drawable/icon_dialog_close" />-->
</com.qmuiteam.qmui.layout.QMUILinearLayout>
\ No newline at end of file
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