jinpengyong
2023-08-21 dcb98a36af4ad7823edd61a9c3388bd024db740f
screen-manage/src/main/java/com/moral/api/service/impl/ManageCoordinateDetailServiceImpl.java
@@ -1,42 +1,57 @@
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<ManageCoordinateDetailMapper, ManageCoordinateDetail> implements ManageCoordinateDetailService {
    @Autowired
    private  ManageCoordinateDetailMapper manageCoordinateDetailMapper;
    @Autowired
    private HistorySecondCruiserMapper historySecondCruiserMapper;
    /**
     * 新增经纬度
     * @param manageCoordinateDetail
     * @param manageCoordinateDetails
     * @return
     */
    @Override
    public Integer insertCoordinate(ManageCoordinateDetail manageCoordinateDetail) {
        QueryWrapper<ManageCoordinateDetail> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("coordinate_id",manageCoordinateDetail.getCoordinateId());
        queryWrapper.eq("longitude",manageCoordinateDetail.getLongitude());
        queryWrapper.eq("latitude",manageCoordinateDetail.getLatitude());
        Integer integer = manageCoordinateDetailMapper.selectCount(queryWrapper);
        if (integer<1){
            manageCoordinateDetail.setCreateTime(new Date());
            manageCoordinateDetail.setUpdateTime(new Date());
            int insert = manageCoordinateDetailMapper.insert(manageCoordinateDetail);
            return insert;
    @Transactional
    public Integer insertCoordinate(List<ManageCoordinateDetail> 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 null;
        return 200;
    }
    /**
@@ -44,7 +59,98 @@
     * @param id
     */
    @Override
    public void deleteCoordinate(Integer id) {
    public void deleteCoordinate(Integer id)  {
        manageCoordinateDetailMapper.deleteById(id);
    }
    /**
     * 查询坐标点
     * @param params
     * @return
     */
    @Override
    public Map<String, Object> selectCoordinate(Map<String, Object> params) {
        params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
        String coordinateId = params.get("coordinateId").toString();
        QueryWrapper<ManageCoordinateDetail> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("coordinate_id",coordinateId);
        List<ManageCoordinateDetail> manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper);
//        ArrayList<String> list1 = new ArrayList<>();
//        ArrayList<String> list2 = new ArrayList<>();
//        for (ManageCoordinateDetail manageCoordinateDetail : manageCoordinateDetails) {
//            Double latitude = manageCoordinateDetail.getLatitude();
//            Double longitude = manageCoordinateDetail.getLongitude();
//            String s = longitude + "_" + latitude;
//            list1.add(s);
//        }
//        List<CruiserDTO> 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<String, Object> params) {
        params.put("dateFormat", "%Y-%m-%d %H:%i:%s");
        int coordinateId = Integer.parseInt(params.get("coordinateId").toString());
        QueryWrapper<ManageCoordinateDetail> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("coordinate_id",coordinateId);
        List<ManageCoordinateDetail> manageCoordinateDetails = manageCoordinateDetailMapper.selectList(queryWrapper);
        List<CruiserDTO> 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;
    }
}