feat(udkørsel): kilder hvis læssestationer deler lager (mælketanke som udvidelser) regnes som ét stop (v1.17.3.0)
This commit is contained in:
@@ -193,6 +193,39 @@ local function buildTrip(primary, candidates, input)
|
||||
return trip
|
||||
end
|
||||
|
||||
-- Kilder hvis læssestationer trækker fra samme lagre (fx mælketanke der er udvidelser inden for hinandens
|
||||
-- storageRadius) er ét stop: læsser man ved én, tømmes de alle. Den første i rækkefølgen beholdes, de
|
||||
-- øvrige lægges ind under den. storagesOf(source) -> liste af lager-objekter (nil = ukendt, beholdes).
|
||||
-- Returnerer kept (rækkefølge bevaret) og merged {[beholdt wayPointId] = {sammenlagte wayPointIds}}.
|
||||
function ADOutboundPlanner.dedupeSharedSources(sources, storagesOf)
|
||||
local kept, merged, groups = {}, {}, {}
|
||||
for _, source in ipairs(sources or {}) do
|
||||
local storages = storagesOf(source)
|
||||
local owner = nil
|
||||
if storages ~= nil then
|
||||
for _, group in ipairs(groups) do
|
||||
for _, storage in ipairs(storages) do
|
||||
if group.storages[storage] then owner = group break end
|
||||
end
|
||||
if owner ~= nil then break end
|
||||
end
|
||||
end
|
||||
if owner ~= nil then
|
||||
for _, storage in ipairs(storages) do owner.storages[storage] = true end
|
||||
merged[owner.source.wayPointId] = merged[owner.source.wayPointId] or {}
|
||||
table.insert(merged[owner.source.wayPointId], source.wayPointId)
|
||||
else
|
||||
table.insert(kept, source)
|
||||
if storages ~= nil then
|
||||
local set = {}
|
||||
for _, storage in ipairs(storages) do set[storage] = true end
|
||||
table.insert(groups, {source = source, storages = set})
|
||||
end
|
||||
end
|
||||
end
|
||||
return kept, merged
|
||||
end
|
||||
|
||||
function ADOutboundPlanner.plan(input)
|
||||
local sell, store, reasons = collectCandidates(input)
|
||||
if sell[1] ~= nil then
|
||||
|
||||
Reference in New Issue
Block a user