Commit 70cf3b69 by Wyh

7.30 1、登陸頁面插畫更換 2、上菜紙、印單、結賬單打印調整 3、第三方物流接口報警推送 4、修改訂單狀態報警推送 5、打印邏輯優化

Signed-off-by: Wyh <1239658231>
parent 6bdf3095
package com.gingersoft.gsa.cloud.base.adapter.print; package com.gingersoft.gsa.cloud.base.adapter.print;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.text.TextPaint; import android.view.View;
import android.text.style.StyleSpan;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -12,7 +11,6 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder; ...@@ -12,7 +11,6 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.base.R; import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail; import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import java.util.List; import java.util.List;
...@@ -29,6 +27,29 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { ...@@ -29,6 +27,29 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
private int modifierIsItalic = 2; private int modifierIsItalic = 2;
private int numberIsFlip = 2;//熱敏打印沒有顏色,翻轉用不了 private int numberIsFlip = 2;//熱敏打印沒有顏色,翻轉用不了
private boolean showPrice = true;
public FoodAdapter(@Nullable List<OrderDetail> data, PrinterDeviceBean deviceBean, boolean showPrice) {
super(R.layout.print_item_food, data);
try {
this.foodFontSize = Integer.parseInt(deviceBean.getFoodFont()) * 2;
this.modifierFontSize = Integer.parseInt(deviceBean.getModifierFont()) * 2;
} catch (NumberFormatException e) {
e.printStackTrace();
}
this.foodIsBold = deviceBean.getFoodIsBold();
this.modifierIsBold = deviceBean.getModifierIsBold();
this.foodIsItalic = deviceBean.getFoodIsItalic();
this.modifierIsItalic = deviceBean.getModifierIsItalic();
this.numberIsFlip = deviceBean.getNumberIsFlip();
this.showPrice = showPrice;
}
/**
*
* @param data
* @param deviceBean 打印機信息
*/
public FoodAdapter(@Nullable List<OrderDetail> data, PrinterDeviceBean deviceBean) { public FoodAdapter(@Nullable List<OrderDetail> data, PrinterDeviceBean deviceBean) {
super(R.layout.print_item_food, data); super(R.layout.print_item_food, data);
try { try {
...@@ -54,6 +75,11 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { ...@@ -54,6 +75,11 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
TextView tvFoodName = helper.getView(R.id.tv_food_name); TextView tvFoodName = helper.getView(R.id.tv_food_name);
TextView tvNum = helper.getView(R.id.tv_food_quantity); TextView tvNum = helper.getView(R.id.tv_food_quantity);
TextView tvPrice = helper.getView(R.id.tv_food_price); TextView tvPrice = helper.getView(R.id.tv_food_price);
if(showPrice){
tvPrice.setVisibility(View.VISIBLE);
} else {
tvPrice.setVisibility(View.GONE);
}
boolean isBold, isItalic; boolean isBold, isItalic;
if (item.getItemType() == 2) { if (item.getItemType() == 2) {
//細項,縮進 //細項,縮進
...@@ -98,7 +124,6 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> { ...@@ -98,7 +124,6 @@ public class FoodAdapter extends BaseQuickAdapter<OrderDetail, BaseViewHolder> {
tvNum.setTypeface(null, Typeface.NORMAL); tvNum.setTypeface(null, Typeface.NORMAL);
tvPrice.setTypeface(null, Typeface.NORMAL); tvPrice.setTypeface(null, Typeface.NORMAL);
} }
// tvFoodName.setTypeface(null, Typeface.BOLD_ITALIC); // tvFoodName.setTypeface(null, Typeface.BOLD_ITALIC);
// tvFoodName.setTypeface(null, Typeface.BOLD); // tvFoodName.setTypeface(null, Typeface.BOLD);
// tvFoodName.setTypeface(null, Typeface.ITALIC); // tvFoodName.setTypeface(null, Typeface.ITALIC);
......
...@@ -717,10 +717,10 @@ public class OrderDetail implements Serializable { ...@@ -717,10 +717,10 @@ public class OrderDetail implements Serializable {
* 是否打印 * 是否打印
* *
* @param printTo * @param printTo
* @param type * @param type 食品清單還是賬單 0 食品清單,1 賬單
* @return * @return
*/ */
private static boolean isPrint(int printTo, int type) { public static boolean isPrint(int printTo, int type) {
if (printTo == 0) { if (printTo == 0) {
//清單和賬單都打印 //清單和賬單都打印
return true; return true;
......
...@@ -3,8 +3,9 @@ package com.gingersoft.gsa.cloud.base.utils.okhttpUtils; ...@@ -3,8 +3,9 @@ package com.gingersoft.gsa.cloud.base.utils.okhttpUtils;
import android.util.Log; import android.util.Log;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.constans.AppConstans;
import com.gingersoft.gsa.cloud.base.utils.encryption.Aes; import com.gingersoft.gsa.cloud.base.utils.encryption.Aes;
import com.gingersoft.gsa.cloud.constans.AppConstans;
import com.gingersoft.gsa.cloud.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.globalconfig.applyOptions.intercept.LoggingInterceptor; import com.gingersoft.gsa.cloud.globalconfig.applyOptions.intercept.LoggingInterceptor;
import com.jess.arms.utils.DeviceUtils; import com.jess.arms.utils.DeviceUtils;
...@@ -15,10 +16,10 @@ import java.util.List; ...@@ -15,10 +16,10 @@ import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.ObservableEmitter; import io.reactivex.schedulers.Schedulers;
import io.reactivex.ObservableOnSubscribe;
import okhttp3.Call; import okhttp3.Call;
import okhttp3.Callback; import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Headers; import okhttp3.Headers;
import okhttp3.Interceptor; import okhttp3.Interceptor;
import okhttp3.MediaType; import okhttp3.MediaType;
...@@ -251,4 +252,19 @@ public class OkHttp3Utils { ...@@ -251,4 +252,19 @@ public class OkHttp3Utils {
} }
/**
* 心跳接口報錯,推送給相關人員
*/
public static void noticePersonnel(String errCode, String pushContent) {
RequestBody requestBody = new FormBody.Builder()
.add("code", errCode)//錯誤碼
.add("shopId", GsaCloudApplication.getGsPosShopId(GsaCloudApplication.getAppContext()))
.add("source", GsaCloudApplication.getAppName() + "")//錯誤來源
.add("pushContent", pushContent + "")//推送內容
.add("version", DeviceUtils.getVersionName(GsaCloudApplication.getAppContext()))//系統版本
.build();
OkHttp3Utils.post(HttpsConstans.ROOT_URL + "/member-web/api/monitor/pushAlarm", requestBody)
.subscribeOn(Schedulers.io()).subscribe();
}
} }
...@@ -5,8 +5,11 @@ package com.gingersoft.gsa.cloud.constans; ...@@ -5,8 +5,11 @@ package com.gingersoft.gsa.cloud.constans;
*/ */
public class AppConstans { public class AppConstans {
public static final String RP_HEART_ERROR = "RP_HD";//心跳斷開錯誤碼 public static final String RP_HEART_ERROR = "RP_HD001";//心跳斷開錯誤碼
public static final String RP_ORDER_LIST_ERROR = "RP_OL";//訂單列表錯誤碼 public static final String RP_ORDER_LIST_ERROR = "RP_OL002";//訂單列表錯誤碼
public static final String RP_THIRE_LOGISTICS_ERROR = "RP_WL003";//訂單列表錯誤碼
public static final String RP_UPDATE_ORDER_STATE_ERROR = "RP_UO_";//修改訂單狀態失敗錯誤碼
public static final String RP_LOGIN_ERROR = "RP_LOGIN";//修改訂單狀態失敗錯誤碼
public static final String SECRETKEY_VALUES = "2309485937845783"; public static final String SECRETKEY_VALUES = "2309485937845783";
......
...@@ -36,7 +36,7 @@ public class HttpsConstans { ...@@ -36,7 +36,7 @@ public class HttpsConstans {
//--------------------------------------------其他全局---------------------------------------------------------------------------- //--------------------------------------------其他全局----------------------------------------------------------------------------
private static String HTTP_ADDRESS_URL_FORMAL = "https://m.ricepon.com:8444";//正式服務器 private static String HTTP_ADDRESS_URL_FORMAL = "https://m.ricepon.com:8444";//正式服務器
private static String HTTP_ADDRESS_URL_SZ = "http://gingersoft.tpddns.cn:58201";//深圳測試 private static String HTTP_ADDRESS_URL_SZ = "http://gingersoft.tpddns.cn:58201";//深圳測試
private static String HTTP_ADDRESS_URL_HK = "https://a.ricepon.com:58201";//香港測試 private static String HTTP_ADDRESS_URL_HK = "http://a.ricepon.com:58201";//香港測試
private static String PATH = "/ricepon-cloud-gsa/api/";//路徑 private static String PATH = "/ricepon-cloud-gsa/api/";//路徑
......
...@@ -27,7 +27,18 @@ public class PrintConstans { ...@@ -27,7 +27,18 @@ public class PrintConstans {
* 6:開錢箱 * 6:開錢箱
* 7:外賣接單結賬單 * 7:外賣接單結賬單
*/ */
public static final String PRINT_TYPE = "type";//打印類型 public static final String PRINT_TYPE = "print_type";//打印類型
public static final String PRINT_LOADING = "is_show_loading";//是否顯示加載框 public static final String PRINT_LOADING = "is_show_loading";//是否顯示加載框
public final static int PRINT_TEST = -1;//測試頁
public final static int PRINT_SERVE = 0;//上菜紙
public final static int PRINT_SLIP = 1;//印單
public final static int PRINT_BILL = 2;//結賬單
public final static int PRINT_KITCHEN = 3;//送單,廚房單
public final static int PRINT_CLEAN_MACHINE = 4;//清機報表 或者其他View
public final static int PRINT_OTHER_ORDER = 5;//接單內容打印 外送印單
public final static int PRINT_INSTRUCTION = 6;//開錢箱
public final static int PRINT_OTHER_CLOSING = 7;//外賣結賬單
} }

63.6 KB | W: | H:

84.3 KB | W: | H:

base-module/src/main/res/drawable-xhdpi/img_login_top_bg.png
base-module/src/main/res/drawable-xhdpi/img_login_top_bg.png
base-module/src/main/res/drawable-xhdpi/img_login_top_bg.png
base-module/src/main/res/drawable-xhdpi/img_login_top_bg.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -98,7 +98,6 @@ ...@@ -98,7 +98,6 @@
style="@style/Print_text_style" style="@style/Print_text_style"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="單號:" android:text="單號:"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_table_name" /> app:layout_constraintTop_toBottomOf="@id/layout_table_name" />
...@@ -254,7 +253,6 @@ ...@@ -254,7 +253,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:text="2020-01-09 上午 11:16:15" android:text="2020-01-09 上午 11:16:15"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
......
...@@ -7,8 +7,8 @@ ext { ...@@ -7,8 +7,8 @@ ext {
targetSdkVersion : 28, targetSdkVersion : 28,
//正式版: 1.0.3 3 //正式版: 1.0.3 3
//內部測試版:1.1.7 17 //內部測試版:1.1.7 17
versionCode : 18, versionCode : 19,
versionName : "1.1.8" versionName : "1.1.9"
] ]
version = [ version = [
......
...@@ -4,8 +4,9 @@ import android.app.Activity; ...@@ -4,8 +4,9 @@ import android.app.Activity;
import android.app.Application; import android.app.Application;
import android.content.Intent; import android.content.Intent;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.constans.AppConstans;
import com.gingersoft.gsa.cloud.login.mvp.contract.BaseLoginContract; import com.gingersoft.gsa.cloud.login.mvp.contract.BaseLoginContract;
import com.gingersoft.gsa.cloud.login.mvp.ui.activity.mvp.ui.activity.LoginActivity; import com.gingersoft.gsa.cloud.login.mvp.ui.activity.mvp.ui.activity.LoginActivity;
import com.gingersoft.gsa.cloud.ui.bean.mode.BrandsBean; import com.gingersoft.gsa.cloud.ui.bean.mode.BrandsBean;
...@@ -84,6 +85,8 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas ...@@ -84,6 +85,8 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
} else { } else {
GsaCloudApplication.isLogin = false; GsaCloudApplication.isLogin = false;
mRootView.showMessage(info.getErrMsg()); mRootView.showMessage(info.getErrMsg());
OkHttp3Utils.noticePersonnel(AppConstans.RP_LOGIN_ERROR, info.getErrMsg());
if (IAcitivity instanceof LoginActivity) { if (IAcitivity instanceof LoginActivity) {
} else { } else {
...@@ -95,6 +98,7 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas ...@@ -95,6 +98,7 @@ public class BaseLoginPresenter<M extends BaseLoginContract.Model, V extends Bas
@Override @Override
public void onError(Throwable t) { public void onError(Throwable t) {
super.onError(t); super.onError(t);
OkHttp3Utils.noticePersonnel(AppConstans.RP_LOGIN_ERROR, t.getMessage());
if (IAcitivity instanceof LoginActivity) { if (IAcitivity instanceof LoginActivity) {
} else { } else {
mRootView.launchActivity(new Intent(IAcitivity, LoginActivity.class)); mRootView.launchActivity(new Intent(IAcitivity, LoginActivity.class));
......
...@@ -245,9 +245,11 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem ...@@ -245,9 +245,11 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem
} }
@Override @Override
public void showMessage(@NonNull String message) { public void showMessage(String message) {
checkNotNull(message); if (message != null) {
ArmsUtils.makeText(this, message); checkNotNull(message);
ArmsUtils.makeText(this, message);
}
} }
@Override @Override
......
...@@ -583,7 +583,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese ...@@ -583,7 +583,7 @@ public class SettlementReportActivity extends BaseActivity<SettlementReportPrese
//清機成功,打印 //清機成功,打印
PrintTransitUtils.getInstance().setPrintView(view); PrintTransitUtils.getInstance().setPrintView(view);
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.addParam(PrintConstans.PRINT_TYPE, 4)//清機打印 .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_CLEAN_MACHINE)//清機打印
.setActionName("printActivity") .setActionName("printActivity")
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
......
...@@ -348,7 +348,7 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter ...@@ -348,7 +348,7 @@ public class BusinessReportFragment extends BaseFragment<BusinessReportPresenter
//清機成功,打印 //清機成功,打印
PrintTransitUtils.getInstance().setPrintView(view); PrintTransitUtils.getInstance().setPrintView(view);
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.addParam(PrintConstans.PRINT_TYPE, 4)//清機打印 .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_CLEAN_MACHINE)//清機打印
.setActionName("printActivity") .setActionName("printActivity")
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
......
...@@ -91,7 +91,7 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo ...@@ -91,7 +91,7 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
orderDetails.data!![0].orderPayType = data.orderPayType orderDetails.data!![0].orderPayType = data.orderPayType
MyOrderManage.setDataBean(orderDetails.data!![0]) MyOrderManage.setDataBean(orderDetails.data!![0])
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.addParam(PrintConstans.PRINT_TYPE, 5) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_OTHER_ORDER)
.setActionName("printActivity") .setActionName("printActivity")
.build() .build()
.callAsyncCallbackOnMainThread { _, result -> .callAsyncCallbackOnMainThread { _, result ->
......
...@@ -267,7 +267,7 @@ class GetInfoUpdateService : Service() { ...@@ -267,7 +267,7 @@ class GetInfoUpdateService : Service() {
initSoundPool(R.raw.raw_disconnect) initSoundPool(R.raw.raw_disconnect)
myBind?.block?.invoke(true) myBind?.block?.invoke(true)
//推送給相關人員 //推送給相關人員
noticePersonnel(t.message) OkHttp3Utils.noticePersonnel(AppConstans.RP_HEART_ERROR, t.message)
}, 10) }, 10)
putTimeLog("onFailure連接失敗,等待一分鐘後重新連接") putTimeLog("onFailure連接失敗,等待一分鐘後重新連接")
} }
...@@ -344,21 +344,6 @@ class GetInfoUpdateService : Service() { ...@@ -344,21 +344,6 @@ class GetInfoUpdateService : Service() {
.subscribeOn(Schedulers.io()).subscribe() .subscribeOn(Schedulers.io()).subscribe()
} }
/**
* 心跳接口報錯,推送給相關人員
*/
private fun noticePersonnel(pushContent:String?){
val requestBody = FormBody.Builder()
.add("code", AppConstans.RP_HEART_ERROR)//錯誤碼
.add("shopId", GsaCloudApplication.getGsPosShopId(this))
.add("source", getString(R.string.app_name))//錯誤來源
.add("pushContent", pushContent +"")//推送內容
.add("version", DeviceUtils.getVersionName(this))//系統版本
.build()
OkHttp3Utils.post(HttpsConstans.ROOT_URL + "/member-web/api/monitor/pushAlarm", requestBody)
.subscribeOn(Schedulers.io()).subscribe()
}
inner class ClearHeartBroadcastReceiver : BroadcastReceiver() { inner class ClearHeartBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) { override fun onReceive(context: Context?, intent: Intent?) {
//關閉service,會調用service的onDestroy //關閉service,會調用service的onDestroy
......
...@@ -166,26 +166,4 @@ public class PrintPresenter extends BasePresenter<PrintContract.Model, PrintCont ...@@ -166,26 +166,4 @@ public class PrintPresenter extends BasePresenter<PrintContract.Model, PrintCont
return printerDeviceBean; return printerDeviceBean;
} }
public PrinterRoot getPrinterByType(int type) {
if (type == PrinterRoot.PRINT_TEST) {
return new PrintTest();
} else if (type == PrinterRoot.PRINT_SERVE) {
return new PrintServe();
} else if (type == PrinterRoot.PRINT_SLIP) {
return new PrintSlip();
} else if (type == PrinterRoot.PRINT_BILL) {
return new PrintBill();
} else if (type == PrinterRoot.PRINT_KITCHEN) {
return new PrintPrjKitchen();
} else if (type == PrinterRoot.PRINT_CLEAN_MACHINE) {
return new PrintCleanMachine();
} else if (type == PrinterRoot.PRINT_OTHER_ORDER) {
return new PrintOtherOrder();
} else if (type == PrinterRoot.PRINT_INSTRUCTION) {
return new PrintInstruction();
} else if (type == PrinterRoot.PRINT_OTHER_CLOSING) {
return new PrintOtherOrderClosing();
}
return null;
}
} }
...@@ -8,6 +8,7 @@ import com.epson.epos2.Epos2Exception; ...@@ -8,6 +8,7 @@ import com.epson.epos2.Epos2Exception;
import com.epson.epos2.printer.Printer; import com.epson.epos2.printer.Printer;
import com.epson.epos2.printer.PrinterStatusInfo; import com.epson.epos2.printer.PrinterStatusInfo;
import com.epson.epos2.printer.ReceiveListener; import com.epson.epos2.printer.ReceiveListener;
import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.joe.print.mvp.model.bean.PrintInfoBean; import com.joe.print.mvp.model.bean.PrintInfoBean;
import com.joe.print.mvp.print.utils.MyPrintUtils; import com.joe.print.mvp.print.utils.MyPrintUtils;
...@@ -266,6 +267,43 @@ public class EpsonPrint implements ReceiveListener { ...@@ -266,6 +267,43 @@ 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);
return;
}
connectByIp(ip, mPrinter.getStatus());
if (mPrinter == null) {
printResultListener.onResult(0, null);
return;
}
mPrinter.clearCommandBuffer();
try {
for (PrintInfoBean printInfoBean : printInfoBeans) {
if (printInfoBean.getGravity() == 0) {
mPrinter.addTextAlign(Printer.ALIGN_LEFT);
}
if (printInfoBean.getGravity() == 1) {
mPrinter.addTextAlign(Printer.ALIGN_CENTER);
}
if (printInfoBean.getGravity() == 2) {
mPrinter.addTextAlign(Printer.ALIGN_RIGHT);
}
//如果打印多列內容,並且字體大小配置多個,則每一列取自己對應的字體大小
for (int i = 0; i < printInfoBean.getContent().length; i++) {
print(printInfoBean, i, paperWidth);
}
mPrinter.addFeedLine(1);
}
mPrinter.addPulse(Printer.DRAWER_LOW, Printer.PULSE_100);
mPrinter.addCut(Printer.CUT_FEED);
mPrinter.sendData(Printer.PARAM_DEFAULT);
} catch (Exception e) {
e.printStackTrace();
printResultListener.onResult(0, null);
mPrinter.clearCommandBuffer();
}
}
private int location = 0; private int location = 0;
private void print(PrintInfoBean printInfoBean, int i, int paperWidth) throws Epos2Exception { private void print(PrintInfoBean printInfoBean, int i, int paperWidth) throws Epos2Exception {
...@@ -301,21 +339,21 @@ public class EpsonPrint implements ReceiveListener { ...@@ -301,21 +339,21 @@ public class EpsonPrint implements ReceiveListener {
private void setLanguage(String language) throws Epos2Exception { private void setLanguage(String language) throws Epos2Exception {
if ("en".equals(language)) { if ("en".equals(language)) {
//切換對應語言 //切換對應語言
mPrinter.addTextLang(Printer.LANG_EN); mPrinter.addTextLang(Printer.LANG_EN);//英语
} else if ("ja".equals(language)) { } else if ("ja".equals(language)) {
mPrinter.addTextLang(Printer.LANG_JA); mPrinter.addTextLang(Printer.LANG_JA);//日本
} else if ("cn".equals(language)) { } else if ("cn".equals(language)) {
mPrinter.addTextLang(Printer.LANG_ZH_CN); mPrinter.addTextLang(Printer.LANG_ZH_CN);//简体
} else if ("tw".equals(language)) { } else if ("tw".equals(language)) {
mPrinter.addTextLang(Printer.LANG_ZH_TW); mPrinter.addTextLang(Printer.LANG_ZH_TW);//台湾
} else if ("ko".equals(language)) { } else if ("ko".equals(language)) {
mPrinter.addTextLang(Printer.LANG_KO); mPrinter.addTextLang(Printer.LANG_KO);//韩语
} else if ("th".equals(language)) { } else if ("th".equals(language)) {
mPrinter.addTextLang(Printer.LANG_TH); mPrinter.addTextLang(Printer.LANG_TH);//泰国
} else if ("vi".equals(language)) { } else if ("vi".equals(language)) {
mPrinter.addTextLang(Printer.LANG_VI); mPrinter.addTextLang(Printer.LANG_VI);//越南
} else if ("multi".equals(language)) { } else if ("multi".equals(language)) {
mPrinter.addTextLang(Printer.LANG_MULTI); mPrinter.addTextLang(Printer.LANG_MULTI);//其他
} }
} }
...@@ -436,7 +474,6 @@ public class EpsonPrint implements ReceiveListener { ...@@ -436,7 +474,6 @@ public class EpsonPrint implements ReceiveListener {
Log.e(TAG, "connection->" + connection + "|online->" + online + "|coverOpen->" + coverOpen + "|paper->" + paper + "|paperFeed->" + paperFeed + "|panelSwitch->" + panelSwitch + "|waitOnline->" + waitOnline + "|drawer->" + drawer + "|errorStatus->" + errorStatus + "|autoRecoverError->" + autoRecoverError + "|buzzer->" + buzzer + "|adapter->" + adapter + "|batteryLevel->" + batteryLevel); Log.e(TAG, "connection->" + connection + "|online->" + online + "|coverOpen->" + coverOpen + "|paper->" + paper + "|paperFeed->" + paperFeed + "|panelSwitch->" + panelSwitch + "|waitOnline->" + waitOnline + "|drawer->" + drawer + "|errorStatus->" + errorStatus + "|autoRecoverError->" + autoRecoverError + "|buzzer->" + buzzer + "|adapter->" + adapter + "|batteryLevel->" + batteryLevel);
} }
private boolean connectPrinter(String ip) { private boolean connectPrinter(String ip) {
if (mPrinter == null) { if (mPrinter == null) {
return false; return false;
......
...@@ -2,29 +2,17 @@ package com.joe.print.mvp.print; ...@@ -2,29 +2,17 @@ package com.joe.print.mvp.print;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.view.View;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.adapter.print.BillAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.BillTypeAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.FoodAdapter;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BillOrderMoney; import com.gingersoft.gsa.cloud.base.common.bean.BillOrderMoney;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean; import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail; import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean; import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil; import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.base.utils.view.ImageUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.joe.print.R;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -33,7 +21,7 @@ import java.util.List; ...@@ -33,7 +21,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* 結賬單 * 結賬單 已改新版
*/ */
public class PrintBill extends PrinterRoot { public class PrintBill extends PrinterRoot {
...@@ -51,90 +39,6 @@ public class PrintBill extends PrinterRoot { ...@@ -51,90 +39,6 @@ public class PrintBill extends PrinterRoot {
return 1; return 1;
} }
/**
* 獲取"結賬單"圖片
*
* @param context
* @return
*/
private Bitmap getServeBitmap(Context context) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
if (foodList == null || foodList.size() <= 0 || tableBean == null) {
return null;
}
View view = LinearLayout.inflate(context, R.layout.print_layout_print_bill, null);
TextView brandName = view.findViewById(R.id.tv_brand_name);
TextView restaurantName = view.findViewById(R.id.tv_restaurant_name);
TextView topOrderNum = view.findViewById(R.id.tv_print_bill_order_num);//頂部的訂單號
TextView tableNum = view.findViewById(R.id.tv_dining_table_number);
TextView people = view.findViewById(R.id.tv_people);
TextView orderNum = view.findViewById(R.id.tv_order_num);
TextView orderData = view.findViewById(R.id.tv_date);
RecyclerView rvFood = view.findViewById(R.id.rv_food);
RecyclerView rvBillAmount = view.findViewById(R.id.rv_bill_amount);
TextView mTvTotalAmount = view.findViewById(R.id.tv_total_amount);
TextView checkOutTime = view.findViewById(R.id.tv_checkout_time);
TextView line_food_info = view.findViewById(R.id.line_food_info);
RecyclerView rvPayType = view.findViewById(R.id.rv_print_pay_type);//顯示支付方式
brandName.setText(GsaCloudApplication.getBrandName(context));
restaurantName.setText(GsaCloudApplication.getRestaurantName(context));
tableNum.setText(tableBean.getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
orderData.setText(TimeUtils.parseTimeRepeat(tableBean.getCreateTime(), TimeUtils.DEFAULT_DATE_FORMAT));
checkOutTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
FoodAdapter foodAdapter = new FoodAdapter(foodList);
rvFood.setLayoutManager(new LinearLayoutManager(context));
rvFood.setAdapter(foodAdapter);
List<BillingBean> billingBeans = new ArrayList<>();
//添加合計項
billingBeans.add(new BillingBean("合計", MyOrderManage.getInstance().getWholeAmount()));
//添加其他金額項
if (MyOrderManage.getInstance().getOrderMoneyList().size() > 0) {
for (BillOrderMoney item : MyOrderManage.getInstance().getOrderMoneyList()) {
billingBeans.add(new BillingBean(item.getTitle(), item.getMoney()));
}
}
if (billingBeans.size() <= 0) {
line_food_info.setVisibility(View.GONE);
} else {
BillAdapter billAdapter = new BillAdapter(billingBeans);
rvBillAmount.setLayoutManager(new LinearLayoutManager(context));
rvBillAmount.setAdapter(billAdapter);
}
if (OpenTableManage.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableManage.getDefault().getTableBean().getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().getOrderId() != -1) {
orderNum.setText(MyOrderManage.getInstance().getOrderId() + "");
}
// BigDecimal totalAmount = new BigDecimal(0);
// for (OrderDetail OrderDetail : MyOrderManage.getInstance().getOrderFoodList()) {
// totalAmount = MoneyUtil.sum(totalAmount, OrderDetail.getPrice());
// }
//總金額
mTvTotalAmount.setText(MyOrderManage.getInstance().getTotalAmount() + "");
List<PayMethod> payBillMoneys = MyOrderManage.getInstance().getBillMoney();
rvPayType.setLayoutManager(new LinearLayoutManager(context));
rvPayType.setAdapter(new BillTypeAdapter(payBillMoneys));
//加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
return viewToBitmap(context, view);
}
private Bitmap getBitmap(Context mContext, PrinterDeviceBean deviceBean) { private Bitmap getBitmap(Context mContext, PrinterDeviceBean deviceBean) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList(); List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean(); TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
...@@ -158,7 +62,7 @@ public class PrintBill extends PrinterRoot { ...@@ -158,7 +62,7 @@ public class PrintBill extends PrinterRoot {
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
//食品信息 //食品信息
layout.addView(getDiningFoodList(mContext, foodList, deviceBean)); layout.addView(getDiningFoodList(mContext, foodList, deviceBean, 1, true));
layout.addView(getHalfLine(mContext)); layout.addView(getHalfLine(mContext));
//訂單金額信息 //訂單金額信息
...@@ -181,7 +85,6 @@ public class PrintBill extends PrinterRoot { ...@@ -181,7 +85,6 @@ public class PrintBill extends PrinterRoot {
totalAmount = MoneyUtil.sum(totalAmount, OrderDetail.getPrice()); totalAmount = MoneyUtil.sum(totalAmount, OrderDetail.getPrice());
} }
layout.addView(getAmountText(mContext, "總金額:" + totalAmount)); layout.addView(getAmountText(mContext, "總金額:" + totalAmount));
// layout.addView();
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
layout.addView(getDiningBillPayMethod(mContext, MyOrderManage.getInstance().getBillMoney())); layout.addView(getDiningBillPayMethod(mContext, MyOrderManage.getInstance().getBillMoney()));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
......
...@@ -112,11 +112,11 @@ public class PrintKitchen extends PrinterRoot { ...@@ -112,11 +112,11 @@ public class PrintKitchen extends PrinterRoot {
for (OrderDetail orderDetail : entry.getValue()) { for (OrderDetail orderDetail : entry.getValue()) {
List<OrderDetail> orders = new ArrayList<>();//這裡new集合是因為下面的方法需要的參數是list集合 List<OrderDetail> orders = new ArrayList<>();//這裡new集合是因為下面的方法需要的參數是list集合
orders.add(orderDetail); orders.add(orderDetail);
Bitmap bitmap = getKitChenPrintBitmap(mContext, orders); Bitmap bitmap = getKitChenPrintBitmap(mContext, orders, deviceBean);
bitmaps.add(bitmap); bitmaps.add(bitmap);
} }
} else { } else {
Bitmap bitmap = getKitChenPrintBitmap(mContext, entry.getValue()); Bitmap bitmap = getKitChenPrintBitmap(mContext, entry.getValue(), deviceBean);
//不帶*號,所有同樣廚房位置的食品都在一張紙上 //不帶*號,所有同樣廚房位置的食品都在一張紙上
bitmaps.add(bitmap); bitmaps.add(bitmap);
} }
...@@ -147,7 +147,7 @@ public class PrintKitchen extends PrinterRoot { ...@@ -147,7 +147,7 @@ public class PrintKitchen extends PrinterRoot {
* @param context * @param context
* @return * @return
*/ */
private Bitmap getKitChenPrintBitmap(Context context, List<OrderDetail> foodList) { private Bitmap getKitChenPrintBitmap(Context context, List<OrderDetail> foodList, PrinterDeviceBean printerDeviceBean) {
if (foodList == null || foodList.size() <= 0) { if (foodList == null || foodList.size() <= 0) {
return null; return null;
} }
...@@ -188,7 +188,7 @@ public class PrintKitchen extends PrinterRoot { ...@@ -188,7 +188,7 @@ public class PrintKitchen extends PrinterRoot {
tvOrderTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)); tvOrderTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
//操作人員 //操作人員
tvOperator.setText(GsaCloudApplication.userName); tvOperator.setText(GsaCloudApplication.userName);
return viewToBitmap(context, view); return viewToZoomBitmap(context, view, printerDeviceBean);
} }
......
...@@ -33,7 +33,7 @@ import java.util.Map; ...@@ -33,7 +33,7 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
/** /**
* 外送接單,印單 * 外送接單,印單 已改新版
*/ */
public class PrintOtherOrder extends PrinterRoot { public class PrintOtherOrder extends PrinterRoot {
...@@ -48,89 +48,6 @@ public class PrintOtherOrder extends PrinterRoot { ...@@ -48,89 +48,6 @@ public class PrintOtherOrder extends PrinterRoot {
//再將食品數據根據打印位置分組。 //再將食品數據根據打印位置分組。
//打印一組之後,關閉連接,切換第二台打印機ip,如此循環 //打印一組之後,關閉連接,切換第二台打印機ip,如此循環
//打印完成之後,返回所有打印結果。 //打印完成之後,返回所有打印結果。
// Map<String, List<OrderDetails.DataBean.PRODUCTNAMEBean>> foodMaps = new HashMap<>();
// String emptyPrintLocation = "";//部分食品沒有打印位置時設置為此key,比如這是第一個食品,沒有打印位置時
// int lastEmptyPrintLocationIndex = 0;//上一次遍歷到第一個食品時都沒有打印位置時,開始的食品位置
// //獲取這個訂單的一級食品
// if (dataBean.getPRODUCT_NAME() != null) {
// for (int i = 0; i < dataBean.getPRODUCT_NAME().size(); i++) {
// OrderDetails.DataBean.PRODUCTNAMEBean food = dataBean.getPRODUCT_NAME().get(i);
// if (TextUtil.isEmptyOrNullOrUndefined(food.getPrintseting())) {
// //如果沒有打印位置,向上尋找
// if (i == 0) {
// food.setPrintseting(emptyPrintLocation);
// addToMap(foodMaps, food);
// } else {
// for (int j = i - 1; j >= lastEmptyPrintLocationIndex; j--) {
// //一直遍歷,直到找到有打印位置的食品
// // 如果所有食品都沒有打印位置的情況,為了避免多次遍歷
// // 如果本次遍歷到第一個食品,都沒有打印位置,記錄下這一次開始遍歷的下標,下一次遍歷到這個位置就停止
// if (!TextUtil.isEmptyOrNullOrUndefined(dataBean.getPRODUCT_NAME().get(j).getPrintseting())) {
// //一直遍歷,直到找到有打印位置的食品
// //判斷是否帶*號
// if (Objects.requireNonNull(dataBean.getPRODUCT_NAME().get(j).getPrintseting()).contains("*")) {
// //帶*號,則需要取得通過下標加去掉*號的標識來取得map中的集合,將i食品裝進去,這樣就能打印在一張紙上
// //如果沒取得集合,則通過打印位置去map取得集合,將j食品從map中移除,將這個j食品的和i食品裝一起
// // 生成新的key。為當前下標+"標識符"+去掉*的打印位置,不帶*的key取得的食品集合才能打印在一張紙上。
// String newKey = j + DELIMITER + dataBean.getPRODUCT_NAME().get(j).getPrintseting().replaceAll("\\*", "");
// //通過newKey取得map中的集合
// List<OrderDetails.DataBean.PRODUCTNAMEBean> newKeyfoods = foodMaps.get(newKey);
// if (newKeyfoods != null) {
// newKeyfoods.add(food);
// } else {
// List<OrderDetails.DataBean.PRODUCTNAMEBean> printsetingFoods = foodMaps.get(dataBean.getPRODUCT_NAME().get(j).getPrintseting());
// if (printsetingFoods != null) {//理論上不會為空
// printsetingFoods.remove(printsetingFoods.lastIndexOf(dataBean.getPRODUCT_NAME().get(j)));
// //移除掉之後,put到newkey中
// List<OrderDetails.DataBean.PRODUCTNAMEBean> newFoods = new ArrayList<>();
// newFoods.add(dataBean.getPRODUCT_NAME().get(j));
// newFoods.add(food);
// foodMaps.put(newKey, newFoods);
// }
// }
// break;
// } else {
// //沒有*號,不需要做多餘的操作
// food.setPrintseting(dataBean.getPRODUCT_NAME().get(j).getPrintseting());
// addToMap(foodMaps, food);
// }
// } else if (j == lastEmptyPrintLocationIndex) {
// //從i到0的打印位置都沒有,記錄下i,下次只遍歷到i就停下來
// lastEmptyPrintLocationIndex = i;
// //如果找到最初的那個食品,也沒有打印位置,設置打印位置為"null"
// food.setPrintseting(emptyPrintLocation);
// addToMap(foodMaps, food);
// }
// }
// }
// } else {
// //有打印位置,
// //已經保存過這個位置的,
// addToMap(foodMaps, food);
// }
// }
// }
// //通過打印位置生成多張用於打印的bitmap
// for (Map.Entry<String, List<OrderDetails.DataBean.PRODUCTNAMEBean>> entry : foodMaps.entrySet()) {
// String key = entry.getKey();
// List<Bitmap> bitmaps = new ArrayList<>();
// if (key.contains("*")) {
// //如果帶*號,這個集合就需要切紙,每個食品都需要單獨在一張廚房單上
// for (OrderDetails.DataBean.PRODUCTNAMEBean orderDetail : entry.getValue()) {
// List<OrderDetails.DataBean.PRODUCTNAMEBean> orders = new ArrayList<>();//這裡new集合是因為下面的方法需要的參數是list集合
// orders.add(orderDetail);
// //獲取廚房單圖片
// Bitmap bitmap = getOrderKitchenBitmap(mContext, orders, dataBean);
// bitmaps.add(bitmap);
// }
// } else {
// //獲取廚房單圖片
// Bitmap bitmap = getOrderKitchenBitmap(mContext, entry.getValue(), dataBean);
// //不帶*號,所有同樣廚房位置的食品都在一張紙上
// bitmaps.add(bitmap);
// }
// bitmapMaps.put(key, bitmaps);
// }
//如果需要打印印單,加上 //如果需要打印印單,加上
List<Bitmap> bitmaps = new ArrayList<>(); List<Bitmap> bitmaps = new ArrayList<>();
// Bitmap bitmap = initPrintView(mContext, dataBean); // Bitmap bitmap = initPrintView(mContext, dataBean);
...@@ -221,7 +138,7 @@ public class PrintOtherOrder extends PrinterRoot { ...@@ -221,7 +138,7 @@ public class PrintOtherOrder extends PrinterRoot {
layout.addView(getTakeawayOrderInfo(mContext, data)); layout.addView(getTakeawayOrderInfo(mContext, data));
//食品 //食品
layout.addView(getTextLine(mContext, "項目")); layout.addView(getTextLine(mContext, "項目"));
layout.addView(getDiningFoodList(mContext, OrderDetail.productMameBeanToOrderDetail(0, data.getPRODUCT_NAME()), deviceBean)); layout.addView(getDiningFoodList(mContext, OrderDetail.productMameBeanToOrderDetail(0, data.getPRODUCT_NAME()), deviceBean,1, true));
layout.addView(getLine(mContext)); layout.addView(getLine(mContext));
//訂單金額信息 //訂單金額信息
List<PrintBillBean> billData = new ArrayList<>(); List<PrintBillBean> billData = new ArrayList<>();
......
...@@ -29,7 +29,7 @@ import java.util.List; ...@@ -29,7 +29,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* 打印外賣接單結賬單 * 打印外賣接單 結賬單
*/ */
public class PrintOtherOrderClosing extends PrinterRoot { public class PrintOtherOrderClosing extends PrinterRoot {
......
...@@ -43,14 +43,14 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -43,14 +43,14 @@ public class PrintPrjKitchen extends PrinterRoot {
if (bean.getStatus() == 2) { if (bean.getStatus() == 2) {
List<PrjBean.DataBean.Bean> beans = new ArrayList<>(); List<PrjBean.DataBean.Bean> beans = new ArrayList<>();
beans.add(bean); beans.add(bean);
Bitmap bitmap = getKitChenPrintBitmap(mContext, key, beans); Bitmap bitmap = getKitChenPrintBitmap(mContext, key, beans, deviceBean);
bitmaps.add(bitmap); bitmaps.add(bitmap);
} else { } else {
noCut.add(bean); noCut.add(bean);
} }
} }
if (noCut.size() > 0) { if (noCut.size() > 0) {
Bitmap bitmap = getKitChenPrintBitmap(mContext, key, noCut); Bitmap bitmap = getKitChenPrintBitmap(mContext, key, noCut, deviceBean);
bitmaps.add(bitmap); bitmaps.add(bitmap);
} }
bitmapMaps.put(key, bitmaps); bitmapMaps.put(key, bitmaps);
...@@ -64,10 +64,10 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -64,10 +64,10 @@ public class PrintPrjKitchen extends PrinterRoot {
return 1; return 1;
} }
public Bitmap getKitChenPrintBitmap(Context context, String key, PrjBean.DataBean.Bean data) { public Bitmap getKitChenPrintBitmap(Context context, String key, PrjBean.DataBean.Bean data, PrinterDeviceBean printerDeviceBean) {
List<PrjBean.DataBean.Bean> beans = new ArrayList<>(); List<PrjBean.DataBean.Bean> beans = new ArrayList<>();
beans.add(data); beans.add(data);
return getKitChenPrintBitmap(context, key, beans); return getKitChenPrintBitmap(context, key, beans, printerDeviceBean);
} }
/** /**
...@@ -76,7 +76,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -76,7 +76,7 @@ public class PrintPrjKitchen extends PrinterRoot {
* @param context * @param context
* @return * @return
*/ */
public Bitmap getKitChenPrintBitmap(Context context, String key, List<PrjBean.DataBean.Bean> data) { public Bitmap getKitChenPrintBitmap(Context context, String key, List<PrjBean.DataBean.Bean> data, PrinterDeviceBean printerDeviceBean) {
if (data == null || data.size() <= 0) { if (data == null || data.size() <= 0) {
return null; return null;
} }
...@@ -180,7 +180,7 @@ public class PrintPrjKitchen extends PrinterRoot { ...@@ -180,7 +180,7 @@ public class PrintPrjKitchen extends PrinterRoot {
tvOrderTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_MDHM)); tvOrderTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_MDHM));
//操作人員 //操作人員
tvOperator.setText(prjBean.getUserName()); tvOperator.setText(prjBean.getUserName());
return viewToBitmap(context, view); return viewToZoomBitmap(context, view, printerDeviceBean);
} }
......
...@@ -2,6 +2,7 @@ package com.joe.print.mvp.print; ...@@ -2,6 +2,7 @@ package com.joe.print.mvp.print;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.view.Gravity;
import android.view.View; import android.view.View;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
...@@ -9,7 +10,6 @@ import android.widget.TextView; ...@@ -9,7 +10,6 @@ import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.adapter.print.BillAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.FoodAdapter; import com.gingersoft.gsa.cloud.base.adapter.print.FoodAdapter;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean; import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
...@@ -17,27 +17,25 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail; ...@@ -17,27 +17,25 @@ import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean; import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.joe.print.R; import com.joe.print.R;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* 上菜紙打印 * 上菜紙打印 已改新版
*/ */
public class PrintServe extends PrinterRoot { public class PrintServe extends PrinterRoot {
@Override @Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext, PrinterDeviceBean deviceBean) { 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(getServeBitmap(mContext)); bitmaps.add(getBitmap(mContext, printerDeviceBean));
bitmapMaps.put("", bitmaps); bitmapMaps.put("", bitmaps);
return bitmapMaps; return bitmapMaps;
} }
...@@ -48,13 +46,7 @@ public class PrintServe extends PrinterRoot { ...@@ -48,13 +46,7 @@ public class PrintServe extends PrinterRoot {
} }
/** private Bitmap getServeBitmap(Context context, PrinterDeviceBean printerDeviceBean) {
* 獲取"印單"圖片
*
* @param context
* @return
*/
private Bitmap getServeBitmap(Context context) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getNewFoodList(); List<OrderDetail> foodList = MyOrderManage.getInstance().getNewFoodList();
if (foodList == null || foodList.size() <= 0) { if (foodList == null || foodList.size() <= 0) {
return null; return null;
...@@ -114,6 +106,36 @@ public class PrintServe extends PrinterRoot { ...@@ -114,6 +106,36 @@ public class PrintServe extends PrinterRoot {
//加载条形码 //加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code); // ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150)); // ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
return viewToBitmap(context, view); return viewToZoomBitmap(context, view, printerDeviceBean);
} }
private Bitmap getBitmap(Context mContext, PrinterDeviceBean printerDeviceBean) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
if (foodList == null || foodList.size() <= 0) {
return null;
}
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
LinearLayout layout = new LinearLayout(mContext);
layout.setOrientation(LinearLayout.VERTICAL);
//訂單頭
layout.addView(getHeader(mContext));
layout.addView(getLine(mContext));
//訂單信息
String orderId = "";
if (MyOrderManage.getInstance().getOrderId() != -1) {
orderId = MyOrderManage.getInstance().getOrderId() + "";
}
layout.addView(getDiningTableOrderInfo(mContext, "餐檯:" + tableBean.getTableName(), "人數:" + OpenTableManage.getDefault().getPeopleNumber(), "單號:" + orderId, "日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)));
layout.addView(getLine(mContext));
layout.addView(getDiningFoodList(mContext, foodList, printerDeviceBean, 0, false));
layout.addView(getLine(mContext));
layout.addView(getTextView(mContext, "Thank you!", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
layout.addView(getTextView(mContext, TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
return viewToZoomBitmap(mContext, layout, printerDeviceBean);
}
} }
...@@ -2,16 +2,9 @@ package com.joe.print.mvp.print; ...@@ -2,16 +2,9 @@ package com.joe.print.mvp.print;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.view.View; import android.view.Gravity;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.adapter.print.BillAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.FoodAdapter;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.BillOrderMoney; import com.gingersoft.gsa.cloud.base.common.bean.BillOrderMoney;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean; import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail; import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
...@@ -28,22 +21,24 @@ import java.util.List; ...@@ -28,22 +21,24 @@ import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* 印單打印 * 印單打印 已改新版
*/ */
public class PrintSlip extends PrinterRoot { public class PrintSlip extends PrinterRoot {
@Override @Override
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<>();
List<Bitmap> bitmaps = new ArrayList<>(); List<Bitmap> bitmaps = new ArrayList<>();
bitmaps.add(getServeBitmap(mContext)); bitmaps.add(getBitmap(mContext, deviceBean));
bitmapMaps.put("", bitmaps);
//這裡可能還需要加上廚房單的內容,有未送單的食品時。 //這裡可能還需要加上廚房單的內容,有未送單的食品時。
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));
if (bitmapMaps.size() == 0) { // if (bitmapMaps.size() == 0) {
bitmapMaps.put("", bitmaps); // bitmapMaps.put("", bitmaps);
} else { // } else {
merge2ResultMap(bitmapMaps, "", bitmaps); // merge2ResultMap(bitmapMaps, "", bitmaps);
} // }
return bitmapMaps; return bitmapMaps;
} }
...@@ -52,44 +47,30 @@ public class PrintSlip extends PrinterRoot { ...@@ -52,44 +47,30 @@ public class PrintSlip extends PrinterRoot {
return 1; return 1;
} }
/** private Bitmap getBitmap(Context mContext, PrinterDeviceBean printerDeviceBean) {
* 獲取"印單"圖片
*
* @param context
* @return
*/
private Bitmap getServeBitmap(Context context) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList(); List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
if (foodList == null || foodList.size() <= 0) { if (foodList == null || foodList.size() <= 0) {
return null; return null;
} }
View view = LinearLayout.inflate(context, R.layout.print_layout_print, null);
TextView brandName = view.findViewById(R.id.tv_brand_name);
TextView restaurantName = view.findViewById(R.id.tv_restaurant_name);
TextView tableNum = view.findViewById(R.id.tv_dining_table_number);
TextView people = view.findViewById(R.id.tv_people);
TextView orderNum = view.findViewById(R.id.tv_order_num);
TextView orderData = view.findViewById(R.id.tv_date);
RecyclerView rvFood = view.findViewById(R.id.rv_food);
RecyclerView rvBillAmount = view.findViewById(R.id.rv_bill_amount);
TextView mTvTotalAmount = view.findViewById(R.id.tv_total_amount);
TextView checkOutTime = view.findViewById(R.id.tv_checkout_time);
TextView line_food_info = view.findViewById(R.id.line_food_info);
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean(); TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
brandName.setText(GsaCloudApplication.getBrandName(context)); LinearLayout layout = new LinearLayout(mContext);
restaurantName.setText(GsaCloudApplication.getRestaurantName(context)); layout.setOrientation(LinearLayout.VERTICAL);
tableNum.setText(tableBean.getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
orderData.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)); //訂單頭
layout.addView(getHeader(mContext));
layout.addView(getLine(mContext));
checkOutTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)); //訂單信息
FoodAdapter foodAdapter = new FoodAdapter(foodList); String orderId = "";
rvFood.setLayoutManager(new LinearLayoutManager(context)); if (MyOrderManage.getInstance().getOrderId() != -1) {
rvFood.setAdapter(foodAdapter); orderId = MyOrderManage.getInstance().getOrderId() + "";
}
layout.addView(getDiningTableOrderInfo(mContext, "餐檯:" + tableBean.getTableName(), "人數:" + OpenTableManage.getDefault().getPeopleNumber(), "單號:" + orderId, "日期:" + TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)));
layout.addView(getLine(mContext));
layout.addView(getDiningFoodList(mContext, foodList, printerDeviceBean, 0, true));
layout.addView(getHalfLine(mContext));
List<BillingBean> billingBeans = new ArrayList<>(); List<BillingBean> billingBeans = new ArrayList<>();
//添加合計項 //添加合計項
billingBeans.add(new BillingBean("合計", MyOrderManage.getInstance().getWholeAmount())); billingBeans.add(new BillingBean("合計", MyOrderManage.getInstance().getWholeAmount()));
...@@ -99,32 +80,14 @@ public class PrintSlip extends PrinterRoot { ...@@ -99,32 +80,14 @@ public class PrintSlip extends PrinterRoot {
billingBeans.add(new BillingBean(item.getTitle(), item.getMoney())); billingBeans.add(new BillingBean(item.getTitle(), item.getMoney()));
} }
} }
layout.addView(getDiningBillInfo(mContext, billingBeans));
layout.addView(getHalfLine(mContext));
layout.addView(getAmountText(mContext, "總金額:" + MyOrderManage.getInstance().getTotalAmount()));
layout.addView(getLine(mContext));
layout.addView(getTextView(mContext, "Thank you!", Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
layout.addView(getTextView(mContext, TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT), Gravity.CENTER_HORIZONTAL, getDimensionPixelSize(mContext, R.dimen.dp_8)));
return viewToZoomBitmap(mContext, layout, printerDeviceBean);
}
if (billingBeans.size() <= 0) {
line_food_info.setVisibility(View.GONE);
} else {
BillAdapter billAdapter = new BillAdapter(billingBeans);
rvBillAmount.setLayoutManager(new LinearLayoutManager(context));
rvBillAmount.setAdapter(billAdapter);
}
if (OpenTableManage.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableManage.getDefault().getTableBean().getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().getOrderId() != -1) {
orderNum.setText(MyOrderManage.getInstance().getOrderId() + "");
}
// BigDecimal totalAmount = new BigDecimal(0);
// for (OrderDetail OrderDetail : foodList) {
// totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(OrderDetail.getPrice(), OrderDetail.getNumber()));
// }
//總金額
mTvTotalAmount.setText(MyOrderManage.getInstance().getTotalAmount() + "");
//加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
return viewToBitmap(context, view);
}
} }
...@@ -25,7 +25,7 @@ public class PrintTest extends PrinterRoot { ...@@ -25,7 +25,7 @@ public class PrintTest extends PrinterRoot {
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(getTestPrintBitmap(mContext)); bitmaps.add(getTestPrintBitmap(mContext, deviceBean));
bitmapMaps.put("", bitmaps); bitmapMaps.put("", bitmaps);
return bitmapMaps; return bitmapMaps;
} }
...@@ -42,11 +42,11 @@ public class PrintTest extends PrinterRoot { ...@@ -42,11 +42,11 @@ public class PrintTest extends PrinterRoot {
* @param context * @param context
* @return * @return
*/ */
public Bitmap getTestPrintBitmap(Context context) { public Bitmap getTestPrintBitmap(Context context, PrinterDeviceBean deviceBean) {
View view = LinearLayout.inflate(context, R.layout.print_test, null); View view = LinearLayout.inflate(context, R.layout.print_test, null);
TextView tvTime = view.findViewById(R.id.tv_test_print_now_time); TextView tvTime = view.findViewById(R.id.tv_test_print_now_time);
tvTime.setText("時間:" + TimeUtils.getCurrentDate(TimeUtils.DEFAULT_DATE_FORMAT)); tvTime.setText("時間:" + TimeUtils.getCurrentDate(TimeUtils.DEFAULT_DATE_FORMAT));
return viewToBitmap(context, view); return viewToZoomBitmap(context, view, deviceBean);
} }
} }
...@@ -4,6 +4,7 @@ import android.app.Dialog; ...@@ -4,6 +4,7 @@ import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Color;
import android.hardware.usb.UsbManager; import android.hardware.usb.UsbManager;
import android.os.Build; import android.os.Build;
import android.os.IBinder; import android.os.IBinder;
...@@ -30,7 +31,6 @@ import com.gingersoft.gsa.cloud.base.common.bean.BillingBean; ...@@ -30,7 +31,6 @@ import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail; import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.PayMethod; import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
import com.gingersoft.gsa.cloud.base.utils.AidlUtil; import com.gingersoft.gsa.cloud.base.utils.AidlUtil;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils; import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil; import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
...@@ -62,8 +62,6 @@ import com.joe.print.mvp.ui.adapter.DialogPrinterListAdapter; ...@@ -62,8 +62,6 @@ import com.joe.print.mvp.ui.adapter.DialogPrinterListAdapter;
import com.sunmi.peripheral.printer.InnerResultCallbcak; import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration; import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration;
import org.w3c.dom.Text;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
...@@ -73,15 +71,7 @@ import java.util.Objects; ...@@ -73,15 +71,7 @@ import java.util.Objects;
public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener, ReceiveListener { public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener, ReceiveListener {
public final static int PRINT_TEST = -1;//測試頁
public final static int PRINT_SERVE = 0;//上菜紙
public final static int PRINT_SLIP = 1;//印單
public final static int PRINT_BILL = 2;//結賬單
public final static int PRINT_KITCHEN = 3;//送單,廚房單
public final static int PRINT_CLEAN_MACHINE = 4;//清機報表
public final static int PRINT_OTHER_ORDER = 5;//接單內容打印 外送印單
public final static int PRINT_INSTRUCTION = 6;//開錢箱
public final static int PRINT_OTHER_CLOSING = 7;//外賣結賬單
protected final String MONETARY_UNIT = "$"; protected final String MONETARY_UNIT = "$";
private final static int SUNMI_PAPER_WIDTH = 360;//商米打印機紙張寬度 private final static int SUNMI_PAPER_WIDTH = 360;//商米打印機紙張寬度
...@@ -97,23 +87,23 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -97,23 +87,23 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
public static PrinterRoot getPrinterByType(int type) { public static PrinterRoot getPrinterByType(int type) {
//初始化USB打印 //初始化USB打印
if (type == PRINT_TEST) { if (type == PrintConstans.PRINT_TEST) {
return new PrintTest(); return new PrintTest();
} else if (type == PRINT_SERVE) { } else if (type == PrintConstans.PRINT_SERVE) {
return new PrintServe(); return new PrintServe();
} else if (type == PRINT_SLIP) { } else if (type == PrintConstans.PRINT_SLIP) {
return new PrintSlip(); return new PrintSlip();
} else if (type == PRINT_BILL) { } else if (type == PrintConstans.PRINT_BILL) {
return new PrintBill(); return new PrintBill();
} else if (type == PRINT_KITCHEN) { } else if (type == PrintConstans.PRINT_KITCHEN) {
return new PrintPrjKitchen(); return new PrintPrjKitchen();
} else if (type == PRINT_CLEAN_MACHINE) { } else if (type == PrintConstans.PRINT_CLEAN_MACHINE) {
return new PrintCleanMachine(); return new PrintCleanMachine();
} else if (type == PRINT_OTHER_ORDER) { } else if (type == PrintConstans.PRINT_OTHER_ORDER) {
return new PrintOtherOrder(); return new PrintOtherOrder();
} else if (type == PRINT_INSTRUCTION) { } else if (type == PrintConstans.PRINT_INSTRUCTION) {
return new PrintInstruction(); return new PrintInstruction();
} else if (type == PRINT_OTHER_CLOSING) { } else if (type == PrintConstans.PRINT_OTHER_CLOSING) {
return new PrintOtherOrderClosing(); return new PrintOtherOrderClosing();
} }
return null; return null;
...@@ -1020,8 +1010,25 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -1020,8 +1010,25 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
return view; return view;
} }
public View getDiningFoodList(Context mContext, List<OrderDetail> foodList, PrinterDeviceBean deviceBean) { /**
return getVerticalRecyclerView(mContext, new FoodAdapter(foodList, deviceBean)); *
* @param mContext
* @param foodList
* @param deviceBean
* @param type 0 食品清單,1 結賬單
* @param showPrice 是否顯示價格
* @return
*/
public View getDiningFoodList(Context mContext, List<OrderDetail> foodList, PrinterDeviceBean deviceBean, int type, boolean showPrice) {
List<OrderDetail> newsFoodList = new ArrayList<>();
for (OrderDetail orderDetail:foodList) {
//如果食品設置了0元不打印並且食品等於0元,或者設置了不打印到單,就不打印
if (!(orderDetail.getPrintToBill() == 0 && orderDetail.getPrice() == 0)
|| OrderDetail.isPrint((int) orderDetail.getPrintTo(), type)) {
newsFoodList.add(orderDetail);
}
}
return getVerticalRecyclerView(mContext, new FoodAdapter(newsFoodList, deviceBean, showPrice));
} }
...@@ -1046,7 +1053,15 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis ...@@ -1046,7 +1053,15 @@ public abstract class PrinterRoot implements PrintSocketHolder.OnStateChangedLis
return getTextView(mContext, text, Gravity.RIGHT, 24, ContextCompat.getColor(mContext, R.color.black)); return getTextView(mContext, text, Gravity.RIGHT, 24, ContextCompat.getColor(mContext, R.color.black));
} }
public TextView getTextView(Context mContext, String text, int gravity, float textSize) {
TextView textView = new TextView(mContext);
textView.setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
textView.setText(text);
textView.setTextColor(Color.BLACK);
textView.setTextSize(textSize);
textView.setGravity(gravity);
return textView;
}
public TextView getTextView(Context mContext, String text, int gravity, float textSize, int textColor) { public TextView getTextView(Context mContext, String text, int gravity, float textSize, int textColor) {
TextView textView = new TextView(mContext); TextView textView = new TextView(mContext);
textView.setWidth(LinearLayout.LayoutParams.MATCH_PARENT); textView.setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
......
...@@ -599,7 +599,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -599,7 +599,7 @@ public class PrjService extends Service implements ReceiveListener {
if (bean.getStatus() == 2) { if (bean.getStatus() == 2) {
Map<String, Bitmap> map = new HashMap<>(); Map<String, Bitmap> map = new HashMap<>();
//帶*,需要切紙的,單獨放一張紙 //帶*,需要切紙的,單獨放一張紙
map.put(bean.getId() + "", printPrjKitchen.getKitChenPrintBitmap(mContext, key, bean)); map.put(bean.getId() + "", printPrjKitchen.getKitChenPrintBitmap(mContext, key, bean, printerDeviceBean));
bitmapMaps.add(map); bitmapMaps.add(map);
} else { } else {
noCut.add(bean); noCut.add(bean);
...@@ -613,7 +613,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -613,7 +613,7 @@ public class PrjService extends Service implements ReceiveListener {
stringBuffer.append(noCutData.getId()); stringBuffer.append(noCutData.getId());
stringBuffer.append(","); stringBuffer.append(",");
} }
map.put(stringBuffer.toString(), printPrjKitchen.getKitChenPrintBitmap(mContext, key, noCut)); map.put(stringBuffer.toString(), printPrjKitchen.getKitChenPrintBitmap(mContext, key, noCut, printerDeviceBean));
bitmapMaps.add(map); bitmapMaps.add(map);
} }
return bitmapMaps; return bitmapMaps;
......
...@@ -123,7 +123,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -123,7 +123,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
callId = CCUtil.getNavigateCallId(this); callId = CCUtil.getNavigateCallId(this);
//獲取打印類型,根據打印類型生成對應的bitmap //獲取打印類型,根據打印類型生成對應的bitmap
type = CCUtil.getNavigateParam(this, PRINT_TYPE, -1); type = CCUtil.getNavigateParam(this, PRINT_TYPE, PrintConstans.PRINT_TEST);
isShowDialog = CCUtil.getNavigateParam(this, PrintConstans.PRINT_LOADING, true); isShowDialog = CCUtil.getNavigateParam(this, PrintConstans.PRINT_LOADING, true);
printerInIt = PrinterRoot.getPrinterByType(type); printerInIt = PrinterRoot.getPrinterByType(type);
...@@ -146,7 +146,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -146,7 +146,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
} }
//獲取打印機列表 //獲取打印機列表
printerDeviceBeans = mPresenter.getAllPrintList(this); printerDeviceBeans = mPresenter.getAllPrintList(this);
if (type == PrinterRoot.PRINT_TEST) { if (type == PrintConstans.PRINT_TEST) {
//如果是打印測試 //如果是打印測試
defaultPrint = CCUtil.getNavigateParam(this, "deviceBean", null); defaultPrint = CCUtil.getNavigateParam(this, "deviceBean", null);
} else { } else {
......
...@@ -130,7 +130,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem ...@@ -130,7 +130,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
private int flipPosition = 0;//數量大於1是否翻轉 private int flipPosition = 0;//數量大於1是否翻轉
public static List<String> printTypes = Arrays.asList("網路打印", "本機打印", "USB打印"); public static List<String> printTypes = Arrays.asList("網路打印", "本機打印", "USB打印");
private List<String> fontSize = Arrays.asList("預設", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30"); private List<String> fontSize = Arrays.asList("預設", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30");
private List<String> booleanSelect = Arrays.asList("預設", "是", "否"); private List<String> booleanSelect = Arrays.asList("預設", "是", "否");
...@@ -325,8 +325,8 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem ...@@ -325,8 +325,8 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
finish(); finish();
} }
private void showSelectFoodFontSize(TextView textView) { private void showSelectFoodFontSize(TextView textView, int defaultSelect) {
DialogUtils.showSelectPopop(this, fontSize, "字體大小", 0, i -> { DialogUtils.showSelectPopop(this, fontSize, "字體大小", defaultSelect, i -> {
textView.setText(fontSize.get(i)); textView.setText(fontSize.get(i));
if (textView.getId() == R.id.tv_food_font_size) { if (textView.getId() == R.id.tv_food_font_size) {
//食品字體大小 //食品字體大小
...@@ -371,10 +371,10 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem ...@@ -371,10 +371,10 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
selectPrintModel(); selectPrintModel();
} else if (id == R.id.layout_print_device_food_font_size) { } else if (id == R.id.layout_print_device_food_font_size) {
//選擇食品字體大小 //選擇食品字體大小
showSelectFoodFontSize(mTvFoodNameSize); showSelectFoodFontSize(mTvFoodNameSize, foodFondSize);
} else if (id == R.id.layout_print_device_food_item_font_size) { } else if (id == R.id.layout_print_device_food_item_font_size) {
//選擇食品細項字體大小 //選擇食品細項字體大小
showSelectFoodFontSize(mTvdetailsFontSize); showSelectFoodFontSize(mTvdetailsFontSize, modifierFontSize);
} else if (id == R.id.layout_print_type) { } else if (id == R.id.layout_print_type) {
//選擇打印機類型 //選擇打印機類型
showSelectPrintType(); showSelectPrintType();
...@@ -586,7 +586,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem ...@@ -586,7 +586,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
} else if (v.getId() == R.id.print_test) { } else if (v.getId() == R.id.print_test) {
//打印測試 //打印測試
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.addParam(PrintConstans.PRINT_TYPE, PrinterRoot.PRINT_TEST) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_TEST)
.addParam("deviceBean", printerDeviceBean) .addParam("deviceBean", printerDeviceBean)
.setActionName("printActivity") .setActionName("printActivity")
.build() .build()
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
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="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10"
tools:context="com.joe.print.mvp.ui.activity.PrintTestActivity"> tools:context="com.joe.print.mvp.ui.activity.PrintTestActivity">
<EditText
android:id="@+id/ed_ip"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_50"
android:layout_marginTop="@dimen/dp_20"
android:hint="请输入IP地址" />
<Button <Button
android:id="@+id/btn_test" android:id="@+id/btn_test"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_50" android:layout_height="@dimen/dp_50"
android:layout_centerInParent="true"
android:text="打印測試" /> android:text="打印測試" />
</RelativeLayout> </LinearLayout>
...@@ -787,7 +787,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod ...@@ -787,7 +787,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
private void printSendOrder(boolean initTable) { private void printSendOrder(boolean initTable) {
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.setActionName("printActivity") .setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, 3) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_KITCHEN)
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
// if (result.isSuccess()) { // if (result.isSuccess()) {
......
...@@ -349,7 +349,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -349,7 +349,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
MyOrderManage.getInstance().setNewFoodList(newFoods); MyOrderManage.getInstance().setNewFoodList(newFoods);
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.setActionName("printActivity") .setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, 3) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_KITCHEN)
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess()); Log.e("error", "是否成功打印:" + result.isSuccess());
...@@ -359,18 +359,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -359,18 +359,6 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
// } // }
mRootView.sendSuccess(); mRootView.sendSuccess();
}); });
//打印上菜紙
// CC.obtainBuilder("Component.Print")
// .setActionName("printActivity")
// .addParam("NewFoods", newFoods)
// .addParam("type", 0)
// .build()
// .callAsyncCallbackOnMainThread((cc, result) -> {
// if (result.isSuccess()) {
// //打印成功
// mRootView.killMyself();
// }
// });
} }
public void printOrder(long tableId, boolean isSend) { public void printOrder(long tableId, boolean isSend) {
...@@ -390,7 +378,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -390,7 +378,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
public void onNext(@NonNull BaseRespose info) { public void onNext(@NonNull BaseRespose info) {
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.addParam(PrintConstans.PRINT_TYPE, 1)//印單 .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SLIP)//印單
.setActionName("printActivity") .setActionName("printActivity")
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
......
...@@ -18,6 +18,7 @@ import com.gingersoft.gsa.cloud.base.utils.JsonUtils; ...@@ -18,6 +18,7 @@ import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.constans.GoldConstants; import com.gingersoft.gsa.cloud.constans.GoldConstants;
import com.gingersoft.gsa.cloud.constans.PrintConstans;
import com.gingersoft.gsa.cloud.database.bean.FoodCombo; import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.Function; import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.database.bean.Modifier; import com.gingersoft.gsa.cloud.database.bean.Modifier;
...@@ -357,7 +358,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -357,7 +358,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
private void printParper() { private void printParper() {
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.setActionName("printActivity") .setActionName("printActivity")
.addParam("type", 1) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SERVE)
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
//清空賬單數據 //清空賬單數據
......
...@@ -178,7 +178,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All ...@@ -178,7 +178,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
MyOrderManage.getInstance().setBillMoney(payMethodList); MyOrderManage.getInstance().setBillMoney(payMethodList);
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.setActionName("printActivity") .setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, 2) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess()); Log.e("error", "是否成功打印:" + result.isSuccess());
......
...@@ -511,7 +511,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -511,7 +511,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
//打印結賬單 //打印結賬單
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.setActionName("printActivity") .setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, 2) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess()); Log.e("error", "是否成功打印:" + result.isSuccess());
......
...@@ -422,7 +422,7 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl ...@@ -422,7 +422,7 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
CC.obtainBuilder("Component.Print") CC.obtainBuilder("Component.Print")
.setActionName("printActivity") .setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, 2) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.build() .build()
.callAsyncCallbackOnMainThread((cc, result) -> { .callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess()); Log.e("error", "是否成功打印:" + result.isSuccess());
......
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