package com.zy.asrs.utils;
|
|
import com.zy.core.cache.RgvStatusCache;
|
import com.zy.core.model.RgvSlave;
|
import com.zy.core.model.protocol.RgvProtocol;
|
|
/**
|
* Created by Monkey D. Luffy on 2023/7/18
|
*/
|
public class TrackRangeUtils {
|
|
public boolean IsItSmall(RgvSlave slave) {
|
RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
|
RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
|
if (rgvProtocol.getRgvPos() < rgvProtocolOther.getRgvPos()) {
|
return true;
|
}
|
return false;
|
}
|
|
public Long[][] avoidRange(RgvSlave slave, Long trackEntireLength, Long trackBenchmark, Long avoidDistance) {
|
RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
|
RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
|
|
RgvProtocol rgvProtocolE, rgvProtocolB;
|
if (IsItSmall(slave)) {
|
rgvProtocolE = rgvProtocolOther;
|
rgvProtocolB = rgvProtocol;
|
} else {
|
rgvProtocolE = rgvProtocol;
|
rgvProtocolB = rgvProtocolOther;
|
}
|
|
long entireLengthE = trackEntireLength - rgvProtocolE.getCarBodyKunPeng();
|
long benchmarkE = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing() + rgvProtocolB.getCarBodyKunPeng() + avoidDistance + rgvProtocolE.getCarBodyJiaoMing();
|
|
long entireLengthB = trackEntireLength - rgvProtocolE.getCarBodyKunPeng() - rgvProtocolE.getCarBodyJiaoMing() - avoidDistance - rgvProtocolB.getCarBodyKunPeng();
|
long benchmarkB = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing();
|
|
|
return new Long[][]{new Long[]{entireLengthE, benchmarkE}, new Long[]{entireLengthB, benchmarkB}};
|
|
}
|
|
public Long[][] avoidRangeArr(RgvSlave slave, Long trackEntireLength, Long trackBenchmark, Long avoidDistance) {
|
RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
|
RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
|
|
RgvProtocol rgvProtocolE, rgvProtocolB;
|
if (IsItSmall(slave)) {
|
rgvProtocolE = rgvProtocolOther;
|
rgvProtocolB = rgvProtocol;
|
|
long entireLength = rgvProtocolE.getRgvPosDestination() - rgvProtocolE.getCarBodyJiaoMing() - avoidDistance - rgvProtocolB.getCarBodyKunPeng();
|
long benchmark = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing();
|
|
long entireLengthOther = trackEntireLength - rgvProtocolE.getCarBodyKunPeng();
|
long benchmarkOther = rgvProtocolB.getRgvPosDestination() + rgvProtocolB.getCarBodyKunPeng() + avoidDistance + rgvProtocolE.getCarBodyJiaoMing();
|
|
return new Long[][]{new Long[]{entireLength, benchmark}, new Long[]{entireLengthOther, benchmarkOther}};
|
|
} else {
|
rgvProtocolE = rgvProtocol;
|
rgvProtocolB = rgvProtocolOther;
|
|
long entireLength = trackEntireLength - rgvProtocolE.getCarBodyKunPeng();
|
long benchmark = rgvProtocolB.getRgvPosDestination() + rgvProtocolB.getCarBodyKunPeng() + avoidDistance + rgvProtocolE.getCarBodyJiaoMing();
|
|
long entireLengthOther = rgvProtocolE.getRgvPosDestination() - rgvProtocolE.getCarBodyJiaoMing() - avoidDistance - rgvProtocolB.getCarBodyKunPeng();
|
long benchmarkOther = trackBenchmark + rgvProtocolB.getCarBodyJiaoMing();
|
|
return new Long[][]{new Long[]{entireLength, benchmark}, new Long[]{entireLengthOther, benchmarkOther}};
|
}
|
|
}
|
|
public boolean avoidRange(Long avoid, Long[] range) {
|
return avoid < range[0] && avoid > range[1];
|
}
|
|
}
|