|
@@ -1,17 +1,19 @@
|
|
|
package cn.com.taiji.track.service.impl;
|
|
|
|
|
|
+import cn.com.taiji.track.constants.WarningCodeConstants;
|
|
|
import cn.com.taiji.track.dto.BeidouShipLocationDTO;
|
|
|
+import cn.com.taiji.track.dto.ContainsDTO;
|
|
|
import cn.com.taiji.track.dto.IGeomesaTrackDTO;
|
|
|
import cn.com.taiji.track.entity.BeidouLocationEntity;
|
|
|
import cn.com.taiji.track.entity.BeidouShipArchives;
|
|
|
import cn.com.taiji.track.entity.BeidouTrackEntity;
|
|
|
import cn.com.taiji.track.mapper.BeidouLocationMapper;
|
|
|
import cn.com.taiji.track.mapper.BeidouShipArchivesMapper;
|
|
|
+import cn.com.taiji.track.mapper.WarningAreaMapper;
|
|
|
import cn.com.taiji.track.service.IBeidouLocationService;
|
|
|
import cn.com.taiji.track.service.IShipStatusService;
|
|
|
import cn.com.taiji.track.utils.LatLngUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
-import com.alibaba.druid.util.StringUtils;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
@@ -33,6 +35,7 @@ import org.opengis.filter.Filter;
|
|
|
import org.opengis.filter.FilterFactory2;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
@@ -48,7 +51,7 @@ public class BeidouLocationServiceImpl extends ServiceImpl<BeidouLocationMapper,
|
|
|
@Autowired
|
|
|
protected IShipStatusService shipStatusService;
|
|
|
|
|
|
- private Map<String,BeidouShipLocationDTO> locationMaps= new HashMap<>();
|
|
|
+ private Map<String,String> locationMaps= new HashMap<>();
|
|
|
private Vector<BeidouLocationEntity> locationEntities= new Vector<>();
|
|
|
|
|
|
@Autowired
|
|
@@ -59,6 +62,9 @@ public class BeidouLocationServiceImpl extends ServiceImpl<BeidouLocationMapper,
|
|
|
private IGeomesaTrackDTO geomesaLocationDTO;
|
|
|
@Autowired
|
|
|
private BeidouShipArchivesMapper shipArchivesMapper;
|
|
|
+ @Autowired
|
|
|
+ private WarningAreaMapper warningAreaMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public void beidouDynamicShipToCache(List<ConsumerRecord<?, ?>> records){
|
|
|
try {
|
|
@@ -89,7 +95,7 @@ public class BeidouLocationServiceImpl extends ServiceImpl<BeidouLocationMapper,
|
|
|
List<BeidouLocationEntity> saveList = new ArrayList<>(locationEntities);
|
|
|
locationEntities.clear();
|
|
|
for(BeidouLocationEntity e : saveList){
|
|
|
- if(StringUtils.isEmpty(e.getShipName())){
|
|
|
+ if(!StringUtils.hasText(e.getShipName())){
|
|
|
QueryWrapper<BeidouShipArchives> wrapper = new QueryWrapper();
|
|
|
wrapper.eq("devide_no",e.getDeviceId());
|
|
|
BeidouShipArchives shipArchives = shipArchivesMapper.selectOne(wrapper);
|
|
@@ -97,6 +103,19 @@ public class BeidouLocationServiceImpl extends ServiceImpl<BeidouLocationMapper,
|
|
|
e.setShipName(shipArchives.getShipId());
|
|
|
}
|
|
|
}
|
|
|
+ String location = e.getLocation();
|
|
|
+ if (StringUtils.hasText(location) && !location.equals(locationMaps.get(e.getDeviceId()))) {
|
|
|
+// if (StringUtils.hasText(location)) {
|
|
|
+ String longitude = location.substring(location.indexOf("(")+1,location.indexOf(" ",location.indexOf("(")));
|
|
|
+ String latitude = location.substring(location.indexOf(" ",location.indexOf("("))+1,location.indexOf(")"));
|
|
|
+ List<ContainsDTO> result = warningAreaMapper.containsPoint(longitude,latitude);
|
|
|
+ if(result.size()>0){
|
|
|
+ shipStatusService.pushinportDeviceId(e.getDeviceId(), WarningCodeConstants.INPORT_WARNING);
|
|
|
+ }else{
|
|
|
+ shipStatusService.pushinportDeviceId(e.getDeviceId(),WarningCodeConstants.OUTPROT_WARNING);
|
|
|
+ }
|
|
|
+ locationMaps.put(e.getDeviceId(),e.getLocation());
|
|
|
+ }
|
|
|
}
|
|
|
saveBatch(saveList);
|
|
|
log.info("位置数据写入数据库完成!耗时 {} 毫秒, 合计保存 {} 条记录", (new Date()).getTime() - begin.getTime(), saveList.size());
|