diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java index 94b8dd9..669bb0c 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java +++ b/dev_wms_serve/src/main/java/com/wms_main/service/controller/serviceImpl/TaskControllerServiceImpl.java @@ -425,45 +425,43 @@ public class TaskControllerServiceImpl implements ITaskControllerService { .eq(TAppStock::getGoodsId, task.getMatNo()) .gt(TAppStock::getRemainNum, 0); - // 判断是否需要精确匹配特殊属性 - boolean needExactMatch = StringUtils.isNotEmpty(task.getSpecialStock()) || - StringUtils.isNotEmpty(task.getSpecialStockNo()) || - StringUtils.isNotEmpty(task.getSpecialStockItemNo()) || - StringUtils.isNotEmpty(task.getBatchNo()); +// // 判断是否需要精确匹配特殊属性 +// boolean needExactMatch = StringUtils.isNotEmpty(task.getSpecialStock()) || +// StringUtils.isNotEmpty(task.getSpecialStockNo()) || +// StringUtils.isNotEmpty(task.getSpecialStockItemNo()) || +// StringUtils.isNotEmpty(task.getBatchNo()); - if (needExactMatch) { - // 精确匹配特殊属性 - 必须匹配所有四个字段完全一样,包括空值 - if (StringUtils.isNotEmpty(task.getSpecialStock())) { - stockQueryWrapper.eq(TAppStock::getSpecialStock, task.getSpecialStock()); - } else { - // 当请求字段为空时,匹配数据库中的空值(NULL或空字符串) - stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getSpecialStock) - .or().eq(TAppStock::getSpecialStock, "")); - } + // 精确匹配特殊属性 - 必须匹配所有四个字段完全一样,包括空值 + if (StringUtils.isNotEmpty(task.getSpecialStock())) { + stockQueryWrapper.eq(TAppStock::getSpecialStock, task.getSpecialStock()); + } else { + // 当请求字段为空时,匹配数据库中的空值(NULL或空字符串) + stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getSpecialStock) + .or().eq(TAppStock::getSpecialStock, "")); + } - if (StringUtils.isNotEmpty(task.getSpecialStockNo())) { - stockQueryWrapper.eq(TAppStock::getSpecialStockNo, task.getSpecialStockNo()); - } else { - // 当请求字段为空时,匹配数据库中的空值(NULL或空字符串) - stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getSpecialStockNo) - .or().eq(TAppStock::getSpecialStockNo, "")); - } + if (StringUtils.isNotEmpty(task.getSpecialStockNo())) { + stockQueryWrapper.eq(TAppStock::getSpecialStockNo, task.getSpecialStockNo()); + } else { + // 当请求字段为空时,匹配数据库中的空值(NULL或空字符串) + stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getSpecialStockNo) + .or().eq(TAppStock::getSpecialStockNo, "")); + } - if (StringUtils.isNotEmpty(task.getSpecialStockItemNo())) { - stockQueryWrapper.eq(TAppStock::getSpecialStockItemNo, task.getSpecialStockItemNo()); - } else { - // 当请求字段为空时,匹配数据库中的空值(NULL或空字符串) - stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getSpecialStockItemNo) - .or().eq(TAppStock::getSpecialStockItemNo, "")); - } + if (StringUtils.isNotEmpty(task.getSpecialStockItemNo())) { + stockQueryWrapper.eq(TAppStock::getSpecialStockItemNo, task.getSpecialStockItemNo()); + } else { + // 当请求字段为空时,匹配数据库中的空值(NULL或空字符串) + stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getSpecialStockItemNo) + .or().eq(TAppStock::getSpecialStockItemNo, "")); + } - if (StringUtils.isNotEmpty(task.getBatchNo())) { - stockQueryWrapper.eq(TAppStock::getBatchNo, task.getBatchNo()); - } else { - // 当请求字段为空时,匹配数据库中的空值(NULL或空字符串) - stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getBatchNo) - .or().eq(TAppStock::getBatchNo, "")); - } + if (StringUtils.isNotEmpty(task.getBatchNo())) { + stockQueryWrapper.eq(TAppStock::getBatchNo, task.getBatchNo()); + } else { + // 当请求字段为空时,匹配数据库中的空值(NULL或空字符串) + stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getBatchNo) + .or().eq(TAppStock::getBatchNo, "")); } stockList = appStockService.list(stockQueryWrapper); @@ -1940,7 +1938,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService { if (outs.getPickNum() >= outs.getNeedNum()) { // 读取所有wave_no的outs_check表的数据,全部反馈给EWM List checkList = appOutsCheckService.list(new LambdaQueryWrapper() - .eq(TAppOutsCheck::getWaveNo, outs.getWaveNo())); + .eq(TAppOutsCheck::getTaskNo, taskConfirm.getTaskId())); // 回告EWm系统出库完成 SendWarehouseOutCompletedRequest request = new SendWarehouseOutCompletedRequest(); @@ -1962,10 +1960,14 @@ public class TaskControllerServiceImpl implements ITaskControllerService { if (Objects.equals(ewmApiBackResponse.getState(), "successfully")) { log.info("调用EWM系统接口成功,请求参数: {}", request); appOutsCheckService.remove(new LambdaQueryWrapper() - .eq(TAppOutsCheck::getWaveNo, outs.getWaveNo())); + .eq(TAppOutsCheck::getTaskNo, taskConfirm.getTaskId())); }else { log.error("调用EWM系统接口异常,请求参数: {}", request); - //return BaseWmsApiResponse.error("调用EWM系统接口异常: " + ewmApiBackResponse.getMessage()); + // 触发事务回滚 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + // 返回错误信息 + return "调用EWM系统接口异常"; + } // 生成记录 diff --git a/dev_wms_serve/src/main/java/com/wms_main/service/quartz_job/serviceImpl/OutsExecutorServiceImpl.java b/dev_wms_serve/src/main/java/com/wms_main/service/quartz_job/serviceImpl/OutsExecutorServiceImpl.java index 2c090ac..b759d96 100644 --- a/dev_wms_serve/src/main/java/com/wms_main/service/quartz_job/serviceImpl/OutsExecutorServiceImpl.java +++ b/dev_wms_serve/src/main/java/com/wms_main/service/quartz_job/serviceImpl/OutsExecutorServiceImpl.java @@ -350,43 +350,13 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService { // 不是这个料 continue; } - // 判断是否需要精确匹配特殊属性 - boolean needExactMatch = StringUtils.isNotEmpty(appOuts.getSpecialStock()) || - StringUtils.isNotEmpty(appOuts.getSpecialStockNo()) || - StringUtils.isNotEmpty(appOuts.getSpecialStockItemNo()) || - StringUtils.isNotEmpty(appOuts.getBatchNo()); - - if(needExactMatch){ - // 出库单指定了特殊属性,只匹配完全相同的库存 - if (!isStringEqual(stock.getSpecialStock(), appOuts.getSpecialStock()) || - !isStringEqual(stock.getSpecialStockNo(), appOuts.getSpecialStockNo()) || - !isStringEqual(stock.getSpecialStockItemNo(), appOuts.getSpecialStockItemNo()) || - !isStringEqual(stock.getBatchNo(), appOuts.getBatchNo())) { - continue; - } - }else { - // 出库单未指定特殊属性,优先使用无属性库存 - boolean stockHasAttributes = StringUtils.isNotEmpty(stock.getSpecialStock()) || - StringUtils.isNotEmpty(stock.getSpecialStockNo()) || - StringUtils.isNotEmpty(stock.getSpecialStockItemNo()) || - StringUtils.isNotEmpty(stock.getBatchNo()); - - // 检查是否还有无属性库存可用 - boolean hasNoAttributeStock = allStocks.stream() - .anyMatch(s -> Objects.equals(s.getGoodsId(), appOuts.getGoodsId()) && - !StringUtils.isNotEmpty(s.getSpecialStock()) && - !StringUtils.isNotEmpty(s.getSpecialStockNo()) && - !StringUtils.isNotEmpty(s.getSpecialStockItemNo()) && - !StringUtils.isNotEmpty(s.getBatchNo()) && - s.getRemainNum() > 0 && - s.getStockStatus() <= WmsStockStatusEnums.OUTED.getCode()); - - // 如果还有无属性库存,但当前库存是有属性的,则跳过 - if (hasNoAttributeStock && stockHasAttributes) { - continue; - } + // 出库单指定了特殊属性,只匹配完全相同的库存 + if (!isStringEqual(stock.getSpecialStock(), appOuts.getSpecialStock()) || + !isStringEqual(stock.getSpecialStockNo(), appOuts.getSpecialStockNo()) || + !isStringEqual(stock.getSpecialStockItemNo(), appOuts.getSpecialStockItemNo()) || + !isStringEqual(stock.getBatchNo(), appOuts.getBatchNo())) { + continue; } - String stockId = stockDataService.getFirstInStock(stock.getGoodsId(), allStocks,appOuts); if (StringUtils.isNotEmpty(stockId) && !Objects.equals(stockId, stock.getStockId())) { // 不是当前物料最先进的库存