parent
ad134f2b7d
commit
67dddb4769
@ -0,0 +1,69 @@
|
|||||||
|
package com.ssf.mysqloracletest.task;
|
||||||
|
|
||||||
|
import com.ssf.mysqloracletest.domain.DevopsVideoInfo0;
|
||||||
|
import com.ssf.mysqloracletest.service.DevopsVideoInfoService0;
|
||||||
|
import com.ssf.mysqloracletest.utils.ConfigParam;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class DevopsVideoInfoTask {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(DevopsVideoInfoTask.class);
|
||||||
|
private final DevopsVideoInfoService0 videoInfoService0;
|
||||||
|
|
||||||
|
|
||||||
|
//偏移量
|
||||||
|
Double offset = 0.0001;
|
||||||
|
//查找用偏移量
|
||||||
|
Double offset1 = 0.00005;
|
||||||
|
|
||||||
|
//视频设备经纬度偏移
|
||||||
|
@Scheduled(initialDelay = 100, fixedDelay = 3000)
|
||||||
|
public void videoPosition(){
|
||||||
|
|
||||||
|
if (!"true".equals(ConfigParam.videoPositionSwitch)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//找出经纬度正常的设备
|
||||||
|
List<DevopsVideoInfo0> list = videoInfoService0.lambdaQuery()
|
||||||
|
.ne(DevopsVideoInfo0::getLongitude,0.000000)
|
||||||
|
.ne(DevopsVideoInfo0::getLatitude,0.000000)
|
||||||
|
.list();
|
||||||
|
for (DevopsVideoInfo0 devopsVideoInfo0 : list){
|
||||||
|
Double latitude = devopsVideoInfo0.getLatitude();
|
||||||
|
Double longitude = devopsVideoInfo0.getLongitude();
|
||||||
|
//根据一个设备的经纬度,找出该设备偏移范围内的所有设备
|
||||||
|
List<DevopsVideoInfo0> videoInfo0List = videoInfoService0.lambdaQuery()
|
||||||
|
// .ne(DevopsVideoInfo0::getGbsChannelNo,devopsVideoInfo0.getGbsChannelNo())
|
||||||
|
.between(DevopsVideoInfo0::getLatitude, latitude - offset1, latitude + offset1)
|
||||||
|
.between(DevopsVideoInfo0::getLongitude, longitude - offset1, longitude + offset1)
|
||||||
|
.list();
|
||||||
|
if (!videoInfo0List.isEmpty()) {
|
||||||
|
double angleOffset = 360.0 / videoInfo0List.size();
|
||||||
|
for (int i = 0; i < videoInfo0List.size(); i++) {
|
||||||
|
double angle = i * angleOffset;
|
||||||
|
DevopsVideoInfo0 videoInfo0 = videoInfo0List.get(i);
|
||||||
|
// 将极坐标转换为直角坐标
|
||||||
|
double newLatitude = videoInfo0.getLatitude() + (offset * Math.cos(Math.toRadians(angle)));
|
||||||
|
double newLongitude = videoInfo0.getLongitude() + (offset * Math.sin(Math.toRadians(angle)));
|
||||||
|
videoInfo0.setLatitude(newLatitude);
|
||||||
|
videoInfo0.setLongitude(newLongitude);
|
||||||
|
boolean update = videoInfoService0.lambdaUpdate()
|
||||||
|
.eq(DevopsVideoInfo0::getGbsChannelNo, videoInfo0.getGbsChannelNo())
|
||||||
|
.update(videoInfo0);
|
||||||
|
if (update){
|
||||||
|
logger.info("修改成功");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue