| 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]; | 
|     } | 
|   | 
| } |