From 7ae343fc7761a3b5535716ff07a82e5d571d60e8 Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期二, 27 八月 2024 09:14:44 +0800 Subject: [PATCH] 修改2.0 bug --- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java | 21 ++++-- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/IOrderLogisticsService.java | 2 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java | 2 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java | 2 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 7 +- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 12 +++ DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java | 21 +++--- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java | 2 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java | 9 ++ DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PhoneServiceImpl.java | 3 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java | 13 +++- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java | 17 +++-- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java | 10 ++ 13 files changed, 76 insertions(+), 45 deletions(-) diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/IOrderLogisticsService.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/IOrderLogisticsService.java index bc7cd0a..0f77fdc 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/IOrderLogisticsService.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/IOrderLogisticsService.java @@ -49,7 +49,7 @@ * @return * @throws Exception */ - ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address, String pickUpCode, Integer language, Integer uid) throws Exception; + ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String pickUpCode, Integer language, Integer uid) throws Exception; /** diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java index ad00677..254ba65 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java @@ -18,6 +18,7 @@ import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo; import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil; import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil; +import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo; import com.stylefeng.guns.modular.system.util.itextpdf.HtmlToPdfUtils; import com.stylefeng.guns.modular.system.util.quartz.QuartzUtil; import com.stylefeng.guns.modular.system.util.quartz.jobs.OrderTimeOutJob; @@ -192,9 +193,10 @@ orderLogistics.setTripId(UUIDUtil.getRandomCode()); } String value = redisUtil.getValue("DRIVER" + driver.getId()); + String tripId = redisUtil.getValue("trip" + orderLogistics.getUserId()); if(ToolUtil.isNotEmpty(value)) { String[] split = value.split(","); - DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0])); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0]), tripId); //超时时间 long timeOut = System.currentTimeMillis() + (distancematrix.getDuration() * 1000); orderLogistics.setEstimateArriveTime(new Date(timeOut)); @@ -346,13 +348,18 @@ * @param state * @param lon * @param lat - * @param address * @return * @throws Exception */ @Override - public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address, String pickUpCode, Integer language, Integer uid) throws Exception { + public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String pickUpCode, Integer language, Integer uid) throws Exception { OrderLogistics orderLogistics = this.selectById(orderId); + String tripId = redisUtil.getValue("trip" + orderLogistics.getUserId()); + ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lon, tripId); + if(null == reverseGeocode){ + return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid longitude and latitude" : "Longitude et latitude non valides"); + } + String address = reverseGeocode.getAddress(); if(!uid.equals(orderLogistics.getDriverId())){ return ResultUtil.error(language == 1 ? "操作失败,请刷新订单" : language == 2 ? "Operation failed, please refresh the order" : "L’opération a échoué, veuillez actualiser la commande"); } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java index d98f3ee..6442673 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java @@ -74,7 +74,7 @@ * @return * @throws Exception */ - ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address,String phone, Integer language, Integer uid) throws Exception; + ResultUtil process(Integer orderId, Integer state, Double lon, Double lat,String phone, Integer language, Integer uid) throws Exception; /** diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java index cabeeb7..5402770 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java @@ -18,6 +18,7 @@ import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo; import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil; import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil; +import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo; import com.stylefeng.guns.modular.system.util.quartz.QuartzUtil; import com.stylefeng.guns.modular.system.util.quartz.jobs.OrderTimeOutJob; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; @@ -194,6 +195,7 @@ @Override public synchronized ResultUtil grabOrder(Integer orderId, Integer uid, Integer language) throws Exception { OrderPrivateCar orderPrivateCar = this.selectById(orderId); + String tripId = redisUtil.getValue("trip" + orderPrivateCar.getUserId()); //处理摆渡车的情况 if(orderPrivateCar.getType() == 2){ //查看用户下的摆渡车是否已被人抢了 @@ -239,7 +241,7 @@ String value = redisUtil.getValue("DRIVER" + driver.getId()); if(ToolUtil.isNotEmpty(value)) { String[] split = value.split(","); - DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderPrivateCar.getStartLat(), orderPrivateCar.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0])); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderPrivateCar.getStartLat(), orderPrivateCar.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0]), tripId); //超时时间 long timeOut = System.currentTimeMillis() + (distancematrix.getDuration() * 1000); orderPrivateCar.setEstimateArriveTime(new Date(timeOut)); @@ -471,8 +473,14 @@ * @throws Exception */ @Override - public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat, String address,String phone, Integer language, Integer uid) throws Exception { + public ResultUtil process(Integer orderId, Integer state, Double lon, Double lat,String phone, Integer language, Integer uid) throws Exception { OrderPrivateCar orderPrivateCar = this.selectById(orderId); + String tripId = redisUtil.getValue("trip" + orderPrivateCar.getUserId()); + ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lon, tripId); + if(null == reverseGeocode){ + return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid longitude and latitude" : "Longitude et latitude non valides"); + } + String address = reverseGeocode.getAddress(); if(!uid.equals(orderPrivateCar.getDriverId())){ return ResultUtil.error(language == 1 ? "操作失败,请刷新订单" : language == 2 ? "Operation failed, please refresh the order" : "L’opération a échoué, veuillez actualiser la commande"); } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java index bef0100..afcba89 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java @@ -15,7 +15,7 @@ * @throws Exception */ Company query(String lon, String lat) throws Exception; - Company query1(String lon, String lat) throws Exception; + Company query1(Integer uid, String lon, String lat) throws Exception; /** diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java index c9b3136..8d04e3d 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverService.java @@ -436,5 +436,5 @@ * @return * @throws Exception */ - List<Driver> queryIdleDriver(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) throws Exception; + List<Driver> queryIdleDriver(Integer userId, Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) throws Exception; } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java index ca19a16..806e14c 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java @@ -13,6 +13,7 @@ import com.stylefeng.guns.modular.system.util.GoogleMap.AddressComponentsVo; import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil; import com.stylefeng.guns.modular.system.util.GoogleMap.ReverseGeocodeVo; +import com.stylefeng.guns.modular.system.util.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -34,6 +35,9 @@ @Autowired private ICityService cityService; + + @Resource + private RedisUtil redisUtil; /** @@ -52,8 +56,9 @@ } @Override - public Company query1(String lon, String lat) throws Exception { - ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(Double.valueOf(lat), Double.valueOf(lon)); + public Company query1(Integer uid, String lon, String lat) throws Exception { + String tripId = redisUtil.getValue("trip" + uid); + ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(Double.valueOf(lat), Double.valueOf(lon), tripId); if(null == reverseGeocode){ return null; } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index 1de4706..6b4e0a7 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -1031,7 +1031,7 @@ */ @Override public Map<String, Object> queryPhone(Double lat, Double lnt) throws Exception { - ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lnt); + ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lnt, null); if(null == reverseGeocode){ System.err.println("获取地址异常"); return null; @@ -3189,13 +3189,14 @@ * @throws Exception */ @Override - public List<Driver> queryIdleDriver(Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) throws Exception { + public List<Driver> queryIdleDriver(Integer userId, Integer type, Integer serverCarModelId, Double lon, Double lat, Double distance, Integer companyId) throws Exception { List<Driver> drivers = driverMapper.queryIdleDriver_(type, serverCarModelId, companyId); + String tripId = redisUtil.getValue("trip" + userId); List<Driver> list = new ArrayList<>(); for(Driver driver : drivers){ String value = redisUtil.getValue("DRIVER" + driver.getId()); if(ToolUtil.isNotEmpty(value)){ - DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(lat, lon, Double.parseDouble(value.split(",")[1]), Double.parseDouble(value.split(",")[0])); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(lat, lon, Double.parseDouble(value.split(",")[1]), Double.parseDouble(value.split(",")[0]), tripId); if(null != distancematrix){ if(distancematrix.getDistance() < (distance * 1000)){ list.add(driver); diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java index df60022..47255f2 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java @@ -262,11 +262,13 @@ switch (orderType){ case 1://专车 map = orderPrivateCarService.queryPushOrder(orderId, language); - DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon)); + OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); + String tripId = redisUtil.getValue("trip" + orderPrivateCar.getUserId()); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon), tripId); map.put("startDistance", null != distancematrix ? distancematrix.getDistance() / 1000 : 0); //总距离 - distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString())); + distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString()), tripId); map.put("totalDistance", null != distancematrix ? distancematrix.getDistance() / 1000 : 0); Integer orderSource = Integer.valueOf(String.valueOf(map.get("orderSource"))); @@ -371,11 +373,13 @@ break; case 4://市内小件物流 map = orderLogisticsService.queryPushOrder(orderId, language); - DistancematrixVo distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon)); + OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId); + String tripId1 = redisUtil.getValue("trip" + orderLogistics.getUserId()); + DistancematrixVo distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon), tripId1); map.put("startDistance", null != distancematrix1 ? distancematrix1.getDistance() / 1000 : 0); //总距离 - distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString())); + distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString()), tripId1); map.put("totalDistance", null != distancematrix1 ? distancematrix1.getDistance() / 1000 : 0); Integer orderSource3 = Integer.valueOf(String.valueOf(map.get("orderSource"))); @@ -568,20 +572,15 @@ */ @Override public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat,String phone, String pickUpCode, Integer language) throws Exception { - ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lon); - if(null == reverseGeocode){ - return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid longitude and latitude" : "Longitude et latitude non valides"); - } - String address = reverseGeocode.getAddress(); switch (orderType){ case 1://专车 - return orderPrivateCarService.process(orderId, state, lon, lat, address, phone, language, uid); + return orderPrivateCarService.process(orderId, state, lon, lat, phone, language, uid); case 2://出租 // return orderTaxiService.process(orderId, state, lon, lat, address); case 3://城际 // return orderCrossCityService.process(orderId, state, lon, lat, address); case 4://同城小件 - return orderLogisticsService.process(orderId, state, lon, lat, address, pickUpCode, language, uid); + return orderLogisticsService.process(orderId, state, lon, lat, pickUpCode, language, uid); case 5://跨城小件 // return orderLogisticsService.process(orderId, state, lon, lat, address); case 6: diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PhoneServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PhoneServiceImpl.java index 77dd8e0..a3ccf8f 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PhoneServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PhoneServiceImpl.java @@ -52,13 +52,12 @@ /** * 获取客服电话(个人中心) - * @param code * @return * @throws Exception */ @Override public Map<String, Object> queryCustomerPhone(Double lat, Double lnt) throws Exception { - ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lat); + ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lat, null); if(null == reverseGeocode){ System.err.println("获取地图信息出错"); return new HashMap<>(); diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java index acc5b13..feb3c96 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java @@ -159,7 +159,7 @@ reassign.setInsertTime(new Date()); reassign.setState(2); this.insert(reassign); - + String tripId = ""; //修改改派通知状态 switch (reassign.getOrderType()){ case 1: @@ -168,6 +168,7 @@ orderPrivateCar.setState(11); orderPrivateCar.setReassignNotice(2); orderPrivateCarService.updateById(orderPrivateCar); + tripId = redisUtil.getValue("trip" + orderPrivateCar.getUserId()); break; case 2: OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId()); @@ -175,6 +176,7 @@ orderTaxi.setState(11); orderTaxi.setReassignNotice(2); orderTaxiService.updateById(orderTaxi); + tripId = redisUtil.getValue("trip" + orderTaxi.getUserId()); break; case 4: OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId()); @@ -182,6 +184,7 @@ orderLogistics.setState(11); orderLogistics.setReassignNotice(2); orderLogisticsService.updateById(orderLogistics); + tripId = redisUtil.getValue("trip" + orderLogistics.getUserId()); break; case 5: OrderLogistics orderLogistics1 = orderLogisticsService.selectById(reassign.getOrderId()); @@ -189,20 +192,22 @@ orderLogistics1.setState(11); orderLogistics1.setReassignNotice(2); orderLogisticsService.updateById(orderLogistics1); + tripId = redisUtil.getValue("trip" + orderLogistics1.getUserId()); break; } systemNoticeService.addSystemNotice(2, language == 1 ? "您的改派申请已成功提交,我们会尽快为你处理!" : language == 2 ? "Your request for reassignment was submitted, we shall handle it for you as soon as possible." : "Votre demande de réaffectation a été soumise. Nous la traiterons pour vous dans les plus brefs délais.", uid); - + + //开始自动完成改派 switch (reassign.getOrderType()){ case 1: OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(reassign.getOrderId()); - Company company = companyCityService.query1(String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司 + Company company = companyCityService.query1(orderPrivateCar.getUserId(), String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司 PushOrder pushOrder = pushOrderService.querys(1, 1, company.getId()).get(0); //获取空闲司机 - List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 + List<Driver> list = driverService.queryIdleDriver(orderPrivateCar.getUserId(), 1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 System.err.println("【" + orderPrivateCar.getId() + "】空闲司机:" + JSON.toJSONString(list)); if(list.size() > 0){ String text = ""; @@ -265,7 +270,7 @@ String value = redisUtil.getValue("DRIVER" + driver1.getId()); if(ToolUtil.isNotEmpty(value)) { String[] split = value.split(","); - DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderPrivateCar.getStartLat(), orderPrivateCar.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0])); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderPrivateCar.getStartLat(), orderPrivateCar.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0]), tripId); //超时时间 long timeOut = System.currentTimeMillis() + (distancematrix.getDuration() * 1000); orderPrivateCar.setEstimateArriveTime(new Date(timeOut)); @@ -451,10 +456,10 @@ break; case 4: OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId()); - Company company1 = companyCityService.query1(String.valueOf(orderLogistics.getStartLon()), String.valueOf(orderLogistics.getStartLat()));//获取起点所属分公司 + Company company1 = companyCityService.query1(orderLogistics.getUserId(), String.valueOf(orderLogistics.getStartLon()), String.valueOf(orderLogistics.getStartLat()));//获取起点所属分公司 PushOrder pushOrder1 = pushOrderService.querys(1, 1, company1.getId()).get(0); //获取空闲司机 - List<Driver> list1 = driverService.queryIdleDriver(orderLogistics.getType(), orderLogistics.getServerCarModelId(), orderLogistics.getStartLon(), orderLogistics.getStartLat(), pushOrder1.getPushDistance(), null);//所有附近空闲司机 + List<Driver> list1 = driverService.queryIdleDriver(orderLogistics.getUserId(), orderLogistics.getType(), orderLogistics.getServerCarModelId(), orderLogistics.getStartLon(), orderLogistics.getStartLat(), pushOrder1.getPushDistance(), null);//所有附近空闲司机 System.err.println("【" + orderLogistics.getId() + "】空闲司机:" + JSON.toJSONString(list1)); if(list1.size() > 0){ Driver driver1 = list1.get(0); @@ -515,7 +520,7 @@ String value = redisUtil.getValue("DRIVER" + driver1.getId()); if(ToolUtil.isNotEmpty(value)) { String[] split = value.split(","); - DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0])); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0]), tripId); //超时时间 long timeOut = System.currentTimeMillis() + (distancematrix.getDuration() * 1000); orderLogistics.setEstimateArriveTime(new Date(timeOut)); diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java index 72c49d9..c9c45a9 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/GoogleMapUtil.java @@ -4,6 +4,7 @@ import com.google.gson.GsonBuilder; import com.google.maps.*; import com.google.maps.model.*; +import com.stylefeng.guns.core.util.ToolUtil; /** * 谷歌地图工具类 @@ -46,11 +47,14 @@ * @return * @throws Exception */ - public static ReverseGeocodeVo getReverseGeocode(double lat, double lng) throws Exception{ + public static ReverseGeocodeVo getReverseGeocode(double lat, double lng, String tripId) throws Exception{ GeoApiContext context = new GeoApiContext.Builder() .apiKey(key) .build(); GeocodingApiRequest request = GeocodingApi.reverseGeocode(context, new LatLng(lat, lng)); + if(ToolUtil.isNotEmpty(tripId)){ + request.header("X-Goog-Maps-Experience-ID", tripId);//行程id + } GeocodingResult[] results = request.await(); ReverseGeocodeVo vo = null; if(results.length > 0){ @@ -179,7 +183,7 @@ * @return * @throws Exception */ - public static DistancematrixVo getDistancematrix(Double sLat, Double sLnt, Double eLat, Double eLnt) throws Exception{ + public static DistancematrixVo getDistancematrix(Double sLat, Double sLnt, Double eLat, Double eLnt, String tripId) throws Exception{ GeoApiContext context = new GeoApiContext.Builder() .apiKey(key) .build(); @@ -187,6 +191,9 @@ request.origins(new LatLng(sLat, sLnt)); request.destinations(new LatLng(eLat, eLnt)); request.mode(TravelMode.DRIVING);//出行方式(驾车) + if(ToolUtil.isNotEmpty(tripId)){ + request.header("X-Goog-Maps-Experience-ID", tripId);//行程id + } DistanceMatrix distanceMatrix = request.await(); Gson gson = new GsonBuilder().setPrettyPrinting().create(); System.out.println(gson.toJson(distanceMatrix)); @@ -227,12 +234,6 @@ - public static void main(String[] ages){ - try { - } catch (Exception e) { - e.printStackTrace(); - } - } diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java index 704a15a..a44e21b 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java @@ -245,9 +245,11 @@ Integer oldState = 0; Long startServiceTime = null; Double servedMileage = null; + String tripId = ""; switch (orderType){ case 1: OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); + tripId = redisUtil.getValue("trip" + orderPrivateCar.getUserId()); if(orderPrivateCar == null){ this.removeTask(orderId, orderType); }else{ @@ -262,6 +264,7 @@ break; case 2: OrderTaxi orderTaxi = orderTaxiService.selectById(orderId); + tripId = redisUtil.getValue("trip" + orderTaxi.getUserId()); if(orderTaxi == null){ this.removeTask(orderId, orderType); }else{ @@ -276,6 +279,7 @@ break; case 3: OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId); + tripId = redisUtil.getValue("trip" + orderCrossCity.getUserId()); if(orderCrossCity == null){ this.removeTask(orderId, orderType); }else{ @@ -289,6 +293,7 @@ break; case 4: OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId); + tripId = redisUtil.getValue("trip" + orderLogistics.getUserId()); if(orderLogistics == null){ this.removeTask(orderId, orderType); }else{ @@ -302,6 +307,7 @@ break; case 5: OrderLogistics orderLogistics1 = orderLogisticsService.selectById(orderId); + tripId = redisUtil.getValue("trip" + orderLogistics1.getUserId()); if(orderLogistics1 == null){ this.removeTask(orderId, orderType); }else{ @@ -340,7 +346,7 @@ if(ToolUtil.isNotEmpty(value) && ToolUtil.isNotEmpty(startLonLat)){ String[] split = value.split(","); String[] split1 = startLonLat.split(","); - DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(split[1]), Double.valueOf(split[0]), Double.valueOf(split1[1]), Double.valueOf(split1[0])); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(split[1]), Double.valueOf(split[0]), Double.valueOf(split1[1]), Double.valueOf(split1[0]), tripId); if(null == distancematrix){ System.err.println("地图获取距离出错"); }else{ @@ -369,7 +375,7 @@ if(ToolUtil.isNotEmpty(value) && ToolUtil.isNotEmpty(endLonLat)){ String[] split = value.split(","); String[] split1 = endLonLat.split(","); - DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(split[1]), Double.valueOf(split[0]), Double.valueOf(split1[1]), Double.valueOf(split1[0])); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(split[1]), Double.valueOf(split[0]), Double.valueOf(split1[1]), Double.valueOf(split1[0]), tripId); if(null == distancematrix){ System.err.println("地图获取距离出错"); }else{ -- Gitblit v1.7.1