diff --git a/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java b/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java index 61612aa..745254b 100644 --- a/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java +++ b/src/main/java/com/wms/service/business/serviceImplements/WmsJobServiceImplements.java @@ -89,10 +89,6 @@ public class WmsJobServiceImplements implements IWmsJobService { List taskGroupIds = new ArrayList<>(); // 这里单独处理站台拣选出库以外的任务 for (Task task : allTasks) { - if (request.size() >= maxWcsAcceptNums) { - // 每次给wcs下发数量 - break; - } if (taskGroupIds.contains(task.getTaskGroup())) { // 该任务组已经下发 continue; @@ -130,36 +126,41 @@ public class WmsJobServiceImplements implements IWmsJobService { // 发送任务 String url = configMap.get(ConfigMapKeyEnum.URL_WCS_TASK.getConfigKey()); if (url != null) { - logger.info("向WCS发送任务,地址:{},请求详情:{}", url, convertJsonString(request)); - ResponseEntity result = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, convertJsonString(request)), ResponseEntity.class); - try { - logService.save(new WmsLog(WmsUtils.generateId("LOG_"), "向WCS发送任务", "SetStackerTask", JSON.toJSONString(request), JSON.toJSONString(result), url, LocalDateTime.now(), "WMS")); - } catch (Exception e) { - logger.error("保存发送任务的日志错误。"); - } - if (result == null) { - logger.error("发送堆垛机任务异常。"); - } else { - if (Objects.equals(ResponseCode.OK.getCode(), result.getCode())) { - logger.info("发送WCS任务成功。"); - taskService.update(new LambdaUpdateWrapper() - .set(Task::getTaskStatus, WmsTaskStatus.WAIT.getCode()) - .in(Task::getTaskGroup, taskGroupIds) - .eq(Task::getTaskStatus, WmsTaskStatus.NEW.getCode())); + // 循环发送任务 + for (int i = 0; i < request.size(); i += maxWcsAcceptNums) { + List tempRequest = request.subList(i, Math.min(i + maxWcsAcceptNums, request.size())); + logger.info("向WCS发送任务{}-{},地址:{},请求详情:{}", i + 1, Math.min(i + maxWcsAcceptNums, request.size()), url, convertJsonString(request)); + ResponseEntity result = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, convertJsonString(request)), ResponseEntity.class); + try { + logService.save(new WmsLog(WmsUtils.generateId("LOG_"), "向WCS发送任务", "SetStackerTask", JSON.toJSONString(request), JSON.toJSONString(result), url, LocalDateTime.now(), "WMS")); + } catch (Exception e) { + logger.error("保存发送任务的日志错误。"); + } + if (result == null) { + logger.error("发送堆垛机任务异常。"); } else { - // 判断returnData的数据 - if (result.getReturnData() != null) { - List errorTasks = JSON.parseArray(result.getReturnData().toString(), WcsTaskRequest.class); - if (!errorTasks.isEmpty()) { - List failedTaskIds = errorTasks.stream().map(WcsTaskRequest::getTaskId).distinct().toList(); - // 更新任务状态为异常 - taskService.update(new LambdaUpdateWrapper() - .set(Task::getTaskStatus, WmsTaskStatus.EXCEPTION.getCode()) - .in(Task::getTaskGroup, failedTaskIds) - .eq(Task::getTaskStatus, WmsTaskStatus.NEW.getCode())); + if (Objects.equals(ResponseCode.OK.getCode(), result.getCode())) { + logger.info("发送WCS任务成功。"); + List successTaskIds = tempRequest.stream().map(WcsTaskRequest::getTaskId).toList(); + taskService.update(new LambdaUpdateWrapper() + .set(Task::getTaskStatus, WmsTaskStatus.WAIT.getCode()) + .in(Task::getTaskGroup, successTaskIds) + .eq(Task::getTaskStatus, WmsTaskStatus.NEW.getCode())); + } else { + logger.error("发送任务错误:{}", convertJsonString(result)); + // 判断returnData的数据 + if (result.getReturnData() != null) { + List errorTasks = JSON.parseArray(result.getReturnData().toString(), WcsTaskRequest.class); + if (!errorTasks.isEmpty()) { + List failedTaskIds = errorTasks.stream().map(WcsTaskRequest::getTaskId).distinct().toList(); + // 更新任务状态为异常 + taskService.update(new LambdaUpdateWrapper() + .set(Task::getTaskStatus, WmsTaskStatus.EXCEPTION.getCode()) + .in(Task::getTaskGroup, failedTaskIds) + .eq(Task::getTaskStatus, WmsTaskStatus.NEW.getCode())); + } } } - logger.error("发送任务错误:{}", convertJsonString(result)); } } } else {