| 
					
				 | 
			
			
				@@ -1,37 +1,37 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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 cn.hutool.core.collection.CollectionUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.hutool.core.lang.Assert; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.qmrb.parking.fee.ParkingFeeCalculator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.qmrb.system.mapper.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.qmrb.system.pojo.entity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.qmrb.system.service.ICarParkStoredCardService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.qmrb.system.service.IContractPlaceNumberRelService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.qmrb.system.service.OrderService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.qmrb.system.common.enums.StatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.qmrb.system.pojo.vo.Option; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.parking.fee.ParkingFeeCalculator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.converter.CarParkChargingRulesConverter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.mapper.BarnRecordMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.mapper.CarParkChargingRulesMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.mapper.CouponMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.mapper.OrderMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.pojo.entity.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.pojo.form.CarParkChargingRulesForm; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.qmrb.system.pojo.vo.CarParkChargingRulesVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.pojo.query.CarParkChargingRulesQuery; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.pojo.vo.CarParkChargingRulesVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.qmrb.system.service.ICarParkChargingRulesService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.service.ICarParkStoredCardService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.qmrb.system.service.IContractPlaceNumberRelService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import jakarta.validation.Valid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hutool.core.collection.CollectionUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hutool.core.util.StrUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hutool.core.lang.Assert; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import jakarta.validation.Valid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.math.BigDecimal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.Instant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.LocalDateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.time.ZoneId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * <p> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -298,12 +298,15 @@ public class CarParkChargingRulesServiceImpl extends ServiceImpl<CarParkCharging 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				Map<String,Object> map = contractPlaceNumberRelService.getDenomination(recordId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				System.out.println("包租协议 = " + JSON.toJSONString(map)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				if(CollectionUtil.isNotEmpty(map)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					parkingRecord.contractType = "3";//包租协议 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				/*if(CollectionUtil.isNotEmpty(map)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					ParkingFeeCalculator.CouponRecord couponRecord = new ParkingFeeCalculator.CouponRecord(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					couponRecord.denomination = (Double) map.get("denomination"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					couponRecord.expireTime = (LocalDateTime) map.get("expireTime"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					couponRecord.couponType = "2"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 					parkingRecord.couponRecord = couponRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if(CollectionUtil.isNotEmpty(orderList)){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -327,8 +330,18 @@ public class CarParkChargingRulesServiceImpl extends ServiceImpl<CarParkCharging 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// 计算费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			fee = ParkingFeeCalculator.calculateParkingFee(parkingRecord, feeRule, isMonthlyCardMode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			//直接计算费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			fee = ParkingFeeCalculator.calculateParkingFee(parkingRecord, feeRule, isMonthlyCardMode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//判断是否为包租协议 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(StringUtils.equals("3",parkingRecord.contractType)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// 查找有效的车牌登记记录(已按车牌筛选) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				List<ContractPlaceNumberRel> registrations = contractPlaceNumberRelService.findValidRegistrations(carNumber, parkingRecord.entryTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//包租协议只计算临停费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Map<String,Object> result  = ParkingFeeCalculator.calculateParkingFee(parkingRecord,feeRule, registrations); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fee = Double.parseDouble(result.get("fee").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//直接计算费用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//1.临停费用 2.扫码协议 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fee = ParkingFeeCalculator.calculateParkingFee(parkingRecord, feeRule, isMonthlyCardMode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return new BigDecimal(fee); 
			 |