From d2c5f419fa584cd1061b13d47f4963d7a2ef3e3a Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 29 八月 2025 10:45:11 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/ZhaoYangChuXing into dev --- UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 84 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 83 insertions(+), 1 deletions(-) diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index 57ce1a4..f715723 100644 --- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -1,6 +1,11 @@ package com.stylefeng.guns.modular.system.service.impl; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; +import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; +import com.stylefeng.guns.modular.specialTrain.server.impl.OrderPrivateCarServiceImpl; import com.stylefeng.guns.modular.system.dao.DriverMapper; import com.stylefeng.guns.modular.system.dao.DriverServiceMapper; import com.stylefeng.guns.modular.system.model.Company; @@ -14,11 +19,15 @@ import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; @Service public class DriverServiceImpl extends ServiceImpl<DriverMapper, Driver> implements IDriverService { @@ -37,7 +46,11 @@ @Autowired private ICompanyCityService companyCityService; + @Autowired + private OrderPrivateCarServiceImpl orderPrivateCarServiceImpl; + @Autowired + private IOrderPrivateCarService orderPrivateCarService; /** @@ -61,6 +74,8 @@ if(d < (distance * 1000)){ list.add(driver); } + }else{ +// System.err.println(driver.getName() + "-----------------没有上传经纬度----------------"); } } return list; @@ -83,11 +98,50 @@ List<Driver> drivers = driverMapper.queryIdleDriver_(type, serverCarModelId, companyId); List<Driver> list = new ArrayList<>(); for(Driver driver : drivers){ + int count = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driver.getId()) + .in("state", Arrays.asList(2, 3, 4, 5, 6, 11)).eq("isDelete", 1)); + if(0 != count){ + continue; + } String value = redisUtil.getValue("DRIVER" + String.valueOf(driver.getId())); if(null != value){ /*Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, value, 0);//计算距离 double d = Double.valueOf(distance1.get("distance")).doubleValue();*/ - double d = GDMapGeocodingUtil.getDistance(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0])); +// double d = GDMapGeocodingUtil.getDistance(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0])); + double d = gdMapElectricFenceUtil.getDrivingRoute(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0])); + if(d < (distance * 1000)){ + list.add(driver); + } + } + } + return list; + } + /** + * 获取给定车型且空闲的司机 + * @param type + * @param serverCarModelId + * @param lon + * @param lat + * @param distance + * @param companyId + * @return + */ + @Override + public List<Driver> queryIdleDriver_(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) { + List<Driver> drivers = driverMapper.queryIdleDriverService_(type, serverCarModelId, companyId); + List<Driver> list = new ArrayList<>(); + for(Driver driver : drivers){ + int count = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driver.getId()) + .in("state", Arrays.asList(2, 3, 4, 5, 6, 11)).eq("isDelete", 1)); + if(0 != count){ + continue; + } + String value = redisUtil.getValue("DRIVER" + driver.getId()); + if(null != value){ + /*Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(lon + "," + lat, value, 0);//计算距离 + double d = Double.valueOf(distance1.get("distance")).doubleValue();*/ +// double d = GDMapGeocodingUtil.getDistance(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0])); + double d = gdMapElectricFenceUtil.getDrivingRoute(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0])); if(d < (distance * 1000)){ list.add(driver); } @@ -156,4 +210,32 @@ } return maps; } + + @Override + public List<Driver> queryDriverLimitTen(Integer type, Double lon, Double lat) { + List<Driver> drivers = driverMapper.queryIdleDriver(type, null); + if(CollectionUtils.isEmpty(drivers)){ + return new ArrayList<>(); + } + Iterator<Driver> iterator = drivers.iterator(); + while (iterator.hasNext()){ + Driver driver = iterator.next(); + String value = redisUtil.getValue("DRIVER" + driver.getId()); + if(null != value){ + double d = GDMapGeocodingUtil.getDistance(lat,lon,Double.parseDouble(value.split(",")[1]),Double.parseDouble(value.split(",")[0])); + driver.setLon(Double.parseDouble(value.split(",")[0])); + driver.setLat(Double.parseDouble(value.split(",")[1])); + driver.setDistance(d); + }else { + System.err.println(driver.getName() + "------没有上传经纬度------"); + iterator.remove(); + } + } + if(drivers.size() > 10){ + drivers.sort(Comparator.comparing(Driver::getDistance)); + return drivers.stream().limit(10).collect(Collectors.toList()); + }else { + return drivers; + } + } } -- Gitblit v1.7.1