Commit 414e7e7d by Wyh

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

parent 3bebf347
......@@ -17,11 +17,11 @@ package com.jess.arms.base;
import android.view.View;
import androidx.recyclerview.widget.RecyclerView;
import com.jess.arms.utils.ThirdViewUtil;
import com.zhy.autolayout.utils.AutoUtils;
import androidx.recyclerview.widget.RecyclerView;
/**
* ================================================
* 基类 {@link RecyclerView.ViewHolder}
......@@ -33,11 +33,18 @@ import androidx.recyclerview.widget.RecyclerView;
*/
public abstract class BaseHolder<T> extends RecyclerView.ViewHolder implements View.OnClickListener {
protected OnViewClickListener mOnViewClickListener = null;
protected DefaultAdapter.OnLongClickListener mOnLongClickListener = null;
protected final String TAG = this.getClass().getSimpleName();
public BaseHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);//点击事件
itemView.setOnLongClickListener(v -> {
if (mOnLongClickListener != null) {
mOnLongClickListener.onLongClick(v, getAdapterPosition());
}
return false;
});
if (ThirdViewUtil.USE_AUTOLAYOUT == 1) AutoUtils.autoSize(itemView);//适配z
ThirdViewUtil.bindTarget(this, itemView);//绑定
}
......@@ -62,7 +69,7 @@ public abstract class BaseHolder<T> extends RecyclerView.ViewHolder implements V
@Override
public void onClick(View view) {
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
public void setOnItemClickListener(OnViewClickListener listener) {
this.mOnViewClickListener = listener;
}
public void setmOnLongClickListener(DefaultAdapter.OnLongClickListener mOnLongClickListener) {
this.mOnLongClickListener = mOnLongClickListener;
}
}
......@@ -19,10 +19,10 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.List;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
/**
* ================================================
* 基类 {@link RecyclerView.Adapter} ,如果需要实现非常复杂的 {@link RecyclerView} ,请尽量使用其他优秀的三方库
......@@ -35,6 +35,7 @@ import androidx.recyclerview.widget.RecyclerView;
public abstract class DefaultAdapter<T> extends RecyclerView.Adapter<BaseHolder<T>> {
protected List<T> mInfos;
protected OnRecyclerViewItemClickListener mOnItemClickListener = null;
protected OnLongClickListener mOnLongClickListener = null;
private BaseHolder<T> mHolder;
public DefaultAdapter(List<T> infos) {
......@@ -53,14 +54,13 @@ public abstract class DefaultAdapter<T> extends RecyclerView.Adapter<BaseHolder<
public BaseHolder<T> onCreateViewHolder(ViewGroup parent, final int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(getLayoutId(viewType), parent, false);
mHolder = getHolder(view, viewType);
mHolder.setOnItemClickListener(new BaseHolder.OnViewClickListener() {//设置Item点击事件
@Override
public void onViewClick(View view, int position) {
if (mOnItemClickListener != null && mInfos != null && mInfos.size() > 0) {
mOnItemClickListener.onItemClick(view, viewType, mInfos.get(position), position);
}
//设置Item点击事件
mHolder.setOnItemClickListener((view1, position) -> {
if (mOnItemClickListener != null && mInfos != null && mInfos.size() > 0) {
mOnItemClickListener.onItemClick(view1, viewType, mInfos.get(position), position);
}
});
mHolder.setmOnLongClickListener(mOnLongClickListener);
return mHolder;
}
......@@ -151,7 +151,15 @@ public abstract class DefaultAdapter<T> extends RecyclerView.Adapter<BaseHolder<
void onItemClick(View view, int viewType, T data, int position);
}
public interface OnLongClickListener {
boolean onLongClick(View v, int position);
}
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mOnItemClickListener = listener;
}
public void setmOnLongClickListener(OnLongClickListener mOnLongClickListener) {
this.mOnLongClickListener = mOnLongClickListener;
}
}
......@@ -7,7 +7,6 @@ apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
// compileSdkVersion 28
defaultConfig {
if (project.ext.runAsApp) {
applicationId "com.gingersoft.gsa.other_order_mode"
......
......@@ -87,7 +87,6 @@ class OtherOrderActivity : AppCompatActivity() {
ToastUtils.show(this@OtherOrderActivity, "請輸入手機號或訂單號")
}
}
tabs.setupWithViewPager(viewPager)
for (i in 0 until ints.size) {
......
package com.joe.print.mvp.contract;
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.IModel;
import java.util.List;
import io.reactivex.Observable;
......@@ -25,7 +28,7 @@ public interface PrintContract {
/**
* 顯示打印機列表彈窗
*/
void showPrinterList();
void showPrinterList(List<PrinterDeviceBean> deviceBeans);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
......@@ -3,26 +3,25 @@ package com.joe.print.mvp.presenter;
import android.app.Application;
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.database.bean.PrinterDeviceBean;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.mvp.BasePresenter;
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.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
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
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(BaseResult baseResult) {
if(baseResult.isSuccess()){
if (baseResult.isSuccess()) {
List<PrinterDeviceBean> deviceBeans = JsonUtils.parseArray(baseResult.getData(), PrinterDeviceBean.class);
if(deviceBeans != null && deviceBeans.size() > 0){
//有打印機,返回true
PrinterManager.getPrinterManager().setDeviceBeans(deviceBeans);
mRootView.showPrinterList();
}
//有打印機,返回true
PrinterManager.getPrinterManager().setDeviceBeans(deviceBeans);
mRootView.showPrinterList(deviceBeans);
} else {
mRootView.showPrinterList(null);
}
}
});
......
......@@ -4,7 +4,6 @@ import android.app.Application;
import com.gingersoft.gsa.cloud.base.common.bean.BaseResult;
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.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
......@@ -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) {
PrinterDeviceBean printerDeviceBean;
if (TextUtil.isEmptyOrNullOrUndefined(port)) {
printerDeviceBean = new PrinterDeviceBean(restaurantId, ip, null, type);
} else {
printerDeviceBean = new PrinterDeviceBean(restaurantId, ip, Integer.parseInt(port), type);
}
public void addPrinter(PrinterDeviceBean printerDeviceBean) {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), JsonUtils.toJson(printerDeviceBean));
mModel.addPrinter(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(""))
......@@ -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) {
PrinterDeviceBean printerDeviceBean;
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));
public void updatePrinterInfo(PrinterDeviceBean deviceBean) {
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), JsonUtils.toJson(deviceBean));
mModel.updatePrinter(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(""))
......@@ -125,7 +100,7 @@ public class PrinterAddPresenter extends BasePresenter<PrinterAddContract.Model,
public void onNext(BaseResult baseResult) {
if (baseResult.isSuccess()) {
mRootView.showMessage("保存成功");
mRootView.updatePrinterSuccess(printerDeviceBean);
mRootView.updatePrinterSuccess(deviceBean);
mRootView.killMyself();
}
}
......
......@@ -13,9 +13,9 @@ import com.sunmi.peripheral.printer.SunmiPrinterService;
* 版本:1.6.0
* 创建日期:2019/6/27
* 修订历史:2019/6/27
* 描述:
* 描述:獲取本地商米、N5打印機狀態
*/
public class PrintStatus {
public class LocationPrintStatus {
public static boolean initV2PrintStatus(Context context, SunmiPrinterService service) {
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 {
private static List<Bitmap> getKitchenBitmap(Context mContext) {
List<Bitmap> bitmaps = new ArrayList<>();
// Map<String, List<Bitmap>> bitmapMaps = new HashMap<>();
List<OrderDetail> orderDetails = MyOrderManage.getInstance().getNewFoodList();
if (orderDetails != null) {
//廚房單,可能會有多個IP打印
......@@ -152,17 +154,21 @@ public class PrintUtils {
//通過打印位置生成多張用於打印的bitmap
for (Map.Entry<String, List<OrderDetail>> entry : foodMaps.entrySet()) {
String key = entry.getKey();
// List<Bitmap> bitmaps1 = new ArrayList<>();
if (key.contains("*")) {
//如果帶*號,這個集合就需要切紙,每個食品都需要單獨在一張廚房單上
for (OrderDetail orderDetail : entry.getValue()) {
List<OrderDetail> orders = new ArrayList<>();//這裡new集合是因為下面的方法需要的參數是list集合
orders.add(orderDetail);
bitmaps.add(PrintUtils.getKitChenPrintBitmap(mContext, orders));
// bitmaps1.add(PrintUtils.getKitChenPrintBitmap(mContext, orders));
}
} else {
//不帶*號,所有同樣廚房位置的食品都在一張紙上
bitmaps.add(PrintUtils.getKitChenPrintBitmap(mContext, entry.getValue()));
// bitmaps1.add(PrintUtils.getKitChenPrintBitmap(mContext, entry.getValue()));
}
// bitmapMaps.put(key, bitmaps1);
}
}
//通過遍歷map進行打印
......
......@@ -18,7 +18,7 @@ import java.util.List;
/**
* Created by Wyh on 2020/1/9.
* 送單打印
* ip打印類
*/
public class SendPrint implements PrintDataMaker {
......
......@@ -14,9 +14,9 @@ import java.util.ArrayList;
import java.util.List;
/**
* 打印測試
* 测试数据生成
*/
public class TestPrintDataMaker implements PrintDataMaker {
private Context context;
......
......@@ -22,6 +22,7 @@ import androidx.annotation.Nullable;
import com.billy.cc.core.component.CC;
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.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.PrinterWriter58mm;
......@@ -132,15 +133,16 @@ public class IpPrintActivity extends Activity implements PrintSocketHolder.OnSta
}
public void printOrder(Context context) {
PrinterDeviceBean printerDeviceBean = new PrinterDeviceBean("", null, ip, port, type);
if (executor == null) {
executor = new PrintExecutor(ip, port, paperType);
executor = new PrintExecutor(printerDeviceBean, paperType);
executor.setOnStateChangedListener(this);
executor.setOnPrintResultListener(this);
}
if (maker == null) {
maker = new SendPrint(context, 255, printWidth, type);
}
executor.setIp(ip, port);
executor.setIp(printerDeviceBean);
if (type == -1) {
executor.doPrinterRequestAsync(new TestPrintDataMaker(context, 380, 255));
} else {
......@@ -149,7 +151,7 @@ public class IpPrintActivity extends Activity implements PrintSocketHolder.OnSta
}
@Override
public void onResult(int errorCode) {
public void onResult(int errorCode, PrinterDeviceBean printerDeviceBean) {
String tip;
switch (errorCode) {
case PrintSocketHolder.ERROR_0:
......@@ -189,7 +191,7 @@ public class IpPrintActivity extends Activity implements PrintSocketHolder.OnSta
}
@Override
public void onStateChanged(int state) {
public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
String tip = "打印中...";
switch (state) {
case PrintSocketHolder.STATE_0:
......
......@@ -16,6 +16,7 @@ import androidx.annotation.Nullable;
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.TextUtil;
import com.gingersoft.gsa.cloud.base.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import com.jess.arms.base.BaseActivity;
......@@ -42,6 +43,8 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implements PrinterAddContract.View, View.OnClickListener {
// 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})
EditText[] ipEdits = new EditText[4];
@BindView(R2.id.add_printer_topbar)
......@@ -53,9 +56,11 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@BindView(R2.id.printer_type)
RadioGroup rgPaperType;
private PrinterDeviceBean printerDeviceBean;
private boolean isEditPrinter = false;//是否是編輯打印機
private boolean isDefault = false;//是否是默認打印機
@Override
public void setupActivityComponent(@NonNull AppComponent appComponent) {
DaggerPrinterAddComponent //如找不到该类,请编译一下项目
......@@ -85,6 +90,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
// }
//如果不為空,則是編輯打印機,初始化信息
if (printerDeviceBean != null) {
mEdPrintName.setText(String.valueOf(printerDeviceBean.getName()));
ips = printerDeviceBean.getIp().split("[.]");
etPort.setText(printerDeviceBean.getPort() + "");
if (printerDeviceBean.getType() == 1) {
......@@ -168,7 +174,10 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@Override
public void onClick(View v) {
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();
for (EditText editText : ipEdits) {
......@@ -189,19 +198,27 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
if (rgPaperType.getCheckedRadioButtonId() != R.id.print_paper_size_58) {
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 (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 {
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) {
//打印測試
Intent intent = new Intent(mContext, IpPrintActivity.class);
intent.putExtra("ip", ipAddress.substring(0, ipAddress.lastIndexOf(".")));
intent.putExtra("port", Integer.parseInt(etPort.getText().toString()));
intent.putExtra("paperType", paperType);
Intent intent = new Intent(mContext, PrintActivity.class);
intent.putExtra("deviceBean", deviceBean);
startActivity(intent);
}
}
......@@ -227,7 +244,7 @@ public class PrinterAddActivity extends BaseActivity<PrinterAddPresenter> implem
@Override
public void updatePrinterSuccess(PrinterDeviceBean item) {
//修改打印機成功,如果這個打印機是用戶設置的默認打印機,則需要更新信息
if(isDefault){
if (isDefault) {
SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_IP, item.getIp());
SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_PORT, item.getPort());
SPUtils.put(mContext, PrintConstans.DEFAULT_PRINT_PAPER, item.getType());
......
......@@ -81,13 +81,12 @@ public class PrinterListActivity extends BaseActivity<PrintListPresenter> implem
private void initViewPager() {
List<String> titles = new ArrayList<>();
List<Fragment> mFragments = new ArrayList<>();
mFragments.add(IpPrintListActivityFragment.newInstance());
if (PrintUtils.isPrintDevice()) {
titles.add("本機打印");
mFragments.add(LocalPrintFragment.newInstance());
}
titles.add("網絡打印");
mFragments.add(IpPrintListActivityFragment.newInstance());
//实例化适配器
mTabFragmentAdapter = new TabFragmentAdapter(getSupportFragmentManager(), 1);
......
......@@ -2,6 +2,8 @@ package com.joe.print.mvp.ui.adapter;
import android.content.Context;
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;
......@@ -9,8 +11,6 @@ import com.joe.print.R;
import java.util.List;
import androidx.annotation.Nullable;
/**
* Created by Wyh on 2020/1/16.
*/
......@@ -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_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
((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()));
if (item.getPort() == null) {
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 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
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:textColor="@color/normal_color"
android:textSize="@dimen/dp_14"
......@@ -46,10 +80,7 @@
android:text="192"
android:textColor="@color/normal_color"
android:textCursorDrawable="@null"
android:textSize="@dimen/dp_15">
<requestFocus />
</EditText>
android:textSize="@dimen/dp_15" />
<TextView
android:id="@+id/dot_1"
......
......@@ -4,7 +4,6 @@ apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'org.greenrobot.greendao'
apply plugin: 'android-aspectjx'
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
......
package com.gingersoft.gsa.cloud.aspectj;
import android.util.Log;
import android.view.View;
import org.aspectj.lang.ProceedingJoinPoint;
......@@ -32,6 +33,7 @@ public class SingleClickAspect {
@Around("methodAnnotated()")
public void aroundJoinPoint(ProceedingJoinPoint joinPoint) throws Throwable {
// 取出方法的参数
Log.e("eee", "執行aroundJoinPoint");
View view = null;
for (Object arg : joinPoint.getArgs()) {
if (arg instanceof View) {
......
......@@ -15,6 +15,7 @@ import org.aspectj.lang.annotation.Pointcut;
/**
* Created by Wyh on 2020/3/2.
* 組件化使用Aspect有問題。
*/
@Aspect
public class SwitchPrintAspect {
......
......@@ -6,6 +6,7 @@ import android.os.RemoteException;
import android.widget.Toast;
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.InnerPrinterException;
import com.sunmi.peripheral.printer.InnerPrinterManager;
......@@ -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) {
Toast.makeText(context, LanguageUtils.get_language_system(context, "server.disconnected", "未連接上打印機!"), Toast.LENGTH_LONG).show();
return;
......@@ -189,7 +190,7 @@ public class AidlUtil {
try {
sunmiPrinterService.setAlignment(1, null);
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);
}
} catch (RemoteException e) {
......
......@@ -113,6 +113,11 @@ public abstract class DialogUtils {
}
public DialogUtils setCanceledOnTouchOutside(boolean cancel) {
dialog.setCanceledOnTouchOutside(cancel);
return this;
}
public static class ViewHepler {
private final SparseArray<View> mViews;
private View mConvertView;
......
......@@ -21,6 +21,7 @@ public class PrinterDeviceBean implements Serializable {
@Id(autoincrement = true)
private Long dbid;
private String name;
private Integer restaurantId;
private String ip;//ip
private Integer port;//端口
......@@ -30,7 +31,8 @@ public class PrinterDeviceBean implements Serializable {
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.restaurantId = restaurantId;
this.ip = ip;
......@@ -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.ip = ip;
this.port = port;
this.type = type;
}
@Generated(hash = 1970016969)
public PrinterDeviceBean(int id, Long dbid, Integer restaurantId, String ip, Integer port,
@Generated(hash = 2107713534)
public PrinterDeviceBean(int id, Long dbid, String name, Integer restaurantId, String ip, Integer port,
int type) {
this.id = id;
this.dbid = dbid;
this.name = name;
this.restaurantId = restaurantId;
this.ip = ip;
this.port = port;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return this.id;
}
......
......@@ -26,10 +26,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
public static class Properties {
public final static Property Id = new Property(0, int.class, "id", false, "ID");
public final static Property Dbid = new Property(1, Long.class, "dbid", true, "_id");
public final static Property RestaurantId = new Property(2, Integer.class, "restaurantId", false, "RESTAURANT_ID");
public final static Property Ip = new Property(3, String.class, "ip", false, "IP");
public final static Property Port = new Property(4, Integer.class, "port", false, "PORT");
public final static Property Type = new Property(5, int.class, "type", false, "TYPE");
public final static Property Name = new Property(2, String.class, "name", false, "NAME");
public final static Property RestaurantId = new Property(3, Integer.class, "restaurantId", false, "RESTAURANT_ID");
public final static Property Ip = new Property(4, String.class, "ip", false, "IP");
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> {
db.execSQL("CREATE TABLE " + constraint + "\"PRINTER_DEVICE_BEAN\" (" + //
"\"ID\" INTEGER NOT NULL ," + // 0: id
"\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 1: dbid
"\"RESTAURANT_ID\" INTEGER," + // 2: restaurantId
"\"IP\" TEXT," + // 3: ip
"\"PORT\" INTEGER," + // 4: port
"\"TYPE\" INTEGER NOT NULL );"); // 5: type
"\"NAME\" TEXT," + // 2: name
"\"RESTAURANT_ID\" INTEGER," + // 3: restaurantId
"\"IP\" TEXT," + // 4: ip
"\"PORT\" INTEGER," + // 5: port
"\"TYPE\" INTEGER NOT NULL );"); // 6: type
}
/** Drops the underlying database table. */
......@@ -69,21 +71,26 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
stmt.bindLong(2, dbid);
}
String name = entity.getName();
if (name != null) {
stmt.bindString(3, name);
}
Integer restaurantId = entity.getRestaurantId();
if (restaurantId != null) {
stmt.bindLong(3, restaurantId);
stmt.bindLong(4, restaurantId);
}
String ip = entity.getIp();
if (ip != null) {
stmt.bindString(4, ip);
stmt.bindString(5, ip);
}
Integer port = entity.getPort();
if (port != null) {
stmt.bindLong(5, port);
stmt.bindLong(6, port);
}
stmt.bindLong(6, entity.getType());
stmt.bindLong(7, entity.getType());
}
@Override
......@@ -96,21 +103,26 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
stmt.bindLong(2, dbid);
}
String name = entity.getName();
if (name != null) {
stmt.bindString(3, name);
}
Integer restaurantId = entity.getRestaurantId();
if (restaurantId != null) {
stmt.bindLong(3, restaurantId);
stmt.bindLong(4, restaurantId);
}
String ip = entity.getIp();
if (ip != null) {
stmt.bindString(4, ip);
stmt.bindString(5, ip);
}
Integer port = entity.getPort();
if (port != null) {
stmt.bindLong(5, port);
stmt.bindLong(6, port);
}
stmt.bindLong(6, entity.getType());
stmt.bindLong(7, entity.getType());
}
@Override
......@@ -123,10 +135,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
PrinterDeviceBean entity = new PrinterDeviceBean( //
cursor.getInt(offset + 0), // id
cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1), // dbid
cursor.isNull(offset + 2) ? null : cursor.getInt(offset + 2), // restaurantId
cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // ip
cursor.isNull(offset + 4) ? null : cursor.getInt(offset + 4), // port
cursor.getInt(offset + 5) // type
cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name
cursor.isNull(offset + 3) ? null : cursor.getInt(offset + 3), // restaurantId
cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // ip
cursor.isNull(offset + 5) ? null : cursor.getInt(offset + 5), // port
cursor.getInt(offset + 6) // type
);
return entity;
}
......@@ -135,10 +148,11 @@ public class PrinterDeviceBeanDao extends AbstractDao<PrinterDeviceBean, Long> {
public void readEntity(Cursor cursor, PrinterDeviceBean entity, int offset) {
entity.setId(cursor.getInt(offset + 0));
entity.setDbid(cursor.isNull(offset + 1) ? null : cursor.getLong(offset + 1));
entity.setRestaurantId(cursor.isNull(offset + 2) ? null : cursor.getInt(offset + 2));
entity.setIp(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3));
entity.setPort(cursor.isNull(offset + 4) ? null : cursor.getInt(offset + 4));
entity.setType(cursor.getInt(offset + 5));
entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2));
entity.setRestaurantId(cursor.isNull(offset + 3) ? null : cursor.getInt(offset + 3));
entity.setIp(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4));
entity.setPort(cursor.isNull(offset + 5) ? null : cursor.getInt(offset + 5));
entity.setType(cursor.getInt(offset + 6));
}
@Override
......
......@@ -19,7 +19,8 @@ package com.gingersoft.gsa.cloud.print;
import android.bluetooth.BluetoothDevice;
import android.os.AsyncTask;
import java.lang.ref.WeakReference;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import java.util.List;
/**
......@@ -32,15 +33,15 @@ public class PrintExecutor {
private int mReconnectTimes = 0;
private int time = 0;
private PrintSocketHolder.OnStateChangedListener listener;
private WeakReference<OnPrintResultListener> mListener;
private OnPrintResultListener mListener;
public PrintExecutor(BluetoothDevice device, int type) {
holder = new PrintSocketHolder(device);
setType(type);
}
public PrintExecutor(String ip, int port, int type) {
holder = new PrintSocketHolder(ip, port);
public PrintExecutor(PrinterDeviceBean printerDeviceBean, int type) {
holder = new PrintSocketHolder(printerDeviceBean);
setType(type);
}
......@@ -118,12 +119,9 @@ public class PrintExecutor {
/**
* 设置IP及端口
*
* @param ip IP
* @param port 端口
*/
public void setIp(String ip, int port) {
holder.setIp(ip, port);
public void setIp(PrinterDeviceBean printerDeviceBean) {
holder.setIp(printerDeviceBean);
}
/**
......@@ -168,11 +166,11 @@ public class PrintExecutor {
* @param listener 回调
*/
public void setOnPrintResultListener(OnPrintResultListener listener) {
mListener = new WeakReference<>(listener);
this.mListener = listener;
}
public interface OnPrintResultListener {
void onResult(int errorCode);
void onResult(int errorCode, PrinterDeviceBean printerDeviceBean);
}
private class PrintTask extends AsyncTask<PrintDataMaker, Integer, Integer> implements
......@@ -197,7 +195,7 @@ public class PrintExecutor {
if (values == null || values.length < 1)
return;
if (listener != null)
listener.onStateChanged(values[0]);
listener.onStateChanged(values[0], holder.getPrinterDeviceBean());
}
@Override
......@@ -216,14 +214,14 @@ public class PrintExecutor {
private void onResult(int errorCode) {
try {
if (mListener != null)
mListener.get().onResult(errorCode);
mListener.onResult(errorCode, holder.getPrinterDeviceBean());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onStateChanged(int state) {
public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
publishProgress(state);
}
}
......
......@@ -21,6 +21,7 @@ import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import com.gingersoft.gsa.cloud.constans.PrintConstans;
import com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import java.io.IOException;
import java.io.OutputStream;
......@@ -36,7 +37,7 @@ import java.util.UUID;
*/
@SuppressWarnings({"WeakerAccess", "unused"})
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_2 = 2;// 获取输出流
public static final int STATE_3 = 3;// 写入测试页面数据
......@@ -50,8 +51,9 @@ public class PrintSocketHolder {
public static final int ERROR_6 = -6;// 关闭Socket出错
public static final int ERROR_100 = -100;// 失败
private static final UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");//蓝牙打印UUID
private String ip;
private int port = 9100;
// private String ip;
// private int port = 9100;
private PrinterDeviceBean printerDeviceBean;
private BluetoothDevice mDevice;
private Socket socket;
private BluetoothSocket bluetoothSocket;
......@@ -62,14 +64,14 @@ public class PrintSocketHolder {
setDevice(device);
}
public PrintSocketHolder(String ip, int port) {
setIp(ip, port);
public PrintSocketHolder(PrinterDeviceBean printerDeviceBean) {
setIp(printerDeviceBean);
}
@SuppressLint("MissingPermission")
public int createSocket() {
onPrinterStateChanged(STATE_1);
if (mDevice == null && ip == null)
if (mDevice == null && (printerDeviceBean == null || printerDeviceBean.getIp() == null))
return ERROR_5;
try {
if (mDevice != null) {
......@@ -77,7 +79,7 @@ public class PrintSocketHolder {
bluetoothSocket.connect();
} else {
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.connect(socketAddress, PrintConstans.PRINT_TIMEOUT);//开始连接ip
......@@ -200,8 +202,8 @@ public class PrintSocketHolder {
*/
public void onPrinterStateChanged(int state) {
try {
if (mListener != null)
mListener.get().onStateChanged(state);
if (mListener != null && mListener.get() != null)
mListener.get().onStateChanged(state, printerDeviceBean);
} catch (Exception e) {
e.printStackTrace();
}
......@@ -209,13 +211,26 @@ public class PrintSocketHolder {
/**
* 设置IP及端口
*
* @param ip IP
* @param port 端口
*/
public void setIp(String ip, int port) {
this.ip = ip;
this.port = port;
public void setIp(PrinterDeviceBean printerDeviceBean) {
this.printerDeviceBean = printerDeviceBean;
}
// 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 {
}
public interface OnStateChangedListener {
void onStateChanged(int state);
void onStateChanged(int state, PrinterDeviceBean printerDeviceBean);
}
}
......@@ -16,10 +16,17 @@
package com.gingersoft.gsa.cloud.print;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
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.List;
......@@ -441,4 +448,25 @@ public class PrinterUtils {
private static byte charToByte(char 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 plugin: 'com.jakewharton.butterknife'
android {
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
......
......@@ -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.utils.gson.GsonUtils;
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.mvp.contract.OrderContentContract;
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.request.AddOrderRequest;
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.ui.activity.MealStandActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderContentActivity;
......@@ -38,8 +37,6 @@ import com.jess.arms.di.scope.ActivityScope;
import com.jess.arms.http.imageloader.ImageLoader;
import com.jess.arms.integration.AppManager;
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 java.util.ArrayList;
......@@ -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() {
......
package com.gingersoft.gsa.cloud.table.mvp.ui.activity;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
......@@ -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.OpenTableManage;
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.widget.DialogUtils;
import com.gingersoft.gsa.cloud.database.bean.Food;
import com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodComboDaoUtils;
import com.gingersoft.gsa.cloud.database.utils.FoodDaoUtils;
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.R2;
import com.gingersoft.gsa.cloud.table.app.GoldConstants;
......@@ -1004,28 +1002,11 @@ public class MealStandActivity extends BaseActivity<MealStandPresenter> implemen
map.put(MealConstant.fine_tabs_ViewMode, rl_fine_tabs);
map.put(MealConstant.ViewMode_keys, keyView);
// @SwitchPrintMethod
btn_send_order.setOnLongClickListener(v -> {
new DialogUtils(mContext, R.layout.print_select_print_method) {
@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();
PrinterUtils.switchPrintMethod(mContext);
return false;
});
// btn_send_order.setOnLongClickListener(new View.OnLongClickListener() {
// @Override
// public boolean onLongClick(View v) {
// return false;
// }
// });
}
public FoodGroupAdapter getFoodGroupGridViewAdapter() {
......
......@@ -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.gson.GsonUtils;
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.R2;
import com.gingersoft.gsa.cloud.table.app.payment.PayConstant;
......@@ -62,6 +63,7 @@ import javax.inject.Inject;
import butterknife.BindView;
import butterknife.OnClick;
import butterknife.OnLongClick;
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>
* ================================================
*/
public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements OrderPayContract.View {
public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements OrderPayContract.View, View.OnLongClickListener {
@Inject
AppManager mAppManager;
......@@ -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() {
// if (isPrepay) {
// //恢復預結賬前的食品
......@@ -685,4 +702,5 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
public void onPointerCaptureChanged(boolean hasCapture) {
}
}
......@@ -2,7 +2,6 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import com.gingersoft.gsa.cloud.database.bean.Function;
import com.gingersoft.gsa.cloud.table.R;
......@@ -10,7 +9,6 @@ import com.gingersoft.gsa.cloud.table.R2;
import com.jess.arms.base.BaseHolder;
import com.jess.arms.base.DefaultAdapter;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import java.util.List;
......@@ -65,7 +63,6 @@ public class OrderTopFunctionAdapter extends DefaultAdapter<Function> {
btn_name.setTextColor(datasBean.getTextColor());
btn_name.setBackgroundColor(datasBean.getBackgroundColor());
btn_name.setTextSize(datasBean.getTextSize());
}
}
......
ext.mainApp = true //设置为true,表示此module为主app module,一直以application方式编译
apply from: rootProject.file("cc-settings.gradle")
apply plugin: 'com.jakewharton.butterknife'
//apply plugin: 'android-aspectjx'
android {
signingConfigs {
GSAndroidNew {
......@@ -84,7 +83,6 @@ dependencies {
addComponent 'other_order_mode'
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]
implementation rootProject.ext.dependencies["autosize"]
implementation rootProject.ext.dependencies["fastjson"]
......
......@@ -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_three)));
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