From 6771fff413935485b5dce61769f133a44533d15c Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期六, 30 五月 2026 14:35:14 +0800
Subject: [PATCH] fix

---
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java |   77 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 77 insertions(+), 0 deletions(-)

diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
index ee224a0..6b44ce1 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
+++ b/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
@@ -1155,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);
 
         //删除业务
@@ -1191,6 +1205,69 @@
         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;
+    }
+
     /**
      * 下载模板
      * @param request

--
Gitblit v1.7.1