liujie
6 天以前 2f2b4c7ed80ee5132718523e0c7e7e2956aaf27d
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -180,7 +180,11 @@
   @Autowired
   private TAbnormalPayOrderMapper abnormalPayOrderMapper;
   @Resource
   private CarMapper carMapper;
   @Resource
   private CarModelMapper carModelMapper;
   @Autowired
   private TDriverPromotionActivityService driverPromotionActivityService;
@@ -1982,17 +1986,30 @@
               }
            }).start();
         }
         Driver driver = driverService.selectById(orderCrossCity.getDriverId());
         
         //修改司机座位
         LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
         lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber());
         lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity.getTravelMode() == 1 ? "," : "") + orderCrossCity.getSeatNumber());
         lineShiftDriverMapper.updateById(lineShiftDriver);
         if(1 == orderCrossCity.getTravelMode()){
            LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
            lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber());
            lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity.getTravelMode() == 1 ? "," : "") + orderCrossCity.getSeatNumber());
            lineShiftDriverMapper.updateById(lineShiftDriver);
         }else{
            Car car = carMapper.selectById(driver.getCarId());
            CarModel carModel = carModelMapper.selectById(car.getCarModelId());
            LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
            lineShiftDriver.setLaveSeat(carModel.getSeat() - 1);
            String seatNumber = "";
            for(int i = 1; i < carModel.getSeat(); i++){
               seatNumber += i + ",";
            }
            lineShiftDriver.setLaveSeatNumber(seatNumber.substring(0, seatNumber.length() - 1));
            lineShiftDriverMapper.updateById(lineShiftDriver);
         }
         
         //修改司机为空闲
         List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11);
         if (orderCrossCities.size() == 0) {
            Driver driver = driverService.selectById(orderCrossCity.getDriverId());
            driver.setState(2);
            driverService.updateById(driver);
         }
@@ -2100,64 +2117,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("dache: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();
   }