| | |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.service.*; |
| | | import com.vincent.rsf.server.manager.service.impl.LocServiceImpl; |
| | | import com.vincent.rsf.server.system.utils.SystemAuthUtils; |
| | | import com.vincent.rsf.server.system.constant.SerialRuleCode; |
| | | import com.vincent.rsf.server.manager.enums.LocStsType; |
| | | import com.vincent.rsf.server.system.utils.SerialRuleUtils; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.Random; |
| | |
| | | private WaitPakinItemService waitPakinItemService; |
| | | @Autowired |
| | | private BasStationService basStationService; |
| | | @Autowired |
| | | private LocItemWorkingService locItemWorkingService; |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | @Autowired |
| | |
| | | // 验证设备站点 |
| | | DeviceSite deviceSite = validateDeviceSite(param); |
| | | |
| | | // 验证组拖状态 |
| | | WaitPakin waitPakin = validateWaitPakin(param.getBarcode()); |
| | | // 提前定义waitPakin,避免作用域问题 |
| | | WaitPakin waitPakin = null; |
| | | |
| | | // 先验证组拖状态,获取组托明细信息(用于批号匹配和单号检查) |
| | | waitPakin = validateWaitPakin(param.getBarcode()); |
| | | List<WaitPakinItem> waitPakinItems = waitPakinItemService.list( |
| | | new LambdaQueryWrapper<WaitPakinItem>() |
| | | .eq(WaitPakinItem::getPakinId, waitPakin.getId())); |
| | | |
| | | // 先检查是否有拣料入库任务(需要同时匹配箱号和批号) |
| | | Task pickInTask = null; |
| | | // 检查是否有盘点入库任务(需要同时匹配箱号和批号) |
| | | Task checkInTask = null; |
| | | |
| | | if (!waitPakinItems.isEmpty()) { |
| | | // 获取组托明细中的批号列表(去重) |
| | | List<String> batchList = waitPakinItems.stream() |
| | | .map(WaitPakinItem::getBatch) |
| | | .filter(Objects::nonNull) |
| | | .filter(batch -> !batch.trim().isEmpty()) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | |
| | | if (!batchList.isEmpty()) { |
| | | log.info("检查组托明细批号 - 批号列表:{}", batchList); |
| | | |
| | | // 查询拣料入库任务:箱号匹配且状态为1或2 |
| | | List<Task> pickInTasks = taskService.list(new LambdaQueryWrapper<Task>() |
| | | .eq(Task::getBarcode, param.getBarcode()) |
| | | .eq(Task::getTaskType, TaskType.TASK_TYPE_PICK_IN.type) |
| | | .in(Task::getTaskStatus, TaskStsType.GENERATE_IN.id, TaskStsType.WCS_EXECUTE_IN.id) |
| | | .orderByDesc(Task::getCreateTime)); |
| | | |
| | | // 通过TaskItem的batch字段匹配批号 |
| | | for (Task task : pickInTasks) { |
| | | List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>() |
| | | .eq(TaskItem::getTaskId, task.getId()) |
| | | .in(TaskItem::getBatch, batchList)); |
| | | |
| | | if (!taskItems.isEmpty()) { |
| | | pickInTask = task; |
| | | log.info("找到匹配的拣料入库任务(箱号和批号都匹配) - 任务编码:{},批号:{}", |
| | | task.getTaskCode(), batchList); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 查询盘点入库任务:箱号匹配且状态为1或2 |
| | | List<Task> checkInTasks = taskService.list(new LambdaQueryWrapper<Task>() |
| | | .eq(Task::getBarcode, param.getBarcode()) |
| | | .eq(Task::getTaskType, TaskType.TASK_TYPE_CHECK_IN.type) |
| | | .in(Task::getTaskStatus, TaskStsType.GENERATE_IN.id, TaskStsType.WCS_EXECUTE_IN.id) |
| | | .orderByDesc(Task::getCreateTime)); |
| | | |
| | | // 通过TaskItem的batch字段匹配批号 |
| | | for (Task task : checkInTasks) { |
| | | List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>() |
| | | .eq(TaskItem::getTaskId, task.getId()) |
| | | .in(TaskItem::getBatch, batchList)); |
| | | |
| | | if (!taskItems.isEmpty()) { |
| | | checkInTask = task; |
| | | log.info("找到匹配的盘点入库任务(箱号和批号都匹配) - 任务编码:{},批号:{}", |
| | | task.getTaskCode(), batchList); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 如果是拣料入库任务,直接返回,不校验组托 |
| | | if (Objects.nonNull(pickInTask)) { |
| | | log.info("拣料入库任务,直接返回,不校验组托 - 任务编码:{}", pickInTask.getTaskCode()); |
| | | |
| | | // 更新入库站点信息(如果与当前申请的站点不同) |
| | | if (StringUtils.isNotBlank(param.getSourceStaNo()) && |
| | | !param.getSourceStaNo().equals(pickInTask.getOrgSite())) { |
| | | log.info("更新拣料入库任务的入库站点 - 任务编码:{},原站点:{},新站点:{}", |
| | | pickInTask.getTaskCode(), pickInTask.getOrgSite(), param.getSourceStaNo()); |
| | | pickInTask.setOrgSite(param.getSourceStaNo()); |
| | | if (!taskService.updateById(pickInTask)) { |
| | | log.warn("更新拣料入库任务的入库站点失败 - 任务编码:{}", pickInTask.getTaskCode()); |
| | | } |
| | | } |
| | | |
| | | // 返回拣料入库任务的信息 |
| | | InTaskMsgDto msgDto = new InTaskMsgDto(); |
| | | msgDto.setWorkNo(pickInTask.getTaskCode()); |
| | | msgDto.setTaskId(pickInTask.getId()); |
| | | msgDto.setLocNo(pickInTask.getTargLoc()); |
| | | msgDto.setSourceStaNo(pickInTask.getOrgSite()); |
| | | msgDto.setStaNo(pickInTask.getTargSite()); |
| | | return msgDto; |
| | | } |
| | | |
| | | // 如果是盘点入库任务,直接返回,不校验组托 |
| | | if (Objects.nonNull(checkInTask)) { |
| | | log.info("盘点入库任务,直接返回,不校验组托 - 任务编码:{}", checkInTask.getTaskCode()); |
| | | |
| | | // 更新入库站点信息(如果与当前申请的站点不同) |
| | | if (StringUtils.isNotBlank(param.getSourceStaNo()) && |
| | | !param.getSourceStaNo().equals(checkInTask.getOrgSite())) { |
| | | log.info("更新盘点入库任务的入库站点 - 任务编码:{},原站点:{},新站点:{}", |
| | | checkInTask.getTaskCode(), checkInTask.getOrgSite(), param.getSourceStaNo()); |
| | | checkInTask.setOrgSite(param.getSourceStaNo()); |
| | | if (!taskService.updateById(checkInTask)) { |
| | | log.warn("更新盘点入库任务的入库站点失败 - 任务编码:{}", checkInTask.getTaskCode()); |
| | | } |
| | | } |
| | | |
| | | // 返回盘点入库任务的信息 |
| | | InTaskMsgDto msgDto = new InTaskMsgDto(); |
| | | msgDto.setWorkNo(checkInTask.getTaskCode()); |
| | | msgDto.setTaskId(checkInTask.getId()); |
| | | msgDto.setLocNo(checkInTask.getTargLoc()); |
| | | msgDto.setSourceStaNo(checkInTask.getOrgSite()); |
| | | msgDto.setStaNo(checkInTask.getTargSite()); |
| | | return msgDto; |
| | | } |
| | | |
| | | // 检查其他入库任务类型(用箱号查询,状态为1或2) |
| | | // 注意:盘点入库已单独处理,不再包含在此列表中 |
| | | List<Integer> otherInboundTaskTypes = Arrays.asList( |
| | | TaskType.TASK_TYPE_IN.type, |
| | | TaskType.TASK_TYPE_MERGE_IN.type, |
| | | TaskType.TASK_TYPE_EMPITY_IN.type |
| | | ); |
| | | |
| | | Task existingInTask = taskService.getOne(new LambdaQueryWrapper<Task>() |
| | | .eq(Task::getBarcode, param.getBarcode()) |
| | | .in(Task::getTaskType, otherInboundTaskTypes) |
| | | .in(Task::getTaskStatus, TaskStsType.GENERATE_IN.id, TaskStsType.WCS_EXECUTE_IN.id) |
| | | .orderByDesc(Task::getCreateTime) |
| | | .last("LIMIT 1")); |
| | | |
| | | if (Objects.nonNull(existingInTask)) { |
| | | log.info("找到匹配的其他入库任务 - 任务编码:{},任务类型:{},箱号:{}", |
| | | existingInTask.getTaskCode(), existingInTask.getTaskType(), param.getBarcode()); |
| | | |
| | | // 检查组托明细是否有订单编码(任务编号) |
| | | List<WaitPakinItem> itemsWithAsnCode = waitPakinItems.stream() |
| | | .filter(item -> StringUtils.isNotBlank(item.getAsnCode())) |
| | | .collect(Collectors.toList()); |
| | | |
| | | if (!itemsWithAsnCode.isEmpty()) { |
| | | log.info("组托档有任务编号,使用现有入库任务单号 - 任务编码:{},箱号:{},任务编号数量:{}", |
| | | existingInTask.getTaskCode(), param.getBarcode(), itemsWithAsnCode.size()); |
| | | |
| | | // 更新入库站点信息(如果与当前申请的站点不同) |
| | | if (StringUtils.isNotBlank(param.getSourceStaNo()) && |
| | | !param.getSourceStaNo().equals(existingInTask.getOrgSite())) { |
| | | log.info("更新入库任务的入库站点 - 任务编码:{},原站点:{},新站点:{}", |
| | | existingInTask.getTaskCode(), existingInTask.getOrgSite(), param.getSourceStaNo()); |
| | | existingInTask.setOrgSite(param.getSourceStaNo()); |
| | | if (!taskService.updateById(existingInTask)) { |
| | | log.warn("更新入库任务的入库站点失败 - 任务编码:{}", existingInTask.getTaskCode()); |
| | | } |
| | | } |
| | | |
| | | // 返回现有入库任务的信息 |
| | | InTaskMsgDto msgDto = new InTaskMsgDto(); |
| | | msgDto.setWorkNo(existingInTask.getTaskCode()); |
| | | msgDto.setTaskId(existingInTask.getId()); |
| | | msgDto.setLocNo(existingInTask.getTargLoc()); |
| | | msgDto.setSourceStaNo(existingInTask.getOrgSite()); |
| | | msgDto.setStaNo(existingInTask.getTargSite()); |
| | | return msgDto; |
| | | } else { |
| | | log.info("组托档没有任务编号,继续创建新任务 - 箱号:{}", param.getBarcode()); |
| | | } |
| | | } else { |
| | | log.info("未找到匹配的其他入库任务,继续创建新任务 - 箱号:{}", param.getBarcode()); |
| | | } |
| | | |
| | | // 生成任务编码 |
| | | String ruleCode = generateTaskCode(); |
| | |
| | | updateLocStatus(task.getTargLoc(), waitPakin.getBarcode()); |
| | | |
| | | // 获取并验证组拖明细 |
| | | List<WaitPakinItem> waitPakinItems = getWaitPakinItems(waitPakin.getId()); |
| | | waitPakinItems = getWaitPakinItems(waitPakin.getId()); |
| | | |
| | | // 创建并保存任务明细 |
| | | saveTaskItems(task.getId(), waitPakinItems, param.getUser()); |
| | |
| | | |
| | | // 设置工作单号并返回 |
| | | locNo.setWorkNo(ruleCode); |
| | | locNo.setTaskId(task.getId()); |
| | | return locNo; |
| | | } |
| | | |
| | |
| | | private WaitPakin validateWaitPakin(String barcode) { |
| | | WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() |
| | | .eq(WaitPakin::getBarcode, barcode) |
| | | .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)); |
| | | .in(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val)); |
| | | |
| | | if (Cools.isEmpty(waitPakin)) { |
| | | throw new CoolException("请检查组拖状态是否完成!!"); |
| | |
| | | |
| | | /** |
| | | * 获取并验证组拖明细 |
| | | * 只返回未完全使用的明细(workQty < anfme 或 workQty 为 null) |
| | | */ |
| | | private List<WaitPakinItem> getWaitPakinItems(Long pakinId) { |
| | | List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, pakinId)); |
| | | List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>() |
| | | .eq(WaitPakinItem::getPakinId, pakinId)); |
| | | |
| | | if (waitPakinItems.isEmpty()) { |
| | | throw new CoolException("数据错误:组拖明细不存在"); |
| | | } |
| | | return waitPakinItems; |
| | | |
| | | // 过滤掉已完全使用的明细(workQty >= anfme) |
| | | List<WaitPakinItem> availableItems = waitPakinItems.stream() |
| | | .filter(item -> { |
| | | Double workQty = item.getWorkQty() == null ? 0.0 : item.getWorkQty(); |
| | | Double anfme = item.getAnfme() == null ? 0.0 : item.getAnfme(); |
| | | return workQty < anfme; // 只返回未完全使用的明细 |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | |
| | | if (availableItems.isEmpty()) { |
| | | throw new CoolException("组拖明细已全部使用,无法再次创建任务"); |
| | | } |
| | | |
| | | return availableItems; |
| | | } |
| | | |
| | | /** |
| | |
| | | if (!taskItemService.saveBatch(taskItems)) { |
| | | throw new CoolException("任务明细保存失败!!"); |
| | | } |
| | | |
| | | // 更新组托明细的执行数量,标记明细已被提取使用 |
| | | waitPakinItems.forEach(item -> { |
| | | if (!waitPakinItemService.update(new LambdaUpdateWrapper<WaitPakinItem>() |
| | | .set(WaitPakinItem::getWorkQty, item.getAnfme()) |
| | | .eq(WaitPakinItem::getId, item.getId()))) { |
| | | throw new CoolException("组托明细执行数量修改失败!!"); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | log.info("========== 接收RCS回调 =========="); |
| | | log.info("任务编号:{},事件类型:{}", params.getSeqNum(), params.getEventType()); |
| | | Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, params.getSeqNum())); |
| | | log.info("任务编号:{},批次号:{},事件类型:{}", params.getSeqNum(), params.getBatchNo(), params.getEventType()); |
| | | |
| | | // 优先使用批次号查询任务主表(批次号 = 任务编码,更可靠) |
| | | String taskCode = params.getBatchNo(); |
| | | String taskNo = params.getSeqNum(); |
| | | String locCode = null; // 库位代码(多库位任务时从任务号中提取) |
| | | |
| | | // 如果批次号为空,使用任务号查询 |
| | | if (StringUtils.isBlank(taskCode)) { |
| | | taskCode = taskNo; |
| | | } |
| | | |
| | | // 处理出库任务多库位的情况:任务号格式可能是 "任务编码_库位代码" |
| | | // 如果任务号包含下划线,提取库位代码 |
| | | if (StringUtils.isNotBlank(taskNo) && taskNo.contains("_")) { |
| | | locCode = taskNo.substring(taskNo.lastIndexOf("_") + 1); |
| | | // 如果批次号为空,从任务号中提取原始任务编码 |
| | | if (StringUtils.isBlank(taskCode)) { |
| | | taskCode = taskNo.substring(0, taskNo.lastIndexOf("_")); |
| | | } |
| | | log.info("检测到多库位任务,提取库位代码:{},原始任务编码:{}", locCode, taskCode); |
| | | } |
| | | |
| | | // 使用批次号(任务编码)查询任务主表 |
| | | Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, taskCode)); |
| | | |
| | | if (Objects.isNull(task)) { |
| | | log.error("任务不存在或已结束!任务编号:{}", params.getSeqNum()); |
| | | throw new CoolException("任务不存在或已结束!!"); |
| | | log.error("任务不存在或已结束!任务编号:{},批次号:{}", taskNo, taskCode); |
| | | throw new CoolException("任务不存在或已结束!!任务编号:" + taskNo + ",批次号:" + taskCode); |
| | | } |
| | | |
| | | // 验证批次号和任务号的关联关系 |
| | | if (StringUtils.isNotBlank(params.getBatchNo()) && !params.getBatchNo().equals(task.getTaskCode())) { |
| | | log.warn("批次号与任务编码不匹配!批次号:{},任务编码:{}", params.getBatchNo(), task.getTaskCode()); |
| | | } |
| | | log.info("查询到任务 - 任务编码:{},任务类型:{},当前状态:{}", |
| | | task.getTaskCode(), task.getTaskType(), task.getTaskStatus()); |
| | | |
| | | // 对于多库位出库任务,通过库位代码精确关联任务明细 |
| | | List<TaskItem> relatedTaskItems = null; |
| | | if (StringUtils.isNotBlank(locCode)) { |
| | | // 1. 通过库位代码查询LocItem |
| | | LocItem locItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocCode, locCode)); |
| | | if (Objects.isNull(locItem)) { |
| | | log.warn("未找到库位明细!库位代码:{},任务编码:{}", locCode, task.getTaskCode()); |
| | | } else { |
| | | // 2. 通过任务ID和LocItem.id(即TaskItem.source)查询对应的任务明细 |
| | | relatedTaskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>() |
| | | .eq(TaskItem::getTaskId, task.getId()) |
| | | .eq(TaskItem::getSource, locItem.getId())); |
| | | if (relatedTaskItems.isEmpty()) { |
| | | log.warn("未找到对应的任务明细!任务编码:{},库位代码:{},LocItem.id:{}", |
| | | task.getTaskCode(), locCode, locItem.getId()); |
| | | } else { |
| | | log.info("通过库位代码精确关联到任务明细 - 任务编码:{},库位代码:{},任务明细数量:{}", |
| | | task.getTaskCode(), locCode, relatedTaskItems.size()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 验证任务状态:只有已下发到RCS的任务才能被回调处理 |
| | | // 入库任务:状态 >= WCS_EXECUTE_IN(2) 表示已下发 |
| | | // 出库任务:状态 >= WCS_EXECUTE_OUT(102) 表示已下发 |
| | | boolean isValidStatus = false; |
| | | if (task.getTaskType() < 100) { |
| | | // 入库任务 |
| | | if (task.getTaskStatus() >= TaskStsType.WCS_EXECUTE_IN.id) { |
| | | isValidStatus = true; |
| | | } |
| | | } else { |
| | | // 出库任务 |
| | | if (task.getTaskStatus() >= TaskStsType.WCS_EXECUTE_OUT.id) { |
| | | isValidStatus = true; |
| | | } |
| | | } |
| | | |
| | | if (!isValidStatus) { |
| | | log.error("任务状态不正确,无法处理回调!任务编码:{},任务类型:{},当前状态:{},期望状态:已下发到RCS", |
| | | task.getTaskCode(), task.getTaskType(), task.getTaskStatus()); |
| | | throw new CoolException("任务状态不正确,无法处理回调!任务编码:" + task.getTaskCode() + |
| | | ",当前状态:" + task.getTaskStatus() + ",任务可能未下发到RCS或已被处理"); |
| | | } |
| | | |
| | | /**料箱搬运中, 修改站点状态*/ |
| | | // if (params.getEventType().equals(CallBackEvent.CALL_BACK_EVENT_OBIT.event)) { |
| | |
| | | throw new CoolException("任务状态修改失败!!当前任务状态:" + task.getTaskStatus() + ",目标状态:" + TaskStsType.COMPLETE_OUT.id); |
| | | } |
| | | log.info("出库任务状态更新成功 - 任务编码:{}", task.getTaskCode()); |
| | | |
| | | // 全版出库在RCS回调后直接处理并设置为200 |
| | | if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) { |
| | | log.info("全版出库任务,开始处理库存并更新状态为200 - 任务编码:{}", task.getTaskCode()); |
| | | try { |
| | | // 重新查询任务以获取最新状态(198) |
| | | task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())); |
| | | |
| | | // 调用completeTask处理库存(会设置为199) |
| | | List<Task> taskList = new ArrayList<>(); |
| | | taskList.add(task); |
| | | taskService.completeTask(taskList); |
| | | |
| | | // 重新查询任务以获取最新状态(199) |
| | | task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskCode, task.getTaskCode())); |
| | | |
| | | // 如果状态已经是199,继续处理并设置为200 |
| | | if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) { |
| | | Long loginUserId = SystemAuthUtils.getLoginUserId(); |
| | | if (loginUserId == null) { |
| | | log.warn("无法获取系统用户ID,使用默认值1"); |
| | | loginUserId = 1L; |
| | | } |
| | | |
| | | // 删除作业中库存记录(LocItemWorking) |
| | | locItemWorkingService.remove(new LambdaQueryWrapper<LocItemWorking>() |
| | | .eq(LocItemWorking::getTaskId, task.getId())); |
| | | |
| | | // 更新任务状态为库存更新完成(200) |
| | | boolean finalUpdated = taskService.update(new LambdaUpdateWrapper<Task>() |
| | | .eq(Task::getTaskCode, task.getTaskCode()) |
| | | .eq(Task::getTaskStatus, TaskStsType.WAVE_SEED.id) |
| | | .set(Task::getTaskStatus, TaskStsType.UPDATED_OUT.id) |
| | | .set(Task::getUpdateBy, loginUserId) |
| | | .set(Task::getUpdateTime, new Date())); |
| | | |
| | | if (!finalUpdated) { |
| | | log.warn("全版出库任务状态更新为200失败,可能状态已变更 - 任务编码:{},当前状态:{}", |
| | | task.getTaskCode(), task.getTaskStatus()); |
| | | } else { |
| | | log.info("全版出库任务状态已更新为200(库存更新完成) - 任务编码:{}", task.getTaskCode()); |
| | | } |
| | | } else { |
| | | log.warn("全版出库任务状态不是199,无法更新为200 - 任务编码:{},当前状态:{}", |
| | | task.getTaskCode(), task.getTaskStatus()); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("全版出库任务处理失败 - 任务编码:{},错误:{}", task.getTaskCode(), e.getMessage(), e); |
| | | // 不抛出异常,避免影响RCS回调的正常返回 |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | |
| | | // 8. 创建并保存任务明细 |
| | | // 9. 更新组托状态 |
| | | InTaskMsgDto msgDto = createInTask(param); |
| | | |
| | | log.info("========== 申请入库任务成功 =========="); |
| | | log.info("任务编码:{},库位号:{}", msgDto.getWorkNo(), msgDto.getLocNo()); |
| | | //RCS已经在输送线上,所以不需要下发任务 |
| | | taskService.updateById(new Task(){{setId(msgDto.getTaskId());setTaskStatus(2);}}); |
| | | log.info("========== RCS-申请入库任务成功 =========="); |
| | | log.info("RCS-返回 任务编码:{},库位号:{}", msgDto.getWorkNo(), msgDto.getLocNo()); |
| | | |
| | | // 返回结果,只返回库位号(根据接口文档要求) |
| | | JSONObject result = new JSONObject(); |
| | | result.put("locNo", msgDto.getLocNo()); |
| | | result.put("batchNo", msgDto.getWorkNo()); |
| | | result.put("taskNo", msgDto.getWorkNo()); |
| | | return R.ok(result); |
| | | } |
| | | } |