Commit decac0ea zshaohui

亮灯指引逻辑修改

1 个父辈 d71ed583
......@@ -60,6 +60,7 @@ import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* Created by sunke on 2021/7/12.
......@@ -978,129 +979,48 @@ public class BaseDeviceHandler implements IDeviceHandler {
return statusBean;
}
protected List<DataLog> getLightGuideTask(Map<String,List<DataLog>> outMap,String cid) {
List<DataLog> dataLogs = Lists.newArrayList();
protected List<DataLog> getLightGuideTask(Map<String, List<DataLog>> outMap, String cid) {
List<DataLog> dataLogs = new ArrayList<>();
if (outMap.size() <= 0) {
return dataLogs;
}
//先查找正在执行中的发过去
for (String sourceId : outMap.keySet()) {
//1.获取当前工单,所有的任务
List<DataLog> dataLogList = new ArrayList<>();
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog dataLog : allTasks) {
if (dataLog.isWait() || dataLog.isExecuting()){
if (sourceId.equals(dataLog.getSourceId())){
dataLogList.add(dataLog);
}
}
}
//2.判断有没有正在执行的任务
boolean hasExecuting = false;
for (DataLog dataLog : dataLogList) {
if (dataLog.isExecuting()){
hasExecuting = true;
if (cid.equals(dataLog.getCid())){
dataLogs.add(dataLog);
}
}
}
//3.判断工单是否存在
if (!hasExecuting) {
LiteOrder order = liteOrderCache.getOrderSortItems(sourceId);
if (order == null) {
log.error("ACCSHELF: sourceId=" + sourceId + "的工单号未找到");
continue;
}
//3.获取到站位信息对应的任务
DataLog needSendLog = null;
for (LiteOrderItem orderItem : order.getOrderItems()) {
for (DataLog dataLog : dataLogList) {
if (orderItem.getId().equals(dataLog.getSubSourceId())) {
needSendLog = dataLog;
break;
}
}
if (needSendLog != null) {
break;
}
}
//4.处理任务
if (needSendLog != null) {
if (cid.equals(needSendLog.getCid())) {
if (needSendLog.isWait()) {
needSendLog.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(needSendLog);
dataLogs.add(needSendLog);
log.info("ACCSHELF: sourceId=" + sourceId + "的工单[" + order.getOrderNo() + "]开始执行任务:[" + needSendLog.getPosName() + "][" + needSendLog.getPartNumber() + "][" + needSendLog.getBarcode() + "]");
}
}
String subSourceId = needSendLog.getSubSourceId();
if (StringUtils.isNotEmpty(subSourceId)) {
for (DataLog dataLog : taskService.getAllTasks()) {
if (dataLog.isWait() && cid.equals(dataLog.getCid()) && subSourceId.equals(dataLog.getSubSourceId())) {
if (!needSendLog.getBarcode().equals(dataLog.getBarcode())) {
dataLog.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(dataLog);
dataLogs.add(dataLog);
log.info("ACCSHELF: sourceId=" + sourceId + "的工单[" + order.getOrderNo() + "]开始执行任务:[" + dataLog.getPosName() + "][" + dataLog.getPartNumber() + "][" + dataLog.getBarcode() + "]");
}
}
}
}
//找到所有任务
List<DataLog> needLightTask = new ArrayList<>();
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog dataLog : allTasks) {
if (dataLog.isCheckOutTask() && (dataLog.isWait() || dataLog.isExecuting())) {
if (StringUtils.isNotEmpty(dataLog.getSubSourceId())) {
needLightTask.add(dataLog);
}
}
}
/*List<DataLog> dataLogList = outMap.get(sourceId);
boolean isFind = false;
for (DataLog dataLog : dataLogList) {
if (dataLog.getStatus().equals(OP_STATUS.EXECUTING.name())) {
dataLogs.add(dataLog);
isFind = true;
//按创建时间最早的进行排序
if (needLightTask != null && !needLightTask.isEmpty()) {
needLightTask = needLightTask.stream().sorted(Comparator.comparing(DataLog :: getCreateDate)).collect(Collectors.toList());
//获取到工单ID
String itemId = "";
for (DataLog dataLog : needLightTask) {
if (StringUtils.isNotEmpty(dataLog.getSubSourceId())){
itemId = dataLog.getSubSourceId();
break;
}
}
if (isFind) {
break;
}
//排序
LiteOrder order = liteOrderCache.getOrderSortItems(sourceId);
if (order == null) {
log.error("ACCSHELF: sourceId=" + sourceId + "的工单号未找到");
break;
}
for (LiteOrderItem item : order.getOrderItems()) {
for (DataLog dataLog : dataLogList) {
if (dataLog.getStatus().equals(OP_STATUS.WAIT.name())) {
if ((ObjectUtil.isNotEmpty(item.getPn()) && item.getPn().equals(dataLog.getPartNumber())) ||
(ObjectUtil.isNotEmpty(item.getRi()) && item.getRi().equals(dataLog.getBarcode()))
) {
//开始发送亮灯指令
if (StringUtils.isNotEmpty(itemId)){
for (DataLog dataLog : needLightTask) {
if (itemId.equals(dataLog.getSubSourceId())){
if (cid.equals(dataLog.getCid()) && dataLog.isWait()){
dataLog.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(dataLog);
dataLogs.add(dataLog);
log.info("ACCSHELF: sourceId=" + dataLog.getSourceId() + "的工单[" + dataLog.getSourceName() + "]开始执行任务:[" + dataLog.getPosName() + "][" + dataLog.getPartNumber() + "][" + dataLog.getBarcode() + "]");
}
taskService.updateQueueTask(dataLog);
log.info("ACCSHELF: sourceId=" + sourceId + "的工单[" + order.getOrderNo() + "]开始执行任务:[" + dataLog.getPosName() + "][" + dataLog.getPartNumber() + "][" + dataLog.getBarcode() + "]");
dataLogs.add(dataLog);
isFind = true;
break;
}
}
if (isFind) {
break;
}
}*/
}
}
return dataLogs;
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!