Commit 4428addc LN

优先分配对向的出库任务

1 个父辈 4dd19615
...@@ -337,14 +337,14 @@ public class TaskService { ...@@ -337,14 +337,14 @@ public class TaskService {
} }
return false; return false;
} }
/**
* 为 box 分配出库任务
*/
private DataLog findCheckoutBoxTask(Storage storage) { private DataLog findCheckoutBoxTask(Storage storage) {
String cid = storage.getCid(); String cid = storage.getCid();
int checkoutSize = 0; int checkoutSize = 0;
Collection<DataLog> allTasks = taskMap.values(); Collection<DataLog> allTasks = taskMap.values();
//当前出库任务的posName
String currPosName = "";
for (DataLog task : allTasks) { for (DataLog task : allTasks) {
if (!task.isCheckOutTask()) { if (!task.isCheckOutTask()) {
continue; continue;
...@@ -355,9 +355,11 @@ public class TaskService { ...@@ -355,9 +355,11 @@ public class TaskService {
log.error("cid[" + cid + "]已有入库任务,不可再分配出库任务"); log.error("cid[" + cid + "]已有入库任务,不可再分配出库任务");
return null; return null;
} else if (task.needReSendToClient() && task.isCheckOutTask()) {//超过30秒仍未完成的出库再次发送到客户端 } else if (task.needReSendToClient() && task.isCheckOutTask()) {//超过30秒仍未完成的出库再次发送到客户端
log.error("cid[" + cid + "]的出库任务[" + task.getPosName() + "]超过60秒仍未完成,重新发送到客户端!"); log.error("cid[" + cid + "]的出库任务[" + task.getPosName() + "]" + task.getBarcode() + "超过60秒仍未完成,重新发送到客户端!");
task.setUpdateDate(new Date()); task.setUpdateDate(new Date());
return task; return task;
} else if (task.isCheckOutTask()) {
currPosName = task.getPosName();
} }
//只能同时有两个正在执行的出库任务,如果超过两个不再分配了 //只能同时有两个正在执行的出库任务,如果超过两个不再分配了
...@@ -370,6 +372,52 @@ public class TaskService { ...@@ -370,6 +372,52 @@ public class TaskService {
} }
} }
} }
String currPosType = "";
try {
//先查找对面的
//04AA02130411
//04BB08070210
if (ObjectUtil.isNotEmpty(currPosName)) {
if (currPosName.contains("AA")) {
currPosType = "AA";
} else if (currPosName.contains("BB")) {
currPosType = "BB";
}
}
if(ObjectUtil.isNotEmpty(currPosType)) {
DataLog singleOutTask = null;
DataLog outTask = null;
for (DataLog task : allTasks) {//优先分配单盘任务和没有工单的任务
if (cid.equals(task.getCid()) && task.isCheckOutTask() && task.isWait()) {
String posName = task.getPosName();
if (!Strings.isNullOrEmpty(posName) && (!posName.contains(currPosType))) {//有库位号
if (task.isSingleOut()) {
//单盘优先出库
if (singleOutTask == null || task.getCreateDate().before(singleOutTask.getCreateDate())) {
singleOutTask = task;
}
} else {
if (outTask == null || task.getCreateDate().before(outTask.getCreateDate())) {
outTask = task;
}
}
}
}
}
if (singleOutTask != null) {
log.info("当前出库库位号:" + currPosName + ",type=" + currPosType + "分配优先(单盘或无工单)的对向出库任务" + singleOutTask.getBarcode() + "[" + singleOutTask.getPosName() + "]到 " + cid);
return singleOutTask;
}
if (outTask != null) {
log.info("当前出库库位号:" + currPosName + ",type=" + currPosType + "分配对向出库任务" + outTask.getBarcode() + "[" + outTask.getPosName() + "]到 " + cid);
return outTask;
}
}
} catch (Exception exception) {
log.error("findCheckoutBoxTask 当前出库库位号:" + currPosName + ",type=" + currPosType + ",查找对向库位时出错:" + exception.toString());
}
//指定紧急单盘出库的优先出库,否则按批量出库处理 //指定紧急单盘出库的优先出库,否则按批量出库处理
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!