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 manageCoordinateDetails * @return */ @Override @Transactional public Integer insertCoordinate(List manageCoordinateDetails) { for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) { if (manageCoordinateDetail.getState().equals("1")){ manageCoordinateDetail.setState("2"); int insert = manageCoordinateDetailMapper.insert(manageCoordinateDetail); if (insert!=1){ return null; } }else { int i = manageCoordinateDetailMapper.deleteById(manageCoordinateDetail.getId()); if (i!=1){ return null; } } } return 200; } /** * 删除经纬度点 * @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); // //存入数据库的数据 // CruiserDTO rsDTO = new CruiserDTO(); // for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) { // String latitude = manageCoordinateDetail.getLatitude().toString(); // String longitude = manageCoordinateDetail.getLongitude().toString(); // for (CruiserDTO cruiserDTO : cruiserInfo) { // Double flyLat = cruiserDTO.getFlyLat(); // Double flyLon = cruiserDTO.getFlyLon(); // if (latitude.equals(flyLat+"") && longitude.equals(flyLon+"")){ // rsDTO.setFlyLat(flyLat); // rsDTO.setFlyLon(flyLon); // } // } // } return null; } /** * 批量添加 * @param params * @return */ @Override @Transactional public Integer batchAll(Map params) { params.put("dateFormat", "%Y-%m-%d %H:%i:%s"); int coordinateId = Integer.parseInt(params.get("coordinateId").toString()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("coordinate_id",coordinateId); List manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper); List cruiserInfo = historySecondCruiserMapper.getCruiserInfo(params); for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) { String latitude = manageCoordinateDetail.getLatitude().toString(); String longitude = manageCoordinateDetail.getLongitude().toString(); for (CruiserDTO cruiserDTO : cruiserInfo) { Double flyLat = cruiserDTO.getFlyLat(); Double flyLon = cruiserDTO.getFlyLon(); if (!latitude.equals(flyLat+"") || !longitude.equals(flyLon+"")){ ManageCoordinateDetail rsDTO = new ManageCoordinateDetail(); rsDTO.setLatitude(flyLat); rsDTO.setLongitude(flyLon); rsDTO.setState("2"); rsDTO.setCreateTime(new Date()); rsDTO.setUpdateTime(new Date()); rsDTO.setCoordinateId(coordinateId); int insert = manageCoordinateDetailMapper.insert(rsDTO); if (insert!=1){ return null; } } } } return 200; } }