1.回告ewm系统bug修复
2.出库匹配规则更改,若不带特殊属性优先出无属性,出完再出带属性的。改为全部精确匹配 3.出库回告ewm,若是接口返回失败需要重新执行。
This commit is contained in:
parent
5ab311931a
commit
8567c728ca
|
|
@ -425,13 +425,12 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
||||||
.eq(TAppStock::getGoodsId, task.getMatNo())
|
.eq(TAppStock::getGoodsId, task.getMatNo())
|
||||||
.gt(TAppStock::getRemainNum, 0);
|
.gt(TAppStock::getRemainNum, 0);
|
||||||
|
|
||||||
// 判断是否需要精确匹配特殊属性
|
// // 判断是否需要精确匹配特殊属性
|
||||||
boolean needExactMatch = StringUtils.isNotEmpty(task.getSpecialStock()) ||
|
// boolean needExactMatch = StringUtils.isNotEmpty(task.getSpecialStock()) ||
|
||||||
StringUtils.isNotEmpty(task.getSpecialStockNo()) ||
|
// StringUtils.isNotEmpty(task.getSpecialStockNo()) ||
|
||||||
StringUtils.isNotEmpty(task.getSpecialStockItemNo()) ||
|
// StringUtils.isNotEmpty(task.getSpecialStockItemNo()) ||
|
||||||
StringUtils.isNotEmpty(task.getBatchNo());
|
// StringUtils.isNotEmpty(task.getBatchNo());
|
||||||
|
|
||||||
if (needExactMatch) {
|
|
||||||
// 精确匹配特殊属性 - 必须匹配所有四个字段完全一样,包括空值
|
// 精确匹配特殊属性 - 必须匹配所有四个字段完全一样,包括空值
|
||||||
if (StringUtils.isNotEmpty(task.getSpecialStock())) {
|
if (StringUtils.isNotEmpty(task.getSpecialStock())) {
|
||||||
stockQueryWrapper.eq(TAppStock::getSpecialStock, task.getSpecialStock());
|
stockQueryWrapper.eq(TAppStock::getSpecialStock, task.getSpecialStock());
|
||||||
|
|
@ -464,7 +463,6 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
||||||
stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getBatchNo)
|
stockQueryWrapper.and(wrapper -> wrapper.isNull(TAppStock::getBatchNo)
|
||||||
.or().eq(TAppStock::getBatchNo, ""));
|
.or().eq(TAppStock::getBatchNo, ""));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
stockList = appStockService.list(stockQueryWrapper);
|
stockList = appStockService.list(stockQueryWrapper);
|
||||||
|
|
||||||
|
|
@ -1940,7 +1938,7 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
||||||
if (outs.getPickNum() >= outs.getNeedNum()) {
|
if (outs.getPickNum() >= outs.getNeedNum()) {
|
||||||
// 读取所有wave_no的outs_check表的数据,全部反馈给EWM
|
// 读取所有wave_no的outs_check表的数据,全部反馈给EWM
|
||||||
List<TAppOutsCheck> checkList = appOutsCheckService.list(new LambdaQueryWrapper<TAppOutsCheck>()
|
List<TAppOutsCheck> checkList = appOutsCheckService.list(new LambdaQueryWrapper<TAppOutsCheck>()
|
||||||
.eq(TAppOutsCheck::getWaveNo, outs.getWaveNo()));
|
.eq(TAppOutsCheck::getTaskNo, taskConfirm.getTaskId()));
|
||||||
|
|
||||||
// 回告EWm系统出库完成
|
// 回告EWm系统出库完成
|
||||||
SendWarehouseOutCompletedRequest request = new SendWarehouseOutCompletedRequest();
|
SendWarehouseOutCompletedRequest request = new SendWarehouseOutCompletedRequest();
|
||||||
|
|
@ -1962,10 +1960,14 @@ public class TaskControllerServiceImpl implements ITaskControllerService {
|
||||||
if (Objects.equals(ewmApiBackResponse.getState(), "successfully")) {
|
if (Objects.equals(ewmApiBackResponse.getState(), "successfully")) {
|
||||||
log.info("调用EWM系统接口成功,请求参数: {}", request);
|
log.info("调用EWM系统接口成功,请求参数: {}", request);
|
||||||
appOutsCheckService.remove(new LambdaQueryWrapper<TAppOutsCheck>()
|
appOutsCheckService.remove(new LambdaQueryWrapper<TAppOutsCheck>()
|
||||||
.eq(TAppOutsCheck::getWaveNo, outs.getWaveNo()));
|
.eq(TAppOutsCheck::getTaskNo, taskConfirm.getTaskId()));
|
||||||
}else {
|
}else {
|
||||||
log.error("调用EWM系统接口异常,请求参数: {}", request);
|
log.error("调用EWM系统接口异常,请求参数: {}", request);
|
||||||
//return BaseWmsApiResponse.error("调用EWM系统接口异常: " + ewmApiBackResponse.getMessage());
|
// 触发事务回滚
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
// 返回错误信息
|
||||||
|
return "调用EWM系统接口异常";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成记录
|
// 生成记录
|
||||||
|
|
|
||||||
|
|
@ -350,13 +350,6 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService {
|
||||||
// 不是这个料
|
// 不是这个料
|
||||||
continue;
|
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()) ||
|
if (!isStringEqual(stock.getSpecialStock(), appOuts.getSpecialStock()) ||
|
||||||
!isStringEqual(stock.getSpecialStockNo(), appOuts.getSpecialStockNo()) ||
|
!isStringEqual(stock.getSpecialStockNo(), appOuts.getSpecialStockNo()) ||
|
||||||
|
|
@ -364,29 +357,6 @@ public class OutsExecutorServiceImpl implements IOutsExecutorService {
|
||||||
!isStringEqual(stock.getBatchNo(), appOuts.getBatchNo())) {
|
!isStringEqual(stock.getBatchNo(), appOuts.getBatchNo())) {
|
||||||
continue;
|
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String stockId = stockDataService.getFirstInStock(stock.getGoodsId(), allStocks,appOuts);
|
String stockId = stockDataService.getFirstInStock(stock.getGoodsId(), allStocks,appOuts);
|
||||||
if (StringUtils.isNotEmpty(stockId) && !Objects.equals(stockId, stock.getStockId())) {
|
if (StringUtils.isNotEmpty(stockId) && !Objects.equals(stockId, stock.getStockId())) {
|
||||||
// 不是当前物料最先进的库存
|
// 不是当前物料最先进的库存
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user