Commit 11a0c395 by 宁斌

打印日志补全 日志上传接口调整为HKTest 餐台模式子项排序条件新增CreateTime

parent 7678dfd3
......@@ -236,9 +236,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_password, "修改密碼"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "設置"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "上傳日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "切換環境"));
}
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "上傳日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "清機"));
if (AppDevices.isHywebPos()) {
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "N5清機"));
......
......@@ -16,6 +16,7 @@ import com.epson.epos2.Epos2Exception;
import com.epson.epos2.printer.Printer;
import com.epson.epos2.printer.PrinterStatusInfo;
import com.epson.epos2.printer.ReceiveListener;
import com.gingersoft.gsa.cloud.common.constans.GoldConstants;
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
......@@ -41,6 +42,7 @@ import com.gingersoft.gsa.cloud.print.bean.UpdateBean;
import com.hyweb.n5.lib.constant.PrinterConstant;
import com.hyweb.n5.lib.util.PrinterUtil;
import com.hyweb.n5.server.aidl.IOnPrintCallback;
import com.jess.arms.utils.RxLifecycleUtils;
import com.joe.print.mvp.print.PrintPrjKitchen;
import com.joe.print.mvp.print.PrinterRoot;
import com.joe.print.mvp.print.common.PrinterFinderCallback;
......@@ -52,6 +54,8 @@ import com.joe.print.mvp.print.usb.UsbPrinter;
import com.joe.print.mvp.print.usb.UsbPrinterFinder;
import com.joe.print.mvp.print.utils.MyPrintUtils;
import com.sunmi.peripheral.printer.InnerResultCallbcak;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import org.json.JSONArray;
import org.json.JSONException;
......@@ -72,6 +76,7 @@ import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream;
......@@ -91,16 +96,14 @@ public class PrjService extends Service implements ReceiveListener {
// private static final String TAG = PrjService.class.getSimpleName();
private Disposable disposable;
private Disposable pollDisposable;
private Disposable wakeDisposable;
private List<PrinterDeviceBean> printerDeviceBeans;
private List<PrjBean.DataBean.Bean> printDatas = new ArrayList<>();
// private Map<String, List<PrjBean.DataBean.Bean>> listMap = new HashMap<>();
private List<PrintCurrencyBean> printCurrencyBeans;//通用打印配置
private Context mContext;
private String TAG = "Prj";
@Override
public void onCreate() {
super.onCreate();
......@@ -113,12 +116,19 @@ public class PrjService extends Service implements ReceiveListener {
public int onStartCommand(Intent intent, int flags, int startId) {
mContext = this;
LoganManager.w_printer(TAG, "onStartCommand");
ThreadPoolManager.getInstence().putExecutableTasks(() -> {
LoganManager.w_printer(TAG, "開始請求 PRJ 數據");
getPrintList();
//開始請求
startGetPrjInfo();
});
RxIOTask ioTask = new RxIOTask(0) {
@Override
public Object doInIOThread(Object o) {
LoganManager.w_printer(TAG, "获取打印設備信息");
LoganManager.w_printer(TAG, "currThredName-->" + Thread.currentThread().getName());
//获取打印設備信息
getPrintList();
return null;
}
};
RxJavaUtils.doInIOThread(ioTask);
//開始請求
startGetPrjInfo();
return super.onStartCommand(intent, flags, startId);
}
......@@ -172,34 +182,18 @@ public class PrjService extends Service implements ReceiveListener {
*/
private void startGetPrjInfo() {
cancel(wakeDisposable);
cancel(disposable);
cancel(pollDisposable);
if (!UserContext.newInstance().isLogin()) {
LoganManager.w_printer(TAG, "用户未登录!");
return;
}
Observable.interval(10, 30, TimeUnit.SECONDS)
.subscribe(new Observer<Long>() {
pollDisposable = RxJavaUtils.polling(10, 30, TimeUnit.SECONDS)
.subscribe(new Consumer<Long>() {
@Override
public void onSubscribe(Disposable d) {
disposable = d;
LoganManager.w_printer(TAG, "startGetPrjInfo onSubscribe");
}
@Override
public void onNext(Long aLong) {
LoganManager.w_printer(TAG, "startGetPrjInfo onNext");
public void accept(Long aLong) throws Exception {
LoganManager.w_printer(TAG, "獲取Prj數據-->");
getPrjInfo();
}
@Override
public void onError(Throwable e) {
LoganManager.w_printer(TAG, "startGetPrjInfo onError:" + e.getMessage());
}
@Override
public void onComplete() {
LoganManager.w_printer(TAG, "startGetPrjInfo onComplete");
}
});
}
......@@ -214,51 +208,35 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public void onSubscribe(Disposable d) {
LoganManager.w_printer(TAG, "getPrjInfo onSubscribe");
LoganManager.w_printer(TAG, "獲取Prj數據 Disposable");
}
@Override
public void onNext(String prjInfo) {
LoganManager.w_printer(TAG, "getPrjInfo onNext: " + prjInfo);
LoganManager.w_printer(TAG, "獲取Prj數據 onNext: " + prjInfo);
//請求到數據,停止輪詢,開始打印,在打印完之後再重新開始輪詢
// startPrint(s);
newPrint(prjInfo);
//開啟另一個定時,三十秒之後自動請求,避免上面的打印成功或失敗時沒有回調。
cancel(wakeDisposable);
Observable.timer(30, TimeUnit.SECONDS)
.subscribe(new Observer<Long>() {
wakeDisposable = RxJavaUtils.delay(30, TimeUnit.SECONDS)
.subscribe(new Consumer<Long>() {
@Override
public void onSubscribe(Disposable d) {
wakeDisposable = d;
LoganManager.w_printer(TAG, "getPrjInfo timer onSubscribe");
}
@Override
public void onNext(Long aLong) {
LoganManager.w_printer(TAG, "getPrjInfo timer onNext");
public void accept(Long aLong) throws Exception {
LoganManager.w_printer(TAG, "輪詢獲取Prj數據-->");
startGetPrjInfo();
}
@Override
public void onError(Throwable e) {
LoganManager.w_printer(TAG, "getPrjInfo timer onError: " + e.getMessage());
}
@Override
public void onComplete() {
LoganManager.w_printer(TAG, "getPrjInfo timer onComplete");
}
});
}
@Override
public void onError(Throwable e) {
LoganManager.w_printer(TAG, "getPrjInfo onError:" + e.getMessage());
LoganManager.w_printer(TAG, "獲取Prj數據 onError:" + e.getMessage());
}
@Override
public void onComplete() {
LoganManager.w_printer(TAG, "getPrjInfo onComplete");
LoganManager.w_printer(TAG, "獲取Prj數據 onComplete");
}
});
}
......@@ -272,87 +250,6 @@ public class PrjService extends Service implements ReceiveListener {
}
}
private PrinterRoot printerInIt;
private String json = "{\"success\":true,\"sysTime\":1595066909048,\"data\":{\"K1\":[{\"id\":2461,\"printerDeviceId\":87,\"status\":1,\"orderNo\":\"153201882821850443\",\"orderTime\":2020,\"sender\":\"\",\"person\":0,\"number\":1,\"orderDetailsTime\":\"Jul 10, 2020 11:59:29 AM\",\"orderDetailsId\":48863119,\"productName\":\"紅棗銀耳湯\",\"parentId\":48863115,\"type\":4,\"createTime\":1595066908689,\"productId\":5189,\"requests\":1,\"actualPrinterDeviceId\":87,\"takeFoodCode\":\"H462\",\"billNo\":\"0643\",\"orderType\":7,\"userName\":\"stefan001\"},{\"id\":2461,\"printerDeviceId\":87,\"status\":1,\"orderNo\":\"153201882821850443\",\"orderTime\":2020,\"sender\":\"\",\"person\":0,\"number\":1,\"orderDetailsTime\":\"Jul 10, 2020 11:59:29 AM\",\"orderDetailsId\":48863119,\"productName\":\"紅棗銀耳湯\",\"parentId\":48863115,\"type\":4,\"createTime\":1595066908689,\"productId\":5189,\"requests\":1,\"actualPrinterDeviceId\":87,\"takeFoodCode\":\"H462\",\"billNo\":\"0643\",\"orderType\":7,\"userName\":\"stefan001\"}]}}";
/**
* 開始打印
*/
// private void startPrint(String json) {
// printDatas.clear();
// listMap.clear();
// PrjBean prjBean = JsonUtils.parseObject(json, PrjBean.class);
// if (prjBean == null || prjBean.getData() == null) {
// return;
// }
// PrintCurrencyBean printCurrencyBean;
// //有數據,取消輪詢,等待打印結束。
// cancel(disposable);
// try {
// JSONObject jsonObject = new JSONObject(prjBean.getData());
// //通过迭代器获取这段json当中所有的key值
// Iterator keys = jsonObject.keys();
// //然后通过一个循环取出所有的key值
// while (keys.hasNext()) {
// String key = String.valueOf(keys.next());
// //最后就可以通过刚刚得到的key值去解析后面的json了
// JSONArray dataJson = (JSONArray) jsonObject.get(key);
// List<PrjBean.DataBean.Bean> datas = JsonUtils.parseArray(dataJson.toString(), PrjBean.DataBean.Bean.class);
// listMap.put(key, datas);//打印位置和需要打印的數據
// PrintPrjKitchen.getPrjMap().put(key, datas);
// printDatas.addAll(datas);
// }
// } catch (JSONException e) {
// e.printStackTrace();
// }
// if (printerInIt == null) {
// printerInIt = PrinterRoot.getPrinterByType(PRINT_KITCHEN);
// }
// //獲取打印機列表
// getPrintList();
//// for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) {
//// for (PrinterDeviceBean deviceBean : printerDeviceBeans) {
//// if (prjMap.getKey().equalsIgnoreCase(deviceBean.getName())) {
//// if ((deviceBean.getPrinterName() != null && deviceBean.getPrinterName().toLowerCase().contains("EPSON".toLowerCase()))
//// && (deviceBean.getModel() != null && deviceBean.getModel().toLowerCase().contains("TM-U220B".toLowerCase()))) {
//// //針式打印
//// //Epson打印機打印,調用對應的方法
//// EpsonPrint mPrinter = EpsonPrint.getInstance();
//// mPrinter.initializeObject(GsaCloudApplication.getAppContext(), this);
//// int paperWidth = 42;
//// if (deviceBean.getPaperSpecification() != null) {
//// paperWidth = (int) (Double.parseDouble(deviceBean.getPaperSpecification()) / 6);
//// }
//// List<List<PrintInfoBean>> prjBeans = PrintInfoBean.transPrjBean(prjMap.getValue(), prjMap.getKey(), deviceBean, printCurrencyBean);
//// for (List<PrintInfoBean> prjPrintBean : prjBeans) {
//// mPrinter.putPrintString(deviceBean.getIp(), paperWidth, prjPrintBean);
//// }
//// }
//// }
//// }
//// }
// if (printerInIt != null) {
// printerInIt.setmContext(this);
// for (Map.Entry<String, List<Bitmap>> entry : printerInIt.getPrintBitmap(this, null).entrySet()) {
// //遍歷所有的需要打印的內容
// for (PrinterDeviceBean deviceBean : printerDeviceBeans) {
// //遍歷打印機列表,找到對應的打印機,沒找到的就不打印
// if (entry.getKey().toLowerCase().equals(deviceBean.getName().toLowerCase())) {
//// if ((deviceBean.getPrinterName() != null && deviceBean.getPrinterName().toLowerCase().contains("EPSON".toLowerCase()))
//// && (deviceBean.getModel() != null && deviceBean.getModel().toLowerCase().contains("TM-U220B".toLowerCase()))) {
//// //針式打印機在上面處理
//// } else {
// Log.e(TAG, entry.getKey() + "開始打印IP:" + deviceBean.getIp());
// printerInIt.ipDevicePrint(deviceBean, entry.getValue(), this, this);
// break;
//// }
// }
// }
// }
// }
// }
private int totalPrj;
private int currentIndex;
......@@ -367,7 +264,7 @@ public class PrjService extends Service implements ReceiveListener {
return;
}
//有數據,取消輪詢,等待打印結束。
cancel(disposable);
cancel(pollDisposable);
//第一步:解析PRJ數據,格式為 Map<廚房位置,需要打印的數據>
try {
JSONObject jsonObject = new JSONObject(prjBean.getData());
......@@ -408,7 +305,6 @@ public class PrjService extends Service implements ReceiveListener {
}
private Map<String, List<PrjBean.DataBean.Bean>> setPrjIndex(Map<String, List<PrjBean.DataBean.Bean>> listMap, int totalPrj) {
LoganManager.w_printer(TAG, "setPrjIndex totalPrj: " + totalPrj);
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) {
//上一個對象是否切紙
boolean lastIsCute = false;
......@@ -434,45 +330,7 @@ public class PrjService extends Service implements ReceiveListener {
return listMap;
}
private Map<String, List<PrjBean.DataBean.Bean>> printDataToMap(List<PrjBean.DataBean.Bean> printData) {
Map<String, List<PrjBean.DataBean.Bean>> map = new HashMap<>();
PrinterDeviceBean defaultPainter = null;
initPrinterDevices();
//獲得默認的打印機
for (PrinterDeviceBean printerDeviceBean : printerDeviceBeans) {
if (printerDeviceBean.getType() == 2) {
defaultPainter = printerDeviceBean;
break;
}
}
//將prj集合通過打印位置轉成map
for (PrjBean.DataBean.Bean bean : printData) {
if (TextUtil.isNotEmptyOrNullOrUndefined(bean.getPrintPosition())) {
List<PrjBean.DataBean.Bean> mapByKey = map.get(bean.getPrintPosition());
if (mapByKey != null) {
mapByKey.add(bean);
} else {
map.put(bean.getPrintPosition(), Collections.singletonList(bean));
}
} else if (defaultPainter != null) {
//沒有打印位置的,由默認的位置去打印
bean.setPrintPosition(defaultPainter.getName());
List<PrjBean.DataBean.Bean> mapByKey = map.get(bean.getPrintPosition());
if (mapByKey != null) {
mapByKey.add(bean);
} else {
map.put(bean.getPrintPosition(), Collections.singletonList(bean));
}
} else {
ToastUtils.show(this, "未配置打印機");
}
}
return map;
}
private void foreachPrint(Map<String, List<PrjBean.DataBean.Bean>> listMap) {
LoganManager.w_printer(TAG, "foreachPrint");
//雙重遍歷可以以後優化
//第二步:遍歷 Map<廚房位置,需要打印的數據>,通過廚房位置找到對應的打印機,並且通過數據拿到對應的通用配置
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) {
......@@ -494,7 +352,6 @@ public class PrjService extends Service implements ReceiveListener {
}
private void initPrinterDevices() {
LoganManager.w_printer(TAG, "initPrinterDevices");
//讀取打印機和通用配置,可以優化
//獲取所有打印機
PrinterDeviceDaoUtils printerDeviceDaoUtils = new PrinterDeviceDaoUtils(this);
......@@ -525,9 +382,6 @@ public class PrjService extends Service implements ReceiveListener {
*/
private void generatePrintData(String key, List<PrjBean.DataBean.Bean> beans, PrinterDeviceBean printerDeviceBean) {
LoganManager.w_printer(TAG, "generatePrintData PrinterDeviceBean deviceType: " + printerDeviceBean.getPrinterDeviceType()
+ " ip: " + printerDeviceBean.getIp());
int orderType = 1;
if (beans.size() > 0) {
orderType = beans.get(0).getOrderType();
......@@ -537,6 +391,9 @@ public class PrjService extends Service implements ReceiveListener {
if (isPinPrinter(printerDeviceBean) && printerDeviceBean.getPrinterDeviceType() == PRINT_IP) {
//針式打印機並且打印機類型為IP打印,生成獨特的格式
List<Map<String, Bitmap>> bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean);
hookPrinterBitmap(bitmapMaps, beans);
EpsIds = getPrintIds(bitmapMaps);
//第一個參數是機型,第二個參數是語言,
Printer mPrinter = null;
......@@ -569,13 +426,16 @@ public class PrjService extends Service implements ReceiveListener {
mPrinter.clearCommandBuffer();
}
try {
PrinterPlugins.getOnPrinterFlowHandler().connectionBefore("針式打印機", printerDeviceBean.getIp(), printerDeviceBean.getPort(), 0, 0);
mPrinter.connect("TCP:" + printerDeviceBean.getIp(), Printer.PARAM_DEFAULT);
mPrinter.sendData(Printer.PARAM_DEFAULT);
} catch (Exception e) {
e.printStackTrace();
updatePrjFailure(getPrintIds(bitmapMaps));
PrinterPlugins.getOnPrinterFlowHandler().connectionError(e);
while (true) {
try {
PrinterPlugins.getOnPrinterFlowHandler().disconnect();
mPrinter.disconnect();
break;
} catch (final Exception ex) {
......@@ -699,6 +559,7 @@ public class PrjService extends Service implements ReceiveListener {
bitmapMaps = generatePrintMaps(key, beans, printerDeviceBean);
switch (printerDeviceBean.getPrinterDeviceType()) {
case PRINT_IP:
LoganManager.w_printer(TAG, "開始IP打印-->");
//IP打印
ipPrint(printerDeviceBean, bitmapMaps);
break;
......@@ -717,16 +578,12 @@ public class PrjService extends Service implements ReceiveListener {
}
}
/**
* ip設備打印
*/
public void ipPrint(PrinterDeviceBean printerDeviceBean, List<Map<String, Bitmap>> bitmapMaps) {
LoganManager.w_printer(TAG, "ipPrint: " + printerDeviceBean.getPrinterDeviceType()
+ " ip: " + printerDeviceBean.getIp());
for (int i = 0; i < bitmapMaps.size(); i++) {
PrintExecutor executor = new PrintExecutor(printerDeviceBean);
int finalI = i;
executor.setOnPrjPrintResultListener((errorCode, ids) -> {
switch (errorCode) {
case PrintSocketHolder.ERROR_0:
......@@ -738,7 +595,6 @@ public class PrjService extends Service implements ReceiveListener {
break;
}
});
LoganManager.w_printer(TAG, "ipPrint for doPrinterRequestAsync i:" + i);
PrjPrintMaker maker = new PrjPrintMaker(bitmapMaps.get(i));
executor.doPrinterRequestAsync(maker);
}
......@@ -787,9 +643,12 @@ public class PrjService extends Service implements ReceiveListener {
public void locationPrint(List<Map<String, Bitmap>> bitmapMaps) {
String model = Build.MODEL;
if (PrintConstans.PRINT_MODEL_V2.contains(model)) {
//商米打印
LoganManager.w_printer(TAG, "開始商米打印-->");
sunmiPrint(bitmapMaps);
} else if (PrintConstans.PRINT_MODEL_N5.contains(model)) {
//N5打印
LoganManager.w_printer(TAG, "開始N5打印-->");
n5Print(bitmapMaps);
} else if (PrintConstans.PRINT_MODEL_WISEPOS.contains(model)) {
//BBPOS,生成data
......@@ -827,6 +686,7 @@ public class PrjService extends Service implements ReceiveListener {
AidlUtil.getInstance().printBitmap(mapEntry.getValue(), new InnerResultCallbcak() {
@Override
public void onRunResult(boolean isSuccess) {
LoganManager.w_printer(TAG, "商米onRunResult: " + isSuccess);
//返回接⼝执⾏的情况(并⾮真实打印):成功或失败
if (isSuccess) {
updatePrjSuccess(ids);
......@@ -838,16 +698,19 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public void onReturnString(String result) {
//部分接⼝会异步返回查询数据
LoganManager.w_printer(TAG, "商米onReturnString: " + result);
}
@Override
public void onRaiseException(int code, String msg) {
//接⼝执⾏失败时,返回的异常状态
LoganManager.w_printer(TAG, "商米onRaiseException: " + msg);
}
@Override
public void onPrintResult(int code, String msg) {
//事务模式下真实的打印结果返回
LoganManager.w_printer(TAG, "商米onPrintResult: " + msg);
}
});
}
......@@ -868,6 +731,7 @@ public class PrjService extends Service implements ReceiveListener {
PrinterUtil.startPrint(true, new IOnPrintCallback.Stub() {
@Override
public void onPrintResult(int i) {
LoganManager.w_printer(TAG, "N5 onPrintResult: " + i);
if (i == 0) {
//打印成功
updatePrjSuccess(ids);
......@@ -879,11 +743,13 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public IBinder asBinder() {
LoganManager.w_printer(TAG, "N5 asBinder");
return this;
}
});
} catch (RemoteException e) {
e.printStackTrace();
LoganManager.w_printer(TAG, "N5 RemoteException :" + e.getLocalizedMessage());
updatePrjFailure(ids);
}
}
......@@ -924,7 +790,11 @@ public class PrjService extends Service implements ReceiveListener {
map.put(stringBuffer.toString(), prjBitmap);
bitmapMaps.add(map);
}
hookPrinterBitmap(bitmapMaps, beans);
return bitmapMaps;
}
private void hookPrinterBitmap(List<Map<String, Bitmap>> bitmapMaps, List<PrjBean.DataBean.Bean> beans) {
if (bitmapMaps.size() > 0) {
String prjName = String.valueOf(System.currentTimeMillis());
int orderType = 1;
......@@ -949,7 +819,6 @@ public class PrjService extends Service implements ReceiveListener {
}
PrinterPlugins.getOnPrinterFlowHandler().onPrinterBitmapBefore(orderType, PrintConstans.PRINT_KITCHEN, prjName, bitmapList);
}
return bitmapMaps;
}
/**
......@@ -1006,7 +875,7 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public void onNext(String s) {
LoganManager.w_printer(TAG, "---end---修改Prj打印狀態---end----: " + s);
LoganManager.w_printer(TAG, "修改Prj打印狀態---end----: " + s);
}
@Override
......@@ -1025,9 +894,11 @@ public class PrjService extends Service implements ReceiveListener {
public void onPtrReceive(Printer printer, int i, PrinterStatusInfo printerStatusInfo, String s) {
//針式打印回調
if (i == 0) {
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess(null);
//打印成功
updatePrjSuccess(EpsIds);
} else {
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(i, null);
//打印失敗
updatePrjFailure(EpsIds);
}
......
......@@ -87,7 +87,6 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
return MealConditionFilterUtils.foodConditionFilter(foods,foodSummary);
}
@Override
public List<Modifier> queryDB_ModifierList(long fid, int mode) {
ModifierDaoUtils daoUtils = new ModifierDaoUtils(mApplication);
......
......@@ -7,9 +7,11 @@ import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.model.bean.FoodReason;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.FoodReasonAdapter;
......@@ -18,6 +20,7 @@ import com.google.android.flexbox.FlexDirection;
import com.google.android.flexbox.FlexWrap;
import com.google.android.flexbox.FlexboxLayoutManager;
import com.google.android.flexbox.JustifyContent;
import com.google.android.material.slider.Slider;
import com.qmuiteam.qmui.layout.QMUILinearLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUIEmptyView;
......@@ -35,7 +38,7 @@ import java.util.List;
* 修订历史:2020-03-28
* 描述:
*/
public class CancelFoodDialog extends BaseRetryDialog implements QMUISlider.Callback {
public class CancelFoodDialog extends BaseRetryDialog implements Slider.OnSliderTouchListener {
private static final String TAG = "CancelFoodDialog";
......@@ -49,11 +52,11 @@ public class CancelFoodDialog extends BaseRetryDialog implements QMUISlider.Call
/***
* 可取消最大數
*/
private int maxCancelNumber = 10;
private int mMaxCancelNumber = 10;
/**
* 當前選擇的取消數
*/
private int cancelNumber = 1;
private int mCurrCancelNumber = 1;
/**
* 取消原因數據
*/
......@@ -64,7 +67,7 @@ public class CancelFoodDialog extends BaseRetryDialog implements QMUISlider.Call
private QMUITopBar mTopBar;
private QMUIRoundButton btn_all_number;
private QMUISlider slider_food_count;
private Slider slider_food_count;
private TextView tv_number_value, tv_max_number, tv_min_number;
private QMUIEmptyView mEmptyView;
......@@ -103,16 +106,16 @@ public class CancelFoodDialog extends BaseRetryDialog implements QMUISlider.Call
mItems.addAll(items);
}
public void setMaxCancelNumber(int maxCancelNumber) {
this.maxCancelNumber = maxCancelNumber;
public void setMaxCancelNumber(int mMaxCancelNumber) {
this.mMaxCancelNumber = mMaxCancelNumber;
}
public void setCancelNumber(int cancelNumber) {
this.cancelNumber = cancelNumber;
public void setCancelNumber(int mCurrCancelNumber) {
this.mCurrCancelNumber = mCurrCancelNumber;
}
public int getCancelNumber() {
return cancelNumber;
return mCurrCancelNumber;
}
public CancelFoodDialog build() {
......@@ -138,16 +141,14 @@ public class CancelFoodDialog extends BaseRetryDialog implements QMUISlider.Call
recycle_cancel_info = view.findViewById(R.id.recycle_cancel_info);
//設置最大最小取消數
tv_max_number.setText(String.valueOf(maxCancelNumber));
tv_min_number.setText(String.valueOf(cancelNumber));
//設置默認進度
slider_food_count.setCurrentProgress(getCurrentProgress(cancelNumber));
tv_max_number.setText(String.valueOf(mMaxCancelNumber));
tv_min_number.setText(String.valueOf(mCurrCancelNumber));
slider_food_count.setCallback(this);
slider_food_count.addOnSliderTouchListener(this);
btn_all_number.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
slider_food_count.setCurrentProgress(100);
slider_food_count.setValue(mMaxCancelNumber);
}
});
ll_container.setRadiusAndShadow(mRadius, QMUIDisplayHelper.dp2px(mContext, mShadowElevationDp), mShadowAlpha);
......@@ -158,9 +159,11 @@ public class CancelFoodDialog extends BaseRetryDialog implements QMUISlider.Call
}
public void initParmas() {
cancelNumber = 1;
tv_number_value.setText(String.valueOf(cancelNumber));
slider_food_count.setCurrentProgress(getCurrentProgress(cancelNumber));
mCurrCancelNumber = 1;
tv_number_value.setText(String.valueOf(mCurrCancelNumber));
slider_food_count.setValueFrom(mCurrCancelNumber);
slider_food_count.setValueTo(mMaxCancelNumber);
slider_food_count.setValue(mCurrCancelNumber);
}
private void initTopbar() {
......@@ -192,20 +195,6 @@ public class CancelFoodDialog extends BaseRetryDialog implements QMUISlider.Call
return flexboxLayoutManager;
}
private int getCurrentProgress(int num) {
if (maxCancelNumber == 0) {
maxCancelNumber = 10;
}
int progress = num * 100 / maxCancelNumber;
return progress;
}
private int getCancelNumberByProgress(int progress) {
//這裡默認進度從1開始
float number = (getCurrentProgress(1) + progress) * maxCancelNumber / 100;
return Math.round(number);
}
public void showEmptyView(boolean isSuccess, int size, Throwable t) {
showEmptyView(isSuccess, size, t, mEmptyView, recycle_cancel_info);
}
......@@ -228,49 +217,23 @@ public class CancelFoodDialog extends BaseRetryDialog implements QMUISlider.Call
return R.layout.table_dialog_cancel_food;
}
@Override
public void onProgressChange(QMUISlider slider, int progress, int tickCount, boolean fromUser) {
if (progress == 0) {
cancelNumber = 1;
tv_number_value.setText(String.valueOf(cancelNumber));
} else if (progress == 100) {
cancelNumber = maxCancelNumber;
tv_number_value.setText(String.valueOf(cancelNumber));
} else {
cancelNumber = getCancelNumberByProgress(progress);
if (cancelNumber == 0) {
cancelNumber = 1;
}
tv_number_value.setText(String.valueOf(cancelNumber));
}
}
@Override
public void onTouchDown(QMUISlider slider, int progress, int tickCount, boolean hitThumb) {
}
@Override
public void onTouchUp(QMUISlider slider, int progress, int tickCount) {
private OnClickListener onClickListener;
public void setOnClickListener(OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
@Override
public void onStartMoving(QMUISlider slider, int progress, int tickCount) {
public void onStartTrackingTouch(@NonNull Slider slider) {
mCurrCancelNumber = 1;
tv_number_value.setText(String.valueOf(slider.getValue()));
}
@Override
public void onStopMoving(QMUISlider slider, int progress, int tickCount) {
public void onStopTrackingTouch(@NonNull Slider slider) {
}
private OnClickListener onClickListener;
public void setOnClickListener(OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public interface OnClickListener {
void onItemClick(FoodReason item, int position, int deleteNumber);
}
......
......@@ -69,11 +69,20 @@
android:layout_margin="@dimen/dp_8"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.QMUISlider
android:id="@+id/slider_food_count"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:qmui_slider_bar_progress_color="@color/theme_color" />
<!-- <com.google.android.material.slider.Slider-->
<!-- android:id="@+id/slider_food_count"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- app:qmui_slider_bar_progress_color="@color/theme_color" />-->
<com.google.android.material.slider.Slider
android:id="@+id/slider_food_count"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme"
android:valueFrom="0"
android:valueTo="11"
android:stepSize="1" />
<TextView
android:id="@+id/tv_min_number"
......
......@@ -7,8 +7,8 @@ ext {
targetSdkVersion : 29,
//正式版: 1.0.3 3
//內部測試版:1.2.0 20
versionCode : 21,
versionName : "1.2.1"
versionCode : 22,
versionName : "1.2.2"
]
version = [
......
......@@ -348,7 +348,7 @@ public class GsaCloudApplication extends BaseApplication {
@Override
public void onPrinterDataBefore(int orderType, int printType, String printerData, String printerDeviceInfo) {
LoganManager.w_printer(TAG, "打印前--> printerData=" + printerData + " printerDeviceInfo=" + printerDeviceInfo);
LoganManager.w_printer(TAG, "打印前数据--> printerData=" + printerData + " printerDeviceInfo=" + printerDeviceInfo);
}
@Override
......
package com.gingersoft.gsa.cloud.common.config;
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans;
/**
* @author : bin
* @create date: 2020-11-05
......@@ -12,7 +14,7 @@ public class LoganConfig {
public static final String EncryptKey16 = "0123456789012345";
public static final String EncryptIV16 = "0123456789012345";
public static final String APP_ID = "gingersoft1008611";
public static final String UPLOAD_LOG_URL = "http://192.168.1.131:8080/logan-web/logan/upload.json";
public static final String UPLOAD_LOG_URL = HttpsConstans.HTTP_ADDRESS_URL_HK+ "/logan-web/logan/upload.json";
/**
* 日誌保留天數
......@@ -28,28 +30,20 @@ public class LoganConfig {
*/
public static final byte NETWORK_LEVLE = 2;
/**
* 數據庫日誌
*/
public static final byte DATABASE_LEVLE = 3;
/**
* 用戶行為日誌(頁面跳轉,交互,觸摸反饋等)
*/
public static final byte ACTION_LEVLE = 4;
public static final byte ACTION_LEVLE = 3;
/**
* 崩潰日誌
*/
public static final byte CRASH_LEVLE = 5;
public static final byte CRASH_LEVLE = 4;
/**
* H5日誌
*/
public static final byte H5_LEVLE = 6;
public static final byte H5_LEVLE = 5;
/**
* native日誌
*/
public static final byte native_LEVLE = 7;
public static final byte native_LEVLE = 6;
/**
* 打印模塊相關日誌
*/
public static final byte PRINTER_LEVLE = 8;
}
......@@ -36,7 +36,7 @@ public class HttpsConstans {
//--------------------------------------------其他全局----------------------------------------------------------------------------
private static String HTTP_ADDRESS_URL_FORMAL = "https://m.ricepon.com:8444";//正式服務器
private static String HTTP_ADDRESS_URL_SZ = "http://gingersoft.tpddns.cn:58201";//深圳測試
private static String HTTP_ADDRESS_URL_HK = "http://a.ricepon.com:58201";//香港測試
public static String HTTP_ADDRESS_URL_HK = "http://a.ricepon.com:58201";//香港測試
private static String HTTP_ADDRESS_URL_PRE = "http://prf-m.ricepon.com";//預發佈
public static String CLOUD_GSA_API_PATH = "/ricepon-cloud-gsa/api/";//雲端GSA路徑
......
......@@ -47,7 +47,7 @@ public class LoganManager {
}
public static void w_database(String TAG,String log) {
Logan.w(log, LoganConfig.DATABASE_LEVLE);
Logan.w("database-->"+log, LoganConfig.CODE_LEVLE);
// Logan.f();
if (BuildConfig.DEBUG) {
printLog(TAG, log);
......@@ -62,7 +62,7 @@ public class LoganManager {
}
public static void w_printer(String TAG,String log) {
Logan.w(log, LoganConfig.PRINTER_LEVLE);
Logan.w("printer-->"+log, LoganConfig.CODE_LEVLE);
// Logan.f();
printLog(TAG, log);
}
......@@ -106,7 +106,7 @@ public class LoganManager {
}
}
});
LoganManager.w_code(TAG,"upload result, httpCode: " + statusCode + ", details: " + resultData);
LoganManager.w_code(TAG,"上傳日誌到服務器: " + statusCode + ", details: " + resultData);
}
});
}
......
......@@ -28,7 +28,7 @@ public class PrinterFileUtils {
public static final int PRINTER_KEEP_FILE_SIZE = 20 * 1024 * 1024;
//根目錄
public static String PrinterImagesRootPath = "PrinterImages";
public static final String PrinterImagesRootPath = "PrinterImages";
/**
* 廚房單
* 堂食結賬單
......@@ -39,14 +39,14 @@ public class PrinterFileUtils {
* 外送結賬單
* 清機單
*/
public static String KitchenImage = "KitchenImages";
public static String PrintOrderImage = "PrintOrderImages";
public static String BillImage = "BillImages";
public static String ServingPaperImage = "ServingPaperImages";
public static String QrcodeImage = "QrcodeImages";
public static String DeliveryPrintOrderImage = "DeliveryPrintOrderImages";
public static String DeliveryBillImage = "DeliveryBillImages";
public static String SettlementImage = "SettlementImages";
public static final String KitchenImage = "廚房單";
public static final String PrintOrderImage = "堂食印單";
public static final String BillImage = "堂食結賬單";
public static final String ServingPaperImage = "上菜紙";
public static final String QrcodeImage = "Qrcode";
public static final String DeliveryPrintOrderImage = "外賣印單";
public static final String DeliveryBillImage = "外賣結賬單";
public static final String SettlementImage = "清機";
public final static String ROOT_PATH = FileUtils.ALBUM_PATH + PrinterImagesRootPath + File.separator;
public final static String KITCHEN_PRJ_IMAGE_PATH = ROOT_PATH + KitchenImage + File.separator;
......@@ -66,12 +66,12 @@ public class PrinterFileUtils {
if (TextUtils.isEmpty(savePath)) {
return null;
}
LoganManager.w_printer(TAG, "save path :" + savePath);
File file = new File(ROOT_PATH);
if (file != null && file.exists()) {
long FILE_SIZE = FileUtils.getDirSize(file);
LoganManager.w_printer(TAG, "保存打印圖片到本地 path = " + savePath);
File rootFileDir = new File(ROOT_PATH);
if (rootFileDir != null && rootFileDir.exists()) {
long FILE_SIZE = FileUtils.getDirSize(rootFileDir);
if (FILE_SIZE > PRINTER_MAX_FILE_SIZE) {
LoganManager.w_printer(TAG, "delete file before size : " + FILE_SIZE);
LoganManager.w_printer(TAG, "刪除本地打印圖片 before size = " + FILE_SIZE);
//大於100M 就刪除
File prjPath = new File(ROOT_PATH);
if (prjPath.isDirectory()) {
......@@ -80,8 +80,8 @@ public class PrinterFileUtils {
File prjDirectory = prjDirectorys[i];
boolean deleteResult = prjDirectory.delete();
if (deleteResult && FILE_SIZE <= PRINTER_KEEP_FILE_SIZE) {
FILE_SIZE = FileUtils.getFileSize(ROOT_PATH);
LoganManager.w_printer(TAG, "delete file after size : " + FILE_SIZE);
FILE_SIZE = FileUtils.getDirSize(rootFileDir);
LoganManager.w_printer(TAG, "刪除本地打印圖片 after size = " + FILE_SIZE);
break;
}
}
......@@ -90,17 +90,17 @@ public class PrinterFileUtils {
}
for (Bitmap bitmap : bitmaps) {
String fileName = directoryName + "-" + System.currentTimeMillis();
LoganManager.w_printer(TAG, "saveBitmap fileName : " + fileName);
LoganManager.w_printer(TAG, "fileName : " + fileName);
BitmapUtil.saveBitmap(bitmap, savePath + directoryName + File.separator, fileName + ".jpeg", new BitmapUtil.OnSaveBitmapListener() {
@Override
public void onSuccess() {
LoganManager.w_printer(TAG, "saveBitmap onSuccess");
LoganManager.w_printer(TAG, "保存打印圖片成功");
}
@Override
public void onError(Exception e) {
LoganManager.w_printer(TAG, "saveBitmap onError :" + e.getMessage());
LoganManager.w_printer(TAG, "保存打印圖片失敗 onError :" + e.getMessage());
}
});
}
......
......@@ -170,7 +170,7 @@ public class ComboItemDaoUtils {
// }
if (fid > 0) {
sql = sql + " where r.FID='" + fid + "' order by c.SEQ_NO asc";
sql = sql + " where r.FID='" + fid + "' order by c.SEQ_NO,f.CREATE_TIME desc";
}
Cursor c = mManager.getDaoSession().getFoodDao().getDatabase().rawQuery(sql, null);
while (c.moveToNext()) {
......
......@@ -129,7 +129,7 @@ public class PrintSocketHolder {
out.write(item);
out.flush();
} catch (IOException e) {
LoganManager.w_printer(TAG, "-->打印异常: " + e.getMessage());
LoganManager.w_printer(TAG, "打印异常: " + e.getMessage());
closeSocket();
return ERROR_4;
}
......@@ -165,7 +165,7 @@ public class PrintSocketHolder {
}
public int prepareSocket() {
LoganManager.w_printer(TAG, "-->准备尝试连接打印机");
LoganManager.w_printer(TAG, "准备尝试连接打印机");
int create = createSocket();
if (create != PrintSocketHolder.ERROR_0) {
return create;
......@@ -183,7 +183,7 @@ public class PrintSocketHolder {
* 销毁
*/
public int closeSocket() {
LoganManager.w_printer(TAG, "-->準備关闭打印机连接");
LoganManager.w_printer(TAG, "準備关闭打印机连接");
onPrinterStateChanged(STATE_4);
boolean error = false;
try {
......@@ -192,7 +192,7 @@ public class PrintSocketHolder {
out = null;
}
} catch (IOException e) {
LoganManager.w_printer(TAG, "-->关闭打印机连接异常");
LoganManager.w_printer(TAG, "关闭打印机连接异常");
out = null;
error = true;
}
......@@ -202,7 +202,7 @@ public class PrintSocketHolder {
socket = null;
}
} catch (IOException e) {
LoganManager.w_printer(TAG, "-->关闭打印机连接异常");
LoganManager.w_printer(TAG, "关闭打印机连接异常");
socket = null;
error = true;
}
......@@ -212,7 +212,7 @@ public class PrintSocketHolder {
bluetoothSocket = null;
}
} catch (IOException e) {
LoganManager.w_printer(TAG, "-->关闭打印机连接异常");
LoganManager.w_printer(TAG, "关闭打印机连接异常");
bluetoothSocket = null;
error = true;
}
......
......@@ -81,11 +81,9 @@ public class PrintUtil {
private boolean sendData(List<byte[]> data) {
if (holder.sendData(data) == PrintSocketHolder.ERROR_0) {
LoganManager.w_printer(TAG,"PrintTask sendData(List<byte[]> data) -------------打印完成------------------>");
time = 0;
return true;
} else {
LoganManager.w_printer(TAG,"PrintTask sendData(List<byte[]> data) -------------递归打印------------------>");
return prepareSocket() && sendData(data);
}
}
......
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