liujie
2025-08-08 f604df04d1f9fe90ee543a1772a3a8cdb50d3d66
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -2100,64 +2100,67 @@
   @Override
   public OrderServerWarpper queryOrderServer(Integer orderId, Integer uid) throws Exception {
      OrderCrossCity orderCrossCity = this.selectById(orderId);
      //计算预计距离和剩余时间
      String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(orderCrossCity.getDriverId()));
      if (null == value || "".equals(value)) {
         System.err.println("司机没有上传位置信息");
      if(null != orderCrossCity){
         //计算预计距离和剩余时间
         String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(orderCrossCity.getDriverId()));
         if (null == value || "".equals(value)) {
            System.err.println("司机没有上传位置信息");
            //调用获取轨迹中的数据
            List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 3);
            if (list.size() > 0) {
               Map<String, Object> map = list.get(list.size() - 1);
               value = map.get("lon") + "," + map.get("lat");
            }
         }
         
         //调用获取轨迹中的数据
         List<Map<String, Object>> list = orderPositionService.queryTrack(orderId, 3);
         if (list.size() > 0) {
            Map<String, Object> map = list.get(list.size() - 1);
            value = map.get("lon") + "," + map.get("lat");
         OrderServerWarpper orderServerWarpper = new OrderServerWarpper();
         orderServerWarpper.setOrderId(orderCrossCity.getId());
         orderServerWarpper.setOrderType(3);
         orderServerWarpper.setState(orderCrossCity.getState());
         orderServerWarpper.setLon(null != value ? value.split(",")[0] : "0.0");
         orderServerWarpper.setLat(null != value ? value.split(",")[1] : "0.0");
         orderServerWarpper.setReassignNotice(orderCrossCity.getReassignNotice());
         if (orderCrossCity.getState() == 2 || orderCrossCity.getState() == 3) {//前往预约地
            // TODO: 2023/11/4 无法修改
            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderCrossCity.getStartLon() + "," + orderCrossCity.getStartLat(), 1);
            String d = "0";
            String t = "0";
            if (null == distance) {
               System.err.println("查询距离出错了");
            } else {
               d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString();
               t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + "";
            }
            orderServerWarpper.setReservationMileage(d);
            orderServerWarpper.setReservationTime(t);
            orderServerWarpper.setServedMileage("0");
            orderServerWarpper.setServedTime("0");
            orderServerWarpper.setLaveMileage("0");
            orderServerWarpper.setLaveTime("0");
         }
      }
      OrderServerWarpper orderServerWarpper = new OrderServerWarpper();
      orderServerWarpper.setOrderId(orderCrossCity.getId());
      orderServerWarpper.setOrderType(3);
      orderServerWarpper.setState(orderCrossCity.getState());
      orderServerWarpper.setLon(null != value ? value.split(",")[0] : "0.0");
      orderServerWarpper.setLat(null != value ? value.split(",")[1] : "0.0");
      orderServerWarpper.setReassignNotice(orderCrossCity.getReassignNotice());
      if (orderCrossCity.getState() == 2 || orderCrossCity.getState() == 3) {//前往预约地
         // TODO: 2023/11/4 无法修改
         Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderCrossCity.getStartLon() + "," + orderCrossCity.getStartLat(), 1);
         String d = "0";
         String t = "0";
         if (null == distance) {
            System.err.println("查询距离出错了");
         } else {
            d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString();
            t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + "";
         if (orderCrossCity.getState() == 5 || orderCrossCity.getState() == 6) {//服务中
            // TODO: 2023/11/4 无法修改
            Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderCrossCity.getEndLon() + "," + orderCrossCity.getEndLat(), 1);
            String d = "0";
            String t = "0";
            if (null == distance) {
               System.err.println("查询距离出错了");
            } else {
               d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString();
               t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + "";
            }
            orderServerWarpper.setReservationMileage("0");
            orderServerWarpper.setReservationTime("0");
            orderServerWarpper.setServedMileage(String.valueOf(orderCrossCity.getMileage() / 1000));
            orderServerWarpper.setServedTime(Long.valueOf((new Date().getTime() - orderCrossCity.getStartServiceTime().getTime()) / 60000).intValue() + "");
            orderServerWarpper.setLaveMileage(d);
            orderServerWarpper.setLaveTime(t);
         }
         orderServerWarpper.setReservationMileage(d);
         orderServerWarpper.setReservationTime(t);
         orderServerWarpper.setServedMileage("0");
         orderServerWarpper.setServedTime("0");
         orderServerWarpper.setLaveMileage("0");
         orderServerWarpper.setLaveTime("0");
         return orderServerWarpper;
      }
      if (orderCrossCity.getState() == 5 || orderCrossCity.getState() == 6) {//服务中
         // TODO: 2023/11/4 无法修改
         Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, orderCrossCity.getEndLon() + "," + orderCrossCity.getEndLat(), 1);
         String d = "0";
         String t = "0";
         if (null == distance) {
            System.err.println("查询距离出错了");
         } else {
            d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString();
            t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + "";
         }
         orderServerWarpper.setReservationMileage("0");
         orderServerWarpper.setReservationTime("0");
         orderServerWarpper.setServedMileage(String.valueOf(orderCrossCity.getMileage() / 1000));
         orderServerWarpper.setServedTime(Long.valueOf((new Date().getTime() - orderCrossCity.getStartServiceTime().getTime()) / 60000).intValue() + "");
         orderServerWarpper.setLaveMileage(d);
         orderServerWarpper.setLaveTime(t);
      }
      return orderServerWarpper;
      return new OrderServerWarpper();
   }