Commit 7678dfd3 by 宁斌

1、打印流程日志埋点

parent 35f60e81
......@@ -105,6 +105,7 @@ class HistoryOrderViewModel(private val historyOrderRepository: HistoryOrderRepo
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_OTHER_ORDER)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO, TakeawayOrder.getInstance().shoppingCart.deliveryAndPickupData.ORDER_NO)
.setActionName("printActivity")
.build()
.callAsyncCallbackOnMainThread { _, result ->
......
......@@ -655,6 +655,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_OTHER_ORDER)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO, dataBean.ORDER_NO)
.setActionName("printActivity")
.build()
.callAsyncCallbackOnMainThread { _, result ->
......@@ -674,8 +675,9 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_OTHER_CLOSING)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO, dataBean.ORDER_NO)
.setActionName("printActivity")
.build()
.callAsyncCallbackOnMainThread { _, result ->
TakeawayOrder.getInstance().shoppingCart.deliveryAndPickupData = null
......
......@@ -246,17 +246,21 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
}
private void printPrj(List<PrjBean.DataBean.Bean> printDatas) {
String orderNo = "";
StringBuilder ids = new StringBuilder();
for (int i = 0; i < printDatas.size(); i++) {
printDatas.get(i).setTotalPrj(printDatas.size());
printDatas.get(i).setCurrentIndex(i);
ids.append(printDatas.get(i).getId());
PrjBean.DataBean.Bean prjBean = printDatas.get(i);
orderNo = prjBean.getOrderNo();
prjBean.setTotalPrj(printDatas.size());
prjBean.setCurrentIndex(i);
ids.append(prjBean.getId());
}
//添加重印的報警推送
OkHttp3Utils.noticePersonnel(AppConstans.RP_REPRINT_CODE, "重印,訂單號:" + printDatas.get(0).getOrderNo());
String finalIds = ids.toString();
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_KITCHEN)
.addParam(PrintConstans.PRINT_ORDER_NO, orderNo)
.addParam("prjBeans", printDatas)
.setActionName("printActivity")
.build()
......
......@@ -591,7 +591,8 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
showMessage("再按一次退出應用");
mExitTime = System.currentTimeMillis();
} else {
finish();
// finish();
ArmsUtils.exitApp();
// System.exit(0);
}
}
......
......@@ -377,6 +377,7 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO, mMealPayResultParam.getMealOrderPayRequest().getOrderId())
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess());
......
......@@ -33,7 +33,9 @@ import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils;
import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
......@@ -94,6 +96,7 @@ import static com.joe.print.mvp.print.common.HtmlContract.LABLE_P;
@Getter
public abstract class PrinterRoot<T extends PrintContent> implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener, ReceiveListener {
private final String TAG = getClass().getSimpleName();
@Inject
AppManager mAppManager;
protected final String MONETARY_UNIT = "$";
......@@ -436,29 +439,41 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
return ImageUtils.zoomDrawable(bitmap, printWidth);
}
@Override
public void onResult(int errorCode, PrinterDeviceBean printerDeviceBean) {
switch (errorCode) {
case PrintSocketHolder.ERROR_0:
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess(printerDeviceBean);
printSuccess();
break;
return;
case PrintSocketHolder.ERROR_1:
LoganManager.w_printer(TAG, "生成打印數據失敗");
printFailure("生成打印數據失敗");
break;
case PrintSocketHolder.ERROR_2:
LoganManager.w_printer(TAG, "連接打印機失敗");
printFailure("連接打印機失敗");
break;
case PrintSocketHolder.ERROR_3:
LoganManager.w_printer(TAG, "連接打印機失敗(获取输出流失败)");
printFailure("連接打印機失敗");
break;
case PrintSocketHolder.ERROR_4:
LoganManager.w_printer(TAG, "連接打印機失敗(写入页面数据失败)");
printFailure("連接打印機失敗");
break;
case PrintSocketHolder.ERROR_5:
LoganManager.w_printer(TAG, "連接打印機失敗(必要参数不能为空)");
printFailure("連接打印機失敗");
break;
case PrintSocketHolder.ERROR_6:
LoganManager.w_printer(TAG, "关闭Socket出错");
break;
case PrintSocketHolder.ERROR_100:
LoganManager.w_printer(TAG, "打印失败");
break;
}
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(errorCode, printerDeviceBean);
setPrintState(errorCode);
}
......
package com.joe.print.mvp.print.service;
import android.app.IntentService;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
......@@ -23,8 +22,7 @@ import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.user.UserContext;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrintPaperPlugins;
import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.common.utils.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
......@@ -32,20 +30,17 @@ import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil;
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.gingersoft.gsa.cloud.print.PrinterWriter58mm;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.PrjBean;
import com.gingersoft.gsa.cloud.print.bean.UpdateBean;
import com.hyweb.n5.lib.constant.PrinterConstant;
import com.hyweb.n5.lib.util.PrinterUtil;
import com.hyweb.n5.server.aidl.IOnPrintCallback;
import com.jess.arms.utils.RxLifecycleUtils;
import com.joe.print.mvp.print.PrintPrjKitchen;
import com.joe.print.mvp.print.PrinterRoot;
import com.joe.print.mvp.print.common.PrinterFinderCallback;
......@@ -57,14 +52,11 @@ import com.joe.print.mvp.print.usb.UsbPrinter;
import com.joe.print.mvp.print.usb.UsbPrinterFinder;
import com.joe.print.mvp.print.utils.MyPrintUtils;
import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
......@@ -73,13 +65,13 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream;
......@@ -112,6 +104,7 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public void onCreate() {
super.onCreate();
LoganManager.w_printer(TAG, "onCreate");
mContext = this;
initUsbPrint();
}
......@@ -119,8 +112,8 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mContext = this;
LoganManager.w_printer(TAG, "onStartCommand");
ThreadPoolManager.getInstence().putExecutableTasks(() -> {
LoganManager.w_printer(TAG, "currentThreadName: " + Thread.currentThread().getName());
LoganManager.w_printer(TAG, "開始請求 PRJ 數據");
getPrintList();
//開始請求
......@@ -129,6 +122,12 @@ public class PrjService extends Service implements ReceiveListener {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
LoganManager.w_printer(TAG, "onDestroy");
}
private UsbPrinterFinder printerFinder;
private List<UsbPrinter> mUsbPrinters;
......@@ -215,7 +214,6 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public void onSubscribe(Disposable d) {
LoganManager.w_printer(TAG, "RxCurrentThreadName: " + Thread.currentThread().getName());
LoganManager.w_printer(TAG, "getPrjInfo onSubscribe");
}
......@@ -534,7 +532,7 @@ public class PrjService extends Service implements ReceiveListener {
if (beans.size() > 0) {
orderType = beans.get(0).getOrderType();
}
PrintPaperPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(orderType, GsonUtils.GsonString(beans), GsonUtils.GsonString(printerDeviceBean));
PrinterPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(orderType, PrintConstans.PRINT_KITCHEN, GsonUtils.GsonString(beans), GsonUtils.GsonString(printerDeviceBean));
if (isPinPrinter(printerDeviceBean) && printerDeviceBean.getPrinterDeviceType() == PRINT_IP) {
//針式打印機並且打印機類型為IP打印,生成獨特的格式
......@@ -733,13 +731,9 @@ public class PrjService extends Service implements ReceiveListener {
switch (errorCode) {
case PrintSocketHolder.ERROR_0:
//更新狀態
LoganManager.w_printer(TAG, "ipPrint errorCode ERROR_0 i: " + finalI);
updatePrjSuccess(ids);
Log.e(TAG, "打印成功");
break;
case PrintSocketHolder.ERROR_2:
LoganManager.w_printer(TAG, "ipPrint errorCode ERROR_2 i: " + finalI);
Log.e(TAG, "创建Socket失败");
updatePrjFailure(ids);
break;
}
......@@ -760,10 +754,10 @@ public class PrjService extends Service implements ReceiveListener {
UsbPrint usbPrint = new UsbPrint(mContext, (code, printId) -> {
//打印結果
if (code == SendResultCode.SEND_SUCCESS) {
Log.e("ddd", "打印成功");
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess(null);
updatePrjSuccess(key);
} else if (code == SendResultCode.SEND_FAILED) {
Log.e("ddd", "打印失敗");
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(code, null);
updatePrjFailure(key);
}
});
......@@ -945,9 +939,16 @@ public class PrjService extends Service implements ReceiveListener {
orderType = prjBean.getOrderType();
}
}
PrintPaperPlugins.getOnPrinterFlowHandler().onPrinterBitmapBefore(orderType, prjName, bitmapMaps);
List<Bitmap> bitmapList = new ArrayList<>();
for (int i = 0; i < bitmapMaps.size(); i++) {
Set<Map.Entry<String, Bitmap>> bitmapSet = bitmapMaps.get(i).entrySet();
Iterator<Map.Entry<String, Bitmap>> bitmapIterator = bitmapSet.iterator();
while (bitmapIterator.hasNext()) {
bitmapList.add(bitmapIterator.next().getValue());
}
}
PrinterPlugins.getOnPrinterFlowHandler().onPrinterBitmapBefore(orderType, PrintConstans.PRINT_KITCHEN, prjName, bitmapList);
}
return bitmapMaps;
}
......@@ -1005,7 +1006,7 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public void onNext(String s) {
Log.e(TAG, "修改打印狀態:" + s);
LoganManager.w_printer(TAG, "---end---修改Prj打印狀態---end----: " + s);
}
@Override
......
......@@ -28,6 +28,8 @@ import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.bean.PrintContent;
......@@ -103,6 +105,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
private Dialog mLoadingDialog;
private TextView mTvLoadingTip;
/**
* 0:上菜紙
* 1:印單
......@@ -113,6 +116,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
* 6:其他指令
*/
private int type;
private String mOrderNo;
//是否顯示打印等待彈窗
private boolean isShowDialog;
......@@ -140,18 +144,20 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//獲取打印類型,根據打印類型生成對應的bitmap
type = CCUtil.getNavigateParam(this, PrintConstans.PRINT_TYPE, PrintConstans.PRINT_TEST);
PrintContent printContent = CCUtil.getNavigateParam(this, PrintConstans.PRINT_CONTENT, null);
mOrderNo = CCUtil.getNavigateParam(this, PrintConstans.PRINT_ORDER_NO, "");
isShowDialog = CCUtil.getNavigateParam(this, PrintConstans.PRINT_LOADING, true);
printerInIt = PrinterRoot.getPrinterByType(type, printContent);
if (printerInIt != null) {
printerInIt.setPrintListener(this);
}
initPrintConfig();
initPrintConfig(printContent);
}
private int selectPrint = -1;
private void initPrintConfig() {
private void initPrintConfig(PrintContent printContent) {
PrintCurrencyBean printCurrencyBean;
PrinterDeviceBean defaultPrint;
//獲取通用打印配置,不同的打印
......@@ -176,6 +182,9 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
// 如果沒有最近使用的打印機,並且當前餐廳只有一台打印機,就用這一台打印機打印
defaultPrint = mPresenter.getDefaultPrintInList(printerDeviceBeans, (String) SPUtils.get("defaultPrint", ""));
}
PrinterPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(type, type, GsonUtils.GsonString(printContent), GsonUtils.GsonString(defaultPrint));
//廚房單
if (type == PrintConstans.PRINT_KITCHEN) {
List<PrjBean.DataBean.Bean> printDatas = CCUtil.getNavigateParam(this, "prjBeans", null);
......@@ -285,6 +294,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//打印失敗
printFailure("打印失敗,生成打印數據失敗");
}
setPrinterBitmapToLocation(type, type, mOrderNo, listMap);
}
//獲得對應的圖片
if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_IP) {
......@@ -303,7 +313,16 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
else {
printFailure("未找到對應的打印類型");
}
}
}
/**
* 将所要打印的图片保存到本地
*/
private void setPrinterBitmapToLocation(int orderType, int printType, String orderNo, Map<String, List<Bitmap>> bitmapMaps) {
if (bitmapMaps.size() > 0 && bitmapMaps.get("") != null) {
String prjName = orderNo + "-" + System.currentTimeMillis();
PrinterPlugins.getOnPrinterFlowHandler().onPrinterBitmapBefore(orderType, printType, prjName, bitmapMaps.get(""));
}
}
......@@ -468,7 +487,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
printFailure("打印機缺紙");
break;
}
LoganManager.w_printer(TAG,"printStateChanged state--->" + tip);
LoganManager.w_printer(TAG, "printStateChanged state--->" + tip);
setLoadingText(tip);
}
......@@ -477,7 +496,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
*/
@Override
public void printSuccess() {
LoganManager.w_printer(TAG,"printFailure 打印成功");
LoganManager.w_printer(TAG, "printFailure 打印成功");
// if (printCount <= 1) {
CC.sendCCResult(callId, CCResult.success());
disLoadingDialog();
......@@ -490,7 +509,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public void printFailure(String msg) {
LoganManager.w_printer(TAG,"printFailure 打印失敗--->" + msg);
if (!TextUtil.isEmptyOrNullOrUndefined(msg)) {
ToastUtils.show(GsaCloudApplication.getAppContext(), msg);
CC.sendCCResult(callId, CCResult.error(msg));
......
......@@ -144,6 +144,7 @@ public class PrintOrderAction implements Strategy<OrderManagerResponse> {
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO,doshokuOrder.getOrderNo())
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
Log.e("error", "是否成功打印:" + result.isSuccess());
......
......@@ -140,6 +140,7 @@ public class PrintServingPaperAction extends TableAction {
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SERVE)
.addParam(PrintConstans.PRINT_CONTENT,printContent)
.addParam(PrintConstans.PRINT_ORDER_NO,tableBean.getOrderId())
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
//清空賬單數據
......
......@@ -896,6 +896,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SERVE)
.addParam(PrintConstans.PRINT_CONTENT,printContent)
.addParam(PrintConstans.PRINT_ORDER_NO,DoshokuOrder.getInstance().getOrderNo())
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
if (result.isSuccess()) {
......
......@@ -391,6 +391,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SERVE)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO,DoshokuOrder.getInstance().getOrderNo())
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
if (result.isSuccess()) {
......@@ -437,6 +438,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_SLIP)//印單
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO,DoshokuOrder.getInstance().getOrderNo())
.setActionName("printActivity")
.build()
.callAsyncCallbackOnMainThread((cc, result) -> {
......
......@@ -233,7 +233,6 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
}
}
public void getTables(boolean show, RefreshLayout refreshLayout) {
int restaurantId = RestaurantInfoManager.newInstance().getRestaurantId() != 0 ? RestaurantInfoManager.newInstance().getRestaurantId() : 26;
mModel.getTables(restaurantId)
......
......@@ -461,6 +461,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_INSTRUCTION)
.addParam(PrintConstans.PRINT_ORDER_NO,DoshokuOrder.getInstance().getOrderNo())
.build()
.callAsyncCallbackOnMainThread(new IComponentCallback() {
@Override
......@@ -489,6 +490,7 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_BILL)
.addParam(PrintConstans.PRINT_CONTENT, printContent)
.addParam(PrintConstans.PRINT_ORDER_NO,DoshokuOrder.getInstance().getOrderNo())
.build()
.callAsyncCallbackOnMainThread(new IComponentCallback() {
@Override
......
......@@ -272,9 +272,9 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
tv_order_num.setText(orderCode + orderDetailItem.getBillNo() + " " + mealCode + orderDetailItem.getTakeFoodCode());
} else {
String tableName = LanguageUtils.get_language_system(this, "table.number", "檯號") + ": ";
String orderNumber = LanguageUtils.get_language_system(this, "order.number", "單號") + ": ";
String orderNumber = LanguageUtils.get_language_system(this, "order.number", "單號") + ": ";
tv_table_name.setText(tableName + orderDetailItem.getTableName());
tv_order_num.setText(orderNumber + orderDetailItem.getId());
tv_order_num.setText(orderNumber + orderDetailItem.getOrderNo());
}
tv_people_num.setText(pax);
tv_open_time.setText(openTable);
......
......@@ -152,9 +152,9 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
tv_order_num.setText(orderCode + orderBean.getBillNo() + " " + mealCode + orderBean.getTakeFoodCode());
} else {
String tableName = LanguageUtils.get_language_system(mContext, "table.number", "檯號") + ": ";
String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "單號") + ": ";
String orderNumber = LanguageUtils.get_language_system(mContext, "order.number", "單號") + ": ";
tv_table_name.setText(tableName + orderBean.getTableName());
tv_order_num.setText(orderNumber + orderBean.getId());
tv_order_num.setText(orderNumber + orderBean.getOrderNo());
}
//先将check回调情况,防止setChecked时反复调用onCheckedChanged方法
......
......@@ -47,8 +47,10 @@ import com.gingersoft.gsa.cloud.common.loadsir.pos.PosVoidStatusExceptionCallbac
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.oaId.DeviceID;
import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrintPaperPlugins;
import com.gingersoft.gsa.cloud.common.printer.PrinterFileUtils;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterFlowListener;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
......@@ -170,7 +172,7 @@ public class GsaCloudApplication extends BaseApplication {
private void initQMUI() {
//初始化側滑回退
QMUISwipeBackActivityManager.init(this);
// QMUISwipeBackActivityManager.init(this);
//初始化主題管理器
// QDSkinManager.install(this);
}
......@@ -216,12 +218,12 @@ public class GsaCloudApplication extends BaseApplication {
* 初始化Hyweb支付回調
*/
private void initHywebCommandImpl() {
// if (AppDevices.isHywebPos()) {
CC.obtainBuilder(ComponentName.COMPONENT_LOGIN)
.setActionName(ComponentAction.Login.INIT_HYWEB_COMMAND_IMPL)
.build()
.call();
// }
if (AppDevices.isHywebPos()) {
CC.obtainBuilder(ComponentName.COMPONENT_LOGIN)
.setActionName(ComponentAction.Login.INIT_HYWEB_COMMAND_IMPL)
.build()
.call();
}
}
private void initRxjava() {
......@@ -340,94 +342,50 @@ public class GsaCloudApplication extends BaseApplication {
SPUtils.put(PrintConstans.DEFAULT_PRINT_METHOD, PrintConstans.IP_PRINT);
}
//打印流程
PrintPaperPlugins.setOnPrinterFlowHandler(new PrinterFlowListener() {
PrinterPlugins.setOnPrinterFlowHandler(new PrinterFlowListener() {
private final String TAG = "PrinterPlugins";
@Override
public void onPrinterDataBefore(int orderType, String printerData, String printerDeviceInfo) {
LoganManager.w_code(TAG, "onPrinterDataBefore printerData=" + printerData + " printerDeviceInfo=" + printerDeviceInfo);
public void onPrinterDataBefore(int orderType, int printType, String printerData, String printerDeviceInfo) {
LoganManager.w_printer(TAG, "打印前--> printerData=" + printerData + " printerDeviceInfo=" + printerDeviceInfo);
}
@Override
public void onPrinterBitmapBefore(int orderType, String directoryName, List<Map<String, Bitmap>> bitmaps) {
LoganManager.w_code(TAG, "onPrinterBitmapBefore");
RxIOTask rxIOTask = new RxIOTask(0) {
@Override
public Object doInIOThread(Object o) {
File file = new File(FileUtils.PrinterImagePath.KITCHEN_PRJ_IMAGE_PATH);
if (file != null && file.exists()) {
long FILE_SIZE = FileUtils.getDirSize(file);
if (FILE_SIZE > FileUtils.PrinterImagePath.PRINTER_MAX_FILE_SIZE) {
//大於100M 就刪除
File prjPath = new File(FileUtils.PrinterImagePath.KITCHEN_PRJ_IMAGE_PATH);
if (prjPath.isDirectory()) {
File[] prjDirectorys = prjPath.listFiles();
for (int i = prjDirectorys.length - 1; i >= 0; i--) {
File prjDirectory = prjDirectorys[i];
boolean deleteResult = prjDirectory.delete();
if (deleteResult && FILE_SIZE <= FileUtils.PrinterImagePath.PRINTER_KEEP_FILE_SIZE) {
FILE_SIZE = FileUtils.getFileSize(FileUtils.PrinterImagePath.KITCHEN_PRJ_IMAGE_PATH);
LoganManager.w_code(TAG, "onPrinterBitmapBefore delete kitchen prj file after size :" + FILE_SIZE);
break;
}
}
}
}
}
for (Map<String, Bitmap> bitmapMap : bitmaps) {
Set<Map.Entry<String, Bitmap>> bitmapSet = bitmapMap.entrySet();
Iterator<Map.Entry<String, Bitmap>> bitmapIterator = bitmapSet.iterator();
while (bitmapIterator.hasNext()) {
Map.Entry<String, Bitmap> bitmapEntry = bitmapIterator.next();
String prjName = directoryName + "-" + System.currentTimeMillis();
BitmapUtil.saveBitmap(bitmapEntry.getValue(), FileUtils.PrinterImagePath.KITCHEN_PRJ_IMAGE_PATH + directoryName + File.separator, prjName + ".jpeg", new BitmapUtil.OnSaveBitmapListener() {
@Override
public void onSuccess() {
LoganManager.w_code(TAG, "onPrinterBitmapBefore saveBitmap onSuccess");
}
@Override
public void onError(Exception e) {
LoganManager.w_code(TAG, "onPrinterBitmapBefore saveBitmap onError :" + e.getMessage());
}
});
}
}
return null;
}
};
RxJavaUtils.doInIOThread(rxIOTask);
public void onPrinterBitmapBefore(int orderType, int printType, String directoryName, List<Bitmap> bitmaps) {
LoganManager.w_printer(TAG, "生成的打印圖片-->");
PrinterFileUtils.savePrinterBitmapByType(orderType, printType, directoryName, bitmaps);
}
@Override
public void onPrintSuccess(PrinterDeviceBean printerDeviceBean) {
LoganManager.w_code(TAG, "onPrintSuccess");
LoganManager.w_printer(TAG, "打印成功");
}
@Override
public void onPrintError(int errorCode, PrinterDeviceBean printerDeviceBean) {
LoganManager.w_code(TAG, "onPrintError errorCode:" + errorCode);
LoganManager.w_printer(TAG, "打印失敗:" + errorCode);
}
@Override
public void connectionBefore(int type, String IP, String port, String ioTimeout, long printTimeout) {
Object[] objs = {type, IP, port, ioTimeout, printTimeout};
LoganManager.w_code(TAG, String.format("connectionBefore type=%s ,IP=%s ,port=%s ,ioTimeout=%s ,printTimeout=%s", objs));
public void connectionBefore(String deviceName, String ip, int port, long ioTimeout, long printTimeout) {
Object[] objs = {deviceName, ip, port, ioTimeout, printTimeout};
LoganManager.w_printer(TAG, String.format("連接打印機前--> deviceName=%s ,IP=%s ,port=%s ,ioTimeout=%s ,printTimeout=%s", objs));
}
@Override
public void connectionSuccess() {
LoganManager.w_code(TAG, "connectionSuccess");
LoganManager.w_printer(TAG, "連接打印機成功");
}
@Override
public void connectionError(Exception e) {
LoganManager.w_code(TAG, "connectionError e: " + e.getMessage());
LoganManager.w_printer(TAG, "連接打印機失敗" );
}
@Override
public void disconnect() {
LoganManager.w_code(TAG, "disconnect");
LoganManager.w_printer(TAG, "斷開打印機連接");
}
});
}
......
......@@ -12,12 +12,12 @@ public class LoganConfig {
public static final String EncryptKey16 = "0123456789012345";
public static final String EncryptIV16 = "0123456789012345";
public static final String APP_ID = "gingersoft1008611";
public static final String UPLOAD_LOG_URL = "http://192.168.1.113:8082/logan/upload.json";
public static final String UPLOAD_LOG_URL = "http://192.168.1.131:8080/logan-web/logan/upload.json";
/**
* 日誌保留天數
*/
public static final int DAY = 1;
public static final int DAY = 2;
/**
* 代码日志
......@@ -28,24 +28,28 @@ public class LoganConfig {
*/
public static final byte NETWORK_LEVLE = 2;
/**
* 數據庫日誌
*/
public static final byte DATABASE_LEVLE = 3;
/**
* 用戶行為日誌(頁面跳轉,交互,觸摸反饋等)
*/
public static final byte ACTION_LEVLE = 3;
public static final byte ACTION_LEVLE = 4;
/**
* 崩潰日誌
*/
public static final byte CRASH_LEVLE = 4;
public static final byte CRASH_LEVLE = 5;
/**
* H5日誌
*/
public static final byte H5_LEVLE = 5;
public static final byte H5_LEVLE = 6;
/**
* native日誌
*/
public static final byte native_LEVLE = 6;
public static final byte native_LEVLE = 7;
/**
* 打印相關日誌
* 打印模塊相關日誌
*/
public static final byte PRINTER_LEVLE = 7;
public static final byte PRINTER_LEVLE = 8;
}
......@@ -22,6 +22,7 @@ public class PrintConstans {
*/
public static final String PRINT_TYPE = "print_type";//打印類型
public static final String PRINT_CONTENT = "print_content";//打印內容
public static final String PRINT_ORDER_NO = "print_order_no";//打印ID(唯一标识即可)
public static final String PRINT_LOADING = "is_show_loading";//是否顯示加載框
public final static int PRINT_TEST = -1;//測試頁
......
......@@ -46,6 +46,14 @@ public class LoganManager {
}
}
public static void w_database(String TAG,String log) {
Logan.w(log, LoganConfig.DATABASE_LEVLE);
// Logan.f();
if (BuildConfig.DEBUG) {
printLog(TAG, log);
}
}
public static void w_crash(String log) {
Logan.w(log, LoganConfig.CRASH_LEVLE);
//cash日誌比較重要立即寫入本地
......
package com.gingersoft.gsa.cloud.common.printer;
import android.graphics.Bitmap;
import android.text.TextUtils;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.utils.FileUtils;
import com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.io.File;
import java.util.List;
/**
* @作者: bin
* @創建時間: 2021-01-29 16:04
* @更新時間: 2021-01-29 16:04
* @描述:
*/
public class PrinterFileUtils {
private static final String TAG = "PrinterFileUtils";
//圖片文件最大文件大小不能超過100M
public static final int PRINTER_MAX_FILE_SIZE = 100 * 1024 * 1024;
//最少保留多少打印圖片文件大小
public static final int PRINTER_KEEP_FILE_SIZE = 20 * 1024 * 1024;
//根目錄
public static String PrinterImagesRootPath = "PrinterImages";
/**
* 廚房單
* 堂食結賬單
* 堂食印單
* 堂食上菜紙
* QRCODE
* 外送印單
* 外送結賬單
* 清機單
*/
public static String KitchenImage = "KitchenImages";
public static String PrintOrderImage = "PrintOrderImages";
public static String BillImage = "BillImages";
public static String ServingPaperImage = "ServingPaperImages";
public static String QrcodeImage = "QrcodeImages";
public static String DeliveryPrintOrderImage = "DeliveryPrintOrderImages";
public static String DeliveryBillImage = "DeliveryBillImages";
public static String SettlementImage = "SettlementImages";
public final static String ROOT_PATH = FileUtils.ALBUM_PATH + PrinterImagesRootPath + File.separator;
public final static String KITCHEN_PRJ_IMAGE_PATH = ROOT_PATH + KitchenImage + File.separator;
public final static String PRINT_ORDER_IMAGE_PATH = ROOT_PATH + PrintOrderImage + File.separator;
public final static String BILL_IMAGE_PATH = ROOT_PATH + BillImage + File.separator;
public final static String SERVING_PAPER_IMAGE_PATH = ROOT_PATH + ServingPaperImage + File.separator;
public final static String DELIVERY_PRINT_ORDER_IMAGE_PATH = ROOT_PATH + DeliveryPrintOrderImage + File.separator;
public final static String DELIVERY_BILL_IMAGE_PATH = ROOT_PATH + DeliveryBillImage + File.separator;
public final static String QRCODE_IMAGE_PATH = ROOT_PATH + QrcodeImage + File.separator;
public final static String SETTLEMENT_IMAGE_PATH = ROOT_PATH + SettlementImage + File.separator;
public static void savePrinterBitmapByType(int orderType, int printType, String directoryName, List<Bitmap> bitmaps) {
RxIOTask rxIOTask = new RxIOTask(0) {
@Override
public Object doInIOThread(Object o) {
String savePath = getPathByPrintType(printType);
if (TextUtils.isEmpty(savePath)) {
return null;
}
LoganManager.w_printer(TAG, "save path :" + savePath);
File file = new File(ROOT_PATH);
if (file != null && file.exists()) {
long FILE_SIZE = FileUtils.getDirSize(file);
if (FILE_SIZE > PRINTER_MAX_FILE_SIZE) {
LoganManager.w_printer(TAG, "delete file before size : " + FILE_SIZE);
//大於100M 就刪除
File prjPath = new File(ROOT_PATH);
if (prjPath.isDirectory()) {
File[] prjDirectorys = prjPath.listFiles();
for (int i = prjDirectorys.length - 1; i >= 0; i--) {
File prjDirectory = prjDirectorys[i];
boolean deleteResult = prjDirectory.delete();
if (deleteResult && FILE_SIZE <= PRINTER_KEEP_FILE_SIZE) {
FILE_SIZE = FileUtils.getFileSize(ROOT_PATH);
LoganManager.w_printer(TAG, "delete file after size : " + FILE_SIZE);
break;
}
}
}
}
}
for (Bitmap bitmap : bitmaps) {
String fileName = directoryName + "-" + System.currentTimeMillis();
LoganManager.w_printer(TAG, "saveBitmap fileName : " + fileName);
BitmapUtil.saveBitmap(bitmap, savePath + directoryName + File.separator, fileName + ".jpeg", new BitmapUtil.OnSaveBitmapListener() {
@Override
public void onSuccess() {
LoganManager.w_printer(TAG, "saveBitmap onSuccess");
}
@Override
public void onError(Exception e) {
LoganManager.w_printer(TAG, "saveBitmap onError :" + e.getMessage());
}
});
}
return null;
}
};
RxJavaUtils.doInIOThread(rxIOTask);
}
private static String getPathByPrintType(int printType) {
switch (printType) {
case PrintConstans.PRINT_SERVE: //堂食上菜紙
return PrinterFileUtils.SERVING_PAPER_IMAGE_PATH;
case PrintConstans.PRINT_SLIP://堂食印單
return PrinterFileUtils.PRINT_ORDER_IMAGE_PATH;
case PrintConstans.PRINT_BILL://堂食結賬單
return PrinterFileUtils.BILL_IMAGE_PATH;
case PrintConstans.PRINT_SKYORDER_QRCODE://QRCODE
return PrinterFileUtils.QRCODE_IMAGE_PATH;
case PrintConstans.PRINT_KITCHEN://廚房單 PRJ
return PrinterFileUtils.KITCHEN_PRJ_IMAGE_PATH;
case PrintConstans.PRINT_OTHER_ORDER://外送印單
return PrinterFileUtils.DELIVERY_PRINT_ORDER_IMAGE_PATH;
case PrintConstans.PRINT_OTHER_CLOSING://外送結賬
return PrinterFileUtils.DELIVERY_BILL_IMAGE_PATH;
case PrintConstans.PRINT_CLEAN_MACHINE://清機報表
return PrinterFileUtils.SETTLEMENT_IMAGE_PATH;
}
return null;
}
}
......@@ -8,7 +8,7 @@ package com.gingersoft.gsa.cloud.common.printer.plugins;
*/
public interface ExternalPrinterConnection {
void connectionBefore(int type, String IP, String port, String ioTimeout, long printTimeout);
void connectionBefore(String deviceName, String IP, int port, long ioTimeout, long printTimeout);
void connectionSuccess();
......
package com.gingersoft.gsa.cloud.common.printer.plugins;
import android.graphics.Bitmap;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import java.util.List;
......@@ -14,9 +15,9 @@ import java.util.Map;
*/
public interface PrinterFlowListener extends ExternalPrinterConnection {
void onPrinterDataBefore(int orderType,String printerData,String printerDeviceInfo);
void onPrinterDataBefore(int orderType, int printType, String printerData, String printerDeviceInfo);
void onPrinterBitmapBefore(int orderType,String directoryName, List<Map<String, Bitmap>> bitmaps);
void onPrinterBitmapBefore(int orderType, int printType, String directoryName, List<Bitmap> bitmaps);
void onPrintSuccess(PrinterDeviceBean printerDeviceBean);
......
......@@ -2,7 +2,6 @@ package com.gingersoft.gsa.cloud.common.printer.plugins;
import io.reactivex.annotations.NonNull;
import io.reactivex.annotations.Nullable;
import io.reactivex.exceptions.UndeliverableException;
import io.reactivex.functions.Consumer;
/**
......@@ -11,7 +10,7 @@ import io.reactivex.functions.Consumer;
* @更新時間: 2021-01-25 9:46
* @描述:
*/
public class PrintPaperPlugins {
public class PrinterPlugins {
@Nullable
static volatile Consumer<? super Throwable> errorHandler;
......@@ -44,7 +43,7 @@ public class PrintPaperPlugins {
}
public static void setErrorHandler(Consumer<? super Throwable> errorHandler) {
PrintPaperPlugins.errorHandler = errorHandler;
PrinterPlugins.errorHandler = errorHandler;
}
public static PrinterFlowListener getOnPrinterFlowHandler() {
......@@ -55,6 +54,6 @@ public class PrintPaperPlugins {
}
public static void setOnPrinterFlowHandler(PrinterFlowListener onPrinterFlowHandler) {
PrintPaperPlugins.onPrinterFlowHandler = onPrinterFlowHandler;
PrinterPlugins.onPrinterFlowHandler = onPrinterFlowHandler;
}
}
......@@ -23,6 +23,7 @@ import com.gingersoft.gsa.cloud.common.constans.AppConstans
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
import com.gingersoft.gsa.cloud.common.core.user.UserContext
import com.gingersoft.gsa.cloud.common.logan.LoganManager
import com.gingersoft.gsa.cloud.common.utils.SoundPoolUtils
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils
......@@ -41,6 +42,7 @@ import java.util.concurrent.TimeUnit
class GetInfoUpdateService : Service() {
private val TAG = "heart"
/**
* 心跳检测时间
*/
......@@ -86,7 +88,6 @@ class GetInfoUpdateService : Service() {
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
Log.d(TAG, "onStartCommand()")
// 在API11之后构建Notification的方式
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createNotificationChannel()
......@@ -102,7 +103,7 @@ class GetInfoUpdateService : Service() {
*/
@RequiresApi(Build.VERSION_CODES.O)
fun createNotificationChannel() {
if(!UserContext.newInstance().isLogin){
if (!UserContext.newInstance().isLogin) {
stopSelf()
return
}
......@@ -152,14 +153,14 @@ class GetInfoUpdateService : Service() {
inner class MyBind : Binder() {
lateinit var block: (isShow: Boolean) -> Unit
var jumpActivity: Class<*>? = null
set(value) {
field = value
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createNotificationChannel()
} else {
startNotification()
set(value) {
field = value
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
createNotificationChannel()
} else {
startNotification()
}
}
}
fun setOnPostCallBack(postCallBack: PostCallBack?) {
this@GetInfoUpdateService.postCallBack = postCallBack
......@@ -358,10 +359,12 @@ class GetInfoUpdateService : Service() {
loginfo.append(":")
loginfo.append(content)
loginfo.append("\n")
LoganManager.w_network(TAG + " -> " + content);
}
var mIntervalDisposable: Disposable? = null
var timerDisposable: Disposable? = null
/**
* 执行定时任务
*/
......
......@@ -66,23 +66,32 @@ public class FileUtils {
/**
* 打印前圖片存儲路徑
*/
public final static class PrinterImagePath {
//Prj圖片文件最大文件大小不能超過100M
public static final int PRINTER_MAX_FILE_SIZE = 100 * 1024 * 1024;
//Prj最少保留文件大小
public static final int PRINTER_KEEP_FILE_SIZE = 20 * 1024 * 1024;
public static String PrinterImagesRootPath = "PrinterImages";
public static String KitchenImage = "KitchenPrj";
public static String OrderImage = "OrderImage";
public static String BillImage = "BillImage";
public static String ServingPaperImage = "ServingPaperImage";
public final static String ROOT_PATH = ALBUM_PATH + PrinterImagesRootPath + File.separator;
public final static String KITCHEN_PRJ_IMAGE_PATH = ROOT_PATH + KitchenImage + File.separator;
public final static String ORDER_IMAGE_PATH = ROOT_PATH + OrderImage + File.separator;
public final static String BILL_IMAGE_PATH = ROOT_PATH + BillImage + File.separator;
public final static String SERVING_PAPER_IMAGE_PATH = ROOT_PATH + ServingPaperImage + File.separator;
}
// public final static class PrinterImagePath {
// //Prj圖片文件最大文件大小不能超過100M
// public static final int PRINTER_MAX_FILE_SIZE = 100 * 1024 * 1024;
// //Prj最少保留文件大小
// public static final int PRINTER_KEEP_FILE_SIZE = 20 * 1024 * 1024;
//
// public static String PrinterImagesRootPath = "PrinterImages";
// public static String KitchenImage = "KitchenImages";
// public static String PrintOrderImage = "PrintOrderImages";
// public static String BillImage = "BillImages";
// public static String ServingPaperImage = "ServingPaperImages";
// public static String DeliveryPrintOrderImage = "DeliveryPrintOrderImages";
// public static String DeliveryBillImage = "DeliveryBillImages";
// public static String QrcodeImage = "QrcodeImages";
// public static String SettlementImage = "SettlementImages";
//
// public final static String ROOT_PATH = ALBUM_PATH + PrinterImagesRootPath + File.separator;
// public final static String KITCHEN_PRJ_IMAGE_PATH = ROOT_PATH + KitchenImage + File.separator;
// public final static String PRINT_ORDER_IMAGE_PATH = ROOT_PATH + PrintOrderImage + File.separator;
// public final static String BILL_IMAGE_PATH = ROOT_PATH + BillImage + File.separator;
// public final static String SERVING_PAPER_IMAGE_PATH = ROOT_PATH + ServingPaperImage + File.separator;
// public final static String DELIVERY_PRINT_ORDER_IMAGE_PATH = ROOT_PATH + DeliveryPrintOrderImage + File.separator;
// public final static String DELIVERY_BILL_IMAGE_PATH = ROOT_PATH + DeliveryBillImage + File.separator;
// public final static String QRCODE_IMAGE_PATH = ROOT_PATH + QrcodeImage + File.separator;
// public final static String SETTLEMENT_IMAGE_PATH = ROOT_PATH + SettlementImage + File.separator;
// }
public final static String FILE_EXTENSION_SEPARATOR = ".";
......
......@@ -69,27 +69,21 @@ public class PrintExecutor {
return prepare;
}
}
LoganManager.w_printer(TAG,"PrintTask doRequest holder.sendData(data) ------------------------------->");
return holder.sendData(data);
} else {
holder.onPrinterStateChanged(PrintSocketHolder.STATE_0);
List<byte[]> data = maker.getPrintData();
prjIds = maker.getPrjIds();
if (holder.isSocketPrepared()) {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) --------------连接打印机完成----------------->");
if (sendData(data)) {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) -------------打印成功------------------>");
return PrintSocketHolder.ERROR_0;
} else {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) -------------打印失败------------------>");
return PrintSocketHolder.ERROR_100;
}
} else {
if (prepareSocket() && sendData(data)) {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) -------------打印成功------------------>");
return PrintSocketHolder.ERROR_0;
} else {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) -------------打印失败------------------>");
return PrintSocketHolder.ERROR_100;
}
}
......@@ -200,13 +194,11 @@ public class PrintExecutor {
@Override
protected void onPreExecute() {
super.onPreExecute();
LoganManager.w_printer(TAG,"PrintTask onPreExecute");
holder.setOnStateChangedListener(this);
}
@Override
protected Integer doInBackground(PrintDataMaker... makers) {
LoganManager.w_printer(TAG,"PrintTask doInBackground makers.length:" + makers.length);
if (makers == null || makers.length < 1) {
return PrintSocketHolder.ERROR_0;
}
......@@ -216,7 +208,6 @@ public class PrintExecutor {
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
LoganManager.w_printer(TAG,"PrintTask onProgressUpdate values:" + values);
if (values == null || values.length < 1) {
return;
}
......@@ -228,7 +219,6 @@ public class PrintExecutor {
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
LoganManager.w_printer(TAG,"PrintTask onPostExecute values:" + integer);
if (integer != null) {
onResult(integer);
}
......@@ -241,21 +231,36 @@ public class PrintExecutor {
*/
private void onResult(int errorCode) {
try {
LoganManager.w_printer(TAG,"PrintTask onResult errorCode:" + errorCode);
if (mListener != null)
if (mListener != null) {
mListener.onResult(errorCode, holder.getPrinterDeviceBean());
}
if (onPrjPrintResultListener != null) {
onPrjPrintResultListener.onResult(errorCode, prjIds);
}
} catch (Exception e) {
e.printStackTrace();
LoganManager.w_printer(TAG,"PrintTask onResult Exception:" + e.getMessage());
}
}
@Override
public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
LoganManager.w_printer(TAG,"PrintTaskonStateChanged state: " + state);
switch (state) {
case PrintSocketHolder.STATE_0:
LoganManager.w_printer(TAG, "打印機狀態 --> 生成页面数据" );
break;
case PrintSocketHolder.STATE_1:
LoganManager.w_printer(TAG, "打印機狀態 --> 创建Socket连接" );
break;
case PrintSocketHolder.STATE_2:
LoganManager.w_printer(TAG, "打印機狀態 --> 获取输出流" );
break;
case PrintSocketHolder.STATE_3:
LoganManager.w_printer(TAG, "打印機狀態 --> 写入页面数据" );
break;
case PrintSocketHolder.STATE_4:
LoganManager.w_printer(TAG, "打印機狀態 --> 关闭输出流" );
break;
}
publishProgress(state);
}
}
......
......@@ -22,6 +22,7 @@ import android.bluetooth.BluetoothSocket;
import com.elvishew.xlog.XLog;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import java.io.IOException;
......@@ -53,8 +54,8 @@ public class PrintSocketHolder {
public static final int ERROR_4 = -4;// 写入测试页面数据失败
public static final int ERROR_5 = -5;// 必要参数不能为空
public static final int ERROR_6 = -6;// 关闭Socket出错
public static final int ERROR_100 = -100;// 失败
private static final UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");//蓝牙打印UUID
// private String ip;
// private int port = 9100;
......@@ -79,15 +80,16 @@ public class PrintSocketHolder {
return ERROR_5;
try {
if (mDevice != null) {
PrinterPlugins.getOnPrinterFlowHandler().connectionBefore("藍牙打印機", printerDeviceBean.getIp(), printerDeviceBean.getPort(), 0, 0);
bluetoothSocket = mDevice.createRfcommSocketToServiceRecord(uuid);
bluetoothSocket.connect();
} else {
PrinterPlugins.getOnPrinterFlowHandler().connectionBefore("網絡打印機", printerDeviceBean.getIp(), printerDeviceBean.getPort(), PrintConstans.SO_TIMEOUT, PrintConstans.PRINT_TIMEOUT);
socket = new Socket();
InetSocketAddress socketAddress = new InetSocketAddress(printerDeviceBean.getIp(), printerDeviceBean.getPort());
//设置 超时时间
//设置超时时间
socket.setSoTimeout(PrintConstans.SO_TIMEOUT);
socket.connect(socketAddress, PrintConstans.PRINT_TIMEOUT);//开始连接ip
// Log.e("eee", "連接狀態:" + socket.isConnected());
}
} catch (Exception e) {
closeSocket();
......@@ -113,20 +115,21 @@ public class PrintSocketHolder {
}
public boolean isSocketPrepared() {
return (bluetoothSocket != null || socket != null) && out != null;
boolean isPrepared = (bluetoothSocket != null || socket != null) && out != null;
return isPrepared;
}
public int sendData(List<byte[]> data) {
onPrinterStateChanged(STATE_3);
LoganManager.w_printer(TAG,"PrintSocketHolder sendData ----------准备往打印机写入数据-------->");
if (data == null || data.size() <= 0)
if (data == null || data.size() <= 0) {
return ERROR_0;
}
for (byte[] item : data) {
try {
out.write(item);
out.flush();
} catch (IOException e) {
LoganManager.w_printer(TAG,"PrintSocketHolder sendData !!!!!!!!打印异常!!!!!!!! IOException: " + e.getMessage());
LoganManager.w_printer(TAG, "-->打印异常: " + e.getMessage());
closeSocket();
return ERROR_4;
}
......@@ -162,13 +165,17 @@ public class PrintSocketHolder {
}
public int prepareSocket() {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) --------------准备尝试连接打印机----------------->");
LoganManager.w_printer(TAG, "-->准备尝试连接打印机");
int create = createSocket();
if (create != PrintSocketHolder.ERROR_0) {
return create;
}
int result = getOutputStream();
LoganManager.w_printer(TAG,"PrintSocketHolder prepareSocket--------------连接打印机结果----------------->" + (result == ERROR_0 ? "成功" : "失败"));
if (result == ERROR_0) {
PrinterPlugins.getOnPrinterFlowHandler().connectionSuccess();
} else {
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("失敗"));
}
return result;
}
......@@ -176,7 +183,7 @@ public class PrintSocketHolder {
* 销毁
*/
public int closeSocket() {
LoganManager.w_printer(TAG,"PrintSocketHolder closeSocket ----------关闭打印机连接-------->");
LoganManager.w_printer(TAG, "-->準備关闭打印机连接");
onPrinterStateChanged(STATE_4);
boolean error = false;
try {
......@@ -185,7 +192,7 @@ public class PrintSocketHolder {
out = null;
}
} catch (IOException e) {
LoganManager.w_printer(TAG,"PrintSocketHolder closeSocket out----------关闭打印机连接异常-------->");
LoganManager.w_printer(TAG, "-->关闭打印机连接异常");
out = null;
error = true;
}
......@@ -195,7 +202,7 @@ public class PrintSocketHolder {
socket = null;
}
} catch (IOException e) {
LoganManager.w_printer(TAG,"PrintSocketHolder closeSocket socket----------关闭打印机连接异常-------->");
LoganManager.w_printer(TAG, "-->关闭打印机连接异常");
socket = null;
error = true;
}
......@@ -205,10 +212,11 @@ public class PrintSocketHolder {
bluetoothSocket = null;
}
} catch (IOException e) {
LoganManager.w_printer(TAG,"PrintSocketHolder closeSocket bluetoothSocket----------关闭打印机连接异常-------->");
LoganManager.w_printer(TAG, "-->关闭打印机连接异常");
bluetoothSocket = null;
error = true;
}
PrinterPlugins.getOnPrinterFlowHandler().disconnect();
return error ? ERROR_6 : ERROR_0;
}
......@@ -241,7 +249,6 @@ public class PrintSocketHolder {
// return port;
// }
public PrinterDeviceBean getPrinterDeviceBean() {
return printerDeviceBean;
}
......
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