jinpengyong
2023-08-17 433b18fddbdb38f0c2a0a2358bc74fe46e10c9ba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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
     * @return
     */
    @Override
    public Integer insertCoordinate(ManageCoordinateDetail manageCoordinateDetail) {
        double[] doubles = RoadUtils.transformBD09ToWGS84(manageCoordinateDetail.getLongitude(), manageCoordinateDetail.getLatitude());
        log.info(doubles[0]+"_"+doubles[1]);
        QueryWrapper<ManageCoordinateDetail> 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<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);
 
        return null;
    }
 
 
    /**
     * 批量添加
     * @param params
     * @return
     */
    @Override
    @Transactional
    public Integer batchAll(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);
        }
        //取差集
        list2.removeAll(list1);
 
        return null;
    }
}