longz
2026-05-18 0ffd0dc267f12e7208ea4c636ff1bf6771d43ad1
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -27,6 +27,7 @@
import com.stylefeng.guns.modular.system.warpper.MerchantCouponListWarpper;
import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -684,35 +685,70 @@
            lineShiftDriver.setLaveSeatNumber("");
        }else{//拼车
            lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() - orderCrossCity.getPeopleNumber());
            String[] split = orderCrossCity.getSeatNumber().split(",");
            String[] split1 = lineShiftDriver.getLaveSeatNumber().split(",");
            String seatNumber = "";
            //先判断选中座位号和剩余座位号是否匹配
            for(String spl : split){
                boolean b = true;
                for(String sp : split1){
                    if(ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)){
                        b = false;
                        break;
                    }
                }
                if(b){
                    throw new SystemException("您选中的" + spl + "号座位已被占用,请选择其他座位!");
                }
            }
            for(String sp : split1){
                boolean b = true;
            if (StringUtils.isNotEmpty(orderCrossCity.getSeatNumber())){
                // 用户已选座的情况
                String[] split = orderCrossCity.getSeatNumber().split(",");
                String seatNumber = "";
                //先判断选中座位号和剩余座位号是否匹配
                for(String spl : split){
                    if(ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)){
                        b = false;
                        break;
                    boolean b = true;
                    for(String sp : split1){
                        if(ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)){
                            b = false;
                            break;
                        }
                    }
                    if(b){
                        throw new SystemException("您选中的" + spl + "号座位已被占用,请选择其他座位!");
                    }
                }
                if(b && ToolUtil.isNotEmpty(sp)){
                    seatNumber += (sp + ",");
                for(String sp : split1){
                    boolean b = true;
                    for(String spl : split){
                        if(ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)){
                            b = false;
                            break;
                        }
                    }
                    if(b && ToolUtil.isNotEmpty(sp)){
                        seatNumber += (sp + ",");
                    }
                }
                lineShiftDriver.setLaveSeatNumber(ToolUtil.isNotEmpty(seatNumber) ? seatNumber.substring(0, seatNumber.length() - 1) : "");
            } else {
                // 用户未选座的情况,自动分配剩余座位的前peopleNumber个
                StringBuilder assignedSeats = new StringBuilder();
                StringBuilder remainingSeats = new StringBuilder();
                for(int i = 0; i < split1.length; i++){
                    if(ToolUtil.isEmpty(split1[i])){
                        continue;
                    }
                    if(i < orderCrossCity.getPeopleNumber()){
                        // 分配给当前订单的座位
                        if(assignedSeats.length() > 0){
                            assignedSeats.append(",");
                        }
                        assignedSeats.append(split1[i]);
                    } else {
                        // 剩余的座位
                        if(remainingSeats.length() > 0){
                            remainingSeats.append(",");
                        }
                        remainingSeats.append(split1[i]);
                    }
                }
                // 设置订单的座位号
                orderCrossCity.setSeatNumber(assignedSeats.toString());
                this.updateById(orderCrossCity);
                // 更新班次的剩余座位号
                lineShiftDriver.setLaveSeatNumber(remainingSeats.toString());
            }
            lineShiftDriver.setLaveSeatNumber(ToolUtil.isNotEmpty(seatNumber) ? seatNumber.substring(0, seatNumber.length() - 1) : "");
        }
        lineShiftDriverMapper.updateById(lineShiftDriver);
@@ -1607,11 +1643,11 @@
            return ResultUtil.error("该乘客有未完成的订单");
        }
        // 9. 检查司机是否正在服务中
        List<OrderCrossCity> orderCrossCities2 = orderCrossCityMapper.queryOrders(driverId, warpper.getLineShiftDriverId(), Arrays.asList(5));
        if (orderCrossCities2.size() > 0) {
            return ResultUtil.error("司机正在服务中");
        }
//        // 9. 检查司机是否正在服务中
//        List<OrderCrossCity> orderCrossCities2 = orderCrossCityMapper.queryOrders(driverId, warpper.getLineShiftDriverId(), Arrays.asList(5));
//        if (orderCrossCities2.size() > 0) {
//            return ResultUtil.error("司机正在服务中");
//        }
//        // 10. 计算价格
//        Map<String, String> distanceMap = gdMapElectricFenceUtil.getDistance(