Commit f410baeb by Wyh

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

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