Junjie
1 天以前 641bf75f1b6684ee5b6d13497ad1106b82c59043
src/main/java/com/zy/core/plugin/store/StoreInTaskGenerationService.java
@@ -111,21 +111,10 @@
                    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) {
@@ -134,17 +123,15 @@
    }
    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;
@@ -154,12 +141,12 @@
    }
    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);
@@ -168,8 +155,8 @@
            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);
@@ -180,11 +167,36 @@
            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;
    }
}