| 
					
				 | 
			
			
				@@ -1,10 +1,13 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.qmrb.system.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.Instant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.time.LocalDateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.ZoneId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.util.stream.Collectors; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.pojo.entity.BarnRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.pojo.entity.CarParkStoredCard; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.service.IBarnRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.service.ICarParkStoredCardService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -116,8 +119,28 @@ public class CarParkChargingRulesServiceImpl extends ServiceImpl<CarParkCharging 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public BigDecimal calcuExpenses(Long recordId, Long userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 查询当前用户是否有月卡 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		List<CarParkStoredCard> list = parkStoredCardService.list(new LambdaQueryWrapper<CarParkStoredCard>().eq(CarParkStoredCard::getUserId, userId).ge(CarParkStoredCard::getEndTime, LocalDateTime.now())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		BarnRecord barnRecord = barnRecordService.getById(recordId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Assert.isTrue(barnRecord != null, "计费时停车记录不存在,id为"+recordId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if(CollectionUtil.isNotEmpty(list)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			CarParkStoredCard parkStoredCard = list.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 将 Date 转换为 Instant 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Instant instant = barnRecord.getInTime().toInstant(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 将 Instant 转换为 LocalDateTime(假设使用系统默认时区) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			LocalDateTime inDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(parkStoredCard.getStartTime().isAfter(inDateTime) && parkStoredCard.getEndTime().isBefore(LocalDateTime.now())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//入库时间在月卡开始日前,出库时间在结束日前 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else if(parkStoredCard.getStartTime().isAfter(inDateTime) && parkStoredCard.getEndTime().isAfter(LocalDateTime.now())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//入库时间在月卡开始日前,出库时间在结束日内 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else if (parkStoredCard.getStartTime().isBefore(inDateTime) && parkStoredCard.getEndTime().isBefore(LocalDateTime.now())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//入库时间在月卡开始日后,出库时间在结束日前 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return BigDecimal.ZERO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else if(parkStoredCard.getStartTime().isBefore(inDateTime) && parkStoredCard.getEndTime().isAfter(LocalDateTime.now())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//入库时间在月卡开始日后,出库时间在结束日后 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//直接计算费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 |