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.*; 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; /** * 入场表 * * @author kdq * @date 2023-01-23 09:46:32 */ @RestController @RequiredArgsConstructor @RequestMapping("ffzf/enterpark" ) @Api(value = "enterpark", tags = "入场表管理") 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; /** * 分页查询 * @param page 泊车分页对象 * @param * @return */ // @ApiOperation(value = "分页查询", notes = "分页查询") // @GetMapping("/page" ) // public R getEnterParkPage(Page page, EnterPark enterPark, String date) throws ParseException { // List list = enterParkService.getList(page.getCurrent(), page.getSize(), enterPark.getCarNo(),enterPark.getParkId(), date); // long count = enterParkService.getCount(enterPark.getCarNo(), enterPark.getParkId(), date); // Page page1 = new Page(); // for (EnterPark record : list) { // record.setParkName(parkService.getById(record.getParkId()).getName()); // if(record.getImgId() != null){ // record.setImgPath("/ffzf/fileinfo/showImgById/"+record.getImgId()); // } // } // page1.setRecords(list); // page1.setCurrent(page.getCurrent()); // page1.setSize(page.getSize()); // page1.setTotal(count); // return R.ok(page1); // } @PostMapping("/findPage") public Object findPage(Page page, String carNo,Integer parkId,String date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if(StringUtils.isNotBlank(date)){ System.out.println(date); Date parse = sdf.parse(date); date = sdf.format(parse); } List list = enterParkService.getList(page.getCurrent(), page.getSize(), carNo,parkId, date); long count = enterParkService.getCount(carNo,parkId, date); for (EnterPark record : list) { record.setParkName(parkService.getById(record.getParkId()).getName()); if(record.getImgId() != null){ record.setImgPath("/ffzf/fileinfo/showImgById/"+record.getImgId()); } } page.setRecords(list); page.setTotal(count); return R.ok(page); } @PostMapping("/findByCar") public Object findByCar(String carNo,Integer parkId) { if(StringUtils.isBlank(carNo)){ return R.failed("请输入正确车牌号"); }else { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda() .eq(EnterPark::getCarNo,carNo) .eq(EnterPark::getParkId,parkId); List 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 wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(WhiteList::getCarNo,carNo); List 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(null,"操作成功"); }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() export(EnterPark enterPark) { return enterParkService.list(Wrappers.query(enterPark)); } }