package com.zy.core.utils.station.model; import lombok.Getter; import lombok.Setter; import java.util.HashMap; import java.util.Map; @Getter public class LoadGuardState { @Setter private int totalStationCount = 0; @Setter private int projectedTaskStationCount = 0; private final Map stationLoopNoMap = new HashMap<>(); public double currentLoad() { return calcLoad(this.projectedTaskStationCount, this.totalStationCount); } public double loadAfterReserve() { return calcLoad(this.projectedTaskStationCount + 1, this.totalStationCount); } public void reserveLoopTask(Integer loopNo) { if (loopNo == null || loopNo <= 0 || this.totalStationCount <= 0) { return; } this.projectedTaskStationCount++; } public void putStationLoopNo(Integer stationId, Integer loopNo) { if (stationId == null || loopNo == null) { return; } this.stationLoopNoMap.put(stationId, loopNo); } private double calcLoad(int taskCount, int stationCount) { if (stationCount <= 0 || taskCount <= 0) { return 0.0; } double load = (double) taskCount / (double) stationCount; if (load < 0.0) { return 0.0; } if (load > 1.0) { return 1.0; } return load; } }