liujie
2025-08-26 47bcf9179315ad192fe0d1ef0257afc9b9bfcb80
DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -464,73 +464,78 @@
        OrderCrossCity tOrderCrossCity = orderCrossCityService.selectById(tReassign.getOrderId());
        Driver oldDriver = driverService.selectById(tReassign.getOriginalDriverId());
        LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(tOrderCrossCity.getLineShiftDriverId());
        lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + tOrderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat() ?
                lineShiftDriver.getTotalSeat() : lineShiftDriver.getLaveSeat() + tOrderCrossCity.getPeopleNumber());
        String seat = "";
        String[] split = tOrderCrossCity.getSeatNumber().split(",");
        for(String s : split){
            seat += s + ",";
        }
        seat = lineShiftDriver.getLaveSeatNumber() + "," + seat.substring(0, seat.length() - 1);
        if(lineShiftDriver!=null){
            lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + tOrderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat() ?
                    lineShiftDriver.getTotalSeat() : lineShiftDriver.getLaveSeat() + tOrderCrossCity.getPeopleNumber());
        //总和大于总座位数的情况
        if(lineShiftDriver.getLaveSeat() + tOrderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat()){
            seat = "";
            for(int i = 1; i <= lineShiftDriver.getTotalSeat(); i++){
                seat += i + ",";
            String seat = "";
            String[] split = tOrderCrossCity.getSeatNumber().split(",");
            for(String s : split){
                seat += s + ",";
            }
            seat = seat.substring(0, seat.length() - 1);
        }
        lineShiftDriver.setLaveSeatNumber(seat);
        lineShiftDriverMapper.updateById(lineShiftDriver);
        if(lineShiftDriver.getLaveSeat() >= lineShiftDriver.getTotalSeat()){
            oldDriver.setState(2);
            driverService.updateById(oldDriver);
        }
            seat = lineShiftDriver.getLaveSeatNumber() + "," + seat.substring(0, seat.length() - 1);
        //修改新司机数据
        List<LineShiftDriver> query = lineShiftDriverMapper.queryByDriver(lineShiftDriver.getLineShiftId(), driverId, tOrderCrossCity.getTravelTime());
        LineShiftDriver lineShiftDriver1 = null;
            //总和大于总座位数的情况
            if(lineShiftDriver.getLaveSeat() + tOrderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat()){
                seat = "";
                for(int i = 1; i <= lineShiftDriver.getTotalSeat(); i++){
                    seat += i + ",";
                }
                seat = seat.substring(0, seat.length() - 1);
            }
            lineShiftDriver.setLaveSeatNumber(seat);
            lineShiftDriverMapper.updateById(lineShiftDriver);
            if(lineShiftDriver.getLaveSeat() >= lineShiftDriver.getTotalSeat()){
                oldDriver.setState(2);
                driverService.updateById(oldDriver);
            }
        if(query.size() == 0){
            //修改新司机数据
            List<LineShiftDriver> query = lineShiftDriverMapper.queryByDriver(lineShiftDriver.getLineShiftId(), driverId, tOrderCrossCity.getTravelTime());
            LineShiftDriver lineShiftDriver1 = null;
            if(query.size() == 0){
//            return ResultUtil.error("司机没有预约班次");
            CarModel carModel = carModelMapper.selectById(carService.selectById(driverService.selectById(driverId).getCarId()).getCarModelId());
                CarModel carModel = carModelMapper.selectById(carService.selectById(driverService.selectById(driverId).getCarId()).getCarModelId());
            LineShiftDriver lineShiftDriver0 = new LineShiftDriver();
            lineShiftDriver0.setLineShiftId(lineShiftDriver.getLineShiftId());
            lineShiftDriver0.setDriverId(driverId);
            lineShiftDriver0.setDay(lineShiftDriver.getDay());
            lineShiftDriver0.setTotalSeat(carModel.getSeat() - 1);
            lineShiftDriver0.setLaveSeat(carModel.getSeat() - 1);
            lineShiftDriver0.setInserTime(new Date());
            String seatNumber = "";
            for(int i = 1; i < carModel.getSeat(); i++){
                seatNumber += i + ",";
                LineShiftDriver lineShiftDriver0 = new LineShiftDriver();
                lineShiftDriver0.setLineShiftId(lineShiftDriver.getLineShiftId());
                lineShiftDriver0.setDriverId(driverId);
                lineShiftDriver0.setDay(lineShiftDriver.getDay());
                lineShiftDriver0.setTotalSeat(carModel.getSeat() - 1);
                lineShiftDriver0.setLaveSeat(carModel.getSeat() - 1);
                lineShiftDriver0.setInserTime(new Date());
                String seatNumber = "";
                for(int i = 1; i < carModel.getSeat(); i++){
                    seatNumber += i + ",";
                }
                lineShiftDriver0.setLaveSeatNumber(seatNumber.substring(0, seatNumber.length() - 1));
                Integer insert = lineShiftDriverMapper.insert(lineShiftDriver0);
                lineShiftDriver1 = lineShiftDriver0;
            }else {
                lineShiftDriver1 = query.get(0);
            }
            lineShiftDriver0.setLaveSeatNumber(seatNumber.substring(0, seatNumber.length() - 1));
            if(lineShiftDriver1.getLaveSeat() < tOrderCrossCity.getPeopleNumber()){
                return ResultUtil.runErr("司机车辆剩余座位数不足");
            }
            lineShiftDriver1.setLaveSeat(lineShiftDriver1.getLaveSeat() - tOrderCrossCity.getPeopleNumber());
            String[] split1 = lineShiftDriver1.getLaveSeatNumber().split(",");
            String seat1 = "";//使用
            String seat2 = "";//未使用
            for(int i = 0; i < tOrderCrossCity.getPeopleNumber(); i++){
                seat1 += split1[i] + ",";
            }
            for(int i = tOrderCrossCity.getPeopleNumber(); i < split1.length; i++){
                seat2 += split1[i] + ",";
            }
            lineShiftDriver1.setLaveSeatNumber(seat2);
            lineShiftDriverMapper.updateById(lineShiftDriver1);
        }
            Integer insert = lineShiftDriverMapper.insert(lineShiftDriver0);
            lineShiftDriver1 = lineShiftDriver0;
        }else {
             lineShiftDriver1 = query.get(0);
        }
        if(lineShiftDriver1.getLaveSeat() < tOrderCrossCity.getPeopleNumber()){
            return ResultUtil.runErr("司机车辆剩余座位数不足");
        }
        lineShiftDriver1.setLaveSeat(lineShiftDriver1.getLaveSeat() - tOrderCrossCity.getPeopleNumber());
        String[] split1 = lineShiftDriver1.getLaveSeatNumber().split(",");
        String seat1 = "";//使用
        String seat2 = "";//未使用
        for(int i = 0; i < tOrderCrossCity.getPeopleNumber(); i++){
            seat1 += split1[i] + ",";
        }
        for(int i = tOrderCrossCity.getPeopleNumber(); i < split1.length; i++){
            seat2 += split1[i] + ",";
        }
        lineShiftDriver1.setLaveSeatNumber(seat2);
        lineShiftDriverMapper.updateById(lineShiftDriver1);
        Driver driver = driverService.selectById(driverId);
//        if(driver.getState() == 1){
//            return ResultUtil.error("司机还未上班呢");
@@ -542,9 +547,9 @@
        //修改订单数据
        tOrderCrossCity.setDriverId(driverId);
        tOrderCrossCity.setCarId(driver.getCarId());
        tOrderCrossCity.setSeatNumber(seat1);
//        tOrderCrossCity.setSeatNumber(seat1);
        tOrderCrossCity.setState(tOrderCrossCity.getOldState());
        tOrderCrossCity.setLineShiftDriverId(lineShiftDriver1.getId());
//        tOrderCrossCity.setLineShiftDriverId(lineShiftDriver1.getId());
        tOrderCrossCity.setOldState(null);
        tOrderCrossCity.setIsReassign(2);
        try {
@@ -553,7 +558,7 @@
            e.printStackTrace();
        }
        orderCrossCityService.updateAllColumnById(tOrderCrossCity);
        oldDriver.setState(2);
        //修改专车改派订单
        tReassign.setNowDriverId(driverId);
        tReassign.setNowCarId(driver.getCarId());