| | |
| | | |
| | | @Override |
| | | public InteractionResult execute(InteractionContext context) { |
| | | Object source = context.getSharedData().get("glassesFromVehicle"); |
| | | List<String> glassQueue = castList(source); |
| | | if (CollectionUtils.isEmpty(glassQueue)) { |
| | | return InteractionResult.waitResult("等待上大车输出", null); |
| | | try { |
| | | // 前置条件验证 |
| | | if (context.getCurrentDevice() == null) { |
| | | return InteractionResult.fail("设备配置不存在"); |
| | | } |
| | | |
| | | // 检查上大车是否完成 |
| | | Object source = context.getSharedData().get("glassesFromVehicle"); |
| | | List<String> glassQueue = castList(source); |
| | | if (CollectionUtils.isEmpty(glassQueue)) { |
| | | // 也尝试从上下文获取 |
| | | glassQueue = context.getLoadedGlassIds(); |
| | | if (CollectionUtils.isEmpty(glassQueue)) { |
| | | return InteractionResult.waitResult("等待上大车输出", null); |
| | | } |
| | | } |
| | | |
| | | // 验证玻璃ID |
| | | for (String glassId : glassQueue) { |
| | | if (glassId == null || glassId.trim().isEmpty()) { |
| | | return InteractionResult.fail("玻璃ID不能为空"); |
| | | } |
| | | } |
| | | |
| | | // 执行大理片处理 |
| | | List<String> processed = new ArrayList<>(glassQueue); |
| | | context.setProcessedGlassIds(processed); |
| | | context.getSharedData().put("processedGlasses", processed); |
| | | context.getSharedData().put("largeGlassProcessTime", System.currentTimeMillis()); |
| | | |
| | | // 后置条件检查 |
| | | if (context.getProcessedGlassIds().isEmpty()) { |
| | | return InteractionResult.fail("大理片处理失败:处理后的玻璃ID列表为空"); |
| | | } |
| | | |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("processedCount", processed.size()); |
| | | data.put("processedGlasses", processed); |
| | | data.put("deviceId", context.getCurrentDevice().getId()); |
| | | data.put("deviceCode", context.getCurrentDevice().getDeviceCode()); |
| | | return InteractionResult.success(data); |
| | | } catch (Exception e) { |
| | | return InteractionResult.fail("大理片交互执行异常: " + e.getMessage()); |
| | | } |
| | | |
| | | List<String> processed = new ArrayList<>(glassQueue); |
| | | context.setProcessedGlassIds(processed); |
| | | context.getSharedData().put("processedGlasses", processed); |
| | | |
| | | Map<String, Object> data = new HashMap<>(); |
| | | data.put("processedCount", processed.size()); |
| | | data.put("processedGlasses", processed); |
| | | return InteractionResult.success(data); |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |