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 { 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); } }