1.回告ewm系统bug修复
2.出库匹配规则更改,若不带特殊属性优先出无属性,出完再出带属性的。改为全部精确匹配 3.出库回告ewm,若是接口返回失败需要重新执行。
This commit is contained in:
parent
5ab311931a
commit
8567c728ca
|
|
@ -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<TAppOutsCheck> checkList = appOutsCheckService.list(new LambdaQueryWrapper<TAppOutsCheck>()
|
||||
.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<TAppOutsCheck>()
|
||||
.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系统接口异常";
|
||||
|
||||
}
|
||||
|
||||
// 生成记录
|
||||
|
|
|
|||
|
|
@ -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())) {
|
||||
// 不是当前物料最先进的库存
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user