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<Integer, Integer> 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;
|
}
|
}
|