无关风月
2025-01-16 c3e5e631dbb19f1fbdc4ceb99b775354c303a92a
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
package com.stylefeng.guns.modular.system.service.impl;
 
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.dao.TDriverMapper;
import com.stylefeng.guns.modular.system.service.ITDriverService;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.util.GaoDeMapUtil;
import com.stylefeng.guns.modular.system.util.GeodesyUtil;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
 
/**
 * <p>
 * 司机表 服务实现类
 * </p>
 *
 * @author 吕雪
 * @since 2020-06-04
 */
@Service
public class TDriverServiceImpl extends ServiceImpl<TDriverMapper, TDriver> implements ITDriverService {
 
    @Autowired
    private RedisUtil redisUtil;
 
    @Autowired
    private GeodesyUtil geodesyUtil;
 
    @Override
    public List<Map<String, Object>> getAuthDriverList(Page<Map<String, Object>> page,Integer roleType, Integer objectId, String beginTime, String endTime, String companyName, String phone, String account, Integer addType, Integer authState) {
        return this.baseMapper.getAuthDriverList(page,roleType,objectId, beginTime, endTime, companyName, phone, account, addType, authState);
    }
 
    @Override
    public Map<String, Object> getDriverById(Integer driverId) {
        return this.baseMapper.getDriverById(driverId);
    }
 
    @Override
    public List<Map<String, Object>> getDriverList(Page<Map<String, Object>> page, Integer roleType,Integer nowUserId,String beginTime, String endTime, String companyName, String phone, String name, Integer addType, Integer authState) {
        return this.baseMapper.getDriverList(page,roleType,nowUserId, beginTime, endTime, companyName, phone, name, addType, authState);
    }
 
    @Override
    public String getUseCarIdStr(Integer carId) {
        return this.baseMapper.getUseCarIdStr(carId);
    }
 
    @Override
    public List<Map<String, Object>> getCanSelectCarList(Page<Map<String, Object>> page, Integer roleType, Integer nowUserId, String carIdStr, String carLicensePlate, String brandName, String modelName, String color, String serverStr) {
        return this.baseMapper.getCanSelectCarList(page, roleType, nowUserId, carIdStr, carLicensePlate, brandName, modelName, color, serverStr);
    }
 
    @Override
    public void updateCompanyDriverState(Integer authState, Integer companyId) {
        this.baseMapper.updateCompanyDriverState(authState, companyId);
    }
 
    @Override
    public void updateFranchiseeDriverState(Integer authState, Integer franchiseeId) {
        this.baseMapper.updateFranchiseeDriverState(authState, franchiseeId);
    }
 
    @Override
    public List<Map<String, Object>> getDriverListNoPage(Integer roleType, Integer nowUserId) {
        return this.baseMapper.getDriverListNoPage(roleType, nowUserId);
    }
 
 
    @Override
    public List<TDriver> queryIdleDriver(Integer type, Double lon, Double lat, Double distance, Integer companyId) throws Exception {
        List<TDriver> drivers = this.baseMapper.queryIdleDriver(type, companyId);
        List<TDriver> list = new ArrayList<>();
        for(TDriver driver : drivers){
            String value = redisUtil.getValue("DRIVER" + String.valueOf(driver.getId()));
            if(null != value){
//                Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, value, 0);//计算距离
                Map<String, Double> distance1 = geodesyUtil.getDistance(lon + "," + lat, value);
                double d = Double.valueOf(distance1.get("WGS84")).doubleValue();
                System.err.println("d="+d+",distance="+distance);
                if(d < (distance * 1000)){
                    list.add(driver);
                }
            }
        }
        System.err.println("满足条件司机=="+list);
        return list;
    }
}