From 9e4440e8ce1ed3c72932f3f62f4d05f55c9080e6 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期四, 17 八月 2023 11:49:12 +0800 Subject: [PATCH] 新增加司机端接口 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 51 insertions(+), 7 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java index 9502b6e..4ee5ef9 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java @@ -7,6 +7,7 @@ import com.supersavedriving.driver.modular.system.model.Order; import com.supersavedriving.driver.modular.system.service.IOrderService; import com.supersavedriving.driver.modular.system.util.GeodesyUtil; +import com.supersavedriving.driver.modular.system.util.PushUtil; import com.supersavedriving.driver.modular.system.util.RedisUtil; import com.supersavedriving.driver.modular.system.warpper.DriverPositionWarpper; import com.supersavedriving.driver.modular.system.warpper.OrderPositionWarpper; @@ -34,6 +35,9 @@ @Autowired private IOrderService orderService; + @Autowired + private PushUtil pushUtil; + private Map<String, Integer> map = new HashMap<>(); @@ -48,8 +52,23 @@ @Override public void saveOrderPosition(DriverPositionWarpper driverPositionWarpper) throws Exception { Integer orderId = driverPositionWarpper.getOrderId(); + Integer driverId = driverPositionWarpper.getDriverId(); Order order = orderService.selectById(orderId); - if(order.getState() != 105){ + if(null == order.getDriverId() || order.getDriverId().compareTo(driverId) != 0){ + return; + } + //开始服务提醒 + if(order.getState() == 104){ + String fromLonLat = order.getStartLng() + "," + order.getStartLat(); + String toLonLat = driverPositionWarpper.getLon() + "," + driverPositionWarpper.getLat(); + Map<String, Double> distance = GeodesyUtil.getDistance(fromLonLat, toLonLat); + Double wgs84 = distance.get("WGS84"); + if(wgs84.compareTo(200D) >= 0){ + pushUtil.pushStartServer(2, driverId); + } + } + + if(order.getState() != 105 && order.getState() != 401){ return; } Integer orderType = driverPositionWarpper.getOrderType(); @@ -70,7 +89,15 @@ String toLonLat = orderPositionWarpper1.getLon() + "," + orderPositionWarpper1.getLat(); Map<String, Double> distance = GeodesyUtil.getDistance(fromLonLat, toLonLat); Double wgs84 = distance.get("WGS84"); - if(wgs84 >= 50){ + +// long timeMillis = System.currentTimeMillis(); +// long time = orderPositionWarpper1.getInsertTime().getTime(); +// long t = timeMillis - time; +// if(wgs84 >= 200 && t <= 8){//排除位置漂移 +// return; +// } + + if(wgs84 >= 50){//5秒165米 OrderPositionWarpper orderPositionWarpper = new OrderPositionWarpper(); BeanUtils.copyProperties(driverPositionWarpper, orderPositionWarpper); orderPositionWarpper.setInsertTime(new Date()); @@ -103,7 +130,15 @@ Order order = orderService.selectById(driverPositionWarpper.getOrderId()); Double wgs84 = distance.get("WGS84"); Integer num = map.get(order.getId().toString()); - if(50 < wgs84){ + +// long timeMillis = System.currentTimeMillis(); +// long time = orderPositionWarpper.getInsertTime().getTime(); +// long t = timeMillis - time; +// if(wgs84 >= 200 && t <= 8){//排除位置漂移 +// return; +// } + + if(50 < wgs84){//5秒165米 order.setActualMileage(order.getActualMileage() + wgs84.intValue()); orderService.updateById(order); map.put(order.getId().toString(), 0); @@ -119,10 +154,14 @@ } } } - if(50 >= wgs84 && 12 <= (null == num ? 0 : num)){//1分钟(5秒上传一次数据) + + if(50 >= wgs84 && 6 <= (null == num ? 0 : num)){//30秒(5秒上传一次数据) Integer integer = map.get(order.getId().toString()); - map.put(order.getId().toString(), null == integer ? 0 : integer++); + map.put(order.getId().toString(), null == integer ? 0 : integer + 1); //进入等待状态 + if(order.getState() == 401){ + return; + } ProcessOperationsWarpper processOperationsWarpper = new ProcessOperationsWarpper(); processOperationsWarpper.setOrderId(order.getId()); processOperationsWarpper.setState(401); @@ -132,9 +171,9 @@ e.printStackTrace(); } } - if(50 >= wgs84 && 12 > (null == num ? 0 : num)){ + if(50 >= wgs84 && 6 > (null == num ? 0 : num)){ Integer integer = map.get(order.getId().toString()); - map.put(order.getId().toString(), null == integer ? 0 : integer++); + map.put(order.getId().toString(), null == integer ? 0 : integer + 1); } } @@ -172,4 +211,9 @@ } + @Override + public void initMap(Long orderId) throws Exception { + map.put(orderId.toString(), 0); + } + } -- Gitblit v1.7.1