package com.moral.api.service.impl; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.entity.ManageCoordinateDetail; import com.moral.api.mapper.HistorySecondCruiserMapper; import com.moral.api.mapper.ManageCoordinateDetailMapper; import com.moral.api.pojo.dto.cruiser.CruiserDTO; import com.moral.api.service.ManageCoordinateDetailService; import com.moral.api.util.RoadUtils; @Service @Slf4j public class ManageCoordinateDetailServiceImpl extends ServiceImpl implements ManageCoordinateDetailService { @Autowired private ManageCoordinateDetailMapper manageCoordinateDetailMapper; @Autowired private HistorySecondCruiserMapper historySecondCruiserMapper; /** * 新增经纬度 * @param manageCoordinateDetail * @return */ @Override public Integer insertCoordinate(ManageCoordinateDetail manageCoordinateDetail) { double[] doubles = RoadUtils.transformBD09ToWGS84(manageCoordinateDetail.getLongitude(), manageCoordinateDetail.getLatitude()); log.info(doubles[0]+"_"+doubles[1]); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("coordinate_id",manageCoordinateDetail.getCoordinateId()); queryWrapper.eq("longitude",doubles[0]); queryWrapper.eq("latitude",doubles[1]); Integer integer = manageCoordinateDetailMapper.selectCount(queryWrapper); if (integer<1){ manageCoordinateDetail.setCreateTime(new Date()); manageCoordinateDetail.setUpdateTime(new Date()); manageCoordinateDetail.setLongitude(doubles[0]); manageCoordinateDetail.setLatitude(doubles[1]); int insert = manageCoordinateDetailMapper.insert(manageCoordinateDetail); return insert; } return null; } /** * 删除经纬度点 * @param id */ @Override public void deleteCoordinate(Integer id) { manageCoordinateDetailMapper.deleteById(id); } /** * 查询坐标点 * @param params * @return */ @Override public Map selectCoordinate(Map params) { params.put("dateFormat", "%Y-%m-%d %H:%i:%s"); String coordinateId = params.get("coordinateId").toString(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("coordinate_id",coordinateId); List manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper); ArrayList list1 = new ArrayList<>(); ArrayList list2 = new ArrayList<>(); for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) { Double latitude = manageCoordinateDetail.getLatitude(); Double longitude = manageCoordinateDetail.getLongitude(); String s = longitude + "_" + latitude; list1.add(s); } List cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params); for (CruiserDTO cruiserDTO : cruiserInfo) { String s = cruiserDTO.getFlyLat().toString(); String s1 = cruiserDTO.getFlyLon().toString(); String rs = s1 + "_" + s; list2.add(rs); } //取交集 list1.retainAll(list2); //取差集 list2.removeAll(list1); return null; } /** * 批量添加 * @param params * @return */ @Override @Transactional public Integer batchAll(Map params) { params.put("dateFormat", "%Y-%m-%d %H:%i:%s"); String coordinateId = params.get("coordinateId").toString(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("coordinate_id",coordinateId); List manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper); ArrayList list1 = new ArrayList<>(); ArrayList list2 = new ArrayList<>(); for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) { Double latitude = manageCoordinateDetail.getLatitude(); Double longitude = manageCoordinateDetail.getLongitude(); String s = longitude + "_" + latitude; list1.add(s); } List cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params); for (CruiserDTO cruiserDTO : cruiserInfo) { String s = cruiserDTO.getFlyLat().toString(); String s1 = cruiserDTO.getFlyLon().toString(); String rs = s1 + "_" + s; list2.add(rs); } //取差集 list2.removeAll(list1); return null; } }