Commit d088025b by Wyh

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

parents e860097a 029dc97d
...@@ -16,6 +16,9 @@ import androidx.annotation.NonNull; ...@@ -16,6 +16,9 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.widget.ViewPager2;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.bean.BaseResultOld;
import com.gingersoft.gsa.cloud.common.core.login.LoginBean; import com.gingersoft.gsa.cloud.common.core.login.LoginBean;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.user.UserConstans; import com.gingersoft.gsa.cloud.common.core.user.UserConstans;
......
...@@ -5,6 +5,7 @@ import com.jess.arms.di.scope.FragmentScope; ...@@ -5,6 +5,7 @@ import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds; import dagger.Binds;
import dagger.Module; import dagger.Module;
import dagger.Provides; import dagger.Provides;
import dagger.Subcomponent;
import com.gingersoft.gsa.cloud.manager.mvp.contract.AddAreaContract; import com.gingersoft.gsa.cloud.manager.mvp.contract.AddAreaContract;
import com.gingersoft.gsa.cloud.manager.mvp.model.AddAreaModel; import com.gingersoft.gsa.cloud.manager.mvp.model.AddAreaModel;
......
...@@ -25,6 +25,7 @@ import com.scwang.smartrefresh.layout.api.RefreshLayout; ...@@ -25,6 +25,7 @@ import com.scwang.smartrefresh.layout.api.RefreshLayout;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Stream;
import me.yokeyword.fragmentation.ISupportFragment; import me.yokeyword.fragmentation.ISupportFragment;
import me.yokeyword.fragmentation.anim.DefaultHorizontalAnimator; import me.yokeyword.fragmentation.anim.DefaultHorizontalAnimator;
......
...@@ -12,14 +12,12 @@ import android.widget.CheckBox; ...@@ -12,14 +12,12 @@ import android.widget.CheckBox;
import android.widget.CompoundButton; import android.widget.CompoundButton;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.table.TableArea; import com.gingersoft.gsa.cloud.common.core.table.TableArea;
import com.gingersoft.gsa.cloud.manager.R; import com.gingersoft.gsa.cloud.manager.R;
...@@ -234,14 +232,10 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements ...@@ -234,14 +232,10 @@ public class AreaListFragment extends BaseFragment<AreaListPresenter> implements
itemTouchHelperCallback.setOnMoveListener(new RecyItemTouchHelperCallback.onMoveListener() { itemTouchHelperCallback.setOnMoveListener(new RecyItemTouchHelperCallback.onMoveListener() {
@Override @Override
public void onMoveFinish(RecyclerView.Adapter adapter) { public void onMoveFinish(RecyclerView.Adapter adapter, String ids) {
if (adapter instanceof DefaultAdapter) { if (!TextUtils.isEmpty(ids)) {
DefaultAdapter defaultAdapter = (DefaultAdapter) adapter; if (!TextUtils.isEmpty(ids)) {
if (defaultAdapter.getInfos() != null) { mActivity.changeAreaSort(ids);
String ids = getTableAreaIds(defaultAdapter.getInfos());
if (!TextUtils.isEmpty(ids)) {
mActivity.changeAreaSort(ids);
}
} }
} }
} }
......
...@@ -29,6 +29,7 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -29,6 +29,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.core.table.TableArea; import com.gingersoft.gsa.cloud.common.core.table.TableArea;
import com.gingersoft.gsa.cloud.common.core.table.TableManagerItem; import com.gingersoft.gsa.cloud.common.core.table.TableManagerItem;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.manager.R; import com.gingersoft.gsa.cloud.manager.R;
import com.gingersoft.gsa.cloud.manager.R2; import com.gingersoft.gsa.cloud.manager.R2;
import com.gingersoft.gsa.cloud.manager.di.component.DaggerTableListComponent; import com.gingersoft.gsa.cloud.manager.di.component.DaggerTableListComponent;
...@@ -318,14 +319,10 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen ...@@ -318,14 +319,10 @@ public class TableListFragment extends BaseFragment<TableListPresenter> implemen
itemTouchHelperCallback.setOnMoveListener(new RecyItemTouchHelperCallback.onMoveListener() { itemTouchHelperCallback.setOnMoveListener(new RecyItemTouchHelperCallback.onMoveListener() {
@Override @Override
public void onMoveFinish(RecyclerView.Adapter adapter) { public void onMoveFinish(RecyclerView.Adapter adapter,String ids) {
if (mAdapter instanceof QMUIStickySectionAdapter) { if (!TextUtils.isEmpty(ids)) {
QMUIStickySectionAdapter qmuiStickySectionAdapter = (QMUIStickySectionAdapter) mAdapter;
List<QMUISection<SectionHeader, TableManagerItem>> qmuiSectionList = qmuiStickySectionAdapter.getCurrentData();
String ids = getTableIds(qmuiSectionList);
if (!TextUtils.isEmpty(ids)) { if (!TextUtils.isEmpty(ids)) {
mActivity.changeTableSort(getTableIds(qmuiSectionList)); mActivity.changeTableSort(ids);
} }
} }
} }
......
...@@ -203,6 +203,7 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> { ...@@ -203,6 +203,7 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> {
layout.addView(getDiningFoodList(mContext, foodList, printerDeviceBean, 0, true)); layout.addView(getDiningFoodList(mContext, foodList, printerDeviceBean, 0, true));
layout.addView(getHalfLine(mContext)); layout.addView(getHalfLine(mContext));
List<BillingBean> billingBeans = new ArrayList<>(); List<BillingBean> billingBeans = new ArrayList<>();
//添加合計項 //添加合計項
billingBeans.add(new BillingBean("合計", mPrintSlipContent.getWholeAmount())); billingBeans.add(new BillingBean("合計", mPrintSlipContent.getWholeAmount()));
//添加其他金額項 //添加其他金額項
......
...@@ -114,52 +114,53 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -114,52 +114,53 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
PrinterFlowProxy.newInstance().registerPrinterFlowListener(new PrinterFlowListener() { PrinterFlowProxy.newInstance().registerPrinterFlowListener(printerFlowListener);
}
@Override private PrinterFlowListener printerFlowListener = new PrinterFlowListener() {
public void connectionBefore(String deviceName, String IP, int port, long ioTimeout, long printTimeout) { @Override
public void connectionBefore(String deviceName, String IP, int port, long ioTimeout, long printTimeout) {
} }
@Override @Override
public void connectionSuccess() { public void connectionSuccess() {
printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_PRINTING, PrinterLoadingDialog.STATUS_SUCCESS, null); printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_PRINTING, PrinterLoadingDialog.STATUS_SUCCESS, null);
} }
@Override @Override
public void connectionError(Exception e) { public void connectionError(Exception e) {
printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_PRINTING, PrinterLoadingDialog.STATUS_ERROR, e.getMessage()); printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_PRINTING, PrinterLoadingDialog.STATUS_ERROR, e.getMessage());
printFail(); printFail();
} }
@Override @Override
public void disconnect(Exception e) { public void disconnect(Exception e) {
} }
@Override @Override
public void onPrinterDataBefore(int orderType, int printType, String printerData, String printerDeviceInfo) { public void onPrinterDataBefore(int orderType, int printType, String printerData, String printerDeviceInfo) {
printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_CONNECTING, PrinterLoadingDialog.STATUS_SUCCESS, null); printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_CONNECTING, PrinterLoadingDialog.STATUS_SUCCESS, null);
} }
@Override @Override
public void onPrinterBitmapBefore(int orderType, int printType, String directoryName, List<Bitmap> bitmaps) { public void onPrinterBitmapBefore(int orderType, int printType, String directoryName, List<Bitmap> bitmaps) {
printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_CONNECTING, PrinterLoadingDialog.STATUS_SUCCESS, null); printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_CONNECTING, PrinterLoadingDialog.STATUS_SUCCESS, null);
} }
@Override @Override
public void onPrintSuccess() { public void onPrintSuccess() {
printerResult = true; printerResult = true;
printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_RESULT, PrinterLoadingDialog.STATUS_SUCCESS, null); printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_RESULT, PrinterLoadingDialog.STATUS_SUCCESS, null);
printSuccess(); printSuccess();
} }
@Override @Override
public void onPrintError(Exception e, int errorCode) { public void onPrintError(Exception e, int errorCode) {
printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_RESULT, PrinterLoadingDialog.STATUS_ERROR, e.getMessage()); printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_RESULT, PrinterLoadingDialog.STATUS_ERROR, e.getMessage());
printFail(); printFail();
} }
}); };
}
private void printFail() { private void printFail() {
printerResult = false; printerResult = false;
...@@ -544,6 +545,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -544,6 +545,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
printerInIt.disconnectEpson(); printerInIt.disconnectEpson();
} }
printerLoadingDialog.dismiss(); printerLoadingDialog.dismiss();
PrinterFlowProxy.newInstance().unregisterPrinterFlowListener(printerFlowListener);
} }
@Override @Override
......
...@@ -11,6 +11,7 @@ import com.gingersoft.gsa.cloud.database.bean.Food; ...@@ -11,6 +11,7 @@ import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.FoodCombo; import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier; import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse; import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
...@@ -108,6 +109,7 @@ public interface MealStandContract { ...@@ -108,6 +109,7 @@ public interface MealStandContract {
void setModifierTop(int Margins); void setModifierTop(int Margins);
void setCustomFoodDialog(int customType, OrderDetail foodItem);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.model; ...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.database.bean.ComboItem; import com.gingersoft.gsa.cloud.database.bean.ComboItem;
import com.gingersoft.gsa.cloud.database.bean.Discount; import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
...@@ -27,13 +28,19 @@ import com.jess.arms.di.scope.ActivityScope; ...@@ -27,13 +28,19 @@ import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel; import com.jess.arms.mvp.BaseModel;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Action;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function; import io.reactivex.functions.Function;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import retrofit2.Retrofit;
/** /**
...@@ -91,7 +98,7 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model ...@@ -91,7 +98,7 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
@Override @Override
public List<Modifier> queryDB_ModifierList(long fid, int mode) { public List<Modifier> queryDB_ModifierList(long fid, int mode) {
ModifierDaoUtils daoUtils = new ModifierDaoUtils(mApplication); ModifierDaoUtils daoUtils = new ModifierDaoUtils(mApplication);
return MealStyleUtils.assemblyModifiersColor(daoUtils.queryModifiersByFid(fid, mode)) ; return MealStyleUtils.assemblyModifiersColor(daoUtils.queryModifiersByFid(fid, mode));
} }
@Override @Override
......
...@@ -27,19 +27,10 @@ public class AddOrderRequest { ...@@ -27,19 +27,10 @@ public class AddOrderRequest {
private long tableId; private long tableId;
private String tableNumber; private String tableNumber;
/** /**
* 合計金額
*/
/**
* 服務費
*/
/**
* 賬單小數 * 賬單小數
*/ */
private Double rounding; private Double rounding;
/** private List<Long> deleteDiscountIds;
* 總金額
*/
private List<OrderDiscountRequest> discountDetails; private List<OrderDiscountRequest> discountDetails;
private Map<String, List<OrderResponse.OrderDetailsBean>> maps; private Map<String, List<OrderResponse.OrderDetailsBean>> maps;
private List<DeleteOrderRequest> deleteOrders; private List<DeleteOrderRequest> deleteOrders;
......
...@@ -27,15 +27,17 @@ public class MealConditionFilterUtils { ...@@ -27,15 +27,17 @@ public class MealConditionFilterUtils {
* @return * @return
*/ */
public static List<Food> foodConditionFilter(List<Food> foodList, int summary) { public static List<Food> foodConditionFilter(List<Food> foodList, int summary) {
String strSummary = String.valueOf(summary);
List<Food> newFoodList = new ArrayList<>(); List<Food> newFoodList = new ArrayList<>();
for (Food food : foodList) { if (foodList == null || foodList.size() > 0) {
String foodSummary = food.getFoodSummary(); String strSummary = String.valueOf(summary);
if (!TextUtils.isEmpty(foodSummary)) { for (Food food : foodList) {
String[] summarys = foodSummary.split(","); String foodSummary = food.getFoodSummary();
for (String item : summarys) { if (!TextUtils.isEmpty(foodSummary)) {
if (item.equals(strSummary)) { String[] summarys = foodSummary.split(",");
newFoodList.add(food); for (String item : summarys) {
if (item.equals(strSummary)) {
newFoodList.add(food);
}
} }
} }
} }
...@@ -51,15 +53,17 @@ public class MealConditionFilterUtils { ...@@ -51,15 +53,17 @@ public class MealConditionFilterUtils {
* @return * @return
*/ */
public static List<ComboItem> comboConditionFilter(List<ComboItem> comboItemList, int summary) { public static List<ComboItem> comboConditionFilter(List<ComboItem> comboItemList, int summary) {
String strSummary = String.valueOf(summary);
List<ComboItem> newComboItemList = new ArrayList<>(); List<ComboItem> newComboItemList = new ArrayList<>();
for (ComboItem comboItem : comboItemList) { if (newComboItemList == null || newComboItemList.size() > 0) {
String foodSummary = comboItem.getFoodSummary(); String strSummary = String.valueOf(summary);
if (!TextUtils.isEmpty(foodSummary)) { for (ComboItem comboItem : comboItemList) {
String[] summarys = foodSummary.split(","); String foodSummary = comboItem.getFoodSummary();
for (String item : summarys) { if (!TextUtils.isEmpty(foodSummary)) {
if (item.equals(strSummary)) { String[] summarys = foodSummary.split(",");
newComboItemList.add(comboItem); for (String item : summarys) {
if (item.equals(strSummary)) {
newComboItemList.add(comboItem);
}
} }
} }
} }
......
...@@ -320,6 +320,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -320,6 +320,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
//整單折扣 //整單折扣
Discount discount = new Discount(); Discount discount = new Discount();
discount.setId(orderDiscount.getDiscountId()); discount.setId(orderDiscount.getDiscountId());
discount.setDiscountRecordId(orderDiscount.getId());
discount.setType(orderDiscount.getDiscountType()); discount.setType(orderDiscount.getDiscountType());
discount.setRemark(orderDiscount.getRemark()); discount.setRemark(orderDiscount.getRemark());
discount.setDiscountValue(orderDiscount.getDiscountValue()); discount.setDiscountValue(orderDiscount.getDiscountValue());
...@@ -336,6 +337,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -336,6 +337,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
LoganManager.w_tableMode(TAG, "已下單優惠券折扣金額=" + orderDiscount.getDiscountAmount()); LoganManager.w_tableMode(TAG, "已下單優惠券折扣金額=" + orderDiscount.getDiscountAmount());
//優惠券折扣 //優惠券折扣
CouponDiscountBean couponDiscount = new CouponDiscountBean(); CouponDiscountBean couponDiscount = new CouponDiscountBean();
couponDiscount.setDiscountRecordId(orderDiscount.getId());
couponDiscount.setCouponTypeName1(orderDiscount.getRemark()); couponDiscount.setCouponTypeName1(orderDiscount.getRemark());
couponDiscount.setCouponTypeName2(orderDiscount.getRemark2()); couponDiscount.setCouponTypeName2(orderDiscount.getRemark2());
couponDiscount.setCouponTypeName3(orderDiscount.getRemark3()); couponDiscount.setCouponTypeName3(orderDiscount.getRemark3());
...@@ -1013,7 +1015,9 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -1013,7 +1015,9 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
if (mDoshokuOrder.getDeleteMealOrders() != null) { if (mDoshokuOrder.getDeleteMealOrders() != null) {
request.setDeleteOrders(mDoshokuOrder.getDeleteMealOrders()); request.setDeleteOrders(mDoshokuOrder.getDeleteMealOrders());
} }
if (mDoshokuOrder.getDeleteDiscountIds() != null) {
request.setDeleteDiscountIds(mDoshokuOrder.getDeleteDiscountIds());
}
Double rounding = getRounding(); Double rounding = getRounding();
request.setRounding(rounding != null ? rounding : 0); request.setRounding(rounding != null ? rounding : 0);
......
...@@ -212,13 +212,16 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -212,13 +212,16 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
public void initMealData() { public void initMealData() {
long startTime = System.currentTimeMillis();
List<Food> foodGroupList = mModel.queryDB_FoodGroupList(BaseOrder.orderType); List<Food> foodGroupList = mModel.queryDB_FoodGroupList(BaseOrder.orderType);
long endTime = System.currentTimeMillis();
LoganManager.w_tableMode(TAG, "queryDB_FoodGroupList執行時間-》" + (endTime - startTime));
if (foodGroupList != null && foodGroupList.size() > 0) { if (foodGroupList != null && foodGroupList.size() > 0) {
// for (Food foodGroup: foodGroupList) {
// foodGroup.setColorBean(foodGroup.getColorBean());
// }
mFoodGroupList.addAll(foodGroupList); mFoodGroupList.addAll(foodGroupList);
Food defalutFoodGroup = getDefalutFoodGroup(mFoodGroupList); Food defalutFoodGroup = getDefalutFoodGroup(mFoodGroupList);
...@@ -327,8 +330,13 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -327,8 +330,13 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
changedMealByParentId(datasBean.getId()); changedMealByParentId(datasBean.getId());
} else { } else {
mCurrentOrderDetailBean = OrderDetail.foodTransOrderDetails(datasBean, 1); mCurrentOrderDetailBean = OrderDetail.foodTransOrderDetails(datasBean, 1);
//加載套餐食品 if (datasBean.getCustomType() == null) {
loadComboData(mCurrentOrderDetailBean, false); //自定義食品
mRootView.setCustomFoodDialog(Food.CUSTOM_TYPE_100, mCurrentOrderDetailBean);
} else {
//加載套餐食品
loadComboData(mCurrentOrderDetailBean, false);
}
} }
} }
}); });
...@@ -418,7 +426,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -418,7 +426,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
}); });
} }
private void addFoodItemBefore(OrderDetail datasBean) { private void addFoodItemBefore(OrderDetail datasBean) {
int addPosition = addFoodItem(datasBean); int addPosition = addFoodItem(datasBean);
//这里主食品作为选中主体 //这里主食品作为选中主体
...@@ -561,7 +568,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -561,7 +568,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
} }
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
} }
...@@ -584,19 +590,22 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -584,19 +590,22 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
if (IActivity.getCurrentViewMode() != MealConstant.fine_ViewMode && isSelectedMeal || autoMod) { if (IActivity.getCurrentViewMode() != MealConstant.fine_ViewMode && isSelectedMeal || autoMod) {
mRootView.showViewModeVisibility(MealConstant.combo_ViewMode); mRootView.showViewModeVisibility(MealConstant.combo_ViewMode);
} }
if (!RvMealClicked) { toAddFoodItem(mCurrentOrderDetailBean);
//新增食品
addFoodItemBefore(mCurrentOrderDetailBean);
//更新沽清食品數量
updateFoodSoldoutCtrData();
//更新賬單金額
updateBillInfo();
}
updateOrderFoodNumber();
} }
}); });
} }
public void toAddFoodItem(OrderDetail foodItem) {
if (!RvMealClicked) {
//新增食品
addFoodItemBefore(foodItem);
//更新沽清食品數量
updateFoodSoldoutCtrData();
//更新賬單金額
updateBillInfo();
}
updateOrderFoodNumber();
}
/** /**
* 裁減掉已超出的細項 * 裁減掉已超出的細項
...@@ -1185,12 +1194,33 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1185,12 +1194,33 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
} }
public void changedMealByParentId(long parentId) { public void changedMealByParentId(long parentId) {
long startTime = System.currentTimeMillis();
List<Food> foodList = mModel.queryDB_FoodList(parentId, BaseOrder.orderType); List<Food> foodList = mModel.queryDB_FoodList(parentId, BaseOrder.orderType);
long endTime = System.currentTimeMillis();
LoganManager.w_tableMode(TAG, "queryDB_FoodList執行時間-》" + (endTime - startTime));
mFoodAdapter.resetSelect(-1, null); mFoodAdapter.resetSelect(-1, null);
if (foodList != null) { if (foodList != null) {
updateFoodData(foodList, parentId); updateFoodData(foodList, parentId);
} }
mRootView.showViewModeVisibility(MealConstant.food_ViewMode, MealConstant.food_group_ViewMode); mRootView.showViewModeVisibility(MealConstant.food_ViewMode, MealConstant.food_group_ViewMode);
// .subscribeOn(Schedulers.io())
// .subscribeOn(AndroidSchedulers.mainThread())
// .observeOn(AndroidSchedulers.mainThread())
// .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
// .subscribe(new ErrorHandleSubscriber<List<Food>>(mErrorHandler) {
//
// @Override
// public void onNext(@NonNull List<Food> foodList) {
// mFoodAdapter.resetSelect(-1, null);
// if (foodList != null) {
// updateFoodData(foodList, parentId);
// }
// mRootView.showViewModeVisibility(MealConstant.food_ViewMode, MealConstant.food_group_ViewMode);
// }
// });
} }
/** /**
...@@ -1821,10 +1851,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -1821,10 +1851,6 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
* @param parentId * @param parentId
*/ */
private void updateFoodData(List<Food> foodList, long parentId) { private void updateFoodData(List<Food> foodList, long parentId) {
for (Food food : foodList) {
ColorBean colorBean = food.getColorBean();
int i = 0;
}
setTopId(foodList, parentId); setTopId(foodList, parentId);
setFoodComboListStatus(foodList); setFoodComboListStatus(foodList);
mFoodList.clear(); mFoodList.clear();
......
...@@ -29,6 +29,8 @@ import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse; ...@@ -29,6 +29,8 @@ import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.order.billItem.BillItem; import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.billItem.DiscountItem; import com.gingersoft.gsa.cloud.order.billItem.DiscountItem;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.discount.CouponDiscount;
import com.gingersoft.gsa.cloud.order.discount.MemberDiscount;
import com.gingersoft.gsa.cloud.order.discount.NomalDiscount; import com.gingersoft.gsa.cloud.order.discount.NomalDiscount;
import com.gingersoft.gsa.cloud.order.order.BaseOrder; import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
...@@ -175,7 +177,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -175,7 +177,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override @Override
public void onItemClick(View v, Function function) { public void onItemClick(View v, Function function) {
LoganManager.w_tableMode(TAG, LoganManager.EVENT_CLICK,function.getResName()); LoganManager.w_tableMode(TAG, LoganManager.EVENT_CLICK, function.getResName());
mRootView.recordOperat(true); mRootView.recordOperat(true);
...@@ -237,7 +239,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -237,7 +239,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override @Override
public boolean onItemLongClick(View v, Function datasBean) { public boolean onItemLongClick(View v, Function datasBean) {
LoganManager.w_tableMode(TAG, LoganManager.EVENT_LONG_CLICK,datasBean.getResName()); LoganManager.w_tableMode(TAG, LoganManager.EVENT_LONG_CLICK, datasBean.getResName());
if (datasBean.getResName().equals("印單") || datasBean.getResName().equals("送單")) { if (datasBean.getResName().equals("印單") || datasBean.getResName().equals("送單")) {
PrinterUtils.switchPrintMethod(IActivity, datasBean, mOrderTopFunctionAdapter); PrinterUtils.switchPrintMethod(IActivity, datasBean, mOrderTopFunctionAdapter);
} }
...@@ -253,11 +255,29 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -253,11 +255,29 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
@Override @Override
public void onItemDeleteClick(BillItem datasBean, int position) { public void onItemDeleteClick(BillItem datasBean, int position) {
addDeleteDiscountIdByType(datasBean);
removeBillItemByPosition(position); removeBillItemByPosition(position);
} }
}); });
} }
/**
* 跟进折扣类型将Id加入到删除列表,注:会员折扣不可删除
*
* @param item
*/
private void addDeleteDiscountIdByType(BillItem item) {
if (item instanceof DiscountItem) {
if (item.getType() == BillItem.NOMAL_DISCOUNT_TYPE) {
NomalDiscount nomalDiscount = (NomalDiscount) ((DiscountItem) item).getDiscount();
mDoshokuOrder.addDeleteDiscountId(nomalDiscount.getDiscount().getDiscountRecordId());
} else if (item.getType() == BillItem.COUPON_DISCOUNT_TYPE) {
CouponDiscount couponDiscount = (CouponDiscount) ((DiscountItem) item).getDiscount();
mDoshokuOrder.addDeleteDiscountId(couponDiscount.getCouponDiscountId());
}
}
}
public void initTopFunctionData() { public void initTopFunctionData() {
if (mFunctionList.size() > 0) { if (mFunctionList.size() > 0) {
mFunctionList.clear(); mFunctionList.clear();
...@@ -404,7 +424,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -404,7 +424,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
.setActionName("printActivity") .setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SERVE) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SERVE)
.addParam(PrintConstans.PRINT_CONTENT, printContent) .addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO,DoshokuOrder.getInstance().getOrderNo()) .addParam(PrintConstans.PRINT_ORDER_NO, DoshokuOrder.getInstance().getOrderNo())
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
if (result.isSuccess()) { if (result.isSuccess()) {
...@@ -451,7 +471,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -451,7 +471,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
CC.obtainBuilder(ComponentName.COMPONENT_PRINT) CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SLIP)//印單 .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SLIP)//印單
.addParam(PrintConstans.PRINT_CONTENT, printContent) .addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO,DoshokuOrder.getInstance().getOrderNo()) .addParam(PrintConstans.PRINT_ORDER_NO, DoshokuOrder.getInstance().getOrderNo())
.setActionName("printActivity") .setActionName("printActivity")
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
......
...@@ -239,6 +239,8 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -239,6 +239,8 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
} }
whetherFreeService = payMethod.getWhetherFreeService(); whetherFreeService = payMethod.getWhetherFreeService();
orderPay.setAmount(payMethod.getPayMoney()); orderPay.setAmount(payMethod.getPayMoney());
orderPay.setWhetherReportCount(payMethod.getWhetherReportCount());
orderPay.setPayName(payMethod.getPayName());
payRequest.getOrderPays().add(orderPay); payRequest.getOrderPays().add(orderPay);
} }
payRequest.setWhetherFreeService(whetherFreeService); payRequest.setWhetherFreeService(whetherFreeService);
......
...@@ -6,15 +6,19 @@ import android.graphics.Color; ...@@ -6,15 +6,19 @@ import android.graphics.Color;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.SystemClock; import android.os.SystemClock;
import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.SparseArray; import android.util.SparseArray;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.Chronometer; import android.widget.Chronometer;
import android.widget.EditText;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
...@@ -65,12 +69,14 @@ import com.gingersoft.gsa.cloud.table.di.component.DaggerMealStandComponent; ...@@ -65,12 +69,14 @@ 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.contract.MealStandContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood; import com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.event.InitTableEvent; import com.gingersoft.gsa.cloud.table.mvp.model.bean.event.InitTableEvent;
import com.gingersoft.gsa.cloud.table.mvp.model.constant.OrderConentActionConstant;
import com.gingersoft.gsa.cloud.table.mvp.presenter.MealStandPresenter; import com.gingersoft.gsa.cloud.table.mvp.presenter.MealStandPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BaseFragmentAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BaseFragmentAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemAllFragment; import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemAllFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.CustomFoodDialog;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.UseMemberDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.UseMemberDialog;
import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerConfig; import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerConfig;
import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridLayoutManager; import com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridLayoutManager;
...@@ -86,8 +92,12 @@ import com.jess.arms.base.BaseFragmentActivity; ...@@ -86,8 +92,12 @@ import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.lxj.xpopup.util.KeyboardUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView; import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.util.QMUIDisplayHelper; import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
import org.simple.eventbus.EventBus; import org.simple.eventbus.EventBus;
...@@ -1401,6 +1411,20 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -1401,6 +1411,20 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
} }
@Override @Override
public void setCustomFoodDialog(int customType, OrderDetail foodItem) {
new CustomFoodDialog(mContext, customType)
.create(R.style.MyEditDialogTheme)
.setOnEditListener((dialog, name, money) -> {
dialog.dismiss();
foodItem.setProductName(name);
foodItem.setUnit_price(Double.parseDouble(money));
foodItem.setPrice(foodItem.getUnit_price());
mPresenter.toAddFoodItem(foodItem);
})
.show();
}
@Override
public void showBtnMealModifyRestoreVisibility(boolean show) { public void showBtnMealModifyRestoreVisibility(boolean show) {
btn_meal_modify_restore.setVisibility(show ? View.VISIBLE : View.GONE); btn_meal_modify_restore.setVisibility(show ? View.VISIBLE : View.GONE);
} }
......
...@@ -9,9 +9,7 @@ import android.view.ViewGroup; ...@@ -9,9 +9,7 @@ import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication; import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.database.bean.ColorBean; import com.gingersoft.gsa.cloud.database.bean.ColorBean;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
......
package com.gingersoft.gsa.cloud.table.mvp.ui.widget;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.MessageQueue;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.table.R;
import com.jess.arms.utils.ArmsUtils;
import com.lxj.xpopup.util.KeyboardUtils;
import com.qmuiteam.qmui.layout.QMUILinearLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton;
/**
* @作者: bin
* @創建時間: 2021-03-11 17:38
* @更新時間: 2021-03-11 17:38
* @描述:
*/
public class CustomFoodDialog {
private Context mContext;
private QMUIDialog customDialog;
private EditText ed_name, ed_money;
private int mRadius;
//0:value焦点、1:money焦点
private int currFocus = 0;
//0:清除、1:返回
private int clearOrReturn = 1;
private int mCustomType;
public CustomFoodDialog(Context context, int customType) {
this.mContext = context;
this.mCustomType = customType;
mRadius = QMUIDisplayHelper.dp2px(mContext, 8);
}
public CustomFoodDialog create(int style) {
customDialog = new QMUIDialog.CustomDialogBuilder(mContext)
.setLayout(R.layout.meal_dialog_custom_food)
.create(style);
buildViews();
return this;
}
public void show() {
if (customDialog != null) {
customDialog.show();
}
}
private void buildViews() {
QMUILinearLayout llContainer = customDialog.findViewById(R.id.lLayout_bg);
ViewStub vs_name = customDialog.findViewById(R.id.vs_name);
ViewStub vs_money = customDialog.findViewById(R.id.vs_money);
QMUIRoundButton btn_ok = customDialog.findViewById(R.id.btn_ok);
QMUIRoundButton btn_clear_or_return = customDialog.findViewById(R.id.btn_clear_or_return);
float mShadowAlpha = 0.25f;
int mShadowElevationDp = 14;
llContainer.setRadiusAndShadow(mRadius, QMUIDisplayHelper.dp2px(mContext, mShadowElevationDp), mShadowAlpha);
llContainer.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
if (mCustomType == Food.CUSTOM_TYPE_101) {
vs_name.inflate();
TextView tv_name = customDialog.findViewById(R.id.tv_name);
ed_name = customDialog.findViewById(R.id.ed_name);
tv_name.setText("名稱");
setOnFocusChangeListener(ed_name);
addTextChangedListener(ed_name, btn_clear_or_return);
} else if (mCustomType == Food.CUSTOM_TYPE_102) {
vs_money.inflate();
TextView tv_money = customDialog.findViewById(R.id.tv_money);
ed_money = customDialog.findViewById(R.id.et_money);
tv_money.setText("金額");
setOnFocusChangeListener(ed_money);
addTextChangedListener(ed_money, btn_clear_or_return);
} else {
vs_name.inflate();
vs_money.inflate();
TextView tv_name = customDialog.findViewById(R.id.tv_name);
TextView tv_money = customDialog.findViewById(R.id.tv_money);
ed_name = customDialog.findViewById(R.id.ed_name);
ed_money = customDialog.findViewById(R.id.et_money);
tv_name.setText("名稱");
tv_money.setText("金額");
setOnFocusChangeListener(ed_name);
setOnFocusChangeListener(ed_money);
addTextChangedListener(ed_name, btn_clear_or_return);
addTextChangedListener(ed_money, btn_clear_or_return);
}
btn_ok.setOnClickListener((view) -> {
if (ed_name != null) {
KeyboardUtils.hideSoftInput(ed_name);
}
if (ed_money != null) {
KeyboardUtils.hideSoftInput(ed_money);
}
String name = getTvNameText();
String money = getTvMoneyText();
if (onEditListener != null) {
onEditListener.onInput(customDialog,name, money);
}
});
btn_clear_or_return.setOnClickListener((view) -> {
if (clearOrReturn == 1) {
customDialog.cancel();
} else {
//检查焦点
String s;
switch (currFocus) {
case 0:
s = ed_name.getText().toString();
if (s.length() > 0) {
s = s.substring(0, s.length() - 1);
ed_name.setText(s);
ed_name.setSelection(s.length());
}
break;
case 1:
s = ed_money.getText().toString();
if (s.length() > 0) {
s = s.substring(0, s.length() - 1);
ed_money.setText(s);
ed_money.setSelection(s.length());
}
break;
}
}
});
}
private void setOnFocusChangeListener(EditText editText) {
editText.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) {
if (editText.getId() == R.id.ed_name) {
currFocus = 0;
} else {
currFocus = 1;
}
}
});
}
private void addTextChangedListener(EditText editText, Button btn_clear_or_return) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 0) {
clearOrReturn = 0;
} else {
clearOrReturn = 1;
}
}
@Override
public void afterTextChanged(Editable s) {
if (clearOrReturn == 0) {
btn_clear_or_return.setText(LanguageUtils.get_language_system(GsaCloudApplication.getAppContext(), "Meal.funcMoney.clear", "clear"));
} else {
btn_clear_or_return.setText(LanguageUtils.get_language_system(GsaCloudApplication.getAppContext(), "Return", "return"));
}
}
});
}
private String getTvNameText() {
return ed_name != null ? ed_name.getText().toString() : null;
}
private String getTvMoneyText() {
return ed_money != null ? ed_money.getText().toString() : null;
}
private OnEditListener onEditListener;
public CustomFoodDialog setOnEditListener(OnEditListener onEditListener) {
this.onEditListener = onEditListener;
return this;
}
public interface OnEditListener {
void onInput(Dialog dialog,String name, String money);
}
}
<?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/lLayout_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/theme_white_color"
android:orientation="vertical"
android:padding="@dimen/normal_space">
<TextView
android:layout_width="match_parent"
android:layout_height="@dimen/head_height"
android:gravity="center"
android:text="自定義食品"
android:textColor="@color/theme_text_color"
android:textSize="@dimen/sp_18" />
<ViewStub
android:id="@+id/vs_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/meal_layout_custom_food_name" />
<ViewStub
android:id="@+id/vs_money"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/meal_layout_custom_food_money" />
<LinearLayout
android:id="@+id/btns"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/normal_space">
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
android:id="@+id/btn_ok"
android:layout_width="0dp"
android:layout_height="@dimen/button_height"
android:layout_marginRight="@dimen/normal_space5"
android:layout_weight="1"
android:gravity="center"
android:text="確認"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/text_size_default"
app:qmui_backgroundColor="@color/theme_color"
app:qmui_radius="@dimen/dp_5" />
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
android:id="@+id/btn_clear_or_return"
android:layout_width="0dp"
android:layout_height="@dimen/button_height"
android:layout_marginRight="@dimen/normal_space5"
android:layout_weight="1"
android:gravity="center"
android:text="返回"
android:textColor="@color/theme_black"
android:textSize="@dimen/text_size_default"
app:qmui_backgroundColor="@color/theme_hint_color"
app:qmui_borderColor="@color/theme_hint_color"
app:qmui_radius="@dimen/dp_5" />
</LinearLayout>
</com.qmuiteam.qmui.layout.QMUILinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_money"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_money"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textColor="@color/black"
android:textSize="@dimen/sp_16" />
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/et_money"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/normal_space"
android:layout_weight="1"
android:background="@null"
android:hint="請輸入金額"
android:inputType="numberDecimal"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:singleLine="true"
android:textColor="@color/normal_color"
android:textColorHint="@color/hint_color"
android:textSize="@dimen/sp_16"
app:met_autoValidate="true"
app:met_baseColor="@color/theme_black"
app:met_clearButton="true"
app:met_floatingLabel="highlight"
app:met_iconPadding="2dp"
app:met_primaryColor="@color/theme_color"
app:met_singleLineEllipsis="false" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textColor="@color/black"
android:textSize="@dimen/sp_16" />
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/ed_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:hint="請輸入名稱"
android:layout_margin="@dimen/normal_space"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
android:singleLine="true"
android:textColor="@color/normal_color"
android:textColorHint="@color/hint_color"
android:textSize="@dimen/sp_16"
app:met_autoValidate="true"
app:met_clearButton="true"
app:met_floatingLabel="highlight"
app:met_iconPadding="2dp"
app:met_baseColor="@color/theme_black"
app:met_primaryColor="@color/theme_color"
app:met_singleLineEllipsis="false"/>
</LinearLayout>
\ No newline at end of file
...@@ -21,7 +21,7 @@ ext { ...@@ -21,7 +21,7 @@ ext {
rxlifecycle2SdkVersion : "2.2.1", rxlifecycle2SdkVersion : "2.2.1",
espressoSdkVersion : "3.0.1", espressoSdkVersion : "3.0.1",
fragmentationVersion : "1.3.8", fragmentationVersion : "1.3.8",
canarySdkVersion : "1.5.4", canarySdkVersion : "2.2",
] ]
buildType = [ buildType = [
...@@ -126,7 +126,7 @@ ext { ...@@ -126,7 +126,7 @@ ext {
"timber" : "com.jakewharton.timber:timber:4.6.0", "timber" : "com.jakewharton.timber:timber:4.6.0",
"logger" : "com.orhanobut:logger:2.1.1", "logger" : "com.orhanobut:logger:2.1.1",
"canary-debug" : "com.squareup.leakcanary:leakcanary-android:${version["canarySdkVersion"]}", "canary-debug" : "com.squareup.leakcanary:leakcanary-android:${version["canarySdkVersion"]}",
"canary-release" : "com.squareup.leakcanary:leakcanary-android-no-op:${version["canarySdkVersion"]}", "canary-release" : "com.squareup.leakcanary:leakcanary-android-no-op:1.6.3",
"umeng-analytics" : "com.umeng.analytics:analytics:6.0.1", "umeng-analytics" : "com.umeng.analytics:analytics:6.0.1",
// QMUI // QMUI
"qmui" : "com.qmuiteam:qmui:2.0.0-alpha03", "qmui" : "com.qmuiteam:qmui:2.0.0-alpha03",
......
...@@ -27,6 +27,8 @@ import com.jess.arms.base.BaseApplication; ...@@ -27,6 +27,8 @@ import com.jess.arms.base.BaseApplication;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.di.component.DaggerAppComponent; import com.jess.arms.di.component.DaggerAppComponent;
import com.jess.arms.di.module.GlobalConfigModule; import com.jess.arms.di.module.GlobalConfigModule;
import com.jess.arms.http.imageloader.glide.GlideArms;
import com.jess.arms.http.imageloader.glide.ImageConfigImpl;
import com.jess.arms.integration.ConfigModule; import com.jess.arms.integration.ConfigModule;
import com.jess.arms.integration.ManifestParser; import com.jess.arms.integration.ManifestParser;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
...@@ -258,6 +260,13 @@ public class AppDelegate implements App, AppLifecycles { ...@@ -258,6 +260,13 @@ public class AppDelegate implements App, AppLifecycles {
//系统正运行与低内存的状态并且你的进程正处于 LRU 列表中最容易被杀掉的位置, 你应该释放任何不影响你的 App 恢复状态的资源 //系统正运行与低内存的状态并且你的进程正处于 LRU 列表中最容易被杀掉的位置, 你应该释放任何不影响你的 App 恢复状态的资源
//低于 API 14 的 App 可以使用 onLowMemory 回调 //低于 API 14 的 App 可以使用 onLowMemory 回调
// case TRIM_MEMORY_COMPLETE: // case TRIM_MEMORY_COMPLETE:
//在 App 被置换到后台的时候,清理图片请求框架的内存缓存
if (level == TRIM_MEMORY_UI_HIDDEN) {
mAppComponent.imageLoader().clear(mApplication,
ImageConfigImpl.builder().isClearMemory(true).build());
}
//交给 Glide 处理内存情况
GlideArms.get(mApplication).trimMemory(level);
} }
@Override @Override
...@@ -274,6 +283,8 @@ public class AppDelegate implements App, AppLifecycles { ...@@ -274,6 +283,8 @@ public class AppDelegate implements App, AppLifecycles {
@Override @Override
public void onLowMemory() { public void onLowMemory() {
//系统正运行与低内存的状态并且你的进程正处于 LRU 列表中最容易被杀掉的位置, 你应该释放任何不影响你的 App 恢复状态的资源 //系统正运行与低内存的状态并且你的进程正处于 LRU 列表中最容易被杀掉的位置, 你应该释放任何不影响你的 App 恢复状态的资源
mAppComponent.imageLoader().clear(mApplication,
ImageConfigImpl.builder().isClearMemory(true).build());
} }
} }
......
...@@ -26,6 +26,7 @@ import com.jess.arms.http.log.FormatPrinter; ...@@ -26,6 +26,7 @@ import com.jess.arms.http.log.FormatPrinter;
import com.jess.arms.http.log.RequestInterceptor; import com.jess.arms.http.log.RequestInterceptor;
import com.jess.arms.http.imageloader.BaseImageLoaderStrategy; import com.jess.arms.http.imageloader.BaseImageLoaderStrategy;
import com.jess.arms.http.imageloader.glide.GlideImageLoaderStrategy; import com.jess.arms.http.imageloader.glide.GlideImageLoaderStrategy;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.integration.cache.Cache; import com.jess.arms.integration.cache.Cache;
import com.jess.arms.integration.cache.CacheType; import com.jess.arms.integration.cache.CacheType;
import com.jess.arms.integration.cache.LruCache; import com.jess.arms.integration.cache.LruCache;
...@@ -72,6 +73,7 @@ public class GlobalConfigModule { ...@@ -72,6 +73,7 @@ public class GlobalConfigModule {
private RequestInterceptor.Level mPrintHttpLogLevel; private RequestInterceptor.Level mPrintHttpLogLevel;
private FormatPrinter mFormatPrinter; private FormatPrinter mFormatPrinter;
private Cache.Factory mCacheFactory; private Cache.Factory mCacheFactory;
private IRepositoryManager.ObtainServiceDelegate mObtainServiceDelegate;
private GlobalConfigModule(Builder builder) { private GlobalConfigModule(Builder builder) {
this.mApiUrl = builder.apiUrl; this.mApiUrl = builder.apiUrl;
...@@ -88,6 +90,7 @@ public class GlobalConfigModule { ...@@ -88,6 +90,7 @@ public class GlobalConfigModule {
this.mPrintHttpLogLevel = builder.printHttpLogLevel; this.mPrintHttpLogLevel = builder.printHttpLogLevel;
this.mFormatPrinter = builder.formatPrinter; this.mFormatPrinter = builder.formatPrinter;
this.mCacheFactory = builder.cacheFactory; this.mCacheFactory = builder.cacheFactory;
this.mObtainServiceDelegate = builder.obtainServiceDelegate;
} }
public static Builder builder() { public static Builder builder() {
...@@ -222,6 +225,12 @@ public class GlobalConfigModule { ...@@ -222,6 +225,12 @@ public class GlobalConfigModule {
} : mCacheFactory; } : mCacheFactory;
} }
@Singleton
@Provides
@Nullable
IRepositoryManager.ObtainServiceDelegate provideObtainServiceDelegate() {
return mObtainServiceDelegate;
}
public static final class Builder { public static final class Builder {
private HttpUrl apiUrl; private HttpUrl apiUrl;
...@@ -238,6 +247,7 @@ public class GlobalConfigModule { ...@@ -238,6 +247,7 @@ public class GlobalConfigModule {
private RequestInterceptor.Level printHttpLogLevel; private RequestInterceptor.Level printHttpLogLevel;
private FormatPrinter formatPrinter; private FormatPrinter formatPrinter;
private Cache.Factory cacheFactory; private Cache.Factory cacheFactory;
private IRepositoryManager.ObtainServiceDelegate obtainServiceDelegate;
private Builder() { private Builder() {
} }
...@@ -319,6 +329,11 @@ public class GlobalConfigModule { ...@@ -319,6 +329,11 @@ public class GlobalConfigModule {
return this; return this;
} }
public Builder obtainServiceDelegate(IRepositoryManager.ObtainServiceDelegate obtainServiceDelegate) {
this.obtainServiceDelegate = obtainServiceDelegate;
return this;
}
public GlobalConfigModule build() { public GlobalConfigModule build() {
return new GlobalConfigModule(this); return new GlobalConfigModule(this);
} }
......
...@@ -17,8 +17,12 @@ package com.jess.arms.integration; ...@@ -17,8 +17,12 @@ package com.jess.arms.integration;
import android.content.Context; import android.content.Context;
import androidx.annotation.Nullable;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import retrofit2.Retrofit;
/** /**
* ================================================ * ================================================
* 用来管理网络请求层,以及数据缓存层,以后可能添加数据库请求层 * 用来管理网络请求层,以及数据缓存层,以后可能添加数据库请求层
...@@ -57,4 +61,9 @@ public interface IRepositoryManager { ...@@ -57,4 +61,9 @@ public interface IRepositoryManager {
Context getContext(); Context getContext();
interface ObtainServiceDelegate {
@Nullable
<T> T createRetrofitService(Retrofit retrofit, Class<T> serviceClass);
}
} }
...@@ -18,11 +18,15 @@ package com.jess.arms.integration; ...@@ -18,11 +18,15 @@ package com.jess.arms.integration;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import androidx.annotation.Nullable;
import com.jess.arms.integration.cache.Cache; import com.jess.arms.integration.cache.Cache;
import com.jess.arms.integration.cache.CacheType; import com.jess.arms.integration.cache.CacheType;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import com.jess.arms.utils.Preconditions; import com.jess.arms.utils.Preconditions;
import java.lang.reflect.Proxy;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
...@@ -51,6 +55,9 @@ public class RepositoryManager implements IRepositoryManager { ...@@ -51,6 +55,9 @@ public class RepositoryManager implements IRepositoryManager {
Application mApplication; Application mApplication;
@Inject @Inject
Cache.Factory mCachefactory; Cache.Factory mCachefactory;
@Inject
@Nullable
ObtainServiceDelegate mObtainServiceDelegate;
private Cache<String, Object> mRetrofitServiceCache; private Cache<String, Object> mRetrofitServiceCache;
private Cache<String, Object> mCacheServiceCache; private Cache<String, Object> mCacheServiceCache;
...@@ -67,12 +74,21 @@ public class RepositoryManager implements IRepositoryManager { ...@@ -67,12 +74,21 @@ public class RepositoryManager implements IRepositoryManager {
*/ */
@Override @Override
public synchronized <T> T obtainRetrofitService(Class<T> service) { public synchronized <T> T obtainRetrofitService(Class<T> service) {
if (mRetrofitServiceCache == null) if (mRetrofitServiceCache == null) {
mRetrofitServiceCache = mCachefactory.build(CacheType.RETROFIT_SERVICE_CACHE); mRetrofitServiceCache = mCachefactory.build(CacheType.RETROFIT_SERVICE_CACHE);
}
Preconditions.checkNotNull(mRetrofitServiceCache, "Cannot return null from a Cache.Factory#build(int) method"); Preconditions.checkNotNull(mRetrofitServiceCache, "Cannot return null from a Cache.Factory#build(int) method");
T retrofitService = (T) mRetrofitServiceCache.get(service.getCanonicalName()); T retrofitService = (T) mRetrofitServiceCache.get(service.getCanonicalName());
if (retrofitService == null) { if (retrofitService == null) {
retrofitService = mRetrofit.get().create(service); if (mObtainServiceDelegate != null) {
retrofitService = mObtainServiceDelegate.createRetrofitService(mRetrofit.get(), service);
}
if (retrofitService == null) {
retrofitService = (T) Proxy.newProxyInstance(
service.getClassLoader(),
new Class[]{service},
new RetrofitServiceProxyHandler(mRetrofit.get(), service));
}
mRetrofitServiceCache.put(service.getCanonicalName(), retrofitService); mRetrofitServiceCache.put(service.getCanonicalName(), retrofitService);
} }
return retrofitService; return retrofitService;
......
package com.jess.arms.integration;
import androidx.annotation.Nullable;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import io.reactivex.Observable;
import io.reactivex.Single;
import retrofit2.Retrofit;
public class RetrofitServiceProxyHandler implements InvocationHandler {
private Retrofit mRetrofit;
private Class<?> mServiceClass;
private Object mRetrofitService;
public RetrofitServiceProxyHandler(Retrofit retrofit, Class<?> serviceClass) {
mRetrofit = retrofit;
mServiceClass = serviceClass;
}
@Override
public Object invoke(Object proxy, Method method, @Nullable Object[] args) throws Throwable {
// 根据 https://zhuanlan.zhihu.com/p/40097338 对 Retrofit 进行的优化
if (method.getReturnType() == Observable.class) {
// 如果方法返回值是 Observable 的话,则包一层再返回,
// 只包一层 defer 由外部去控制耗时方法以及网络请求所处线程,
// 如此对原项目的影响为 0,且更可控。
return Observable.defer(() -> {
// 执行真正的 Retrofit 动态代理的方法
return (Observable) method.invoke(getRetrofitService(), args);
});
} else if (method.getReturnType() == Single.class) {
// 如果方法返回值是 Single 的话,则包一层再返回。
return Single.defer(() -> {
// 执行真正的 Retrofit 动态代理的方法
return (Single) method.invoke(getRetrofitService(), args);
});
}
// 返回值不是 Observable 或 Single 的话不处理。
return method.invoke(getRetrofitService(), args);
}
private Object getRetrofitService() {
if (mRetrofitService == null) {
mRetrofitService = mRetrofit.create(mServiceClass);
}
return mRetrofitService;
}
}
...@@ -12,8 +12,10 @@ import androidx.annotation.NonNull; ...@@ -12,8 +12,10 @@ import androidx.annotation.NonNull;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.dianping.logan.Logan; import com.dianping.logan.Logan;
import com.dianping.logan.OnLoganProtocolStatus; import com.dianping.logan.OnLoganProtocolStatus;
import com.didichuxing.doraemonkit.DoraemonKit;
import com.gingersoft.gsa.cloud.common.BuildConfig; import com.gingersoft.gsa.cloud.common.BuildConfig;
import com.gingersoft.gsa.cloud.common.R; import com.gingersoft.gsa.cloud.common.R;
import com.gingersoft.gsa.cloud.common.config.DoraemonKitConfig;
import com.gingersoft.gsa.cloud.common.config.LoganConfig; import com.gingersoft.gsa.cloud.common.config.LoganConfig;
import com.gingersoft.gsa.cloud.common.config.expandconfig.ExpandInfoSetting; import com.gingersoft.gsa.cloud.common.config.expandconfig.ExpandInfoSetting;
import com.gingersoft.gsa.cloud.common.config.expandconfig.FunctionExtendedConfiguration; import com.gingersoft.gsa.cloud.common.config.expandconfig.FunctionExtendedConfiguration;
...@@ -185,7 +187,7 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -185,7 +187,7 @@ public class GsaCloudApplication extends BaseApplication {
* 初始化滴滴開發,測試輔助工具哆啦A夢 * 初始化滴滴開發,測試輔助工具哆啦A夢
*/ */
private void initDoraemonKit() { private void initDoraemonKit() {
// DoraemonKit.install(getAppContext(), DoraemonKitConfig.PRODUCE_ID); DoraemonKit.install(getAppContext(), DoraemonKitConfig.PRODUCE_ID);
} }
/** /**
......
...@@ -13,7 +13,7 @@ import com.gingersoft.gsa.cloud.common.utils.other.SPUtils; ...@@ -13,7 +13,7 @@ import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
*/ */
public class RestaurantInfoManager { public class RestaurantInfoManager {
private static RestaurantInfoManager sRestaurantInfoManager = null; private static volatile RestaurantInfoManager sRestaurantInfoManager = null;
/** /**
* 品牌信息 * 品牌信息
......
...@@ -20,7 +20,7 @@ import lombok.Setter; ...@@ -20,7 +20,7 @@ import lombok.Setter;
@Setter @Setter
public class UserContext { public class UserContext {
private static UserContext sUserContextManger = null; private static volatile UserContext sUserContextManger = null;
/** /**
* 用戶狀態 * 用戶狀態
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<item name="QMUITopBarStyle">@style/QDTopBar</item> <item name="QMUITopBarStyle">@style/QDTopBar</item>
<!-- TabItem theme --> <!-- TabItem theme -->
<item name="QMUITabSegmentStyle">@style/QMUITabSegmentStyle</item> <item name="QMUITabSegmentStyle">@style/QMUITabSegmentStyle</item>
</style> </style>
<style name="MyCheckbox_style"> <style name="MyCheckbox_style">
......
...@@ -51,7 +51,7 @@ android { ...@@ -51,7 +51,7 @@ android {
/** /**
* 版本号 * 版本号
*/ */
schemaVersion 23 schemaVersion 24
/** /**
* greendao输出dao的数据库操作实体类文件夹(相对路径 包名+自定义路径名称,包将创建于包名的直接路径下) * greendao输出dao的数据库操作实体类文件夹(相对路径 包名+自定义路径名称,包将创建于包名的直接路径下)
*/ */
...@@ -82,4 +82,9 @@ dependencies { ...@@ -82,4 +82,9 @@ dependencies {
// 數據庫 // 數據庫
implementation 'org.greenrobot:greendao:3.2.2' implementation 'org.greenrobot:greendao:3.2.2'
implementation 'org.greenrobot:greendao-generator:3.2.2' implementation 'org.greenrobot:greendao-generator:3.2.2'
//rx
api rootProject.ext.dependencies["rxjava2"]
api(rootProject.ext.dependencies["rxandroid2"]) {
exclude module: 'rxjava'
}
} }
...@@ -14,10 +14,10 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType; ...@@ -14,10 +14,10 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
/** /**
* Master of DAO (schema version 23): knows all DAOs. * Master of DAO (schema version 24): knows all DAOs.
*/ */
public class DaoMaster extends AbstractDaoMaster { public class DaoMaster extends AbstractDaoMaster {
public static final int SCHEMA_VERSION = 23; public static final int SCHEMA_VERSION = 24;
/** Creates underlying database table using DAOs. */ /** Creates underlying database table using DAOs. */
public static void createAllTables(Database db, boolean ifNotExists) { public static void createAllTables(Database db, boolean ifNotExists) {
......
...@@ -13,6 +13,8 @@ import org.greenrobot.greendao.query.QueryBuilder; ...@@ -13,6 +13,8 @@ import org.greenrobot.greendao.query.QueryBuilder;
import java.util.List; import java.util.List;
import io.reactivex.Observable;
/** /**
* 作者:ELEGANT_BIN * 作者:ELEGANT_BIN
* 版本:1.6.0 * 版本:1.6.0
...@@ -206,7 +208,6 @@ public class FoodDaoUtils { ...@@ -206,7 +208,6 @@ public class FoodDaoUtils {
public List<Food> queryFoodByQueryBuilder(long parentId, int foodSummary) { public List<Food> queryFoodByQueryBuilder(long parentId, int foodSummary) {
QueryBuilder<Food> queryBuilder = mManager.getDaoSession().queryBuilder(Food.class); QueryBuilder<Food> queryBuilder = mManager.getDaoSession().queryBuilder(Food.class);
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
// queryBuilder.join(ColorBeanDao.Properties.AndroidColor, Food.class, FoodDao.Properties.ColorId);
queryBuilder.where(queryBuilder.and( queryBuilder.where(queryBuilder.and(
FoodDao.Properties.ParentId.eq(parentId), FoodDao.Properties.ParentId.eq(parentId),
......
...@@ -15,6 +15,8 @@ import lombok.Data; ...@@ -15,6 +15,8 @@ import lombok.Data;
public class CouponDiscountBean { public class CouponDiscountBean {
private Long id; private Long id;
// 记录ID
private Long discountRecordId;
// 店鋪ID // 店鋪ID
private Long restaurantId; private Long restaurantId;
// 品牌ID // 品牌ID
......
...@@ -72,18 +72,13 @@ public class MealOrderPayRequest implements Parcelable{ ...@@ -72,18 +72,13 @@ public class MealOrderPayRequest implements Parcelable{
private double tipsPrice; private double tipsPrice;
/**積分支付 所消費的積分*/ /**積分支付 所消費的積分*/
private Double consumptionPoints; private Double consumptionPoints;
/**報表是否計算人數*/
private Integer whetherReportCount;
/**支付名稱*/
private String payName;
public OrderPay() {
}
@Override public OrderPay() {
public String toString() {
return "OrderPay{" +
"payType=" + payType +
", amount=" + amount +
", tipsPrice=" + tipsPrice +
", consumptionPoints=" + consumptionPoints +
'}';
} }
@Override @Override
......
...@@ -14,6 +14,10 @@ import lombok.Data; ...@@ -14,6 +14,10 @@ import lombok.Data;
public class OrderDiscountResponse implements Serializable { public class OrderDiscountResponse implements Serializable {
/** /**
* 折扣记录ID
*/
private Long id;
/**
* 餐廳折扣ID * 餐廳折扣ID
*/ */
private Long discountId; private Long discountId;
......
...@@ -26,7 +26,7 @@ import lombok.Setter; ...@@ -26,7 +26,7 @@ import lombok.Setter;
@Setter @Setter
public class DoshokuOrder extends BaseOrder { public class DoshokuOrder extends BaseOrder {
private static DoshokuOrder doshokuOrder; private volatile static DoshokuOrder doshokuOrder;
public static DoshokuOrder getInstance() { public static DoshokuOrder getInstance() {
if (doshokuOrder == null) { if (doshokuOrder == null) {
...@@ -60,6 +60,10 @@ public class DoshokuOrder extends BaseOrder { ...@@ -60,6 +60,10 @@ public class DoshokuOrder extends BaseOrder {
*/ */
private List<DeleteOrderRequest> deleteMealOrders; private List<DeleteOrderRequest> deleteMealOrders;
/** /**
* 記錄刪除的折扣Id
*/
private List<Long> deleteDiscountIds;
/**
* 本次送單食品,用於打印 * 本次送單食品,用於打印
*/ */
private List<OrderDetail> newFoodList = new ArrayList<>(); private List<OrderDetail> newFoodList = new ArrayList<>();
...@@ -118,6 +122,10 @@ public class DoshokuOrder extends BaseOrder { ...@@ -118,6 +122,10 @@ public class DoshokuOrder extends BaseOrder {
this.deleteMealOrders = deleteMealOrders; this.deleteMealOrders = deleteMealOrders;
} }
public void addDeleteDiscountId(Long id) {
getDeleteDiscountIds().add(id);
}
public Date getOpenTableTime() { public Date getOpenTableTime() {
if (orderPlaced != null && orderPlaced.getCreateTime() != null) { if (orderPlaced != null && orderPlaced.getCreateTime() != null) {
return new Date(orderPlaced.getCreateTime()); return new Date(orderPlaced.getCreateTime());
...@@ -132,6 +140,13 @@ public class DoshokuOrder extends BaseOrder { ...@@ -132,6 +140,13 @@ public class DoshokuOrder extends BaseOrder {
return deleteMealOrders; return deleteMealOrders;
} }
public List<Long> getDeleteDiscountIds() {
if (deleteDiscountIds == null) {
deleteDiscountIds = new ArrayList<>();
}
return deleteDiscountIds;
}
public boolean needUpdateMemberInfo() { public boolean needUpdateMemberInfo() {
if (TextUtils.isEmpty(memberUpdateStatus)) { if (TextUtils.isEmpty(memberUpdateStatus)) {
return false; return false;
...@@ -153,6 +168,9 @@ public class DoshokuOrder extends BaseOrder { ...@@ -153,6 +168,9 @@ public class DoshokuOrder extends BaseOrder {
if (deleteMealOrders != null) { if (deleteMealOrders != null) {
deleteMealOrders.clear(); deleteMealOrders.clear();
} }
if (deleteDiscountIds != null) {
deleteDiscountIds.clear();
}
if (newFoodList != null) { if (newFoodList != null) {
newFoodList.clear(); newFoodList.clear();
} }
......
package com.gingersoft.gsa.cloud.ui.recylcler.event; package com.gingersoft.gsa.cloud.ui.recylcler.event;
import android.graphics.Color; import android.graphics.Color;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.core.table.TableManagerItem;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.ui.bean.view.SectionHeader;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.qmuiteam.qmui.widget.section.QMUIDefaultStickySectionAdapter; import com.qmuiteam.qmui.widget.section.QMUIDefaultStickySectionAdapter;
import com.qmuiteam.qmui.widget.section.QMUISection; import com.qmuiteam.qmui.widget.section.QMUISection;
...@@ -11,6 +17,9 @@ import com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter; ...@@ -11,6 +17,9 @@ import com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import lombok.SneakyThrows;
/** /**
* 作者:ELEGANT_BIN * 作者:ELEGANT_BIN
...@@ -25,6 +34,7 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten ...@@ -25,6 +34,7 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten
private RecyclerView.Adapter mAdapter; private RecyclerView.Adapter mAdapter;
boolean isSwipeEnable; boolean isSwipeEnable;
boolean isFirstDragUnable; boolean isFirstDragUnable;
private String ids;
public RecyItemTouchHelperCallback(RecyclerView.Adapter adapter) { public RecyItemTouchHelperCallback(RecyclerView.Adapter adapter) {
mAdapter = adapter; mAdapter = adapter;
...@@ -74,14 +84,12 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten ...@@ -74,14 +84,12 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten
if ((fromIndex + 1) == list.size()) { if ((fromIndex + 1) == list.size()) {
return false; return false;
} }
LoganManager.w_tableMode(TAG, LoganManager.EVENT_SCOLL + "調整餐檯排序fromIndex=" + fromIndex + " toIndex=" +toIndex);
for (int i = fromIndex; i < toIndex; i++) { Collections.swap(list, fromIndex, toIndex);
Collections.swap(list, i, i + 1); ids = getTableIds((List<TableManagerItem>) list);
}
} else { } else {
for (int i = fromPosition; i < toPosition; i++) { Collections.swap(((DefaultAdapter) mAdapter).getInfos(), fromPosition, toPosition);
Collections.swap(((DefaultAdapter) mAdapter).getInfos(), i, i + 1); ids = null;
}
} }
} else { } else {
if (mAdapter instanceof QMUIStickySectionAdapter) { if (mAdapter instanceof QMUIStickySectionAdapter) {
...@@ -99,20 +107,34 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten ...@@ -99,20 +107,34 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten
if ((fromIndex + 1) == list.size()) { if ((fromIndex + 1) == list.size()) {
return false; return false;
} }
LoganManager.w_tableMode(TAG, LoganManager.EVENT_SCOLL + "調整餐檯排序fromIndex=" + fromIndex + " toIndex=" + toIndex);
for (int i = fromIndex; i > toIndex; i--) { Collections.swap(list, fromIndex, toIndex);
Collections.swap(list, i, i - 1); ids = getTableIds((List<TableManagerItem>) list);
}
} else { } else {
for (int i = fromPosition; i > toPosition; i--) { Collections.swap(((DefaultAdapter) mAdapter).getInfos(), fromPosition, toPosition);
Collections.swap(((DefaultAdapter) mAdapter).getInfos(), i, i - 1); ids = null;
}
} }
} }
mAdapter.notifyItemMoved(fromPosition, toPosition); mAdapter.notifyItemMoved(fromPosition, toPosition);
return true; return true;
} }
private String getTableIds(List<TableManagerItem> qmuiSectionList) {
StringBuilder builder = new StringBuilder();
for (TableManagerItem tableItem : qmuiSectionList) {
if (tableItem.getLayoutType() == 0) {
builder.append(tableItem.getId());
builder.append(",");
}
}
String str = builder.toString();
if (str.endsWith(",")) {
str = str.substring(0, str.length() - 1);
}
return str;
}
@Override @Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int adapterPosition = viewHolder.getAdapterPosition(); int adapterPosition = viewHolder.getAdapterPosition();
...@@ -138,7 +160,7 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten ...@@ -138,7 +160,7 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten
viewHolder.itemView.setBackgroundColor(Color.WHITE); viewHolder.itemView.setBackgroundColor(Color.WHITE);
// mAdapter.notifyDataSetChanged(); // mAdapter.notifyDataSetChanged();
if (onMoveListener != null) { if (onMoveListener != null) {
onMoveListener.onMoveFinish(mAdapter); onMoveListener.onMoveFinish(mAdapter, ids);
} }
} }
...@@ -159,6 +181,6 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten ...@@ -159,6 +181,6 @@ public class RecyItemTouchHelperCallback<H extends QMUISection.Model<H>, T exten
} }
public interface onMoveListener { public interface onMoveListener {
void onMoveFinish(RecyclerView.Adapter adapter); void onMoveFinish(RecyclerView.Adapter adapter, String ids);
} }
} }
\ 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