Commit 9d1b9379 by Wyh

凍鏈接單優化,打印回調優化

parent 25817e40
...@@ -12,15 +12,14 @@ import com.gingersoft.coldchain_module.mvp.model.bean.PickUpBean; ...@@ -12,15 +12,14 @@ import com.gingersoft.coldchain_module.mvp.model.bean.PickUpBean;
import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean; import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean;
import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean; import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean;
import com.gingersoft.coldchain_module.mvp.model.bean.ThirdItem; import com.gingersoft.coldchain_module.mvp.model.bean.ThirdItem;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateRestaurantStateBean; import com.gingersoft.coldchain_module.mvp.model.bean.UpdateRestaurantStateBean;
import com.gingersoft.gsa.cloud.common.constans.ExpandConstant; import com.gingersoft.gsa.cloud.common.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans; import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails; import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils; import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils;
import com.gingersoft.gsa.cloud.common.core.user.UserContext;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.order.order.TakeawayOrder; import com.gingersoft.gsa.cloud.order.order.TakeawayOrder;
...@@ -330,6 +329,8 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -330,6 +329,8 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
third.add(thirdItemItem); third.add(thirdItemItem);
} }
} }
Log.e("eee", "調用第三方物流接口開始");
//第三方物流
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("orderId", dataBean.getID() + "") .add("orderId", dataBean.getID() + "")
.add("items", GsonUtils.GsonString(third)) .add("items", GsonUtils.GsonString(third))
...@@ -346,6 +347,7 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -346,6 +347,7 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
.subscribe(new ErrorHandleSubscriber<ShipAnyOrdersNewBean>(mErrorHandler) { .subscribe(new ErrorHandleSubscriber<ShipAnyOrdersNewBean>(mErrorHandler) {
@Override @Override
public void onNext(@NonNull ShipAnyOrdersNewBean info) { public void onNext(@NonNull ShipAnyOrdersNewBean info) {
Log.e("eee", "調用第三方物流接口結束:");
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
//修改訂單狀態 //修改訂單狀態
updateOrderState(dataBean, ColdChainConstants.ORDER_CONFIRMED); updateOrderState(dataBean, ColdChainConstants.ORDER_CONFIRMED);
...@@ -355,13 +357,14 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -355,13 +357,14 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
} }
private void printColdChainOrder(OrderDetails.DataBean dataBean) { private void printColdChainOrder(OrderDetails.DataBean dataBean) {
LogUtil.w("eee", "凍鏈自動上菜紙" + RestaurantExpandInfoUtils.getValue(ExpandConstant.AutoPrinterPaper, true));
if (RestaurantExpandInfoUtils.getValue(ExpandConstant.AutoPrinterPaper, true)) { if (RestaurantExpandInfoUtils.getValue(ExpandConstant.AutoPrinterPaper, true)) {
//打印凍鏈上菜紙 //打印凍鏈上菜紙
dataBean.setOrder_type(8); dataBean.setOrder_type(8);
TakeawayOrder.getInstance().getShoppingCart().setDeliveryAndPickupData(dataBean); TakeawayOrder.getInstance().getShoppingCart().setDeliveryAndPickupData(dataBean);
PrintContentAdapter contentAdapter = new PrintContentAdapter(); PrintContentAdapter contentAdapter = new PrintContentAdapter();
PrintContent printContent = contentAdapter.adaptationPrintTakeawayFormContent(dataBean); PrintContent printContent = contentAdapter.adaptationPrintTakeawayFormContent(dataBean);
Log.e("eee", "打印凍鏈上菜紙"); LogUtil.w("eee", "打印凍鏈上菜紙");
CC.obtainBuilder(ComponentName.COMPONENT_PRINT) CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_OTHER_ORDER) .addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_OTHER_ORDER)
.addParam(PrintConstans.PRINT_CONTENT, printContent) .addParam(PrintConstans.PRINT_CONTENT, printContent)
...@@ -390,27 +393,34 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -390,27 +393,34 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
} }
//添加PRJ //添加PRJ
addPrj(dataBean); addPrj(dataBean);
RequestBody requestBody = new FormBody.Builder()
.add("memberId", UserContext.newInstance().getMemberId() + "")
.add("orderId", dataBean.getID() + "")
.add("status", status + "")
.add("", UserContext.newInstance().getMemberName())
.build();
mModel.updateOrderStatus(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("確認訂單中,請稍候..."))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<UpdateOrderStatusBean>(mErrorHandler) {
@Override
public void onNext(@NonNull UpdateOrderStatusBean info) {
mRootView.refreshOrderState(dataBean.getID());
//打印凍鏈上菜紙 //打印凍鏈上菜紙
printColdChainOrder(dataBean); printColdChainOrder(dataBean);
} //修改訂單狀態
}); //後台會修改狀態,這裡就不修改
// RequestBody requestBody = new FormBody.Builder()
// .add("memberId", UserContext.newInstance().getMemberId() + "")
// .add("orderId", dataBean.getID() + "")
// .add("status", status + "")
// .add("", UserContext.newInstance().getMemberName())
// .build();
// LogUtil.w("eee", "修改訂單狀態開始----start");
// mModel.updateOrderStatus(requestBody)
// .subscribeOn(Schedulers.io())
// .doOnSubscribe(disposable -> mRootView.showLoading("確認訂單中,請稍候..."))
// .subscribeOn(AndroidSchedulers.mainThread())
// .observeOn(AndroidSchedulers.mainThread())
// .doAfterTerminate(() -> mRootView.hideLoading())
// .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
// .subscribe(new ErrorHandleSubscriber<UpdateOrderStatusBean>(mErrorHandler) {
// @Override
// public void onNext(@NonNull UpdateOrderStatusBean info) {
// LogUtil.w("eee", "修改訂單狀態結束----end----" + info.toString());
// mRootView.refreshOrderState(dataBean.getID());
// //打印凍鏈上菜紙
// printColdChainOrder(dataBean);
// }
// });
} }
private void addPrj(OrderDetails.DataBean dataBean) { private void addPrj(OrderDetails.DataBean dataBean) {
...@@ -439,6 +449,7 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -439,6 +449,7 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
.add("restaurantId", RestaurantInfoManager.newInstance().getRestaurantId() + "") .add("restaurantId", RestaurantInfoManager.newInstance().getRestaurantId() + "")
.add("orderDetailsIds", ids.toString()) .add("orderDetailsIds", ids.toString())
.build(); .build();
LogUtil.i("eee", "添加prj");
Disposable subscribe = mModel.addPrj(requestBody) Disposable subscribe = mModel.addPrj(requestBody)
.subscribeOn(Schedulers.io()).subscribe(s -> { .subscribeOn(Schedulers.io()).subscribe(s -> {
}); });
......
...@@ -40,7 +40,7 @@ import com.gingersoft.gsa.cloud.common.constans.DeliveryPickConstans; ...@@ -40,7 +40,7 @@ import com.gingersoft.gsa.cloud.common.constans.DeliveryPickConstans;
import com.gingersoft.gsa.cloud.common.constans.ExpandConstant; import com.gingersoft.gsa.cloud.common.constans.ExpandConstant;
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager; import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager;
import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils; import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInfoUtils;
import com.gingersoft.gsa.cloud.common.service.GetInfoUpdateService; import com.gingersoft.gsa.cloud.common.service.DataNotificationService;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog; import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
...@@ -53,7 +53,6 @@ import com.qmuiteam.qmui.util.QMUIDisplayHelper; ...@@ -53,7 +53,6 @@ import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopup;
import com.qmuiteam.qmui.widget.popup.QMUIPopups; import com.qmuiteam.qmui.widget.popup.QMUIPopups;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -62,7 +61,6 @@ import java.util.List; ...@@ -62,7 +61,6 @@ import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import io.reactivex.disposables.Disposable;
import static androidx.fragment.app.FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT; import static androidx.fragment.app.FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
...@@ -207,7 +205,7 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre ...@@ -207,7 +205,7 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
private void initService() { private void initService() {
//開啟websocket //開啟websocket
Intent intent = new Intent(getApplicationContext(), GetInfoUpdateService.class); Intent intent = new Intent(getApplicationContext(), DataNotificationService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent); startForegroundService(intent);
} else { } else {
...@@ -222,28 +220,33 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre ...@@ -222,28 +220,33 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
registerReceiver(clearHeartBroadcastReceiver, intentFilter); registerReceiver(clearHeartBroadcastReceiver, intentFilter);
} }
private GetInfoUpdateService.MyBind bind = null; private DataNotificationService.MyBind bind = null;
private long lastClickTime = 0;
private ServiceConnection serviceConnection = new ServiceConnection() { private ServiceConnection serviceConnection = new ServiceConnection() {
@Override @Override
public void onServiceConnected(ComponentName name, IBinder service) { public void onServiceConnected(ComponentName name, IBinder service) {
bind = (GetInfoUpdateService.MyBind) service; bind = (DataNotificationService.MyBind) service;
if (bind != null) { if (bind != null) {
bind.setOnPostCallBack(type -> { bind.setOnPostCallBack(type -> {
// -1斷開連接,\n-2:消息傳輸錯誤,\n0:連接消息,\n1:登錄通知,\n2:登出通知,\n3:外賣送單通知,\n4:自取送單通知,\n5:歷史訂單通知,\n6:修改訂單狀態通知,\n7:支付成功通知" // -1斷開連接,\n-2:消息傳輸錯誤,\n0:連接消息,\n1:登錄通知,\n2:登出通知,\n3:外賣送單通知,\n4:自取送單通知,\n5:歷史訂單通知,\n6:修改訂單狀態通知,\n7:支付成功通知"
if (type == 3 || type == 5 if (type == 3 || type == 5
|| type == 6 || type == 7) {//ColdChainConstants.orderType || type == 6 || type == 7) {
long nowTime = System.currentTimeMillis();
if (nowTime - lastClickTime < 8000) {
return;
}
lastClickTime = nowTime;
fragments.get(viewPager.getCurrentItem()).onRefreshData(); fragments.get(viewPager.getCurrentItem()).onRefreshData();
mPresenter.getBalance(); mPresenter.getBalance();
if (type != 5) {
getNumByOrderTypeInvoke("loadNumber");
}
//判斷要不要自動接單 //判斷要不要自動接單
if(autoReceivingOrders.isChecked()){ if (autoReceivingOrders.isChecked()) {
mPresenter.startToBeConfirmedOrderList(restaurantId); mPresenter.startToBeConfirmedOrderList(restaurantId);
} }
} }
if (type == 3 || type == 6 || type == 7) {
getNumByOrderTypeInvoke("loadNumber");
}
}); });
bind.execute(aBoolean -> null); bind.execute(aBoolean -> null);
bind.setJumpActivity(ColdChainMainActivity.class); bind.setJumpActivity(ColdChainMainActivity.class);
...@@ -255,7 +258,6 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre ...@@ -255,7 +258,6 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
} }
}; };
private int confirmedOrderNum; private int confirmedOrderNum;
@Override @Override
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
</intent-filter> </intent-filter>
</activity> </activity>
<service android:name="com.gingersoft.gsa.cloud.common.service.GetInfoUpdateService" /> <service android:name="com.gingersoft.gsa.cloud.common.service.DataNotificationService" />
<meta-data <meta-data
android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration" android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration"
......
...@@ -7,7 +7,7 @@ import com.billy.cc.core.component.CCResult; ...@@ -7,7 +7,7 @@ import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil; import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent; import com.billy.cc.core.component.IComponent;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.common.service.GetInfoUpdateService; import com.gingersoft.gsa.cloud.common.service.DataNotificationService;
import com.gingersoft.gsa.delivery_pick_mode.data.network.ServiceCreator; import com.gingersoft.gsa.delivery_pick_mode.data.network.ServiceCreator;
import com.gingersoft.gsa.delivery_pick_mode.mvp.ui.activity.PrjQueryActivity; import com.gingersoft.gsa.delivery_pick_mode.mvp.ui.activity.PrjQueryActivity;
import com.gingersoft.gsa.delivery_pick_mode.mvp.ui.activity.SendOrderActivity; import com.gingersoft.gsa.delivery_pick_mode.mvp.ui.activity.SendOrderActivity;
...@@ -52,7 +52,7 @@ public class DeliveryPickComponent implements IComponent { ...@@ -52,7 +52,7 @@ public class DeliveryPickComponent implements IComponent {
CC.sendCCResult(cc.getCallId(), CCResult.success()); CC.sendCCResult(cc.getCallId(), CCResult.success());
break; break;
case "closeHeart": case "closeHeart":
Intent intent = new Intent(cc.getContext(), GetInfoUpdateService.class); Intent intent = new Intent(cc.getContext(), DataNotificationService.class);
cc.getContext().stopService(intent); cc.getContext().stopService(intent);
break; break;
case "historyActivity": case "historyActivity":
......
...@@ -22,7 +22,7 @@ import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails.Companion.veri ...@@ -22,7 +22,7 @@ import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails.Companion.veri
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
import com.gingersoft.gsa.cloud.common.core.user.UserContext import com.gingersoft.gsa.cloud.common.core.user.UserContext
import com.gingersoft.gsa.cloud.common.logan.LoganManager import com.gingersoft.gsa.cloud.common.logan.LoganManager
import com.gingersoft.gsa.cloud.common.service.GetInfoUpdateService import com.gingersoft.gsa.cloud.common.service.DataNotificationService
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil import com.gingersoft.gsa.cloud.common.utils.other.TextUtil
...@@ -232,7 +232,8 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -232,7 +232,8 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
} else { } else {
} }
} else {} } else {
}
} }
//獲取預約單 //獲取預約單
repository.requestOrderList(restaurantId.toString(), fragmentStatus[1], fragmentType[0], "1", orderNo, phone, 1).apply { repository.requestOrderList(restaurantId.toString(), fragmentStatus[1], fragmentType[0], "1", orderNo, phone, 1).apply {
...@@ -420,11 +421,11 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -420,11 +421,11 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
thirdSend(restaurantId, dataBean, trafficType, status, isPrintPrj, isPrintBill, listener) thirdSend(restaurantId, dataBean, trafficType, status, isPrintPrj, isPrintBill, listener)
} }
} }
}, { }, { e ->
listener.invoke(getMsgBean(0, "", false)) listener.invoke(getMsgBean(0, "", false))
it.printStackTrace() e.printStackTrace()
GetInfoUpdateService.loginfo.append("錯誤信息111:" + it.message + " LOCALIZEDMESSAGE:" + it.localizedMessage + it.cause) DataNotificationService.loginfo.append("錯誤信息111:" + e.message + " LOCALIZEDMESSAGE:" + e.localizedMessage + e.cause)
GetInfoUpdateService.loginfo.append("\n") DataNotificationService.loginfo.append("\n")
}) })
} }
...@@ -564,12 +565,12 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -564,12 +565,12 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
//添加PRJ //添加PRJ
//單獨包起來,哪怕這接口報錯也不要影響到正常的邏輯 //單獨包起來,哪怕這接口報錯也不要影響到正常的邏輯
repository.addPrj(dataBean.Order_ID.toString(), restaurantId.toString(), ids.toString()) repository.addPrj(dataBean.Order_ID.toString(), restaurantId.toString(), ids.toString())
GetInfoUpdateService.loginfo.append("添加PRJ:orderId:" + dataBean.Order_ID.toString() + "restaurantId:" + restaurantId + "orderDetailsIds:" + ids.toString()) DataNotificationService.loginfo.append("添加PRJ:orderId:" + dataBean.Order_ID.toString() + "restaurantId:" + restaurantId + "orderDetailsIds:" + ids.toString())
GetInfoUpdateService.loginfo.append("\n") DataNotificationService.loginfo.append("\n")
}, { }, {
it.printStackTrace() it.printStackTrace()
GetInfoUpdateService.loginfo.append("錯誤信息222:" + it.message + " LOCALIZEDMESSAGE:" + it.localizedMessage + it.cause) DataNotificationService.loginfo.append("錯誤信息222:" + it.message + " LOCALIZEDMESSAGE:" + it.localizedMessage + it.cause)
GetInfoUpdateService.loginfo.append("\n") DataNotificationService.loginfo.append("\n")
}) })
} }
if (isPrintBill) { if (isPrintBill) {
......
...@@ -31,7 +31,7 @@ import com.gingersoft.gsa.cloud.common.constans.ExpandConstant ...@@ -31,7 +31,7 @@ import com.gingersoft.gsa.cloud.common.constans.ExpandConstant
import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans.TAKEAWAY_TYPE import com.gingersoft.gsa.cloud.common.constans.FoodSummaryConstans.TAKEAWAY_TYPE
import com.gingersoft.gsa.cloud.common.constans.FunctionManagerConstants import com.gingersoft.gsa.cloud.common.constans.FunctionManagerConstants
import com.gingersoft.gsa.cloud.common.function.FunctionManager import com.gingersoft.gsa.cloud.common.function.FunctionManager
import com.gingersoft.gsa.cloud.common.service.GetInfoUpdateService import com.gingersoft.gsa.cloud.common.service.DataNotificationService
import com.gingersoft.gsa.cloud.common.service.PostCallBack import com.gingersoft.gsa.cloud.common.service.PostCallBack
import com.gingersoft.gsa.cloud.order.order.BaseOrder import com.gingersoft.gsa.cloud.order.order.BaseOrder
import com.gingersoft.gsa.cloud.ui.utils.AppDialog import com.gingersoft.gsa.cloud.ui.utils.AppDialog
...@@ -387,7 +387,7 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -387,7 +387,7 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
private fun initWebsocket() { private fun initWebsocket() {
//開啟websocket //開啟websocket
val service = Intent(applicationContext, GetInfoUpdateService::class.java) val service = Intent(applicationContext, DataNotificationService::class.java)
val notification: NotificationManagerCompat = NotificationManagerCompat.from(this) val notification: NotificationManagerCompat = NotificationManagerCompat.from(this)
if (!notification.areNotificationsEnabled()) { if (!notification.areNotificationsEnabled()) {
//未開啟通知權限 //未開啟通知權限
...@@ -437,12 +437,12 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -437,12 +437,12 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
unbindService(serviceConnection) unbindService(serviceConnection)
} }
var bind: GetInfoUpdateService.MyBind? = null var bind: DataNotificationService.MyBind? = null
var lastRefreshTime: Long = 0 var lastRefreshTime: Long = 0
private var serviceConnection = object : ServiceConnection { private var serviceConnection = object : ServiceConnection {
override fun onServiceConnected(name: ComponentName, service: IBinder) { override fun onServiceConnected(name: ComponentName, service: IBinder) {
bind = service as GetInfoUpdateService.MyBind bind = service as DataNotificationService.MyBind
bind?.let { it -> bind?.let { it ->
it.setOnPostCallBack(object : PostCallBack { it.setOnPostCallBack(object : PostCallBack {
override fun callBack(type: Int) { override fun callBack(type: Int) {
......
...@@ -3,7 +3,7 @@ package com.gingersoft.gsa.delivery_pick_mode.ui.activity; ...@@ -3,7 +3,7 @@ package com.gingersoft.gsa.delivery_pick_mode.ui.activity;
import android.os.Bundle; import android.os.Bundle;
import android.widget.TextView; import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import com.gingersoft.gsa.cloud.common.service.GetInfoUpdateService; import com.gingersoft.gsa.cloud.common.service.DataNotificationService;
import com.gingersoft.gsa.delivery_pick_mode.R; import com.gingersoft.gsa.delivery_pick_mode.R;
public class LogActivity extends AppCompatActivity { public class LogActivity extends AppCompatActivity {
...@@ -14,13 +14,13 @@ public class LogActivity extends AppCompatActivity { ...@@ -14,13 +14,13 @@ public class LogActivity extends AppCompatActivity {
setContentView(R.layout.activity_log); setContentView(R.layout.activity_log);
loadInfo(); loadInfo();
findViewById(R.id.btn_clear_log).setOnClickListener(v -> { findViewById(R.id.btn_clear_log).setOnClickListener(v -> {
GetInfoUpdateService.loginfo.setLength(0); DataNotificationService.loginfo.setLength(0);
loadInfo(); loadInfo();
}); });
findViewById(R.id.btn_back).setOnClickListener(v ->finish()); findViewById(R.id.btn_back).setOnClickListener(v ->finish());
} }
private void loadInfo() { private void loadInfo() {
((TextView) findViewById(R.id.tv_log)).setText(GetInfoUpdateService.loginfo.toString()); ((TextView) findViewById(R.id.tv_log)).setText(DataNotificationService.loginfo.toString());
} }
} }
package com.joe.print.mvp.print;
public interface PrintListener {
void printStateChanged(int state);
void printSuccess();
void printFailure(String msg);
}
...@@ -37,6 +37,8 @@ import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInf ...@@ -37,6 +37,8 @@ import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInf
import com.gingersoft.gsa.cloud.common.logan.LoganManager; import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.printer.AidlUtil; import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins; import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.common.utils.view.ImageUtils; import com.gingersoft.gsa.cloud.common.utils.view.ImageUtils;
...@@ -81,6 +83,7 @@ import com.xuexiang.rxutil2.rxjava.RxJavaUtils; ...@@ -81,6 +83,7 @@ import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask; import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.io.IOException; import java.io.IOException;
import java.net.ConnectException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
...@@ -96,7 +99,7 @@ import static com.joe.print.mvp.print.common.HtmlContract.LABLE_DIV; ...@@ -96,7 +99,7 @@ import static com.joe.print.mvp.print.common.HtmlContract.LABLE_DIV;
import static com.joe.print.mvp.print.common.HtmlContract.LABLE_P; import static com.joe.print.mvp.print.common.HtmlContract.LABLE_P;
@Getter @Getter
public abstract class PrinterRoot<T extends PrintContent> implements PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener, ReceiveListener { public abstract class PrinterRoot<T extends PrintContent> implements PrintExecutor.OnPrintResultListener, ReceiveListener {
private final String TAG = getClass().getSimpleName(); private final String TAG = getClass().getSimpleName();
@Inject @Inject
...@@ -106,7 +109,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -106,7 +109,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
private final static int N5_PAPER_WIDTH = 500;//N5打印機紙張寬度 private final static int N5_PAPER_WIDTH = 500;//N5打印機紙張寬度
final static String DELIMITER = "/";//將打印位置區分開來。。。。,暫時只有廚房單用到 final static String DELIMITER = "/";//將打印位置區分開來。。。。,暫時只有廚房單用到
private PrintListener printListener; // private PrintListener printListener;
private static SparseArray<PrinterRoot> mPrinterStrategy = new SparseArray<>(); private static SparseArray<PrinterRoot> mPrinterStrategy = new SparseArray<>();
...@@ -140,10 +143,10 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -140,10 +143,10 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
protected void setPrintContent(T printContent) { protected void setPrintContent(T printContent) {
} }
public PrinterRoot setPrintListener(PrintListener printListener) { // public PrinterRoot setPrintListener(PrintListener printListener) {
this.printListener = printListener; // this.printListener = printListener;
return this; // return this;
} // }
/** /**
* 把Map中Key相同,则各个value添加到一起,汇总值 * 把Map中Key相同,则各个value添加到一起,汇总值
...@@ -220,20 +223,20 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -220,20 +223,20 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
/** /**
* 本機打印 * 本機打印
*/ */
public void locationPrint(List<Bitmap> bitmaps, String[] BBPosPrintDatas, PrintListener listener) { public void locationPrint(List<Bitmap> bitmaps, String[] BBPosPrintDatas) {
//本機打印 //本機打印
String model = Build.MODEL; String model = Build.MODEL;
if (PrintConstans.PRINT_MODEL_V2.contains(model)) { if (PrintConstans.PRINT_MODEL_V2.contains(model)) {
sunmiPrint(bitmaps, listener); sunmiPrint(bitmaps);
} else if (PrintConstans.PRINT_MODEL_N5.contains(model)) { } else if (PrintConstans.PRINT_MODEL_N5.contains(model)) {
//N5打印 //N5打印
n5Print(bitmaps, listener); n5Print(bitmaps);
} else if (PrintConstans.PRINT_MODEL_WISEPOS.contains(model)) { } else if (PrintConstans.PRINT_MODEL_WISEPOS.contains(model)) {
//BBPOS Wisepos 打印 localhost 192.168.1.162 //BBPOS Wisepos 打印 localhost 192.168.1.162
//打印結果示例:<?xml version="1.0" encoding= "UTF-8" ?><WAPIResult><status>SUCCESS</status><requestType>PRINT</requestType><state>IDLE</state><systemInfo><appVersion>1.22.4.4.007</appVersion><OSVersion>9</OSVersion><ip>192.168.1.162</ip><mac>2059a018d3d6</mac><serialNumber>WSS503013000075</serialNumber><firmware>WSS50.501-02 (5.00.01.02.beta7)</firmware><hardware></hardware><terminalConfig>GNZZ_MTIPD_v13_with_AE_v1</terminalConfig><key>034040XXXXXXXXXXXXXX</key><bootloader>6.00.00.20 (6.00.00.34)</bootloader></systemInfo><timestamp>1601021267673</timestamp></WAPIResult> //打印結果示例:<?xml version="1.0" encoding= "UTF-8" ?><WAPIResult><status>SUCCESS</status><requestType>PRINT</requestType><state>IDLE</state><systemInfo><appVersion>1.22.4.4.007</appVersion><OSVersion>9</OSVersion><ip>192.168.1.162</ip><mac>2059a018d3d6</mac><serialNumber>WSS503013000075</serialNumber><firmware>WSS50.501-02 (5.00.01.02.beta7)</firmware><hardware></hardware><terminalConfig>GNZZ_MTIPD_v13_with_AE_v1</terminalConfig><key>034040XXXXXXXXXXXXXX</key><bootloader>6.00.00.20 (6.00.00.34)</bootloader></systemInfo><timestamp>1601021267673</timestamp></WAPIResult>
new BBposPrint().print(BBPosPrintDatas, listener, false); new BBposPrint().print(BBPosPrintDatas, false);
} else { } else {
listener.printFailure("暫不支持本機型打印"); printFailure("暫不支持本機型打印", UpdateBean.FAIL_LOCAL_PRINT_NOT_DEVICE);
} }
} }
...@@ -241,20 +244,18 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -241,20 +244,18 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
* n5打印 * n5打印
* *
* @param bitmaps * @param bitmaps
* @param listener
*/ */
private void n5Print(List<Bitmap> bitmaps, PrintListener listener) { private void n5Print(List<Bitmap> bitmaps) {
try { try {
for (int i = 0; i < bitmaps.size(); i++) { for (int i = 0; i < bitmaps.size(); i++) {
PrinterUtil.appendImage(ImageUtils.zoomDrawable(bitmaps.get(i), N5_PAPER_WIDTH), PrinterConstant.ALIGN_CENTER); PrinterUtil.appendImage(ImageUtils.zoomDrawable(bitmaps.get(i), N5_PAPER_WIDTH), PrinterConstant.ALIGN_CENTER);
PrinterUtil.appendPrnStr("\n", 24, PrinterConstant.ALIGN_CENTER, false); PrinterUtil.appendPrnStr("\n", 24, PrinterConstant.ALIGN_CENTER, false);
PrinterUtil.appendPrnStr("\n", 24, PrinterConstant.ALIGN_CENTER, false); PrinterUtil.appendPrnStr("\n", 24, PrinterConstant.ALIGN_CENTER, false);
} }
startN5Print(listener); startN5Print();
} catch (RemoteException e) { } catch (RemoteException e) {
e.printStackTrace(); e.printStackTrace();
listener.printFailure("打印失敗,請重試"); printFailure(e.getMessage(), UpdateBean.FAILED_PRINT_N5);
} }
} }
...@@ -262,9 +263,8 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -262,9 +263,8 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
* 商米打印 * 商米打印
* *
* @param bitmaps * @param bitmaps
* @param listener
*/ */
private void sunmiPrint(List<Bitmap> bitmaps, PrintListener listener) { private void sunmiPrint(List<Bitmap> bitmaps) {
//商米打印 //商米打印
PrinterPlugins.getOnPrinterFlowHandler().connectionSuccess(); PrinterPlugins.getOnPrinterFlowHandler().connectionSuccess();
AidlUtil.getInstance().printBitmaps(bitmaps, SUNMI_PAPER_WIDTH, new InnerResultCallbcak() { AidlUtil.getInstance().printBitmaps(bitmaps, SUNMI_PAPER_WIDTH, new InnerResultCallbcak() {
...@@ -272,9 +272,9 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -272,9 +272,9 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
public void onRunResult(boolean isSuccess) { public void onRunResult(boolean isSuccess) {
//返回接⼝执⾏的情况(并⾮真实打印):成功或失败 //返回接⼝执⾏的情况(并⾮真实打印):成功或失败
if (isSuccess) { if (isSuccess) {
listener.printSuccess(); printSuccess();
} else { } else {
listener.printFailure("sunmi打印失敗"); printFailure("sunmi打印失敗", UpdateBean.FAILED_PRINT);
} }
} }
...@@ -299,19 +299,18 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -299,19 +299,18 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
} }
private void startN5Print(PrintListener listener) { private void startN5Print() {
try { try {
PrinterUtil.startPrint(true, new IOnPrintCallback.Stub() { PrinterUtil.startPrint(true, new IOnPrintCallback.Stub() {
@Override @Override
public void onPrintResult(int i) { public void onPrintResult(int i) {
if (i == 0) { if (i == 0) {
//打印成功 //打印成功
listener.printSuccess(); printSuccess();
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess(); PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess();
} else { } else {
//打印失敗 //打印失敗
listener.printFailure("打印失敗"); printFailure("打印失敗", i);
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(UpdateBean.getStateByCode(i)), i);
} }
} }
...@@ -320,11 +319,10 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -320,11 +319,10 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
return this; return this;
} }
}); });
} catch ( } catch (RemoteException e) {
RemoteException e) {
e.printStackTrace(); e.printStackTrace();
//打印失敗 //打印失敗
listener.printFailure("打印失敗"); printFailure(e.getMessage(), UpdateBean.FAILED_PRINT_N5);
} }
} }
...@@ -360,7 +358,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -360,7 +358,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
} }
} }
} }
ipPrint(printerDeviceBean, bitmaps, this, this); ipPrint(printerDeviceBean, bitmaps);
} }
public void disconnectEpson() { public void disconnectEpson() {
...@@ -369,24 +367,51 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -369,24 +367,51 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
} }
} }
private void ipPrint(PrinterDeviceBean printerDeviceBean, List<Bitmap> bitmaps, PrintSocketHolder.OnStateChangedListener stateChangedListener, PrintExecutor.OnPrintResultListener resultListener) { private void ipPrint(PrinterDeviceBean printerDeviceBean, List<Bitmap> bitmaps) {
if (executor == null) { if (executor == null) {
executor = new PrintExecutor() executor = new PrintExecutor()
.setOnStateChangedListener(stateChangedListener) .setOnStateChangedListener(state -> {
.setOnPrintResultListener(resultListener); // switch (state) {
// case PrintSocketHolder.STATE_1:
// tip = "開始創建連接";
// break;
// case PrintSocketHolder.STATE_2:
// tip = "創建連接成功,開始發送數據";
// break;
// case PrintSocketHolder.STATE_3:
// tip = "開始寫入數據";
// break;
// case PrintSocketHolder.STATE_4://关闭输出流
// tip = "關閉中";
// killMyself();
// break;
// default:
// break;
// }
LogUtil.e("eee", "打印狀態:" + state);
if(state == PrintSocketHolder.STATE_4){
printSuccess();
}
})
.setOnPrintResultListener(this::onResult);
} }
IpPrintMaker maker = new IpPrintMaker(480, bitmaps, printerDeviceBean.getIp(), printerDeviceBean.getPort()); IpPrintMaker maker = new IpPrintMaker(480, bitmaps, printerDeviceBean.getIp(), printerDeviceBean.getPort());
executor.doPrinterRequestAsync(maker); executor.doPrinterRequestAsync(maker);
} }
/**
* usb打印
*
* @param context
* @param bitmaps
*/
public void usbPrint(Context context, List<Bitmap> bitmaps) { public void usbPrint(Context context, List<Bitmap> bitmaps) {
UsbPrint usbPrint = new UsbPrint(context, (code, printId) -> { UsbPrint usbPrint = new UsbPrint(context, (code, printId) -> {
//打印結果 //打印結果
if (code == SendResultCode.SEND_SUCCESS) { if (code == SendResultCode.SEND_SUCCESS) {
printSuccess(); printSuccess();
} else if (code == SendResultCode.SEND_FAILED) { } else if (code == SendResultCode.SEND_FAILED) {
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception("usb打印失敗"), 0); printFailure("usb打印失敗", UpdateBean.FAIL_USB_PRINT);
printFailure("打印失敗");
} }
}); });
UsbPrinterFinder printerFinder = new UsbPrinterFinder(context, new PrinterFinderCallback<UsbPrinter>() { UsbPrinterFinder printerFinder = new UsbPrinterFinder(context, new PrinterFinderCallback<UsbPrinter>() {
...@@ -420,7 +445,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -420,7 +445,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
} }
} else { } else {
boolean hasPermission = new Intent().getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false); boolean hasPermission = new Intent().getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false);
printListener.printFailure("未找到USB打印機"); printFailure("未找到USB打印機", UpdateBean.FAIL_USB_PRINT_NOT_FIND);
} }
} }
}); });
...@@ -463,68 +488,62 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -463,68 +488,62 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
return; return;
case PrintSocketHolder.ERROR_6: case PrintSocketHolder.ERROR_6:
LoganManager.w_printer(TAG, "生成打印數據失敗"); LoganManager.w_printer(TAG, "生成打印數據失敗");
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("生成打印數據失敗")); printConnectError(UpdateBean.getStateByCode(errorCode));
printFailure("生成打印數據失敗");
break; break;
case PrintSocketHolder.ERROR_7: case PrintSocketHolder.ERROR_7:
LoganManager.w_printer(TAG, "連接打印機失敗"); LoganManager.w_printer(TAG, "連接打印機失敗");
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("連接打印機失敗")); printConnectError(UpdateBean.getStateByCode(errorCode));
printFailure("連接打印機失敗");
break; break;
case PrintSocketHolder.ERROR_10: case PrintSocketHolder.ERROR_10:
LoganManager.w_printer(TAG, "打印機連接成功,發送數據出現問題"); LoganManager.w_printer(TAG, "打印機連接成功,發送數據出現問題");
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception("打印機連接成功,發送數據出現問題"), errorCode); printFailure(UpdateBean.getStateByCode(errorCode), errorCode);
printFailure("打印失敗,錯誤碼:" + errorCode);
break; break;
case PrintSocketHolder.ERROR_9: case PrintSocketHolder.ERROR_9:
LoganManager.w_printer(TAG, "IP地址為空"); LoganManager.w_printer(TAG, "IP地址為空");
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("IP地址為空")); printConnectError(UpdateBean.getStateByCode(errorCode));
printFailure("IP地址為空");
break; break;
case PrintSocketHolder.ERROR_66: case PrintSocketHolder.ERROR_66:
LoganManager.w_printer(TAG, "關閉Socket出錯"); LoganManager.w_printer(TAG, "關閉Socket出錯");
PrinterPlugins.getOnPrinterFlowHandler().disconnect(new Exception("關閉打印機連接出错")); printDisconnect("關閉打印機連接出错");
break;
case PrintSocketHolder.ERROR_11:
printFailure("打印機沒紙了", UpdateBean.FAIL_NOT_PAPER);
break;
case PrintSocketHolder.ERROR_12:
//暫時只有針式打印機有
printConnectError("打印機初始化失敗");
break;
case PrintSocketHolder.ERROR_TIMEOUT:
printConnectError("連接打印機超時");
break; break;
default: default:
break; break;
} }
setPrintState(errorCode);
} }
private void printSuccess() { @Override
if (printListener != null) { public void onPtrReceive(Printer printer, int i, PrinterStatusInfo printerStatusInfo, String s) {
printListener.printSuccess(); if (i == 0) {
printSuccess();
} else {
printFailure("打印失敗", UpdateBean.FAILED_PRINT);
} }
} }
private void printFailure(String state) { private void printSuccess() {
if (printListener != null) { PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess();
printListener.printFailure(state);
}
} }
@Override private void printFailure(String msg, int code) {
public void onStateChanged(int state) { PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(msg), code);
setPrintState(state);
} }
private void setPrintState(int state) { private void printConnectError(String msg) {
if (printListener != null) { PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception(msg));
printListener.printStateChanged(state);
}
} }
@Override private void printDisconnect(String msg) {
public void onPtrReceive(Printer printer, int i, PrinterStatusInfo printerStatusInfo, String s) { PrinterPlugins.getOnPrinterFlowHandler().disconnect(new Exception(msg));
if (printListener != null) {
if (i == 0) {
printSuccess();
} else {
printFailure("打印失敗");
}
}
// EpsonPrint.getInstance().disconnectPrinter();
// EpsonPrint.getInstance().finalizeObject();
} }
...@@ -621,7 +640,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -621,7 +640,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
if (TextUtil.isEmptyOrNullOrUndefined(data.getBillNo())) { if (TextUtil.isEmptyOrNullOrUndefined(data.getBillNo())) {
if (DeliveryPickConstans.COLD_CHAIN_TYPE.equals(data.getOrder_type() + "")) { if (DeliveryPickConstans.COLD_CHAIN_TYPE.equals(data.getOrder_type() + "")) {
//凍鏈 //凍鏈
tvOrderNumber.setText("訂單號:" +data.getID()); tvOrderNumber.setText("訂單號:" + data.getID());
tvOrderNumber.setVisibility(View.VISIBLE); tvOrderNumber.setVisibility(View.VISIBLE);
} else { } else {
tvOrderNumber.setVisibility(View.GONE); tvOrderNumber.setVisibility(View.GONE);
...@@ -1405,4 +1424,5 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket ...@@ -1405,4 +1424,5 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
protected String getBrLable() { protected String getBrLable() {
return "<br/>\n"; return "<br/>\n";
} }
} }
\ No newline at end of file
...@@ -5,8 +5,8 @@ import android.text.TextUtils; ...@@ -5,8 +5,8 @@ import android.text.TextUtils;
import android.util.Xml; import android.util.Xml;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication; import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
import com.joe.print.mvp.print.PrintListener;
import com.joe.print.mvp.ui.activity.PrintActivity; import com.joe.print.mvp.ui.activity.PrintActivity;
import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParser;
...@@ -15,11 +15,8 @@ import org.xmlpull.v1.XmlPullParserException; ...@@ -15,11 +15,8 @@ import org.xmlpull.v1.XmlPullParserException;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.net.ConnectException; import java.net.ConnectException;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
...@@ -43,7 +40,6 @@ public class BBposPrint { ...@@ -43,7 +40,6 @@ public class BBposPrint {
* RESULT_UNKNOWN_MERCHANT : -7 * RESULT_UNKNOWN_MERCHANT : -7
* RESULT_INPUT_INVALID : -8 * RESULT_INPUT_INVALID : -8
*/ */
private static final String RESULT_OK = "RESULT_OK"; //成功 private static final String RESULT_OK = "RESULT_OK"; //成功
private static final String RESULT_FAILED = "RESULT_FAILED";//失敗 private static final String RESULT_FAILED = "RESULT_FAILED";//失敗
private static final String RESULT_CANCELED = "RESULT_CANCELED";//取消 private static final String RESULT_CANCELED = "RESULT_CANCELED";//取消
...@@ -84,10 +80,9 @@ public class BBposPrint { ...@@ -84,10 +80,9 @@ public class BBposPrint {
* 递归打印 * 递归打印
* *
* @param printDatas 打印数据 * @param printDatas 打印数据
* @param listener 回调监听
* @param recursion 是否递归从队列中取打印数据 * @param recursion 是否递归从队列中取打印数据
*/ */
public void print(String[] printDatas, PrintListener listener, boolean recursion) { public void print(String[] printDatas, boolean recursion) {
if (!recursion) { if (!recursion) {
if (printXMLQueues.size() > 0) { if (printXMLQueues.size() > 0) {
printXMLQueues.clear(); printXMLQueues.clear();
...@@ -117,7 +112,7 @@ public class BBposPrint { ...@@ -117,7 +112,7 @@ public class BBposPrint {
@Override @Override
public void onNext(String s) { public void onNext(String s) {
try { try {
Map<String, String> xmlContentMaps = analysisPrintResult(s, printDatas, listener, recursion); Map<String, String> xmlContentMaps = analysisPrintResult(s, printDatas, recursion);
String status = xmlContentMaps.get(STATUS); String status = xmlContentMaps.get(STATUS);
if (status != null && status.equals("SUCCESS")) { if (status != null && status.equals("SUCCESS")) {
printSuccesCount++; printSuccesCount++;
...@@ -125,13 +120,13 @@ public class BBposPrint { ...@@ -125,13 +120,13 @@ public class BBposPrint {
String errorMessage = xmlContentMaps.get("ErrorMessage"); String errorMessage = xmlContentMaps.get("ErrorMessage");
if (!TextUtils.isEmpty(errorMessage)) { if (!TextUtils.isEmpty(errorMessage)) {
if (errorMessage.equals(HTML_FORMAT_ERR)) { if (errorMessage.equals(HTML_FORMAT_ERR)) {
listener.printFailure("內容格式錯誤,無法打印!"); printFailure("內容格式錯誤,無法打印!", 0);
backPrintActivity(); backPrintActivity();
return; return;
} else if (s.contains("Please login first")) { } else if (s.contains("Please login first")) {
login(printDatas, listener, recursion); login(printDatas, recursion);
} else { } else {
listener.printFailure(errorMessage); printFailure(errorMessage, 0);
} }
} }
printErrorCount++; printErrorCount++;
...@@ -139,11 +134,10 @@ public class BBposPrint { ...@@ -139,11 +134,10 @@ public class BBposPrint {
} catch (XmlPullParserException | IOException e) { } catch (XmlPullParserException | IOException e) {
e.printStackTrace(); e.printStackTrace();
if (s.contains("Failed to connect")) { if (s.contains("Failed to connect")) {
listener.printFailure("無法連接打印,請檢查WisePay是否打開"); printFailure("無法連接打印,請檢查WisePay是否打開", 0);
backPrintActivity(); backPrintActivity();
return;
} else if (s.contains("Please login first")) { } else if (s.contains("Please login first")) {
login(printDatas, listener, recursion); login(printDatas, recursion);
} }
} }
} }
...@@ -153,38 +147,38 @@ public class BBposPrint { ...@@ -153,38 +147,38 @@ public class BBposPrint {
public void onError(Throwable e) { public void onError(Throwable e) {
e.printStackTrace(); e.printStackTrace();
if (e instanceof ConnectException) { if (e instanceof ConnectException) {
listener.printFailure("無法連接打印,請檢查WisePay是否打開"); printFailure("無法連接打印,請檢查WisePay是否打開", 0);
backPrintActivity(); backPrintActivity();
return; return;
} else if (e instanceof TimeoutException) { } else if (e instanceof TimeoutException) {
listener.printFailure("已超時"); printFailure("已超時", 0);
} }
printErrorCount++; printErrorCount++;
maxRecursionCount--; maxRecursionCount--;
printBefore(printDatas,listener); printBefore(printDatas);
} }
@Override @Override
public void onComplete() { public void onComplete() {
maxRecursionCount--; maxRecursionCount--;
printBefore(printDatas,listener); printBefore(printDatas);
} }
}); });
} }
private void printBefore(String[] printDatas,PrintListener listener){ private void printBefore(String[] printData) {
int totalCount = printSuccesCount + printErrorCount; int totalCount = printSuccesCount + printErrorCount;
if (totalCount == printXMLQueues.size()) { if (totalCount == printXMLQueues.size()) {
//打印完畢 //打印完畢
if (printSuccesCount > 0 && printErrorCount > 0) { if (printSuccesCount > 0 && printErrorCount > 0) {
//部分打印失敗 //部分打印失敗
listener.printFailure("打印成功" + printSuccesCount + "張,失敗" + printErrorCount + "張"); printFailure("打印成功" + printSuccesCount + "張,失敗" + printErrorCount + "張", 0);
} else if (printSuccesCount > 0) { } else if (printSuccesCount > 0) {
listener.printSuccess(); printSuccess();
} }
backPrintActivity(); backPrintActivity();
}else { } else {
printNext(printDatas, listener); printNext(printData);
} }
} }
...@@ -192,10 +186,9 @@ public class BBposPrint { ...@@ -192,10 +186,9 @@ public class BBposPrint {
* 登录bbpos * 登录bbpos
* *
* @param printDatas * @param printDatas
* @param listener
* @param recursion * @param recursion
*/ */
public void login(String[] printDatas, PrintListener listener, boolean recursion) { public void login(String[] printDatas, boolean recursion) {
OkHttp3Utils.get("http://localhost:8080/pos?UserName=gs01&Password=88888888&transactionType=LOGIN&isExternal=true&apiVersion=21") OkHttp3Utils.get("http://localhost:8080/pos?UserName=gs01&Password=88888888&transactionType=LOGIN&isExternal=true&apiVersion=21")
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
...@@ -208,14 +201,14 @@ public class BBposPrint { ...@@ -208,14 +201,14 @@ public class BBposPrint {
@Override @Override
public void onNext(String s) { public void onNext(String s) {
//登录成功 开始打印 //登录成功 开始打印
print(printDatas, listener, recursion); print(printDatas, recursion);
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
e.printStackTrace(); e.printStackTrace();
if (e instanceof ConnectException) { if (e instanceof ConnectException) {
listener.printFailure("登錄失敗,無法打印!"); printFailure("登錄失敗,無法打印!", 0);
} }
} }
...@@ -235,7 +228,7 @@ public class BBposPrint { ...@@ -235,7 +228,7 @@ public class BBposPrint {
GsaCloudApplication.getAppContext().startActivity(intent); GsaCloudApplication.getAppContext().startActivity(intent);
} }
private Map<String, String> analysisPrintResult(String s, String[] printDatas, PrintListener listener, boolean recursion) throws XmlPullParserException, IOException { private Map<String, String> analysisPrintResult(String s, String[] printDatas, boolean recursion) throws XmlPullParserException, IOException {
XmlPullParser xmlPullParser = Xml.newPullParser(); XmlPullParser xmlPullParser = Xml.newPullParser();
xmlPullParser.setInput(new ByteArrayInputStream(s.getBytes()), "utf-8"); xmlPullParser.setInput(new ByteArrayInputStream(s.getBytes()), "utf-8");
int eventType = xmlPullParser.getEventType(); int eventType = xmlPullParser.getEventType();
...@@ -279,11 +272,11 @@ public class BBposPrint { ...@@ -279,11 +272,11 @@ public class BBposPrint {
return xmlContents; return xmlContents;
} }
private void printNext(String[] printDatas, PrintListener listener) { private void printNext(String[] printData) {
//打印完一張就移除 //打印完一張就移除
printXMLQueues.remove(); printXMLQueues.remove();
//递归进行打印 //递归进行打印
print(printDatas, listener, true); print(printData, true);
} }
private void closePrintObservable() { private void closePrintObservable() {
...@@ -292,4 +285,13 @@ public class BBposPrint { ...@@ -292,4 +285,13 @@ public class BBposPrint {
stringObservable = null; stringObservable = null;
} }
} }
private void printSuccess() {
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess();
}
private void printFailure(String msg, int code) {
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(msg), code);
}
} }
package com.joe.print.mvp.ui.activity; package com.joe.print.mvp.ui.activity;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.os.Build; import android.os.Build;
...@@ -20,6 +19,7 @@ import com.gingersoft.gsa.cloud.common.logan.LoganManager; ...@@ -20,6 +19,7 @@ import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterFlowListener; import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterFlowListener;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins; import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils; import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
...@@ -37,7 +37,6 @@ import com.joe.print.di.component.DaggerPrintComponent; ...@@ -37,7 +37,6 @@ import com.joe.print.di.component.DaggerPrintComponent;
import com.joe.print.mvp.contract.PrintContract; import com.joe.print.mvp.contract.PrintContract;
import com.joe.print.mvp.presenter.PrintPresenter; import com.joe.print.mvp.presenter.PrintPresenter;
import com.joe.print.mvp.print.PrintInstruction; import com.joe.print.mvp.print.PrintInstruction;
import com.joe.print.mvp.print.PrintListener;
import com.joe.print.mvp.print.PrintPrjKitchen; import com.joe.print.mvp.print.PrintPrjKitchen;
import com.joe.print.mvp.print.PrinterRoot; import com.joe.print.mvp.print.PrinterRoot;
import com.joe.print.mvp.print.maker.OpenCashBoxMaker; import com.joe.print.mvp.print.maker.OpenCashBoxMaker;
...@@ -46,7 +45,6 @@ import com.joe.print.mvp.ui.view.PrinterLoadingDialog; ...@@ -46,7 +45,6 @@ import com.joe.print.mvp.ui.view.PrinterLoadingDialog;
import com.joe.print.mvp.ui.view.SelectPrintDevicePopup; import com.joe.print.mvp.ui.view.SelectPrintDevicePopup;
import com.lxj.xpopup.XPopup; import com.lxj.xpopup.XPopup;
import java.net.ConnectException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -75,12 +73,9 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -75,12 +73,9 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* ----網絡打印 * ----網絡打印
* ----獲取網絡打印機列表 * ----獲取網絡打印機列表
*/ */
public class PrintActivity extends BaseActivity<PrintPresenter> implements PrintContract.View, DialogInterface.OnDismissListener, PrintListener, PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener { public class PrintActivity extends BaseActivity<PrintPresenter> implements PrintContract.View, PrintExecutor.OnPrintResultListener {
public final static int ADD_PRINT_CODE = 1001;//添加打印機回調 public final static int ADD_PRINT_CODE = 1001;//添加打印機回調
public final static int FINISH = 1003;//關閉頁面
public final static int ADD_PRINT_DEVICE = 1004;//添加打印機
public final static int LACK_OF_PAPER = 1005;//缺紙
public static List<PrinterDeviceBean> printerDeviceBeans; public static List<PrinterDeviceBean> printerDeviceBeans;
...@@ -162,12 +157,14 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -162,12 +157,14 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
public void onPrintSuccess() { public void onPrintSuccess() {
printerResult = true; printerResult = true;
printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_RESULT, PrinterLoadingDialog.STATUS_SUCCESS, null); printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_RESULT, PrinterLoadingDialog.STATUS_SUCCESS, null);
printSuccess();
} }
@Override @Override
public void onPrintError(Exception e, int errorCode) { public void onPrintError(Exception e, int errorCode) {
LogUtil.d("PrinterLoadingDialog", "onPrintError");
printerResult = false; printerResult = false;
printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_RESULT, PrinterLoadingDialog.STATUS_ERROR, e.getMessage()); printerLoadingDialog.setStep(PrinterLoadingDialog.PROGRESS_PRINTING, PrinterLoadingDialog.STATUS_ERROR, e.getMessage());
} }
}); });
} }
...@@ -179,7 +176,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -179,7 +176,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
} }
private void actionPrinter() { private void actionPrinter() {
LogUtil.d("", "actionPrinter");
showPrintLoadingDialog(); showPrintLoadingDialog();
callId = CCUtil.getNavigateCallId(this); callId = CCUtil.getNavigateCallId(this);
...@@ -191,9 +188,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -191,9 +188,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
mOrderNo = CCUtil.getNavigateParam(this, PrintConstans.PRINT_ORDER_NO, ""); mOrderNo = CCUtil.getNavigateParam(this, PrintConstans.PRINT_ORDER_NO, "");
//根據打印類型獲取對應的執行類 //根據打印類型獲取對應的執行類
printerInIt = PrinterRoot.getPrinterByType(type, printContent); printerInIt = PrinterRoot.getPrinterByType(type, printContent);
if (printerInIt != null) {
printerInIt.setPrintListener(this);
}
//初始化打印配置 //初始化打印配置
initPrintConfig(printContent); initPrintConfig(printContent);
} }
...@@ -221,7 +215,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -221,7 +215,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
private PrinterDeviceBean defaultPrint; private PrinterDeviceBean defaultPrint;
private void initPrintConfig(PrintContent printContent) { private void initPrintConfig(PrintContent printContent) {
//開始
PrinterPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(type, type, GsonUtils.GsonString(printContent), GsonUtils.GsonString(defaultPrint)); PrinterPlugins.getOnPrinterFlowHandler().onPrinterDataBefore(type, type, GsonUtils.GsonString(printContent), GsonUtils.GsonString(defaultPrint));
//獲取通用打印配置 //獲取通用打印配置
...@@ -246,6 +240,20 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -246,6 +240,20 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
if (defaultPrint == null) { if (defaultPrint == null) {
//沒有默認打印機,查看當前餐廳有沒有打印機 //沒有默認打印機,查看當前餐廳有沒有打印機
//如果當前餐廳有打印機,彈出彈窗讓用戶選擇一個打印機打印 //如果當前餐廳有打印機,彈出彈窗讓用戶選擇一個打印機打印
showSelectPrint(printCurrencyBean);
} else {
//將打印機和通用配置合併
defaultPrint = MyPrintUtils.configPrinterProperties(printCurrencyBean, defaultPrint);
printByDevice(defaultPrint);
}
}
/**
* 顯示選擇打印機
*
* @param printCurrencyBean
*/
private void showSelectPrint(PrintCurrencyBean printCurrencyBean) {
if (printerDeviceBeans != null && printerDeviceBeans.size() > 0) { if (printerDeviceBeans != null && printerDeviceBeans.size() > 0) {
SelectPrintDevicePopup selectPrintDevicePopup = new SelectPrintDevicePopup(mContext, printerDeviceBeans); SelectPrintDevicePopup selectPrintDevicePopup = new SelectPrintDevicePopup(mContext, printerDeviceBeans);
selectPrintDevicePopup.setOnItemClickListener((adapter, view, position) -> { selectPrintDevicePopup.setOnItemClickListener((adapter, view, position) -> {
...@@ -267,11 +275,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -267,11 +275,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//沒有打印機 //沒有打印機
ToastUtils.show(mContext, "沒有打印機,請先添加打印機"); ToastUtils.show(mContext, "沒有打印機,請先添加打印機");
} }
} else {
//將打印機和通用配置合併
defaultPrint = MyPrintUtils.configPrinterProperties(printCurrencyBean, defaultPrint);
printByDevice(defaultPrint);
}
} }
/** /**
...@@ -373,7 +376,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -373,7 +376,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
printerInIt.ipDevicePrint(defaultPrint, zoomBitmaps); printerInIt.ipDevicePrint(defaultPrint, zoomBitmaps);
} else if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_LOCAL) { } else if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_LOCAL) {
//本地N5或Sunmi打印 //本地N5或Sunmi打印
printerInIt.locationPrint(zoomBitmaps, BBPosPrintDatas, this); printerInIt.locationPrint(zoomBitmaps, BBPosPrintDatas);
} else if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_USB) { } else if (defaultPrint.getPrinterDeviceType() == PrinterDeviceBean.PRINT_USB) {
//USB打印打印 //USB打印打印
printerInIt.usbPrint(mContext, zoomBitmaps); printerInIt.usbPrint(mContext, zoomBitmaps);
...@@ -394,12 +397,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -394,12 +397,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
} }
private void addPrintProgress(String printState) { private void addPrintProgress(String printState) {
runOnUiThread(new Runnable() { runOnUiThread(() -> printerLoadingDialog.setTitle(printState));
@Override
public void run() {
printerLoadingDialog.setTitle(printState);
}
});
} }
@Override @Override
...@@ -409,96 +407,52 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -409,96 +407,52 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
return true; return true;
} }
@Override //
public void printStateChanged(int state) { // @Override
String tip = "加載中..."; // public void printStateChanged(int state) {
switch (state) { // String tip = "加載中...";
case PrintSocketHolder.ERROR_0: // switch (state) {
tip = "打印成功"; // case PrintSocketHolder.STATE_1:
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess(); // tip = "開始創建連接";
break; // break;
case PrintSocketHolder.ERROR_6: // case PrintSocketHolder.STATE_2:
tip = "生成打印數據失敗"; // tip = "創建連接成功,開始發送數據";
break; // break;
case PrintSocketHolder.ERROR_7: // case PrintSocketHolder.STATE_3:
tip = "連接打印機失敗"; // tip = "開始寫入數據";
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new ConnectException(tip)); // break;
break; // case PrintSocketHolder.STATE_4://关闭输出流
case PrintSocketHolder.ERROR_4: // tip = "關閉中";
tip = "寫入數據失敗"; // killMyself();
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(tip), 0); // break;
break; // default:
case PrintSocketHolder.ERROR_9: // break;
tip = "ip地址不能為空"; // }
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new ConnectException(tip)); // LoganManager.w_printer(TAG, "printStateChanged state--->" + tip);
break; // addPrintProgress(tip);
case PrintSocketHolder.ERROR_10: // }
tip = "打印機連接成功,獲取輸入流失敗或者發送數據出現問題"; //
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(tip), 0); // /**
break; // * 打印成功
case PrintSocketHolder.ERROR_11: // */
tip = "打印機沒紙了"; // @Override
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(tip), 0);
break;
case PrintSocketHolder.ERROR_12:
tip = " 打印機初始化失敗,暫時只有針式打印機有";
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new ConnectException(tip));
break;
case PrintSocketHolder.ERROR_TIMEOUT:
tip = "連接打印機超時";
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new ConnectException(tip));
break;
case PrintSocketHolder.STATE_0:
break;
case PrintSocketHolder.STATE_1:
tip = "開始創建連接";
break;
case PrintSocketHolder.STATE_2:
tip = "創建連接成功,開始發送數據";
break;
case PrintSocketHolder.STATE_3:
tip = "開始寫入數據";
break;
case PrintSocketHolder.STATE_4://关闭输出流
tip = "關閉中";
killMyself();
break;
case FINISH:
killMyself();
break;
case ADD_PRINT_DEVICE:
addPrintDevice();
break;
case LACK_OF_PAPER:
//缺紙
printFailure("打印機缺紙");
tip = "打印機缺紙";
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(tip), 0);
break;
default:
break;
}
LoganManager.w_printer(TAG, "printStateChanged state--->" + tip);
addPrintProgress(tip);
}
/**
* 打印成功
*/
@Override
public void printSuccess() { public void printSuccess() {
LoganManager.w_printer(TAG, "printFailure 打印成功"); LoganManager.w_printer(TAG, "printFailure 打印成功");
killMyself(); killMyself();
CC.sendCCResult(callId, CCResult.success()); CC.sendCCResult(callId, CCResult.success());
} }
@Override //
// @Override
public void printFailure(String msg) { public void printFailure(String msg) {
LogUtil.d("PrinterLoadingDialog", "printFailure");
if (!TextUtil.isEmptyOrNullOrUndefined(msg)) { if (!TextUtil.isEmptyOrNullOrUndefined(msg)) {
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(msg), 0);
ToastUtils.show(GsaCloudApplication.getAppContext(), msg); ToastUtils.show(GsaCloudApplication.getAppContext(), msg);
CC.sendCCResult(callId, CCResult.error(msg)); CC.sendCCResult(callId, CCResult.error(msg));
} else { } else {
CC.sendCCResult(callId, CCResult.error("print error")); CC.sendCCResult(callId, CCResult.error("print error"));
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception("print error"), 0);
} }
} }
...@@ -562,10 +516,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -562,10 +516,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
// printerInIt.print(printerDeviceBeans); // printerInIt.print(printerDeviceBeans);
} }
private void addPrintDevice() {
printFailure("沒有打印機,請添加");
// startActivityForResult(new Intent(mContext, PrinterAddActivity.class), ADD_PRINT_CODE);
}
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
...@@ -587,11 +537,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -587,11 +537,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
} }
@Override @Override
public void onDismiss(DialogInterface dialog) {
}
@Override
protected void onDestroy() { protected void onDestroy() {
super.onDestroy(); super.onDestroy();
//關閉打印頁面時,關閉所有打印連接 //關閉打印頁面時,關閉所有打印連接
...@@ -605,12 +550,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -605,12 +550,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
} }
@Override @Override
public void onStateChanged(int state) {
//ip打印狀態修改回調
}
@Override
public void onResult(int errorCode) { public void onResult(int errorCode) {
//ip打印結果回調 //ip打印結果回調
......
...@@ -4,7 +4,9 @@ import android.animation.ValueAnimator; ...@@ -4,7 +4,9 @@ import android.animation.ValueAnimator;
import android.content.Context; import android.content.Context;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.Looper;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
...@@ -13,6 +15,7 @@ import androidx.annotation.NonNull; ...@@ -13,6 +15,7 @@ import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.airbnb.lottie.LottieAnimationView; import com.airbnb.lottie.LottieAnimationView;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog;
import com.joe.print.R; import com.joe.print.R;
import com.qmuiteam.qmui.layout.QMUILinearLayout; import com.qmuiteam.qmui.layout.QMUILinearLayout;
...@@ -64,13 +67,13 @@ public class PrinterLoadingDialog extends BaseRetryDialog { ...@@ -64,13 +67,13 @@ public class PrinterLoadingDialog extends BaseRetryDialog {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setCanceledOnTouchOutside(true); setCanceledOnTouchOutside(true);
} }
@Override @Override
public void show() { public void show() {
super.show(); super.show();
LogUtil.d("PrinterLoadingDialog", "show");
} }
@Override @Override
...@@ -107,8 +110,17 @@ public class PrinterLoadingDialog extends BaseRetryDialog { ...@@ -107,8 +110,17 @@ public class PrinterLoadingDialog extends BaseRetryDialog {
return view; return view;
} }
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
Log.e("PrinterLoadingDialog", "onAttachedToWindow");
}
public void setStep(int step, int status, String errorMsg) { public void setStep(int step, int status, String errorMsg) {
tvGeneratePrintData.post(() -> { LogUtil.d("PrinterLoadingDialog", "進入setStep:" + step + "--status:" + status + "線程:" + Thread.currentThread().getId() + "/" + Looper.getMainLooper().getThread().getId());
tvErrorMsg.post(() -> {
LogUtil.d("PrinterLoadingDialog-", "--start----setStep:" + step + "--status:" + status);
if (!TextUtils.isEmpty(errorMsg)) { if (!TextUtils.isEmpty(errorMsg)) {
tvErrorMsg.setText(errorMsg); tvErrorMsg.setText(errorMsg);
tvErrorMsg.setVisibility(View.VISIBLE); tvErrorMsg.setVisibility(View.VISIBLE);
...@@ -127,6 +139,7 @@ public class PrinterLoadingDialog extends BaseRetryDialog { ...@@ -127,6 +139,7 @@ public class PrinterLoadingDialog extends BaseRetryDialog {
}); });
} }
private void setStatusResult(int step, int status) { private void setStatusResult(int step, int status) {
switch (step) { switch (step) {
case PrinterLoadingDialog.PROGRESS_PRINTING: case PrinterLoadingDialog.PROGRESS_PRINTING:
...@@ -149,6 +162,7 @@ public class PrinterLoadingDialog extends BaseRetryDialog { ...@@ -149,6 +162,7 @@ public class PrinterLoadingDialog extends BaseRetryDialog {
} }
break; break;
default: default:
LogUtil.d("PrinterLoadingDialog", "default----setStatusResult");
break; break;
} }
} }
......
...@@ -12,7 +12,7 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder; ...@@ -12,7 +12,7 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.mvp.bean.SendSupplierMsgBean; import com.gingersoft.supply_chain.mvp.bean.SendSupplierMsgBean;
import com.gingersoft.supply_chain.mvp.bean.SupplierInfoBean; import com.gingersoft.supply_chain.mvp.bean.SupplierInfoBean;
import com.gingersoft.supply_chain.mvp.utils.DoubleClickUtils; import com.gingersoft.gsa.cloud.common.utils.DoubleClickUtils;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
......
...@@ -327,13 +327,10 @@ class OrderDetails { ...@@ -327,13 +327,10 @@ class OrderDetails {
} }
} }
} }
Log.e("eee", "食品總金額$foodAmount")
//食品金額加上餐盒費,配送費,應該等於總金額 //食品金額加上餐盒費,配送費,應該等於總金額
foodAmount = MoneyUtil.sum(MoneyUtil.sum(foodAmount, orderDetail.Lunchbox), orderDetail.DELIVERY_CHARGE) foodAmount = MoneyUtil.sum(MoneyUtil.sum(foodAmount, orderDetail.Lunchbox), orderDetail.DELIVERY_CHARGE)
Log.e("eee", "總金額$foodAmount")
//後台返回的總金額與計算的總金額相減,如果不等於0,則是金額有問題,攔截 //後台返回的總金額與計算的總金額相減,如果不等於0,則是金額有問題,攔截
var differenceAmount = MoneyUtil.sub(MoneyUtil.sub(totalAmount, foodAmount), allowableError) var differenceAmount = MoneyUtil.sub(MoneyUtil.sub(totalAmount, foodAmount), allowableError)
Log.e("eee", "金額差$differenceAmount")
differenceAmount = abs(differenceAmount) differenceAmount = abs(differenceAmount)
if (MoneyUtil.compareTo(differenceAmount, allowableError) == 1) { if (MoneyUtil.compareTo(differenceAmount, allowableError) == 1) {
return true return true
...@@ -345,11 +342,9 @@ class OrderDetails { ...@@ -345,11 +342,9 @@ class OrderDetails {
payAmount = MoneyUtil.sub(payAmount, coupon.discount_amount) payAmount = MoneyUtil.sub(payAmount, coupon.discount_amount)
} }
} }
Log.e("eee", "減去折扣之後的總金額$payAmount")
//計算折扣後的金額,減去支付金額,如果不為0,則是有問題 //計算折扣後的金額,減去支付金額,如果不為0,則是有問題
differenceAmount = MoneyUtil.sub(MoneyUtil.sub(payAmount, orderDetail.PAY_AMOUNT), allowableError) differenceAmount = MoneyUtil.sub(MoneyUtil.sub(payAmount, orderDetail.PAY_AMOUNT), allowableError)
Log.e("eee", "支付金額差$differenceAmount")
differenceAmount = abs(differenceAmount) differenceAmount = abs(differenceAmount)
if (MoneyUtil.compareTo(differenceAmount, allowableError) == 1) { if (MoneyUtil.compareTo(differenceAmount, allowableError) == 1) {
return true return true
......
...@@ -31,10 +31,10 @@ public class RestaurantInfoManager { ...@@ -31,10 +31,10 @@ public class RestaurantInfoManager {
if (restaurantInfo == null) { if (restaurantInfo == null) {
restaurantInfo = new RestaurantInfo(); restaurantInfo = new RestaurantInfo();
} }
brandInfo.setBrandId((Integer) SPUtils.get(UserConstans.brandId, 1)); brandInfo.setBrandId((Integer) SPUtils.get(UserConstans.brandId, 0));
brandInfo.setBrandName((String) SPUtils.get(UserConstans.brandName, "")); brandInfo.setBrandName((String) SPUtils.get(UserConstans.brandName, ""));
restaurantInfo.setGsPosShopId((String) SPUtils.get(UserConstans.gsPosShopId, "-1")); restaurantInfo.setGsPosShopId((String) SPUtils.get(UserConstans.gsPosShopId, "-1"));
restaurantInfo.setRestaurantId((Integer) SPUtils.get(UserConstans.restaurantId, 26)); restaurantInfo.setRestaurantId((Integer) SPUtils.get(UserConstans.restaurantId, 0));
restaurantInfo.setRestaurantName((String) SPUtils.get(UserConstans.restaurantName, "")); restaurantInfo.setRestaurantName((String) SPUtils.get(UserConstans.restaurantName, ""));
} }
......
package com.gingersoft.gsa.cloud.common.service package com.gingersoft.gsa.cloud.common.service
import android.annotation.SuppressLint
import android.app.NotificationChannel import android.app.NotificationChannel
import android.app.NotificationManager import android.app.NotificationManager
import android.app.PendingIntent import android.app.PendingIntent
...@@ -15,16 +14,13 @@ import android.os.Build ...@@ -15,16 +14,13 @@ import android.os.Build
import android.os.IBinder import android.os.IBinder
import android.os.PowerManager import android.os.PowerManager
import android.util.Log import android.util.Log
import android.view.View
import android.widget.RemoteViews import android.widget.RemoteViews
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import com.billy.cc.core.component.CC import com.billy.cc.core.component.CC
import com.billy.cc.core.component.CCResult
import com.gingersoft.gsa.cloud.common.R import com.gingersoft.gsa.cloud.common.R
import com.gingersoft.gsa.cloud.common.constans.AppConstans import com.gingersoft.gsa.cloud.common.constans.AppConstans
import com.gingersoft.gsa.cloud.common.constans.HttpsConstans 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 import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
import com.gingersoft.gsa.cloud.common.core.user.UserContext import com.gingersoft.gsa.cloud.common.core.user.UserContext
import com.gingersoft.gsa.cloud.common.logan.LoganManager import com.gingersoft.gsa.cloud.common.logan.LoganManager
...@@ -129,9 +125,10 @@ class DataNotificationService : Service() { ...@@ -129,9 +125,10 @@ class DataNotificationService : Service() {
} }
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
//获取当前长连类型 //获取当前长连类型
mCurrConnectionType = intent!!.getIntExtra(CONNECTION_TYPE, OPEN_DELIVET_ORDER_CONNECTION) intent?.let {
mCurrConnectionType = it.getIntExtra(CONNECTION_TYPE, OPEN_DELIVET_ORDER_CONNECTION)
}
initNotification() initNotification()
......
package com.gingersoft.supply_chain.mvp.utils; package com.gingersoft.gsa.cloud.common.utils;
import android.util.Log;
import android.view.View;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication; import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
/** /**
...@@ -15,12 +19,42 @@ public class DoubleClickUtils { ...@@ -15,12 +19,42 @@ public class DoubleClickUtils {
public static boolean isFastDoubleClick() { public static boolean isFastDoubleClick() {
long nowTime = System.currentTimeMillis(); long nowTime = System.currentTimeMillis();
if (nowTime - lastClickTime < 500) {//500ms if (nowTime - lastClickTime < 1000) {//500ms
ToastUtils.show(GsaCloudApplication.getAppContext(), "請慢一點"); LogUtil.w("eee", "間隔小於1000");
// ToastUtils.show(GsaCloudApplication.getAppContext(), "請慢一點");
return true; return true;
} }
lastClickTime = nowTime; lastClickTime = nowTime;
return false; return false;
} }
/**
* 最近一次点击的时间
*/
private static long mLastClickTime;
/**
* 最近一次点击的控件ID
*/
private static int mLastClickViewId;
/**
* 是否是快速点击
*
* @param v 点击的控件
* @param intervalMillis 时间间期(毫秒)
* @return true:是,false:不是
*/
public static boolean isFastDoubleClick(View v, long intervalMillis) {
int viewId = v.getId();
long time = System.currentTimeMillis();
long timeInterval = Math.abs(time - mLastClickTime);
if (timeInterval < intervalMillis && viewId == mLastClickViewId) {
return true;
} else {
mLastClickTime = time;
mLastClickViewId = viewId;
return false;
}
}
} }
...@@ -87,6 +87,29 @@ public class UpdateBean { ...@@ -87,6 +87,29 @@ public class UpdateBean {
*/ */
public static final int FAIL_LOCAL_PRINT_NOT_DEVICE = 17; public static final int FAIL_LOCAL_PRINT_NOT_DEVICE = 17;
/** /**
* 18 USB打印失敗,未添加到後台
*/
public static final int FAIL_USB_PRINT = 18;
/**
* 19 未找到USB打印機,未添加到後台
*/
public static final int FAIL_USB_PRINT_NOT_FIND = 19;
/**
* 20 生成打印數據失敗
*/
public static final int FAIL_GENERATE_PRINT_INFO = 20;
/**
* 505 SUNMI未查詢到打印機請查詢打印管理配置是否正確 * 505 SUNMI未查詢到打印機請查詢打印管理配置是否正確
* 通過打印位置沒有找到對應的打印機 * 通過打印位置沒有找到對應的打印機
*/ */
......
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