longz
2026-06-04 da780b14b8db78043d2c0f27d3bfd73111e6d550
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
@@ -98,6 +98,15 @@
    private ITComplaintService tComplaintService;
    @Autowired
    private ITOrderPrivateCarService orderPrivateCarService;
    @Autowired
    private ITOrderTaxiService orderTaxiService;
    @Autowired
    private ITOrderCrossCityService orderCrossCityService;
    @Autowired
    private IUserService userService;
    @Autowired
@@ -894,6 +903,10 @@
        if(ToolUtil.isEmpty(tDriver.getIdCard())){
            return "身份证号不能为空";
        }
        Boolean b = UserUtil.idCardAuth(tDriver.getName(), tDriver.getIdCard());
        if(!b){
            return "司机姓名和身份证号不匹配";
        }
        if (1 == roleType){  //平台
            if (2 == companyType.intValue()){
@@ -1061,6 +1074,12 @@
        if(ToolUtil.isEmpty(tDriver.getIdCard())){
            return "身份证号不能为空";
        }
        Boolean b = UserUtil.idCardAuth(tDriver.getName(), tDriver.getIdCard());
        if(!b){
            return "司机姓名和身份证号不匹配";
        }
        if (1 == roleType){  //平台
            if (2 == companyType.intValue()){
                if (SinataUtil.isNotEmpty(oneId)){
@@ -1145,6 +1164,11 @@
        obj.setUpdateTime(new Date());
        obj.setUpdateUser(ShiroKit.getUser().getId());
        obj.setPlaceOfEmployment(tDriver.getPlaceOfEmployment());
        List<Integer> newServiceTypes = parseDriverServiceTypes(serverBox);
        String unfinishedOrderError = validateDriverCancelledServiceUnfinishedOrders(tDriver.getId(), newServiceTypes);
        if (unfinishedOrderError != null) {
            return unfinishedOrderError;
        }
        tDriverService.updateAllColumnById(obj);
        //删除业务
@@ -1179,6 +1203,69 @@
        }).start();
        return SUCCESS_TIP;
    }
    private List<Integer> parseDriverServiceTypes(String serverBox) {
        List<Integer> serviceTypes = new ArrayList<>();
        if (SinataUtil.isEmpty(serverBox)) {
            return serviceTypes;
        }
        String[] serverArray = serverBox.split(",");
        for (String serviceType : serverArray) {
            if (SinataUtil.isNotEmpty(serviceType)) {
                serviceTypes.add(Integer.valueOf(serviceType));
            }
        }
        return serviceTypes;
    }
    private String validateDriverCancelledServiceUnfinishedOrders(Integer driverId, List<Integer> newServiceTypes) {
        List<Integer> oldServiceTypes = getDriverServiceTypes(driverId);
        if (oldServiceTypes.isEmpty()) {
            return null;
        }
        if (oldServiceTypes.contains(1) && !newServiceTypes.contains(1) && hasUnfinishedPrivateCarOrder(driverId)) {
            return "当前司机存在快车未完成订单,无法变动";
        }
        if (oldServiceTypes.contains(2) && !newServiceTypes.contains(2) && hasUnfinishedTaxiOrder(driverId)) {
            return "当前司机存在出租车未完成订单,无法变动";
        }
        if (oldServiceTypes.contains(3) && !newServiceTypes.contains(3) && hasUnfinishedCrossCityOrder(driverId)) {
            return "当前司机存在跨城出行未完成订单,无法变动";
        }
        return null;
    }
    private List<Integer> getDriverServiceTypes(Integer driverId) {
        List<Integer> serviceTypes = new ArrayList<>();
        List<TDriverService> serviceList = tDriverServiceService.selectList(new EntityWrapper<TDriverService>().eq("driverId", driverId));
        for (TDriverService service : serviceList) {
            if (service != null && service.getType() != null && !serviceTypes.contains(service.getType())) {
                serviceTypes.add(service.getType());
            }
        }
        return serviceTypes;
    }
    private boolean hasUnfinishedPrivateCarOrder(Integer driverId) {
        return orderPrivateCarService.selectCount(new EntityWrapper<TOrderPrivateCar>()
                .eq("isDelete", 1)
                .eq("driverId", driverId)
                .notIn("state", 8, 9, 10, 12)) > 0;
    }
    private boolean hasUnfinishedTaxiOrder(Integer driverId) {
        return orderTaxiService.selectCount(new EntityWrapper<TOrderTaxi>()
                .eq("isDelete", 1)
                .eq("driverId", driverId)
                .notIn("state", 8, 9, 10, 12)) > 0;
    }
    private boolean hasUnfinishedCrossCityOrder(Integer driverId) {
        return orderCrossCityService.selectCount(new EntityWrapper<TOrderCrossCity>()
                .eq("isDelete", 1)
                .eq("driverId", driverId)
                .notIn("state", 8, 9, 10, 12)) > 0;
    }
    /**
@@ -1530,6 +1617,11 @@
                        if (count > 0){
                            continue;
                        }
                        Boolean b = UserUtil.idCardAuth(zero, seven);
                        if(!b){
                            drivers.add(zero);
                            continue;
                        }
                        //判断所属机构
                        if (!one.equals("平台司机") && !one.equals("加盟司机")){
                            return new ErrorTip(500, "所属机构内容不正确");
@@ -1875,6 +1967,11 @@
                            continue;
                        }
                        Boolean b = UserUtil.idCardAuth(zero, seven);
                        if(!b){
                            drivers.add(zero);
                            continue;
                        }
                        //判断性别
                        if (!two.equals("男") && !two.equals("女")){
                            return new ErrorTip(500, "性别内容不正确");
@@ -2206,6 +2303,12 @@
                        if (count > 0){
                            continue;
                        }
                        Boolean b = UserUtil.idCardAuth(zero, four);
                        if(!b){
                            drivers.add(zero);
                            continue;
                        }
                        //判断性别
                        if (!one.equals("男") && !one.equals("女")){
                            return new ErrorTip(500, "性别内容不正确");