feat(flows): flow-vogne — flowets vogn huskes pr. traktor, solo-traktor henter sin vogn ved start (venter hvis den er lånt ud), stop/slet/bygning væk sætter vognen på plads og kører traktoren hjem; stoppede flows er ledige i maskinpuljen (v1.51.0.0)
This commit is contained in:
@@ -90,6 +90,7 @@ function ADRunsController.deleteRun(runId, adEnv)
|
||||
for _, vehicleId in ipairs(run.vehicleIds) do
|
||||
ADRunsController.stopIfRunning(ADRunsController.findVehicleById(adEnv, vehicleId), "run slettet")
|
||||
end
|
||||
if ADFlowWagons ~= nil then pcall(ADFlowWagons.sendHome, adEnv, run) end
|
||||
end
|
||||
ADRunsController.store = ADRuns.deleteRun(ADRunsController.store, runId)
|
||||
end
|
||||
@@ -1074,6 +1075,12 @@ end
|
||||
-- og logges med årsag (samme nøgle som fanen viser).
|
||||
-- Start én traktor i et run: valider, anvend run'et og start AutoDrive. Returnerer resultat-posten.
|
||||
function ADRunsController.startVehicle(adEnv, run, vehicle)
|
||||
-- solo-traktor med en husket vogn: hent den først (valideringen ville afvise en traktor uden vogn)
|
||||
if ADFlowWagons ~= nil then
|
||||
local okWagon, handled, wagonResult = pcall(ADFlowWagons.beforeStart, adEnv, run, vehicle)
|
||||
if okWagon and handled then return wagonResult end
|
||||
if not okWagon then Logging.warning(ADRunsController.LOG_PREFIX .. "flow-vogn: %s", tostring(handled)) end
|
||||
end
|
||||
local validation = ADRunsController.validateVehicle(adEnv, run, vehicle)
|
||||
local result = {vehicle = vehicle, ok = validation.ok, reason = validation.reason, missingBuilding = validation.missingBuilding}
|
||||
if not validation.ok then
|
||||
@@ -1101,6 +1108,7 @@ function ADRunsController.startRun(adEnv, runId)
|
||||
if run == nil then
|
||||
return results
|
||||
end
|
||||
run.stopped = false
|
||||
local vehiclesById = getFarmVehiclesById(adEnv)
|
||||
for _, vehicleId in ipairs(run.vehicleIds) do
|
||||
local vehicle = vehiclesById[vehicleId]
|
||||
@@ -1132,11 +1140,13 @@ function ADRunsController.queueStartAll(adEnv)
|
||||
if ADRunsController.getRunStatus(adEnv, run).isRunning then
|
||||
summary.alreadyRunning = summary.alreadyRunning + 1
|
||||
else
|
||||
run.stopped = false
|
||||
for _, vehicleId in ipairs(run.vehicleIds) do
|
||||
local vehicle = vehiclesById[vehicleId]
|
||||
if vehicle ~= nil then
|
||||
local validation = ADRunsController.validateVehicle(adEnv, run, vehicle)
|
||||
if validation.ok then
|
||||
-- solo-traktor med husket vogn: henter den ved start (valideringen ser den uden vogn)
|
||||
if validation.ok or (ADFlowWagons ~= nil and ADFlowWagons.hasWagonFor(run, vehicleId)) then
|
||||
table.insert(queue, {runId = run.id, vehicleId = vehicleId})
|
||||
else
|
||||
table.insert(summary.skipped, {vehicle = vehicle, ok = false, reason = validation.reason, missingBuilding = validation.missingBuilding})
|
||||
@@ -1175,6 +1185,7 @@ function ADRunsController.stopAllAndPark(adEnv)
|
||||
end
|
||||
end
|
||||
ADRunsController.runningRuns[run.id] = nil
|
||||
run.stopped = true
|
||||
end
|
||||
if ADFieldWork ~= nil and ADFieldWork.stopAllAssignments ~= nil then
|
||||
for _, stopped in ipairs(ADFieldWork.stopAllAssignments(adEnv) or {}) do
|
||||
@@ -1192,8 +1203,13 @@ function ADRunsController.stopAllAndPark(adEnv)
|
||||
if ADFieldSilos ~= nil and ADFieldSilos.stopAll ~= nil then pcall(ADFieldSilos.stopAll, adEnv) end
|
||||
if ADFieldJobs ~= nil and ADFieldJobs.setPaused ~= nil then ADFieldJobs.setPaused(true) end
|
||||
for _, vehicle in ipairs(toPark) do
|
||||
local park = ADFieldWork ~= nil and ADFieldWork.parkMarkerId ~= nil and ADFieldWork.parkMarkerId(adEnv, vehicle) or nil
|
||||
if park ~= nil then
|
||||
-- flow-vogn/puljeredskab bag traktoren: sæt det af på sin plads og kør hjem
|
||||
local okHome, pooled = false, false
|
||||
if ADHitch ~= nil then okHome, pooled = pcall(ADHitch.returnHome, adEnv, vehicle) end
|
||||
local park = not (okHome and pooled) and ADFieldWork ~= nil and ADFieldWork.parkMarkerId ~= nil and ADFieldWork.parkMarkerId(adEnv, vehicle) or nil
|
||||
if okHome and pooled then
|
||||
summary.parked = summary.parked + 1
|
||||
elseif park ~= nil then
|
||||
local ok = pcall(ADFieldWork.startAd, adEnv, vehicle, adEnv.AutoDrive.MODE_DRIVETO, park, nil)
|
||||
if ok then summary.parked = summary.parked + 1 end
|
||||
else
|
||||
@@ -1246,6 +1262,12 @@ function ADRunsController.stopRun(adEnv, runId)
|
||||
end
|
||||
end
|
||||
ADRunsController.runningRuns[runId] = nil
|
||||
-- stoppet flow: vognene på plads og traktorerne hjem (ledige i maskinpuljen, vognene er stadig flowets)
|
||||
run.stopped = true
|
||||
if ADFlowWagons ~= nil then
|
||||
local okHome, err = pcall(ADFlowWagons.sendHome, adEnv, run)
|
||||
if not okHome then Logging.warning(ADRunsController.LOG_PREFIX .. "flow-vogne hjem: %s", tostring(err)) end
|
||||
end
|
||||
return stopped
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user