Commit 414e7e7d by Wyh

04-11 多台打印,長按印單切換打印機

parent 3bebf347
...@@ -17,11 +17,11 @@ package com.jess.arms.base; ...@@ -17,11 +17,11 @@ package com.jess.arms.base;
import android.view.View; import android.view.View;
import androidx.recyclerview.widget.RecyclerView;
import com.jess.arms.utils.ThirdViewUtil; import com.jess.arms.utils.ThirdViewUtil;
import com.zhy.autolayout.utils.AutoUtils; import com.zhy.autolayout.utils.AutoUtils;
import androidx.recyclerview.widget.RecyclerView;
/** /**
* ================================================ * ================================================
* 基类 {@link RecyclerView.ViewHolder} * 基类 {@link RecyclerView.ViewHolder}
...@@ -33,11 +33,18 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -33,11 +33,18 @@ import androidx.recyclerview.widget.RecyclerView;
*/ */
public abstract class BaseHolder<T> extends RecyclerView.ViewHolder implements View.OnClickListener { public abstract class BaseHolder<T> extends RecyclerView.ViewHolder implements View.OnClickListener {
protected OnViewClickListener mOnViewClickListener = null; protected OnViewClickListener mOnViewClickListener = null;
protected DefaultAdapter.OnLongClickListener mOnLongClickListener = null;
protected final String TAG = this.getClass().getSimpleName(); protected final String TAG = this.getClass().getSimpleName();
public BaseHolder(View itemView) { public BaseHolder(View itemView) {
super(itemView); super(itemView);
itemView.setOnClickListener(this);//点击事件 itemView.setOnClickListener(this);//点击事件
itemView.setOnLongClickListener(v -> {
if (mOnLongClickListener != null) {
mOnLongClickListener.onLongClick(v, getAdapterPosition());
}
return false;
});
if (ThirdViewUtil.USE_AUTOLAYOUT == 1) AutoUtils.autoSize(itemView);//适配z if (ThirdViewUtil.USE_AUTOLAYOUT == 1) AutoUtils.autoSize(itemView);//适配z
ThirdViewUtil.bindTarget(this, itemView);//绑定 ThirdViewUtil.bindTarget(this, itemView);//绑定
} }
...@@ -62,7 +69,7 @@ public abstract class BaseHolder<T> extends RecyclerView.ViewHolder implements V ...@@ -62,7 +69,7 @@ public abstract class BaseHolder<T> extends RecyclerView.ViewHolder implements V
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (mOnViewClickListener != null) { if (mOnViewClickListener != null) {
mOnViewClickListener.onViewClick(view, this.getPosition()); mOnViewClickListener.onViewClick(view, this.getAdapterPosition());
} }
} }
...@@ -73,4 +80,8 @@ public abstract class BaseHolder<T> extends RecyclerView.ViewHolder implements V ...@@ -73,4 +80,8 @@ public abstract class BaseHolder<T> extends RecyclerView.ViewHolder implements V
public void setOnItemClickListener(OnViewClickListener listener) { public void setOnItemClickListener(OnViewClickListener listener) {
this.mOnViewClickListener = listener; this.mOnViewClickListener = listener;
} }
public void setmOnLongClickListener(DefaultAdapter.OnLongClickListener mOnLongClickListener) {
this.mOnLongClickListener = mOnLongClickListener;
}
} }
...@@ -19,10 +19,10 @@ import android.view.LayoutInflater; ...@@ -19,10 +19,10 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import java.util.List;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
/** /**
* ================================================ * ================================================
* 基类 {@link RecyclerView.Adapter} ,如果需要实现非常复杂的 {@link RecyclerView} ,请尽量使用其他优秀的三方库 * 基类 {@link RecyclerView.Adapter} ,如果需要实现非常复杂的 {@link RecyclerView} ,请尽量使用其他优秀的三方库
...@@ -35,6 +35,7 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -35,6 +35,7 @@ import androidx.recyclerview.widget.RecyclerView;
public abstract class DefaultAdapter<T> extends RecyclerView.Adapter<BaseHolder<T>> { public abstract class DefaultAdapter<T> extends RecyclerView.Adapter<BaseHolder<T>> {
protected List<T> mInfos; protected List<T> mInfos;
protected OnRecyclerViewItemClickListener mOnItemClickListener = null; protected OnRecyclerViewItemClickListener mOnItemClickListener = null;
protected OnLongClickListener mOnLongClickListener = null;
private BaseHolder<T> mHolder; private BaseHolder<T> mHolder;
public DefaultAdapter(List<T> infos) { public DefaultAdapter(List<T> infos) {
...@@ -53,14 +54,13 @@ public abstract class DefaultAdapter<T> extends RecyclerView.Adapter<BaseHolder< ...@@ -53,14 +54,13 @@ public abstract class DefaultAdapter<T> extends RecyclerView.Adapter<BaseHolder<
public BaseHolder<T> onCreateViewHolder(ViewGroup parent, final int viewType) { public BaseHolder<T> onCreateViewHolder(ViewGroup parent, final int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(getLayoutId(viewType), parent, false); View view = LayoutInflater.from(parent.getContext()).inflate(getLayoutId(viewType), parent, false);
mHolder = getHolder(view, viewType); mHolder = getHolder(view, viewType);
mHolder.setOnItemClickListener(new BaseHolder.OnViewClickListener() {//设置Item点击事件 //设置Item点击事件
@Override mHolder.setOnItemClickListener((view1, position) -> {
public void onViewClick(View view, int position) { if (mOnItemClickListener != null && mInfos != null && mInfos.size() > 0) {
if (mOnItemClickListener != null && mInfos != null && mInfos.size() > 0) { mOnItemClickListener.onItemClick(view1, viewType, mInfos.get(position), position);
mOnItemClickListener.onItemClick(view, viewType, mInfos.get(position), position);
}
} }
}); });
mHolder.setmOnLongClickListener(mOnLongClickListener);
return mHolder; return mHolder;
} }
...@@ -151,7 +151,15 @@ public abstract class DefaultAdapter<T> extends RecyclerView.Adapter<BaseHolder< ...@@ -151,7 +151,15 @@ public abstract class DefaultAdapter<T> extends RecyclerView.Adapter<BaseHolder<
void onItemClick(View view, int viewType, T data, int position); void onItemClick(View view, int viewType, T data, int position);
} }
public interface OnLongClickListener {
boolean onLongClick(View v, int position);
}
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) { public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mOnItemClickListener = listener; this.mOnItemClickListener = listener;
} }
public void setmOnLongClickListener(OnLongClickListener mOnLongClickListener) {
this.mOnLongClickListener = mOnLongClickListener;
}
} }
...@@ -7,7 +7,6 @@ apply plugin: 'kotlin-android-extensions' ...@@ -7,7 +7,6 @@ apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-kapt'
android { android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"] compileSdkVersion rootProject.ext.android["compileSdkVersion"]
// compileSdkVersion 28
defaultConfig { defaultConfig {
if (project.ext.runAsApp) { if (project.ext.runAsApp) {
applicationId "com.gingersoft.gsa.other_order_mode" applicationId "com.gingersoft.gsa.other_order_mode"
......
...@@ -87,7 +87,6 @@ class OtherOrderActivity : AppCompatActivity() { ...@@ -87,7 +87,6 @@ class OtherOrderActivity : AppCompatActivity() {
ToastUtils.show(this@OtherOrderActivity, "請輸入手機號或訂單號") ToastUtils.show(this@OtherOrderActivity, "請輸入手機號或訂單號")
} }
} }
tabs.setupWithViewPager(viewPager) tabs.setupWithViewPager(viewPager)
for (i in 0 until ints.size) { for (i in 0 until ints.size) {
......
package com.joe.print.mvp.contract; package com.joe.print.mvp.contract;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult; import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import java.util.List;
import io.reactivex.Observable; import io.reactivex.Observable;
...@@ -25,7 +28,7 @@ public interface PrintContract { ...@@ -25,7 +28,7 @@ public interface PrintContract {
/** /**
* 顯示打印機列表彈窗 * 顯示打印機列表彈窗
*/ */
void showPrinterList(); void showPrinterList(List<PrinterDeviceBean> deviceBeans);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
...@@ -3,26 +3,25 @@ package com.joe.print.mvp.presenter; ...@@ -3,26 +3,25 @@ package com.joe.print.mvp.presenter;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult; import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils; import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.RxLifecycleUtils;
import com.joe.print.mvp.contract.PrintContract;
import java.util.List;
import javax.inject.Inject;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler; import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber; import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import javax.inject.Inject;
import com.jess.arms.utils.RxLifecycleUtils;
import com.joe.print.mvp.contract.PrintContract;
import com.gingersoft.gsa.cloud.base.common.bean.PrinterManger.PrinterManager;
import java.util.List;
/** /**
* ================================================ * ================================================
...@@ -77,13 +76,13 @@ public class PrintPresenter extends BasePresenter<PrintContract.Model, PrintCont ...@@ -77,13 +76,13 @@ public class PrintPresenter extends BasePresenter<PrintContract.Model, PrintCont
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) { .subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override @Override
public void onNext(BaseResult baseResult) { public void onNext(BaseResult baseResult) {
if(baseResult.isSuccess()){ if (baseResult.isSuccess()) {
List<PrinterDeviceBean> deviceBeans = JsonUtils.parseArray(baseResult.getData(), PrinterDeviceBean.class); List<PrinterDeviceBean> deviceBeans = JsonUtils.parseArray(baseResult.getData(), PrinterDeviceBean.class);
if(deviceBeans != null && deviceBeans.size() > 0){ //有打印機,返回true
//有打印機,返回true PrinterManager.getPrinterManager().setDeviceBeans(deviceBeans);
PrinterManager.getPrinterManager().setDeviceBeans(deviceBeans); mRootView.showPrinterList(deviceBeans);
mRootView.showPrinterList(); } else {
} mRootView.showPrinterList(null);
} }
} }
}); });
......
...@@ -4,7 +4,6 @@ import android.app.Application; ...@@ -4,7 +4,6 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult; import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.base.utils.JsonUtils; import com.gingersoft.gsa.cloud.base.utils.JsonUtils;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
...@@ -62,21 +61,9 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model, ...@@ -62,21 +61,9 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model,
/** /**
* 添加打印機 * 添加打印機
*
* @param restaurantId 餐廳id
* @param ip 打印機ip
* @param port 打印機端口號
* @param type 類型1 :55mm, 2:88mm
*/ */
public void addPrinter(int restaurantId, String ip, String port, int type) { public void addPrinter(PrinterDeviceBean printerDeviceBean) {
PrinterDeviceBean printerDeviceBean;
if (TextUtil.isEmptyOrNullOrUndefined(port)) {
printerDeviceBean = new PrinterDeviceBean(restaurantId, ip, null, type);
} else {
printerDeviceBean = new PrinterDeviceBean(restaurantId, ip, Integer.parseInt(port), type);
}
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), JsonUtils.toJson(printerDeviceBean)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), JsonUtils.toJson(printerDeviceBean));
mModel.addPrinter(requestBody) mModel.addPrinter(requestBody)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("")) .doOnSubscribe(disposable -> mRootView.showLoading(""))
...@@ -98,21 +85,9 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model, ...@@ -98,21 +85,9 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model,
/** /**
* 更新打印機信息 * 更新打印機信息
*
* @param id 打印機id
* @param restaurantId 餐廳id
* @param ip 打印機ip地址
* @param port 打印機端口號
* @param type 打印機類型 1 :55mm, 2:88mm
*/ */
public void updatePrinterInfo(int id, int restaurantId, String ip, String port, int type) { public void updatePrinterInfo(PrinterDeviceBean deviceBean) {
PrinterDeviceBean printerDeviceBean; RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), JsonUtils.toJson(deviceBean));
if (TextUtil.isEmptyOrNullOrUndefined(port)) {
printerDeviceBean = new PrinterDeviceBean(id, null, ip, null, type);
} else {
printerDeviceBean = new PrinterDeviceBean(id, null, ip, Integer.parseInt(port), type);
}
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), JsonUtils.toJson(printerDeviceBean));
mModel.updatePrinter(requestBody) mModel.updatePrinter(requestBody)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("")) .doOnSubscribe(disposable -> mRootView.showLoading(""))
...@@ -125,7 +100,7 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model, ...@@ -125,7 +100,7 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model,
public void onNext(BaseResult baseResult) { public void onNext(BaseResult baseResult) {
if (baseResult.isSuccess()) { if (baseResult.isSuccess()) {
mRootView.showMessage("保存成功"); mRootView.showMessage("保存成功");
mRootView.updatePrinterSuccess(printerDeviceBean); mRootView.updatePrinterSuccess(deviceBean);
mRootView.killMyself(); mRootView.killMyself();
} }
} }
......
...@@ -13,9 +13,9 @@ import com.sunmi.peripheral.printer.SunmiPrinterService; ...@@ -13,9 +13,9 @@ import com.sunmi.peripheral.printer.SunmiPrinterService;
* 版本:1.6.0 * 版本:1.6.0
* 创建日期:2019/6/27 * 创建日期:2019/6/27
* 修订历史:2019/6/27 * 修订历史:2019/6/27
* 描述: * 描述:獲取本地商米、N5打印機狀態
*/ */
public class PrintStatus { public class LocationPrintStatus {
public static boolean initV2PrintStatus(Context context, SunmiPrinterService service) { public static boolean initV2PrintStatus(Context context, SunmiPrinterService service) {
int printerState = 0; int printerState = 0;
......
//package com.joe.print.mvp.print;
//
//import android.content.Context;
//
//import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
//import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
//
//import am.util.printer.PrintExecutor;
//import am.util.printer.PrintSocketHolder;
//import am.util.printer.PrinterWriter58mm;
//
///**
// * Created by Wyh on 2020/1/15.
// */
//public class Print implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener {
// private PrintExecutor executor;
// private SendPrint maker;
// private static Print print;
// private Context mContext;
// public static Print getInstance() {
// synchronized (Print.class) {
// if (print == null) {
// print = new Print();
// }
// }
// return print;
// }
//
// public void printOrder(Context context) {
// this.mContext = context;
// LoadingDialog.showNewDialogForLoading(GsaCloudApplication.getAppContext(),"初始化...",false);
// if (executor == null) {
// executor = new PrintExecutor("192.168.1.217", 9100, PrinterWriter58mm.TYPE_58);
// executor.setOnStateChangedListener(this);
// executor.setOnPrintResultListener(this);
// }
// if (maker == null) {
// maker = new SendPrint(context, 255, 580);
// }
// executor.setIp("192.168.1.218", 9100);
// executor.doPrinterRequestAsync(maker);
// }
//
//
// @Override
// public void onResult(int errorCode) {
// String msg;
// switch (errorCode) {
// case PrintSocketHolder.ERROR_0:
// //打印成功
// msg = "打印成功";
// break;
// case PrintSocketHolder.ERROR_2:
// //创建Socket失败
// msg = "連接打印機失敗";
// break;
// case PrintSocketHolder.ERROR_1:
// case PrintSocketHolder.ERROR_3:
// case PrintSocketHolder.ERROR_4:
// case PrintSocketHolder.ERROR_5:
// default:
// //打印失敗
// msg = "打印失敗";
//// LoadingDialog.cancelDialogForLoading();
// break;
// }
// LoadingDialog.setText(msg);
// }
//
// @Override
// public void onStateChanged(int state) {
// String msg = "";
// switch (state) {
// case PrintSocketHolder.STATE_0:
// case PrintSocketHolder.STATE_1:
// //创建Socket连接
// msg = "連接打印機...";
// break;
// case PrintSocketHolder.STATE_2:
// case PrintSocketHolder.STATE_3:
// //写入测试页面数据
// msg = "正在打印...";
// break;
// case PrintSocketHolder.STATE_4:
// msg = "正在關閉...";
//// LoadingDialog.cancelDialogForLoading();
// break;
// }
// LoadingDialog.setText(msg);
// }
//}
package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.adapter.print.BillAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.BillTypeAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.FoodAdapter;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
import com.gingersoft.gsa.cloud.base.common.bean.OrderDetail;
import com.gingersoft.gsa.cloud.base.common.bean.PayMethod;
import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.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.joe.print.R;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 結賬單
*/
public class PrintBill extends PrinterInIt {
@Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
List<Bitmap> bitmaps = new ArrayList<>();
bitmaps.add(getServeBitmap(mContext));
bitmapMaps.put("", bitmaps);
return bitmapMaps;
}
/**
* 獲取"結賬單"圖片
*
* @param context
* @return
*/
private Bitmap getServeBitmap(Context context) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getOrderFoodList();
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
if (foodList == null || foodList.size() <= 0 || tableBean == null) {
return null;
}
View view = LinearLayout.inflate(context, R.layout.print_layout_print_bill, null);
TextView brandName = view.findViewById(R.id.tv_brand_name);
TextView restaurantName = view.findViewById(R.id.tv_restaurant_name);
TextView topOrderNum = view.findViewById(R.id.tv_print_bill_order_num);//頂部的訂單號
TextView tableNum = view.findViewById(R.id.tv_dining_table_number);
TextView people = view.findViewById(R.id.tv_people);
TextView orderNum = view.findViewById(R.id.tv_order_num);
TextView orderData = view.findViewById(R.id.tv_date);
RecyclerView rvFood = view.findViewById(R.id.rv_food);
RecyclerView rvBillAmount = view.findViewById(R.id.rv_bill_amount);
TextView mTvTotalAmount = view.findViewById(R.id.tv_total_amount);
TextView checkOutTime = view.findViewById(R.id.tv_checkout_time);
TextView line_food_info = view.findViewById(R.id.line_food_info);
RecyclerView rvPayType = view.findViewById(R.id.rv_print_pay_type);//顯示支付方式
tableNum.setText(tableBean.getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
orderData.setText(TimeUtils.parseTimeRepeat(tableBean.getCreateTime(), TimeUtils.DEFAULT_DATE_FORMAT));
checkOutTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
FoodAdapter foodAdapter = new FoodAdapter(foodList);
rvFood.setLayoutManager(new LinearLayoutManager(context));
rvFood.setAdapter(foodAdapter);
List<BillingBean> billingBeans = new ArrayList<>();
if (billingBeans.size() <= 0) {
line_food_info.setVisibility(View.GONE);
} else {
BillAdapter billAdapter = new BillAdapter(billingBeans);
rvBillAmount.setLayoutManager(new LinearLayoutManager(context));
rvBillAmount.setAdapter(billAdapter);
}
if (OpenTableManage.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableManage.getDefault().getTableBean().getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().getOrderId() != -1) {
orderNum.setText(MyOrderManage.getInstance().getOrderId() + "");
}
BigDecimal totalAmount = new BigDecimal(0);
for (OrderDetail OrderDetail : MyOrderManage.getInstance().getOrderFoodList()) {
totalAmount = MoneyUtil.sum(totalAmount, OrderDetail.getPrice());
}
//總金額
mTvTotalAmount.setText(totalAmount + "");
List<PayMethod> payBillMoneys = MyOrderManage.getInstance().getBillMoney();
rvPayType.setLayoutManager(new LinearLayoutManager(context));
rvPayType.setAdapter(new BillTypeAdapter(payBillMoneys));
//加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
return viewToBitmap(context, view);
}
}
package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import com.gingersoft.gsa.cloud.base.utils.PrintTransitUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 清機報表
*/
public class PrintCleanMachine extends PrinterInIt {
@Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
List<Bitmap> bitmaps = new ArrayList<>();
bitmaps.add(getServeBitmap(mContext));
bitmapMaps.put("", bitmaps);
return bitmapMaps;
}
/**
* 獲取"清機報表"圖片
*
* @param mContext
* @return
*/
private Bitmap getServeBitmap(Context mContext) {
View view = PrintTransitUtils.getInstance().getPrintView();
if (view != null) {
return viewToBitmap(mContext, view);
}
return null;
}
}
package com.joe.print.mvp.print;
public interface PrintListener {
void printStateChanged(int state);
void printSuccess();
void printFile();
}
package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.adapter.print.BillAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.FoodAdapter;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
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.joe.print.R;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 上菜紙打印
*/
public class PrintServe extends PrinterInIt {
@Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
List<Bitmap> bitmaps = new ArrayList<>();
bitmaps.add(getServeBitmap(mContext));
bitmapMaps.put("", bitmaps);
return bitmapMaps;
}
/**
* 獲取"印單"圖片
*
* @param context
* @return
*/
private Bitmap getServeBitmap(Context context) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getNewFoodList();
if (foodList == null || foodList.size() <= 0) {
return null;
}
View view = LinearLayout.inflate(context, R.layout.print_layout_print, null);
TextView brandName = view.findViewById(R.id.tv_brand_name);
TextView restaurantName = view.findViewById(R.id.tv_restaurant_name);
TextView tableNum = view.findViewById(R.id.tv_dining_table_number);
TextView people = view.findViewById(R.id.tv_people);
TextView orderNum = view.findViewById(R.id.tv_order_num);
TextView orderData = view.findViewById(R.id.tv_date);
RecyclerView rvFood = view.findViewById(R.id.rv_food);
RecyclerView rvBillAmount = view.findViewById(R.id.rv_bill_amount);
TextView mTvTotalAmount = view.findViewById(R.id.tv_total_amount);
TextView checkOutTime = view.findViewById(R.id.tv_checkout_time);
TextView line_food_info = view.findViewById(R.id.line_food_info);
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
tableNum.setText(tableBean.getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
orderData.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
checkOutTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
FoodAdapter foodAdapter = new FoodAdapter(foodList);
rvFood.setLayoutManager(new LinearLayoutManager(context));
rvFood.setAdapter(foodAdapter);
List<BillingBean> billingBeans = new ArrayList<>();
if (billingBeans.size() <= 0) {
line_food_info.setVisibility(View.GONE);
} else {
BillAdapter billAdapter = new BillAdapter(billingBeans);
rvBillAmount.setLayoutManager(new LinearLayoutManager(context));
rvBillAmount.setAdapter(billAdapter);
}
if (OpenTableManage.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableManage.getDefault().getTableBean().getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().getOrderId() != -1) {
orderNum.setText(MyOrderManage.getInstance().getOrderId() + "");
}
BigDecimal totalAmount = new BigDecimal(0);
for (OrderDetail OrderDetail : foodList) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(OrderDetail.getPrice(), OrderDetail.getNumber()));
}
//總金額
mTvTotalAmount.setText(totalAmount + "");
//加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
return viewToBitmap(context, view);
}
}
package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.base.adapter.print.BillAdapter;
import com.gingersoft.gsa.cloud.base.adapter.print.FoodAdapter;
import com.gingersoft.gsa.cloud.base.common.bean.BillingBean;
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.joe.print.R;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 印單打印
*/
public class PrintSlip extends PrinterInIt {
@Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext) {
List<Bitmap> bitmaps = new ArrayList<>();
bitmaps.add(getServeBitmap(mContext));
//這裡可能還需要加上廚房單的內容,有未送單的食品時。
PrintKitchen kitchen = new PrintKitchen();
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>(kitchen.getPrintBitmap(mContext));
bitmapMaps.put("", bitmaps);
return bitmapMaps;
}
/**
* 獲取"印單"圖片
*
* @param context
* @return
*/
private Bitmap getServeBitmap(Context context) {
List<OrderDetail> foodList = MyOrderManage.getInstance().getNewFoodList();
if (foodList == null || foodList.size() <= 0) {
return null;
}
View view = LinearLayout.inflate(context, R.layout.print_layout_print, null);
TextView brandName = view.findViewById(R.id.tv_brand_name);
TextView restaurantName = view.findViewById(R.id.tv_restaurant_name);
TextView tableNum = view.findViewById(R.id.tv_dining_table_number);
TextView people = view.findViewById(R.id.tv_people);
TextView orderNum = view.findViewById(R.id.tv_order_num);
TextView orderData = view.findViewById(R.id.tv_date);
RecyclerView rvFood = view.findViewById(R.id.rv_food);
RecyclerView rvBillAmount = view.findViewById(R.id.rv_bill_amount);
TextView mTvTotalAmount = view.findViewById(R.id.tv_total_amount);
TextView checkOutTime = view.findViewById(R.id.tv_checkout_time);
TextView line_food_info = view.findViewById(R.id.line_food_info);
TableBean.DataBean tableBean = OpenTableManage.getDefault().getTableBean();
tableNum.setText(tableBean.getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
orderData.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
checkOutTime.setText(TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT));
FoodAdapter foodAdapter = new FoodAdapter(foodList);
rvFood.setLayoutManager(new LinearLayoutManager(context));
rvFood.setAdapter(foodAdapter);
List<BillingBean> billingBeans = new ArrayList<>();
if (billingBeans.size() <= 0) {
line_food_info.setVisibility(View.GONE);
} else {
BillAdapter billAdapter = new BillAdapter(billingBeans);
rvBillAmount.setLayoutManager(new LinearLayoutManager(context));
rvBillAmount.setAdapter(billAdapter);
}
if (OpenTableManage.getDefault().getTableBean() != null) {
tableNum.setText(OpenTableManage.getDefault().getTableBean().getTableName());
people.setText(OpenTableManage.getDefault().getPeopleNumber() + "");
}
if (MyOrderManage.getInstance().getOrderId() != -1) {
orderNum.setText(MyOrderManage.getInstance().getOrderId() + "");
}
BigDecimal totalAmount = new BigDecimal(0);
for (OrderDetail OrderDetail : foodList) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(OrderDetail.getPrice(), OrderDetail.getNumber()));
}
//總金額
mTvTotalAmount.setText(totalAmount + "");
//加载条形码
// ImageView ivBarCode = view.findViewById(R.id.iv_bar_code);
// ivBarCode.setImageBitmap(BitmapUtil.generateBitmap("12312112131", 2, 450, 150));
return viewToBitmap(context, view);
}
}
package com.joe.print.mvp.print;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.LinearLayout;
import com.joe.print.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 測試頁打印
*/
public class PrintTest extends PrinterInIt {
@Override
public Map<String, List<Bitmap>> getPrintBitmap(Context mContext) {
Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
List<Bitmap> bitmaps = new ArrayList<>();
bitmaps.add(getTestPrintBitmap(mContext));
bitmapMaps.put("", bitmaps);
return bitmapMaps;
}
/**
* 獲取測試打印bitmap
*
* @param context
* @return
*/
private Bitmap getTestPrintBitmap(Context context) {
View view = LinearLayout.inflate(context, R.layout.print_test, null);
return viewToBitmap(context, view);
}
}
...@@ -82,6 +82,8 @@ public class PrintUtils { ...@@ -82,6 +82,8 @@ public class PrintUtils {
private static List<Bitmap> getKitchenBitmap(Context mContext) { private static List<Bitmap> getKitchenBitmap(Context mContext) {
List<Bitmap> bitmaps = new ArrayList<>(); List<Bitmap> bitmaps = new ArrayList<>();
// Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
List<OrderDetail> orderDetails = MyOrderManage.getInstance().getNewFoodList(); List<OrderDetail> orderDetails = MyOrderManage.getInstance().getNewFoodList();
if (orderDetails != null) { if (orderDetails != null) {
//廚房單,可能會有多個IP打印 //廚房單,可能會有多個IP打印
...@@ -152,17 +154,21 @@ public class PrintUtils { ...@@ -152,17 +154,21 @@ public class PrintUtils {
//通過打印位置生成多張用於打印的bitmap //通過打印位置生成多張用於打印的bitmap
for (Map.Entry<String, List<OrderDetail>> entry : foodMaps.entrySet()) { for (Map.Entry<String, List<OrderDetail>> entry : foodMaps.entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
// List<Bitmap> bitmaps1 = new ArrayList<>();
if (key.contains("*")) { if (key.contains("*")) {
//如果帶*號,這個集合就需要切紙,每個食品都需要單獨在一張廚房單上 //如果帶*號,這個集合就需要切紙,每個食品都需要單獨在一張廚房單上
for (OrderDetail orderDetail : entry.getValue()) { for (OrderDetail orderDetail : entry.getValue()) {
List<OrderDetail> orders = new ArrayList<>();//這裡new集合是因為下面的方法需要的參數是list集合 List<OrderDetail> orders = new ArrayList<>();//這裡new集合是因為下面的方法需要的參數是list集合
orders.add(orderDetail); orders.add(orderDetail);
bitmaps.add(PrintUtils.getKitChenPrintBitmap(mContext, orders)); bitmaps.add(PrintUtils.getKitChenPrintBitmap(mContext, orders));
// bitmaps1.add(PrintUtils.getKitChenPrintBitmap(mContext, orders));
} }
} else { } else {
//不帶*號,所有同樣廚房位置的食品都在一張紙上 //不帶*號,所有同樣廚房位置的食品都在一張紙上
bitmaps.add(PrintUtils.getKitChenPrintBitmap(mContext, entry.getValue())); bitmaps.add(PrintUtils.getKitChenPrintBitmap(mContext, entry.getValue()));
// bitmaps1.add(PrintUtils.getKitChenPrintBitmap(mContext, entry.getValue()));
} }
// bitmapMaps.put(key, bitmaps1);
} }
} }
//通過遍歷map進行打印 //通過遍歷map進行打印
......
...@@ -18,7 +18,7 @@ import java.util.List; ...@@ -18,7 +18,7 @@ import java.util.List;
/** /**
* Created by Wyh on 2020/1/9. * Created by Wyh on 2020/1/9.
* 送單打印 * ip打印類
*/ */
public class SendPrint implements PrintDataMaker { public class SendPrint implements PrintDataMaker {
......
...@@ -14,9 +14,9 @@ import java.util.ArrayList; ...@@ -14,9 +14,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* 打印測試
* 测试数据生成 * 测试数据生成
*/ */
public class TestPrintDataMaker implements PrintDataMaker { public class TestPrintDataMaker implements PrintDataMaker {
private Context context; private Context context;
......
...@@ -22,6 +22,7 @@ import androidx.annotation.Nullable; ...@@ -22,6 +22,7 @@ import androidx.annotation.Nullable;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult; import com.billy.cc.core.component.CCResult;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.PrintExecutor; import com.gingersoft.gsa.cloud.print.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder; import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.PrinterWriter58mm; import com.gingersoft.gsa.cloud.print.PrinterWriter58mm;
...@@ -132,15 +133,16 @@ public class IpPrintActivity extends Activity implements PrintSocketHolder.OnSta ...@@ -132,15 +133,16 @@ public class IpPrintActivity extends Activity implements PrintSocketHolder.OnSta
} }
public void printOrder(Context context) { public void printOrder(Context context) {
PrinterDeviceBean printerDeviceBean = new PrinterDeviceBean("", null, ip, port, type);
if (executor == null) { if (executor == null) {
executor = new PrintExecutor(ip, port, paperType); executor = new PrintExecutor(printerDeviceBean, paperType);
executor.setOnStateChangedListener(this); executor.setOnStateChangedListener(this);
executor.setOnPrintResultListener(this); executor.setOnPrintResultListener(this);
} }
if (maker == null) { if (maker == null) {
maker = new SendPrint(context, 255, printWidth, type); maker = new SendPrint(context, 255, printWidth, type);
} }
executor.setIp(ip, port); executor.setIp(printerDeviceBean);
if (type == -1) { if (type == -1) {
executor.doPrinterRequestAsync(new TestPrintDataMaker(context, 380, 255)); executor.doPrinterRequestAsync(new TestPrintDataMaker(context, 380, 255));
} else { } else {
...@@ -149,7 +151,7 @@ public class IpPrintActivity extends Activity implements PrintSocketHolder.OnSta ...@@ -149,7 +151,7 @@ public class IpPrintActivity extends Activity implements PrintSocketHolder.OnSta
} }
@Override @Override
public void onResult(int errorCode) { public void onResult(int errorCode, PrinterDeviceBean printerDeviceBean) {
String tip; String tip;
switch (errorCode) { switch (errorCode) {
case PrintSocketHolder.ERROR_0: case PrintSocketHolder.ERROR_0:
...@@ -189,7 +191,7 @@ public class IpPrintActivity extends Activity implements PrintSocketHolder.OnSta ...@@ -189,7 +191,7 @@ public class IpPrintActivity extends Activity implements PrintSocketHolder.OnSta
} }
@Override @Override
public void onStateChanged(int state) { public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
String tip = "打印中..."; String tip = "打印中...";
switch (state) { switch (state) {
case PrintSocketHolder.STATE_0: case PrintSocketHolder.STATE_0:
......
...@@ -16,6 +16,7 @@ import androidx.annotation.Nullable; ...@@ -16,6 +16,7 @@ import androidx.annotation.Nullable;
import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication; import com.gingersoft.gsa.cloud.base.application.GsaCloudApplication;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils; import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.jess.arms.base.BaseActivity; import com.jess.arms.base.BaseActivity;
...@@ -42,6 +43,8 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -42,6 +43,8 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implements PrinterAddContract.View, View.OnClickListener { public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implements PrinterAddContract.View, View.OnClickListener {
// EditText ipEdit1, ipEdit2, ipEdit3, ipEdit4; // EditText ipEdit1, ipEdit2, ipEdit3, ipEdit4;
@BindView(R2.id.add_printer_ed_name)
EditText mEdPrintName;
@BindViews({R2.id.ip_edit_1, R2.id.ip_edit_2, R2.id.ip_edit_3, R2.id.ip_edit_4}) @BindViews({R2.id.ip_edit_1, R2.id.ip_edit_2, R2.id.ip_edit_3, R2.id.ip_edit_4})
EditText[] ipEdits = new EditText[4]; EditText[] ipEdits = new EditText[4];
@BindView(R2.id.add_printer_topbar) @BindView(R2.id.add_printer_topbar)
...@@ -53,9 +56,11 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem ...@@ -53,9 +56,11 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@BindView(R2.id.printer_type) @BindView(R2.id.printer_type)
RadioGroup rgPaperType; RadioGroup rgPaperType;
private PrinterDeviceBean printerDeviceBean; private PrinterDeviceBean printerDeviceBean;
private boolean isEditPrinter = false;//是否是編輯打印機 private boolean isEditPrinter = false;//是否是編輯打印機
private boolean isDefault = false;//是否是默認打印機 private boolean isDefault = false;//是否是默認打印機
@Override @Override
public void setupActivityComponent(@NonNull AppComponent appComponent) { public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerPrinterAddComponent //如找不到该类,请编译一下项目 DaggerPrinterAddComponent //如找不到该类,请编译一下项目
...@@ -85,6 +90,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem ...@@ -85,6 +90,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
// } // }
//如果不為空,則是編輯打印機,初始化信息 //如果不為空,則是編輯打印機,初始化信息
if (printerDeviceBean != null) { if (printerDeviceBean != null) {
mEdPrintName.setText(String.valueOf(printerDeviceBean.getName()));
ips = printerDeviceBean.getIp().split("[.]"); ips = printerDeviceBean.getIp().split("[.]");
etPort.setText(printerDeviceBean.getPort() + ""); etPort.setText(printerDeviceBean.getPort() + "");
if (printerDeviceBean.getType() == 1) { if (printerDeviceBean.getType() == 1) {
...@@ -168,7 +174,10 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem ...@@ -168,7 +174,10 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (v.getId() == R.id.printer_add || v.getId() == R.id.print_test) { if (v.getId() == R.id.printer_add || v.getId() == R.id.print_test) {
if (mEdPrintName.getText().toString().contains("/")) {
ToastUtils.show(mContext, "打印機名稱禁止帶/字符");
return;
}
//保存打印機信息 //保存打印機信息
StringBuilder ipAddress = new StringBuilder(); StringBuilder ipAddress = new StringBuilder();
for (EditText editText : ipEdits) { for (EditText editText : ipEdits) {
...@@ -189,19 +198,27 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem ...@@ -189,19 +198,27 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
if (rgPaperType.getCheckedRadioButtonId() != R.id.print_paper_size_58) { if (rgPaperType.getCheckedRadioButtonId() != R.id.print_paper_size_58) {
paperType = 2; paperType = 2;
} }
String port = etPort.getText().toString();
PrinterDeviceBean deviceBean;
if (TextUtil.isEmptyOrNullOrUndefined(port)) {
deviceBean = new PrinterDeviceBean(mEdPrintName.getText().toString().trim(), printerDeviceBean.getId(), GsaCloudApplication.getRestaurantId(mContext), ipAddress.substring(0, ipAddress.lastIndexOf(".")), null, paperType);
} else {
deviceBean = new PrinterDeviceBean(mEdPrintName.getText().toString().trim(), printerDeviceBean.getId(), GsaCloudApplication.getRestaurantId(mContext), ipAddress.substring(0, ipAddress.lastIndexOf(".")), Integer.parseInt(port), paperType);
}
//添加打印機 //添加打印機
if (v.getId() == R.id.printer_add) { if (v.getId() == R.id.printer_add) {
if (isEditPrinter && printerDeviceBean != null) { if (isEditPrinter && printerDeviceBean != null) {
mPresenter.updatePrinterInfo(printerDeviceBean.getId(), GsaCloudApplication.getRestaurantId(mContext), ipAddress.substring(0, ipAddress.lastIndexOf(".")), etPort.getText().toString(), paperType); deviceBean.setRestaurantId(null);
mPresenter.updatePrinterInfo(deviceBean);
} else { } else {
mPresenter.addPrinter(GsaCloudApplication.getRestaurantId(mContext), ipAddress.substring(0, ipAddress.lastIndexOf(".")), etPort.getText().toString(), paperType); mPresenter.addPrinter(deviceBean);
} }
} else if (v.getId() == R.id.print_test) { } else if (v.getId() == R.id.print_test) {
//打印測試 //打印測試
Intent intent = new Intent(mContext, IpPrintActivity.class); Intent intent = new Intent(mContext, PrintActivity.class);
intent.putExtra("ip", ipAddress.substring(0, ipAddress.lastIndexOf("."))); intent.putExtra("deviceBean", deviceBean);
intent.putExtra("port", Integer.parseInt(etPort.getText().toString()));
intent.putExtra("paperType", paperType);
startActivity(intent); startActivity(intent);
} }
} }
...@@ -227,7 +244,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem ...@@ -227,7 +244,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@Override @Override
public void updatePrinterSuccess(PrinterDeviceBean item) { public void updatePrinterSuccess(PrinterDeviceBean item) {
//修改打印機成功,如果這個打印機是用戶設置的默認打印機,則需要更新信息 //修改打印機成功,如果這個打印機是用戶設置的默認打印機,則需要更新信息
if(isDefault){ if (isDefault) {
SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_IP, item.getIp()); SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_IP, item.getIp());
SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_PORT, item.getPort()); SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_PORT, item.getPort());
SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_PAPER, item.getType()); SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_PAPER, item.getType());
......
...@@ -81,13 +81,12 @@ public class PrinterListActivity extends BaseActivity<PrintListPresenter> implem ...@@ -81,13 +81,12 @@ public class PrinterListActivity extends BaseActivity<PrintListPresenter> implem
private void initViewPager() { private void initViewPager() {
List<String> titles = new ArrayList<>(); List<String> titles = new ArrayList<>();
List<Fragment> mFragments = new ArrayList<>(); List<Fragment> mFragments = new ArrayList<>();
mFragments.add(IpPrintListActivityFragment.newInstance());
if (PrintUtils.isPrintDevice()) { if (PrintUtils.isPrintDevice()) {
titles.add("本機打印"); titles.add("本機打印");
mFragments.add(LocalPrintFragment.newInstance()); mFragments.add(LocalPrintFragment.newInstance());
} }
titles.add("網絡打印"); titles.add("網絡打印");
mFragments.add(IpPrintListActivityFragment.newInstance());
//实例化适配器 //实例化适配器
mTabFragmentAdapter = new TabFragmentAdapter(getSupportFragmentManager(), 1); mTabFragmentAdapter = new TabFragmentAdapter(getSupportFragmentManager(), 1);
......
...@@ -2,6 +2,8 @@ package com.joe.print.mvp.ui.adapter; ...@@ -2,6 +2,8 @@ package com.joe.print.mvp.ui.adapter;
import android.content.Context; import android.content.Context;
import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder; import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
...@@ -9,8 +11,6 @@ import com.joe.print.R; ...@@ -9,8 +11,6 @@ import com.joe.print.R;
import java.util.List; import java.util.List;
import androidx.annotation.Nullable;
/** /**
* Created by Wyh on 2020/1/16. * Created by Wyh on 2020/1/16.
*/ */
...@@ -28,9 +28,4 @@ public class DialogPrinterListAdapter extends BaseQuickAdapter<PrinterDeviceBean ...@@ -28,9 +28,4 @@ public class DialogPrinterListAdapter extends BaseQuickAdapter<PrinterDeviceBean
helper.setText(R.id.tv_printer_ip, String.format(mContext.getString(R.string.print_ip), 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.setText(R.id.tv_printer_port, String.format(mContext.getString(R.string.print_port), item.getPort() + ""));
} }
public void notifyData(List<PrinterDeviceBean> data) {
this.mData = data;
super.notifyDataSetChanged();
}
} }
package com.joe.print.mvp.ui.adapter;
import android.view.View;
import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.joe.print.R;
import java.util.ArrayList;
import java.util.List;
public class PrintFailListAdapter extends BaseQuickAdapter<PrinterDeviceBean, BaseViewHolder> {
/**
* 0:打印失敗
* 1:打印中,這時候重試按鈕和切換打印機按鈕都不顯示,顯示progress
* 2:打印完成,刪除這條數據
*/
private List<Integer> printStatus = new ArrayList<>();
private onTryAgainPrintListenter tryAgainPrintListenter;
private onSwitchPrintListenter switchPrintListenter;
public PrintFailListAdapter(@Nullable List<PrinterDeviceBean> data) {
super(R.layout.item_print_fail_layout, data);
assert data != null;
for (int i = 0; i < data.size(); i++) {
printStatus.add(0);
}
}
@Override
public void remove(int position) {
printStatus.remove(position);
super.remove(position);
}
public void setTryAgainPrintListenter(onTryAgainPrintListenter tryAgainPrintListenter) {
this.tryAgainPrintListenter = tryAgainPrintListenter;
}
public void setSwitchPrintListenter(onSwitchPrintListenter switchPrintListenter) {
this.switchPrintListenter = switchPrintListenter;
}
public void setItemStatus(int position, int stauts) {
if (position < printStatus.size()) {
printStatus.set(position, stauts);
}
super.notifyItemChanged(position);
}
@Override
protected void convert(BaseViewHolder helper, PrinterDeviceBean item) {
helper.setText(R.id.tv_print_device_name, item.getName());
if (tryAgainPrintListenter != null)
helper.getView(R.id.tv_try_again_btn).setOnClickListener(v -> {
tryAgainPrintListenter.onClick(helper.getAdapterPosition());
setItemStatus(helper.getAdapterPosition(), 1);
});
if (switchPrintListenter != null)
helper.getView(R.id.tv_switch_print_btn).setOnClickListener(v -> switchPrintListenter.onClick(helper.getAdapterPosition()));
if (printStatus.get(helper.getAdapterPosition()) == 1) {
helper.getView(R.id.loading_progress).setVisibility(View.VISIBLE);
helper.getView(R.id.tv_print_status).setVisibility(View.VISIBLE);
helper.getView(R.id.tv_try_again_btn).setVisibility(View.GONE);
helper.getView(R.id.tv_switch_print_btn).setVisibility(View.GONE);
} else {
helper.getView(R.id.loading_progress).setVisibility(View.GONE);
helper.getView(R.id.tv_print_status).setVisibility(View.GONE);
helper.getView(R.id.tv_try_again_btn).setVisibility(View.VISIBLE);
helper.getView(R.id.tv_switch_print_btn).setVisibility(View.VISIBLE);
}
}
public interface onTryAgainPrintListenter {
void onClick(int position);
}
public interface onSwitchPrintListenter {
void onClick(int position);
}
}
package com.joe.print.mvp.ui.adapter;
import android.graphics.Bitmap;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.joe.print.R;
import java.util.List;
public class PrintFileBitmapAdapter extends BaseQuickAdapter<Bitmap, BaseViewHolder> {
public PrintFileBitmapAdapter(@Nullable List<Bitmap> data) {
super(R.layout.print_fail_img_item, data);
}
@Override
protected void convert(BaseViewHolder helper, Bitmap item) {
((ImageView) helper.getView(R.id.iv_print_fail)).setImageBitmap(item);
}
}
...@@ -59,7 +59,7 @@ public class PrinterListAdapter extends BaseQuickAdapter<PrinterDeviceBean, Base ...@@ -59,7 +59,7 @@ public class PrinterListAdapter extends BaseQuickAdapter<PrinterDeviceBean, Base
((RadioButton) helper.getView(R.id.cb_printer_item)).setChecked(false); ((RadioButton) helper.getView(R.id.cb_printer_item)).setChecked(false);
} }
helper.setText(R.id.tv_printer_name, item.getIp() + ""); helper.setText(R.id.tv_printer_name, item.getName() + "");
helper.setText(R.id.tv_printer_ip, String.format(mContext.getString(R.string.print_ip), item.getIp())); helper.setText(R.id.tv_printer_ip, String.format(mContext.getString(R.string.print_ip), item.getIp()));
if (item.getPort() == null) { if (item.getPort() == null) {
helper.setText(R.id.tv_printer_port, String.format(mContext.getString(R.string.print_port), "")); helper.setText(R.id.tv_printer_port, String.format(mContext.getString(R.string.print_port), ""));
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/dp_4" />
<solid android:color="@color/theme_red_color" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/dp_4" />
<solid android:color="@color/theme_color" />
</shape>
\ No newline at end of file
<?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:gravity="center"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_print_fail_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_white_eight_corners_bg" />
<ImageView
android:id="@+id/iv_close_dialog"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_20"
android:padding="@dimen/dp_10"
android:src="@drawable/dialog_close" />
</LinearLayout>
<?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="wrap_content"
android:orientation="horizontal"
android:padding="@dimen/dp_10">
<TextView
android:id="@+id/tv_print_device_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="K1"
android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_16" />
<ProgressBar
android:id="@+id/loading_progress"
android:layout_width="@dimen/dp_15"
android:layout_height="@dimen/dp_15"
android:layout_gravity="center_vertical" />
<TextView
android:id="@+id/tv_print_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打印中..."
android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_16" />
<TextView
android:id="@+id/tv_try_again_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_error_color_bg"
android:paddingLeft="@dimen/dp_10"
android:paddingTop="@dimen/dp_5"
android:paddingRight="@dimen/dp_10"
android:paddingBottom="@dimen/dp_5"
android:text="重試"
android:textColor="@color/white"
android:textSize="@dimen/dp_16" />
<TextView
android:id="@+id/tv_switch_print_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_10"
android:background="@drawable/shape_theme_color_bg"
android:paddingLeft="@dimen/dp_10"
android:paddingTop="@dimen/dp_5"
android:paddingRight="@dimen/dp_10"
android:paddingBottom="@dimen/dp_5"
android:text="切換打印機"
android:textColor="@color/white"
android:textSize="@dimen/dp_16" />
</LinearLayout>
\ No newline at end of file
<?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="wrap_content"
android:orientation="vertical"
android:padding="@dimen/dp_10">
<ImageView
android:id="@+id/iv_print_fail"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
\ No newline at end of file
...@@ -22,6 +22,40 @@ ...@@ -22,6 +22,40 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="0.3" android:layout_weight="0.3"
android:text="名稱"
android:textColor="@color/normal_color"
android:textSize="@dimen/dp_14"
android:textStyle="bold" />
<EditText
android:id="@+id/add_printer_ed_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_weight="0.7"
android:background="@null"
android:hint="請輸入打印機名稱"
android:maxLines="1"
android:textColor="@color/normal_color"
android:textColorHint="@color/hint_color"
android:textSize="@dimen/dp_14">
<requestFocus />
</EditText>
</LinearLayout>
<include layout="@layout/include_horizontal_color_ccc_dividing_line" />
<LinearLayout
style="@style/print_add_printer_input_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:text="打印機IP" android:text="打印機IP"
android:textColor="@color/normal_color" android:textColor="@color/normal_color"
android:textSize="@dimen/dp_14" android:textSize="@dimen/dp_14"
...@@ -46,10 +80,7 @@ ...@@ -46,10 +80,7 @@
android:text="192" android:text="192"
android:textColor="@color/normal_color" android:textColor="@color/normal_color"
android:textCursorDrawable="@null" android:textCursorDrawable="@null"
android:textSize="@dimen/dp_15"> android:textSize="@dimen/dp_15" />
<requestFocus />
</EditText>
<TextView <TextView
android:id="@+id/dot_1" android:id="@+id/dot_1"
......
...@@ -4,7 +4,6 @@ apply plugin: 'kotlin-android-extensions' ...@@ -4,7 +4,6 @@ apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android' apply plugin: 'kotlin-android'
apply plugin: 'com.jakewharton.butterknife' apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'org.greenrobot.greendao' apply plugin: 'org.greenrobot.greendao'
apply plugin: 'android-aspectjx'
android { android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"] compileSdkVersion rootProject.ext.android["compileSdkVersion"]
......
package com.gingersoft.gsa.cloud.aspectj; package com.gingersoft.gsa.cloud.aspectj;
import android.util.Log;
import android.view.View; import android.view.View;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
...@@ -32,6 +33,7 @@ public class SingleClickAspect { ...@@ -32,6 +33,7 @@ public class SingleClickAspect {
@Around("methodAnnotated()") @Around("methodAnnotated()")
public void aroundJoinPoint(ProceedingJoinPoint joinPoint) throws Throwable { public void aroundJoinPoint(ProceedingJoinPoint joinPoint) throws Throwable {
// 取出方法的参数 // 取出方法的参数
Log.e("eee", "執行aroundJoinPoint");
View view = null; View view = null;
for (Object arg : joinPoint.getArgs()) { for (Object arg : joinPoint.getArgs()) {
if (arg instanceof View) { if (arg instanceof View) {
......
...@@ -15,6 +15,7 @@ import org.aspectj.lang.annotation.Pointcut; ...@@ -15,6 +15,7 @@ import org.aspectj.lang.annotation.Pointcut;
/** /**
* Created by Wyh on 2020/3/2. * Created by Wyh on 2020/3/2.
* 組件化使用Aspect有問題。
*/ */
@Aspect @Aspect
public class SwitchPrintAspect { public class SwitchPrintAspect {
......
...@@ -6,6 +6,7 @@ import android.os.RemoteException; ...@@ -6,6 +6,7 @@ import android.os.RemoteException;
import android.widget.Toast; import android.widget.Toast;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil; import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.base.utils.view.ImageUtils;
import com.sunmi.peripheral.printer.InnerPrinterCallback; import com.sunmi.peripheral.printer.InnerPrinterCallback;
import com.sunmi.peripheral.printer.InnerPrinterException; import com.sunmi.peripheral.printer.InnerPrinterException;
import com.sunmi.peripheral.printer.InnerPrinterManager; import com.sunmi.peripheral.printer.InnerPrinterManager;
...@@ -180,7 +181,7 @@ public class AidlUtil { ...@@ -180,7 +181,7 @@ public class AidlUtil {
/* /*
*打印图片 *打印图片
*/ */
public void printBitmaps(List<Bitmap> bitmaps, InnerResultCallbcak mInnerResultCallbcak) { public void printBitmaps(List<Bitmap> bitmaps, int paperWidth, InnerResultCallbcak mInnerResultCallbcak) {
if (sunmiPrinterService == null) { if (sunmiPrinterService == null) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show(); Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return; return;
...@@ -189,7 +190,7 @@ public class AidlUtil { ...@@ -189,7 +190,7 @@ public class AidlUtil {
try { try {
sunmiPrinterService.setAlignment(1, null); sunmiPrinterService.setAlignment(1, null);
for (int i = 0; i < bitmaps.size(); i++) { for (int i = 0; i < bitmaps.size(); i++) {
sunmiPrinterService.printBitmap(bitmaps.get(i), mInnerResultCallbcak); sunmiPrinterService.printBitmap(ImageUtils.zoomDrawable(bitmaps.get(i), paperWidth), mInnerResultCallbcak);
sunmiPrinterService.lineWrap(3, null); sunmiPrinterService.lineWrap(3, null);
} }
} catch (RemoteException e) { } catch (RemoteException e) {
......
...@@ -113,6 +113,11 @@ public abstract class DialogUtils { ...@@ -113,6 +113,11 @@ public abstract class DialogUtils {
} }
public DialogUtils setCanceledOnTouchOutside(boolean cancel) {
dialog.setCanceledOnTouchOutside(cancel);
return this;
}
public static class ViewHepler { public static class ViewHepler {
private final SparseArray<View> mViews; private final SparseArray<View> mViews;
private View mConvertView; private View mConvertView;
......
...@@ -21,6 +21,7 @@ public class PrinterDeviceBean implements Serializable { ...@@ -21,6 +21,7 @@ public class PrinterDeviceBean implements Serializable {
@Id(autoincrement = true) @Id(autoincrement = true)
private Long dbid; private Long dbid;
private String name;
private Integer restaurantId; private Integer restaurantId;
private String ip;//ip private String ip;//ip
private Integer port;//端口 private Integer port;//端口
...@@ -30,7 +31,8 @@ public class PrinterDeviceBean implements Serializable { ...@@ -30,7 +31,8 @@ public class PrinterDeviceBean implements Serializable {
public PrinterDeviceBean() { public PrinterDeviceBean() {
} }
public PrinterDeviceBean(int id, Integer restaurantId, String ip, Integer port, int type) { public PrinterDeviceBean(String name, int id, Integer restaurantId, String ip, Integer port, int type) {
this.name = name;
this.id = id; this.id = id;
this.restaurantId = restaurantId; this.restaurantId = restaurantId;
this.ip = ip; this.ip = ip;
...@@ -39,24 +41,34 @@ public class PrinterDeviceBean implements Serializable { ...@@ -39,24 +41,34 @@ public class PrinterDeviceBean implements Serializable {
} }
public PrinterDeviceBean(Integer restaurantId, String ip, Integer port, int type) { public PrinterDeviceBean(String name, Integer restaurantId, String ip, Integer port, int type) {
this.name = name;
this.restaurantId = restaurantId; this.restaurantId = restaurantId;
this.ip = ip; this.ip = ip;
this.port = port; this.port = port;
this.type = type; this.type = type;
} }
@Generated(hash = 1970016969) @Generated(hash = 2107713534)
public PrinterDeviceBean(int id, Long dbid, Integer restaurantId, String ip, Integer port, public PrinterDeviceBean(int id, Long dbid, String name, Integer restaurantId, String ip, Integer port,
int type) { int type) {
this.id = id; this.id = id;
this.dbid = dbid; this.dbid = dbid;
this.name = name;
this.restaurantId = restaurantId; this.restaurantId = restaurantId;
this.ip = ip; this.ip = ip;
this.port = port; this.port = port;
this.type = type; this.type = type;
} }
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() { public int getId() {
return this.id; return this.id;
} }
......
...@@ -26,10 +26,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> { ...@@ -26,10 +26,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
public static class Properties { public static class Properties {
public final static Property Id = new Property(0, int.class, "id", false, "ID"); 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 Dbid = new Property(1, Long.class, "dbid", true, "_id");
public final static Property RestaurantId = new Property(2, Integer.class, "restaurantId", false, "RESTAURANT_ID"); public final static Property Name = new Property(2, String.class, "name", false, "NAME");
public final static Property Ip = new Property(3, String.class, "ip", false, "IP"); public final static Property RestaurantId = new Property(3, Integer.class, "restaurantId", false, "RESTAURANT_ID");
public final static Property Port = new Property(4, Integer.class, "port", false, "PORT"); public final static Property Ip = new Property(4, String.class, "ip", false, "IP");
public final static Property Type = new Property(5, int.class, "type", false, "TYPE"); public final static Property Port = new Property(5, Integer.class, "port", false, "PORT");
public final static Property Type = new Property(6, int.class, "type", false, "TYPE");
} }
...@@ -47,10 +48,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> { ...@@ -47,10 +48,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
db.execSQL("CREATE TABLE " + constraint + "\"PRINTER_DEVICE_BEAN\" (" + // db.execSQL("CREATE TABLE " + constraint + "\"PRINTER_DEVICE_BEAN\" (" + //
"\"ID\" INTEGER NOT NULL ," + // 0: id "\"ID\" INTEGER NOT NULL ," + // 0: id
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 1: dbid "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 1: dbid
"\"RESTAURANT_ID\" INTEGER," + // 2: restaurantId "\"NAME\" TEXT," + // 2: name
"\"IP\" TEXT," + // 3: ip "\"RESTAURANT_ID\" INTEGER," + // 3: restaurantId
"\"PORT\" INTEGER," + // 4: port "\"IP\" TEXT," + // 4: ip
"\"TYPE\" INTEGER NOT NULL );"); // 5: type "\"PORT\" INTEGER," + // 5: port
"\"TYPE\" INTEGER NOT NULL );"); // 6: type
} }
/** Drops the underlying database table. */ /** Drops the underlying database table. */
...@@ -69,21 +71,26 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> { ...@@ -69,21 +71,26 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
stmt.bindLong(2, dbid); stmt.bindLong(2, dbid);
} }
String name = entity.getName();
if (name != null) {
stmt.bindString(3, name);
}
Integer restaurantId = entity.getRestaurantId(); Integer restaurantId = entity.getRestaurantId();
if (restaurantId != null) { if (restaurantId != null) {
stmt.bindLong(3, restaurantId); stmt.bindLong(4, restaurantId);
} }
String ip = entity.getIp(); String ip = entity.getIp();
if (ip != null) { if (ip != null) {
stmt.bindString(4, ip); stmt.bindString(5, ip);
} }
Integer port = entity.getPort(); Integer port = entity.getPort();
if (port != null) { if (port != null) {
stmt.bindLong(5, port); stmt.bindLong(6, port);
} }
stmt.bindLong(6, entity.getType()); stmt.bindLong(7, entity.getType());
} }
@Override @Override
...@@ -96,21 +103,26 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> { ...@@ -96,21 +103,26 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
stmt.bindLong(2, dbid); stmt.bindLong(2, dbid);
} }
String name = entity.getName();
if (name != null) {
stmt.bindString(3, name);
}
Integer restaurantId = entity.getRestaurantId(); Integer restaurantId = entity.getRestaurantId();
if (restaurantId != null) { if (restaurantId != null) {
stmt.bindLong(3, restaurantId); stmt.bindLong(4, restaurantId);
} }
String ip = entity.getIp(); String ip = entity.getIp();
if (ip != null) { if (ip != null) {
stmt.bindString(4, ip); stmt.bindString(5, ip);
} }
Integer port = entity.getPort(); Integer port = entity.getPort();
if (port != null) { if (port != null) {
stmt.bindLong(5, port); stmt.bindLong(6, port);
} }
stmt.bindLong(6, entity.getType()); stmt.bindLong(7, entity.getType());
} }
@Override @Override
...@@ -123,10 +135,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> { ...@@ -123,10 +135,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
PrinterDeviceBean entity = new PrinterDeviceBean( // PrinterDeviceBean entity = new PrinterDeviceBean( //
cursor.getInt(offset + 0), // id cursor.getInt(offset + 0), // id
cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1), // dbid cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1), // dbid
cursor.isNull(offset + 2) ? null : cursor.getInt(offset + 2), // restaurantId cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name
cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // ip cursor.isNull(offset + 3) ? null : cursor.getInt(offset + 3), // restaurantId
cursor.isNull(offset + 4) ? null : cursor.getInt(offset + 4), // port cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // ip
cursor.getInt(offset + 5) // type cursor.isNull(offset + 5) ? null : cursor.getInt(offset + 5), // port
cursor.getInt(offset + 6) // type
); );
return entity; return entity;
} }
...@@ -135,10 +148,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> { ...@@ -135,10 +148,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
public void readEntity(Cursor cursor, PrinterDeviceBean entity, int offset) { public void readEntity(Cursor cursor, PrinterDeviceBean entity, int offset) {
entity.setId(cursor.getInt(offset + 0)); entity.setId(cursor.getInt(offset + 0));
entity.setDbid(cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1)); entity.setDbid(cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1));
entity.setRestaurantId(cursor.isNull(offset + 2) ? null : cursor.getInt(offset + 2)); entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2));
entity.setIp(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3)); entity.setRestaurantId(cursor.isNull(offset + 3) ? null : cursor.getInt(offset + 3));
entity.setPort(cursor.isNull(offset + 4) ? null : cursor.getInt(offset + 4)); entity.setIp(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4));
entity.setType(cursor.getInt(offset + 5)); entity.setPort(cursor.isNull(offset + 5) ? null : cursor.getInt(offset + 5));
entity.setType(cursor.getInt(offset + 6));
} }
@Override @Override
......
...@@ -19,7 +19,8 @@ package com.gingersoft.gsa.cloud.print; ...@@ -19,7 +19,8 @@ package com.gingersoft.gsa.cloud.print;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.os.AsyncTask; import android.os.AsyncTask;
import java.lang.ref.WeakReference; import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import java.util.List; import java.util.List;
/** /**
...@@ -32,15 +33,15 @@ public class PrintExecutor { ...@@ -32,15 +33,15 @@ public class PrintExecutor {
private int mReconnectTimes = 0; private int mReconnectTimes = 0;
private int time = 0; private int time = 0;
private PrintSocketHolder.OnStateChangedListener listener; private PrintSocketHolder.OnStateChangedListener listener;
private WeakReference<OnPrintResultListener> mListener; private OnPrintResultListener mListener;
public PrintExecutor(BluetoothDevice device, int type) { public PrintExecutor(BluetoothDevice device, int type) {
holder = new PrintSocketHolder(device); holder = new PrintSocketHolder(device);
setType(type); setType(type);
} }
public PrintExecutor(String ip, int port, int type) { public PrintExecutor(PrinterDeviceBean printerDeviceBean, int type) {
holder = new PrintSocketHolder(ip, port); holder = new PrintSocketHolder(printerDeviceBean);
setType(type); setType(type);
} }
...@@ -118,12 +119,9 @@ public class PrintExecutor { ...@@ -118,12 +119,9 @@ public class PrintExecutor {
/** /**
* 设置IP及端口 * 设置IP及端口
*
* @param ip IP
* @param port 端口
*/ */
public void setIp(String ip, int port) { public void setIp(PrinterDeviceBean printerDeviceBean) {
holder.setIp(ip, port); holder.setIp(printerDeviceBean);
} }
/** /**
...@@ -168,11 +166,11 @@ public class PrintExecutor { ...@@ -168,11 +166,11 @@ public class PrintExecutor {
* @param listener 回调 * @param listener 回调
*/ */
public void setOnPrintResultListener(OnPrintResultListener listener) { public void setOnPrintResultListener(OnPrintResultListener listener) {
mListener = new WeakReference<>(listener); this.mListener = listener;
} }
public interface OnPrintResultListener { public interface OnPrintResultListener {
void onResult(int errorCode); void onResult(int errorCode, PrinterDeviceBean printerDeviceBean);
} }
private class PrintTask extends AsyncTask<PrintDataMaker, Integer, Integer> implements private class PrintTask extends AsyncTask<PrintDataMaker, Integer, Integer> implements
...@@ -197,7 +195,7 @@ public class PrintExecutor { ...@@ -197,7 +195,7 @@ public class PrintExecutor {
if (values == null || values.length < 1) if (values == null || values.length < 1)
return; return;
if (listener != null) if (listener != null)
listener.onStateChanged(values[0]); listener.onStateChanged(values[0], holder.getPrinterDeviceBean());
} }
@Override @Override
...@@ -216,14 +214,14 @@ public class PrintExecutor { ...@@ -216,14 +214,14 @@ public class PrintExecutor {
private void onResult(int errorCode) { private void onResult(int errorCode) {
try { try {
if (mListener != null) if (mListener != null)
mListener.get().onResult(errorCode); mListener.onResult(errorCode, holder.getPrinterDeviceBean());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
@Override @Override
public void onStateChanged(int state) { public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
publishProgress(state); publishProgress(state);
} }
} }
......
...@@ -21,6 +21,7 @@ import android.bluetooth.BluetoothDevice; ...@@ -21,6 +21,7 @@ import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket; import android.bluetooth.BluetoothSocket;
import com.gingersoft.gsa.cloud.constans.PrintConstans; import com.gingersoft.gsa.cloud.constans.PrintConstans;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
...@@ -36,7 +37,7 @@ import java.util.UUID; ...@@ -36,7 +37,7 @@ import java.util.UUID;
*/ */
@SuppressWarnings({"WeakerAccess", "unused"}) @SuppressWarnings({"WeakerAccess", "unused"})
public class PrintSocketHolder { public class PrintSocketHolder {
public static final int STATE_0 = 0;// 生成测试页面数据 public static final int STATE_0 = 10;// 生成测试页面数据
public static final int STATE_1 = 1;// 创建Socket连接 public static final int STATE_1 = 1;// 创建Socket连接
public static final int STATE_2 = 2;// 获取输出流 public static final int STATE_2 = 2;// 获取输出流
public static final int STATE_3 = 3;// 写入测试页面数据 public static final int STATE_3 = 3;// 写入测试页面数据
...@@ -50,8 +51,9 @@ public class PrintSocketHolder { ...@@ -50,8 +51,9 @@ public class PrintSocketHolder {
public static final int ERROR_6 = -6;// 关闭Socket出错 public static final int ERROR_6 = -6;// 关闭Socket出错
public static final int ERROR_100 = -100;// 失败 public static final int ERROR_100 = -100;// 失败
private static final UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");//蓝牙打印UUID private static final UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");//蓝牙打印UUID
private String ip; // private String ip;
private int port = 9100; // private int port = 9100;
private PrinterDeviceBean printerDeviceBean;
private BluetoothDevice mDevice; private BluetoothDevice mDevice;
private Socket socket; private Socket socket;
private BluetoothSocket bluetoothSocket; private BluetoothSocket bluetoothSocket;
...@@ -62,14 +64,14 @@ public class PrintSocketHolder { ...@@ -62,14 +64,14 @@ public class PrintSocketHolder {
setDevice(device); setDevice(device);
} }
public PrintSocketHolder(String ip, int port) { public PrintSocketHolder(PrinterDeviceBean printerDeviceBean) {
setIp(ip, port); setIp(printerDeviceBean);
} }
@SuppressLint("MissingPermission") @SuppressLint("MissingPermission")
public int createSocket() { public int createSocket() {
onPrinterStateChanged(STATE_1); onPrinterStateChanged(STATE_1);
if (mDevice == null && ip == null) if (mDevice == null && (printerDeviceBean == null || printerDeviceBean.getIp() == null))
return ERROR_5; return ERROR_5;
try { try {
if (mDevice != null) { if (mDevice != null) {
...@@ -77,7 +79,7 @@ public class PrintSocketHolder { ...@@ -77,7 +79,7 @@ public class PrintSocketHolder {
bluetoothSocket.connect(); bluetoothSocket.connect();
} else { } else {
socket = new Socket();//ip, port socket = new Socket();//ip, port
InetSocketAddress socketAddress = new InetSocketAddress(ip, port); InetSocketAddress socketAddress = new InetSocketAddress(printerDeviceBean.getIp(), printerDeviceBean.getPort());
//设置 超时时间 //设置 超时时间
socket.setSoTimeout(PrintConstans.SO_TIMEOUT); socket.setSoTimeout(PrintConstans.SO_TIMEOUT);
socket.connect(socketAddress, PrintConstans.PRINT_TIMEOUT);//开始连接ip socket.connect(socketAddress, PrintConstans.PRINT_TIMEOUT);//开始连接ip
...@@ -200,8 +202,8 @@ public class PrintSocketHolder { ...@@ -200,8 +202,8 @@ public class PrintSocketHolder {
*/ */
public void onPrinterStateChanged(int state) { public void onPrinterStateChanged(int state) {
try { try {
if (mListener != null) if (mListener != null && mListener.get() != null)
mListener.get().onStateChanged(state); mListener.get().onStateChanged(state, printerDeviceBean);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -209,13 +211,26 @@ public class PrintSocketHolder { ...@@ -209,13 +211,26 @@ public class PrintSocketHolder {
/** /**
* 设置IP及端口 * 设置IP及端口
*
* @param ip IP
* @param port 端口
*/ */
public void setIp(String ip, int port) { public void setIp(PrinterDeviceBean printerDeviceBean) {
this.ip = ip; this.printerDeviceBean = printerDeviceBean;
this.port = port; }
// public String getIp() {
// return ip;
// }
//
// public int getPort() {
// return port;
// }
public PrinterDeviceBean getPrinterDeviceBean() {
return printerDeviceBean;
}
public void setPrinterDeviceBean(PrinterDeviceBean printerDeviceBean) {
this.printerDeviceBean = printerDeviceBean;
} }
/** /**
...@@ -237,6 +252,6 @@ public class PrintSocketHolder { ...@@ -237,6 +252,6 @@ public class PrintSocketHolder {
} }
public interface OnStateChangedListener { public interface OnStateChangedListener {
void onStateChanged(int state); void onStateChanged(int state, PrinterDeviceBean printerDeviceBean);
} }
} }
...@@ -16,10 +16,17 @@ ...@@ -16,10 +16,17 @@
package com.gingersoft.gsa.cloud.print; package com.gingersoft.gsa.cloud.print;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Matrix; import android.graphics.Matrix;
import com.gingersoft.gsa.cloud.base.R;
import com.gingersoft.gsa.cloud.base.utils.constans.Constans;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.widget.DialogUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -441,4 +448,25 @@ public class PrinterUtils { ...@@ -441,4 +448,25 @@ public class PrinterUtils {
private static byte charToByte(char c) { private static byte charToByte(char c) {
return (byte) hexStr.indexOf(c); return (byte) hexStr.indexOf(c);
} }
/**
* 顯示修改打印方式的彈窗
* @param context
*/
public static void switchPrintMethod(Context context){
// 顯示切換打印方式的彈窗
new DialogUtils(context, R.layout.print_select_print_method) {
@Override
public void initLayout(ViewHepler hepler, Dialog dialog) {
hepler.setViewClick(R.id.local_print, v -> {
SPUtils.put(dialog.getContext(), Constans.DEFAULT_PRINT_METHOD, Constans.LOCAL_PRINT);
dialog.dismiss();
});
hepler.setViewClick(R.id.internet_print, v -> {
SPUtils.put(dialog.getContext(), Constans.DEFAULT_PRINT_METHOD, Constans.IP_PRINT);
dialog.dismiss();
});
}
}.createDialogView().show();
}
} }
apply from: rootProject.file('cc-settings.gradle') apply from: rootProject.file('cc-settings.gradle')
apply plugin: 'com.jakewharton.butterknife' apply plugin: 'com.jakewharton.butterknife'
android { android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"] compileSdkVersion rootProject.ext.android["compileSdkVersion"]
......
...@@ -18,14 +18,13 @@ import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage; ...@@ -18,14 +18,13 @@ import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.database.bean.Function; import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.print.PrinterUtils;
import com.gingersoft.gsa.cloud.table.app.GoldConstants; import com.gingersoft.gsa.cloud.table.app.GoldConstants;
import com.gingersoft.gsa.cloud.table.mvp.contract.OrderContentContract; import com.gingersoft.gsa.cloud.table.mvp.contract.OrderContentContract;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose; import com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.TableDetail; import com.gingersoft.gsa.cloud.table.mvp.model.bean.TableDetail;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.AddOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest; import com.gingersoft.gsa.cloud.table.mvp.model.bean.request.CreateOrderRequest;
import com.gingersoft.gsa.cloud.table.mvp.model.constant.MealConstant;
import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil; import com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity; import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
...@@ -38,8 +37,6 @@ import com.jess.arms.di.scope.ActivityScope; ...@@ -38,8 +37,6 @@ import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.scwang.smartrefresh.layout.api.RefreshLayout; import com.scwang.smartrefresh.layout.api.RefreshLayout;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -157,6 +154,14 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -157,6 +154,14 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
} }
} }
}); });
mOrderTopFunctionAdapter.setmOnLongClickListener((v, position) -> {
if (mFunctionList != null) {
if (mFunctionList.get(position).getResName().equals("印單") || mFunctionList.get(position).getResName().equals("送單")) {
PrinterUtils.switchPrintMethod(v.getContext());
}
}
return false;
});
} }
public void initTopFunctionData() { public void initTopFunctionData() {
......
package com.gingersoft.gsa.cloud.table.mvp.ui.activity; package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Build; import android.os.Build;
...@@ -38,14 +37,13 @@ import com.gingersoft.gsa.cloud.base.common.bean.TableBean; ...@@ -38,14 +37,13 @@ import com.gingersoft.gsa.cloud.base.common.bean.TableBean;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage;
import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage; import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils; import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.base.utils.constans.Constans;
import com.gingersoft.gsa.cloud.base.utils.other.SPUtils; import com.gingersoft.gsa.cloud.base.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.base.widget.DialogUtils;
import com.gingersoft.gsa.cloud.database.bean.Food; import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils; import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils; import com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils; import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodModifierDaoUtils; import com.gingersoft.gsa.cloud.database.utils.FoodModifierDaoUtils;
import com.gingersoft.gsa.cloud.print.PrinterUtils;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.app.GoldConstants; import com.gingersoft.gsa.cloud.table.app.GoldConstants;
...@@ -1004,28 +1002,11 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen ...@@ -1004,28 +1002,11 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
map.put(MealConstant.fine_tabs_ViewMode, rl_fine_tabs); map.put(MealConstant.fine_tabs_ViewMode, rl_fine_tabs);
map.put(MealConstant.ViewMode_keys, keyView); map.put(MealConstant.ViewMode_keys, keyView);
// @SwitchPrintMethod
btn_send_order.setOnLongClickListener(v -> { btn_send_order.setOnLongClickListener(v -> {
new DialogUtils(mContext, R.layout.print_select_print_method) { PrinterUtils.switchPrintMethod(mContext);
@Override
public void initLayout(ViewHepler hepler, Dialog dialog) {
hepler.setViewClick(R.id.local_print, v -> {
SPUtils.put(mContext, Constans.DEFAULT_PRINT_METHOD, Constans.LOCAL_PRINT);
dialog.dismiss();
});
hepler.setViewClick(R.id.internet_print, v -> {
SPUtils.put(mContext, Constans.DEFAULT_PRINT_METHOD, Constans.IP_PRINT);
dialog.dismiss();
});
}
}.createDialogView().show();
return false; return false;
}); });
// btn_send_order.setOnLongClickListener(new View.OnLongClickListener() {
// @Override
// public boolean onLongClick(View v) {
// return false;
// }
// });
} }
public FoodGroupAdapter getFoodGroupGridViewAdapter() { public FoodGroupAdapter getFoodGroupGridViewAdapter() {
......
...@@ -24,6 +24,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage; ...@@ -24,6 +24,7 @@ import com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage;
import com.gingersoft.gsa.cloud.base.utils.VibratorUtils; import com.gingersoft.gsa.cloud.base.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.base.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.base.utils.log.LogUtil; import com.gingersoft.gsa.cloud.base.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.print.PrinterUtils;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.R2; import com.gingersoft.gsa.cloud.table.R2;
import com.gingersoft.gsa.cloud.table.app.payment.PayConstant; import com.gingersoft.gsa.cloud.table.app.payment.PayConstant;
...@@ -62,6 +63,7 @@ import javax.inject.Inject; ...@@ -62,6 +63,7 @@ import javax.inject.Inject;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import butterknife.OnLongClick;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
...@@ -78,7 +80,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -78,7 +80,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements OrderPayContract.View { public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements OrderPayContract.View, View.OnLongClickListener {
@Inject @Inject
AppManager mAppManager; AppManager mAppManager;
...@@ -284,6 +286,21 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -284,6 +286,21 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
} }
} }
@Override
@OnLongClick({R2.id.btn_sure_pay})
public boolean onLongClick(View v) {
if (v.getId() == R.id.btn_sure_pay) {
PrinterUtils.switchPrintMethod(mContext);
}
return false;
}
//
// @SwitchPrintMethod
// public void switchPrint(View v) {
//
// PrinterUtils.switchPrintMethod(mContext);
// }
private void backPressed() { private void backPressed() {
// if (isPrepay) { // if (isPrepay) {
// //恢復預結賬前的食品 // //恢復預結賬前的食品
...@@ -685,4 +702,5 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -685,4 +702,5 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
public void onPointerCaptureChanged(boolean hasCapture) { public void onPointerCaptureChanged(boolean hasCapture) {
} }
} }
...@@ -2,7 +2,6 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.adapter; ...@@ -2,7 +2,6 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.adapter;
import android.content.Context; import android.content.Context;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import com.gingersoft.gsa.cloud.database.bean.Function; import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
...@@ -10,7 +9,6 @@ import com.gingersoft.gsa.cloud.table.R2; ...@@ -10,7 +9,6 @@ import com.gingersoft.gsa.cloud.table.R2;
import com.jess.arms.base.BaseHolder; import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter; import com.jess.arms.base.DefaultAdapter;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton; import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import java.util.List; import java.util.List;
...@@ -65,7 +63,6 @@ public class OrderTopFunctionAdapter extends DefaultAdapter<Function> { ...@@ -65,7 +63,6 @@ public class OrderTopFunctionAdapter extends DefaultAdapter<Function> {
btn_name.setTextColor(datasBean.getTextColor()); btn_name.setTextColor(datasBean.getTextColor());
btn_name.setBackgroundColor(datasBean.getBackgroundColor()); btn_name.setBackgroundColor(datasBean.getBackgroundColor());
btn_name.setTextSize(datasBean.getTextSize()); btn_name.setTextSize(datasBean.getTextSize());
} }
} }
......
ext.mainApp = true //设置为true,表示此module为主app module,一直以application方式编译 ext.mainApp = true //设置为true,表示此module为主app module,一直以application方式编译
apply from: rootProject.file("cc-settings.gradle") apply from: rootProject.file("cc-settings.gradle")
apply plugin: 'com.jakewharton.butterknife' apply plugin: 'com.jakewharton.butterknife'
//apply plugin: 'android-aspectjx'
android { android {
signingConfigs { signingConfigs {
GSAndroidNew { GSAndroidNew {
...@@ -84,7 +83,6 @@ dependencies { ...@@ -84,7 +83,6 @@ dependencies {
addComponent 'other_order_mode' addComponent 'other_order_mode'
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"] annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]
implementation rootProject.ext.dependencies["autosize"] implementation rootProject.ext.dependencies["autosize"]
implementation rootProject.ext.dependencies["fastjson"] implementation rootProject.ext.dependencies["fastjson"]
......
...@@ -113,7 +113,7 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem ...@@ -113,7 +113,7 @@ public class WelcomeActivity extends LoginInterfaceImpl<WelcomePresenter> implem
} }
}); });
guideBeanList.add(new GuideBean("多终端云同步,轻松管理所有", "為您搭建優良高效管理平台", getResources().getDrawable(R.mipmap.pic_guide_one))); guideBeanList.add(new GuideBean("多終端雲同步,輕鬆管理所有", "為您搭建優良高效管理平台", getResources().getDrawable(R.mipmap.pic_guide_one)));
guideBeanList.add(new GuideBean("數據分析可視化", "數據統計一目了然,直觀看到數據變化趨勢", getResources().getDrawable(R.mipmap.pic_guide_two))); guideBeanList.add(new GuideBean("數據分析可視化", "數據統計一目了然,直觀看到數據變化趨勢", getResources().getDrawable(R.mipmap.pic_guide_two)));
guideBeanList.add(new GuideBean("多種點餐方式", "提供方便快捷的點餐服務,減低落錯單機會", getResources().getDrawable(R.mipmap.pic_guide_three))); guideBeanList.add(new GuideBean("多種點餐方式", "提供方便快捷的點餐服務,減低落錯單機會", getResources().getDrawable(R.mipmap.pic_guide_three)));
GuideAdapter adapter = new GuideAdapter(mContext, guideBeanList); GuideAdapter adapter = new GuideAdapter(mContext, guideBeanList);
......
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