From 4ba348b700fd7f461f754a283eaeeba3fc9ff36c Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期六, 25 二月 2023 16:16:33 +0800 Subject: [PATCH] 新增加司机端接口 --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java | 64 ++++++++++++++++++++++++++++++- 1 files changed, 61 insertions(+), 3 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 2602b9f..ae3613d 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 @@ -6,20 +6,23 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.supersavedriving.driver.core.util.ToolUtil; import com.supersavedriving.driver.modular.system.model.DriverWork; +import com.supersavedriving.driver.modular.system.model.Order; import com.supersavedriving.driver.modular.system.service.IDriverWorkService; import com.supersavedriving.driver.modular.system.service.IOrderPositionService; +import com.supersavedriving.driver.modular.system.service.IOrderService; +import com.supersavedriving.driver.modular.system.util.GeodesyUtil; +import com.supersavedriving.driver.modular.system.util.RedisUtil; import com.supersavedriving.driver.modular.system.util.ResultUtil; import com.supersavedriving.driver.modular.system.warpper.DriverPositionWarpper; import com.supersavedriving.driver.modular.system.warpper.OrderPositionWarpper; +import com.supersavedriving.driver.modular.system.warpper.ProcessOperationsWarpper; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.*; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 订单轨迹逻辑类 @@ -29,6 +32,14 @@ @Value("${filePath}") private String filePath; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private IOrderService orderService; + + private Map<String, Integer> map = new HashMap<>(); @@ -49,6 +60,10 @@ file.createNewFile(); } List<OrderPositionWarpper> orderPositionWarppers = queryPosition(orderId, orderType); + if(orderPositionWarppers.size() > 0){ + OrderPositionWarpper orderPositionWarpper = orderPositionWarppers.get(orderPositionWarppers.size() - 1); + saveOrderMileage(driverPositionWarpper, orderPositionWarpper); + } OrderPositionWarpper orderPositionWarpper = new OrderPositionWarpper(); BeanUtils.copyProperties(driverPositionWarpper, orderPositionWarpper); orderPositionWarpper.setInsertTime(new Date()); @@ -63,6 +78,49 @@ /** + * 保存行驶里程 + * @param driverPositionWarpper + * @param orderPositionWarpper + */ + public void saveOrderMileage(DriverPositionWarpper driverPositionWarpper, OrderPositionWarpper orderPositionWarpper){ + String fromLonLat = driverPositionWarpper.getLon() + "," + driverPositionWarpper.getLat(); + String toLonLat = orderPositionWarpper.getLon() + "," + orderPositionWarpper.getLat(); + Map<String, Double> distance = GeodesyUtil.getDistance(fromLonLat, toLonLat); + Order order = orderService.selectById(driverPositionWarpper.getOrderId()); + Double wgs84 = distance.get("WGS84"); + Integer num = map.get(order.getId().toString()); + if(50 < wgs84){ + order.setActualMileage(order.getActualMileage() + wgs84.intValue()); + map.put(order.getId().toString(), 0); + + if(order.getState() == 401){//定位变动,自动开始服务 + ProcessOperationsWarpper processOperationsWarpper = new ProcessOperationsWarpper(); + processOperationsWarpper.setOrderId(order.getId()); + processOperationsWarpper.setState(105); + try { + orderService.driverProcessOperations(order.getDriverId(), processOperationsWarpper); + } catch (Exception e) { + e.printStackTrace(); + } + } + + } + if(50 >= wgs84 && 12 <= (null == num ? 0 : num)){//1分钟(5秒上传一次数据) + Integer integer = map.get(order.getId().toString()); + map.put(order.getId().toString(), integer++); + order.setState(401);//进入等待状态 + order.setStartWaitTime(new Date()); + } + if(50 >= wgs84 && 12 > (null == num ? 0 : num)){ + Integer integer = map.get(order.getId().toString()); + map.put(order.getId().toString(), integer++); + } + } + + + + + /** * 获取订单坐标数据 * @param orderId * @param orderType -- Gitblit v1.7.1