| | |
| | | policy.onRequestPermitGranted(context); |
| | | |
| | | InTaskApplyRequest request = policy.buildApplyRequest(context); |
| | | AsyncInTaskResult result = wmsOperateUtils.queryAsyncInTaskResponse(request); |
| | | if (result != null) { |
| | | handleApplyResult(policy, context, request, result); |
| | | continue; |
| | | } |
| | | |
| | | if (wmsOperateUtils.isAsyncRequestInProgress(request)) { |
| | | continue; |
| | | } |
| | | |
| | | News.info("发起异步WMS入库请求,barcode={},stationId={}", request.getBarcode(), |
| | | News.info("发起同步WMS入库请求,barcode={},stationId={}", request.getBarcode(), |
| | | request.getSourceStaNo()); |
| | | wmsOperateUtils.applyInTaskAsync(request); |
| | | redisUtil.set(generateLockKey, "lock", policy.getSubmitLockSeconds(context)); |
| | | // policy.onApplySubmitted(context); |
| | | InTaskApplyResult result = applySyncInTask(request); |
| | | handleApplyResult(policy, context, request, result); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | |
| | | } |
| | | |
| | | private void handleApplyResult(StoreInTaskPolicy policy, StoreInTaskContext context, InTaskApplyRequest request, |
| | | AsyncInTaskResult result) { |
| | | InTaskApplyResult result) { |
| | | if (result.isSuccess()) { |
| | | handleApplySuccess(policy, context, request, result); |
| | | return; |
| | | } |
| | | |
| | | if (result.isRetryableFailure()) { |
| | | News.error("WMS入库请求失败,重新发起请求,barcode={},stationId={},response={}", |
| | | News.error("WMS入库请求失败,barcode={},stationId={},response={}", |
| | | request.getBarcode(), request.getSourceStaNo(), policy.buildFailureMessage(result)); |
| | | wmsOperateUtils.clearAsyncInTaskResponse(request); |
| | | wmsOperateUtils.applyInTaskAsync(request); |
| | | redisUtil.set(policy.getGenerateLockKey(context), "lock", policy.getRetryLockSeconds(context)); |
| | | policy.onApplyFailed(context, result); |
| | | return; |
| | |
| | | } |
| | | |
| | | private void handleApplySuccess(StoreInTaskPolicy policy, StoreInTaskContext context, InTaskApplyRequest request, |
| | | AsyncInTaskResult result) { |
| | | InTaskApplyResult result) { |
| | | try { |
| | | JSONObject jsonObject = JSON.parseObject(result.getResponse()); |
| | | if (jsonObject == null || !Integer.valueOf(200).equals(jsonObject.getInteger("code"))) { |
| | | AsyncInTaskResult failResult = new AsyncInTaskResult(); |
| | | failResult.setStatus(AsyncInTaskStatus.RETRYABLE_FAIL); |
| | | InTaskApplyResult failResult = new InTaskApplyResult(); |
| | | failResult.setStatus(InTaskApplyStatus.RETRYABLE_FAIL); |
| | | failResult.setResponse(result.getResponse()); |
| | | failResult.setMessage("WMS返回非200"); |
| | | handleApplyResult(policy, context, request, failResult); |
| | |
| | | |
| | | StartupDto dto = jsonObject.getObject("data", StartupDto.class); |
| | | if (dto == null) { |
| | | AsyncInTaskResult failResult = new AsyncInTaskResult(); |
| | | failResult.setStatus(AsyncInTaskStatus.RETRYABLE_FAIL); |
| | | InTaskApplyResult failResult = new InTaskApplyResult(); |
| | | failResult.setStatus(InTaskApplyStatus.RETRYABLE_FAIL); |
| | | failResult.setResponse(result.getResponse()); |
| | | failResult.setMessage("WMS返回data为空"); |
| | | handleApplyResult(policy, context, request, failResult); |
| | |
| | | WrkMast wrkMast = commonService.createInTask(taskParam); |
| | | policy.afterTaskCreated(context, wrkMast); |
| | | context.getStationProtocol().setSystemWarning(""); |
| | | wmsOperateUtils.clearAsyncInTaskResponse(request); |
| | | } catch (Exception e) { |
| | | News.error("处理WMS入库成功响应失败,barcode={},stationId={}", request.getBarcode(), |
| | | request.getSourceStaNo(), e); |
| | | } |
| | | } |
| | | |
| | | private InTaskApplyResult applySyncInTask(InTaskApplyRequest request) { |
| | | InTaskApplyResult result = new InTaskApplyResult(); |
| | | result.setBizKey(request.getBizKey()); |
| | | |
| | | String response = wmsOperateUtils.applyInTask(request); |
| | | result.setResponse(response); |
| | | if (Cools.isEmpty(response)) { |
| | | result.setStatus(InTaskApplyStatus.RETRYABLE_FAIL); |
| | | result.setMessage("FAILED"); |
| | | return result; |
| | | } |
| | | |
| | | try { |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject != null && Integer.valueOf(200).equals(jsonObject.getInteger("code"))) { |
| | | result.setStatus(InTaskApplyStatus.SUCCESS); |
| | | return result; |
| | | } |
| | | } catch (Exception ignored) { |
| | | } |
| | | |
| | | result.setStatus(InTaskApplyStatus.RETRYABLE_FAIL); |
| | | result.setMessage(response); |
| | | return result; |
| | | } |
| | | |
| | | } |