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