| | |
| | | package com.boying.controller; |
| | | |
| | | 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.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.boying.common.R; |
| | | import com.boying.entity.Barrier; |
| | | import com.boying.entity.EnterPark; |
| | | import com.boying.entity.OutPark; |
| | | import com.boying.service.BarrierService; |
| | | import com.boying.service.EnterParkService; |
| | | import com.boying.service.ParkService; |
| | | import com.boying.entity.*; |
| | | import com.boying.service.*; |
| | | import com.boying.util.DateUtilOther; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.RequiredArgsConstructor; |
| | | |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneOffset; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * 入场表 |
| | |
| | | public class EnterParkController { |
| | | |
| | | private final EnterParkService enterParkService; |
| | | private final OutParkService outParkService; |
| | | private final OutParkLogService outParkLogService; |
| | | private final BarrierService barrierService; |
| | | private final ParkService parkService; |
| | | private final CostRuleService costRuleService; |
| | | private final WhiteListService whiteListService; |
| | | private final StringRedisTemplate redisTemplate; |
| | | |
| | | /** |
| | | * 分页查询 |
| | |
| | | return R.ok(page); |
| | | } |
| | | |
| | | @PostMapping("/findByCar") |
| | | public Object findByCar(String carNo,Integer parkId) { |
| | | if(StringUtils.isBlank(carNo)){ |
| | | return R.failed("请输入正确车牌号"); |
| | | }else { |
| | | QueryWrapper<EnterPark> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.lambda() |
| | | .eq(EnterPark::getCarNo,carNo) |
| | | .eq(EnterPark::getParkId,parkId); |
| | | List<EnterPark> list = enterParkService.list(queryWrapper); |
| | | if(list !=null && list.size()>0){ |
| | | for (EnterPark enterPark : list) { |
| | | enterPark.setParkName(parkService.getById(enterPark.getParkId()).getName()); |
| | | } |
| | | return R.ok(list); |
| | | }else { |
| | | return R.failed("该车牌未查询到入场记录"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @PostMapping("/getByBarrierId") |
| | | public Object getByBarrierId(Integer barrierId) throws ParseException { |
| | | Barrier byId1 = barrierService.getById(barrierId); |
| | | OutPark byId = outParkService.findByCarNoAndBarrierId(byId1.getCarNo(), barrierId); |
| | | if(byId==null){ |
| | | return R.failed("未查询到出场记录"); |
| | | }else { |
| | | return R.ok(byId); |
| | | } |
| | | |
| | | } |
| | | |
| | | @PostMapping("/editOutByEnter") |
| | | public Object editOutByEnter(Integer outParkId,String carNo,Integer enterId) throws ParseException { |
| | | double money = 0.0; |
| | | OutPark outPark = outParkService.getById(outParkId); |
| | | EnterPark enterPark = enterParkService.getById(enterId); |
| | | outPark.setCarNo(enterPark.getCarNo()); |
| | | outPark.setEnterTime(enterPark.getCreateTime()); |
| | | try { |
| | | long l = outPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - enterPark.getCreateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli(); |
| | | outPark.setTime(l/(1000*60)); |
| | | money = costRuleService.getMoney(enterPark.getParkId(), outPark.getEnterTime(), outPark.getCreateTime(), 1); |
| | | //入场记录保存一下 |
| | | if(enterPark.getIsPay() != null && enterPark.getIsPay()==1){ |
| | | money = money - enterPark.getPrice(); |
| | | }else { |
| | | enterPark.setPrice(money); |
| | | enterPark.setIsPay(0); |
| | | enterParkService.updateById(enterPark); |
| | | } |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | outPark.setPrice(money); |
| | | outPark.setStatus3(0); |
| | | outParkService.saveOrUpdate(outPark); |
| | | Barrier barrier =barrierService.getById(outPark.getBarrierId()); |
| | | barrier.setCarNo(carNo); |
| | | //判断是否在白名单 |
| | | QueryWrapper<WhiteList> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(WhiteList::getCarNo,carNo); |
| | | List<WhiteList> all = whiteListService.list(wrapper); |
| | | if(all.size() >0){ |
| | | for(WhiteList w : all){ |
| | | if(w.getType()==0){ |
| | | outPark.setStatus(2); |
| | | outPark.setStatus2(1); |
| | | outParkService.saveOrUpdate(outPark); |
| | | barrierService.saveOrUpdate(barrier); |
| | | String jsonValue2 = JSON.toJSONString(barrier); |
| | | redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2); |
| | | String jsonValue = JSON.toJSONString(outPark); |
| | | redisTemplate.opsForValue().set("outPark_dif_"+ outPark.getBarrierId(), jsonValue); |
| | | //缓存在redis里,心跳接口去抬杆 |
| | | String jsonValue1 = JSON.toJSONString(outPark); |
| | | redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue1); |
| | | redisTemplate.opsForValue().set("park_change_in_"+outPark.getParkId(),"true",1, TimeUnit.DAYS); |
| | | return R.ok("操作成功"); |
| | | }else{ |
| | | if(StringUtils.isNotBlank(w.getParkIds())){ |
| | | if(w.getEndTime()!=null){ |
| | | String parkIds = w.getParkIds(); |
| | | String[] split = parkIds.split(","); |
| | | for (String s : split) { |
| | | int pid = Integer.parseInt(s); |
| | | if(pid == outPark.getParkId() && System.currentTimeMillis()<w.getEndTime().getTime()){ |
| | | outPark.setStatus(2); |
| | | outPark.setStatus2(1); |
| | | outParkService.saveOrUpdate(outPark); |
| | | barrierService.saveOrUpdate(barrier); |
| | | String jsonValue2 = JSON.toJSONString(barrier); |
| | | redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2); |
| | | String jsonValue = JSON.toJSONString(outPark); |
| | | redisTemplate.opsForValue().set("outPark_dif_"+ outPark.getBarrierId(), jsonValue); |
| | | //缓存在redis里,心跳接口去抬杆 |
| | | String jsonValue1 = JSON.toJSONString(outPark); |
| | | redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue1); |
| | | redisTemplate.opsForValue().set("park_change_in_"+outPark.getParkId(),"true",1, TimeUnit.DAYS); |
| | | return R.ok("操作成功"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }else { |
| | | barrierService.saveOrUpdate(barrier); |
| | | String jsonValue2 = JSON.toJSONString(barrier); |
| | | redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue2); |
| | | if(outPark.getPrice()==0&&outPark.getStatus3()==0){ |
| | | String jsonValue = JSON.toJSONString(outPark); |
| | | redisTemplate.opsForValue().set("outPark_dif_"+ barrier.getId(), jsonValue); |
| | | String jsonValue1 = JSON.toJSONString(outPark); |
| | | redisTemplate.opsForValue().set("outPark-"+outPark.getBarrierId(), jsonValue1); |
| | | redisTemplate.opsForValue().set("park_change_in_"+outPark.getParkId(),"true",1, TimeUnit.DAYS); |
| | | return R.ok("操作成功"); |
| | | }else { |
| | | //需要缴费或者有违章 |
| | | OutParkLog byOutPark = outParkLogService.getByOutPark(outPark.getCarNo(), outPark.getId()); |
| | | byOutPark.setOutTime(outPark.getCreateTime()); |
| | | byOutPark.setParkId(outPark.getParkId()); |
| | | byOutPark.setCarNo(carNo); |
| | | outParkLogService.saveOrUpdate(byOutPark); |
| | | String jsonValue = JSON.toJSONString(outPark); |
| | | redisTemplate.opsForValue().set("outPark_dif_"+ barrier.getId(), jsonValue); |
| | | return R.ok("操作成功,请扫码缴费"); |
| | | } |
| | | } |
| | | return R.failed("操作失败"); |
| | | } |
| | | |
| | | /** |
| | | * 通过id查询入场表 |
| | | * @param id id |