| | |
| | | package com.boying.controller; |
| | | |
| | | 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.plugins.pagination.Page; |
| | | import com.boying.common.R; |
| | | import com.boying.entity.Barrier; |
| | | import com.boying.entity.BarrierOpenLog; |
| | | import com.boying.entity.OutPark; |
| | | import com.boying.service.BarrierOpenLogService; |
| | | import com.boying.service.BarrierService; |
| | | import com.boying.service.OutParkService; |
| | | import com.boying.service.ParkService; |
| | | import com.boying.util.RedisJsonUtil; |
| | | import io.swagger.annotations.Tag; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.io.IOException; |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneOffset; |
| | | import java.util.List; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RestController |
| | | @RequestMapping("barrier") |
| | | @RequestMapping("ffzf/barrier") |
| | | @RequiredArgsConstructor |
| | | public class BarrierController { |
| | | |
| | | private final BarrierService barrierService; |
| | | private final BarrierOpenLogService barrierOpenLogService; |
| | | private final OutParkService outParkService; |
| | | private final ParkService parkService; |
| | | private final StringRedisTemplate redisTemplate; |
| | | |
| | | |
| | | @PostMapping("findPage") |
| | | // @Operation(summary = "根据停车场分页查询道闸" , description = "根据停车场分页查询道闸" ) |
| | | public Object findPage(Page page, String parkId) { |
| | | QueryWrapper<Barrier> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | |
| | | Page page1 = barrierService.page(page, wrapper); |
| | | List<Barrier> records = page1.getRecords(); |
| | | for(Barrier barrier:records){ |
| | | long l = System.currentTimeMillis() - barrier.getUpdateTime().toInstant(ZoneOffset.of("+8")).toEpochMilli(); |
| | | System.out.println(l); |
| | | if(l>10000){ |
| | | long between = ChronoUnit.SECONDS.between(barrier.getUpdateTime(), LocalDateTime.now()); |
| | | if(between>121){ |
| | | barrier.setStatus(1); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | @PostMapping("save") |
| | | // @Operation(summary = "新增道闸" , description = "新增道闸" ) |
| | | public Object save(Barrier barrier) { |
| | | barrier.setUpdateTime(LocalDateTime.now()); |
| | | barrierService.saveOrUpdate(barrier); |
| | | try { |
| | | String jsonValue = JSON.toJSONString(barrier); |
| | | redisTemplate.opsForValue().set("barrier-"+barrier.getCode(), jsonValue); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return R.ok("保存成功"); |
| | | } |
| | | |
| | | @PostMapping("delete") |
| | | //@Operation(summary = "删除道闸" , description = "删除道闸" ) |
| | | public Object delete(Integer id) { |
| | | Barrier byId = barrierService.getById(id); |
| | | barrierService.removeById(id); |
| | | redisTemplate.delete("barrier-"+byId.getCode()); |
| | | return R.ok("删除成功"); |
| | | } |
| | | |
| | | @PostMapping("findAll") |
| | | //@Operation(summary = "查询所有道闸(APP)" , description = "查询所有道闸(APP)" ) |
| | | public Object findAll(Long parkId) { |
| | | if (parkId==null) { |
| | | return R.failed("未发现该停车场"); |
| | |
| | | } |
| | | |
| | | @PostMapping("open") |
| | | // @Operation(summary = "手动开闸(废弃)" , description = "手动开闸(废弃)" ) |
| | | public Object open(Long barrierId) { |
| | | Barrier b= barrierService.getById(barrierId); |
| | | if (b==null) { |
| | |
| | | b.setType2(1); |
| | | b.setUpdateTime(LocalDateTime.now()); |
| | | barrierService.saveOrUpdate(b); |
| | | try { |
| | | String jsonValue = JSON.toJSONString(b); |
| | | redisTemplate.opsForValue().set("barrier-"+b.getCode(), jsonValue); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return R.ok("请求成功"); |
| | | } |
| | | |
| | | @PostMapping("getByCode") |
| | | // @Operation(summary = "根据code查询道闸" , description = "根据code查询道闸" ) |
| | | public Object getByCode(String code) { |
| | | Barrier b= barrierService.findByCode2(code); |
| | | if (b==null) { |
| | | return R.failed("未找到该道闸"); |
| | | } |
| | | b.setParkName(parkService.getById(b.getParkId()).getName()); |
| | | return R.ok(b,"请求成功"); |
| | | } |
| | | |
| | | |
| | | |
| | | @PostMapping("openBarrier") |
| | | public Object openBarrier(Long barrierId,Integer type) { |
| | | // @Operation(summary = "手持手动开闸" , description = "手持手动开闸" ) |
| | | public Object openBarrier(Long barrierId,Integer type,String carNo,String remark) { |
| | | Barrier b= barrierService.getById(barrierId); |
| | | if (b==null) { |
| | | return R.failed("未找到该道闸"); |
| | |
| | | b.setType2(1); |
| | | b.setUpdateTime(LocalDateTime.now()); |
| | | barrierService.saveOrUpdate(b); |
| | | try { |
| | | String jsonValue = JSON.toJSONString(b); |
| | | redisTemplate.opsForValue().set("barrier-"+b.getCode(), jsonValue); |
| | | BarrierOpenLog barrierOpenLog = new BarrierOpenLog(); |
| | | barrierOpenLog.setCarNo(carNo); |
| | | barrierOpenLog.setRemark(remark); |
| | | barrierOpenLog.setParkId(b.getParkId()); |
| | | barrierOpenLog.setType(b.getType()); |
| | | barrierOpenLogService.save(barrierOpenLog); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return R.ok("请求成功"); |
| | | }else { |
| | | System.out.println("手动开出口闸"); |
| | |
| | | b.setType2(1); |
| | | b.setUpdateTime(LocalDateTime.now()); |
| | | barrierService.saveOrUpdate(b); |
| | | try { |
| | | String jsonValue = JSON.toJSONString(b); |
| | | redisTemplate.opsForValue().set("barrier-"+b.getCode(), jsonValue); |
| | | BarrierOpenLog barrierOpenLog = new BarrierOpenLog(); |
| | | barrierOpenLog.setCarNo(carNo); |
| | | barrierOpenLog.setRemark(remark); |
| | | barrierOpenLog.setParkId(b.getParkId()); |
| | | barrierOpenLog.setType(b.getType()); |
| | | barrierOpenLogService.save(barrierOpenLog); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return R.ok("请求成功"); |
| | | }else { |
| | | //计费 |
| | | b.setType2(1); |
| | | b.setUpdateTime(LocalDateTime.now()); |
| | | barrierService.saveOrUpdate(b); |
| | | try { |
| | | String jsonValue = JSON.toJSONString(b); |
| | | redisTemplate.opsForValue().set("barrier-"+b.getCode(), jsonValue); |
| | | BarrierOpenLog barrierOpenLog = new BarrierOpenLog(); |
| | | barrierOpenLog.setCarNo(carNo); |
| | | barrierOpenLog.setRemark(remark); |
| | | barrierOpenLog.setParkId(b.getParkId()); |
| | | barrierOpenLog.setType(b.getType()); |
| | | barrierOpenLogService.save(barrierOpenLog); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return R.ok("请求成功"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | @PostMapping("getDisConnect") |
| | | //@Operation(summary = "设备掉线通知" , description = "设备掉线通知" ) |
| | | public Object getDisConnect() { |
| | | List<Map<String,Object>> resultlist = new ArrayList<>(); |
| | | String barrierCodeAll = redisTemplate.opsForValue().get("barrierCode_all"); |
| | | if(StringUtils.isBlank(barrierCodeAll)){ |
| | | QueryWrapper<Barrier> wrapper = new QueryWrapper<>(); |
| | | wrapper.select(" code "); |
| | | List<Barrier> list = barrierService.list(wrapper); |
| | | String collect = list.stream().map(Barrier::getCode).collect(Collectors.joining(",")); |
| | | redisTemplate.opsForValue().set("barrierCode_all",collect); |
| | | barrierCodeAll = collect; |
| | | } |
| | | for (String s : barrierCodeAll.split(",")) { |
| | | Barrier barrier = barrierService.findByCode(s); |
| | | long between = ChronoUnit.SECONDS.between(barrier.getUpdateTime(), LocalDateTime.now()); |
| | | if(between>121){ |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("parkName",parkService.getOneById(barrier.getParkId()).getName()); |
| | | map.put("type",barrier.getType()==0?"出口":"入口"); |
| | | map.put("downTime",barrier.getUpdateTime()); |
| | | resultlist.add(map); |
| | | } |
| | | } |
| | | Collections.sort(resultlist, (m1, m2)-> String.valueOf(m2.get("downTime")).compareTo(String.valueOf(m1.get("downTime")))); // lamuda排序 |
| | | return R.ok(resultlist); |
| | | } |
| | | |
| | | } |