Commit f410baeb by Wyh

1、打印模塊優化 2、餐檯模式印單不打印食品問題 3、打印上菜紙閃退問題處理 4、餐檯模式結賬不打印食品問題

parent bc663d6d
......@@ -212,8 +212,6 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
mRootView.showMessage(OrderDetails.getVerifiAmountTip());
return;
}
//添加PRJ
addPrj(dataBean);
RequestBody requestBody = new FormBody.Builder()
.add("memberId", UserContext.newInstance().getMemberId() + "")
.add("orderId", dataBean.getID() + "")
......@@ -232,6 +230,8 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
@Override
public void onNext(@NonNull UpdateOrderStatusBean info) {
if (info != null) {
//添加PRJ
addPrj(dataBean);
if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrorMsg())) {
mRootView.showMessage(info.getErrorMsg());
}
......
......@@ -21,6 +21,7 @@ import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails.Companion.veri
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails.Companion.verificationAmount
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
import com.gingersoft.gsa.cloud.common.core.user.UserContext
import com.gingersoft.gsa.cloud.common.logan.LoganManager
import com.gingersoft.gsa.cloud.common.service.GetInfoUpdateService
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils
......@@ -261,6 +262,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
}
}, {
//報錯處理
LoganManager.w_delivery(LoganManager.EVENT_QUERY, "自動接單" + it.message)
})
}
}
......@@ -697,7 +699,6 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
// })
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_INSTRUCTION)
.addParam(PrintConstans.PRINT_LOADING, false)
.setActionName("printActivity")
.build()
.callAsyncCallbackOnMainThread { _, _ ->
......
......@@ -211,7 +211,7 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
private void organizeData(int position, List<PrjBean.DataBean.Bean> prjData) {
if (prjData.get(position).getParentId() == 0) {
//是主食品,判斷有沒有子食品,如果沒有子食品,直接打印主食品
if (position + 1 > prjData.size()) {
if (position + 1 >= prjData.size()) {
//沒有子食品
//直接打印
List<PrjBean.DataBean.Bean> printDatas = new ArrayList<>();
......
......@@ -24,6 +24,7 @@ import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
import com.gingersoft.gsa.cloud.common.core.user.UserContext
import com.gingersoft.gsa.cloud.common.function.FunctionManager
import com.gingersoft.gsa.cloud.common.ui.utils.BtnBuilder
import com.gingersoft.gsa.cloud.common.utils.ClipboardUtils
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils
......@@ -110,6 +111,11 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
getOrderDetails(orderId, binding)
}
initTopBar(qm_order_details_bar)
//訂單編號點擊事件
findViewById<TextView>(R.id.tv_order_no).setOnClickListener {
ClipboardUtils.copyText(tv_order_no.text)
showMessage("複製成功")
}
}
private fun initTopBar(topbar: QMUITopBar) {
......
......@@ -48,9 +48,6 @@ class HistoryFragment : BaseFragment(R.layout.fragment_other_order) {
//顯示彈窗
context?.let { context ->
var reasonDesc = it.reasonDesc
if (reasonDesc == null) {
reasonDesc = ""
}
OtherOrderUtils.showOrderDetailsDialog(context, it2, it.orderStatus, it.orderType,it.orderPayType,it.payType, it.status, reasonDesc, true) { _, _, _ ->
//重印
showLoading()
......
......@@ -113,7 +113,7 @@
<include layout="@layout/include_horizontal_color_eee_dividing_line" />
<!-- 訂單編號-->
<TextView
<com.qmuiteam.qmui.alpha.QMUIAlphaTextView
android:id="@+id/tv_order_no"
style="@style/otherOrder_details_twelve_text_Style"
android:layout_width="wrap_content"
......
......@@ -401,7 +401,7 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
LoganManager.w_home(TAG, LoganManager.EVENT_CLICK + name);
switch (name) {
switch (name.trim()) {
case "餐檯模式":
CC.obtainBuilder(ComponentName.COMPONENT_TABLE)
.setActionName("showTableActivity")
......
......@@ -18,7 +18,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:maxLength="4"
android:layout_marginTop="@dimen/dp_8"
android:text="餐檯模式"
android:singleLine="true"
......
......@@ -377,7 +377,7 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO, mMealPayResultParam.getMealOrderPayRequest().getOrderId())
.addParam(PrintConstans.PRINT_ORDER_NO, String.valueOf(mMealPayResultParam.getMealOrderPayRequest().getOrderId()))
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess());
......
......@@ -46,8 +46,8 @@ public class EpsonPrint implements ReceiveListener {
try {
this.resultListener = resultListener;
this.receiveListener = receiveListener;
//第一個參數是機型,第二個參數是語言,
mPrinter = new Printer(Printer.TM_U220, Printer.MODEL_KOREAN, context);
//第一個參數是機型,第二個參數是語言,因為是打印圖片,語言沒有影響
mPrinter = new Printer(Printer.TM_U220, Printer.MODEL_TAIWAN, context);
} catch (Exception e) {
e.printStackTrace();
return false;
......@@ -166,12 +166,12 @@ public class EpsonPrint implements ReceiveListener {
public void putPrintString(String ip, int paperWidth, List<PrintInfoBean> printInfoBeans, PrintExecutor.OnPrintResultListener printResultListener) {
if (mPrinter == null) {
printResultListener.onResult(0, null);
printResultListener.onResult(0);
return;
}
connectByIp(ip, mPrinter.getStatus());
if (mPrinter == null) {
printResultListener.onResult(0, null);
printResultListener.onResult(0);
return;
}
mPrinter.clearCommandBuffer();
......@@ -196,7 +196,7 @@ public class EpsonPrint implements ReceiveListener {
mPrinter.sendData(Printer.PARAM_DEFAULT);
} catch (Exception e) {
e.printStackTrace();
printResultListener.onResult(0, null);
printResultListener.onResult(0);
mPrinter.clearCommandBuffer();
}
}
......@@ -290,7 +290,6 @@ public class EpsonPrint implements ReceiveListener {
mPrinter.sendData(Printer.PARAM_DEFAULT);
} catch (Exception e) {
updatePrintState(PrintSocketHolder.ERROR_4);
mPrinter.clearCommandBuffer();
disconnectPrinter();
isPrint = false;
......@@ -358,7 +357,7 @@ public class EpsonPrint implements ReceiveListener {
private void updatePrintState(int code){
if(resultListener != null){
resultListener.onResult(code,null);
resultListener.onResult(code);
}
}
......
......@@ -17,10 +17,14 @@ public class IpPrintMaker implements PrintDataMaker {
private int width; // 打印的圖片寬度,紙張寬度
private List<Bitmap> bitmaps;
private String ip;
private int port;
public IpPrintMaker(int width, List<Bitmap> bitmaps) {
public IpPrintMaker(int width, List<Bitmap> bitmaps, String ip, int port) {
this.width = width;
this.bitmaps = bitmaps;
this.ip = ip;
this.port = port;
}
@Override
......@@ -39,11 +43,12 @@ public class IpPrintMaker implements PrintDataMaker {
data.add(printer.getDataAndReset());
}
data.add(printer.getDataAndClose());
for (int i = 0; i < bitmaps.size(); i++){
for (int i = 0; i < bitmaps.size(); i++) {
bitmaps.get(i).recycle();
}
return data;
} catch (Exception e) {
e.printStackTrace();
return new ArrayList<>();
}
}
......@@ -52,4 +57,15 @@ public class IpPrintMaker implements PrintDataMaker {
public String getPrjIds() {
return null;
}
@Override
public String getIp() {
return ip;
}
@Override
public int getPort() {
return port;
}
}
......@@ -13,6 +13,14 @@ import java.util.List;
*/
public class OpenCashBoxMaker implements PrintDataMaker {
private String ip;
private int port;
public OpenCashBoxMaker(String ip, int port) {
this.ip = ip;
this.port = port;
}
@Override
public List<byte[]> getPrintData() {
ArrayList<byte[]> data = new ArrayList<>();
......@@ -31,4 +39,14 @@ public class OpenCashBoxMaker implements PrintDataMaker {
public String getPrjIds() {
return null;
}
@Override
public String getIp() {
return ip;
}
@Override
public int getPort() {
return port;
}
}
......@@ -4,6 +4,7 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.common.constans.AppConstans;
import com.gingersoft.gsa.cloud.common.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
......@@ -12,6 +13,7 @@ import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInf
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
......@@ -51,7 +53,8 @@ public class PrintBill extends PrinterRoot<PrintBillContent> {
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean deviceBean) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
List<Bitmap> bitmaps = new ArrayList<>();
bitmaps.add(getBitmap(mContext, deviceBean));
Bitmap bitmap = getBitmap(mContext, deviceBean);
bitmaps.add(bitmap);
bitmapMaps.put("", bitmaps);
return bitmapMaps;
}
......@@ -235,7 +238,7 @@ public class PrintBill extends PrinterRoot<PrintBillContent> {
layout.addView(getTableMealMemberIntegerView(mContext, getOrderMemberInfo(), mPrintBillContent.getIntegralQrCode()));
return zoomBitmap(deviceBean, viewToBitmap(mContext, layout));
return viewToZoomBitmap(mContext, layout, deviceBean);
}
......
......@@ -6,8 +6,10 @@ import android.view.Gravity;
import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
......@@ -31,6 +33,7 @@ import static com.joe.print.mvp.print.common.HtmlContract.LABLE_DIV;
public class PrintServe extends PrinterRoot<PrintServingPaperContent> {
private PrintServingPaperContent mPrintServingPaperContent;
private final String TAG = getClass().getSimpleName();
@Override
protected void setPrintContent(PrintServingPaperContent printContent) {
......@@ -41,7 +44,11 @@ public class PrintServe extends PrinterRoot<PrintServingPaperContent> {
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean printerDeviceBean) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
List<Bitmap> bitmaps = new ArrayList<>();
bitmaps.add(getBitmap(mContext, printerDeviceBean));
Bitmap bitmap = getBitmap(mContext, printerDeviceBean);
if (bitmap == null) {
return null;
}
bitmaps.add(bitmap);
bitmapMaps.put("", bitmaps);
return bitmapMaps;
}
......@@ -135,6 +142,7 @@ public class PrintServe extends PrinterRoot<PrintServingPaperContent> {
List<PrintFoodItem> foodItemList = mPrintServingPaperContent.getFoodItemList();
if (foodItemList == null || foodItemList.size() <= 0) {
LoganManager.w_printer(TAG, "生成打印數據失敗,上菜紙沒有食品");
return null;
}
......
......@@ -4,12 +4,15 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.view.Gravity;
import android.widget.LinearLayout;
import com.gingersoft.gsa.cloud.common.constans.AppConstans;
import com.gingersoft.gsa.cloud.common.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.cart.ShoppingCart;
......@@ -22,6 +25,7 @@ import com.joe.print.R;
import com.joe.print.mvp.model.bean.BillingBean;
import com.joe.print.mvp.model.bean.HtmlLable;
import com.joe.print.mvp.print.common.HtmlContract;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -37,6 +41,7 @@ import static com.joe.print.mvp.print.common.HtmlContract.LABLE_P;
public class PrintSlip extends PrinterRoot<PrintSlipContent> {
private PrintSlipContent mPrintSlipContent;
private final String TAG = getClass().getSimpleName();
@Override
protected void setPrintContent(PrintSlipContent printContent) {
......@@ -47,8 +52,13 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> {
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean deviceBean) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
List<Bitmap> bitmaps = new ArrayList<>();
Bitmap bitmap = getBitmap(mContext, deviceBean);
if (bitmap != null) {
bitmaps.add(getBitmap(mContext, deviceBean));
bitmapMaps.put("", bitmaps);
} else {
return null;
}
//這裡可能還需要加上廚房單的內容,有未送單的食品時。
// PrintKitchen kitchen = new PrintKitchen();
// Map<String, List<Bitmap>> bitmapMaps = new HashMap<>(kitchen.getPrintBitmap(mContext, deviceBean));
......@@ -69,7 +79,7 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> {
List<PrintFoodItem> foodList = mPrintSlipContent.getFoodItemList();
if (foodList.size() == 0 ) {
if (foodList.size() == 0) {
return new String[]{"<html><body></body></html>"};
}
......@@ -175,6 +185,7 @@ public class PrintSlip extends PrinterRoot<PrintSlipContent> {
List<PrintFoodItem> foodList = mPrintSlipContent.getFoodItemList();
if (foodList == null || foodList.size() <= 0) {
LoganManager.w_printer(TAG, "生成打印數據失敗,印單沒有食品");
return null;
}
......
......@@ -275,7 +275,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
if (isSuccess) {
listener.printSuccess();
} else {
listener.printFailure("打印失敗");
listener.printFailure("sunmi打印失敗");
}
}
......@@ -323,24 +323,19 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
}
}
public void ipDevicePrint(PrinterDeviceBean printerDeviceBean, List<Bitmap> bitmaps) {
ipDevicePrint(printerDeviceBean, bitmaps, this, this);
}
private EpsonPrint mPrinter;
private PrintExecutor executor;
/**
* ip設備打印
*/
private void ipDevicePrint(PrinterDeviceBean
printerDeviceBean, List<Bitmap> bitmaps, PrintSocketHolder.OnStateChangedListener
stateChangedListener, PrintExecutor.OnPrintResultListener resultListener) {
public void ipDevicePrint(PrinterDeviceBean
printerDeviceBean, List<Bitmap> bitmaps) {
//獲取打印機機型,如果是EPSON的打印機,調用EPSON的打印方法
if ((printerDeviceBean.getPrinterName() != null && printerDeviceBean.getPrinterName().toLowerCase().contains("EPSON".toLowerCase()))
&& (printerDeviceBean.getModel() != null && printerDeviceBean.getModel().toLowerCase().contains("TM-U220B".toLowerCase()))) {
if ((printerDeviceBean.getPrinterName() != null && printerDeviceBean.getPrinterName().toLowerCase().contains("EPSON".toLowerCase()))) {
if (printerDeviceBean.getModel() != null) {
if (printerDeviceBean.getModel().toLowerCase().contains("TM-U220B".toLowerCase())) {
ThreadPoolManager.getInstence().putExecutableTasks(() -> {
mPrinter = EpsonPrint.getInstance();
EpsonPrint mPrinter = EpsonPrint.getInstance();
mPrinter.setPrint(false);
mPrinter.initializeObject(GsaCloudApplication.getAppContext(), PrinterRoot.this, PrinterRoot.this);
for (int j = 0; j < bitmaps.size(); j++) {
......@@ -348,18 +343,22 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
}
}
);
} else {
return;
}
}
}
ipPrint(printerDeviceBean, bitmaps, this, this);
}
private void ipPrint(PrinterDeviceBean printerDeviceBean, List<Bitmap> bitmaps, PrintSocketHolder.OnStateChangedListener stateChangedListener, PrintExecutor.OnPrintResultListener resultListener) {
if (executor == null) {
executor = new PrintExecutor(printerDeviceBean);
executor.setOnStateChangedListener(stateChangedListener);
executor.setOnPrintResultListener(resultListener);
} else {
executor.setPrinterDeviceBean(printerDeviceBean);
executor = new PrintExecutor()
.setOnStateChangedListener(stateChangedListener)
.setOnPrintResultListener(resultListener);
}
IpPrintMaker maker = new IpPrintMaker(480, bitmaps);
IpPrintMaker maker = new IpPrintMaker(480, bitmaps, printerDeviceBean.getIp(), printerDeviceBean.getPort());
executor.doPrinterRequestAsync(maker);
}
}
public void usbPrint(Context context, List<Bitmap> bitmaps) {
UsbPrint usbPrint = new UsbPrint(context, (code, printId) -> {
......@@ -408,31 +407,23 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
printerFinder.startFinder();
}
public void transmitPrjToPc(PrinterDeviceBean defaultPrint) {
}
/**
* view轉bitmap
*
* @param context
* @param view
* @return
* view轉為縮放後的bitmap
*/
final Bitmap viewToBitmap(Context context, View view) {
LayoutToBitmapUtils.layoutView(context, view);//先测量view
//轉為bitmap
return LayoutToBitmapUtils.loadBitmapFromView(view);
}
final Bitmap viewToZoomBitmap(Context context, View view, PrinterDeviceBean printerDeviceBean) {
LayoutToBitmapUtils.layoutView(context, view);//先测量view
//轉為bitmap
return zoomBitmap(printerDeviceBean, LayoutToBitmapUtils.loadBitmapFromView(view));
}
public Bitmap zoomBitmap(PrinterDeviceBean printerDeviceBean, Bitmap bitmap) {
/**
* 縮放bitmap
*
* @param printerDeviceBean
* @param bitmap
* @return
*/
private Bitmap zoomBitmap(PrinterDeviceBean printerDeviceBean, Bitmap bitmap) {
int printWidth;
if (printerDeviceBean != null && printerDeviceBean.getPaperSpecification() != null) {
printWidth = Double.valueOf(printerDeviceBean.getPaperSpecification()).intValue();
......@@ -444,10 +435,10 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
}
@Override
public void onResult(int errorCode, PrinterDeviceBean printerDeviceBean) {
public void onResult(int errorCode) {
switch (errorCode) {
case PrintSocketHolder.ERROR_0:
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess(printerDeviceBean);
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess();
printSuccess();
return;
case PrintSocketHolder.ERROR_1:
......@@ -477,7 +468,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
LoganManager.w_printer(TAG, "打印失败");
break;
}
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(errorCode, printerDeviceBean);
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(errorCode);
setPrintState(errorCode);
}
......@@ -494,7 +485,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
}
@Override
public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
public void onStateChanged(int state) {
setPrintState(state);
}
......@@ -832,6 +823,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
/**
* 獲取食品列表
* 結賬單、印單。外送都用這個
*
* @param mContext
* @param foodList 食品信息
* @param deviceBean 打印設備
......@@ -854,6 +846,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
/**
* 結賬單和印單
*
* @param mContext
* @param billingBeans
* @return
......@@ -865,6 +858,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
/**
* 結賬單,支付方式
*
* @param mContext
* @param payBillMoneys 支付方式數據
* @return
......
......@@ -22,19 +22,14 @@ public class TestPrintMaker implements PrintDataMaker {
private List<PrintInfoBean> printInfoBeans;
private Bitmap bitmap;
public TestPrintMaker(PrinterWriter printer, List<PrintInfoBean> printInfoBeans) {
private String ip;
private int port;
public TestPrintMaker(PrinterWriter printer, List<PrintInfoBean> printInfoBeans, String ip, int port) {
this.printer = printer;
this.printInfoBeans = printInfoBeans;
}
public TestPrintMaker( List<PrintInfoBean> printInfoBeans) {
this.printInfoBeans = printInfoBeans;
}
public TestPrintMaker(PrinterWriter printer) {
this.printer = printer;
}
public TestPrintMaker(Bitmap bitmap) {
this.bitmap = bitmap;
this.ip = ip;
this.port = port;
}
@Override
......@@ -71,6 +66,16 @@ public class TestPrintMaker implements PrintDataMaker {
return null;
}
@Override
public String getIp() {
return ip;
}
@Override
public int getPort() {
return port;
}
private void print(PrintInfoBean printInfoBean, int i) throws IOException {
// if (i == 0) {
// location = 0;
......
......@@ -17,11 +17,16 @@ import java.util.Map;
public class PrjPrintMaker implements PrintDataMaker {
private Map<String, Bitmap> bitmapMap;
private String ip;
private int port;
public PrjPrintMaker(Map<String, Bitmap> bitmapMap) {
public PrjPrintMaker(Map<String, Bitmap> bitmapMap, String ip, int port) {
this.bitmapMap = bitmapMap;
this.ip = ip;
this.port = port;
}
@Override
public List<byte[]> getPrintData() {
ArrayList<byte[]> data = new ArrayList<>();
......@@ -48,4 +53,14 @@ public class PrjPrintMaker implements PrintDataMaker {
}
return "";
}
@Override
public String getIp() {
return ip;
}
@Override
public int getPort() {
return port;
}
}
......@@ -259,14 +259,14 @@ public class PrintTestActivity extends AppCompatActivity implements PrintSocketH
}
@Override
public void onResult(int errorCode, PrinterDeviceBean printerDeviceBean) {
public void onResult(int errorCode) {
if (errorCode == 0) {
ToastUtils.show(PrintTestActivity.this, "打印失败");
}
}
@Override
public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
public void onStateChanged(int state) {
}
......
package com.joe.print.mvp.ui.adapter;
import android.content.Context;
import androidx.core.content.ContextCompat;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.joe.print.R;
......@@ -9,36 +13,31 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
/**
* 打印進度
*/
public class PrintProgressAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
private int progress = 0;
private int completeColor;
private int inProgressColor;
public PrintProgressAdapter(@Nullable List<String> data) {
public PrintProgressAdapter(Context context, @Nullable List<String> data) {
super(R.layout.print_progress_item, data);
}
public void setProgress(int progress) {
this.progress = progress;
super.notifyDataSetChanged();
completeColor = ContextCompat.getColor(context, R.color.order_state0_color);
inProgressColor = ContextCompat.getColor(context, R.color.theme_333_color);
}
@Override
protected void convert(@NotNull BaseViewHolder baseViewHolder, String s) {
baseViewHolder.setText(R.id.tv_print_progressbar, s);
if (progress > baseViewHolder.getAdapterPosition()) {
if (baseViewHolder.getAdapterPosition() == getItemCount() - 1) {
baseViewHolder.setGone(R.id.pb_print_progressbar, true);
baseViewHolder.setTextColor(R.id.tv_print_progressbar, R.color.order_state0_color);
baseViewHolder.setTextColor(R.id.tv_print_progressbar, completeColor);
baseViewHolder.setGone(R.id.iv_checked, false);
} else if (progress == baseViewHolder.getAdapterPosition()) {
baseViewHolder.setGone(R.id.pb_print_progressbar, false);
baseViewHolder.setTextColor(R.id.tv_print_progressbar, R.color.theme_333_color);
baseViewHolder.setGone(R.id.iv_checked, true);
} else {
baseViewHolder.setGone(R.id.pb_print_progressbar, true);
baseViewHolder.setTextColor(R.id.tv_print_progressbar, R.color.color_ccc);
baseViewHolder.setGone(R.id.pb_print_progressbar, false);
baseViewHolder.setTextColor(R.id.tv_print_progressbar, inProgressColor);
baseViewHolder.setGone(R.id.iv_checked, true);
}
}
}
package com.joe.print.mvp.ui.view;
import android.content.Context;
import androidx.annotation.NonNull;
import com.lxj.xpopup.impl.LoadingPopupView;
/**
* @author 宇航.
* User: admin
* Date: 2021/2/5
* Time: 18:31
* Use:
*/
public class PrintProgressPopup extends LoadingPopupView {
/**
* @param context
* @param bindLayoutId layoutId 如果要显示标题,则要求必须有id为tv_title的TextView,否则无任何要求
*/
public PrintProgressPopup(@NonNull Context context, int bindLayoutId) {
super(context, bindLayoutId);
}
}
package com.joe.print.mvp.ui.view;
import android.content.Context;
import android.widget.PopupMenu;
import android.widget.PopupWindow;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.listener.OnItemClickListener;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.joe.print.R;
import com.joe.print.mvp.print.utils.MyPrintUtils;
import com.joe.print.mvp.ui.adapter.DialogPrinterListAdapter;
import com.lxj.xpopup.core.CenterPopupView;
import com.lxj.xpopup.impl.CenterListPopupView;
import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration;
import java.util.List;
/**
* @author 宇航.
* User: admin
* Date: 2021/2/5
* Time: 16:59
* Use:選擇打印彈窗
*/
public class SelectPrintDevicePopup extends CenterPopupView {
private List<PrinterDeviceBean> printerDeviceBeans;
private OnItemClickListener mOnItemClickListener;
private PopupWindow.OnDismissListener onDismissListener;
public SelectPrintDevicePopup(@NonNull Context context, List<PrinterDeviceBean> printerDeviceBeans) {
super(context);
this.printerDeviceBeans = printerDeviceBeans;
}
@Override
protected int getPopupLayoutId() {
return R.layout.print_dialog_internet_list;
}
@Override
protected void initPopupContent() {
RecyclerView mRvPrintList = findViewById(R.id.rv_print_list);
DialogPrinterListAdapter printListAdapter = new DialogPrinterListAdapter(printerDeviceBeans, getContext());
mRvPrintList.addItemDecoration(new DefaultItemDecoration(ContextCompat.getColor(getContext(), R.color.line_color)));
mRvPrintList.setAdapter(printListAdapter);
printListAdapter.setOnItemClickListener(mOnItemClickListener);
}
public SelectPrintDevicePopup setOnItemClickListener(OnItemClickListener mOnItemClickListener) {
this.mOnItemClickListener = mOnItemClickListener;
return this;
}
public SelectPrintDevicePopup setOnDismissListener(PopupWindow.OnDismissListener onDismissListener) {
this.onDismissListener = onDismissListener;
return this;
}
@Override
protected void onDismiss() {
super.onDismiss();
if (onDismissListener != null)
onDismissListener.onDismiss();
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout 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="@color/alpha_70_black"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_bitmap"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_print_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:scaleType="fitXY" />
</androidx.core.widget.NestedScrollView>
\ No newline at end of file
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout 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">
<FrameLayout
android:layout_gravity="center"
android:id="@+id/centerPopupContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_30"
android:layout_marginRight="@dimen/dp_30"
android:background="@drawable/shape_white_eight_corners_bg"
android:gravity="center"
android:orientation="vertical"
android:padding="@dimen/dp_10">
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_print_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
android:layout_gravity="center"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
\ No newline at end of file
</FrameLayout>
</FrameLayout>
......@@ -3,15 +3,16 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_20"
android:orientation="horizontal">
android:orientation="horizontal"
android:paddingLeft="@dimen/dp_10"
android:paddingTop="@dimen/dp_10"
android:paddingRight="@dimen/dp_10">
<TextView
android:id="@+id/tv_print_progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_5"
android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_16"
tools:text="狀態:" />
......
......@@ -3,6 +3,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:orientation="vertical"
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10">
......@@ -36,13 +39,13 @@
<TextView
android:id="@+id/tv_printer_port"
android:layout_width="wrap_content"
android:visibility="gone"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:singleLine="true"
android:text="端口號:"
android:textColor="@color/normal_color"
android:textSize="@dimen/dp_14"
android:visibility="gone"
app:layout_constraintHorizontal_weight="0.5"
app:layout_constraintLeft_toRightOf="@id/tv_printer_ip"
app:layout_constraintRight_toRightOf="parent"
......
......@@ -295,6 +295,8 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode
public void onNext(@NonNull BaseResult info) {
if (info != null) {
if (info.isSuccess()) {
//供應商信息修改後,將購物車食品信息刪除掉,不然食品信息中的採購金額和地址不對
SupplyShoppingCart.getInstance().removeFoodsBySupplier(supplierBean.getId());
mRootView.saveSuccess();
} else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) {
mRootView.showMessage(info.getErrMsg());
......
......@@ -102,10 +102,9 @@ public class WarehousingInventoryPresenter extends BasePresenter<WarehousingInve
/**
* 查詢庫存盤點記錄
*/
public void getWarehousingRecord(int pageIndex) {
Map<String, Object> map = new HashMap<>(4);
Constant.addRestaurantId(map);
Constant.addBrandId(map);
public void getWarehousingRecord(String foodNo, int pageIndex) {
Map<String, Object> map = new HashMap<>(3);
map.put("foodNo", foodNo);
Constant.addPageSize(map);
map.put("pageIndex", pageIndex * Constant.PAGE_SIZE);
mModel.getWarehousingRecord(map)
......@@ -119,8 +118,7 @@ public class WarehousingInventoryPresenter extends BasePresenter<WarehousingInve
@Override
public void onNext(BaseResult baseResult) {
if (baseResult != null && baseResult.isSuccess()) {
//消耗完之後,關閉頁面
mRootView.loadRecord();
} else if (baseResult != null && TextUtil.isNotEmptyOrNullOrUndefined(baseResult.getErrMsg())) {
mRootView.showMessage(baseResult.getErrMsg());
} else {
......
package com.gingersoft.supply_chain.mvp.ui.activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import androidx.annotation.NonNull;
......@@ -17,9 +20,11 @@ import com.gingersoft.supply_chain.mvp.contract.SupplyChainMainContract;
import com.gingersoft.supply_chain.mvp.presenter.SupplyChainMainPresenter;
import com.gingersoft.supply_chain.mvp.ui.fragment.FunctionListFragment;
import com.gingersoft.supply_chain.mvp.utils.HideUtil;
import com.gingersoft.supply_chain.mvp.utils.NotDispatchListener;
import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import static com.jess.arms.utils.Preconditions.checkNotNull;
......@@ -49,6 +54,25 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai
loadRootFragment(R.id.layout_supply_chain_content, FunctionListFragment.newInstance());
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (getTopFragment() instanceof NotDispatchListener) {
return super.dispatchTouchEvent(event);
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (v instanceof EditText) {
Rect outRect = new Rect();
v.getGlobalVisibleRect(outRect);
if (!outRect.contains((int) event.getRawX(), (int) event.getRawY())) {
v.clearFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
}
return super.dispatchTouchEvent(event);
}
// @Override
// public boolean dispatchTouchEvent(MotionEvent ev) {
// if (getTopFragment() instanceof NotDispatchListener) {
......
......@@ -13,6 +13,7 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.mvp.bean.SendSupplierMsgBean;
import com.gingersoft.supply_chain.mvp.bean.SupplierInfoBean;
import com.gingersoft.supply_chain.mvp.utils.DoubleClickUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
......@@ -81,6 +82,9 @@ public class SendSupplierMsgAdapter extends BaseQuickAdapter<SendSupplierMsgBean
viewHolder.setText(R.id.tv_item_pic_radio_title, SupplierInfoBean.SupplierContacts.getContractTitleByType(item.getType()));
viewHolder.setImageResource(R.id.iv_item_pic_radio_pic, getContractPicByType(item.getType()));
radioButton.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (DoubleClickUtils.isFastDoubleClick()) {
return;
}
if (isChecked) {
setSelectIndex(viewHolder.getAdapterPosition());
notifyDataSetChanged();
......
......@@ -332,7 +332,12 @@ public class FoodIngredientsFragment extends BaseSupplyChainFragment<FoodIngredi
if (foodListAdapter != null) {
mPresenter.getSelectFood(foodListAdapter.getIntegerMap());
}
//需要先判斷是否有食品
if (SupplyShoppingCart.getInstance().getCartFoods().size() > 0) {
start(ShoppingCatFragment.newInstance());
} else {
showMessage("請選擇食品");
}
} else if (viewId == R.id.btn_food_ingredients_cancel) {
//取消
killMyself();
......
......@@ -81,7 +81,7 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
ScreenView screenView;
@BindView(R2.id.view_load_bg)
View loadBg;
// @BindView(R2.id.ed_food_ingredients_search)
// @BindView(R2.id.ed_food_ingredients_search)
// EditText edSearch;
@BindView(R2.id.srl_purchase_list)
SmartRefreshLayout refreshPurchaseList;
......@@ -166,7 +166,16 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT);
mTopBar.addRightView(view, R.id.qmui_shopping_cart, layoutParams);
view.setOnClickListener(v -> start(ShoppingCatFragment.newInstance()));
view.setOnClickListener(v -> {
//需要先判斷是否有食品
if (SupplyShoppingCart.getInstance().getCartFoods().size() > 0) {
start(ShoppingCatFragment.newInstance());
} else {
//跳轉到下單頁面
showMessage("請先選擇食品");
startForResult(FoodIngredientsFragment.newInstance(ADD_ORDER), REQUEST_ORDER_DETAILS_CODE);
}
});
}
private void initTabAndData() {
......
......@@ -91,13 +91,13 @@ public class WarehousingInventoryFragment extends BaseSupplyChainFragment<Wareho
public void initData(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
if (arguments != null) {
//獲取庫存盤點記錄
getWarehousingRecord();
int foodId = arguments.getInt(WarehouseDetailsFragment.FOOD_ID_KEY);
//食品編號
foodNo = arguments.getString(WarehouseDetailsFragment.FOOD_NO_KEY);
//食品庫存總數
foodNum = arguments.getInt(WarehouseDetailsFragment.FOOD_NUM_KEY);
//獲取庫存盤點記錄
getWarehousingRecord();
//加載食品圖片
loadFoodImage(arguments);
//初始化標題
......@@ -111,7 +111,7 @@ public class WarehousingInventoryFragment extends BaseSupplyChainFragment<Wareho
}
private void getWarehousingRecord() {
mPresenter.getWarehousingRecord(pageIndex);
mPresenter.getWarehousingRecord(foodNo, pageIndex);
}
private void initEdit() {
......
package com.gingersoft.supply_chain.mvp.utils;
/**
* @author 宇航.
* User: admin
* Date: 2021/2/6
* Time: 17:21
* Use:
*/
public class DoubleClickUtils {
private static long lastClickTime = 0;
public static boolean isFastDoubleClick() {
long nowTime = System.currentTimeMillis();
if (nowTime - lastClickTime < 500) {//500ms
return true;
}
lastClickTime = nowTime;
return false;
}
}
/*
* Copyright 2016 yinglan
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.gingersoft.supply_chain.mvp.utils;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Rect;
import android.os.IBinder;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AbsListView;
import android.widget.EditText;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
/**
* Created by yinglan
*/
public class HideUtil {
/**
* Initialization method
*
* @param activity
*/
public static void init(Activity activity) {
new HideUtil(activity, null);
}
/**
* Can pass the outer layout
*
* @param activity
* @param content
*/
public static void init(Activity activity, ViewGroup content) {
new HideUtil(activity, content);
}
/**
* Forced hidden keyboard
*
* @param activity
*/
public static void hideSoftKeyboard(Activity activity) {
if (null == activity) {
throw new RuntimeException("参数错误");
}
View view = activity.getCurrentFocus();
if (null != view) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
/**
* Forced hidden keyboard
*
* @param view
*/
public static void hideSoftKeyboard(View view) {
if (null != view) {
InputMethodManager inputMethodManager = (InputMethodManager) view.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
} else {
throw new RuntimeException("参数错误");
}
}
/**
* Forced hidden keyboard
*
* @param dialog
*/
public static void hideDialogSoftKeyboard(Dialog dialog) {
if (null == dialog) {
throw new RuntimeException("参数错误");
}
View view = dialog.getCurrentFocus();
if (null != view) {
InputMethodManager inputMethodManager = (InputMethodManager) dialog.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
/**
* @param activity
*/
private HideUtil(final Activity activity, ViewGroup content) {
if (content == null) {
content = (ViewGroup) activity.findViewById(android.R.id.content);
}
getScrollView(content, activity);
content.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.e("eee", "出賣人");
dispatchTouchEvent(activity, motionEvent);
return false;
}
});
}
private void getScrollView(ViewGroup viewGroup, final Activity activity) {
if (null == viewGroup) {
return;
}
int count = viewGroup.getChildCount();
for (int i = 0; i < count; i++) {
View view = viewGroup.getChildAt(i);
if (view instanceof ScrollView) {
ScrollView newDtv = (ScrollView) view;
newDtv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
dispatchTouchEvent(activity, motionEvent);
return false;
}
});
} else if (view instanceof AbsListView) {
AbsListView newDtv = (AbsListView) view;
newDtv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
dispatchTouchEvent(activity, motionEvent);
return false;
}
});
} else if (view instanceof RecyclerView) {
RecyclerView newDtv = (RecyclerView) view;
newDtv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
dispatchTouchEvent(activity, motionEvent);
return false;
}
});
} else if (view instanceof ViewGroup) {
this.getScrollView((ViewGroup) view, activity);
}
if (view.isClickable() && view instanceof TextView && !(view instanceof EditText)) {
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
dispatchTouchEvent(activity, motionEvent);
return false;
}
});
}
}
}
/**
* @param mActivity
* @param ev
* @return
*/
public boolean dispatchTouchEvent(Activity mActivity, MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View v = mActivity.getCurrentFocus();
if (null != v && isShouldHideInput(v, ev)) {
hideSoftInput(mActivity, v.getWindowToken());
}
}
return false;
}
/**
* @param v
* @param event
* @return
*/
private boolean isShouldHideInput(View v, MotionEvent event) {
if (v instanceof EditText) {
Rect rect = new Rect();
v.getHitRect(rect);
if (rect.contains((int) event.getX(), (int) event.getY())) {
return false;
}
}
return true;
}
/**
* @param mActivity
* @param token
*/
private void hideSoftInput(Activity mActivity, IBinder token) {
if (token != null) {
InputMethodManager im = (InputMethodManager) mActivity.getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
......@@ -135,12 +135,12 @@ public class PrintServingPaperAction extends TableAction {
* 打印上菜紙
*/
private void printParper(TableBean.DataBean tableBean) {
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(),tableBean);
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(), tableBean);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SERVE)
.addParam(PrintConstans.PRINT_CONTENT,printContent)
.addParam(PrintConstans.PRINT_ORDER_NO,tableBean.getOrderId())
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO, String.valueOf(tableBean.getOrderId()))
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
//清空賬單數據
......
......@@ -848,6 +848,12 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
});
}
/**
* 點餐送單
*
* @param isPrint
* @param afterToActivity
*/
@Override
public void addOrderFood(boolean isPrint, Class<?> afterToActivity) {
List<OrderDetail> foodLists = getOrderFoodLists();
......@@ -894,8 +900,13 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
//合并主食品
mergeMainFoodNumber(mOrderMealList);
}
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(), mTableInfo);
//餐檯送單
if (DoshokuOrder.getInstance().getNewFoodList() == null || DoshokuOrder.getInstance().getNewFoodList().size() <= 0) {
//沒有新的食品時,不打印送單
IActivity.returnBeforeActivity(initTable);
return;
}
PrintContent printContent = new PrintContentAdapter().adaptationSendOrderPaperContent(DoshokuOrder.getInstance(), mTableInfo);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
......
......@@ -388,8 +388,17 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//合并主食品
mergeMainFoodNumber(mOrderMealList);
}
PrintContent printContent = new PrintContentAdapter().adaptationServingPaperContent(DoshokuOrder.getInstance(), mTableInfo);
//賬單內容送單
if (DoshokuOrder.getInstance().getNewFoodList() == null || DoshokuOrder.getInstance().getNewFoodList().size() <= 0) {
//沒有新的食品時,不打印送單
if (afterToActivity == null) {
mRootView.sendSuccess();
mAppManager.killActivity(MealStandActivity.class);
}
return;
}
//賬單內容送單
PrintContent printContent = new PrintContentAdapter().adaptationSendOrderPaperContent(DoshokuOrder.getInstance(), mTableInfo);
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
......
......@@ -7,8 +7,8 @@ ext {
targetSdkVersion : 29,
//正式版: 1.0.3 3
//內部測試版:1.2.0 20
versionCode : 23,
versionName : "1.2.3"
versionCode : 24,
versionName : "1.2.4"
]
version = [
......
......@@ -358,12 +358,12 @@ public class GsaCloudApplication extends BaseApplication {
}
@Override
public void onPrintSuccess(PrinterDeviceBean printerDeviceBean) {
public void onPrintSuccess() {
LoganManager.w_printer(TAG, "打印成功");
}
@Override
public void onPrintError(int errorCode, PrinterDeviceBean printerDeviceBean) {
public void onPrintError(int errorCode) {
LoganManager.w_printer(TAG, "打印失敗:" + errorCode);
}
......
......@@ -23,7 +23,6 @@ public class PrintConstans {
public static final String PRINT_TYPE = "print_type";//打印類型
public static final String PRINT_CONTENT = "print_content";//打印內容
public static final String PRINT_ORDER_NO = "print_order_no";//打印ID(唯一标识即可)
public static final String PRINT_LOADING = "is_show_loading";//是否顯示加載框
public final static int PRINT_TEST = -1;//測試頁
public final static int PRINT_SERVE = 0;//上菜紙
......
......@@ -69,6 +69,8 @@ public class LoganManager {
private static final String TABLEMODE_BUSINESS_TAG = "tableMode-> ";
private static final String ORDER_BUSINESS_TAG = "order-> ";
private static final String PAY_BUSINESS_TAG = "pay-> ";
private static final String DELIVERY_PICK_TAG = "delivery-> ";
/*******************************交互事件類型**************************************/
public static final String EVENT_CLICK = "點擊->";
......@@ -115,6 +117,9 @@ public class LoganManager {
w_business(PAY_BUSINESS_TAG, TAG, eventAndLog);
}
public static void w_delivery(String TAG, String... eventAndLog) {
w_business(DELIVERY_PICK_TAG, TAG, eventAndLog);
}
private static void w_business(String BUSINESS_TAG, String TAG, String... eventAndLog) {
if (eventAndLog != null) {
if (eventAndLog.length > 1) {
......
......@@ -19,7 +19,7 @@ public interface PrinterFlowListener extends ExternalPrinterConnection {
void onPrinterBitmapBefore(int orderType, int printType, String directoryName, List<Bitmap> bitmaps);
void onPrintSuccess(PrinterDeviceBean printerDeviceBean);
void onPrintSuccess();
void onPrintError(int errorCode, PrinterDeviceBean printerDeviceBean);
void onPrintError(int errorCode);
}
......@@ -22,4 +22,8 @@ public interface PrintDataMaker {
List<byte[]> getPrintData();
String getPrjIds();
String getIp();
int getPort();
}
......@@ -24,6 +24,8 @@ public interface AdaptationContent {
PrintContent adaptationPrintSlipContent(DoshokuOrder doshokuOrder, TableBean.DataBean tableBean);
PrintContent adaptationSendOrderPaperContent(DoshokuOrder doshokuOrder, TableBean.DataBean tableBean);
PrintContent adaptationServingPaperContent(DoshokuOrder doshokuOrder, TableBean.DataBean tableBean);
PrintContent adaptationBillContent(DoshokuOrder doshokuOrder, TableBean.DataBean tableBean);
......
......@@ -55,6 +55,11 @@ public class PrintContentAdapter implements AdaptationContent {
return getPrintTakeawayFormContent(data, 2);
}
/**
* 清機打印
* @param settlementReport
* @return
*/
@Override
public PrintContent adaptationPrintCleanMachineContent(SettlementReport settlementReport) {
PrintCleanMachineContent cleanMachineContent = new PrintCleanMachineContent();
......@@ -68,6 +73,12 @@ public class PrintContentAdapter implements AdaptationContent {
return cleanMachineContent;
}
/**
* 印單
* @param doshokuOrder
* @param tableBean
* @return
*/
@Override
public PrintContent adaptationPrintSlipContent(DoshokuOrder doshokuOrder, TableBean.DataBean tableBean) {
PrintSlipContent slipContent = new PrintSlipContent();
......@@ -77,15 +88,23 @@ public class PrintContentAdapter implements AdaptationContent {
slipContent.setPerson(tableBean.getPerson());
slipContent.setCreateTime(tableBean.getCreateTime());
slipContent.setOrderNo(doshokuOrder.getOrderNo());
slipContent.setFoodItemList(orderDetailItemCastPrintFoodItemList(doshokuOrder.getNewFoodList()));
// slipContent.setFoodItemList(orderDetailItemCastPrintFoodItemList(doshokuOrder.getNewFoodList()));
slipContent.setFoodItemList(orderDetailItemCastPrintFoodItemList(doshokuOrder.getShoppingCart().getOrderCommodityList()));
slipContent.setBillItemList(billItemCastPrintBillItemList(doshokuOrder.getShoppingCart().getBillItemList()));
slipContent.setWholeAmount(doshokuOrder.getShoppingCart().getWholeAmount());
slipContent.setTotalAmount(doshokuOrder.getShoppingCart().getTotalAmount());
slipContent.setPoliteLanguage("歡迎光臨!");
return slipContent;
}
/**
* 送單
* @param doshokuOrder
* @param tableBean
* @return
*/
@Override
public PrintContent adaptationServingPaperContent(DoshokuOrder doshokuOrder, TableBean.DataBean tableBean) {
public PrintContent adaptationSendOrderPaperContent(DoshokuOrder doshokuOrder, TableBean.DataBean tableBean) {
PrintServingPaperContent servingPaperContent = new PrintServingPaperContent();
servingPaperContent.setBrand(RestaurantInfoManager.newInstance().getBrandName());
servingPaperContent.setResturantName(RestaurantInfoManager.newInstance().getRestaurantName());
......@@ -93,11 +112,39 @@ public class PrintContentAdapter implements AdaptationContent {
servingPaperContent.setPerson(tableBean.getPerson());
servingPaperContent.setCreateTime(tableBean.getCreateTime());
servingPaperContent.setOrderNo(doshokuOrder.getOrderNo());
//送單
servingPaperContent.setFoodItemList(orderDetailItemCastPrintFoodItemList(doshokuOrder.getNewFoodList()));
servingPaperContent.setPoliteLanguage("歡迎光臨!");
return servingPaperContent;
}
/**
* 上菜紙
* @param doshokuOrder
* @param tableBean
* @return
*/
@Override
public PrintContent adaptationServingPaperContent(DoshokuOrder doshokuOrder, TableBean.DataBean tableBean) {
PrintServingPaperContent servingPaperContent = new PrintServingPaperContent();
servingPaperContent.setBrand(RestaurantInfoManager.newInstance().getBrandName());
servingPaperContent.setResturantName(RestaurantInfoManager.newInstance().getRestaurantName());
servingPaperContent.setTableName(tableBean.getTableName());
servingPaperContent.setPerson(tableBean.getPerson());
servingPaperContent.setCreateTime(tableBean.getCreateTime());
servingPaperContent.setOrderNo(doshokuOrder.getOrderNo());
// servingPaperContent.setFoodItemList(orderDetailItemCastPrintFoodItemList(doshokuOrder.getNewFoodList()));
servingPaperContent.setFoodItemList(orderDetailItemCastPrintFoodItemList(doshokuOrder.getShoppingCart().getOrderCommodityList()));
servingPaperContent.setPoliteLanguage("歡迎光臨!");
return servingPaperContent;
}
/**
* 打印結賬單
* @param doshokuOrder
* @param tableBean
* @return
*/
@Override
public PrintContent adaptationBillContent(DoshokuOrder doshokuOrder, TableBean.DataBean tableBean) {
PrintBillContent billContent = new PrintBillContent();
......@@ -107,7 +154,7 @@ public class PrintContentAdapter implements AdaptationContent {
billContent.setPerson(tableBean.getPerson());
billContent.setCreateTime(tableBean.getCreateTime());
billContent.setOrderNo(doshokuOrder.getOrderNo());
billContent.setFoodItemList(orderDetailItemCastPrintFoodItemList(doshokuOrder.getNewFoodList()));
billContent.setFoodItemList(orderDetailItemCastPrintFoodItemList(doshokuOrder.getShoppingCart().getOrderCommodityList()));
billContent.setBillItemList(billItemCastPrintBillItemList(doshokuOrder.getShoppingCart().getBillItemList()));
billContent.setPayMethodItemList(payMethodItemCastPrintBillItemList(doshokuOrder.getBillMoney()));
billContent.setWholeAmount(doshokuOrder.getShoppingCart().getWholeAmount());
......
......@@ -60,7 +60,7 @@ public class ConnectPrintUtil {
socketMap.put(ip, socket);
} catch (IOException e) {
socketMap.remove(ip);
setState(PrintSocketHolder.ERROR_1, "連接失敗" + e.getMessage());
setState(PrintSocketHolder.ERROR_2, "連接失敗" + e.getMessage());
e.printStackTrace();
}
}
......
......@@ -3,6 +3,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_10"
android:orientation="horizontal">
<TextView
......
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