Commit 32aeaa84 by 宁斌

1、解决本机打印流程Dialog setText无效问题

parent 7376ca17
......@@ -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.core.restaurant.RestaurantInfoManager;
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.toast.ToastUtils;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
......@@ -220,7 +220,7 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
private void initService() {
//開啟websocket
Intent intent = new Intent(getApplicationContext(), GetInfoUpdateService.class);
Intent intent = new Intent(getApplicationContext(), DataNotificationService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent);
} else {
......@@ -235,13 +235,13 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
registerReceiver(clearHeartBroadcastReceiver, intentFilter);
}
private GetInfoUpdateService.MyBind bind = null;
private DataNotificationService.MyBind bind = null;
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
bind = (GetInfoUpdateService.MyBind) service;
bind = (DataNotificationService.MyBind) service;
if (bind != null) {
bind.setOnPostCallBack(type -> {
// -1斷開連接,\n-2:消息傳輸錯誤,\n0:連接消息,\n1:登錄通知,\n2:登出通知,\n3:外賣送單通知,\n4:自取送單通知,\n5:歷史訂單通知,\n6:修改訂單狀態通知,\n7:支付成功通知"
......
......@@ -28,7 +28,7 @@
</intent-filter>
</activity>
<service android:name="com.gingersoft.gsa.cloud.common.service.GetInfoUpdateService" />
<service android:name="com.gingersoft.gsa.cloud.common.service.DataNotificationService" />
<meta-data
android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration"
......
......@@ -7,7 +7,7 @@ import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent;
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.mvp.ui.activity.PrjQueryActivity;
import com.gingersoft.gsa.delivery_pick_mode.mvp.ui.activity.SendOrderActivity;
......@@ -52,7 +52,7 @@ public class DeliveryPickComponent implements IComponent {
CC.sendCCResult(cc.getCallId(), CCResult.success());
break;
case "closeHeart":
Intent intent = new Intent(cc.getContext(), GetInfoUpdateService.class);
Intent intent = new Intent(cc.getContext(), DataNotificationService.class);
cc.getContext().stopService(intent);
break;
case "historyActivity":
......
......@@ -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.user.UserContext
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.okhttpUtils.OkHttp3Utils
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil
......@@ -434,8 +434,8 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
}, {
listener.invoke(getMsgBean(0, "", false))
it.printStackTrace()
GetInfoUpdateService.loginfo.append("錯誤信息111:" + it.message + " LOCALIZEDMESSAGE:" + it.localizedMessage + it.cause)
GetInfoUpdateService.loginfo.append("\n")
DataNotificationService.loginfo.append("錯誤信息111:" + it.message + " LOCALIZEDMESSAGE:" + it.localizedMessage + it.cause)
DataNotificationService.loginfo.append("\n")
})
}
......@@ -575,12 +575,12 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
//添加PRJ
//單獨包起來,哪怕這接口報錯也不要影響到正常的邏輯
repository.addPrj(dataBean.Order_ID.toString(), restaurantId.toString(), ids.toString())
GetInfoUpdateService.loginfo.append("添加PRJ:orderId:" + dataBean.Order_ID.toString() + "restaurantId:" + restaurantId + "orderDetailsIds:" + ids.toString())
GetInfoUpdateService.loginfo.append("\n")
DataNotificationService.loginfo.append("添加PRJ:orderId:" + dataBean.Order_ID.toString() + "restaurantId:" + restaurantId + "orderDetailsIds:" + ids.toString())
DataNotificationService.loginfo.append("\n")
}, {
it.printStackTrace()
GetInfoUpdateService.loginfo.append("錯誤信息222:" + it.message + " LOCALIZEDMESSAGE:" + it.localizedMessage + it.cause)
GetInfoUpdateService.loginfo.append("\n")
DataNotificationService.loginfo.append("錯誤信息222:" + it.message + " LOCALIZEDMESSAGE:" + it.localizedMessage + it.cause)
DataNotificationService.loginfo.append("\n")
})
}
if (isPrintBill) {
......
......@@ -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.FunctionManagerConstants
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.order.order.BaseOrder
import com.gingersoft.gsa.cloud.ui.utils.AppDialog
......@@ -395,7 +395,7 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
private fun initWebsocket() {
//開啟websocket
val service = Intent(applicationContext, GetInfoUpdateService::class.java)
val service = Intent(applicationContext, DataNotificationService::class.java)
val notification: NotificationManagerCompat = NotificationManagerCompat.from(this)
if (!notification.areNotificationsEnabled()) {
//未開啟通知權限
......@@ -446,12 +446,12 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
unbindService(serviceConnection)
}
var bind: GetInfoUpdateService.MyBind? = null
var bind: DataNotificationService.MyBind? = null
var lastRefreshTime: Long = 0
private var serviceConnection = object : ServiceConnection {
override fun onServiceConnected(name: ComponentName, service: IBinder) {
bind = service as GetInfoUpdateService.MyBind
bind = service as DataNotificationService.MyBind
bind?.let { it ->
it.setOnPostCallBack(object : PostCallBack {
override fun callBack(type: Int) {
......
......@@ -3,7 +3,7 @@ package com.gingersoft.gsa.delivery_pick_mode.ui.activity;
import android.os.Bundle;
import android.widget.TextView;
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;
public class LogActivity extends AppCompatActivity {
......@@ -14,13 +14,13 @@ public class LogActivity extends AppCompatActivity {
setContentView(R.layout.activity_log);
loadInfo();
findViewById(R.id.btn_clear_log).setOnClickListener(v -> {
GetInfoUpdateService.loginfo.setLength(0);
DataNotificationService.loginfo.setLength(0);
loadInfo();
});
findViewById(R.id.btn_back).setOnClickListener(v ->finish());
}
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 connectionFailure(String msg);
void printStateChanged(int state);
void printSuccess();
......
......@@ -36,6 +36,7 @@ import com.gingersoft.gsa.cloud.common.core.restaurant.utils.RestaurantExpandInf
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.printer.AidlUtil;
import com.gingersoft.gsa.cloud.common.printer.plugins.PrinterPlugins;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
......@@ -80,6 +81,7 @@ import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;
import java.io.IOException;
import java.net.ConnectException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
......@@ -232,7 +234,8 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
//打印結果示例:<?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);
} else {
listener.printFailure("暫不支持本機型打印");
// listener.printFailure("暫不支持本機型打印");
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("暫不支持本機型打印"));
}
}
......@@ -297,7 +300,6 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
});
}
private void startN5Print(PrintListener listener) {
try {
PrinterUtil.startPrint(true, new IOnPrintCallback.Stub() {
......@@ -309,8 +311,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess();
} else {
//打印失敗
listener.printFailure("打印失敗");
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(UpdateBean.getStateByCode(i)), i);
listener.printFailure(UpdateBean.getStateByCode(i));
}
}
......@@ -372,8 +373,7 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
if (code == SendResultCode.SEND_SUCCESS) {
printSuccess();
} else if (code == SendResultCode.SEND_FAILED) {
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception("usb打印失敗"), 0);
printFailure("打印失敗");
printFailure("usb打印失敗");
}
});
UsbPrinterFinder printerFinder = new UsbPrinterFinder(context, new PrinterFinderCallback<UsbPrinter>() {
......@@ -445,32 +445,26 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
public void onResult(int errorCode) {
switch (errorCode) {
case PrintSocketHolder.ERROR_0:
PrinterPlugins.getOnPrinterFlowHandler().onPrintSuccess();
printSuccess();
return;
break;
case PrintSocketHolder.ERROR_6:
LoganManager.w_printer(TAG, "生成打印數據失敗");
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("生成打印數據失敗"));
printFailure("生成打印數據失敗");
connectionFailure("生成打印數據失敗");
break;
case PrintSocketHolder.ERROR_7:
LoganManager.w_printer(TAG, "連接打印機失敗");
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("連接打印機失敗"));
printFailure("連接打印機失敗");
connectionFailure("連接打印機失敗");
break;
case PrintSocketHolder.ERROR_10:
LoganManager.w_printer(TAG, "打印機連接成功,發送數據出現問題" );
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception("打印機連接成功,發送數據出現問題"), errorCode);
printFailure("打印失敗,錯誤碼:" + errorCode);
break;
case PrintSocketHolder.ERROR_9:
LoganManager.w_printer(TAG, "IP地址為空");
PrinterPlugins.getOnPrinterFlowHandler().connectionError(new Exception("IP地址為空"));
printFailure("IP地址為空");
connectionFailure("IP地址為空");
break;
case PrintSocketHolder.ERROR_66:
LoganManager.w_printer(TAG, "關閉Socket出錯");
PrinterPlugins.getOnPrinterFlowHandler().disconnect(new Exception("關閉打印機連接出错"));
break;
default:
break;
......@@ -490,6 +484,12 @@ public abstract class PrinterRoot<T extends PrintContent> implements PrintSocket
}
}
private void connectionFailure(String errorMsg) {
if (printListener != null) {
printListener.connectionFailure(errorMsg);
}
}
@Override
public void onStateChanged(int state) {
setPrintState(state);
......
......@@ -53,6 +53,7 @@ import com.lxj.xpopup.XPopup;
import java.net.ConnectException;
import java.util.List;
import java.util.Map;
import java.util.TimerTask;
import javax.inject.Inject;
......@@ -87,9 +88,6 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
*/
public class PrintActivity extends BaseActivity<PrintPresenter> implements PrintContract.View, DialogInterface.OnDismissListener, PrintListener, PrintSocketHolder.OnStateChangedListener, PrintExecutor.OnPrintResultListener {
@Inject
AppManager mAppManager;
public final static int ADD_PRINT_CODE = 1001;//添加打印機回調
public final static int FINISH = 1003;//關閉頁面
......@@ -132,11 +130,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
}
@Override
public int initView(@Nullable Bundle savedInstanceState) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
......@@ -150,8 +143,6 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
// .asLoading("加载中...");
// loadingPopup.show();
actionPrinter();
PrinterPlugins.setOnPrinterFlowHandler(new PrinterFlowListener() {
@Override
......@@ -161,11 +152,13 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public void connectionSuccess() {
LoganManager.w_code(TAG, "PrinterPlugins connectionSuccess ThreadName=" + Thread.currentThread().getName());
printerLoadingDialog.setStep(2, PrinterLoadingDialog.status_success, null);
}
@Override
public void connectionError(Exception e) {
LoganManager.w_code(TAG, "PrinterPlugins connectionError ThreadName=" + Thread.currentThread().getName());
printerResult = false;
printerLoadingDialog.setStep(2, PrinterLoadingDialog.status_error, e.getMessage());
}
......@@ -176,22 +169,26 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public void onPrinterDataBefore(int orderType, int printType, String printerData, String printerDeviceInfo) {
LoganManager.w_code(TAG, "PrinterPlugins onPrinterDataBefore ThreadName=" + Thread.currentThread().getName());
printerLoadingDialog.setStep(1, PrinterLoadingDialog.status_success, null);
}
@Override
public void onPrinterBitmapBefore(int orderType, int printType, String directoryName, List<Bitmap> bitmaps) {
LoganManager.w_code(TAG, "PrinterPlugins onPrinterBitmapBefore ThreadName=" + Thread.currentThread().getName());
printerLoadingDialog.setStep(1, PrinterLoadingDialog.status_success, null);
}
@Override
public void onPrintSuccess() {
LoganManager.w_code(TAG, "PrinterPlugins onPrintSuccess ThreadName=" + Thread.currentThread().getName());
printerResult = true;
printerLoadingDialog.setStep(3, PrinterLoadingDialog.status_success, null);
}
@Override
public void onPrintError(Exception e, int errorCode) {
LoganManager.w_code(TAG, "PrinterPlugins onPrintError ThreadName=" + Thread.currentThread().getName());
printerResult = false;
printerLoadingDialog.setStep(3, PrinterLoadingDialog.status_error, e.getMessage());
}
......@@ -204,6 +201,12 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
actionPrinter();
}
@Override
protected void onResume() {
super.onResume();
actionPrinter();
}
private void actionPrinter() {
showPrintLoadingDialog();
......@@ -228,7 +231,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
if (printerLoadingDialog != null) {
printerLoadingDialog = printerLoadingDialog.build();
} else {
printerLoadingDialog = new PrinterLoadingDialog(mContext).build();
printerLoadingDialog = new PrinterLoadingDialog(this).build();
}
printerLoadingDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
......@@ -438,6 +441,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
}
@Override
public void connectionFailure(String msg) {
}
@Override
public void printStateChanged(int state) {
String tip = "加載中...";
switch (state) {
......@@ -501,7 +509,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
//缺紙
printFailure("打印機缺紙");
tip = "打印機缺紙";
PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(tip), 0);
// PrinterPlugins.getOnPrinterFlowHandler().onPrintError(new Exception(tip), 0);
break;
default:
break;
......@@ -520,6 +528,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
CC.sendCCResult(callId, CCResult.success());
}
@Override
public void printFailure(String msg) {
if (!TextUtil.isEmptyOrNullOrUndefined(msg)) {
......
package com.joe.print.mvp.ui.view;
import android.animation.ValueAnimator;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.view.View;
......@@ -16,12 +18,15 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.airbnb.lottie.LottieAnimationView;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.HywebActionStatusCode;
import com.gingersoft.gsa.cloud.ui.widget.dialog.BaseRetryDialog;
import com.joe.print.R;
import com.qmuiteam.qmui.layout.QMUILinearLayout;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import java.util.concurrent.atomic.AtomicInteger;
import butterknife.BindDrawable;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
......@@ -38,7 +43,7 @@ public class PrinterLoadingDialog extends BaseRetryDialog {
private static final String TAG = "PrinterLoadingDialog";
private Context mContext;
private Activity mContext;
private TextView tv_generate_print_data, tv_connecting, tv_print_result, tv_error_msg;
......@@ -50,7 +55,7 @@ public class PrinterLoadingDialog extends BaseRetryDialog {
private float mShadowAlpha = 0.25f;
private int mShadowElevationDp = 14;
public PrinterLoadingDialog(@NonNull Context context) {
public PrinterLoadingDialog(@NonNull Activity context) {
super(context, R.style.MyDialogTheme2);
mContext = context;
mRadius = QMUIDisplayHelper.dp2px(mContext, 8);
......@@ -103,9 +108,15 @@ public class PrinterLoadingDialog extends BaseRetryDialog {
}
public void setStep(int step, int status, String errorMsg) {
tv_generate_print_data.post(new Runnable() {
mContext.runOnUiThread(new Runnable() {
@Override
public void run() {
setPrintStateText(step, status, errorMsg);
}
});
}
private void setPrintStateText(int step, int status, String errorMsg) {
if (!TextUtils.isEmpty(errorMsg)) {
tv_error_msg.setText(errorMsg);
tv_error_msg.setVisibility(View.VISIBLE);
......@@ -146,8 +157,6 @@ public class PrinterLoadingDialog extends BaseRetryDialog {
}
setStatusResult(step, status);
}
});
}
private void setStatusResult(int step, int status) {
switch (step) {
......@@ -190,14 +199,4 @@ public class PrinterLoadingDialog extends BaseRetryDialog {
return R.layout.print_dialog_loading;
}
private OnClickListener onClickListener;
public void setOnClickListener(OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public interface OnClickListener {
// void onItemClick(FoodReason item, int position, int deleteNumber);
}
}
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