|
@@ -2,8 +2,7 @@ package com.qmrb.system.service.impl;
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
-import cn.hutool.core.date.DateUnit;
|
|
|
-import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.date.*;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -27,10 +26,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.time.Duration;
|
|
|
-import java.time.Instant;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneId;
|
|
|
+import java.time.*;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@@ -83,6 +81,16 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
|
|
|
if (roles.contains("ADMIN")) {
|
|
|
role = "ADMIN";
|
|
|
}
|
|
|
+ // 初始化当天车牌登记记录
|
|
|
+ if(StrUtil.isNotBlank(queryParams.getStartTimeBegin()) && sysUser.getContractId() != null){
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ this.initContractRelByVirtual(sysUser.getContractId(), LocalDateTime.parse(queryParams.getStartTimeBegin(), formatter));
|
|
|
+ }
|
|
|
+ if(StrUtil.isNotBlank(queryParams.getStartTimeBegin())){
|
|
|
+ DateTime endTime = DateUtil.offset(DateUtil.parse(queryParams.getStartTimeBegin(), "yyyy-MM-dd HH:mm:ss"), DateField.DAY_OF_MONTH, 1);
|
|
|
+ queryParams.setEndTime(endTime);
|
|
|
+ }
|
|
|
+
|
|
|
pageResult = baseMapper.getAdminPage(new Page<>(pageNum, pageSize), role, sysUser, queryParams);
|
|
|
// 管理员查看所有车牌登记情况
|
|
|
if (StringUtils.isNotBlank(role)) {
|
|
@@ -336,4 +344,51 @@ public class ContractPlaceNumberRelServiceImpl extends ServiceImpl<ContractPlace
|
|
|
return this.list(queryWrapper);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<ContractPlaceNumberRel> initContractRelByVirtual(Long contractId, LocalDateTime currentDate) {
|
|
|
+ List<VirtualParkingSlot> list = virtualParkingSlotService.list(new LambdaQueryWrapper<VirtualParkingSlot>().eq(VirtualParkingSlot::getContractId, contractId).orderByAsc(VirtualParkingSlot::getId));
|
|
|
+ if(CollectionUtil.isEmpty(list)){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ ZonedDateTime zonedDateTime = LocalDateTimeUtil.beginOfDay(currentDate).atZone(ZoneId.systemDefault());
|
|
|
+ Date startTime = Date.from(zonedDateTime.toInstant());//00:00:00
|
|
|
+ ZonedDateTime zonedDateTime2 = LocalDateTimeUtil.endOfDay(currentDate).atZone(ZoneId.systemDefault());
|
|
|
+ Date endOfDay = Date.from(zonedDateTime2.toInstant());//23:59:59
|
|
|
+
|
|
|
+ LocalDateTime endDateTime = LocalDateTimeUtil.beginOfDay(currentDate).plusDays(1).withHour(14).withMinute(0).withSecond(0);
|
|
|
+ Date endTime = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant());//隔天14:00:00
|
|
|
+ // 获取有效期包含当天的车牌登记记录
|
|
|
+ List<ContractPlaceNumberRel> contractPlaceNumberRels = this.list(
|
|
|
+ new LambdaQueryWrapper<ContractPlaceNumberRel>()
|
|
|
+ .eq(ContractPlaceNumberRel::getContractId, contractId)
|
|
|
+ .le(ContractPlaceNumberRel::getStartTime, endOfDay)
|
|
|
+ .ge(ContractPlaceNumberRel::getStartTime, startTime)
|
|
|
+ );
|
|
|
+
|
|
|
+ // 当天车位已初始化
|
|
|
+ if(CollectionUtil.isNotEmpty(contractPlaceNumberRels) && contractPlaceNumberRels.size() == list.size()){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ ArrayList<String> virtualSlotMumbers = new ArrayList<>();
|
|
|
+ List<ContractPlaceNumberRel> currentDayContractPlaceNumberRels = new ArrayList<>();
|
|
|
+ if(CollectionUtil.isNotEmpty(contractPlaceNumberRels)){
|
|
|
+ contractPlaceNumberRels.forEach(iter->{
|
|
|
+ virtualSlotMumbers.add(iter.getVirtualSlotNumber());
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ list.stream().forEach(iter->{
|
|
|
+ if(!virtualSlotMumbers.contains(iter.getVirtualSlotNumber())){
|
|
|
+ ContractPlaceNumberRel contractPlaceNumberRel = new ContractPlaceNumberRel();
|
|
|
+ contractPlaceNumberRel.setVirtualSlotNumber(iter.getVirtualSlotNumber());
|
|
|
+ contractPlaceNumberRel.setStartTime(startTime);
|
|
|
+ contractPlaceNumberRel.setEndTime(endTime);
|
|
|
+ contractPlaceNumberRel.setContractId(contractId);
|
|
|
+ currentDayContractPlaceNumberRels.add(contractPlaceNumberRel);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.saveBatch(currentDayContractPlaceNumberRels);
|
|
|
+ return currentDayContractPlaceNumberRels;
|
|
|
+ }
|
|
|
+
|
|
|
}
|