From 8b09fbc19a96b57bf1d0e4d7c79b51a76aeca554 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 28 三月 2025 19:57:56 +0800 Subject: [PATCH] 修改bug --- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java | 235 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 214 insertions(+), 21 deletions(-) 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..21db73c 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 @@ -20,6 +20,7 @@ import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.*; 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.Tingg.TinggPayUtil; @@ -32,6 +33,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; @@ -103,6 +106,15 @@ @Resource private IBalanceUsageRecordService balanceUsageRecordService; + + @Resource + private FleetEngineUtil fleetEngineUtil; + + @Autowired + private IOrderPositionService orderPositionService; + + @Autowired + private ICarService carService; @@ -262,12 +274,14 @@ 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)); - map.put("startDistance", null != distancematrix ? distancematrix.getDistance() / 1000 : 0); + 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 ? new BigDecimal(distancematrix.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 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())); - map.put("totalDistance", 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()), tripId); + map.put("totalDistance", null != distancematrix ? new BigDecimal(distancematrix.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0); Integer orderSource = Integer.valueOf(String.valueOf(map.get("orderSource"))); if(orderSource == 1 || orderSource == 2 || orderSource == 3){ @@ -371,12 +385,14 @@ 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)); - map.put("startDistance", null != distancematrix1 ? distancematrix1.getDistance() / 1000 : 0); + 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 ? new BigDecimal(distancematrix1.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 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())); - map.put("totalDistance", 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()), tripId1); + map.put("totalDistance", null != distancematrix1 ? new BigDecimal(distancematrix1.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0); Integer orderSource3 = Integer.valueOf(String.valueOf(map.get("orderSource"))); if(orderSource3 == 1 || orderSource3 == 2 || orderSource3 == 3){ @@ -568,20 +584,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: @@ -749,10 +760,11 @@ */ @Override public Integer queryOrderNum(Integer driverId, Date start, Date end) throws Exception { - //出租车 int i = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("driverId", driverId) .between("insertTime", start, end).in("state", Arrays.asList(6, 7, 8, 9))); - return i; + int i1 = orderLogisticsService.selectCount(new EntityWrapper<OrderLogistics>().eq("driverId", driverId) + .between("insertTime", start, end).in("state", Arrays.asList(6, 7, 8, 9))); + return i + i1; } @@ -1165,8 +1177,8 @@ checkoutRequest.setRequestDescription("Travel completion payment"); checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi"); checkoutRequest.setPendingRedirectUrl(""); - checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html"); - checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html"); + checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html"); + checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html"); ResultUtil resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest); if(resultUtil.getCode()==200){ paymentRecordService.saveData(1, uid, 2, orderId, orderType, 1, money, null, 1);//添加预支付数据 @@ -1191,8 +1203,8 @@ checkoutRequest.setRequestDescription("Travel completion payment"); checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi"); checkoutRequest.setPendingRedirectUrl(""); - checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html"); - checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html"); + checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html"); + checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html"); ResultUtil resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest); if(resultUtil.getCode()==200){ @@ -1233,6 +1245,187 @@ } return ResultUtil.success(); } + + + @Override + public void getDriverNowPosition() { + for (OrderPrivateCar orderPrivateCar : orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("state", 5))) { + String trackId = orderPrivateCar.getTrackId(); + if(ToolUtil.isNotEmpty(trackId)){ + String trip = fleetEngineUtil.getTrip(trackId); + JSONObject lastLocation = JSON.parseObject(trip).getJSONObject("lastLocation"); + JSONObject location = lastLocation.getJSONObject("location"); + Double latitude = location.getDouble("latitude"); + Double longitude = location.getDouble("longitude"); + OrderPosition orderPosition = new OrderPosition(); + orderPosition.setOrderId(orderPrivateCar.getId()); + orderPosition.setOrderType(1); + orderPosition.setDriverId(orderPrivateCar.getDriverId()); + orderPosition.setLat(latitude.toString()); + orderPosition.setLon(longitude.toString()); + orderPosition.setInsertTime(new Date()); + try { + orderPositionService.saveData(orderPosition); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + List<OrderLogistics> orderLogisticsList = orderLogisticsService.selectList(new EntityWrapper<OrderLogistics>().eq("state", 5)); + for (OrderLogistics orderLogistics : orderLogisticsList) { + String trackId = orderLogistics.getTrackId(); + if(ToolUtil.isNotEmpty(trackId)){ + String trip = fleetEngineUtil.getTrip(trackId); + JSONObject lastLocation = JSON.parseObject(trip).getJSONObject("lastLocation"); + JSONObject location = lastLocation.getJSONObject("location"); + Double latitude = location.getDouble("latitude"); + Double longitude = location.getDouble("longitude"); + OrderPosition orderPosition = new OrderPosition(); + orderPosition.setOrderId(orderLogistics.getId()); + orderPosition.setOrderType(1); + orderPosition.setDriverId(orderLogistics.getDriverId()); + orderPosition.setLat(latitude.toString()); + orderPosition.setLon(longitude.toString()); + orderPosition.setInsertTime(new Date()); + try { + orderPositionService.saveData(orderPosition); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + } + + + /** + * 结束google订单状态 + */ + @Override + public void overGoogleOrder() { + List<OrderPrivateCar> privateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().isNotNull("tripId") + .eq("isover", 0).in("state", Arrays.asList(7, 8, 9, 10)).eq("isDelete", 1)); + for (OrderPrivateCar privateCar : privateCars) { + Integer state = privateCar.getState(); + String tripId = privateCar.getTripId(); + String trip = fleetEngineUtil.getTrip(tripId); + if("" == trip){ + privateCar.setIsover(1); + orderPrivateCarService.updateById(privateCar); + continue; + } + if(ToolUtil.isNotEmpty(trip)){ + JSONObject jsonObject = JSON.parseObject(trip); + String tripStatus = jsonObject.getString("tripStatus"); + Car car = carService.selectById(privateCar.getCarId()); + if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){ + //修改行程信息 + boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(!updateTrip){ + for (int i = 0; i < 5; i++) { + updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(updateTrip){ + privateCar.setIsover(1); + orderPrivateCarService.updateById(privateCar); + break; + } + try { + Thread.sleep(3000L); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }else{ + privateCar.setIsover(1); + orderPrivateCarService.updateById(privateCar); + } + } + if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){ + //修改行程信息 + boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(!updateTrip){ + for (int i = 0; i < 5; i++) { + updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(updateTrip){ + privateCar.setIsover(1); + orderPrivateCarService.updateById(privateCar); + break; + } + try { + Thread.sleep(3000L); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }else{ + privateCar.setIsover(1); + orderPrivateCarService.updateById(privateCar); + } + } + } + } + List<OrderLogistics> orderLogisticsList = orderLogisticsService.selectList(new EntityWrapper<OrderLogistics>().isNotNull("tripId") + .eq("isover", 0).in("state", Arrays.asList(7, 8, 9, 10)).eq("isDelete", 1)); + for (OrderLogistics orderLogistics : orderLogisticsList) { + Integer state = orderLogistics.getState(); + String tripId = orderLogistics.getTripId(); + String trip = fleetEngineUtil.getTrip(tripId); + if("" == trip){ + orderLogistics.setIsover(1); + orderLogisticsService.updateById(orderLogistics); + continue; + } + if(ToolUtil.isNotEmpty(trip)){ + JSONObject jsonObject = JSON.parseObject(trip); + String tripStatus = jsonObject.getString("tripStatus"); + Car car = carService.selectById(orderLogistics.getCarId()); + if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){ + //修改行程信息 + boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(!updateTrip){ + for (int i = 0; i < 5; i++) { + updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(updateTrip){ + orderLogistics.setIsover(1); + orderLogisticsService.updateById(orderLogistics); + break; + } + try { + Thread.sleep(3000L); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }else{ + orderLogistics.setIsover(1); + orderLogisticsService.updateById(orderLogistics); + } + } + if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){ + //修改行程信息 + boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(!updateTrip){ + for (int i = 0; i < 5; i++) { + updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(updateTrip){ + orderLogistics.setIsover(1); + orderLogisticsService.updateById(orderLogistics); + break; + } + try { + Thread.sleep(3000L); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }else{ + orderLogistics.setIsover(1); + orderLogisticsService.updateById(orderLogistics); + } + } + } + } + } } -- Gitblit v1.7.1