diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index 5f53982..a951db8 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java @@ -329,6 +329,53 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi public void showToast(String message) { OXFaceOnlineActivity.this.showToast(message); } + + @Override + public void showLeaveVerificationResultPage(int errorCode, String errorMessage, boolean isSuccess, PadApiService.CheckLeaveResult result) { + // 跳转到离场校验结果页面 + runOnUiThread(() -> { + try { + Intent intent = new Intent(OXFaceOnlineActivity.this, OrderVerificationResultActivity.class); + + // 设置验证类型为离场验证(使用特殊值5表示离场验证) + intent.putExtra("verification_type", 5); // 5表示离场验证 + + // 设置结果状态 + if (isSuccess) { + intent.putExtra("status", "离场成功"); + intent.putExtra("message", errorMessage != null ? errorMessage : "离场成功"); + } else { + intent.putExtra("status", "离场失败"); + intent.putExtra("message", errorMessage != null ? errorMessage : "离场失败"); + } + + // 设置错误代码 + intent.putExtra("error_code", errorCode); + + // 如果有结果数据,传入相关信息 + if (result != null) { + intent.putExtra("order_no", result.getOrderNo() != null ? result.getOrderNo() : ""); + intent.putExtra("project", result.getProject() != null ? result.getProject() : ""); + } else { + intent.putExtra("order_no", ""); + intent.putExtra("project", "离场验证"); + } + + // 设置默认值 + intent.putExtra("order_type", 0); // 默认订单类型 + intent.putExtra("verification_code", ""); + intent.putExtra("card_no", ""); + + LogManager.logInfo(TAG, "跳转到离场校验结果页面,状态: " + (isSuccess ? "成功" : "失败") + ", 错误代码: " + errorCode); + startActivity(intent); + + } catch (Exception e) { + LogManager.logError(TAG, "跳转到离场校验结果页面失败", e); + // 如果跳转失败,回退到显示toast的方式 + showToast(errorMessage != null ? errorMessage : (isSuccess ? "离场成功" : "离场失败")); + } + }); + } }); LogManager.logInfo(TAG, "离场校验管理器初始化完成"); diff --git a/app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java b/app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java index 60e559b..2d378f7 100644 --- a/app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java +++ b/app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java @@ -60,6 +60,15 @@ public class LeaveVerificationManager { * @param message 消息内容 */ void showToast(String message); + + /** + * 跳转到离场校验结果页面 + * @param errorCode 错误代码 + * @param errorMessage 错误消息 + * @param isSuccess 是否成功 + * @param result 校验结果(成功时传入) + */ + void showLeaveVerificationResultPage(int errorCode, String errorMessage, boolean isSuccess, PadApiService.CheckLeaveResult result); } public LeaveVerificationManager(Context context, LeaveVerificationListener listener) { @@ -163,8 +172,8 @@ public class LeaveVerificationManager { if (listener != null) { listener.onLeaveVerificationSuccess(result); - listener.showToast(result != null && result.getMessage() != null ? - result.getMessage() : "离场成功"); + // 跳转到离场校验结果页面显示成功结果 + listener.showLeaveVerificationResultPage(0, result != null ? result.getMessage() : "离场成功", true, result); } } @@ -178,6 +187,8 @@ public class LeaveVerificationManager { if (listener != null) { listener.onLeaveVerificationError(errorCode, errorMessage); + // 跳转到离场校验结果页面显示错误结果 + listener.showLeaveVerificationResultPage(errorCode, errorMessage, false, null); } } @@ -187,7 +198,10 @@ public class LeaveVerificationManager { Log.e(TAG, "离场校验网络异常: " + throwable.getMessage(), throwable); if (listener != null) { - listener.onLeaveVerificationError(-1, "网络请求异常: " + throwable.getMessage()); + String errorMessage = "网络请求异常: " + throwable.getMessage(); + listener.onLeaveVerificationError(-1, errorMessage); + // 跳转到离场校验结果页面显示异常结果 + listener.showLeaveVerificationResultPage(-1, errorMessage, false, null); } } @@ -207,8 +221,11 @@ public class LeaveVerificationManager { Log.e(TAG, "执行离场校验时发生异常: " + e.getMessage(), e); if (listener != null) { - listener.onLeaveVerificationError(-1, "系统异常: " + e.getMessage()); + String errorMessage = "系统异常: " + e.getMessage(); + listener.onLeaveVerificationError(-1, errorMessage); listener.onLeaveVerificationComplete(); + // 跳转到离场校验结果页面显示异常结果 + listener.showLeaveVerificationResultPage(-1, errorMessage, false, null); } } } @@ -273,8 +290,8 @@ public class LeaveVerificationManager { if (listener != null) { listener.onLeaveVerificationSuccess(result); - listener.showToast(result != null && result.getMessage() != null ? - result.getMessage() : "离场成功"); + // 跳转到离场校验结果页面显示成功结果 + listener.showLeaveVerificationResultPage(0, result != null ? result.getMessage() : "离场成功", true, result); } } @@ -288,6 +305,8 @@ public class LeaveVerificationManager { if (listener != null) { listener.onLeaveVerificationError(errorCode, errorMessage); + // 跳转到离场校验结果页面显示错误结果 + listener.showLeaveVerificationResultPage(errorCode, errorMessage, false, null); } } @@ -297,7 +316,10 @@ public class LeaveVerificationManager { Log.e(TAG, "验证码离场校验网络异常: " + throwable.getMessage(), throwable); if (listener != null) { - listener.onLeaveVerificationError(-1, "网络请求异常: " + throwable.getMessage()); + String errorMessage = "网络请求异常: " + throwable.getMessage(); + listener.onLeaveVerificationError(-1, errorMessage); + // 跳转到离场校验结果页面显示异常结果 + listener.showLeaveVerificationResultPage(-1, errorMessage, false, null); } } @@ -317,8 +339,11 @@ public class LeaveVerificationManager { Log.e(TAG, "执行验证码离场校验时发生异常: " + e.getMessage(), e); if (listener != null) { - listener.onLeaveVerificationError(-1, "系统异常: " + e.getMessage()); + String errorMessage = "系统异常: " + e.getMessage(); + listener.onLeaveVerificationError(-1, errorMessage); listener.onLeaveVerificationComplete(); + // 跳转到离场校验结果页面显示异常结果 + listener.showLeaveVerificationResultPage(-1, errorMessage, false, null); } } } @@ -384,8 +409,8 @@ public class LeaveVerificationManager { if (listener != null) { listener.onLeaveVerificationSuccess(result); - listener.showToast(result != null && result.getMessage() != null ? - result.getMessage() : "离场成功"); + // 跳转到离场校验结果页面显示成功结果 + listener.showLeaveVerificationResultPage(0, result != null ? result.getMessage() : "离场成功", true, result); } } @@ -399,6 +424,8 @@ public class LeaveVerificationManager { if (listener != null) { listener.onLeaveVerificationError(errorCode, errorMessage); + // 跳转到离场校验结果页面显示错误结果 + listener.showLeaveVerificationResultPage(errorCode, errorMessage, false, null); } } @@ -408,7 +435,10 @@ public class LeaveVerificationManager { Log.e(TAG, "扫码器离场校验网络异常: " + throwable.getMessage(), throwable); if (listener != null) { - listener.onLeaveVerificationError(-1, "网络请求异常: " + throwable.getMessage()); + String errorMessage = "网络请求异常: " + throwable.getMessage(); + listener.onLeaveVerificationError(-1, errorMessage); + // 跳转到离场校验结果页面显示异常结果 + listener.showLeaveVerificationResultPage(-1, errorMessage, false, null); } } @@ -428,8 +458,11 @@ public class LeaveVerificationManager { Log.e(TAG, "执行扫码器离场校验时发生异常: " + e.getMessage(), e); if (listener != null) { - listener.onLeaveVerificationError(-1, "系统异常: " + e.getMessage()); + String errorMessage = "系统异常: " + e.getMessage(); + listener.onLeaveVerificationError(-1, errorMessage); listener.onLeaveVerificationComplete(); + // 跳转到离场校验结果页面显示异常结果 + listener.showLeaveVerificationResultPage(-1, errorMessage, false, null); } } } @@ -446,31 +479,25 @@ public class LeaveVerificationManager { // 订单超期需要扫码补缴 LogManager.logInfo(TAG, "处理902错误 - 订单超期需要扫码补缴"); VenueSceneUtils.playAudio("订单超期需要扫码补缴"); - if (listener != null) { - listener.showToast(errorMessage != null ? errorMessage : "订单超期,需要扫码补缴"); - } + // 902错误由onError方法处理跳转逼辑,这里只播放音频 break; case 302: // 跳转到验证结果页面 LogManager.logInfo(TAG, "处理302错误 - 跳转到验证结果页面"); - // 这里可以添加页面跳转逻辑 + // 302错误已由onError方法处理跳转逼辑,这里不需要额外处理 break; case 502: // 服务器错误,特殊处理 LogManager.logInfo(TAG, "处理502错误 - 服务器暂时不可用"); - if (listener != null) { - listener.showToast("服务器暂时不可用,请稍后再试"); - } + // 502错误由onError方法处理跳转逼辑,这里不需要额外处理 break; default: // 其他错误 LogManager.logInfo(TAG, "处理其他错误 - code: " + errorCode); - if (listener != null) { - listener.showToast(errorMessage != null ? errorMessage : "离场失败"); - } + // 错误由onError方法处理跳转逼辑,这里不需要额外处理 break; } } catch (Exception e) { diff --git a/app/src/main/java/com/ouxuan/oxface/orderOX/OrderVerificationResultActivity.java b/app/src/main/java/com/ouxuan/oxface/orderOX/OrderVerificationResultActivity.java index 9e3dc0c..e53eb5e 100644 --- a/app/src/main/java/com/ouxuan/oxface/orderOX/OrderVerificationResultActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/orderOX/OrderVerificationResultActivity.java @@ -183,6 +183,9 @@ public class OrderVerificationResultActivity extends AppCompatActivity { case 4: tvTitle.setText("扫码器核销结果"); break; + case 5: + tvTitle.setText("离场校验结果"); + break; default: tvTitle.setText("订单核销结果"); break; @@ -221,6 +224,12 @@ public class OrderVerificationResultActivity extends AppCompatActivity { // 清空现有内容 layoutContent.removeAllViews(); + // 如果是离场验证(verificationType = 5),显示离场验证特殊内容 + if (verificationType == 5) { + buildLeaveVerificationContent(); + return; + } + // 根据订单类型显示不同内容 switch (orderType) { case 0: // 场次核销 @@ -242,6 +251,40 @@ public class OrderVerificationResultActivity extends AppCompatActivity { } /** + * 构建离场验证内容 + */ + private void buildLeaveVerificationContent() { + // 离场验证:显示验证结果相关信息 + + // 显示验证时间 + String currentTime = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss", java.util.Locale.getDefault()) + .format(new java.util.Date()); + addInfoRow("验证时间", currentTime); + + // 如果有订单号,显示订单信息 + if (orderNo != null && !orderNo.isEmpty()) { + addInfoRow("订单编号", orderNo); + } + + // 如果有项目名称,显示项目信息 + if (project != null && !project.isEmpty() && !"离场验证".equals(project)) { + addInfoRow("项目名称", project); + } + + // 显示验证类型 + addInfoRow("验证方式", "人脸识别"); + + // 如果有错误代码,显示错误代码 + Intent intent = getIntent(); + if (intent != null) { + int errorCode = intent.getIntExtra("error_code", 0); + if (errorCode != 0) { + addInfoRow("错误代码", String.valueOf(errorCode)); + } + } + } + + /** * 构建场次核销内容 */ private void buildSiteContent() {