|
@@ -211,7 +211,7 @@ public class VirtualParkingSlotServiceImpl extends ServiceImpl<VirtualParkingSlo
|
|
|
List<VirtualParkingSlot> freeVirtualParkingSlots = this.list(new LambdaQueryWrapper<VirtualParkingSlot>()
|
|
|
.eq(VirtualParkingSlot::getStatus, "0")//空闲
|
|
|
.eq(VirtualParkingSlot::getContractId, contractPlaceNumberRel.getContractId())
|
|
|
- .orderByAsc(VirtualParkingSlot::getContractId));
|
|
|
+ .orderByDesc(VirtualParkingSlot::getLastReleasedTime));
|
|
|
Assert.isTrue(CollectionUtil.isNotEmpty(freeVirtualParkingSlots),"无可用车位");
|
|
|
virtualParkingSlot = freeVirtualParkingSlots.get(0);
|
|
|
virtualParkingSlot.setStatus("1");//占用
|
|
@@ -256,17 +256,14 @@ public class VirtualParkingSlotServiceImpl extends ServiceImpl<VirtualParkingSlo
|
|
|
// 结束时间固定为次日(N+1)14:00
|
|
|
Date endTime = DateUtil.parse(DateUtil.format(DateUtil.offset(currentDate, DateField.DAY_OF_MONTH, parkDays), "yyyy-MM-dd") + " 14:00:00");
|
|
|
lastReleasedTime = endTime;
|
|
|
- log.info("开始时间:{}→结束时间:{} ===>{}",lastOccupiedTime,lastReleasedTime, JSON.toJSON(virtualParkingSlot));
|
|
|
// 登记时间段(开始时间→结束时间)不得与该虚拟车位有效的历史记录重叠
|
|
|
if(virtualParkingSlot.getLastOccupiedTime() != null && virtualParkingSlot.getLastReleasedTime() != null){
|
|
|
|
|
|
- log.info("222222:{}→结束时间:{}",virtualParkingSlot.getLastOccupiedTime(),virtualParkingSlot.getLastReleasedTime());
|
|
|
if(this.isOverlap(virtualParkingSlot.getLastOccupiedTime(),virtualParkingSlot.getLastReleasedTime(),lastOccupiedTime,lastReleasedTime)){
|
|
|
return Result.failed("车位启用时间或到期时间有误!");
|
|
|
}
|
|
|
}
|
|
|
String hour = DateUtil.format(lastReleasedTime, "HH");
|
|
|
- log.info("hour:{}",hour);
|
|
|
if(!StrUtil.equals(hour,"14")){
|
|
|
return Result.failed("到期时间必须为次日14时!");
|
|
|
}
|
|
@@ -292,7 +289,8 @@ public class VirtualParkingSlotServiceImpl extends ServiceImpl<VirtualParkingSlo
|
|
|
// 3. 核心逻辑:判断是否有重叠(左闭右开区间)
|
|
|
return start1.before(end2) && start2.before(end1);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ @Override
|
|
|
public void releaseVirtualParking(){
|
|
|
log.info("定时释放虚拟车位:开始:" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
List<VirtualParkingSlot> list = this.list(new LambdaQueryWrapper<VirtualParkingSlot>().eq(VirtualParkingSlot::getStatus, "1"));
|
|
@@ -312,8 +310,6 @@ public class VirtualParkingSlotServiceImpl extends ServiceImpl<VirtualParkingSlo
|
|
|
}
|
|
|
log.info("定时释放虚拟车位数:" + releasedList.size() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
|
|
releasedList = releasedList.stream().map(iter->{
|
|
|
- iter.setLastReleasedTime(null);
|
|
|
- iter.setLastOccupiedTime(null);
|
|
|
iter.setCurrentPlateNumber(null);
|
|
|
iter.setSlotType("small");
|
|
|
iter.setStatus("0");
|