Commit 70fa4320 by 王宇航

結賬單打印,印單打印,上菜紙打印

parent 9e3a4f2b
File added
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.jess.arms">
</manifest>
......@@ -88,9 +88,10 @@ public class DeviceUtils {
/**
* 跳转设置页面
*
* @param context
*/
public static void startSetting(Context context){
public static void startSetting(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { //4.4以下版本跳轉詳情頁面
Intent localIntent = new Intent();
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
......@@ -119,6 +120,7 @@ public class DeviceUtils {
}
}
}
/**
* dp转px
*
......@@ -810,10 +812,15 @@ public class DeviceUtils {
public static boolean netIsConnected(Context context) {
ConnectivityManager connectMgr = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//手机网络连接状态
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo mobNetInfo = null;
try {
mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
} catch (SecurityException e) {
e.printStackTrace();
}
//WIFI连接状态
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
if (mobNetInfo != null && !mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
//当前无可用的网络
return false;
}
......
......@@ -35,20 +35,19 @@ android {
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.1.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]
implementation 'am.util:printer:2.1.0'
implementation rootProject.ext.dependencies["BaseRecyclerViewAdapter"]
implementation rootProject.ext.dependencies["yzjRecyclerView"]
// implementation rootProject.ext.dependencies["fastjson"]
// implementation rootProject.ext.dependencies["fastjson"]
debugImplementation rootProject.ext.dependencies["canary-debug"]
releaseImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["canary-release"]
testImplementation rootProject.ext.dependencies["junit"]
implementation 'com.sunmi:printerlibrary:1.0.7'
implementation files('libs/nexgon5lib.jar')
}
......@@ -3,6 +3,7 @@ package com.joe.print;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
......
......@@ -95,7 +95,7 @@ public class PrintListPresenter extends BasePresenter<PrintListContract.Model, P
*/
public void deletePrinter(String ids){
RequestBody requestBody = new FormBody.Builder()
.add("ids", ids)
.add("id", ids)
.build();
mModel.deletePrinter(requestBody)
.subscribeOn(Schedulers.io())
......
......@@ -100,7 +100,7 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model,
* @param type 打印機類型 1 :55mm, 2:88mm
*/
public void updatePrinterInfo(int id, int restaurantId, String ip, String port, int type) {
PrinterDeviceBean printerDeviceBean = new PrinterDeviceBean(id, restaurantId, ip, Integer.parseInt(port), type);
PrinterDeviceBean printerDeviceBean = new PrinterDeviceBean(id, null, ip, Integer.parseInt(port), type);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), JsonUtils.toJson(printerDeviceBean));
mModel.updatePrinter(requestBody)
.subscribeOn(Schedulers.io())
......@@ -113,7 +113,8 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model,
@Override
public void onNext(BaseResult baseResult) {
if (baseResult.isSuccess()) {
mRootView.showMessage("保存成功");
mRootView.killMyself();
}
}
});
......
package com.joe.print.mvp.print;
import android.content.Context;
import android.os.RemoteException;
import com.gingersoft.gsa.cloud.base.utils.LanguageUtils;
import com.hyweb.n5.lib.util.PrinterUtil;
import com.jess.arms.utils.ArmsUtils;
import com.sunmi.peripheral.printer.SunmiPrinterService;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2019/6/27
* 修订历史:2019/6/27
* 描述:
*/
public class PrintStatus {
public static boolean initV2PrintStatus(Context context, SunmiPrinterService service) {
int printerState = 0;
try {
printerState = service.updatePrinterState();
} catch (RemoteException e) {
e.printStackTrace();
}
switch (printerState) {
case 1://打印机?作正常
return true;
case 2://打印机准备中
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "print.prepare", "打印機準備中"));
break;
case 3://通讯异常
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "printer.abnormal.communication", "打印機通訊異常"));
break;
case 4://缺纸
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "print.out.of.paper", "打印機缺紙"));
break;
case 5://过热
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "print.overheat", "打印機過熱"));
break;
case 6://开盖
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "print.open.cover", "打印機開蓋"));
break;
case 7://切?异常
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "print.cutter.abnormality", "打印機切刀異常"));
break;
case 8://切?恢复
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "print.cutter.recovery", "打印機切刀恢復"));
break;
case 9://未检测到?标
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "print.not.black.mark", "打印機未檢測到黑標"));
break;
case 505://未检测到打印机
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "print.not.detected", "未檢測到打印機"));
break;
case 507://打印机固件升级失败
ArmsUtils.makeText(context, LanguageUtils.get_language_system(context, "print.fixed.upgrade.failed", "打印機固定升級失敗"));
break;
}
return false;
}
public static boolean initN5PrintStatus(Context context) {
try {
int status = PrinterUtil.getStatus();
switch (status) {
case 0: //可以打印
// N5PrintCallback printCallBack = new N5PrintCallback(context);
// PrinterUtil.registerCallback(printCallBack);
return true;
case -1009: //打印未完成
String notCompleted = LanguageUtils.get_language_system(context, "print.not.completed", "打印未完成");
ArmsUtils.makeText(context, notCompleted);
break;
case -1005: //打印机缺纸
String noPaper = LanguageUtils.get_language_system(context, "printer.no.paper", "打印机缺纸");
ArmsUtils.makeText(context, noPaper);
break;
case -1008: //打印机过热
String printerOverheated = LanguageUtils.get_language_system(context, "printer.overheated", "打印机过热");
ArmsUtils.makeText(context, printerOverheated);
break;
case -1001: // 打印失败
String printFailed = LanguageUtils.get_language_system(context, "print.failed", "打印失敗");
ArmsUtils.makeText(context, printFailed);
break;
case -1: //其他错误
ArmsUtils.makeText(context, "other error");
break;
}
} catch (RemoteException e) {
e.printStackTrace();
}
return false;
}
}
......@@ -6,6 +6,7 @@ import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
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.OpenTableContract;
......@@ -14,9 +15,8 @@ import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.base.utils.view.LayoutToBitmapUtils;
import com.joe.print.R;
import com.joe.print.mvp.ui.adapter.BillAdapter;
import com.joe.print.mvp.ui.adapter.FoodAdapter;
import com.joe.print.mvp.model.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.adapter.print.BillAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.FoodAdapter;
import com.gingersoft.gsa.cloud.base.utils.view.ImageUtils;
import org.jetbrains.annotations.NotNull;
......
package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.RemoteException;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.sunmi.peripheral.printer.InnerPrinterCallback;
import com.sunmi.peripheral.printer.InnerPrinterException;
import com.sunmi.peripheral.printer.InnerPrinterManager;
import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.sunmi.peripheral.printer.SunmiPrinterService;
/**
* Created by Wyh on 2020/2/10.
*/
public class SunMiPrint {
public static boolean bindService(Context context, InnerPrinterCallback callback) {
try {
return InnerPrinterManager.getInstance().bindService(context, callback);
} catch (InnerPrinterException e) {
e.printStackTrace();
ToastUtils.show(context, "連接失敗,錯誤信息:" + e.getMessage());
return false;
}
}
public static boolean printBitmap(Context context, Bitmap bitmap) {
return bindService(context, new InnerPrinterCallback() {
@Override
protected void onConnected(SunmiPrinterService service) {
//驗證打印機狀態
if (PrintStatus.initV2PrintStatus(context, service)) {
try {
//打印機狀態正常,開始打印圖片
service.printBitmap(bitmap, new InnerResultCallbcak() {
@Override
public void onRunResult(boolean isSuccess) {
//返回接⼝执⾏的情况(并⾮真实打印):成功或失败
if (isSuccess) {
ToastUtils.show(context, "打印成功");
} else {
ToastUtils.show(context, "打印失敗");
}
}
@Override
public void onReturnString(String result) {
//部分接⼝会异步返回查询数据
ToastUtils.show(context, "onReturnString:" + result);
}
@Override
public void onRaiseException(int code, String msg) {
//接⼝执⾏失败时,返回的异常状态
ToastUtils.show(context, "打印異常狀態碼:" + code + "---MSG:" + msg);
}
@Override
public void onPrintResult(int code, String msg) {
//事务模式下真实的打印结果返回
ToastUtils.show(context, "打印結果:" + code + "---MSG:" + msg);
}
});
} catch (RemoteException e) {
e.printStackTrace();
//如部分接⼝只能⽤于指定机型所以会跑出调⽤接⼝异常,如钱箱接⼝只能⽤于台式机
ToastUtils.show(context, "打印失敗" + "msg:" + e.getMessage());
}
}
}
@Override
protected void onDisconnected() {
ToastUtils.show(context, "斷開連接");
}
});
}
}
package com.joe.print.mvp.ui.activity;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;
import android.widget.SimpleAdapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
import com.gingersoft.gsa.cloud.base.utils.PrintUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.base.utils.view.ImageUtils;
import com.gingersoft.gsa.cloud.base.widget.DialogUtils;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.hyweb.n5.lib.constant.PrinterConstant;
import com.hyweb.n5.lib.exception.NoInitPrinterException;
import com.hyweb.n5.lib.util.PrinterUtil;
import com.hyweb.n5.server.aidl.IOnPrintCallback;
import com.jess.arms.base.BaseActivity;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
import com.joe.print.R;
import com.joe.print.di.component.DaggerPrintComponent;
import com.joe.print.mvp.contract.PrintContract;
import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
import com.joe.print.mvp.presenter.PrintPresenter;
import com.joe.print.mvp.print.SunMiPrint;
import com.joe.print.mvp.ui.adapter.PrinterListAdapter;
import com.qmuiteam.qmui.widget.popup.QMUIPopup;
import com.yanzhenjie.recyclerview.OnItemClickListener;
import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
......@@ -61,6 +72,18 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
private int dialogCount = 0;
private DialogUtils selectDialog;
/**
* 商米:V2、V2_PRO N5:N5
*/
private String mV2 = "V2,V2_PRO";
private String mN5 = "N5";
/**
* 0:上菜紙
* 1:印單
* 2:結賬單
*/
private int type = -1;
private Bitmap bitmap;
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerPrintComponent //如找不到该类,请编译一下项目
......@@ -78,13 +101,30 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public void initData(@Nullable Bundle savedInstanceState) {
type = CCUtil.getNavigateParam(this, "type", 1001);
if(type == 0){
//上菜紙
List<Food> foods = CCUtil.getNavigateParam(this, "NewFoods", new ArrayList<>());
bitmap = PrintUtils.getPrintBitmap(mContext, foods);
} else if(type == 1){
//印單
bitmap = PrintUtils.getPrintBitmap(mContext);
} else if(type == 2){
//結賬單
bitmap = PrintUtils.getPrintBillBitmap(mContext);
} else {
ToastUtils.show(mContext, "打印失敗");
finish();
return;
}
selectDialog = new DialogUtils(mContext, R.layout.print_dialog_select_device) {
@Override
public void initLayout(ViewHepler hepler, Dialog dialog) {
dialogCount++;
hepler.setViewClick(R.id.local_print, v -> {
//本機打印
ToastUtils.show(mContext, "功能開發中");
locationPrint();
});
hepler.setViewClick(R.id.internet_print, v -> {
//IP打印
......@@ -101,6 +141,64 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
}.createDialogView().show().setOnDismissListener(this);
}
/**
* 本地打印
*/
private void locationPrint() {
//本機打印
if (bitmap == null) {
ToastUtils.show(mContext, "未獲取到打印內容");
return;
}
String model = Build.MODEL;
if (mV2.contains(model)) {
//商米打印
boolean isSuccess = SunMiPrint.printBitmap(mContext, bitmap);
if (isSuccess) {
ToastUtils.show(mContext, "商米打印機連接成功");
} else {
ToastUtils.show(mContext, "商米打印機連接失敗");
}
} else if (mN5.contains(model)) {
//N5打印
try {
PrinterUtil.initPrinter(mContext);
PrinterUtil.appendImage(bitmap, PrinterConstant.ALIGN_CENTER);
PrinterUtil.startPrint(true, new IOnPrintCallback() {
@Override
public void onPrintResult(int i) {
Looper.prepare();
if (i == 0) {
//打印成功
ToastUtils.show(mContext, "N5打印結果:成功");
} else {
//打印失敗
ToastUtils.show(mContext, "N5打印結果:失敗");
}
}
@Override
public IBinder asBinder() {
return null;
}
});
} catch (RemoteException | NoInitPrinterException e) {
e.printStackTrace();
}
} else {
ToastUtils.show(mContext, "暫不支持本機型打印");
}
}
//初始化打印內容
public Bitmap initPrintBitmap(int width) {
Bitmap bitmap = getIntent().getParcelableExtra("bitmap");
if (bitmap == null) {
return null;
}
return ImageUtils.zoomDrawable(bitmap, width, bitmap.getHeight());
}
@Override
public void initIntent() {
......@@ -162,7 +260,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
dialogCount++;
RecyclerView mRvPrintList = hepler.getView(R.id.rv_print_list);
List<PrinterDeviceBean> deviceBeans = PrinterManager.getPrinterManager().getDeviceBeans();
PrinterListAdapter printListAdapter = new PrinterListAdapter(deviceBeans);
PrinterListAdapter printListAdapter = new PrinterListAdapter(deviceBeans, mContext);
mRvPrintList.setLayoutManager(new LinearLayoutManager(mContext));
//分割线
mRvPrintList.addItemDecoration(new DefaultItemDecoration(ContextCompat.getColor(mContext, R.color.line_color)));
......
......@@ -45,7 +45,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@BindView(R2.id.add_printer_topbar)
QMUITopBar topBar;
@BindView(R2.id.add_printer_ed_port)
MyEditText etPort;
EditText etPort;
@BindView(R2.id.print_test)
TextView printTest;
@BindView(R2.id.printer_type)
......@@ -71,7 +71,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@Override
public void initData(@Nullable Bundle savedInstanceState) {
etPort.getEditText().setInputType(EditorInfo.TYPE_CLASS_NUMBER);
// etPort.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
String[] ips = new String[4];
//如果不為空,則是編輯打印機,初始化信息
if (printerDeviceBean != null) {
......@@ -101,12 +101,13 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@Override
public void initTopBar() {
String title = "添加打印機";
String title = "新增打印機";
if (isEditPrinter) {
title = "編輯打印機";
}
topBar.setTitle(title);
topBar.addLeftImageButton(R.drawable.icon_back, R.id.iv_left_back).setOnClickListener(v -> finish());
topBar.setBackgroundColor(getResources().getColor(R.color.theme_color));
topBar.addLeftImageButton(R.drawable.icon_white_back, R.id.iv_left_back).setOnClickListener(v -> finish());
topBar.addRightTextButton("保存", R.id.printer_add).setOnClickListener(this);
}
......
......@@ -131,9 +131,10 @@ public class PrinterListActivity extends BaseActivity<PrintListPresenter> implem
@Override
public void initTopBar() {
topBar.setTitle("打印機列表");
topBar.addLeftImageButton(R.drawable.icon_back, R.id.iv_left_back).setOnClickListener(v -> finish());
topBar.addRightTextButton("新增", R.id.printer_add).setOnClickListener(v -> startActivity(new Intent(mContext, PrinterAddActivity.class)));
topBar.setTitle("打印設置");
topBar.setBackgroundColor(getResources().getColor(R.color.theme_color));
topBar.addLeftImageButton(R.drawable.icon_white_back, R.id.iv_left_back).setOnClickListener(v -> finish());
topBar.addRightImageButton(R.drawable.ic_add, R.id.printer_add).setOnClickListener(v -> startActivity(new Intent(mContext, PrinterAddActivity.class)));
}
@Override
......@@ -183,7 +184,7 @@ public class PrinterListActivity extends BaseActivity<PrintListPresenter> implem
public void loadPrinterList(List<PrinterDeviceBean> deviceBeans) {
PrinterManager.getPrinterManager().setDeviceBeans(deviceBeans);
if (printListAdapter == null) {
printListAdapter = new PrinterListAdapter(deviceBeans);
printListAdapter = new PrinterListAdapter(deviceBeans, mContext);
mRvPrintList.setLayoutManager(new LinearLayoutManager(this));
//分割线
mRvPrintList.addItemDecoration(new DefaultItemDecoration(ContextCompat.getColor(this, R.color.line_color)));
......
package com.joe.print.mvp.ui.adapter;
import android.content.Context;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
......@@ -13,14 +15,19 @@ import androidx.annotation.Nullable;
* Created by Wyh on 2020/1/16.
*/
public class PrinterListAdapter extends BaseQuickAdapter<PrinterDeviceBean, BaseViewHolder> {
private Context mContext;
public PrinterListAdapter(@Nullable List<PrinterDeviceBean> data) {
public PrinterListAdapter(@Nullable List<PrinterDeviceBean> data, Context mContext) {
super(R.layout.printer_item, data);
this.mContext = mContext;
}
@Override
protected void convert(BaseViewHolder helper, PrinterDeviceBean item) {
helper.setText(R.id.tv_printer_name, item.getIp() + "");
helper.setText(R.id.tv_printer_ip, String.format(mContext.getString(R.string.print_ip), item.getIp()));
helper.setText(R.id.tv_printer_port, String.format(mContext.getString(R.string.print_port), item.getPort() + ""));
// helper.
}
public void notifyData(List<PrinterDeviceBean> data) {
......
......@@ -8,7 +8,9 @@
<com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/add_printer_topbar"
android:layout_width="match_parent"
android:layout_height="@dimen/head_height" />
android:layout_height="@dimen/head_height"
app:qmui_topbar_text_btn_color_state_list="@color/theme_white_color"
app:qmui_topbar_title_color="@color/theme_white_color" />
<LinearLayout
style="@style/print_add_printer_input_style"
......@@ -35,13 +37,13 @@
android:id="@+id/ip_edit_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:gravity="bottom|center_horizontal"
android:hint="0"
android:text="192"
android:inputType="number"
android:maxLength="3"
android:minWidth="@dimen/dp_30"
android:singleLine="true"
android:text="192"
android:textColor="@color/normal_color"
android:textCursorDrawable="@null"
android:textSize="15sp">
......@@ -63,13 +65,13 @@
android:id="@+id/ip_edit_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:gravity="bottom|center_horizontal"
android:hint="0"
android:text="168"
android:inputType="number"
android:maxLength="3"
android:minWidth="@dimen/dp_30"
android:singleLine="true"
android:text="168"
android:textColor="@color/normal_color"
android:textCursorDrawable="@null"
android:textSize="15sp" />
......@@ -88,13 +90,13 @@
android:id="@+id/ip_edit_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:gravity="bottom|center_horizontal"
android:hint="0"
android:text="125"
android:inputType="number"
android:maxLength="3"
android:minWidth="@dimen/dp_30"
android:singleLine="true"
android:text="125"
android:textColor="@color/normal_color"
android:textCursorDrawable="@null"
android:textSize="15sp" />
......@@ -113,13 +115,13 @@
android:id="@+id/ip_edit_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:gravity="bottom|center_horizontal"
android:hint="0"
android:text="075"
android:inputType="number"
android:maxLength="3"
android:minWidth="@dimen/dp_30"
android:singleLine="true"
android:text="075"
android:textColor="@color/normal_color"
android:textCursorDrawable="@null"
android:textSize="15sp" />
......@@ -143,18 +145,19 @@
android:textSize="@dimen/sp_14"
android:textStyle="bold" />
<com.gingersoft.gsa.cloud.ui.view.MyEditText
<EditText
android:id="@+id/add_printer_ed_port"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_weight="0.7"
android:gravity="center_vertical"
app:ed_MaxLength="6"
app:ed_text="8856"
app:ed_hint="請輸入端口號"
app:ed_hintColor="@color/hint_color"
app:ed_textColor="@color/normal_color"
app:ed_textSize="@dimen/sp_14" />
android:background="@null"
android:hint="請輸入端口號"
android:inputType="number"
android:maxLength="4"
android:textColor="@color/normal_color"
android:textColorHint="@color/hint_color"
android:textSize="@dimen/dp_14" />
</LinearLayout>
<include layout="@layout/include_dividing_line" />
......@@ -208,12 +211,12 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/printer_add_input_paddingLeft"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginRight="@dimen/printer_add_input_paddingLeft"
android:background="@drawable/shape_app_btn"
android:gravity="center"
android:layout_marginTop="@dimen/dp_30"
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10"
android:background="@drawable/shape_app_btn"
android:text="打印測試"
android:textColor="@color/white"
android:textSize="@dimen/sp_16" />
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
......@@ -9,12 +9,16 @@
android:id="@+id/printer_home_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/head_height"
android:fitsSystemWindows="true" />
android:fitsSystemWindows="true"
app:qmui_topbar_text_btn_color_state_list="@color/theme_white_color"
app:qmui_topbar_title_color="@color/theme_white_color" />
<com.yanzhenjie.recyclerview.SwipeRecyclerView
android:id="@+id/rc_print_list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
android:layout_height="match_parent"
android:paddingLeft="@dimen/dp_10"
android:paddingRight="@dimen/dp_10" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:orientation="vertical"
android:paddingTop="@dimen/dp_10"
android:paddingBottom="@dimen/dp_10">
<CheckBox
android:id="@+id/cb_printer_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_printer_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/dp_10"
android:gravity="center"
android:padding="@dimen/dp_10"
android:textColor="@color/normal_color"
android:textSize="@dimen/dp_16" />
android:textSize="@dimen/dp_16"
app:layout_constraintLeft_toRightOf="@id/cb_printer_item"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_printer_ip"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:singleLine="true"
android:text="IP:"
android:textColor="@color/normal_color"
android:textSize="@dimen/dp_14"
app:layout_constraintHorizontal_weight="0.5"
app:layout_constraintLeft_toLeftOf="@id/tv_printer_name"
app:layout_constraintRight_toLeftOf="@id/tv_printer_port"
app:layout_constraintTop_toBottomOf="@id/tv_printer_name" />
</LinearLayout>
\ No newline at end of file
<TextView
android:id="@+id/tv_printer_port"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="端口號:"
android:textColor="@color/normal_color"
android:textSize="@dimen/dp_14"
app:layout_constraintHorizontal_weight="0.5"
app:layout_constraintLeft_toRightOf="@id/tv_printer_ip"
app:layout_constraintRight_toRightOf="@id/tv_printer_edit"
app:layout_constraintTop_toTopOf="@id/tv_printer_ip" />
<TextView
android:id="@+id/tv_printer_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="編輯"
android:textColor="@color/theme_color"
android:textSize="@dimen/dp_14"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<resources>
<string name="app_name">print-Module</string>
<string name="print_ip">IP:%1$s</string>
<string name="print_port">端口號:%1$s</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Print_text_style">
<item name="android:textColor">#333</item>
<item name="android:textSize">16sp</item>
</style>
<style name="print_TranslucentTheme" parent="AppTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
......@@ -16,6 +13,7 @@
<style name="print_add_printer_input_style">
<item name="android:gravity">center_vertical</item>
<item name="android:paddingLeft">@dimen/printer_add_input_paddingLeft</item>
<item name="android:paddingRight">@dimen/printer_add_input_paddingLeft</item>
<item name="android:paddingTop">@dimen/printer_add_input_paddingTop</item>
<item name="android:paddingBottom">@dimen/printer_add_input_paddingBottom</item>
</style>
......
......@@ -34,8 +34,7 @@ dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/javabase64-1.2.jar')
implementation files('libs/sun.misc.BASE64Decoder.jar')
// implementation 'androidx.appcompat:appcompat:1.1.0'
// implementation 'androidx.appcompat:appcompat:1.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
......@@ -43,4 +42,6 @@ dependencies {
//日誌管理
implementation 'com.elvishew:xlog:1.6.1'
implementation rootProject.ext.dependencies["zxing"]
implementation rootProject.ext.dependencies["BaseRecyclerViewAdapter"]
implementation files('libs/ecracalib.jar')
}
package com.joe.print.mvp.ui.adapter;
package com.gingersoft.gsa.cloud.base.adapter.print;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.joe.print.R;
import com.joe.print.mvp.model.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import java.util.List;
......
package com.gingersoft.gsa.cloud.base.adapter.print;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.common.bean.BillMethodBean;
import com.gingersoft.gsa.cloud.database.bean.Food;
import java.util.List;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/1/9.
* 結賬方式
*/
public class BillTypeAdapter extends BaseQuickAdapter<BillMethodBean, BaseViewHolder> {
public BillTypeAdapter(@Nullable List<BillMethodBean> data) {
super(R.layout.base_print_item_bill_type, data);
}
@Override
protected void convert(BaseViewHolder helper, BillMethodBean item) {
helper.setText(R.id.tv_total_amount_text, item.getName());
helper.setText(R.id.tv_total_amount, item.getMoney() + "");
}
}
package com.joe.print.mvp.ui.adapter;
package com.gingersoft.gsa.cloud.base.adapter.print;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.joe.print.R;
import java.util.List;
import androidx.annotation.Nullable;
......
package com.gingersoft.gsa.cloud.table.mvp.model.bean;
package com.gingersoft.gsa.cloud.base.common.bean;
/**
* Created by Wyh on 2020/1/17.
* 結賬方式
* 結賬方式,打印和餐檯模塊用到
*/
public class BillMethodBean {
private int id;
......
package com.joe.print.mvp.model.bean;
package com.gingersoft.gsa.cloud.base.common.bean;
/**
* Created by Wyh on 2020/1/9.
......
......@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.base.common.bean.mealManage;
import android.app.Activity;
import com.gingersoft.gsa.cloud.base.common.bean.BillMethodBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import com.gingersoft.gsa.cloud.database.bean.Food;
......@@ -48,7 +49,9 @@ public class MyOrderManage {
private OrderBean orderBean;
//食品列表
private List<Food> orderFoodList = new ArrayList<>();
// private List<DatasBean> comboOrders = new ArrayList<>();
//結賬方式
private List<BillMethodBean> billMoney = new ArrayList<>();
// private List<DatasBean> comboOrders = new ArrayList<>();
// private List<MixOldOrder> MixOldOrders = new ArrayList<>();
// private List<MixComboGroupDiscount.DatasBean> mixComboGroup_Discounts;
// private List<MixComboGroup.DatasBean> MixComboGroups;
......@@ -1177,4 +1180,11 @@ public class MyOrderManage {
this.allowAddAutoDiscount = allowAddAutoDiscount;
}
public List<BillMethodBean> getBillMoney() {
return billMoney;
}
public void setBillMoney(List<BillMethodBean> billMoney) {
this.billMoney = billMoney;
}
}
......@@ -66,16 +66,19 @@ public class JsonUtils {
return null;
}
return JSON.parseArray(json, classOfT);
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String toJson(Object o){
return JSON.toJSONString(o);
public static String toJson(Object o) {
try {
return JSON.toJSONString(o);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package com.gingersoft.gsa.cloud.base.utils;
import android.content.Context;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2018/8/2
* 修订历史:2018/8/2
* 描述:
*/
public class LanguageUtils {
public static String get_language_system(Context context, String Source_name, String defaultStr) {
String language = defaultStr;
// Db_Language db_Language = new Db_Language(context);
//
// Language.DatasBean lan = db_Language.query_language("SourceName='" + Source_name + "'");
// db_Language.closeDb();
//
// if (lan == null ) {
// return language;
// }
//
// switch (GSAApplication.androidSetting.getNowLanguageIndex()) {
// case 1:
// language = lan.getDesc1();
// break;
// case 2:
// language = lan.getDesc2();
// if (language == null || language.length() == 0) {
// language = lan.getDesc1();
// }
// break;
// case 3:
// language = lan.getDesc3();
// if (language == null || language.length() == 0) {
// language = lan.getDesc1();
// }
// break;
// }
return language;
}
}
package com.gingersoft.gsa.cloud.base.utils;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gingersoft.gsa.cloud.base.R;
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.common.bean.BillingBean;
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.OpenTableContract;
import com.gingersoft.gsa.cloud.base.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.base.utils.view.ImageUtils;
import com.gingersoft.gsa.cloud.base.utils.view.LayoutToBitmapUtils;
import com.gingersoft.gsa.cloud.database.bean.Food;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
/**
* Created by Wyh on 2020/2/10.
* 打印工具類
*/
public class PrintUtils {
public static Bitmap getPrintBitmap(Context context) {
return getPrintBitmap(context, MyOrderManage.getInstance().getOrderFoodList());
}
/**
* 獲取"印單"圖片
*
* @param context
* @return
*/
public static Bitmap getPrintBitmap(Context context, List<Food> foodList) {
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);
// List<Food> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableContract.getDefault().getTableBean();
tableNum.setText(tableBean.getTableName());
people.setText(tableBean.getPeopleNumber() + "");
orderData.setText(tableBean.getCreateTime());
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("合計", 58.88));
// billingBeans.add(new BillingBean("10%服務費", 5.08));
// billingBeans.add(new BillingBean("賬單小數", -0.06));
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 (OpenTableContract.getDefault().
getTableBean() != null) {
tableNum.setText(OpenTableContract.getDefault().getTableBean().getTableName());
people.setText(OpenTableContract.getDefault().getTableBean().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().
getOrderId() != -1) {
orderNum.setText(MyOrderManage.getInstance().getOrderId() + "");
}
BigDecimal totalAmount = new BigDecimal(0);
for (
Food food : MyOrderManage.getInstance().
getOrderFoodList()) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(food.getPrice(), food.getNumber()));
}
//總金額
mTvTotalAmount.setText(totalAmount + "");
//加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
LayoutToBitmapUtils.layoutView(context, view);//先测量view
//580為程序支持的打印紙最大寬度
return ImageUtils.zoomDrawable(LayoutToBitmapUtils.loadBitmapFromView(view), 580);//将view轉bitmap
}
/**
* 獲取"結賬單"圖片
*
* @param context
* @return
*/
public static Bitmap getPrintBillBitmap(Context context) {
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);//顯示支付方式
List<Food> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableContract.getDefault().getTableBean();
tableNum.setText(tableBean.getTableName());
people.setText(tableBean.getPeopleNumber() + "");
orderData.setText(tableBean.getCreateTime());
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("合計", 58.88));
// billingBeans.add(new BillingBean("10%服務費", 5.08));
// billingBeans.add(new BillingBean("賬單小數", -0.06));
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 (OpenTableContract.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableContract.getDefault().getTableBean().getTableName());
people.setText(OpenTableContract.getDefault().getTableBean().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().getOrderId() != -1) {
orderNum.setText(MyOrderManage.getInstance().getOrderId() + "");
}
BigDecimal totalAmount = new BigDecimal(0);
for (Food food : MyOrderManage.getInstance().getOrderFoodList()) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(food.getPrice(), food.getNumber()));
}
//總金額
mTvTotalAmount.setText(totalAmount + "");
rvPayType.setLayoutManager(new LinearLayoutManager(context));
rvPayType.setAdapter(new BillTypeAdapter(MyOrderManage.getInstance().getBillMoney()));
//加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
LayoutToBitmapUtils.layoutView(context, view);//先测量view
//580為程序支持的打印紙最大寬度
return ImageUtils.zoomDrawable(LayoutToBitmapUtils.loadBitmapFromView(view), 580);//将view轉bitmap
}
}
......@@ -5,8 +5,8 @@ package com.gingersoft.gsa.cloud.base.utils.constans;
*/
public class HttpsConstans {
// public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 正式服務器
public static String ROOT_SERVER_ADDRESS_FORMAL = "http://192.168.1.74:8201/ricepon-cloud-gsa/api/";// 正式服務器
public static String ROOT_SERVER_ADDRESS_FORMAL = "http://gingersoft.tpddns.cn:58201/ricepon-cloud-gsa/api/";// 正式服務器
// public static String ROOT_SERVER_ADDRESS_FORMAL = "http://192.168.1.74:8201/ricepon-cloud-gsa/api/";// 正式服務器
public static String ROOT_SERVER_ADDRESS_FORMAL2 = "http://gingersoft.tpddns.cn:53000/mock/49/ricepon-cloud-gsa/api/";//測試服務器
......
......@@ -160,6 +160,16 @@ public class ImageUtils {
return Bitmap.createBitmap(oldbmp, 0, 0, width, height,
matrix, true);
}
public static Bitmap zoomDrawable(Bitmap oldbmp, int w) {
int width = oldbmp.getWidth();
int height = oldbmp.getHeight();
Matrix matrix = new Matrix();
float scaleWidth = ((float) w / width);
matrix.postScale(scaleWidth, scaleWidth);
return Bitmap.createBitmap(oldbmp, 0, 0, width, height,
matrix, true);
}
/**
* 缩放图片
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_total_amount_text"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="微信:" />
<TextView
android:id="@+id/tv_amount"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="$" />
<TextView
android:id="@+id/tv_total_amount"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="0" />
</LinearLayout>
\ No newline at end of file
......@@ -11,9 +11,7 @@
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="right"
android:text="合计"
android:textColor="#333"
android:textSize="16sp" />
style="@style/Print_text_style"/>
<TextView
android:id="@+id/tv_total"
......@@ -21,7 +19,5 @@
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:gravity="right"
android:text="$13.54"
android:textColor="#333"
android:textSize="16sp" />
style="@style/Print_text_style" />
</LinearLayout>
\ No newline at end of file
......@@ -7,30 +7,27 @@
<TextView
android:id="@+id/tv_food_name"
style="@style/Print_text_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="包子撒會計分錄"
android:textColor="#333"
android:textSize="16sp" />
android:layout_weight="0.5" />
<TextView
android:id="@+id/tv_food_quantity"
style="@style/Print_text_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:gravity="right"
android:text="000013"
android:textColor="#333"
android:textSize="16sp" />
android:gravity="right" />
<TextView
android:id="@+id/tv_food_price"
style="@style/Print_text_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:gravity="right"
android:text="$000013"
android:textColor="#333"
android:textSize="16sp" />
android:gravity="right" />
</LinearLayout>
\ No newline at end of file
......@@ -38,12 +38,11 @@
<TextView
android:id="@+id/line_restaurant_name"
style="@style/Print_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="——————————————————————————————————————————————————"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_restaurant_name" />
......@@ -51,23 +50,23 @@
<TextView
android:id="@+id/tv_dining_table_text"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="餐檯:"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/line_restaurant_name" />
<TextView
android:id="@+id/tv_dining_table_number"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/tv_dining_table_text"
app:layout_constraintLeft_toRightOf="@id/tv_dining_table_text"
app:layout_constraintTop_toTopOf="@id/tv_dining_table_text" />
......@@ -75,13 +74,13 @@
<TextView
android:id="@+id/tv_people_text"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="right"
android:text="人數:"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/tv_dining_table_text"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
......@@ -89,63 +88,63 @@
<TextView
android:id="@+id/tv_people"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/tv_people_text"
app:layout_constraintLeft_toRightOf="@id/tv_people_text"
app:layout_constraintTop_toTopOf="@id/tv_people_text" />
<TextView
android:id="@+id/tv_order_number_text"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="單號:"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_dining_table_text" />
<TextView
android:id="@+id/tv_order_num"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/tv_order_number_text"
app:layout_constraintLeft_toRightOf="@id/tv_order_number_text"
app:layout_constraintTop_toTopOf="@id/tv_order_number_text" />
<TextView
android:id="@+id/tv_data_text"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="日期:"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_order_number_text" />
<TextView
android:id="@+id/tv_date"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintLeft_toRightOf="@id/tv_data_text"
app:layout_constraintTop_toBottomOf="@id/tv_order_number_text" />
<TextView
android:id="@+id/line_order_info"
style="@style/Print_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="——————————————————————————————————————————————————"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintTop_toBottomOf="@id/tv_date" />
<androidx.recyclerview.widget.RecyclerView
......@@ -156,12 +155,12 @@
<TextView
android:id="@+id/line_food_info"
style="@style/Print_text_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="——————————————————————————————————————————————————"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintHorizontal_weight="0.6"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/rv_food"
......@@ -178,62 +177,62 @@
<TextView
android:id="@+id/line_price_info"
style="@style/Print_text_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="——————————————————————————————————————————————————"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/rv_bill_amount"
app:layout_constraintWidth_percent="0.6" />
<TextView
android:id="@+id/tv_total_amount_text"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="總金額:"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/tv_amount"
app:layout_constraintRight_toLeftOf="@id/tv_amount"
app:layout_constraintTop_toTopOf="@id/tv_amount" />
<TextView
android:id="@+id/tv_amount"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="$"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintRight_toLeftOf="@id/tv_total_amount"
app:layout_constraintTop_toBottomOf="@id/line_price_info" />
<TextView
android:id="@+id/tv_total_amount"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="0"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="@id/tv_amount"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_amount" />
<TextView
android:id="@+id/line_amount_info"
style="@style/Print_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="——————————————————————————————————————————————————"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintTop_toBottomOf="@id/tv_amount" />
<!-- <ImageView-->
......@@ -246,26 +245,26 @@
<TextView
android:id="@+id/tv_thank_you_text"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:gravity="center"
android:text="Thank you!"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/line_amount_info" />
<TextView
android:id="@+id/tv_checkout_time"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="2020-01-09 上午 11:16:15"
android:textColor="#333"
android:textSize="16sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_thank_you_text" />
......
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:scrollbars="none">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_brand_name"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="gs1"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/tv_restaurant_name"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_restaurant_name"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="5dp"
android:gravity="center"
android:text="yan"
app:layout_constraintLeft_toRightOf="@id/tv_brand_name"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_brand_name" />
<TextView
android:id="@+id/tv_print_bill_order_num"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_restaurant_name" />
<TextView
android:id="@+id/line_restaurant_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:maxLines="1"
style="@style/Print_text_style"
android:text="——————————————————————————————————————————————————"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_print_bill_order_num" />
<TextView
android:id="@+id/tv_dining_table_text"
android:layout_width="wrap_content"
style="@style/Print_text_style"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="餐檯:"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/line_restaurant_name" />
<TextView
android:id="@+id/tv_dining_table_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
style="@style/Print_text_style"
app:layout_constraintBottom_toBottomOf="@id/tv_dining_table_text"
app:layout_constraintLeft_toRightOf="@id/tv_dining_table_text"
app:layout_constraintTop_toTopOf="@id/tv_dining_table_text" />
<TextView
android:id="@+id/tv_people_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="right"
android:text="人數:"
style="@style/Print_text_style"
app:layout_constraintBottom_toBottomOf="@id/tv_dining_table_text"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_dining_table_text" />
<TextView
android:id="@+id/tv_people"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
style="@style/Print_text_style"
app:layout_constraintBottom_toBottomOf="@id/tv_people_text"
app:layout_constraintLeft_toRightOf="@id/tv_people_text"
app:layout_constraintTop_toTopOf="@id/tv_people_text" />
<TextView
android:id="@+id/tv_order_number_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="單號:"
style="@style/Print_text_style"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_dining_table_text" />
<TextView
android:id="@+id/tv_order_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Print_text_style"
app:layout_constraintBottom_toBottomOf="@id/tv_order_number_text"
app:layout_constraintLeft_toRightOf="@id/tv_order_number_text"
app:layout_constraintTop_toTopOf="@id/tv_order_number_text" />
<TextView
android:id="@+id/tv_data_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下單時間:"
style="@style/Print_text_style"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_order_number_text" />
<TextView
android:id="@+id/tv_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Print_text_style"
app:layout_constraintLeft_toRightOf="@id/tv_data_text"
app:layout_constraintTop_toBottomOf="@id/tv_order_number_text" />
<TextView
android:id="@+id/line_order_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
style="@style/Print_text_style"
android:text="——————————————————————————————————————————————————"
app:layout_constraintTop_toBottomOf="@id/tv_date" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_food"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/line_order_info" />
<TextView
android:id="@+id/line_food_info"
style="@style/Print_text_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="——————————————————————————————————————————————————"
app:layout_constraintHorizontal_weight="0.6"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/rv_food"
app:layout_constraintWidth_percent="0.6" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_bill_amount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/line_food_info" />
<TextView
android:id="@+id/line_price_info"
style="@style/Print_text_style"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="——————————————————————————————————————————————————"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/rv_bill_amount"
app:layout_constraintWidth_percent="0.6" />
<TextView
android:id="@+id/tv_total_amount_text"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="總金額:"
app:layout_constraintBottom_toBottomOf="@id/tv_amount"
app:layout_constraintRight_toLeftOf="@id/tv_amount"
app:layout_constraintTop_toTopOf="@id/tv_amount" />
<TextView
android:id="@+id/tv_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="$"
style="@style/Print_text_style"
app:layout_constraintRight_toLeftOf="@id/tv_total_amount"
app:layout_constraintTop_toBottomOf="@id/line_price_info" />
<TextView
android:id="@+id/tv_total_amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:text="0"
style="@style/Print_text_style"
app:layout_constraintBottom_toBottomOf="@id/tv_amount"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/tv_amount" />
<TextView
android:id="@+id/line_amount_info"
style="@style/Print_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="——————————————————————————————————————————————————"
app:layout_constraintTop_toBottomOf="@id/tv_amount" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_print_pay_type"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/line_amount_info" />
<!-- <ImageView-->
<!-- android:id="@+id/iv_qr_code"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- app:layout_constraintRight_toLeftOf="parent"-->
<!-- app:layout_constraintRight_toRightOf="parent"-->
<!-- app:layout_constraintTop_toBottomOf="@+id/line_amount_info" />-->
<TextView
android:id="@+id/line_pay_type"
style="@style/Print_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="——————————————————————————————————————————————————"
app:layout_constraintTop_toBottomOf="@id/rv_print_pay_type" />
<TextView
android:id="@+id/tv_thank_you_text"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="@dimen/dp_5"
android:gravity="center"
android:text="Thank you!"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/line_pay_type" />
<TextView
android:id="@+id/tv_checkout_time"
style="@style/Print_text_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="2020-01-09 上午 11:16:15"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_thank_you_text" />
<ImageView
android:id="@+id/iv_bar_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_50"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginRight="@dimen/dp_50"
app:layout_constraintTop_toBottomOf="@id/tv_checkout_time" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="dp_10">10dp</dimen>
<dimen name="dp_5">5dp</dimen>
<dimen name="dp_50">50dp</dimen>
</resources>
\ No newline at end of file
......@@ -11,4 +11,8 @@
<item name="android:windowBackground">@color/transparent</item><!--背景透明-->
<item name="android:backgroundDimEnabled">true</item><!--背景遮罩效果-->
</style>
<style name="Print_text_style">
<item name="android:textColor">#333</item>
<item name="android:textSize">30sp</item>
</style>
</resources>
......@@ -21,7 +21,7 @@ public class PrinterDeviceBean implements Serializable {
@Id(autoincrement = true)
private Long dbid;
private int restaurantId;
private Integer restaurantId;
private String ip;
private int port;
private int type;
......@@ -30,26 +30,34 @@ public class PrinterDeviceBean implements Serializable {
public PrinterDeviceBean() {
}
@Generated(hash = 922136225)
public PrinterDeviceBean(int id, Long dbid, int restaurantId, String ip, int port,
int type) {
public PrinterDeviceBean(int id, Integer restaurantId, String ip, int port, int type) {
this.id = id;
this.dbid = dbid;
this.restaurantId = restaurantId;
this.ip = ip;
this.port = port;
this.type = type;
}
public PrinterDeviceBean(int id, int restaurantId, String ip, int port, int type) {
public PrinterDeviceBean(int id, String ip, int port, int type) {
this.id = id;
this.ip = ip;
this.port = port;
this.type = type;
}
public PrinterDeviceBean(Integer restaurantId, String ip, int port, int type) {
this.restaurantId = restaurantId;
this.ip = ip;
this.port = port;
this.type = type;
}
public PrinterDeviceBean(int restaurantId, String ip, int port, int type) {
@Generated(hash = 2111154422)
public PrinterDeviceBean(int id, Long dbid, Integer restaurantId, String ip, int port,
int type) {
this.id = id;
this.dbid = dbid;
this.restaurantId = restaurantId;
this.ip = ip;
this.port = port;
......@@ -72,12 +80,8 @@ public class PrinterDeviceBean implements Serializable {
this.dbid = dbid;
}
public int getRestaurantId() {
return this.restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
public Integer getRestaurantId() {
return restaurantId;
}
public String getIp() {
......@@ -103,4 +107,8 @@ public class PrinterDeviceBean implements Serializable {
public void setType(int type) {
this.type = type;
}
public void setRestaurantId(Integer restaurantId) {
this.restaurantId = restaurantId;
}
}
......@@ -26,7 +26,7 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
public static class Properties {
public final static Property Id = new Property(0, int.class, "id", false, "ID");
public final static Property Dbid = new Property(1, Long.class, "dbid", true, "_id");
public final static Property RestaurantId = new Property(2, int.class, "restaurantId", false, "RESTAURANT_ID");
public final static Property RestaurantId = new Property(2, Integer.class, "restaurantId", false, "RESTAURANT_ID");
public final static Property Ip = new Property(3, String.class, "ip", false, "IP");
public final static Property Port = new Property(4, int.class, "port", false, "PORT");
public final static Property Type = new Property(5, int.class, "type", false, "TYPE");
......@@ -47,7 +47,7 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
db.execSQL("CREATE TABLE " + constraint + "\"PRINTER_DEVICE_BEAN\" (" + //
"\"ID\" INTEGER NOT NULL ," + // 0: id
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 1: dbid
"\"RESTAURANT_ID\" INTEGER NOT NULL ," + // 2: restaurantId
"\"RESTAURANT_ID\" INTEGER," + // 2: restaurantId
"\"IP\" TEXT," + // 3: ip
"\"PORT\" INTEGER NOT NULL ," + // 4: port
"\"TYPE\" INTEGER NOT NULL );"); // 5: type
......@@ -68,7 +68,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
if (dbid != null) {
stmt.bindLong(2, dbid);
}
stmt.bindLong(3, entity.getRestaurantId());
Integer restaurantId = entity.getRestaurantId();
if (restaurantId != null) {
stmt.bindLong(3, restaurantId);
}
String ip = entity.getIp();
if (ip != null) {
......@@ -87,7 +91,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
if (dbid != null) {
stmt.bindLong(2, dbid);
}
stmt.bindLong(3, entity.getRestaurantId());
Integer restaurantId = entity.getRestaurantId();
if (restaurantId != null) {
stmt.bindLong(3, restaurantId);
}
String ip = entity.getIp();
if (ip != null) {
......@@ -107,7 +115,7 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
PrinterDeviceBean entity = new PrinterDeviceBean( //
cursor.getInt(offset + 0), // id
cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1), // dbid
cursor.getInt(offset + 2), // restaurantId
cursor.isNull(offset + 2) ? null : cursor.getInt(offset + 2), // restaurantId
cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // ip
cursor.getInt(offset + 4), // port
cursor.getInt(offset + 5) // type
......@@ -119,7 +127,7 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
public void readEntity(Cursor cursor, PrinterDeviceBean entity, int offset) {
entity.setId(cursor.getInt(offset + 0));
entity.setDbid(cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1));
entity.setRestaurantId(cursor.getInt(offset + 2));
entity.setRestaurantId(cursor.isNull(offset + 2) ? null : cursor.getInt(offset + 2));
entity.setIp(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3));
entity.setPort(cursor.getInt(offset + 4));
entity.setType(cursor.getInt(offset + 5));
......
......@@ -9,7 +9,7 @@
<!--App主色调-->
<!-- <color name="theme_color">#BF1C42</color>-->
<color name="theme_color">#398BED</color>
<color name="theme_color">#0099CC</color>
<color name="normal_color">#333333</color>
<color name="theme_white_color">#FFFFFFFF</color>
......
......@@ -2,13 +2,16 @@ package com.gingersoft.gsa.cloud.table.mvp.presenter;
import android.app.Application;
import android.content.Intent;
import android.graphics.Bitmap;
import android.widget.BaseAdapter;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.OrderBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableContract;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.PrintUtils;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
......@@ -173,7 +176,8 @@ public class MealStandPresenter extends BasePresenter<MealStandContract.Model, M
public void onNext(@NonNull BaseResult info) {
if (info != null && info.isSuccess()) {
mRootView.showMessage("送單成功");
IActivity.returnTableActivity(true);
printSendOrder(MyOrderManage.getInstance().getOrderFoodList());
// IActivity.returnTableActivity(true);
} else {
mRootView.showMessage("送單失敗");
}
......@@ -243,7 +247,7 @@ public class MealStandPresenter extends BasePresenter<MealStandContract.Model, M
if (info != null && info.isSuccess()) {
mRootView.showMessage("送單成功");
// mRootView.launchActivity(new Intent(IActivity, MealStandActivity.class));
mRootView.killMyself();
printSendOrder(newFoods);
} else {
mRootView.showMessage("送單失敗");
}
......@@ -251,6 +255,23 @@ public class MealStandPresenter extends BasePresenter<MealStandContract.Model, M
});
}
/**
* 打印上菜紙
*/
private void printSendOrder(List<Food> newFoods) {
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam("NewFoods", newFoods)
.addParam("type", 0)
.build()
.callAsync((cc, result) -> {
if (result.isSuccess()) {
//打印成功
mRootView.killMyself();
}
});
}
public void deleteFood(long id) {
RequestBody requestBody = new FormBody.Builder()
......
......@@ -17,6 +17,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableContract;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.PrintUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.database.bean.Food;
......@@ -119,7 +120,18 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
sendOrder();
break;
case 1:
printOrder(OpenTableContract.getDefault().getTableBean().getId());
// printOrder(OpenTableContract.getDefault().getTableBean().getId());
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam("type", 1)//印單
.build()
.callAsync((cc, result) -> {
if (result.isSuccess()) {
//打印成功
mRootView.printSuccess();
}
});
//打印
break;
case 2:
//結賬
......@@ -219,6 +231,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
if (info != null && info.isSuccess()) {
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam("type", 1)//印單
.build()
.callAsync((cc, result) -> {
if (result.isSuccess()) {
......
......@@ -3,13 +3,15 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.billy.cc.core.component.CC;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableContract;
import com.gingersoft.gsa.cloud.base.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.base.utils.PrintUtils;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.base.utils.view.ViewUtils;
......@@ -17,7 +19,7 @@ import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.di.component.DaggerOrderPayComponent;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderPayContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BillMethodBean;
import com.gingersoft.gsa.cloud.base.common.bean.BillMethodBean;
import com.gingersoft.gsa.cloud.table.mvp.presenter.OrderPayPresenter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillMethodAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BillMoneyAdapter;
......@@ -92,7 +94,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
//尚欠金額
private double ownMoney;
private List<BillMethodBean> billMoney;
private List<BillMethodBean> billMoney = new ArrayList<>();
private BillMoneyAdapter billMoneyAdapter;
@Override
......@@ -152,7 +154,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
public void initBillMethod() {
rvPay.setLayoutManager(new GridLayoutManager(mContext, 4));
//每一種結賬方式的金額
billMoney = new ArrayList<>();
//結賬方式
List<BillMethodBean> data = new ArrayList<>();
data.add(new BillMethodBean(1, "現金"));
......@@ -287,11 +288,24 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
@Override
public void paySuccess() {
//修改結賬方式數據
MyOrderManage.getInstance().setBillMoney(billMoney);
if (OpenTableContract.getDefault() != null) {
//通知更新餐台状态
EventBus.getDefault().post(OpenTableContract.getDefault().getTableBean().getId(), "initTable_status_event");
}
showMessage("支付成功");
//打印結賬單
CC.obtainBuilder("Component.Print")
.setActionName("printActivity")
.addParam("type", 2)
.build()
.callAsync((cc, result) -> {
if (result.isSuccess()) {
//打印成功
}
});
setResult(Activity.RESULT_OK, null);
killMyself();
}
......
......@@ -3,7 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.adapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BillMethodBean;
import com.gingersoft.gsa.cloud.base.common.bean.BillMethodBean;
import java.util.List;
......
......@@ -5,7 +5,7 @@ import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BillMethodBean;
import com.gingersoft.gsa.cloud.base.common.bean.BillMethodBean;
import java.util.List;
......
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