From 016ddc332273c36e437a6f3b5f0a25574d5b7b78 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期五, 05 九月 2025 09:12:43 +0800 Subject: [PATCH] bug修改 --- UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 72 +++++++++++++++++++++++++++++++++++ 1 files changed, 71 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 9040088..b54efa8 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,14 @@ 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 @@ -38,7 +46,11 @@ @Autowired private ICompanyCityService companyCityService; + @Autowired + private OrderPrivateCarServiceImpl orderPrivateCarServiceImpl; + @Autowired + private IOrderPrivateCarService orderPrivateCarService; /** @@ -63,7 +75,7 @@ list.add(driver); } }else{ - System.err.println(driver.getName() + "-----------------没有上传经纬度----------------"); +// System.err.println(driver.getName() + "-----------------没有上传经纬度----------------"); } } return list; @@ -86,7 +98,47 @@ 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 = 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, 11)) + .ne("orderType",2) + .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();*/ @@ -164,7 +216,25 @@ @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