Commit b05b1c45 zshaohui

1.odn出库 库存不够 提示出来 不然出库

1 个父辈 e026bb1f
...@@ -1343,7 +1343,7 @@ public class LiteOrderCache { ...@@ -1343,7 +1343,7 @@ public class LiteOrderCache {
log.info("生成工单" + orderNo + "任务结束,数量为:" + taskReelCount); log.info("生成工单" + orderNo + "任务结束,数量为:" + taskReelCount);
} }
public void odnCheckOut(String orderNo,List<StoragePos> storagePosList) { public synchronized void odnCheckOut(String orderNo,List<StoragePos> storagePosList) {
LiteOrder cacheOrder = liteOrderMap.get(orderNo); LiteOrder cacheOrder = liteOrderMap.get(orderNo);
if (cacheOrder == null) { if (cacheOrder == null) {
cacheOrder = liteOrderManager.findByOrderNo(orderNo); cacheOrder = liteOrderManager.findByOrderNo(orderNo);
...@@ -1376,6 +1376,9 @@ public class LiteOrderCache { ...@@ -1376,6 +1376,9 @@ public class LiteOrderCache {
int taskReelCount = 0; int taskReelCount = 0;
//查找所有的任务
List<DataLog> dataLogList = new ArrayList<>();
for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) { for (LiteOrderItem orderItem : cacheOrder.getOrderItems()) {
String partNumber = orderItem.getPn(); String partNumber = orderItem.getPn();
...@@ -1389,6 +1392,11 @@ public class LiteOrderCache { ...@@ -1389,6 +1392,11 @@ public class LiteOrderCache {
log.info(orderNo + "已分配数量为:"+taskNum+",剩余数量为:"+remainNum); log.info(orderNo + "已分配数量为:"+taskNum+",剩余数量为:"+remainNum);
Collection<String> excludePosIds = excludeOutPosIds(); Collection<String> excludePosIds = excludeOutPosIds();
if (dataLogList != null && !dataLogList.isEmpty()){
for (DataLog dataLog : dataLogList) {
excludePosIds.add(dataLog.getPosId());
}
}
//1.先从执行的料箱中出库 //1.先从执行的料箱中出库
StoragePos pos = null; StoragePos pos = null;
...@@ -1426,9 +1434,19 @@ public class LiteOrderCache { ...@@ -1426,9 +1434,19 @@ public class LiteOrderCache {
task.setCartonId(barcode.getCartonId()); task.setCartonId(barcode.getCartonId());
} }
task.setOdn(true); task.setOdn(true);
taskService.addTaskToExecute(task); dataLogList.add(task);
} }
} }
//如果数量不满足,则提示出来
if (taskNum < remainNum){
finishedOrderTasks(cacheOrder);
throw new ValidateException("", orderItem.getPn()+"库存不足,odn:"+cacheOrder.getOrderNo()+"无法进行出库");
}
}
for (DataLog dataLog : dataLogList) {
taskService.addTaskToExecute(dataLog);
} }
if (taskReelCount <= 0) { if (taskReelCount <= 0) {
...@@ -1437,6 +1455,8 @@ public class LiteOrderCache { ...@@ -1437,6 +1455,8 @@ public class LiteOrderCache {
throw new ValidateException("smfcore.order.out.noTask", "工单无可执行的任务"); throw new ValidateException("smfcore.order.out.noTask", "工单无可执行的任务");
} }
cacheOrder.setTaskReelCount(taskReelCount); cacheOrder.setTaskReelCount(taskReelCount);
liteOrderManager.save(cacheOrder); liteOrderManager.save(cacheOrder);
liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder); liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
......
...@@ -52,6 +52,12 @@ public class TakeOutController { ...@@ -52,6 +52,12 @@ public class TakeOutController {
@AnonymousAccess @AnonymousAccess
public ResultBean ticketOut(String ticket,boolean isHold) { public ResultBean ticketOut(String ticket,boolean isHold) {
log.info("半成品仓单据出库:" + ticket); log.info("半成品仓单据出库:" + ticket);
if (StringUtils.isNotEmpty(liteOrderCache.hasExecutingOrder())) {
//throw new ValidateException("","有正在执行的工单,不允许恢复");
return ResultBean.newErrorResult(-1, "", "有正在执行的工单"+liteOrderCache.hasExecutingOrder()+",请确认");
}
if (StringUtils.isEmpty(ticket)) { if (StringUtils.isEmpty(ticket)) {
throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"单据号"}); throw new ValidateException("smfcore.valueCanotNull", "{0}不能为空", new String[]{"单据号"});
} }
......
...@@ -113,6 +113,11 @@ public class WipStorCheckOutController { ...@@ -113,6 +113,11 @@ public class WipStorCheckOutController {
log.info("收到odn出库信息为:" + JSON.toJSONString(odnOut)); log.info("收到odn出库信息为:" + JSON.toJSONString(odnOut));
if (StringUtils.isNotEmpty(liteOrderCache.hasExecutingOrder())) {
//throw new ValidateException("","有正在执行的工单,不允许恢复");
return ResultBean.newErrorResult(-1, "", "有正在执行的工单"+liteOrderCache.hasExecutingOrder()+",请确认");
}
String odn = odnOut.getOdn(); String odn = odnOut.getOdn();
if (StringUtils.isBlank(odn)) { if (StringUtils.isBlank(odn)) {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!