diff --git a/src/inport/ConversionUtil.java b/src/inport/ConversionUtil.java index 8f062083b64edbdf2d72c3775161dfc0aff77154..ffbd1d2ffd0080e6a967b28b81e0fe78d13cd696 100644 --- a/src/inport/ConversionUtil.java +++ b/src/inport/ConversionUtil.java @@ -196,7 +196,7 @@ public class ConversionUtil { Function mObjToN = (MovingObject obj) -> mObjNumberById.get(obj.getId()); ArrayList operationTemplates = new ArrayList<>(task.getTemplates()); - { // Операции прибытия/отбытия в локацию. + { // Операции прибытия/отбытия в локацию. (В том числе и швартовка.) ArrayList>> arrivalOp = new ArrayList<>(); ArrayList>> departureOp = new ArrayList<>(); for (int i = 0; i < movingObjects.size(); i++) { @@ -219,9 +219,22 @@ public class ConversionUtil { movingObjN.add(mObjToN.apply(op.getMover())); for (Integer n : movingObjN) { - arrivalOp.get(n).get(getLocNById.apply(op.getDestination().getId(), false)).add(i); + arrivalOp .get(n).get(getLocNById.apply(op.getDestination().getId(), false)).add(i); departureOp.get(n).get(getLocNById.apply(op.getStartLocation().getId(), false)).add(i); } + } else if (operationTemplates.get(i) instanceof MooringTemplate) { + MooringTemplate op = (MooringTemplate)operationTemplates.get(i); + + ArrayList movingObjN = new ArrayList<>(); + for (MovingObject obj : op.getResources()) { + movingObjN.add(mObjToN.apply(obj)); + } + movingObjN.add(mObjToN.apply(op.getMoorer())); + + for (Integer n : movingObjN) { + arrivalOp .get(n).get(getLocNById.apply(op.getStartLocation().getId(), !op.isDirect())).add(i); + departureOp.get(n).get(getLocNById.apply(op.getStartLocation().getId(), op.isDirect())).add(i); + } } } write2DArray(writer, "arrival_op", arrivalOp);