From f4c8c73bc5181b6d3265c6a0ce19ae13c600baa3 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 04 九月 2025 12:07:18 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 56 insertions(+), 3 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 246b928..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; @@ -18,9 +23,10 @@ import javax.annotation.Resource; import java.util.ArrayList; -import java.util.Comparator; +import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -40,7 +46,11 @@ @Autowired private ICompanyCityService companyCityService; + @Autowired + private OrderPrivateCarServiceImpl orderPrivateCarServiceImpl; + @Autowired + private IOrderPrivateCarService orderPrivateCarService; /** @@ -65,7 +75,7 @@ list.add(driver); } }else{ - System.err.println(driver.getName() + "-----------------没有上传经纬度----------------"); +// System.err.println(driver.getName() + "-----------------没有上传经纬度----------------"); } } return list; @@ -88,7 +98,45 @@ 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, 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();*/ @@ -169,13 +217,18 @@ if(CollectionUtils.isEmpty(drivers)){ return new ArrayList<>(); } - for (Driver driver : drivers) { + 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){ -- Gitblit v1.7.1