From 14f96ba18b58cda204d10608c1abfe9a1d78a495 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 10 六月 2026 20:21:31 +0800
Subject: [PATCH] bug fix

---
 ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java |   74 ++++++++++++++++++++++++++-----------
 1 files changed, 52 insertions(+), 22 deletions(-)

diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
index 427221b..5b4b29e 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
@@ -72,7 +72,13 @@
 	private ITDriverServiceService tDriverServiceService;
 
 	@Autowired
-	private IDriverWorkService driverWorkService;
+	private ITOrderPrivateCarService orderPrivateCarService;
+
+	@Autowired
+	private ITOrderTaxiService orderTaxiService;
+
+	@Autowired
+	private ITOrderCrossCityService orderCrossCityService;
 
     @Autowired
     private ITCarService tCarService;
@@ -774,7 +780,7 @@
 		return false;
 	}
 
-	private String validateCancelledServiceDriverUsage(TCompany oldCompany, TCompany newCompany, boolean includeFranchisee) {
+	private String validateCancelledServiceDriverUsage(TCompany oldCompany, TCompany newCompany, boolean includeSubCompanies) {
 		if (oldCompany == null || newCompany == null) {
 			return null;
 		}
@@ -782,12 +788,12 @@
 		if (cancelledTypes.isEmpty()) {
 			return null;
 		}
-		List<Integer> driverIds = getCompanyDriverIds(oldCompany.getId(), includeFranchisee);
+		List<Integer> driverIds = getCompanyDriverIds(oldCompany.getId(), includeSubCompanies);
 		if (driverIds.isEmpty()) {
 			return null;
 		}
 		for (Integer cancelledType : cancelledTypes) {
-			if (hasDriverWorkingService(driverIds, cancelledType)) {
+			if (hasDriverUnfinishedOrder(driverIds, cancelledType)) {
 				return "当前公司内存在司机正在使用" + getServiceName(cancelledType) + "业务,无法变动";
 			}
 		}
@@ -808,22 +814,31 @@
 		return cancelledTypes;
 	}
 
-	private List<Integer> getCompanyDriverIds(Integer companyId, boolean includeFranchisee) {
+	private List<Integer> getCompanyDriverIds(Integer companyId, boolean includeSubCompanies) {
 		List<Integer> driverIds = new ArrayList<>();
-		List<TDriver> companyDrivers = tDriverService.selectList(new EntityWrapper<TDriver>().ne("flag", "3").eq("companyId", companyId));
-		addDriverIds(driverIds, companyDrivers);
-		if (!includeFranchisee) {
-			List<TDriver> franchiseeDrivers = tDriverService.selectList(new EntityWrapper<TDriver>().ne("flag", "3").eq("franchiseeId", companyId));
-			addDriverIds(driverIds, franchiseeDrivers);
-		}
-		if (includeFranchisee) {
-			List<TCompany> franchiseeList = tCompanyService.selectList(new EntityWrapper<TCompany>().eq("superiorId", companyId).eq("type", 3).ne("flag", "3"));
-			for (TCompany franchisee : franchiseeList) {
-				List<TDriver> franchiseeDrivers = tDriverService.selectList(new EntityWrapper<TDriver>().ne("flag", "3").eq("franchiseeId", franchisee.getId()));
-				addDriverIds(driverIds, franchiseeDrivers);
-			}
+		List<Integer> companyIds = new ArrayList<>();
+		addCompanyAndSubCompanyIds(companyIds, companyId, includeSubCompanies);
+		for (Integer id : companyIds) {
+			addDriverIds(driverIds, tDriverService.selectList(new EntityWrapper<TDriver>().ne("flag", "3").eq("companyId", id)));
+			addDriverIds(driverIds, tDriverService.selectList(new EntityWrapper<TDriver>().ne("flag", "3").eq("franchiseeId", id)));
 		}
 		return driverIds;
+	}
+
+	private void addCompanyAndSubCompanyIds(List<Integer> companyIds, Integer companyId, boolean includeSubCompanies) {
+		if (companyId == null || companyIds.contains(companyId)) {
+			return;
+		}
+		companyIds.add(companyId);
+		if (!includeSubCompanies) {
+			return;
+		}
+		List<TCompany> childCompanies = tCompanyService.selectList(new EntityWrapper<TCompany>().eq("superiorId", companyId).ne("flag", "3"));
+		for (TCompany childCompany : childCompanies) {
+			if (childCompany != null) {
+				addCompanyAndSubCompanyIds(companyIds, childCompany.getId(), true);
+			}
+		}
 	}
 
 	private void addDriverIds(List<Integer> driverIds, List<TDriver> drivers) {
@@ -837,14 +852,29 @@
 		}
 	}
 
-	private boolean hasDriverWorkingService(List<Integer> driverIds, Integer serviceType) {
+	private boolean hasDriverUnfinishedOrder(List<Integer> driverIds, Integer serviceType) {
 		if (driverIds == null || driverIds.isEmpty() || serviceType == null) {
 			return false;
 		}
-		return driverWorkService.selectCount(new EntityWrapper<DriverWork>()
-			.in("driverId", driverIds)
-			.eq("state", 1)
-			.like("type", String.valueOf(serviceType))) > 0;
+		if (Integer.valueOf(1).equals(serviceType)) {
+			return orderPrivateCarService.selectCount(new EntityWrapper<TOrderPrivateCar>()
+				.eq("isDelete", 1)
+				.in("driverId", driverIds)
+				.notIn("state", 8, 9, 10, 12)) > 0;
+		}
+		if (Integer.valueOf(2).equals(serviceType)) {
+			return orderTaxiService.selectCount(new EntityWrapper<TOrderTaxi>()
+				.eq("isDelete", 1)
+				.in("driverId", driverIds)
+				.notIn("state", 8, 9, 10, 12)) > 0;
+		}
+		if (Integer.valueOf(3).equals(serviceType)) {
+			return orderCrossCityService.selectCount(new EntityWrapper<TOrderCrossCity>()
+				.eq("isDelete", 1)
+				.in("driverId", driverIds)
+				.notIn("state", 8, 9, 10, 12)) > 0;
+		}
+		return false;
 	}
 
 	private String getServiceName(Integer serviceType) {

--
Gitblit v1.7.1