package com.boying.service.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.boying.entity.*; import com.boying.entity.vo.OutParkVo; import com.boying.mapper.EnterParkMapper; import com.boying.mapper.OutParkMapper; import com.boying.mapper.StatisticMapper; import com.boying.service.OutParkService; import com.boying.service.StatisticService; import com.boying.util.PlateComparator; 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.LocalDateTime; import java.util.Date; import java.util.List; import java.util.Map; /** * @author kdq * @version 1.0.0 * @ClassName OutParkServiceImpl.java * @Description TODO * @createTime 2022年11月20日 10:20:00 */ @Service @AllArgsConstructor public class OutParkServiceImpl extends ServiceImpl implements OutParkService { private final OutParkMapper outParkMapper; private final EnterParkMapper enterParkMapper; private StringRedisTemplate redisTemplate; @Override public int count1() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .between(OutPark::getCreateTime, DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date())) .eq(OutPark::getStatus,1); return outParkMapper.selectCount(wrapper); } @Override public int count2() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .between(OutPark::getCreateTime, DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date())) .ge(OutPark::getPrice,0); return outParkMapper.selectCount(wrapper); } @Override public int count5() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .between(OutPark::getCreateTime, DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date())); return outParkMapper.selectCount(wrapper); } @Override public double sumByPrice() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .between(OutPark::getCreateTime, DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date())) .eq(OutPark::getStatus,1); wrapper.select("IFNULL(ROUND(SUM(price)),0) as num"); Map map = getMap(wrapper); String a = map.get("num").toString(); if(a!=null){ return Double.parseDouble(a); }else{ return 0.0; } } @Override public int count3() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .between(OutPark::getCreateTime, DateUtil.beginOfMonth(new Date()),DateUtil.endOfMonth(new Date())); return outParkMapper.selectCount(wrapper); } @Override public double sumByPrice2() { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .between(OutPark::getCreateTime, DateUtil.beginOfMonth(new Date()),DateUtil.endOfMonth(new Date())) .eq(OutPark::getStatus,1); wrapper.select("IFNULL(ROUND(SUM(price)),0) as num"); Map map = getMap(wrapper); String a = map.get("num").toString(); if(a!=null){ return Double.parseDouble(a); }else{ return 0.0; } } @Override public OutPark findByCarNo(String serialno) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OutPark::getCarNo,serialno); List outParks = outParkMapper.selectList(wrapper); if(outParks.size()>0){ return outParks.get(0); }else{ return null; } } @Override public OutPark count4(Integer bId) { OutPark outPark = null; try { String s = redisTemplate.opsForValue().get("outPark-"+bId); if(!StringUtil.isNullOrEmpty(s)){ outPark = JSON.parseObject(s, OutPark.class); return outPark; }else { return null; } } catch (Exception e) { e.printStackTrace(); } return null; // // QueryWrapper wrapper = new QueryWrapper<>(); // wrapper.lambda() // .eq(OutPark::getBarrierId,bId) // .eq(OutPark::getStatus,1) // .eq(OutPark::getStatus2,0) // .orderByDesc(OutPark::getCreateTime); // List outParks = outParkMapper.selectList(wrapper); // if(outParks.size()>0){ // return outParks.get(0); // }else{ // return null; // } } @Override public OutPark findByCarNoAndBarrierId(String carNo, Integer id) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OutPark::getBarrierId,id) .eq(OutPark::getCarNo,carNo) .orderByDesc(OutPark::getCreateTime); List outParks = outParkMapper.selectList(wrapper); if(outParks.size()>0){ return outParks.get(0); }else{ return null; } } @Override public OutPark findByPayCode(String payCode) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OutPark::getCode2,payCode) .orderByDesc(OutPark::getCreateTime); List outParks = outParkMapper.selectList(wrapper); if(outParks.size()>0){ return outParks.get(0); }else{ return null; } } @Override public OutPark findByOrderId(String txnOrderId) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OutPark::getTxnOrderId,txnOrderId) .orderByDesc(OutPark::getCreateTime); List outParks = outParkMapper.selectList(wrapper); if(outParks.size()>0){ return outParks.get(0); }else{ return null; } } @Override public OutPark findBy5min(String carNo, Integer parkId,LocalDateTime dateTime) { LocalDateTime localDateTime = dateTime.minusMinutes(5); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OutPark::getCarNo,carNo) .eq(OutPark::getParkId,parkId) .ge(OutPark::getCreateTime,localDateTime) .isNotNull(OutPark::getEnterTime); List outParks = outParkMapper.selectList(wrapper); if(outParks != null && outParks.size()>0){ for (OutPark outPark : outParks) { if(outPark.getPrice() == 0){ return outPark; } if(outPark.getPrice() != 0 && outPark.getStatus() == 1){ return outPark; } } } return null; } @Override public OutPark findBy10min(String carNo, Integer parkId,LocalDateTime dateTime,Integer outParkId) { LocalDateTime localDateTime = dateTime.minusMinutes(10); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OutPark::getCarNo,carNo) .eq(OutPark::getParkId,parkId) .ge(OutPark::getCreateTime,localDateTime) .ge(OutPark::getPrice,0) .ne(OutPark::getId,outParkId) .isNotNull(OutPark::getPayCode) .isNotNull(OutPark::getEnterTime); List outParks = outParkMapper.selectList(wrapper); if(outParks != null && outParks.size()>0){ return outParks.get(0); } return null; } @Override public List> getLikeCar(String carNo, Integer parkId, LocalDateTime dateTime) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.select(" id,car_no,park_id,create_time "); wrapper.lambda() .eq(EnterPark::getParkId,parkId) .lt(EnterPark::getCreateTime,dateTime); List enterParks = enterParkMapper.selectList(wrapper); if(enterParks !=null && enterParks.size()>0){ List> list = PlateComparator.getList(carNo, enterParks); return list; }else { return null; } } @Override public List getVoList(Integer parkId, String startDate, String endDate) { return outParkMapper.getVoList(parkId,startDate,endDate); } @Override public OutPark findBy5min2(String carNo, Integer parkId,LocalDateTime dateTime) { LocalDateTime localDateTime = dateTime.minusMinutes(7); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(OutPark::getCarNo,carNo) .eq(OutPark::getParkId,parkId) .ge(OutPark::getCreateTime,localDateTime) .ge(OutPark::getPrice,0) .ne(OutPark::getStatus,1) .isNotNull(OutPark::getPayCode) .isNotNull(OutPark::getEnterTime); List outParks = outParkMapper.selectList(wrapper); if(outParks != null && outParks.size()>0){ return outParks.get(0); } return null; } @Override public List getList(long current, long size, String carNo, Long parkId, String payCode,Integer status, String date) { return outParkMapper.getList((current-1)*size,size,carNo,parkId,payCode,status,date); } @Override public long getCount(String carNo, Long parkId, String payCode,Integer status, String date) { return outParkMapper.getCount(carNo,parkId,payCode,status,date); } }