Commit 9d9f4fd6 by Wyh

7.25 修改打印邏輯,USB打印調通,打印機加上預設值

Signed-off-by: Wyh <1239658231>
parent 01a85f27
......@@ -187,6 +187,10 @@ public class OrderBean {
*/
private String printSetIng;
/**
* 廚房單打印主項
*/
private long ktPrintMainItem;
/**
* 是否参与折扣#0:不參與;1:參與;
*/
private long ablediscount;
......@@ -194,7 +198,22 @@ public class OrderBean {
private Long discountId;
/**折扣實體*/
private RestaurantDiscountVO restaurantDiscountVO;
/**
* 0=系統顏色, 1=黑色, 2=紅色
*/
private long printFont;
/**
* 當金額=0時, 是否打印在帳單上
*/
private long printToBill;
/**
* 0食品清单打印 账单打印//1食品清单不打印 账单不打印//2食品清单打印 账单不打印//3食品清单不打印 账单打印
*/
private long printTo;
/**
* 是否打印价格
*/
private long ktShowPrice;
/**
* 自定義字段
*/
......@@ -204,6 +223,9 @@ public class OrderBean {
private long topId;
private long memberId;
public OrderDetailsBean() {
}
......@@ -323,6 +345,14 @@ public class OrderBean {
this.printSetIng = printSetIng;
}
public long getKtPrintMainItem() {
return ktPrintMainItem;
}
public void setKtPrintMainItem(long ktPrintMainItem) {
this.ktPrintMainItem = ktPrintMainItem;
}
public long getAblediscount() {
return ablediscount;
}
......@@ -347,6 +377,38 @@ public class OrderBean {
this.topId = topId;
}
public long getPrintFont() {
return printFont;
}
public void setPrintFont(long printFont) {
this.printFont = printFont;
}
public long getPrintToBill() {
return printToBill;
}
public void setPrintToBill(long printToBill) {
this.printToBill = printToBill;
}
public long getPrintTo() {
return printTo;
}
public void setPrintTo(long printTo) {
this.printTo = printTo;
}
public long getKtShowPrice() {
return ktShowPrice;
}
public void setKtShowPrice(long ktShowPrice) {
this.ktShowPrice = ktShowPrice;
}
public RestaurantDiscountVO getRestaurantDiscountVO() {
return restaurantDiscountVO;
}
......
......@@ -206,6 +206,23 @@ public class OrderDetail implements Serializable {
* 廚房單打印主項
*/
private long ktPrintMainItem;
/**
* 0=系統顏色, 1=黑色, 2=紅色
*/
private long printFont;
/**
* 當金額=0時, 是否打印在帳單上
*/
private long printToBill;
/**
* 0食品清单打印 账单打印//1食品清单不打印 账单不打印//2食品清单打印 账单不打印//3食品清单不打印 账单打印
*/
private long printTo;
/**
* 是否打印价格
*/
private long ktShowPrice;
public OrderDetail() {
}
......@@ -625,6 +642,38 @@ public class OrderDetail implements Serializable {
this.currentMaxNumber = currentMaxNumber;
}
public long getPrintFont() {
return printFont;
}
public void setPrintFont(long printFont) {
this.printFont = printFont;
}
public long getPrintToBill() {
return printToBill;
}
public void setPrintToBill(long printToBill) {
this.printToBill = printToBill;
}
public long getPrintTo() {
return printTo;
}
public void setPrintTo(long printTo) {
this.printTo = printTo;
}
public long getKtShowPrice() {
return ktShowPrice;
}
public void setKtShowPrice(long ktShowPrice) {
this.ktShowPrice = ktShowPrice;
}
/**
* 已送單食品轉換
*
......@@ -653,6 +702,11 @@ public class OrderDetail implements Serializable {
orderDetail.setVisible(orderDetailsBean.getStatus() == 0);
orderDetail.setPrintseting(orderDetailsBean.getPrintSetIng());
// orderDetail.setAutomod(foods.getAutomod());
orderDetail.setKtPrintMainItem(orderDetailsBean.getKtPrintMainItem());
orderDetail.setPrintFont(orderDetailsBean.getPrintFont());
orderDetail.setPrintToBill(orderDetailsBean.getPrintToBill());
orderDetail.setPrintTo(orderDetail.getPrintTo());
orderDetail.setKtShowPrice(orderDetail.getKtShowPrice());
orderDetail.setIsfood(orderDetailsBean.getType() == FOOD_TYPE);
orderDetail.setNew(false);
orderDetail.setType(orderDetailsBean.getType());
......
......@@ -305,7 +305,6 @@ public class Food {
@Property(nameInDb = "FID")
@Id(autoincrement = true)
private Long id;
/**
* 上級ID (如0=最高級)
*/
......
......@@ -28,10 +28,10 @@ public class DaoMaster extends AbstractDaoMaster {
FoodComboDao.createTable(db, ifNotExists);
FoodModifierDao.createTable(db, ifNotExists);
FunctionDao.createTable(db, ifNotExists);
LanguageDao.createTable(db, ifNotExists);
ModifierDao.createTable(db, ifNotExists);
PrinterDeviceBeanDao.createTable(db, ifNotExists);
PrintModelBeanDao.createTable(db, ifNotExists);
LanguageDao.createTable(db, ifNotExists);
PrintCurrencyBeanDao.createTable(db, ifNotExists);
}
......@@ -44,10 +44,10 @@ public class DaoMaster extends AbstractDaoMaster {
FoodComboDao.dropTable(db, ifExists);
FoodModifierDao.dropTable(db, ifExists);
FunctionDao.dropTable(db, ifExists);
LanguageDao.dropTable(db, ifExists);
ModifierDao.dropTable(db, ifExists);
PrinterDeviceBeanDao.dropTable(db, ifExists);
PrintModelBeanDao.dropTable(db, ifExists);
LanguageDao.dropTable(db, ifExists);
PrintCurrencyBeanDao.dropTable(db, ifExists);
}
......@@ -74,10 +74,10 @@ public class DaoMaster extends AbstractDaoMaster {
registerDaoClass(FoodComboDao.class);
registerDaoClass(FoodModifierDao.class);
registerDaoClass(FunctionDao.class);
registerDaoClass(LanguageDao.class);
registerDaoClass(ModifierDao.class);
registerDaoClass(PrinterDeviceBeanDao.class);
registerDaoClass(PrintModelBeanDao.class);
registerDaoClass(LanguageDao.class);
registerDaoClass(PrintCurrencyBeanDao.class);
}
......
......@@ -15,10 +15,10 @@ import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.bean.FoodCombo;
import com.gingersoft.gsa.cloud.database.bean.FoodModifier;
import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.database.bean.Language;
import com.gingersoft.gsa.cloud.database.bean.Modifier;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.database.bean.PrintModelBean;
import com.gingersoft.gsa.cloud.database.bean.Language;
import com.gingersoft.gsa.cloud.database.bean.PrintCurrencyBean;
import com.gingersoft.gsa.cloud.database.greendao.ComboItemDao;
......@@ -28,10 +28,10 @@ import com.gingersoft.gsa.cloud.database.greendao.FoodDao;
import com.gingersoft.gsa.cloud.database.greendao.FoodComboDao;
import com.gingersoft.gsa.cloud.database.greendao.FoodModifierDao;
import com.gingersoft.gsa.cloud.database.greendao.FunctionDao;
import com.gingersoft.gsa.cloud.database.greendao.LanguageDao;
import com.gingersoft.gsa.cloud.database.greendao.ModifierDao;
import com.gingersoft.gsa.cloud.database.greendao.PrinterDeviceBeanDao;
import com.gingersoft.gsa.cloud.database.greendao.PrintModelBeanDao;
import com.gingersoft.gsa.cloud.database.greendao.LanguageDao;
import com.gingersoft.gsa.cloud.database.greendao.PrintCurrencyBeanDao;
// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
......@@ -50,10 +50,10 @@ public class DaoSession extends AbstractDaoSession {
private final DaoConfig foodComboDaoConfig;
private final DaoConfig foodModifierDaoConfig;
private final DaoConfig functionDaoConfig;
private final DaoConfig languageDaoConfig;
private final DaoConfig modifierDaoConfig;
private final DaoConfig printerDeviceBeanDaoConfig;
private final DaoConfig printModelBeanDaoConfig;
private final DaoConfig languageDaoConfig;
private final DaoConfig printCurrencyBeanDaoConfig;
private final ComboItemDao comboItemDao;
......@@ -63,10 +63,10 @@ public class DaoSession extends AbstractDaoSession {
private final FoodComboDao foodComboDao;
private final FoodModifierDao foodModifierDao;
private final FunctionDao functionDao;
private final LanguageDao languageDao;
private final ModifierDao modifierDao;
private final PrinterDeviceBeanDao printerDeviceBeanDao;
private final PrintModelBeanDao printModelBeanDao;
private final LanguageDao languageDao;
private final PrintCurrencyBeanDao printCurrencyBeanDao;
public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig>
......@@ -94,9 +94,6 @@ public class DaoSession extends AbstractDaoSession {
functionDaoConfig = daoConfigMap.get(FunctionDao.class).clone();
functionDaoConfig.initIdentityScope(type);
languageDaoConfig = daoConfigMap.get(LanguageDao.class).clone();
languageDaoConfig.initIdentityScope(type);
modifierDaoConfig = daoConfigMap.get(ModifierDao.class).clone();
modifierDaoConfig.initIdentityScope(type);
......@@ -106,6 +103,9 @@ public class DaoSession extends AbstractDaoSession {
printModelBeanDaoConfig = daoConfigMap.get(PrintModelBeanDao.class).clone();
printModelBeanDaoConfig.initIdentityScope(type);
languageDaoConfig = daoConfigMap.get(LanguageDao.class).clone();
languageDaoConfig.initIdentityScope(type);
printCurrencyBeanDaoConfig = daoConfigMap.get(PrintCurrencyBeanDao.class).clone();
printCurrencyBeanDaoConfig.initIdentityScope(type);
......@@ -116,10 +116,10 @@ public class DaoSession extends AbstractDaoSession {
foodComboDao = new FoodComboDao(foodComboDaoConfig, this);
foodModifierDao = new FoodModifierDao(foodModifierDaoConfig, this);
functionDao = new FunctionDao(functionDaoConfig, this);
languageDao = new LanguageDao(languageDaoConfig, this);
modifierDao = new ModifierDao(modifierDaoConfig, this);
printerDeviceBeanDao = new PrinterDeviceBeanDao(printerDeviceBeanDaoConfig, this);
printModelBeanDao = new PrintModelBeanDao(printModelBeanDaoConfig, this);
languageDao = new LanguageDao(languageDaoConfig, this);
printCurrencyBeanDao = new PrintCurrencyBeanDao(printCurrencyBeanDaoConfig, this);
registerDao(ComboItem.class, comboItemDao);
......@@ -129,10 +129,10 @@ public class DaoSession extends AbstractDaoSession {
registerDao(FoodCombo.class, foodComboDao);
registerDao(FoodModifier.class, foodModifierDao);
registerDao(Function.class, functionDao);
registerDao(Language.class, languageDao);
registerDao(Modifier.class, modifierDao);
registerDao(PrinterDeviceBean.class, printerDeviceBeanDao);
registerDao(PrintModelBean.class, printModelBeanDao);
registerDao(Language.class, languageDao);
registerDao(PrintCurrencyBean.class, printCurrencyBeanDao);
}
......@@ -144,10 +144,10 @@ public class DaoSession extends AbstractDaoSession {
foodComboDaoConfig.clearIdentityScope();
foodModifierDaoConfig.clearIdentityScope();
functionDaoConfig.clearIdentityScope();
languageDaoConfig.clearIdentityScope();
modifierDaoConfig.clearIdentityScope();
printerDeviceBeanDaoConfig.clearIdentityScope();
printModelBeanDaoConfig.clearIdentityScope();
languageDaoConfig.clearIdentityScope();
printCurrencyBeanDaoConfig.clearIdentityScope();
}
......@@ -179,10 +179,6 @@ public class DaoSession extends AbstractDaoSession {
return functionDao;
}
public LanguageDao getLanguageDao() {
return languageDao;
}
public ModifierDao getModifierDao() {
return modifierDao;
}
......@@ -195,6 +191,10 @@ public class DaoSession extends AbstractDaoSession {
return printModelBeanDao;
}
public LanguageDao getLanguageDao() {
return languageDao;
}
public PrintCurrencyBeanDao getPrintCurrencyBeanDao() {
return printCurrencyBeanDao;
}
......
......@@ -335,6 +335,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
}, {
listener.invoke(OrderDelivery, false)
it.printStackTrace()
Log.e("eee", "gsUpdateOrderStatus報錯:" + it.message)
// integralBean.postValue(null)
})
}
......@@ -473,7 +474,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
//調用第三方物流接口
repository.thirdDelivery(dataBean.ID.toString(), third).apply {
if (success) {
listener.invoke(OrderDelivery, true)
// listener.invoke(OrderDelivery, true)
updateOrderAndPrint(restaurantId, dataBean, status, listener)
} else {
listener.invoke(OrderDelivery, false)
......@@ -529,6 +530,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
}
}, {
it.printStackTrace()
Log.e("eee", "confirmBtn報錯:" + it.message)
})
} else {
ToastUtils.show(context, "請至少選擇一個送貨員")
......
......@@ -149,14 +149,14 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model,
.add("modifierIsBold", printerDeviceBean.getModifierIsBold() + "")
.add("modifierFont", printerDeviceBean.getModifierFont() + "")
.add("modifierIsItalic", printerDeviceBean.getModifierIsItalic() + "")
.add("numberIsFlip", printerDeviceBean.getNumberIsFlip() + "");
.add("numberIsFlip", printerDeviceBean.getNumberIsFlip() + "")
.add("printerDeviceType", printerDeviceBean.getPrinterDeviceType() + "");
if (printerDeviceBean.getFlyPrinterDeviceId() != null) {
builder.add("flyPrinterDeviceId", printerDeviceBean.getFlyPrinterDeviceId() + "");
}
if (printerDeviceBean.getFlyPrinterDeviceId2() != null) {
builder.add("flyPrinterDeviceId2", printerDeviceBean.getFlyPrinterDeviceId2() + "");
}
return builder.build();
}
......
......@@ -18,15 +18,11 @@ 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.mealManage.MyOrderManage;
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.constans.AppConstans;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.joe.print.R;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -81,6 +77,9 @@ public class PrintSlip extends PrinterRoot {
TextView line_food_info = view.findViewById(R.id.line_food_info);
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
brandName.setText(GsaCloudApplication.getBrandName(context));
restaurantName.setText(GsaCloudApplication.getRestaurantName(context));
tableNum.setText(tableBean.getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
......
......@@ -21,11 +21,10 @@ import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.database.utils.PrinterDeviceDaoUtils;
import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.joe.print.mvp.model.bean.PrintInfoBean;
import com.joe.print.mvp.model.bean.PrjBean;
import com.joe.print.mvp.print.EpsonPrint;
import com.joe.print.mvp.print.PrintPrjKitchen;
import com.joe.print.mvp.print.PrinterRoot;
import com.joe.print.mvp.print.usb.UsbPrinterFinder;
import com.joe.print.mvp.print.utils.MyPrintUtils;
import org.json.JSONArray;
......@@ -62,6 +61,12 @@ public class PrjService extends Service implements PrintSocketHolder.OnStateChan
private List<PrintCurrencyBean> printCurrencyBeans;//通用打印配置
@Override
public void onCreate() {
super.onCreate();
initUsbPrint();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("eee", "開啟打印服務");
getPrintList();
......@@ -70,6 +75,12 @@ public class PrjService extends Service implements PrintSocketHolder.OnStateChan
return super.onStartCommand(intent, flags, startId);
}
public void initUsbPrint() {
//開啟監聽USB連接
UsbPrinterFinder printerFinder = new UsbPrinterFinder(this, null);
printerFinder.startFinder();
}
private void getPrintList() {
if (printerDeviceBeans == null || printerDeviceBeans.size() == 0) {
PrinterDeviceDaoUtils printerDeviceDaoUtils = new PrinterDeviceDaoUtils(this);
......
......@@ -54,6 +54,16 @@ public class EscCommand {
}
/**
* 添加空行
*
* @param n 行数
*/
public byte[] getPrintAndFeedLines(byte n) {
return new byte[]{27, 100, n};
}
/**
* 切纸命令
*/
public void addCutPaper() {
......@@ -61,11 +71,22 @@ public class EscCommand {
this.addArrayToCommand(bytes);
}
/**
* 切纸命令
*/
public byte[] getCutPaper() {
return new byte[]{(byte) 29, (byte) 86, (byte) 0};
}
public void addCleanCache() {
byte[] bytes = {(byte) 27, (byte) 74, (byte) 0};
this.addArrayToCommand(bytes);
}
public byte[] getCleanCache() {
return new byte[]{(byte) 27, (byte) 74, (byte) 0};
}
//0 居左 1居中 2居右
public void addSelectJustification(int just) {
byte[] command = new byte[]{27, 97, (byte) just};
......
......@@ -5,40 +5,42 @@ import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbManager;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import com.joe.print.mvp.print.common.SendCallback;
import com.joe.print.mvp.print.common.SendResultCode;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class UsbPrint {
private static UsbPrint INSTANCE;
// private UsbPrint INSTANCE;
private final UsbManager usbManager;
private SendCallback sendCallback;
private final ExecutorService threadPool;
private MyHandler myHandler;
private UsbPrint(Context context, SendCallback sendCallback) {
public UsbPrint(Context context, SendCallback sendCallback) {
this.usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
this.sendCallback = sendCallback;
this.threadPool = Executors.newFixedThreadPool(3);
this.myHandler = new MyHandler(this);
}
public static UsbPrint getInstance(Context context, SendCallback sendCallback) {
if (INSTANCE == null) {
synchronized (UsbPrint.class) {
if (INSTANCE == null) {
INSTANCE = new UsbPrint(context, sendCallback);
}
}
}
return INSTANCE;
}
// public static UsbPrint getInstance(Context context, SendCallback sendCallback) {
// if (INSTANCE == null) {
// synchronized (UsbPrint.class) {
// if (INSTANCE == null) {
// INSTANCE = new UsbPrint(context, sendCallback);
// }
// }
// }
// return INSTANCE;
// }
public void sendPrintCommand(UsbPrinter printer, byte[] bytes) {
public void sendPrintCommand(UsbPrinter printer, ArrayList<byte[]> bytes) {
if (printer == null || printer.getUsbDevice() == null) {
return;
}
......@@ -49,9 +51,9 @@ public class UsbPrint {
private class SendCommandThread extends Thread {
private UsbManager usbManager;
private UsbPrinter usbPrinter;
private byte[] bytes;
private ArrayList<byte[]> bytes;
public SendCommandThread(UsbManager usbManager, UsbPrinter usbPrinter, byte[] bytes) {
public SendCommandThread(UsbManager usbManager, UsbPrinter usbPrinter, ArrayList<byte[]> bytes) {
this.usbManager = usbManager;
this.usbPrinter = usbPrinter;
this.bytes = bytes;
......@@ -62,11 +64,18 @@ public class UsbPrint {
super.run();
UsbDeviceConnection connection = usbManager.openDevice(usbPrinter.getUsbDevice());
if (connection != null && connection.claimInterface(usbPrinter.getUsbInterface(), true)) {
int result = connection.bulkTransfer(usbPrinter.getUsbOut(), bytes, bytes.length, 500);
int result = 0;
for (int i = 0; i < bytes.size(); i++) {
result = connection.bulkTransfer(usbPrinter.getUsbOut(), bytes.get(i), bytes.get(i).length, 5000);
}
connection.close();
int sendResultCode = result > 0 ? SendResultCode.SEND_SUCCESS : SendResultCode.SEND_FAILED;
Log.e("ddd", "發送結果" + sendResultCode);
sendMessage(sendResultCode, usbPrinter.getPrinterName());
} else {
Log.e("ddd", "連接失敗");
}
}
}
......
......@@ -88,7 +88,6 @@ public class UsbPrinterFinder {
if (!isUsbPrinter(usbDevice)) {
continue;
}
if (usbManager.hasPermission(usbDevice)) {
UsbPrinter usbPrinter = getUsbPrinter(usbDevice);
if (usbPrinter != null) {
......@@ -98,7 +97,6 @@ public class UsbPrinterFinder {
}
Log.d(TAG, "hasPermission add " + usbPrinter.getPrinterName());
}
} else {
usbManager.requestPermission(usbDevice, usbPermissionIntent);
Log.d(TAG, "requestPermission " + usbDevice.getDeviceName());
......
......@@ -25,14 +25,12 @@ import androidx.recyclerview.widget.RecyclerView;
import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.base.widget.DialogUtils;
import com.gingersoft.gsa.cloud.constans.PrintConstans;
import com.gingersoft.gsa.cloud.database.bean.PrintCurrencyBean;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.database.utils.PrinterDeviceDaoUtils;
import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.jess.arms.base.BaseActivity;
......@@ -43,18 +41,9 @@ import com.joe.print.di.component.DaggerPrintComponent;
import com.joe.print.mvp.contract.PrintContract;
import com.joe.print.mvp.presenter.PrintPresenter;
import com.joe.print.mvp.print.OpenCashBoxMaker;
import com.joe.print.mvp.print.PrintBill;
import com.joe.print.mvp.print.PrintCleanMachine;
import com.joe.print.mvp.print.PrintInstruction;
import com.joe.print.mvp.print.PrintListener;
import com.joe.print.mvp.print.PrintOtherOrder;
import com.joe.print.mvp.print.PrintOtherOrderClosing;
import com.joe.print.mvp.print.PrintPrjKitchen;
import com.joe.print.mvp.print.PrintServe;
import com.joe.print.mvp.print.PrintSlip;
import com.joe.print.mvp.print.PrintTest;
import com.joe.print.mvp.print.PrinterRoot;
import com.joe.print.mvp.print.utils.MyPrintUtils;
import com.joe.print.mvp.ui.adapter.DialogPrinterListAdapter;
import com.yanzhenjie.recyclerview.widget.DefaultItemDecoration;
......@@ -84,7 +73,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* ----網絡打印
* ----獲取網絡打印機列表
*/
public class PrintActivity extends BaseActivity<PrintPresenter> implements PrintContract.View, DialogInterface.OnDismissListener, PrintListener {
public class PrintActivity extends BaseActivity<PrintPresenter> implements PrintContract.View, DialogInterface.OnDismissListener, PrintListener, PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener {
public final static int ADD_PRINT_CODE = 1001;//添加打印機回調
public final static int DIMISS_LOADING = 1002;//關閉加載窗
......@@ -99,7 +88,15 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
private Dialog mLoadingDialog;
private TextView mTvLoadingTip;
/**
* 0:上菜紙
* 1:印單
* 2:結賬單
* 3:廚房單
* 4:打印view
* 5:打印外賣接單
* 6:其他指令
*/
private int type;
private boolean isShowDialog;
......@@ -125,21 +122,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
public void initData(@Nullable Bundle savedInstanceState) {
callId = CCUtil.getNavigateCallId(this);
//獲取打印類型,根據打印類型生成對應的bitmap
/**
* 0:上菜紙
* 1:印單
* 2:結賬單
* 3:廚房單
* 4:打印view
* 5:打印外賣接單
* 6:其他指令
*/
type = CCUtil.getNavigateParam(this, PRINT_TYPE, -1);
isShowDialog = CCUtil.getNavigateParam(this, PrintConstans.PRINT_LOADING, true);
printerInIt = PrinterRoot.getPrinterByType(type);
if (printerInIt != null) {
printerInIt.setmContext(mContext).setPrintListener(this);
printerInIt.setmContext(mContext).setPrintListener(this).initUsbPrint();
}
// PrinterDeviceDaoUtils printerDeviceDaoUtils = new PrinterDeviceDaoUtils(this);
......@@ -227,23 +216,32 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
initDialog();
}
//獲取對應的打印類
printerInIt = mPresenter.getPrinterByType(type);
if (printerInIt instanceof PrintInstruction) {
//開錢箱
PrintExecutor executor = new PrintExecutor(defaultPrint);
executor.doPrinterRequestAsync(new OpenCashBoxMaker());
} else {
//先在這裡壓縮,之後在每個類自己生成的時候壓縮
List<Bitmap> bitmaps = printerInIt.getPrintBitmap(mContext, defaultPrint).get("");
if (bitmaps != null && bitmaps.size() > 0) {
List<Bitmap> zoomBitmaps = new ArrayList<>();
if (bitmaps == null || bitmaps.size() <= 0) {
printFile();
return;
}
for (Bitmap bitmap : bitmaps) {
Bitmap zoomBitmap = printerInIt.zoomBitmap(defaultPrint, bitmap);
zoomBitmaps.add(zoomBitmap);
}
if (zoomBitmaps.size() > 0) {
if (defaultPrint.getPrinterDeviceType() == 1) {
//IP打印
printerInIt.ipDevicePrint(defaultPrint, bitmaps);
printerInIt.ipDevicePrint(defaultPrint, zoomBitmaps);
} else if (defaultPrint.getPrinterDeviceType() == 2) {
//本地N5或Sunmi打印
printerInIt.locationPrint(bitmaps, this);
printerInIt.locationPrint(zoomBitmaps, this);
} else if (defaultPrint.getPrinterDeviceType() == 3) {
//USB打印打印
printerInIt.usbPrint(mContext, bitmaps);
printerInIt.usbPrint(mContext, zoomBitmaps);
} else {
ToastUtils.show(mContext, "未找到對應的打印類型");
finish();
......@@ -252,7 +250,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//打印失敗
Log.e("eee", "打印失敗,沒有生成對應的圖片");
finish();
}
}
}
......@@ -496,6 +493,9 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
protected void onDestroy() {
super.onDestroy();
disLoadingDialog();
if (printerInIt != null) {
printerInIt.onDestroy();
}
}
private void disLoadingDialog() {
......@@ -505,4 +505,16 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
}
});
}
@Override
public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
//ip打印狀態修改回調
}
@Override
public void onResult(int errorCode, PrinterDeviceBean printerDeviceBean) {
//ip打印結果回調
}
}
......@@ -147,6 +147,45 @@ public class PrintTestActivity extends AppCompatActivity implements PrintSocketH
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_print_test);
// PrinterDeviceBean printerDeviceBean = new PrinterDeviceBean("192.168.1.218", 9100, "400");
//
// OrderDetails orderDetails = JsonUtils.parseObject(json, OrderDetails.class);
// usbPrint = UsbPrint.getInstance(this, sendCallback);
UsbPrinterFinder printerFinder = new UsbPrinterFinder(this, printerFinderCallback);
printerFinder.startFinder();
PrintTest printTest = new PrintTest();
// printTest.getPrintBitmap(this);
// PrinterWriter printer = null;
Bitmap bitmap = ImageUtils.zoomDrawable(printTest.getTestPrintBitmap(this), 306);
// try {
// printer = new PrinterWriterExecutor(255, 400);
// } catch (IOException e) {
// e.printStackTrace();
// }
// ArrayList<byte[]> image1 = printer.getImageByte(printTest.getPrintBitmap(this).get("").get(0));//將bitmap縮放到打印機紙張大小再添加到集合中。
findViewById(R.id.btn_test).setOnClickListener(view -> {
//打印測試
// PrintExecutor executor = new PrintExecutor(printerDeviceBean);
// executor.setOnStateChangedListener(this);
// executor.setOnPrintResultListener(this);
// TestPrintMaker maker = null;
EscCommand esc = new EscCommand();
byte[] bytes = PrinterWriter.decodeBitmapToDataList(bitmap, 255);
if (bytes != null) {
esc.addArrayToCommand(bytes);
}
esc.addPrintAndFeedLines((byte)8);
esc.addCutPaper();
esc.addCleanCache();
// byte[] bytes = decodeBitmapToDataList(bitmap, 32);
// if (usbPrinters != null && usbPrinters.size() > 0) {
// usbPrint.sendPrintCommand(usbPrinters.get(0), esc.getByteArrayCommand());
// }
});
}
/**
......
......@@ -8,6 +8,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.joe.print.R;
import com.joe.print.mvp.ui.activity.PrinterAddActivity;
import java.util.List;
......@@ -25,7 +26,12 @@ public class DialogPrinterListAdapter extends BaseQuickAdapter<PrinterDeviceBean
@Override
protected void convert(BaseViewHolder helper, PrinterDeviceBean item) {
helper.setText(R.id.tv_printer_name, item.getName() + "");
if (item.getPrinterDeviceType() == 1) {
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() + ""));
} else {
helper.setText(R.id.tv_printer_ip, PrinterAddActivity.printTypes.get(item.getPrinterDeviceType() - 1));
}
// helper.setText(R.id.tv_printer_port, String.format(mContext.getString(R.string.print_port), item.getPort() + ""));
}
}
......@@ -10,6 +10,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.joe.print.R;
import com.joe.print.mvp.ui.activity.PrinterAddActivity;
import java.util.List;
......@@ -29,7 +30,11 @@ public class PrinterListAdapter extends BaseQuickAdapter<PrinterDeviceBean, Base
@Override
protected void convert(BaseViewHolder helper, PrinterDeviceBean item) {
helper.setText(R.id.tv_printer_name, item.getName() + "");
if (item.getIp() == null || item.getIp().length() == 0) {
helper.setText(R.id.tv_printer_ip, "" + PrinterAddActivity.printTypes.get(item.getPrinterDeviceType()-1));
} else {
helper.setText(R.id.tv_printer_ip, String.format(mContext.getString(R.string.print_ip), item.getIp()));
}
if (item.getPort() == null) {
helper.setText(R.id.tv_printer_port, String.format(mContext.getString(R.string.print_port), ""));
} else {
......
......@@ -41,10 +41,6 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* 本機打印配置頁
*/
public class LocalPrintFragment extends BaseFragment<LocalPrintPresenter> implements LocalPrintContract.View {
@BindView(R2.id.iv_location_print_btn)
Switch ivSetLocationPrintBtn;
@BindView(R2.id.layout_location_print)
LinearLayout mLayoutLocationPrint;
@BindView(R2.id.layout_currency_content)
LinearLayout currencyContent;
......@@ -72,32 +68,22 @@ public class LocalPrintFragment extends BaseFragment<LocalPrintPresenter> implem
public void onResume() {
super.onResume();
mPresenter.getPrinterCurrencyList(GsaCloudApplication.getRestaurantId(getActivity()));
initBtn();
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
mLayoutLocationPrint.setVisibility(PrintUtils.isPrintDevice() ? View.VISIBLE : View.GONE);
ivSetLocationPrintBtn.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
//修改默認打印方式為本地
SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.LOCAL_PRINT);
ivSetLocationPrintBtn.setChecked(true);
} else {
//如果默認打印方式為IP,修改為IP打印
SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.IP_PRINT);
ivSetLocationPrintBtn.setChecked(false);
}
});
}
private void initBtn() {
if (SPUtils.get(mContext, PrintConstans.DEFAULT_PRINT_METHOD, "").equals(PrintConstans.LOCAL_PRINT)) {
//如果默認打印方式為本地
ivSetLocationPrintBtn.setChecked(true);
} else {
ivSetLocationPrintBtn.setChecked(false);
}
// mLayoutLocationPrint.setVisibility(PrintUtils.isPrintDevice() ? View.VISIBLE : View.GONE);
// ivSetLocationPrintBtn.setOnCheckedChangeListener((buttonView, isChecked) -> {
// if (isChecked) {
// //修改默認打印方式為本地
// SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.LOCAL_PRINT);
// ivSetLocationPrintBtn.setChecked(true);
// } else {
// //如果默認打印方式為IP,修改為IP打印
// SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.IP_PRINT);
// ivSetLocationPrintBtn.setChecked(false);
// }
// });
}
/**
......
......@@ -4,28 +4,6 @@
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout_location_print"
style="@style/print_add_printer_input_style"
android:layout_width="match_parent"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
style="@style/print_add_title_textStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="默認本機打印" />
<Switch
android:id="@+id/iv_location_print_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:thumb="@drawable/shape_thumb_on"
android:track="@drawable/selector_switch_track" />
</LinearLayout>
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<LinearLayout
......
......@@ -41,7 +41,6 @@ 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.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.base.utils.encryption.Md5;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
......@@ -564,9 +563,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
Map<String, String> parameterMap = new HashMap<>();
parameterMap.put("type", "2");
parameterMap.put("parm", phone);
Md5 md5 = new Md5();
String sign = md5.getMD5ofStr(parameterMap);
mPresenter.queryMember(2,sign,GsaCloudApplication.getGsPosShopId(mContext));
// Md5 md5 = new Md5();
// String sign = md5.getMD5ofStr(parameterMap);
// mPresenter.queryMember(2,sign,GsaCloudApplication.getGsPosShopId(mContext));
}
@Override
......
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