package com.boying.service.impl;
|
|
import cn.hutool.core.date.DateUnit;
|
import cn.hutool.core.date.DateUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.boying.entity.Barrier;
|
import com.boying.entity.EnterPark;
|
import com.boying.entity.OutPark;
|
import com.boying.entity.Park;
|
import com.boying.mapper.BarrierMapper;
|
import com.boying.mapper.EnterParkMapper;
|
import com.boying.mapper.OutParkMapper;
|
import com.boying.mapper.ParkMapper;
|
import com.boying.service.BarrierService;
|
import com.boying.service.EnterParkService;
|
import com.boying.util.RedisJsonUtil;
|
import com.boying.util.StringUtil;
|
import lombok.AllArgsConstructor;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.stereotype.Service;
|
|
import java.io.IOException;
|
import java.time.ZoneId;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* @author kdq
|
* @version 1.0.0
|
* @ClassName BarrierServiceImpl.java
|
* @Description TODO
|
* @createTime 2022年11月20日 22:25:00
|
*/
|
@Service
|
@AllArgsConstructor
|
public class BarrierServiceImpl extends ServiceImpl<BarrierMapper, Barrier> implements BarrierService {
|
private EnterParkMapper enterParkMapper;
|
private OutParkMapper outParkMapper;
|
private StringRedisTemplate redisTemplate;
|
private ParkMapper parkMapper;
|
|
|
@Override
|
public Barrier findByCode(String code) {
|
Barrier barrier = null;
|
try {
|
String s = redisTemplate.opsForValue().get("barrier-"+code);
|
if(!StringUtil.isNullOrEmpty(s)){
|
barrier = JSON.parseObject(s, Barrier.class);
|
return barrier;
|
}else {
|
QueryWrapper<Barrier> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(Barrier::getCode,code);
|
List<Barrier> list = list(wrapper);
|
if(list.size()>0){
|
String jsonValue = JSON.toJSONString(list.get(0));
|
redisTemplate.opsForValue().set("barrier-"+code, jsonValue);
|
return list.get(0);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
return null;
|
}
|
return null;
|
|
// QueryWrapper<Barrier> wrapper = new QueryWrapper<>();
|
// wrapper.lambda()
|
// .eq(Barrier::getCode,code);
|
// List<Barrier> list = list(wrapper);
|
// if(list.size()>0){
|
// return list.get(0);
|
// }else {
|
// return null;
|
// }
|
}
|
|
@Override
|
public Barrier findByCode2(String code) {
|
QueryWrapper<Barrier> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(Barrier::getCode2,code);
|
List<Barrier> list = list(wrapper);
|
if(list.size()>0){
|
return list.get(0);
|
}else {
|
return null;
|
}
|
}
|
|
@Override
|
public boolean getDateDifIn(Integer parkId) {
|
EnterPark enterPark=null;
|
String s1 = redisTemplate.opsForValue().get("enterPark_dif_" + parkId);
|
if(StringUtils.isBlank(s1)){
|
QueryWrapper<EnterPark> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(EnterPark::getParkId,parkId)
|
.orderByDesc(EnterPark::getId)
|
.last(" limit 1");
|
enterPark = enterParkMapper.selectOne(wrapper);
|
String jsonValue = JSON.toJSONString(enterPark);
|
redisTemplate.opsForValue().set("enterPark_dif_"+ parkId, jsonValue);
|
}else {
|
enterPark = JSON.parseObject(s1, EnterPark.class);
|
}
|
|
if(enterPark != null){
|
long dif = DateUtil.between(Date.from( enterPark.getCreateTime().atZone( ZoneId.systemDefault()).toInstant()), new Date(), DateUnit.SECOND, false);
|
if(dif >= 5 && dif <= 7){
|
return true;
|
}else {
|
//判断停车场是否有了车位
|
String s = redisTemplate.opsForValue().get("park_change_in_" + enterPark.getParkId());
|
if("true".equals(s)){
|
redisTemplate.opsForValue().set("park_change_in_"+enterPark.getParkId(),"false",1, TimeUnit.DAYS);
|
return true;
|
}else {
|
return false;
|
}
|
}
|
}else {
|
return false;
|
}
|
|
|
}
|
|
@Override
|
public boolean getDateDifOut(Integer barrierId) {
|
OutPark outPark=null;
|
String s1 = redisTemplate.opsForValue().get("outPark_dif_" + barrierId);
|
if(StringUtils.isBlank(s1)){
|
QueryWrapper<OutPark> wrapper = new QueryWrapper<>();
|
wrapper.lambda()
|
.eq(OutPark::getBarrierId,barrierId)
|
.orderByDesc(OutPark::getId)
|
.last(" limit 1");
|
outPark = outParkMapper.selectOne(wrapper);
|
String jsonValue = JSON.toJSONString(outPark);
|
redisTemplate.opsForValue().set("outPark_dif_"+ barrierId, jsonValue);
|
}else {
|
outPark = JSON.parseObject(s1, OutPark.class);
|
}
|
if(outPark != null){
|
long dif = DateUtil.between(Date.from( outPark.getCreateTime().atZone( ZoneId.systemDefault()).toInstant()), new Date(), DateUnit.SECOND, false);
|
if(dif >= 20 && dif <= 23){
|
return true;
|
}else {
|
return false;
|
}
|
}else {
|
return false;
|
}
|
}
|
}
|