Commit 6d484cf5 authored by Vladislav Kiselev's avatar Vladislav Kiselev

Исправлена ошибка с направлением грузопотока при погрузке бункеровщика.

parent f75c0cc0
...@@ -13,6 +13,7 @@ import java.io.IOException; ...@@ -13,6 +13,7 @@ import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.*; import java.util.*;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
...@@ -617,38 +618,47 @@ public class TaskCase { ...@@ -617,38 +618,47 @@ public class TaskCase {
mt.setId(Integer.parseInt(tokens[0].trim())); mt.setId(Integer.parseInt(tokens[0].trim()));
mt.setTimeWindow(tokens[2].trim()); mt.setTimeWindow(tokens[2].trim());
int direction = 1; BiFunction<Integer, Integer, Integer> extractDirection = (Integer key, Integer loaderDirection) -> {
BiFunction<Integer, Integer, Integer> addLoaderOrStorage = (Integer key, Integer loaderDirection) -> {
int dir = 1; int dir = 1;
if ((vesselTypes.containsKey(key)) || (m_vessel.containsKey(key))) {
dir = loaderDirection;
} else
if (m_storage.containsKey(key)) {
dir = -loaderDirection;
} else
if ((m_bunker.containsKey(key)) || (bunkerTypes.containsKey(key))) {
if (mt.getStorage() != null) {
dir = loaderDirection;
} else {
dir = -loaderDirection;
}
}
return dir;
};
Consumer<Integer> addLoaderOrStorage = (Integer key) -> {
if (vesselTypes.containsKey(key)) { if (vesselTypes.containsKey(key)) {
mt.setLoaderType(OptionalInt.of(key)); mt.setLoaderType(OptionalInt.of(key));
dir = loaderDirection;
} else } else
if (m_vessel.containsKey(key)) { if (m_vessel.containsKey(key)) {
mt.setLoader((TransportShip)m_vessel.get(key)); mt.setLoader((TransportShip)m_vessel.get(key));
dir = loaderDirection;
} else } else
if (m_storage.containsKey(key)) { if (m_storage.containsKey(key)) {
mt.setStorage(m_storage.get(key)); mt.setStorage(m_storage.get(key));
dir = -loaderDirection;
} else } else
if (m_bunker.containsKey(key)) { if (m_bunker.containsKey(key)) {
mt.setBunker(Optional.of(m_bunker.get(key))); mt.setBunker(Optional.of(m_bunker.get(key)));
dir = -loaderDirection; } else if (bunkerTypes.containsKey(key)) {
} else
if (bunkerTypes.containsKey(key)) {
mt.setBunkerType(OptionalInt.of(key)); mt.setBunkerType(OptionalInt.of(key));
dir = -loaderDirection;
} }
return dir;
}; };
int key; int key;
// Источник. // Источник.
key = Integer.parseInt(tokens[3].trim()); key = Integer.parseInt(tokens[3].trim());
direction = addLoaderOrStorage.apply(key, -1); addLoaderOrStorage.accept(key);
// Груз. // Груз.
key = Integer.parseInt(tokens[4].trim());; key = Integer.parseInt(tokens[4].trim());;
for (Cargo cargo : cargoes) { for (Cargo cargo : cargoes) {
...@@ -658,7 +668,10 @@ public class TaskCase { ...@@ -658,7 +668,10 @@ public class TaskCase {
} }
// Приемник. // Приемник.
key = Integer.parseInt(tokens[5].trim()); key = Integer.parseInt(tokens[5].trim());
direction = addLoaderOrStorage.apply(key, 1); addLoaderOrStorage.accept(key);
int direction = extractDirection.apply(key, 1);
key = Integer.parseInt(tokens[6].trim()); key = Integer.parseInt(tokens[6].trim());
mt.setStartLocation(m_berth.get(key)); mt.setStartLocation(m_berth.get(key));
String[] rs = tokens[7].trim().replace("[", "").replace("]", "").split(","); String[] rs = tokens[7].trim().replace("[", "").replace("]", "").split(",");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment