|
@@ -14,10 +14,7 @@ import com.qmrb.system.converter.BarnRecordConverter;
|
|
|
import com.qmrb.system.mapper.BarnRecordMapper;
|
|
|
import com.qmrb.system.mapper.CouponMapper;
|
|
|
import com.qmrb.system.mq.PickCarProducer;
|
|
|
-import com.qmrb.system.pojo.entity.BarnRecord;
|
|
|
-import com.qmrb.system.pojo.entity.CarPark;
|
|
|
-import com.qmrb.system.pojo.entity.Coupon;
|
|
|
-import com.qmrb.system.pojo.entity.MyCarPlateNumber;
|
|
|
+import com.qmrb.system.pojo.entity.*;
|
|
|
import com.qmrb.system.pojo.form.BarnRecordForm;
|
|
|
import com.qmrb.system.pojo.query.BarnRecordQuery;
|
|
|
import com.qmrb.system.pojo.vo.BarnRecordVO;
|
|
@@ -33,6 +30,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.time.Instant;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.time.temporal.ChronoUnit;
|
|
@@ -136,6 +134,32 @@ public class BarnRecordServiceImpl extends ServiceImpl<BarnRecordMapper, BarnRec
|
|
|
Date billingStartTime = parkStoredCardService.getBillingStartTime(form);
|
|
|
record.setBillingStartTime(billingStartTime);
|
|
|
}
|
|
|
+
|
|
|
+ Instant instant = record.getInTime().toInstant();
|
|
|
+
|
|
|
+
|
|
|
+ LocalDateTime inDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
|
+
|
|
|
+ List<CarParkStoredCard> storedCards = parkStoredCardService.list(new LambdaQueryWrapper<CarParkStoredCard>().eq(CarParkStoredCard::getPlateNumber, record.getCarNumber())
|
|
|
+ .eq(CarParkStoredCard::getStatus,1).le(CarParkStoredCard::getStartTime, inDateTime)
|
|
|
+ .orderByDesc(CarParkStoredCard::getEndTime));
|
|
|
+ if(CollectionUtil.isNotEmpty(storedCards)){
|
|
|
+ CarParkStoredCard storedCard = storedCards.get(0);
|
|
|
+ if(record.getOutTime() != null){
|
|
|
+
|
|
|
+ Instant instant2 = record.getOutTime().toInstant();
|
|
|
+
|
|
|
+
|
|
|
+ LocalDateTime outDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
|
|
|
+ if(outDateTime.isAfter(storedCard.getStartTime())){
|
|
|
+ record.setCardEndTime(storedCard.getEndTime());
|
|
|
+ }
|
|
|
+ }else if(record.getOutTime() == null && LocalDateTime.now().isAfter(storedCard.getStartTime())){
|
|
|
+ record.setCardEndTime(storedCard.getEndTime());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
if (record.getOutTime() != null) {
|
|
|
record.setParkingTime(calculateTimeDifference(record.getBillingStartTime(), record.getOutTime()));
|
|
@@ -145,8 +169,10 @@ public class BarnRecordServiceImpl extends ServiceImpl<BarnRecordMapper, BarnRec
|
|
|
|
|
|
if(queryParams.getIsMonthlyCardMode() != null){
|
|
|
record.setPendingAmount(carParkChargingRulesService.calcuExpenses(record.getId(),record.getCarNumber(),queryParams.getIsMonthlyCardMode()));
|
|
|
+ record.setPendingAmountWithCoupon(carParkChargingRulesService.calcuExpensesWithCoupon(record.getId(),record.getCarNumber(),queryParams.getIsMonthlyCardMode()));
|
|
|
}else{
|
|
|
record.setPendingAmount(carParkChargingRulesService.calcuExpenses(record.getId(),record.getCarNumber(),false));
|
|
|
+ record.setPendingAmountWithCoupon(carParkChargingRulesService.calcuExpensesWithCoupon(record.getId(),record.getCarNumber(),false));
|
|
|
}
|
|
|
if(record.getReceivedAmount() == null){
|
|
|
record.setReceivedAmount(BigDecimal.ZERO);
|
|
@@ -156,6 +182,21 @@ public class BarnRecordServiceImpl extends ServiceImpl<BarnRecordMapper, BarnRec
|
|
|
}else{
|
|
|
record.setBillingAmount(record.getReceivedAmount());
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ List<Coupon> coupons = couponMapper.selectList(new LambdaQueryWrapper<Coupon>().eq(Coupon::getGoodsId, record.getId()));
|
|
|
+ log.info("查询优惠券:{}",coupons.size());
|
|
|
+ if(CollectionUtil.isNotEmpty(coupons)){
|
|
|
+ Coupon coupon = coupons.get(0);
|
|
|
+
|
|
|
+ if(1 == coupon.getCouponType()){
|
|
|
+ record.setDiscountAmount(coupon.getDenomination());
|
|
|
+ }else if(2 == coupon.getCouponType()){
|
|
|
+ record.setDiscountMinute(coupon.getDenomination());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
if(queryParams.getIsMonthlyCardMode() != null && queryParams.getIsMonthlyCardMode()){
|
|
|
if(record.getPendingAmount().compareTo(BigDecimal.ZERO) > 0){
|
|
|
barnRecords.add(record);
|
|
@@ -252,6 +293,7 @@ public class BarnRecordServiceImpl extends ServiceImpl<BarnRecordMapper, BarnRec
|
|
|
}
|
|
|
|
|
|
form.setPendingAmount(carParkChargingRulesService.calcuExpenses(form.getId(),form.getCarNumber(),isMonthlyCardMode));
|
|
|
+ form.setPendingAmountWithCoupon(carParkChargingRulesService.calcuExpensesWithCoupon(form.getId(),form.getCarNumber(),isMonthlyCardMode));
|
|
|
if(form.getPendingAmount() != null){
|
|
|
form.setPendingAmount(form.getPendingAmount());
|
|
|
form.setBillingAmount(form.getReceivedAmount().add(form.getPendingAmount()));
|