| package com.ruoyi.inspect.service.impl; | 
|   | 
| import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; | 
| import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper; | 
| import com.ruoyi.utils.gis.GisUtil; | 
| import com.ruoyi.inspect.domain.ArdVideoInspectTaskStep; | 
| 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); | 
|     } | 
|   | 
| } |