| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.StringUtils; |
| | | import com.boying.common.R; |
| | | import com.boying.common.SystemConfigProperties; |
| | |
| | | private final CostRuleService costRuleService; |
| | | private final WhiteListService whiteListService; |
| | | private final FileInfoService fileInfoService; |
| | | private final TicketBlackService ticketBlackService; |
| | | private final String LEDURL = "http://192.168.31.212:9988/LedShow/IGetResultDataAllLine"; |
| | | |
| | | /** |
| | |
| | | if(Integer.parseInt(num) >= byId.getNum() ){ |
| | | return R.failed(null,"禁止通行,车位已满"); |
| | | }else { |
| | | enterPark.setCreateTime(LocalDateTime.now()); |
| | | QueryWrapper<Ticket> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(Ticket::getCarNo,enterPark.getCarNo()) |
| | | .eq(Ticket::getPayStatus,1); |
| | | List<Ticket> tickets = ticketService.list(wrapper); |
| | | if(tickets.size()>0){ |
| | | enterPark.setStatus(1);//发现有违章 |
| | | QueryWrapper<EnterPark> wrapper2 = new QueryWrapper<>(); |
| | | wrapper2.lambda() |
| | | .eq(EnterPark::getBarrierId,barrier.getId()) |
| | | .orderByDesc(EnterPark::getCreateTime) |
| | | .last(" limit 1"); |
| | | EnterPark one = enterParkService.getOne(wrapper2); |
| | | if(one == null){ |
| | | return R.failed("未查询到车辆存在"); |
| | | }else { |
| | | if(one.getCarNo().equals("无牌车")){ |
| | | enterPark.setCreateTime(LocalDateTime.now()); |
| | | QueryWrapper<Ticket> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(Ticket::getCarNo,enterPark.getCarNo()) |
| | | .eq(Ticket::getPayStatus,1); |
| | | List<Ticket> tickets = ticketService.list(wrapper); |
| | | if(tickets.size()>0){ |
| | | enterPark.setStatus(1);//发现有违章 |
| | | } |
| | | enterPark.setIsPay(0); |
| | | enterPark.setPrice(0); |
| | | enterParkService.deleteByCarNo(enterPark.getCarNo(),enterPark.getParkId()); |
| | | enterParkService.save(enterPark); |
| | | barrier.setType2(1); |
| | | barrierService.updateById(barrier); |
| | | return R.ok(); |
| | | }else { |
| | | return R.failed("非法操作"); |
| | | } |
| | | } |
| | | enterParkService.deleteByCarNo(enterPark.getCarNo(),enterPark.getParkId()); |
| | | enterParkService.save(enterPark); |
| | | return R.ok(); |
| | | } |
| | | } |
| | | return R.failed(null,"数据异常"); |
| | |
| | | outPark.setTime(l/(1000*60)); |
| | | toDayHrMinSec = DateUtilOther.millisToDayHrMinSec(l/(1000*60)); |
| | | money = costRuleService.getMoney(one.getParkId(), outPark.getEnterTime(), outPark.getCreateTime(), 1); |
| | | |
| | | //入场记录保存一下 |
| | | if(one.getIsPay()==1){ |
| | | money = money - one.getPrice(); |
| | | }else { |
| | | one.setPrice(money); |
| | | one.setIsPay(0); |
| | | enterParkService.updateById(one); |
| | | } |
| | | } catch (ParseException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | |
| | | |
| | | public void enterPark(String carNo,Integer barrierId,Integer parkId,FileInfo fileInfo) { |
| | | Park park = parkService.getById(parkId); |
| | | // int num = 0; |
| | | // String s = redisTemplate.opsForValue().get("car_park_" + parkId); |
| | | // if(park != null){ |
| | | // num = park.getNum(); |
| | | // if(s !=null){ |
| | | // if(Integer.parseInt(s) >= num){ |
| | | // redisTemplate.opsForValue().set("park_up_" + parkId,"false",30, TimeUnit.DAYS); |
| | | // return; |
| | | // } |
| | | // }else { |
| | | // s= "0"; |
| | | // redisTemplate.opsForValue().set("car_park_" + parkId,s,30, TimeUnit.DAYS); |
| | | // redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS); |
| | | // } |
| | | // } |
| | | enterParkService.deleteByCarNo(carNo,parkId); |
| | | EnterPark enterPark = new EnterPark(); |
| | | enterPark.setCarNo(carNo); |
| | | enterPark.setBarrierId(barrierId); |
| | | enterPark.setParkId(parkId); |
| | | TicketBlack black = ticketBlackService.getByCarNo(carNo, 1); |
| | | if(black != null){ |
| | | System.out.println("黑名单车辆"+carNo); |
| | | }else { |
| | | enterParkService.deleteByCarNo(carNo,parkId); |
| | | EnterPark enterPark = new EnterPark(); |
| | | enterPark.setIsPay(0); |
| | | enterPark.setPrice(0); |
| | | enterPark.setCarNo(carNo); |
| | | enterPark.setBarrierId(barrierId); |
| | | enterPark.setParkId(parkId); |
| | | |
| | | QueryWrapper<Ticket> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(Ticket::getCarNo,enterPark.getCarNo()) |
| | | .eq(Ticket::getPayStatus,1); |
| | | List<Ticket> tickets = ticketService.list(wrapper); |
| | | if(tickets.size()>0){ |
| | | enterPark.setStatus(1);//发现有违章 |
| | | QueryWrapper<Ticket> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda() |
| | | .eq(Ticket::getCarNo,enterPark.getCarNo()) |
| | | .eq(Ticket::getPayStatus,1); |
| | | List<Ticket> tickets = ticketService.list(wrapper); |
| | | if(tickets.size()>0){ |
| | | enterPark.setStatus(1);//发现有违章 |
| | | } |
| | | if(fileInfo != null){ |
| | | enterPark.setImgId(fileInfo.getId()); |
| | | } |
| | | enterParkService.saveOrUpdate(enterPark); |
| | | } |
| | | if(fileInfo != null){ |
| | | enterPark.setImgId(fileInfo.getId()); |
| | | } |
| | | enterParkService.saveOrUpdate(enterPark); |
| | | |
| | | // Barrier barrier = barrierService.getById(barrierId); |
| | | // barrier.setType2(1); |
| | | // barrierService.saveOrUpdate(barrier); |
| | | } |
| | | |
| | | public double outPark(String carNo,Integer barrierId,Integer parkId,HttpServletRequest request, HttpServletResponse response,FileInfo fileInfo) throws ServletException, IOException { |
| | |
| | | outPark.setTime(l/(1000*60)); |
| | | toDayHrMinSec = DateUtilOther.millisToDayHrMinSec(l/(1000*60)); |
| | | money = costRuleService.getMoney(parkId, 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(); |
| | | } |
| | |
| | | if(w.getType()==0){ |
| | | outLedShowYueZu(barrier.getCarNo(),"月租车",parkId,request,response,0); |
| | | OutPark byCarNoAndBarrierId = outParkService.findByCarNoAndBarrierId(carNo, barrierId); |
| | | byCarNoAndBarrierId.setStatus(1); |
| | | byCarNoAndBarrierId.setStatus(2); |
| | | byCarNoAndBarrierId.setStatus2(1); |
| | | outParkService.saveOrUpdate(byCarNoAndBarrierId); |
| | | return 0.0; |
| | |
| | | if(pid == outPark.getParkId() && System.currentTimeMillis()<w.getEndTime().getTime()){ |
| | | outLedShowYueZu(barrier.getCarNo(),"月租车",parkId,request,response,0); |
| | | OutPark byCarNoAndBarrierId = outParkService.findByCarNoAndBarrierId(carNo, barrierId); |
| | | byCarNoAndBarrierId.setStatus(1); |
| | | byCarNoAndBarrierId.setStatus(2); |
| | | byCarNoAndBarrierId.setStatus2(1); |
| | | outParkService.saveOrUpdate(byCarNoAndBarrierId); |
| | | return 0.0; |
| | |
| | | |
| | | |
| | | public void inLedShow(String ledId,String carNo,Integer parkId,HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
| | | String num = redisTemplate.opsForValue().get("car_park_" + parkId); |
| | | if(num == null){ |
| | | num = "0"; |
| | | } |
| | | Park byId = parkService.getById(parkId); |
| | | int n = Integer.parseInt(num)+1; |
| | | redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(n),30, TimeUnit.DAYS); |
| | | int i = byId.getNum() - Integer.parseInt(num); |
| | | if(i<0){ |
| | | i = 0; |
| | | } |
| | | String carType = ""; |
| | | String carDay = ""; |
| | | Barrier barrier = barrierService.findByCode(ledId); |
| | | WhiteList byCarNo = whiteListService.getByCarNo(carNo); |
| | | if(byCarNo == null){ |
| | | carType = "临时车"; |
| | | TicketBlack black = ticketBlackService.getByCarNo(carNo, 1); |
| | | if(black != null){ |
| | | LedBean ledBean = new LedBean(); |
| | | ledBean.setcolor1(0); |
| | | ledBean.setcolor2(0); |
| | | ledBean.setcolor3(0); |
| | | ledBean.setcolor4(0); |
| | | ledBean.setcontent1(carNo); |
| | | ledBean.setcontent2("黑名单车辆"); |
| | | ledBean.setcontent3("禁止驶入"); |
| | | ledBean.setcontent4("联系管理员"); |
| | | ledBean.setdisMode1(0); |
| | | ledBean.setdisMode2(0); |
| | | ledBean.setdisMode3(0); |
| | | ledBean.setdisMode4(0); |
| | | ledBean.setvoiceContent("黑名单车辆"+carNo+",禁止驶入"); |
| | | ResultData resultData = CodeUtil.GetResultDataAllLine(ledBean); |
| | | byte[] dataX = new byte[resultData.getlenth()]; |
| | | System.arraycopy(resultData.getdatas(),0,dataX,0,resultData.getlenth()); |
| | | String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; |
| | | data1 = data1.replaceAll("\r\n", ""); |
| | | noOpen(request,response,data1); |
| | | }else { |
| | | if (byCarNo.getType() == 0){ |
| | | //白名单永久车辆 |
| | | carType = "月租车"; |
| | | String num = redisTemplate.opsForValue().get("car_park_" + parkId); |
| | | if(num == null){ |
| | | num = "0"; |
| | | } |
| | | Park byId = parkService.getById(parkId); |
| | | int n = Integer.parseInt(num)+1; |
| | | redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(n),30, TimeUnit.DAYS); |
| | | int i = byId.getNum() - Integer.parseInt(num); |
| | | if(i<0){ |
| | | i = 0; |
| | | } |
| | | String carType = ""; |
| | | String carDay = ""; |
| | | Barrier barrier = barrierService.findByCode(ledId); |
| | | WhiteList byCarNo = whiteListService.getByCarNo(carNo); |
| | | if(byCarNo == null){ |
| | | carType = "临时车"; |
| | | }else { |
| | | //白名单固定停车场车辆 |
| | | if(StringUtils.isNotBlank(byCarNo.getParkIds()) && byCarNo.getParkIds().contains(barrier.getParkId()+"")){ |
| | | if (byCarNo.getType() == 0){ |
| | | //白名单永久车辆 |
| | | carType = "月租车"; |
| | | long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000); |
| | | carDay = "有效期还有"+l+"天"; |
| | | }else { |
| | | carType = "临时车"; |
| | | //白名单固定停车场车辆 |
| | | if(StringUtils.isNotBlank(byCarNo.getParkIds()) && byCarNo.getParkIds().contains(barrier.getParkId()+"")){ |
| | | carType = "月租车"; |
| | | long l = (byCarNo.getEndTime().getTime() - byCarNo.getStartTime().getTime()) / (24 * 3600 * 1000); |
| | | carDay = "有效期还有"+l+"天"; |
| | | }else { |
| | | carType = "临时车"; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(StringUtils.isBlank(carDay)){ |
| | | carDay = "欢迎光临"; |
| | | } |
| | | if(StringUtils.isBlank(carDay) && !carNo.equals("无车牌")){ |
| | | carDay = "欢迎光临"; |
| | | }else if(StringUtils.isBlank(carDay) && carNo.equals("无车牌")){ |
| | | carDay = "拒绝驶入"; |
| | | } |
| | | |
| | | LedBean ledBean = new LedBean(); |
| | | ledBean.setcolor1(0); |
| | | ledBean.setcolor2(0); |
| | | ledBean.setcolor3(0); |
| | | ledBean.setcolor4(0); |
| | | ledBean.setcontent1(carNo); |
| | | ledBean.setcontent2(carType); |
| | | ledBean.setcontent3(carDay); |
| | | ledBean.setcontent4("余位:"+i); |
| | | ledBean.setdisMode1(0); |
| | | ledBean.setdisMode2(0); |
| | | ledBean.setdisMode3(0); |
| | | ledBean.setdisMode4(0); |
| | | ledBean.setvoiceContent(carType+","+carNo+","+carDay); |
| | | ResultData resultData = CodeUtil.GetResultDataAllLine(ledBean); |
| | | byte[] dataX = new byte[resultData.getlenth()]; |
| | | System.arraycopy(resultData.getdatas(),0,dataX,0,resultData.getlenth()); |
| | | String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; |
| | | data1 = data1.replaceAll("\r\n", ""); |
| | | LedBean ledBean = new LedBean(); |
| | | ledBean.setcolor1(0); |
| | | ledBean.setcolor2(0); |
| | | ledBean.setcolor3(0); |
| | | ledBean.setcolor4(0); |
| | | ledBean.setcontent1(carNo); |
| | | ledBean.setcontent2(carType); |
| | | ledBean.setcontent3(carDay); |
| | | ledBean.setcontent4("余位:"+i); |
| | | ledBean.setdisMode1(0); |
| | | ledBean.setdisMode2(0); |
| | | ledBean.setdisMode3(0); |
| | | ledBean.setdisMode4(0); |
| | | ledBean.setvoiceContent(carType+","+carNo+","+carDay); |
| | | ResultData resultData = CodeUtil.GetResultDataAllLine(ledBean); |
| | | byte[] dataX = new byte[resultData.getlenth()]; |
| | | System.arraycopy(resultData.getdatas(),0,dataX,0,resultData.getlenth()); |
| | | String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; |
| | | data1 = data1.replaceAll("\r\n", ""); |
| | | |
| | | open(request,response,data1);//入场开闸 |
| | | if(!carNo.equals("无车牌")){ |
| | | open(request,response,data1);//入场开闸 |
| | | }else { |
| | | noOpen(request,response,data1); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public void inLedFullShow(String ledId, String carNo, Integer parkId,HttpServletRequest request, HttpServletResponse response) throws IOException { |
| | |
| | | String data1 = Base64.getMimeEncoder().encodeToString(dataX) + "="; |
| | | data1 = data1.replaceAll("\r\n", ""); |
| | | if(type == 0){ |
| | | //开闸 |
| | | open(request,response,data1); |
| | | redisTemplate.opsForValue().set("park_change_in_"+parkId,"true",1, TimeUnit.DAYS); |
| | | int i = Integer.parseInt(redisnum); |
| | | i--; |
| | | if(i<0){ |
| | | String s= "2."+carNo+",场内停车数为0\n"; |
| | | writeTxt2(s); |
| | | redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS); |
| | | redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS); |
| | | if(carNo.equals("无车牌")){ |
| | | noOpen(request,response,data1); |
| | | }else { |
| | | String s= "2."+carNo+",场内停车数为"+i+"\n"; |
| | | writeTxt2(s); |
| | | redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS); |
| | | redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS); |
| | | //开闸 |
| | | open(request,response,data1); |
| | | redisTemplate.opsForValue().set("park_change_in_"+parkId,"true",1, TimeUnit.DAYS); |
| | | int i = Integer.parseInt(redisnum); |
| | | i--; |
| | | if(i<0){ |
| | | String s= "2."+carNo+",场内停车数为0\n"; |
| | | writeTxt2(s); |
| | | redisTemplate.opsForValue().set("car_park_" + parkId,"0",30, TimeUnit.DAYS); |
| | | redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS); |
| | | }else { |
| | | String s= "2."+carNo+",场内停车数为"+i+"\n"; |
| | | writeTxt2(s); |
| | | redisTemplate.opsForValue().set("car_park_" + parkId,Integer.toString(i),30, TimeUnit.DAYS); |
| | | redisTemplate.opsForValue().set("park_up_" + parkId,"true",30, TimeUnit.DAYS); |
| | | } |
| | | } |
| | | }else { |
| | | noOpen(request,response,data1); |