Browse Source

包租协议抵费

guoshuai 5 days ago
parent
commit
9a2d8f1eb7

+ 21 - 4
src/main/java/com/qmrb/system/service/impl/BarnRecordServiceImpl.java

@@ -34,10 +34,7 @@ import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 
 /**
  * <p>
@@ -77,6 +74,8 @@ public class BarnRecordServiceImpl extends ServiceImpl<BarnRecordMapper, BarnRec
 
     @Autowired
     private CouponMapper couponMapper;
+    @Autowired
+    private IContractPlaceNumberRelService contractPlaceNumberRelService;
 
 
     /**
@@ -176,6 +175,15 @@ public class BarnRecordServiceImpl extends ServiceImpl<BarnRecordMapper, BarnRec
                     }else if(2 == coupon.getCouponType()){
                         record.setDiscountMinute(coupon.getDenomination());
                     }
+                }else{
+                    // 判断是否否存在包租协议
+                    Map<String,Object> denominationMap = contractPlaceNumberRelService.getDenomination(record.getId());
+                    if(CollectionUtil.isNotEmpty(denominationMap)){
+
+                        Double denomination = (Double) denominationMap.get("denomination");
+                        BigDecimal discountMinute = new BigDecimal(denomination);
+                        record.setDiscountMinute(discountMinute);
+                    }
                 }
             }
 
@@ -284,6 +292,15 @@ public class BarnRecordServiceImpl extends ServiceImpl<BarnRecordMapper, BarnRec
                 }else if(2 == coupon.getCouponType()){
                     form.setDiscountMinute(coupon.getDenomination());
                 }
+            }else{
+                // 判断是否否存在包租协议
+                Map<String,Object> denominationMap = contractPlaceNumberRelService.getDenomination(form.getId());
+                if(CollectionUtil.isNotEmpty(denominationMap)){
+
+                    Double denomination = (Double) denominationMap.get("denomination");
+                    BigDecimal discountMinute = new BigDecimal(denomination);
+                    form.setDiscountMinute(discountMinute);
+                }
             }
         }
         

+ 4 - 0
src/main/java/com/qmrb/system/service/impl/CarParkChargingRulesServiceImpl.java

@@ -7,6 +7,7 @@ import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import com.alibaba.fastjson.JSON;
 import com.qmrb.parking.fee.ParkingFeeCalculator;
 import com.qmrb.system.mapper.*;
 import com.qmrb.system.pojo.entity.*;
@@ -274,8 +275,10 @@ public class CarParkChargingRulesServiceImpl extends ServiceImpl<CarParkCharging
 		
 		// 根据停车记录获取拥有的优惠券
 		if(deductionSwitch){
+			System.out.println("是否开启抵扣 = " + deductionSwitch);
 			List<Coupon> coupons = couponMapper.selectList(new LambdaQueryWrapper<Coupon>().eq(Coupon::getGoodsId, recordId));
 			if(CollectionUtil.isNotEmpty(coupons)){
+				System.out.println("优惠券 = " );
 				Coupon coupon = coupons.get(0);
 				ParkingFeeCalculator.CouponRecord couponRecord = new ParkingFeeCalculator.CouponRecord();
 				couponRecord.denomination = coupon.getDenomination() != null ? coupon.getDenomination().doubleValue() : 0;
@@ -293,6 +296,7 @@ public class CarParkChargingRulesServiceImpl extends ServiceImpl<CarParkCharging
 			}else{
 				// 判断是否否存在包租协议
 				Map<String,Object> map = contractPlaceNumberRelService.getDenomination(recordId);
+				System.out.println("包租协议 = " + JSON.toJSONString(map));
 				if(CollectionUtil.isNotEmpty(map)){
 					ParkingFeeCalculator.CouponRecord couponRecord = new ParkingFeeCalculator.CouponRecord();
 					couponRecord.denomination = (Double) map.get("denomination");

+ 13 - 4
src/main/java/com/qmrb/system/service/impl/ContractPlaceNumberRelServiceImpl.java

@@ -27,6 +27,7 @@ import com.qmrb.system.service.IContractPlaceNumberRelService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmrb.system.service.IContractService;
 import com.qmrb.system.service.SysUserService;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,6 +56,7 @@ import java.util.Set;
  * @author xue
  * @since 2025-03-11
  */
+@Slf4j
 @Service
 @RequiredArgsConstructor
 public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlaceNumberRelMapper, ContractPlaceNumberRel> implements IContractPlaceNumberRelService {
@@ -268,17 +270,23 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
         LocalDateTime inDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
 
         LambdaQueryWrapper<ContractPlaceNumberRel> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ContractPlaceNumberRel::getPlateNumber, barnRecord.getPlaceNo());
+        queryWrapper.eq(ContractPlaceNumberRel::getPlateNumber, barnRecord.getCarNumber());
         queryWrapper.eq(ContractPlaceNumberRel::getStatus, "1");// 0停用1启用 2到期
 
         // 当前时间应大于包租协议开始日,小于结束日
         LocalDateTime now = LocalDateTime.now();
-        queryWrapper.lt(ContractPlaceNumberRel::getEndTime, inDateTime);// 0停用1启用 2到期
-        queryWrapper.gt(ContractPlaceNumberRel::getStartTime, now);// 0停用1启用 2到期
+        queryWrapper.gt(ContractPlaceNumberRel::getEndTime, inDateTime);// 0停用1启用 2到期
+        queryWrapper.lt(ContractPlaceNumberRel::getStartTime, now);// 0停用1启用 2到期
         List<ContractPlaceNumberRel> list = this.list(queryWrapper);
         if (CollectionUtil.isNotEmpty(list)) {
             ContractPlaceNumberRel contractPlaceNumberRel = list.get(0);
-            long between = DateUtil.between(contractPlaceNumberRel.getStartTime(), new Date(), DateUnit.MINUTE);
+            long between = 0L;
+            if(contractPlaceNumberRel.getStartTime().before(barnRecord.getInTime())){
+                between = DateUtil.between(barnRecord.getInTime(), new Date(), DateUnit.MINUTE);
+            }else{
+                between = DateUtil.between(contractPlaceNumberRel.getStartTime(), new Date(), DateUnit.MINUTE);
+            }
+            
             HashMap<String, Object> map = new HashMap<>();
 
             // 将 Date 转换为 Instant
@@ -288,6 +296,7 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
             LocalDateTime endTime = endTimeinstant.atZone(ZoneId.systemDefault()).toLocalDateTime();
             map.put("denomination", Double.valueOf(between));
             map.put("expireTime", endTime);
+            log.info("包租协议抵扣时长:",between,endTime);
             return map;
         }
         return null;