Browse Source

卡签停开 - 调整流程

GZBranch
wufasong 1 day ago
parent
commit
14c696afb7

+ 42
- 88
app/src/main/java/com/huntersun/vkyes/etcopencard/project/ui/activity/after/StartStopEtcActivity.java View File

@@ -31,6 +31,7 @@ import com.huntersun.vkyes.etcopencard.project.bluetooth.MethodManager;
import com.huntersun.vkyes.etcopencard.project.bluetooth.ServiceStatus;
import com.huntersun.vkyes.etcopencard.src.aop.SingleClick;
import com.huntersun.vkyes.etcopencard.src.app.AppActivity;
import com.huntersun.vkyes.etcopencard.src.other.AppConfig;

import java.util.HashMap;
import java.util.Map;
@@ -56,6 +57,7 @@ public class StartStopEtcActivity extends AppActivity {
// 指令执行相关变量
private int currentStepNo = 1; // 当前步骤号
private String transOrderId = ""; // 指令编号
private String currentCommand = ""; // 当前要执行的指令

@Override
protected View getLayoutView() {
@@ -377,9 +379,9 @@ public class StartStopEtcActivity extends AppActivity {
new Utils().showMessDialog(getActivity(), "是否确认" + actionText + "卡签?", new Utils.dialogCallback() {
@Override
public void onConfirm(BaseDialog dialog) {
LogUtils.i("卡签操作", "用户确认" + actionText + "操作,开始调用申请接口");
// 调用设备启用/停用申请接口
callDeviceEnableApply();
LogUtils.i("卡签操作", "用户确认" + actionText + "操作,开始连接ETC设备");
// 先连接ETC设备,连接成功后再调用申请接口
connectDeviceAndApply();
}
});
}
@@ -394,7 +396,7 @@ public class StartStopEtcActivity extends AppActivity {
params.put("accessToken", MyShared.getInstance().get(MyShared.ACCESSTOKEN, "") + "");
params.put("loginSource", Constants.LOGIN_SOURCE);
params.put("staffId", MyShared.getInstance().get(MyShared.STAFFID, ""));
params.put("cardId", curBizContent.getCardId());
params.put("cardId", curBizContent.getCardId());
params.put("obuId", curBizContent.getObuId());
params.put("vehicleId", plateNum + "_" + colorNum);
params.put("customerId", MyShared.getInstance().get(MyShared.STAFFID, "") + "");
@@ -444,12 +446,17 @@ public class StartStopEtcActivity extends AppActivity {
", stepNo: " + stepNo + ", transOrderId: " + transOrderId);
if (!FunHelper.isEmpty(cmd)) {
// 有指令需要执行,先连接ETC设备
LogUtils.i("解析申请响应", "检测到需要执行指令,准备连接ETC设备");
// 有指令需要执行,设置指令信息
LogUtils.i("解析申请响应", "检测到需要执行指令,指令类型: " + cmdType);
this.transOrderId = transOrderId;
this.currentStepNo = stepNo != null ? stepNo : 1;
this.currentCommand = cmd; // 保存第一个指令
LogUtils.i("解析申请响应", "设置指令编号: " + this.transOrderId + ", 当前步骤号: " + this.currentStepNo);
connectDeviceAndExecute();
LogUtils.i("解析申请响应", "保存第一个指令: " + cmd);
// 申请成功后,直接开始执行指令流程
LogUtils.i("解析申请响应", "申请成功,开始执行指令流程");
executeEnableDisableCommand();
} else {
LogUtils.i("解析申请响应", "无需执行指令,操作直接完成");
showSuccessPage();
@@ -466,14 +473,13 @@ public class StartStopEtcActivity extends AppActivity {
}
/**
* 连接ETC设备并执行指令
* 连接ETC设备并申请启用/停用
*/
private void connectDeviceAndExecute() {
private void connectDeviceAndApply() {
LogUtils.i("连接ETC设备", "========== 开始连接ETC设备 ==========");
LogUtils.i("连接ETC设备", "当前操作类型: " + (operation == 1 ? "停用" : "启用"));
LogUtils.i("连接ETC设备", "车辆信息 - 车牌: " + plateNum + ", 颜色: " + colorNum);
LogUtils.i("连接ETC设备", "设备信息 - 卡号: " + curBizContent.getCardId() + ", OBU号: " + curBizContent.getObuId());
LogUtils.i("连接ETC设备", "指令信息 - 步骤号: " + currentStepNo + ", 指令编号: " + transOrderId);
// 连接蓝牙设备
bluetoothLink(new Currency() {
@@ -481,18 +487,18 @@ public class StartStopEtcActivity extends AppActivity {
public void success() {
LogUtils.i("连接ETC设备", "========== 蓝牙连接成功 ==========");
LogUtils.i("连接ETC设备", "设备类型: 普通蓝牙设备");
LogUtils.i("连接ETC设备", "开始执行" + (operation == 1 ? "停用" : "启用") + "指令");
// 蓝牙连接成功,执行指令
executeEnableDisableCommand();
LogUtils.i("连接ETC设备", "开始调用" + (operation == 1 ? "停用" : "启用") + "申请接口");
// 蓝牙连接成功,调用申请接口
callDeviceEnableApply();
}

@Override
public void success9901(int isPlk) {
LogUtils.i("连接ETC设备", "========== 9901设备连接成功 ==========");
LogUtils.i("连接ETC设备", "设备类型: 9901设备, isPlk: " + isPlk);
LogUtils.i("连接ETC设备", "开始执行" + (operation == 1 ? "停用" : "启用") + "指令");
// 9901设备连接成功,执行指令
executeEnableDisableCommand();
LogUtils.i("连接ETC设备", "开始调用" + (operation == 1 ? "停用" : "启用") + "申请接口");
// 9901设备连接成功,调用申请接口
callDeviceEnableApply();
}

@Override
@@ -511,76 +517,19 @@ public class StartStopEtcActivity extends AppActivity {
private void executeEnableDisableCommand() {
LogUtils.i("执行指令流程", "========== 开始执行" + (operation == 1 ? "停用" : "启用") + "指令流程 ==========");
LogUtils.i("执行指令流程", "当前步骤号: " + currentStepNo + ", 指令编号: " + transOrderId);
LogUtils.i("执行指令流程", "设备已连接,开始获取指令");
LogUtils.i("执行指令流程", "当前指令: " + currentCommand);
LogUtils.i("执行指令流程", "设备已连接,开始执行第一个指令");
// 从申请响应中已经获取了第一个指令,直接执行
// 这里需要从申请响应中获取cmd,但由于我们已经解析过了,需要重新获取
// 为了简化,我们直接调用指令回传接口获取下一个指令
getNextCommand();
// 直接执行第一个指令
if (!FunHelper.isEmpty(currentCommand)) {
LogUtils.i("执行指令流程", "执行第一个指令: " + currentCommand);
executeWriteCard(currentCommand, transOrderId);
} else {
LogUtils.e("执行指令流程", "第一个指令为空,无法执行");
ToastUtils.show("指令为空,无法执行");
}
}
/**
* 获取下一个指令
*/
private void getNextCommand() {
showDialog("正在获取指令...");
HashMap<String, Object> params = new HashMap<>();
params.put("accessToken", MyShared.getInstance().get(MyShared.ACCESSTOKEN, "") + "");
params.put("loginSource", Constants.LOGIN_SOURCE);
params.put("cmd", ""); // 第一次调用时cmd为空
params.put("cmdResult", ""); // 第一次调用时cmdResult为空
params.put("customerId", MyShared.getInstance().get(MyShared.STAFFID, "") + "");
params.put("stepNo", currentStepNo);
params.put("transOrderId", transOrderId);
LogUtils.i("获取指令", "请求参数: " + new Gson().toJson(params));
MyRetrofit.newInstanceGZ(this, IFCode.IFCODE_DEVICE_ENABLE_INST_CALLBACK, params, new MyRetrofit.ReturnResult() {
@Override
public void onSuccess(ResultBean resultBean, ResultBean.BizContent bizContent) {
hideDialog();
LogUtils.i("获取指令", "响应数据: " + new Gson().toJson(resultBean));
try {
if (resultBean.getData() != null) {
String dataStr = JSONObject.toJSONString(resultBean.getData());
LogUtils.i("获取指令", "响应原始数据: " + dataStr);
JSONObject dataObj = JSONObject.parseObject(dataStr);
String cmd = dataObj.getString("cmd");
String cmdType = dataObj.getString("cmdType");
Integer stepNo = dataObj.getInteger("stepNo");
String transOrderId = dataObj.getString("transOrderId");
LogUtils.i("获取指令", "解析结果 - cmd: " + cmd + ", cmdType: " + cmdType +
", stepNo: " + stepNo + ", transOrderId: " + transOrderId);
if (!FunHelper.isEmpty(cmd)) {
// 有指令需要执行
executeWriteCard(cmd, transOrderId);
} else {
LogUtils.i("获取指令", "无需执行指令,操作完成");
showSuccessPage();
}
} else {
LogUtils.e("获取指令", "获取指令失败:响应数据为空");
ToastUtils.show("获取指令失败:响应数据为空");
}
} catch (Exception e) {
LogUtils.e("获取指令", "解析指令响应失败: " + e.getMessage());
e.printStackTrace();
ToastUtils.show("解析指令响应失败");
}
}

@Override
public void onError(Response<Result> resp) {
hideDialog();
LogUtils.e("获取指令", "获取指令失败: " + (resp != null ? resp.message() : "未知错误"));
ToastUtils.show("获取指令失败");
}
});
}
/**
* 执行写卡操作
@@ -640,18 +589,21 @@ public class StartStopEtcActivity extends AppActivity {
* 回传启用/停用指令结果
*/
private void callbackEnableDisableCommand(String command, String transOrderId, String result) {
LogUtils.i("指令回传", "========== 开始回传指令结果 ==========");
LogUtils.i("指令回传", "执行的指令: " + command);
LogUtils.i("指令回传", "指令结果: " + result);
LogUtils.i("指令回传", "当前步骤号: " + currentStepNo + ", 指令编号: " + transOrderId);
HashMap<String, Object> params = new HashMap<>();
params.put("accessToken", MyShared.getInstance().get(MyShared.ACCESSTOKEN, "") + "");
params.put("loginSource", Constants.LOGIN_SOURCE);
params.put("cmd", command);
params.put("cmdResult", result);
params.put("cmd", command); // 传递执行的指令
params.put("cmdResult", result); // 传递指令执行结果
params.put("customerId", MyShared.getInstance().get(MyShared.STAFFID, "") + "");
params.put("stepNo", currentStepNo);
params.put("transOrderId", transOrderId);
LogUtils.i("指令回传", "请求参数: " + new Gson().toJson(params));
LogUtils.i("指令回传", "当前步骤: " + currentStepNo + ", 指令: " + command +
", 指令编号: " + transOrderId + ", 指令结果: " + result);
LogUtils.i("指令回传", "回传接口请求参数: " + new Gson().toJson(params));
MyRetrofit.newInstanceGZ(this, IFCode.IFCODE_DEVICE_ENABLE_INST_CALLBACK, params, new MyRetrofit.ReturnResult() {
@Override
@@ -689,6 +641,8 @@ public class StartStopEtcActivity extends AppActivity {
if (!FunHelper.isEmpty(cmd)) {
LogUtils.i("指令回传", "获取到下一个指令,开始执行");
LogUtils.i("指令回传", "新指令: " + cmd);
// 更新当前指令
currentCommand = cmd;
executeWriteCard(cmd, transOrderId);
} else {
LogUtils.i("指令回传", "未获取到指令,操作完成");

Loading…
Cancel
Save