| 
					
				 | 
			
			
				@@ -37,7 +37,7 @@ public class OrderPickTimeConfigLogic { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .in(StringUtils.isBlank(adminUser.getCompanyWechatId()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         && CollectionUtil.isNotEmpty(adminUser.getCompanyWechatIds()), OrderPickTimeConfig::getCompanyWechatId, adminUser.getCompanyWechatIds()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .eq(OrderPickTimeConfig::getStorageId, storageId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .orderByDesc(OrderPickTimeConfig::getId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .orderByAsc(OrderPickTimeConfig::getId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .list(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -96,18 +96,17 @@ public class OrderPickTimeConfigLogic { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new RemoteServiceException("提货时间配置列表不能为空"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 2. 按照startTime进行倒序排序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 2. 按照startTime进行正序排序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         configList.sort((o1, o2) -> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 转换为分钟数进行比较,取反实现倒序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return Integer.compare(convertTimeToMinutes(o2.getStartTime()), convertTimeToMinutes(o1.getStartTime())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 转换为分钟数进行比较 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return Integer.compare(convertTimeToMinutes(o1.getStartTime()), convertTimeToMinutes(o2.getStartTime())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 throw new RemoteServiceException(e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 3. 检查时间范围是否有重叠和格式验证 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String lastEndTime = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (int i = 0; i < configList.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             OrderPickTimeConfig config = configList.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -115,7 +114,6 @@ public class OrderPickTimeConfigLogic { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             validateTimeFormat(config.getStartTime(), "开始时间", config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             validateTimeFormat(config.getEndTime(), "结束时间", config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 验证开始时间必须小于结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             int startTimeMinutes = convertTimeToMinutes(config.getStartTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             int endTimeMinutes = convertTimeToMinutes(config.getEndTime()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -124,17 +122,27 @@ public class OrderPickTimeConfigLogic { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "提货时间配置的开始时间必须小于结束时间"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 验证当前配置的开始时间必须大于等于上一个配置的结束时间+1分钟 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (i > 0 && lastEndTime != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 确保当前配置的开始时间至少比上一个配置的结束时间晚1分钟 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                int lastEndMinutes = convertTimeToMinutes(lastEndTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (startTimeMinutes <= lastEndMinutes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "的提货时间配置的开始时间必须在上一个配置结束时间之后至少1分钟"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 检查当前配置与其他所有配置是否有时间重叠 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 支持不连续的时间配置,但确保没有时间范围重叠 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int j = i + 1; j < configList.size(); j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                OrderPickTimeConfig otherConfig = configList.get(j); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                int otherStartTimeMinutes = convertTimeToMinutes(otherConfig.getStartTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                int otherEndTimeMinutes = convertTimeToMinutes(otherConfig.getEndTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 检查是否有重叠 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 1. 当前配置的结束时间大于其他配置的开始时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 2. 当前配置的开始时间小于其他配置的结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (endTimeMinutes > otherStartTimeMinutes && startTimeMinutes < otherEndTimeMinutes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "与" +  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            otherConfig.getStartTime() + " 至 " + otherConfig.getEndTime() + "的提货时间配置存在重叠"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 检查相邻时间区间之间是否至少有1分钟间隔 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (endTimeMinutes + 1 > otherStartTimeMinutes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw new RemoteServiceException(config.getStartTime() + " 至 " + config.getEndTime() + "与" +  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            otherConfig.getStartTime() + " 至 " + otherConfig.getEndTime() + "的提货时间配置之间必须至少间隔1分钟"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 保存当前配置的结束时间,用于下一个配置的比较 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            lastEndTime = config.getEndTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 4. 获取当前登录用户信息 
			 |