package com.ruoyi.inspect.service.impl; 
 | 
  
 | 
import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; 
 | 
import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper; 
 | 
import com.ruoyi.alarmpoints.well.service.IArdAlarmpointsWellService; 
 | 
import com.ruoyi.device.hiksdk.util.hikSdkUtil.GisUtil; 
 | 
import com.ruoyi.inspect.domain.ArdVideoInspectTask; 
 | 
import com.ruoyi.inspect.domain.ArdVideoInspectTaskStep; 
 | 
import com.ruoyi.inspect.service.IArdVideoInspectTaskService; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.util.Comparator; 
 | 
  
 | 
@Service 
 | 
public class ArdVideoInspectTaskStepComparator implements Comparator<ArdVideoInspectTaskStep> { 
 | 
    private ArdAlarmpointsWellMapper ardAlarmpointsWellMapper; 
 | 
    private double cameraLon; 
 | 
    private double cameraLat; 
 | 
  
 | 
    public ArdVideoInspectTaskStepComparator() { 
 | 
    } 
 | 
  
 | 
    public ArdVideoInspectTaskStepComparator(ArdAlarmpointsWellMapper ardAlarmpointsWellMapper,double cameraLon, double cameraLat) { 
 | 
        this.ardAlarmpointsWellMapper = ardAlarmpointsWellMapper; 
 | 
        this.cameraLon = cameraLon; 
 | 
        this.cameraLat = cameraLat; 
 | 
    } 
 | 
  
 | 
    public double getCameraLon() { 
 | 
        return cameraLon; 
 | 
    } 
 | 
  
 | 
    public void setCameraLon(double cameraLon) { 
 | 
        this.cameraLon = cameraLon; 
 | 
    } 
 | 
  
 | 
    public double getCameraLat() { 
 | 
        return cameraLat; 
 | 
    } 
 | 
  
 | 
    public void setCameraLat(double cameraLat) { 
 | 
        this.cameraLat = cameraLat; 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    public int compare(ArdVideoInspectTaskStep s1, ArdVideoInspectTaskStep s2) { 
 | 
        ArdAlarmpointsWell well1 = this.ardAlarmpointsWellMapper.selectArdAlarmpointsWellById(s1.getWellId()); 
 | 
        ArdAlarmpointsWell well2 = this.ardAlarmpointsWellMapper.selectArdAlarmpointsWellById(s2.getWellId()); 
 | 
        //计算s1相对角度 
 | 
        double angle1 = GisUtil.getNorthAngle(this.cameraLon, this.cameraLat, well1.getLongitude(), well1.getLatitude()) * 1000; 
 | 
        //计算s2相对角度 
 | 
        double angle2 = GisUtil.getNorthAngle(this.cameraLon, this.cameraLat, well2.getLongitude(), well2.getLatitude()) * 1000; 
 | 
        return (int) (angle1 - angle2); 
 | 
    } 
 | 
  
 | 
} 
 |