Pu Zhibing
1 天以前 51e1b16fcef453674897b96df4466f3fb58b83f7
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -232,8 +232,7 @@
        Driver driver = driverService.selectById(uid);
        orderPrivateCar.setDriverId(uid);
        orderPrivateCar.setCarId(driver.getCarId());
        orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : (
                driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1));
        orderPrivateCar.setCompanyId(driver.getCompanyId());
        orderPrivateCar.setState(2);
        orderPrivateCar.setSnatchOrderTime(new Date());
        if(!StringUtils.hasLength(orderPrivateCar.getTripId())){
@@ -309,10 +308,10 @@
            }
        }else{
            //开始修改行程数据
            boolean updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
            boolean updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null, orderPrivateCar.getId(), 1);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
                    updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null, orderPrivateCar.getId(), 1);
                    if(updateTrip){
                        break;
                    }
@@ -444,8 +443,8 @@
        new Thread(new Runnable() {
            @Override
            public void run() {
                pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
                pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
                pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "driver");
                pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "driver");
                if(orderPrivateCar.getType() == 2){
                    pushUtil.pushFerryOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, 2);
                }
@@ -596,6 +595,9 @@
                }
                break;
            case 6://结束服务(专车可以返回继续服务)不修改状态
                if(null == lon || null == lat){
                    return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid longitude and latitude" : "Longitude et latitude non valides");
                }
                orderPrivateCar.setState(6);
                orderPrivateCar.setGetoffLon(lon);
                orderPrivateCar.setGetoffLat(lat);
@@ -621,10 +623,10 @@
        //修改行程数据
        if(ToolUtil.isNotEmpty(tripStatus)){
            Car car = carService.selectById(orderPrivateCar.getCarId());
            boolean updateTrip = fleetEngineUtil.updateTrip(tripStatus, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
            boolean updateTrip = fleetEngineUtil.updateTrip(tripStatus, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null, orderPrivateCar.getId(), 1);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip(tripStatus, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
                    updateTrip = fleetEngineUtil.updateTrip(tripStatus, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null, orderPrivateCar.getId(), 1);
                    if(updateTrip){
                        break;
                    }
@@ -643,8 +645,8 @@
        new Thread(new Runnable() {
            @Override
            public void run() {
                pushUtil.pushOrderState(1, finalOrderPrivateCar.getUserId(), finalOrderPrivateCar.getId(), 1, finalOrderPrivateCar.getState(), 0, "");
                pushUtil.pushOrderState(2, finalOrderPrivateCar.getDriverId(), finalOrderPrivateCar.getId(), 1, finalOrderPrivateCar.getState(), 0, "");
                pushUtil.pushOrderState(1, finalOrderPrivateCar.getUserId(), finalOrderPrivateCar.getId(), 1, finalOrderPrivateCar.getState(), 0, "", "driver");
                pushUtil.pushOrderState(2, finalOrderPrivateCar.getDriverId(), finalOrderPrivateCar.getId(), 1, finalOrderPrivateCar.getState(), 0, "", "driver");
            }
        }).start();
        return ResultUtil.success(audioUrl);
@@ -673,7 +675,19 @@
        if(orderPrivateCar.getArriveTime()==null){
            orderPrivateCar.setArriveTime(orderPrivateCar.getStartServiceTime());
        }
        if(null == orderPrivateCar.getEndServiceTime()){
            orderPrivateCar.setEndServiceTime(new Date());
        }
        //实际里程小于预估里程95%或者大于5%,则使用预估里程进行计算价格
        Double startLat = orderPrivateCar.getStartLat();
        Double startLon = orderPrivateCar.getStartLon();
        Double getoffLon = orderPrivateCar.getGetoffLon();
        Double getoffLat = orderPrivateCar.getGetoffLat();
        DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(startLat, startLon, getoffLat, getoffLon, orderPrivateCar.getTripId());
        double ce = orderPrivateCar.getMileage() / distancematrix.getDistance().doubleValue();
        if(ce < 0.95 || ce > 1.05){
            orderPrivateCar.setMileage(distancematrix.getDistance().doubleValue());
        }
        orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D);//计算费用
        orderPrivateCar.setPayManner(type);
        orderPrivateCar.setParkMoney(null == parkingFee ? 0D : parkingFee);
@@ -732,12 +746,17 @@
//        }
        this.updateById(orderPrivateCar);
        
        //回滚司机状态为空闲
        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
        driver.setState(2);
        driverService.updateById(driver);
        //修改行程数据
        Car car = carService.selectById(orderPrivateCar.getCarId());
        boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
        boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null, orderPrivateCar.getId(), 1);
        if(!updateTrip){
            for (int i = 0; i < 5; i++) {
                updateTrip = fleetEngineUtil.updateTrip("COMPLETE", car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
                updateTrip = fleetEngineUtil.updateTrip("COMPLETE", car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null, orderPrivateCar.getId(), 1);
                if(updateTrip){
                    orderPrivateCar.setIsover(1);
                    this.updateById(orderPrivateCar);
@@ -746,7 +765,7 @@
                try {
                    Thread.sleep(3000L);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                    e.printStackTrace();
                }
            }
        }else{
@@ -765,7 +784,7 @@
                try {
                    Thread.sleep(3000L);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                    e.printStackTrace();
                }
            }
        }
@@ -777,17 +796,14 @@
        systemNoticeService.addSystemNotice(1, language1 == 1 ? "司机已结束本次行程,谢谢使用" : language1 == 2 ?
                "The driver has finished the trip,thank you for using I-GO" : "Le chauffeur a terminé le trajet, merci d'utiliser I-GO", orderPrivateCar.getUserId());
        //回滚司机状态为空闲
        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
        driver.setState(2);
        driverService.updateById(driver);
        OrderPrivateCar finalOrderTaxi = orderPrivateCar;
        new Thread(new Runnable() {
            @Override
            public void run() {
                pushUtil.pushOrderState(1, finalOrderTaxi.getUserId(), finalOrderTaxi.getId(), 1, finalOrderTaxi.getState(), 0, "");
                pushUtil.pushOrderState(2, finalOrderTaxi.getDriverId(), finalOrderTaxi.getId(), 1, finalOrderTaxi.getState(), 0, "");
                pushUtil.pushOrderState(1, finalOrderTaxi.getUserId(), finalOrderTaxi.getId(), 1, finalOrderTaxi.getState(), 0, "", "driver");
                pushUtil.pushOrderState(2, finalOrderTaxi.getDriverId(), finalOrderTaxi.getId(), 1, finalOrderTaxi.getState(), 0, "", "driver");
            }
        }).start();
    
@@ -1148,11 +1164,11 @@
            //修改google地图行程终点
            Car car = carService.selectById(orderPrivateCar.getCarId());
            boolean updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(),
                    null, null, orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                    null, null, orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString(), orderPrivateCar.getId(), 1);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(),
                            null, null, orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                            null, null, orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString(), orderPrivateCar.getId(), 1);
                    if(updateTrip){
                        break;
                    }