Commit 68af5eba by 宁斌

1、餐台模式支付后黑屏问题,2、账单管理页面调整

parent 036909d4
......@@ -166,7 +166,7 @@ class ComponentManager {
//异步调用,放到线程池中运行
if (cc.isAsync()) {
if (CC.VERBOSE_LOG) {
CC.verboseLog(callId, "put into thread pool");
CC.verboseLog(callId, "put into thread po ol");
}
CC_THREAD_POOL.submit(processor);
//异步调用时此方法返回null,CCResult通过callback回调
......
......@@ -289,6 +289,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
}
List<Function> managerFuncations = FunctionManager.getDefault().getFunctionByResModule(this, ComponentMain.main.class, ComponentMain.main.manager, "manager");
managerFuncations.add(new Function(172, 163, 5, "N5清機", R.drawable.ic_expand_list, 0));
managerFuncations.add(new Function(171, 163, 5, "配置列表", R.drawable.ic_expand_list, 0));
// managerFuncations.add(new Function(171, 163, 5, "廚房打印查詢", R.drawable.ic_kitchen_print_query, 0));
// managerFuncations.add(new Function(171, 163, 5, "餐牌管理", R.drawable.ic_food_menu_manger, 0));
......@@ -371,6 +372,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
private void functionClick(String name, int status) {
switch (name) {
case "N5清機":
break;
case "餐檯模式":
CC.obtainBuilder(ComponentName.COMPONENT_TABLE)
.setActionName("showTableActivity")
......
......@@ -7,6 +7,7 @@ import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.jess.arms.utils.ArmsUtils;
import com.joe.print.mvp.print.service.PrjService;
import com.joe.print.mvp.ui.activity.PrintActivity;
import com.joe.print.mvp.ui.activity.PrinterListActivity;
......@@ -35,6 +36,9 @@ public class PrintComponent implements IComponent {
public boolean onCall(CC cc) {
String actionName = cc.getActionName();
switch (actionName) {
case "killPrintActivity":
break;
case "showPrintActivity":
openActivity(cc);
break;
......
......@@ -73,53 +73,6 @@ public class PrintBill extends PrinterRoot<PrintBillContent> {
pritContent[i] = stringBuilder;
}
return pritContent;
// DoshokuOrder doshokuOrder = DoshokuOrder.getInstance();
// ShoppingCart shoppingCart = doshokuOrder.getShoppingCart();
//
// List<OrderDetail> foodList = shoppingCart.getOrderCommodityList();
// TableBean.DataBean tableBean = doshokuOrder.getOpenTableInfo();
//
// StringBuilder payInfo = new StringBuilder();
// for (PayMethod payMethod : doshokuOrder.getBillMoney()) {
// payInfo.append(payMethod.getPayName() + " ").append(payMethod.getPayMoney());
// }
//
// StringBuilder memberIntegerInfo = new StringBuilder();
// OrderDetails.DataBean data = getOrderMemberInfo();
// if (data.getAddPoints() != 0 || data.getOldPoints() != 0 || data.getAddPoints() != 0) {
// memberIntegerInfo.append(getPLable("本次積分:" + data.getAddPoints(), HTML_PRINT_GRAVITY_LEFT))
// .append(getPLable("結餘積分:" + data.getNowPoints(), HTML_PRINT_GRAVITY_LEFT))
// .append(getPLable("上次積分:" + data.getOldPoints(), HTML_PRINT_GRAVITY_LEFT));
// //名稱中間替換為*號
// if (data.getMEMBER_NAME() != null && data.getMEMBER_NAME().length() > 0) {
// memberIntegerInfo.append(getPLable("會員名稱:" + getReplaceAfter(data.getMEMBER_NAME()), HTML_PRINT_GRAVITY_LEFT));
// }
// if (data.getPHONE() != null && data.getPHONE().length() > 0) {
// memberIntegerInfo.append(getPLable("會員電話:" + getReplaceAfter(data.getPHONE()), HTML_PRINT_GRAVITY_LEFT));
// }
// }
//
// String stringBuilder = "<html><body>" +
// getHtmlPrintHeadInfo() +
// getHtmlPrintHeadOrderInfo(tableBean) +
// generateHtmlFoodInfo(foodList) +
// getHtmlBillInfo() +
// getWholeLine() +
// getPLable(payInfo.toString(), HTML_PRINT_GRAVITY_LEFT) +
// getWholeLine() +
// getPLable(memberIntegerInfo.toString(), HTML_PRINT_GRAVITY_LEFT);
//
// String integralQrCode = doshokuOrder.getIntegralQrcode();
// if (!TextUtils.isEmpty(integralQrCode) && (boolean) RestaurantExpandInfoUtils.getValue(ExpandConstant.ToPrintQRCode, false)) {
// stringBuilder += getPLable("請掃描二維碼", HTML_PRINT_GRAVITY_CENTER) +
// getHtmlQrCode(doshokuOrder.getIntegralQrcode()) +
// getPLable("《追加積分到個人賬戶》", HTML_PRINT_GRAVITY_CENTER);
// }
// stringBuilder += "</body></html>";
// String[] pritContent = new String[1];
// pritContent[0] = stringBuilder;
// return pritContent;
}
private String getHtmlContent(PrinterDeviceBean deviceBean) {
......
......@@ -14,6 +14,10 @@ import com.joe.print.R;
import com.joe.print.mvp.model.bean.HtmlLable;
import com.joe.print.mvp.print.common.HtmlContract;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -50,28 +54,18 @@ public class PrintQRCode extends PrinterRoot<PrintQRCodeContent> {
if (mQRCodeBean == null) {
return new String[]{"<html><body></body></html>"};
}
//http://m.ricepon.com/member-web/qrcode/qrcode.html?WMP2&?arg={"type":2,"QR":"a7fbc0570c974287a5df7fc149348599"}
// String stringBuilder = "<html><body>" +
// getHtmlContent() +
// "</body></html>";
// int printCount = getPrintCount(mContext);
// String[] pritContent = new String[printCount];
// for (int i = 0; i < printCount; i++) {
// pritContent[i] = stringBuilder;
// }
// baseContent = mQRCodeBean.getPrintQrcode();
return getPrintContent(baseContent + "http://m.ricepon.com/member-web/qrcode/qrcode.html?WMP2&arg={\"type\":2,\"QR\":\"a7fbc0570c974287a5df7fc149348599\"}");
}
private String baseContent = "Thank you";
private String[] getPrintContent(String... qrcodes) {
String[] pritContent = new String[qrcodes.length];
for (int i = 0; i < qrcodes.length; i++) {
String stringBuilder = "<html><body>" +
getHtmlContent(qrcodes[i]) +
"</body></html>";
String qrcode = null;
try {
qrcode = URLEncoder.encode(mQRCodeBean.getPrintQrcode(),"UTF-8") ;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String stringBuilder = "<html><body>" +
getHtmlContent(qrcode) +
"</body></html>";
int printCount = getPrintCount(mContext);
String[] pritContent = new String[printCount];
for (int i = 0; i < printCount; i++) {
pritContent[i] = stringBuilder;
}
return pritContent;
......
......@@ -10,6 +10,7 @@ import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.print.bean.base.PrintFoodItem;
import com.joe.print.R;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -77,22 +78,21 @@ public class PrintTest extends PrinterRoot {
layout.addView(getTextView(mContext, "時間:" + TimeUtils.getCurrentDate(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.LEFT, getDimensionPixelSize(mContext, R.dimen.dp_8)));
layout.addView(getTextLine(mContext, "項目"));
List<OrderDetails.DataBean.PRODUCTNAMEBean> productnameBeans = new ArrayList<>();
OrderDetails.DataBean.PRODUCTNAMEBean productnameBean = new OrderDetails.DataBean.PRODUCTNAMEBean();
productnameBean.setPRODUCT_NAME("測試食品");
productnameBean.setNum("1");
productnameBean.setPRICE("10.0");
List<PrintFoodItem> printFoodItemList = new ArrayList<>();
PrintFoodItem productnameBean = new PrintFoodItem();
productnameBean.setName("測試食品");
productnameBean.setNum(1);
productnameBean.setPrice(10.0);
List<OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX> childBeanXES = new ArrayList<>();
OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX = new OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX();
childBeanX.setPRODUCT_NAME("測試子食品");
childBeanX.setNum("1");
childBeanX.setPRICE("10.0");
childBeanXES.add(childBeanX);
productnameBean.setChild(childBeanXES);
productnameBeans.add(productnameBean);
PrintFoodItem productnameBean2 = new PrintFoodItem();
productnameBean.setName("測試食品2");
productnameBean.setNum(2);
productnameBean.setPrice(30.0);
layout.addView(getDiningFoodList(mContext, OrderDetail.productMameBeanToOrderDetail(0, productnameBeans), deviceBean, 0, true));
printFoodItemList.add(productnameBean);
printFoodItemList.add(productnameBean2);
layout.addView(getDiningFoodList(mContext,printFoodItemList, deviceBean, 0, true));
layout.addView(getTextLine(mContext, "Powered by Gingersoft"));
// layout.addView(getTextView(mContext, "(USB)", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
......
......@@ -256,6 +256,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//開錢箱
PrintExecutor executor = new PrintExecutor(defaultPrint);
executor.doPrinterRequestAsync(new OpenCashBoxMaker());
CC.sendCCResult(callId, CCResult.success());
} else {
if (isShowDialog) {
initDialog();
......
......@@ -15,6 +15,7 @@
<activity
android:name=".mvp.ui.activity.TableActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".mvp.ui.activity.MealStandActivity"
......
......@@ -20,7 +20,9 @@
android:name=".mvp.ui.activity.OrderPayActivity"
android:screenOrientation="portrait" />
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity" />
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity">
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action;
package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity;
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action;
package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity;
......@@ -12,6 +12,7 @@ import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.action.OnNetworkCallbackListener;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.presenter.TablePresenter;
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action;
package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity;
import android.text.TextUtils;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
......@@ -14,6 +15,7 @@ import com.gingersoft.gsa.cloud.common.core.user.UserContext;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.table.mvp.action.OnNetworkCallbackListener;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodSummary;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.PrintQRCodeResponse;
import com.gingersoft.gsa.cloud.table.mvp.presenter.TablePresenter;
......@@ -21,6 +23,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SkyOrderDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog;
import com.gingersoft.gsa.cloud.ui.widget.dialog.DialogAnimationListener;
import com.jess.arms.utils.ArmsUtils;
import java.util.ArrayList;
import java.util.List;
......@@ -125,7 +128,11 @@ public class PrintSkyorderAction extends TableAction {
if (result.isSuccess()) {
printSkyorderSuccess();
} else {
ArmsUtils.makeText(mContext, "打印失敗");
if (!TextUtils.isEmpty(result.getErrorMessage())) {
ArmsUtils.makeText(mContext, result.getErrorMessage());
} else {
ArmsUtils.makeText(mContext, "打印失敗");
}
}
mSkyOrderDialog.dismiss();
});
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action;
package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity;
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action;
package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity;
......
package com.gingersoft.gsa.cloud.table.mvp.model.table.action;
package com.gingersoft.gsa.cloud.table.mvp.action.table;
import android.app.Activity;
......
......@@ -3,7 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.contract;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.TableAction;
import com.gingersoft.gsa.cloud.table.mvp.action.table.TableAction;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
......
......@@ -141,6 +141,15 @@ public class OrderManagerResponse implements Serializable {
private String refundTxnId;
/**
* 清機ID,已清機則不為null
*/
private Integer restaurantOperationId;
/**
* 事項狀態 0:異常未處理,1: 成功
*/
private int matterStatus = 1;
/**
* 設備ID,用來區分每台N5設備支付的訂單
*/
private String deviceId;
......@@ -163,6 +172,10 @@ public class OrderManagerResponse implements Serializable {
public static final byte ORDER_TYPE_TAKEAWAY = 2;
public static final byte ORDER_TYPE_SELFCOLLECTION = 7;
/**
* 是否選中
*/
private boolean checked = false;
public boolean withHywebPay() {
if (!TextUtils.isEmpty(payTxnId) || !TextUtils.isEmpty(cancelTxnId) || !TextUtils.isEmpty(refundTxnId)) {
......
......@@ -35,14 +35,14 @@ import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodSummary;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse;
import com.gingersoft.gsa.cloud.table.mvp.model.constant.SkyOrderConstant;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.MoveTableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.OnNetworkCallbackListener;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.PrintServingPaperAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.PrintSkyorderAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.ResetSkyorderAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.ResetTableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.SplitTableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.TableAction;
import com.gingersoft.gsa.cloud.table.mvp.action.table.MoveTableAction;
import com.gingersoft.gsa.cloud.table.mvp.action.OnNetworkCallbackListener;
import com.gingersoft.gsa.cloud.table.mvp.action.table.PrintServingPaperAction;
import com.gingersoft.gsa.cloud.table.mvp.action.table.PrintSkyorderAction;
import com.gingersoft.gsa.cloud.table.mvp.action.table.ResetSkyorderAction;
import com.gingersoft.gsa.cloud.table.mvp.action.table.ResetTableAction;
import com.gingersoft.gsa.cloud.table.mvp.action.table.SplitTableAction;
import com.gingersoft.gsa.cloud.table.mvp.action.table.TableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BottomFunctionAdapter;
......
......@@ -10,6 +10,7 @@ import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.component.ComponentName;
......@@ -481,6 +482,43 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
doshokuOrder.setBillMoney(payMethodList);
}
if (orderDetailItem.withHywebPay()) {
if (AppDevices.isHywebPos()) {
PosPay.printStub(IActivity, mRootView, orderDetailItem.getPayTxnId(), new OnPosActionListener() {
@Override
public void onPosSuccess(HywebPosResponse response) {
printBill(doshokuOrder, dataBean);
}
@Override
public void onPosException(Exception e) {
}
@Override
public void onPosInvalid(String e) {
}
@Override
public void onUpdateStatusSuccess(HywebPosResponse response) {
}
@Override
public void onUpdateStatusError(Throwable e) {
}
});
} else {
printBill(doshokuOrder, dataBean);
}
} else {
printBill(doshokuOrder, dataBean);
}
}
private void printBill(DoshokuOrder doshokuOrder, TableBean.DataBean dataBean) {
PrintContent printContent = new PrintContentAdapter().adaptationBillContent(doshokuOrder, dataBean);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
......
......@@ -16,15 +16,21 @@ import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.IComponentCallback;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.core.user.UserContext;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.utils.BigDecimalUtils;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.database.bean.Discount;
import com.gingersoft.gsa.cloud.database.utils.DiscountDaoUtils;
import com.gingersoft.gsa.cloud.order.bean.request.MealOrderPayRequest;
import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
......@@ -57,11 +63,16 @@ import com.jess.arms.utils.ArmsUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.RxSchedulerUtils;
import org.simple.eventbus.EventBus;
import java.sql.Time;
import java.util.Date;
import java.util.List;
import java.util.Observer;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import javax.inject.Inject;
......@@ -69,6 +80,9 @@ import javax.inject.Inject;
import butterknife.BindView;
import butterknife.OnClick;
import butterknife.OnLongClick;
import io.reactivex.Observable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -444,28 +458,34 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_INSTRUCTION)
.addParam(PrintConstans.PRINT_LOADING, mPrintShowLoading)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
printBill();
.callAsyncCallbackOnMainThread(new IComponentCallback() {
@Override
public void onResult(CC cc, CCResult result) {
LoganManager.w_code(TAG, "printOpenInstructionAndBill " + "是否成功:" + result.isSuccess());
mAppManager.killActivity("PrintActivity");
}
});
printBill();
}
private void printBill() {
//打印結賬單
PrintContent printContent = new PrintContentAdapter().adaptationBillContent(DoshokuOrder.getInstance(), DoshokuOrder.getInstance().getOpenTableInfo());
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_LOADING, mPrintShowLoading)
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess());
setResult(Activity.RESULT_OK, null);
killMyself();
.callAsyncCallbackOnMainThread(new IComponentCallback() {
@Override
public void onResult(CC cc, CCResult result) {
LoganManager.w_code(TAG, "printBill " + "是否成功打印:" + result.isSuccess());
mAppManager.killActivity("PrintActivity");
mAppManager.killActivity(MealStandActivity.class);
mAppManager.killActivity(OrderContentActivity.class);
killMyself();
}
});
}
......@@ -488,8 +508,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
rv_order_detail.setAdapter(adapter);
}
private boolean mPrintShowLoading = true;
@Override
public void loadPayMethodsSuccess(List<PayMethod> payMethods) {
gsaPayView.loadInfo(this, payMethods, mPresenter.getTotalAmount(), mPresenter.getFoodCount());
......@@ -505,13 +523,13 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
PayMethod hywebPayMethod = mBillMoneyList.get(hywebPayMethodIndex);
SaleRequest saleRequest = new SaleRequest();
// if (hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1030) {
// //卡片支付
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_EPS);
// } else {
// //掃碼支付
// saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_QRC);
// }
if (hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1030) {
//卡片支付
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_CC);
} else {
//掃碼支付
saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_QRC);
}
saleRequest.setTXN_AMT(DoshokuOrder.getInstance().getShoppingCart().getTotalAmount());
saleRequest.setTIPS(0);
......@@ -548,7 +566,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
@Override
public void onUpdateStatusSuccess(SaleRespose response) {
if (HywebActionStatusCode.withSuccess(response.getSTATUS())) {
mPrintShowLoading = false;
paySuccess();
}
}
......
......@@ -23,7 +23,6 @@ import androidx.viewpager.widget.ViewPager;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.common.constans.GoldConstants;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.table.R;
......@@ -32,8 +31,8 @@ import com.gingersoft.gsa.cloud.table.di.component.DaggerTableComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.event.InitTableEvent;
import com.gingersoft.gsa.cloud.table.mvp.model.constant.TableActionConstant;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.PrintSkyorderAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.TableAction;
import com.gingersoft.gsa.cloud.table.mvp.action.table.PrintSkyorderAction;
import com.gingersoft.gsa.cloud.table.mvp.action.table.TableAction;
import com.gingersoft.gsa.cloud.table.mvp.presenter.TablePresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.AllTableFragment;
import com.gingersoft.gsa.cloud.table.mvp.ui.fragment.InputTableFragment;
......
......@@ -4,6 +4,10 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
......@@ -57,16 +61,22 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
QMUITabSegment mTabSegment;
@BindView(R2.id.contentViewPager)
ViewPager mContentViewPager;
@BindView(R2.id.ll_content)
LinearLayout ll_content;
@BindView(R2.id.ll_bottom)
LinearLayout ll_bottom;
private AllOrderFragment allOrderFragment, cancelOrderFragment, voidOrderFragment;
//當前顯示頁下標
private int currentPageIndex = 0;
//標題
// private String[] tabTitles = {"堂食", "外賣/自取"};
private String[] tabTitles = {"堂食"};
// private String[] tabTitles = {"已付款", "已取消"};
private String[] tabTitles = {"堂食"};
//是否已經初始化數據,默認初始化第一個頁面
private boolean[] pageDataInit = {true, false, false};
private FrameLayout.LayoutParams lp_content;
public static final int MODIFY_ORDER_RETURN_CODE = 100;
@Override
......@@ -86,6 +96,7 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
@Override
public void initData(@Nullable Bundle savedInstanceState) {
lp_content = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
initTabAndPager();
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "", 0, 10, null, false);
......@@ -96,15 +107,14 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
super.onNewIntent(intent);
}
@Subscriber(tag = "update" +
"OrderListEvent")
@Subscriber(tag = "updateOrderListEvent")
private void updateOrderList(boolean update) {
refeshOrderList();
}
public void refeshOrderList(){
public void refeshOrderList() {
setPageIndex(0);
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU+"", 0, 10, null, false);
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU + "", 0, 10, null, false);
}
public void loadOrderList(String orderType, RefreshLayout refreshLayout, boolean isLoadMore) {
......@@ -183,6 +193,16 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
loadOrderList(getCurrentOrderFragment().getOrderType(), null, false);
}
pageDataInit[currentPageIndex] = true;
// if (index == 0) {
// lp_content.bottomMargin = ArmsUtils.dip2px(mContext, R.dimen.dp_40);
// ll_content.setLayoutParams(lp_content);
// ll_bottom.setVisibility(View.VISIBLE);
// } else {
// lp_content.bottomMargin = 0;
// ll_content.setLayoutParams(lp_content);
// ll_bottom.setVisibility(View.GONE);
// }
}
@Override
......
......@@ -196,7 +196,7 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
initOrderItemAdapter();
updateOrderItems(mOrderDetailItem, mOrderDetailList);
initOrderDetail(mOrderDetailItem);
setBtnVisibility();
setBtnVisible();
btn_refund.setVisibility(View.GONE);
}
......@@ -288,45 +288,54 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
mOrderDetailPayMethodAdapter.notifyDataSetChanged();
}
private void setBtnVisibility() {
List<OrderManagerResponse.OrderPayBean> orderPays = mOrderDetailItem.getOrderPays();
if (orderPays != null && orderPays.size() > 0) {
List<PayMethod> payMethods = new ArrayList<>();
for (OrderManagerResponse.OrderPayBean orderPayBean : orderPays) {
PayMethod payMethod = new PayMethod();
payMethod.setPayType(orderPayBean.getPayType());
payMethod.setPayMoney(orderPayBean.getAmount());
payMethod.setTipsPrice(orderPayBean.getTipsPrice());
payMethods.add(payMethod);
}
PayMethod payMethod = PayMethodUtils.filterPaymentMethodById(payMethods, PayMethod.HYWEB_POS_TYPE_CC);
if (payMethod != null) {
//只有卡片支付才支持補小費
btn_tips.setVisibility(View.VISIBLE);
} else {
btn_tips.setVisibility(View.GONE);
}
}
if (mOrderDetailItem.getStatus() == 6) {
//訂單已取消
btn_print_order.setVisibility(View.GONE);
private void setBtnVisible() {
if (mOrderDetailItem.getRestaurantOperationId() != null) {
//已清機
btn_modify_order.setVisibility(View.GONE);
btn_tips.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
tv_order_status.setVisibility(View.VISIBLE);
} else {
btn_print_order.setVisibility(View.VISIBLE);
btn_modify_order.setVisibility(View.VISIBLE);
btn_cancel_order.setVisibility(View.VISIBLE);
tv_order_status.setVisibility(View.GONE);
if (AppDevices.isHywebPos() && mOrderDetailItem.withHywebPay()) {
setOrderBtnVisbilityByTxnId(mOrderDetailItem.getPayTxnId(), mOrderDetailItem.getCancelTxnId(), mOrderDetailItem.getRefundTxnId());
//未清機
List<OrderManagerResponse.OrderPayBean> orderPays = mOrderDetailItem.getOrderPays();
if (orderPays != null && orderPays.size() > 0) {
List<PayMethod> payMethods = new ArrayList<>();
for (OrderManagerResponse.OrderPayBean orderPayBean : orderPays) {
PayMethod payMethod = new PayMethod();
payMethod.setPayType(orderPayBean.getPayType());
payMethod.setPayMoney(orderPayBean.getAmount());
payMethod.setTipsPrice(orderPayBean.getTipsPrice());
payMethods.add(payMethod);
}
PayMethod payMethod = PayMethodUtils.filterPaymentMethodById(payMethods, PayMethod.HYWEB_POS_TYPE_CC);
if (payMethod != null) {
//只有卡片支付才支持補小費
btn_tips.setVisibility(View.VISIBLE);
} else {
btn_tips.setVisibility(View.GONE);
}
}
if (mOrderDetailItem.getStatus() == 6) {
//訂單已取消
btn_print_order.setVisibility(View.GONE);
btn_modify_order.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
tv_order_status.setVisibility(View.VISIBLE);
} else {
btn_print_order.setVisibility(View.VISIBLE);
btn_modify_order.setVisibility(View.VISIBLE);
btn_cancel_order.setVisibility(View.VISIBLE);
tv_order_status.setVisibility(View.GONE);
if (AppDevices.isHywebPos() && mOrderDetailItem.withHywebPay()) {
setOrderBtnVisbilityByTxnId(mOrderDetailItem.getPayTxnId(), mOrderDetailItem.getCancelTxnId(), mOrderDetailItem.getRefundTxnId());
}
}
int orderType = mOrderDetailItem.getOrderType();
if (orderType == OrderTypeConstans.order_type_2 || orderType == OrderTypeConstans.order_type_7) {
//外賣自取 不可以修改訂單 取消訂單
btn_modify_order.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
}
}
int orderType = mOrderDetailItem.getOrderType();
if (orderType == OrderTypeConstans.order_type_2 || orderType == OrderTypeConstans.order_type_7) {
//外賣自取 不可以修改訂單 取消訂單
btn_modify_order.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE);
}
}
......@@ -843,8 +852,45 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
doshokuOrder.setIntegralQrcode(orderDetailItem.getVerifyCode());
}
PrintContent printContent = new PrintContentAdapter().adaptationBillContent(doshokuOrder, dataBean);
if (orderDetailItem.withHywebPay()) {
if (AppDevices.isHywebPos()) {
PosPay.printStub(mContext, this, orderDetailItem.getPayTxnId(), new OnPosActionListener() {
@Override
public void onPosSuccess(HywebPosResponse response) {
printBill(doshokuOrder, dataBean);
}
@Override
public void onPosException(Exception e) {
}
@Override
public void onPosInvalid(String e) {
}
@Override
public void onUpdateStatusSuccess(HywebPosResponse response) {
}
@Override
public void onUpdateStatusError(Throwable e) {
}
});
} else {
printBill(doshokuOrder, dataBean);
}
} else {
printBill(doshokuOrder, dataBean);
}
}
private void printBill(DoshokuOrder doshokuOrder, TableBean.DataBean dataBean) {
PrintContent printContent = new PrintContentAdapter().adaptationBillContent(doshokuOrder, dataBean);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
......@@ -947,7 +993,7 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
mOrderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(orderDetailItem.getOrderDetails()));
initOrderDetail(orderDetailItem);
updateOrderItems(orderDetailItem, mOrderDetailList);
setBtnVisibility();
setBtnVisible();
btn_refund.setVisibility(View.GONE);
}
......
......@@ -8,12 +8,10 @@ import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerAllOrderComponent;
......@@ -224,9 +222,9 @@ public class AllOrderFragment extends BaseFragment<AllOrderPresenter> implements
}
private void initAllOrderRecycleViewLayout() {
LinearLayoutManager mAllOrderRecycleLayoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false);
recycle_order.setLayoutManager(mAllOrderRecycleLayoutManager);
recycle_order.addItemDecoration(new DividerItemDecoration(orderCenterActivity, LinearLayoutManager.VERTICAL));
// LinearLayoutManager mAllOrderRecycleLayoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false);
// recycle_order.setLayoutManager(mAllOrderRecycleLayoutManager);
// recycle_order.addItemDecoration(new DividerItemDecoration(orderCenterActivity, LinearLayoutManager.VERTICAL));
}
@Override
......
......@@ -2,8 +2,7 @@
<com.qmuiteam.qmui.widget.QMUIWindowInsetLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/app_primary_color">
android:layout_height="match_parent">
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar"
......@@ -12,12 +11,13 @@
app:qmui_topbar_title_color="@color/theme_white_color" />
<LinearLayout
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/qmui_topbar_height"
android:fitsSystemWindows="true"
android:orientation="vertical"
android:background="@color/qmui_config_color_white">
android:layout_marginBottom="@dimen/dp_40">
<com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id="@+id/tabSegment"
......@@ -33,10 +33,77 @@
android:fitsSystemWindows="true"/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_bottom"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:layout_gravity="bottom"
android:orientation="horizontal">
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_print_order"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="@color/orange_400"
android:clickable="true"
android:text="打印賬單"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_modify_order"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="@color/blue_400"
android:clickable="true"
android:visibility="visible"
android:text="修改訂單"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_tips"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="@color/green_400"
android:clickable="true"
android:text="貼士"
android:visibility="gone"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_cancel_order"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="取消訂單"
android:textSize="@dimen/sp_13"
android:textColor="@color/theme_white_color"
android:background="@color/red_300"/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/btn_refund"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="@color/red_500"
android:clickable="true"
android:text="退款"
android:visibility="gone"
android:textColor="@color/theme_white_color"
android:textSize="@dimen/sp_14" />
</LinearLayout>
<FrameLayout
android:id="@+id/rl_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<com.qmuiteam.qmui.widget.QMUIWindowInsetLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.qmuiteam.qmui.widget.QMUIWindowInsetLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
......@@ -17,7 +19,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/theme_background_color"
android:overScrollMode="never" />
android:overScrollMode="never"
app:layoutManager="com.gingersoft.gsa.cloud.ui.recylcler.RecyclerViewNoBugLinearLayoutManager"/>
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
<com.qmuiteam.qmui.widget.QMUIEmptyView
......
......@@ -4,38 +4,52 @@
android:id="@+id/ll_root_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:background="@drawable/selector_item_background"
android:layout_marginLeft="@dimen/dp_8"
android:layout_marginRight="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_5"
android:background="@drawable/shape_rect_radius_white_5"
android:orientation="vertical"
android:padding="@dimen/dp_8">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_5"
android:orientation="horizontal">
<CheckBox
android:id="@+id/cb_order"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:checked="true"/>
<TextView
android:id="@+id/tv_table_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="@dimen/dp_5"
android:text="檯號:501"
android:textColor="@color/black"
android:textSize="@dimen/sp_18"
android:textStyle="bold" />
android:textStyle="bold"
android:checked="true"/>
<TextView
android:id="@+id/tv_order_num"
android:layout_width="wrap_content"
android:id="@+id/tv_people_num"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/dp_20"
android:text="訂單:123456"
android:layout_weight="1"
android:gravity="right|center_vertical"
android:text="人數:2"
android:textColor="@color/black"
android:textSize="@dimen/sp_14" />
android:textStyle="bold"
android:textSize="@dimen/sp_18" />
</LinearLayout>
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
......@@ -52,20 +66,17 @@
android:textColor="@color/black"
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_people_num"
android:id="@+id/tv_order_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:gravity="right"
android:text="人數:2"
android:text="訂單:123456"
android:textColor="@color/black"
android:textSize="@dimen/sp_14" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
......@@ -84,16 +95,26 @@
android:textSize="@dimen/sp_14" />
<TextView
android:id="@+id/tv_pay_money"
android:id="@+id/tv_pay_money_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:gravity="right"
android:text="金額:$230"
android:text="金額:"
android:textColor="@color/black"
android:textSize="@dimen/sp_18"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_pay_money"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:gravity="right"
android:text="$230"
android:textColor="#EC2D2D"
android:textSize="@dimen/sp_18"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
......
......@@ -356,6 +356,28 @@ public final class AppManager {
}
}
/**
* 关闭指定的 {@link Activity} class 的所有的实例
*
* @param activityClassName
*/
public void killActivity(String activityClassName) {
if (mActivityList == null) {
Timber.tag(TAG).w("mActivityList == null when killActivity(Class)");
return;
}
synchronized (AppManager.class) {
Iterator<Activity> iterator = getActivityList().iterator();
while (iterator.hasNext()) {
Activity next = iterator.next();
if (next.getClass().getSimpleName().equals(activityClassName)) {
iterator.remove();
next.finish();
}
}
}
}
/**
* 指定的 {@link Activity} 实例是否存活
......
......@@ -13,7 +13,7 @@ public class MyGlobalHttpHandler implements GlobalHttpHandler {
@Override
public Response onHttpResultResponse(String httpResult, Interceptor.Chain chain, Response response) {
// 统一处理http响应。eg:状态码不是200时,根据状态码做相应的处理。
LoganManager.w_network("發送請求: " + httpResult);
LoganManager.w_network("接收請求: " + httpResult);
return response;
}
......@@ -21,7 +21,7 @@ public class MyGlobalHttpHandler implements GlobalHttpHandler {
public Request onHttpRequestBefore(Interceptor.Chain chain, Request request) {
// 统一处理http请求。eg:给request统一添加token或者header以及参数加密等操作
String requestReult = request.toString();
LoganManager.w_network("接收請求: " + requestReult);
LoganManager.w_network("發送請求: " + requestReult);
return chain.request().newBuilder()
.build();
}
......
......@@ -38,7 +38,7 @@ import java.util.UUID;
*/
public class DefaultDeviceIdUtils {
private final String TAG = getClass().getSimpleName();
private static final String TAG = "DefaultDeviceIdUtils";
/**
* 方案1:imei + android_id + serial + 硬件uuid(自生成)
* 如果,又想唯一,又不想因用户的删除而重新生成UUID,该怎么做呢?
......@@ -82,7 +82,7 @@ public class DefaultDeviceIdUtils {
deviceId = SPDeviceId.getSPDeviceId(defaultDeviceId);
}
}
LoganManager.w_code("getDefaultDeviceIds","getDefaultDeviceIds = "+deviceId);
LoganManager.w_code(TAG, "getDefaultDeviceIds = " + deviceId);
return deviceId;
}
......
......@@ -14,6 +14,7 @@ import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.RetrievalReque
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.SaleRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.VoidRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.command.CommandImpl;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.imp.PrintPaymentStubImpl;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.imp.RefundActionImpl;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.imp.RetrievalActionImpl;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.imp.SaleActionImpl;
......@@ -62,4 +63,8 @@ public final class PosPay {
PosPay.sendRequest(new RetrievalActionImpl(context, iView, PosAction.RETRIEVAL,retrievalAction, orderId, request, onPosActionListener, false));
}
public static void printStub(Context context, IView iView, String txnId, OnPosActionListener onPosActionListener) {
PosPay.sendRequest(new PrintPaymentStubImpl(context, iView, PosAction.PRINT, txnId,onPosActionListener,true));
}
}
package com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos;
import com.etps.aca.lib.constant.Constant;
import lombok.Data;
/**
* @作者: bin
* @創建時間: 2021-01-12 14:20
* @更新時間: 2021-01-12 14:20
* @描述:
*/
@Data
public class PrintPaymentStubRequest {
private String EVENT_NAME = Constant.EVENT.NAME.PRINT;
private String TXN_ID;
private boolean IS_REPRINT;
}
package com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos;
import android.os.Parcel;
import android.os.Parcelable;
/**
* @作者: bin
* @創建時間: 2021-01-12 19:07
* @更新時間: 2021-01-12 19:07
* @描述:
*/
public class PrintPaymentStubResponse extends HywebPosResponse implements Parcelable {
protected PrintPaymentStubResponse(Parcel in) {
super(in);
}
}
......@@ -18,6 +18,7 @@ import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
import com.gingersoft.gsa.cloud.pay.pos.IPosAction;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.AdjustTipRespose;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.PrintPaymentStubResponse;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.RefundRespose;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.RetrievalRespose;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.SaleRespose;
......@@ -134,6 +135,7 @@ public class CommandImpl implements ICommand {
/**
* 返回操作頁
*
* @param context
* @param currentActivity
*/
......@@ -155,8 +157,8 @@ public class CommandImpl implements ICommand {
return GsonUtils.GsonToBean(response, VoidRespose.class);
case com.etps.aca.lib.constant.Constant.EVENT.NAME.REFUND_RESP:
return GsonUtils.GsonToBean(response, RefundRespose.class);
// case com.etps.aca.lib.constant.Constant.EVENT.NAME.PRINT_RESP:
// return GsonUtils.GsonToBean(response, Printr.class);
case com.etps.aca.lib.constant.Constant.EVENT.NAME.PRINT_RESP:
return GsonUtils.GsonToBean(response, PrintPaymentStubResponse.class);
case com.etps.aca.lib.constant.Constant.EVENT.NAME.ADJUST_RESP:
return GsonUtils.GsonToBean(response, AdjustTipRespose.class);
case "RETRIEVAL_RESP":
......
package com.gingersoft.gsa.cloud.pay.pos.hywebpos.imp;
import android.app.Activity;
import android.content.Context;
import com.gingersoft.gsa.cloud.pay.pos.IPosAction;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse;
import com.jess.arms.mvp.IView;
import javax.inject.Inject;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
/**
* @作者: bin
* @創建時間: 2020-12-26 10:38
* @更新時間: 2020-12-26 10:38
* @描述:
*/
public class PrintActionImpl extends IPosAction {
public PrintActionImpl(Context context, IView iView, PosAction action, boolean showLoading) {
super(context,iView,action,showLoading);
}
@Override
protected void onPosActionBefore() {
}
}
package com.gingersoft.gsa.cloud.pay.pos.hywebpos.imp;
import android.app.Activity;
import android.content.Context;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.pay.pos.IPosAction;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.PrintPaymentStubRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse;
import com.jess.arms.mvp.IView;
/**
* @作者: bin
* @創建時間: 2021-01-12 14:47
* @更新時間: 2021-01-12 14:47
* @描述:
*/
public class PrintPaymentStubImpl extends IPosAction {
private String mTxnId;
public PrintPaymentStubImpl(Context context, IView iView, PosAction action, String txnId, OnPosActionListener onPosActionListener, boolean showLoading) {
super(context, iView, action, showLoading);
this.mTxnId = txnId;
this.mOnPosActionListener = onPosActionListener;
}
@Override
protected void onPosActionBefore() {
//打印存根
PrintPaymentStubRequest stub = new PrintPaymentStubRequest();
stub.setTXN_ID(mTxnId);
onPosToAction(GsonUtils.GsonString(stub));
}
@Override
public void onPosSuccess(Context context, HywebPosResponse posResponse, Activity originalActivity) {
super.onPosSuccess(context, posResponse, originalActivity);
canCelLoadingDialog();
if (mOnPosActionListener != null) {
mOnPosActionListener.onPosSuccess(posResponse);
}
}
@Override
public void onPosException(Exception e) {
super.onPosException(e);
canCelLoadingDialog();
if (mOnPosActionListener != null) {
mOnPosActionListener.onPosException(e);
}
}
}
......@@ -20,6 +20,7 @@ import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
import com.gingersoft.gsa.cloud.pay.pos.IPosAction;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.pos.bean.PosMatter;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.SaleRequest;
......@@ -157,6 +158,7 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
printPaymentStub();
}
@Override
......@@ -193,6 +195,12 @@ public class SaleActionImpl extends IPosAction<SaleRespose> {
});
}
/**
* 打印Hyweb支付存根
*/
private void printPaymentStub() {
PosPay.printStub(mContext, mView, mTxnIdResponse.getTxnId(),null);
}
/**
* 2、顯示支付結果
......
......@@ -19,6 +19,9 @@ public class PrintFoodItem implements Parcelable {
private double price;
private int itemType;
public PrintFoodItem() {
}
public PrintFoodItem(String name, int num, double price, int itemType) {
this.name = name;
this.num = num;
......
......@@ -6,8 +6,8 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
sourceCompatibility = "1.8"
targetCompatibility = "1.8"
// deploy
File deployConfig = rootProject.file('gradle/deploy.properties')
......
package com.gingersoft.gsa.cloud.ui.view;
package com.gingersoft.gsa.cloud.ui.recylcler;
import android.content.Context;
import android.util.AttributeSet;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
......@@ -12,17 +14,10 @@ import androidx.recyclerview.widget.RecyclerView;
* 修订历史:2019-10-26
* 描述:
*/
public class RecyclerViewNoBugLinearLayoutManager extends LinearLayoutManager {
public RecyclerViewNoBugLinearLayoutManager(Context context) {
super(context);
}
public class RecyclerViewNoBugGridLayoutManager extends GridLayoutManager {
public RecyclerViewNoBugLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
super(context, orientation, reverseLayout);
}
public RecyclerViewNoBugLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
public RecyclerViewNoBugGridLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
......
......@@ -9,22 +9,18 @@ public class NoScrollGridView extends GridView {
public NoScrollGridView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public NoScrollGridView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public NoScrollGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
......
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