基于JAVA+Vue+SpringBoot+MySQL的停车场收费系统,包含了车辆管理模块、停车场模块、停车记录模块、IC卡档案模块和IC卡挂失模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,停车场收费系统基于角色的访问控制,给停车管理员、车主、工作人员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。
随着我国经济的不断发展,人民生活水平的也日益提高,外出购物、旅游意向也越来越强,对交通出行的需求也越来越大。在一些大型商贸场所,无论是人流量还是车流都格外大,而道路承载压力也随之增加,所以城市停车问题的解决也越发急迫。由此观之,如何解决商场等人流量多等地的停车问题,是解决交通拥堵的关键点。
综上所述,设计一个停车场收费系统能够简化人们停车流程,提高停车效率,从而解决拥挤问题,节省人们时间的同时也间接推动经济发展。本文研究的系统采用JAVA开发,停车场收费系统的应用取得了显著的效果。通过停车场收费系统的运行,停车场实现了车辆进出的自动化、停车场管理的精细化和收费流程的标准化,从而提高停车场管理效率和准确性,为停车场管理决策提供更完整、准确的数据支持。
停车位是城市不可或缺的一部分,在城市和人民的生活、工作和流动中具有重要意义。随着城市化进程的加快和汽车保有量的增加,城市交通拥堵问题越来越明显。如果有足够的停车位,可以更好地引导交通,防止交通混乱,缓解交通拥堵,在城市内驾驶车辆的效率取决于停车位的数量和位置。良好的停车位规划和管理可以提高车辆停车效率,减少道路拥堵,提高城市交通效率。停车位的可用性直接影响市民的出行体验。当停车位紧张时,市民很难开车出去,如果有足够的停车位,市民出行将更加方便和舒适。停车位的可用性也会影响商业中心区域的吸引力,如果没有足够的停车位,消费者会选择其他商业中心,这将影响经济发展。
车辆模块是停车场收费系统的关键组件之一,用于记录、管理和监控车辆信息和状态。车辆模块可以实现车辆进出的自动化和数据处理的自动化,从而提高停车管理的效率和准确性。通过车辆模块,停车可以为用户提供更智能、更方便的服务,减少用户等待时间和不良体验。车辆模块可以有效控制车辆的交通流量,缓解道路拥堵,改善城市交通拥堵问题。车辆模块可以记录和监控车辆的进出,可以减少非法侵入和车辆盗窃等安全问题。车辆模块在停车管理系统中具有重要的研究意义,可以提高停车管理的效率和服务质量,改善城市交通拥堵,加强安全监督管理,为停车管理提供数据支持。
停车收费是对车辆的停车位置、停留时间和计费状态等信息的有效记录和管理。停车收费可以让车主清楚地知道他们的车辆停在哪里和什么时候停,避免车辆被盗和其他安全问题。通过停车收费,可以获得停车位使用情况、停车流量等信息,让停车场管理者更好地分析和制定停车策略,帮助维护停车场的秩序和安全。停车收费也可以用于精细化管理,例如通过针对特定高峰时间和特定情况的差异化定价政策来提高停车利用率和管理效率。通过停车收费,可以了解车主的停车习惯和需求,为车主提供更好的停车服务,提高停车场的服务质量和用户体验。
IC卡是智能卡的缩写,车主可以拥有一张或多张的IC卡,用于停车费用的缴纳,IC卡字段包括IC卡号、开卡日期、所属人、经办人、服务电话、余额、创建人、创建时间,车主可以申请新的IC卡,停车场管理员可以新增、挂失、编辑、条件查询车主的IC卡。
IC卡是一张实体卡,车主难免会遗失或损坏,当出现这类情况时则无法完成停车费用缴纳,这就需要建一个IC卡挂失模块,给车主的挂失卡替换为新的IC卡,IC卡挂失字段包括原卡号、新卡号、申请人、申请日期、申请状态、审核状态、经办人、创建时间,车主可以选择自己名下的IC卡发起挂失申请,停车场管理员可以审核车主的IC卡挂失申请。
@RequestMapping(value = "/getByPage", method = RequestMethod.GET) @ApiOperation(value = "查询停车位") public Result> getByPage(@ModelAttribute ParkingSpace parkingSpace ,@ModelAttribute PageVo page){ QueryWrapper qw = new QueryWrapper<>(); if(!ZwzNullUtils.isNull(parkingSpace.getTitle())) { qw.like("title",parkingSpace.getTitle()); } if(!ZwzNullUtils.isNull(parkingSpace.getStatus())) { qw.eq("status",parkingSpace.getStatus()); } IPage data = iParkingSpaceService.page(PageUtil.initMpPage(page),qw); return new ResultUtil >().setData(data); }
@RequestMapping(value = "/getByPage", method = RequestMethod.GET) @ApiOperation(value = "查询车辆") public Result> getByPage(@ModelAttribute Vehicle vehicle ,@ModelAttribute PageVo page){ QueryWrapper qw = new QueryWrapper<>(); User currUser = securityUtil.getCurrUser(); QueryWrapper userQw = new QueryWrapper<>(); userQw.eq("id",currUser.getId()); userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND (role_id = '1536606659751841799' OR role_id = '1720347028472598528')"); if(iUserService.count(userQw) < 1L) { qw.eq("owner_id",currUser.getId()); } if(!ZwzNullUtils.isNull(vehicle.getCarNumber())) { qw.like("car_number",vehicle.getCarNumber()); } if(!ZwzNullUtils.isNull(vehicle.getCarType())) { qw.like("car_type",vehicle.getCarType()); } if(!ZwzNullUtils.isNull(vehicle.getOwnerName())) { qw.like("owner_name",vehicle.getOwnerName()); } IPage data = iVehicleService.page(PageUtil.initMpPage(page),qw); return new ResultUtil >().setData(data); }
@RequestMapping(value = "/insert", method = RequestMethod.POST) @ApiOperation(value = "新增停车记录") public Resultinsert(ParkingData parkingData){ Vehicle car = iVehicleService.getById(parkingData.getCarId()); if(car == null) { return ResultUtil.error("车辆不存在"); } // 判断余额 QueryWrapper icQw = new QueryWrapper<>(); icQw.eq("user_id",car.getOwnerId()); icQw.last("limit 1"); IcCard ic = iIcCardService.getOne(icQw); if(ic == null) { return ResultUtil.error("您没有IC卡,请申请"); } if(parkingData.getCost().compareTo(ic.getBalance()) > 0) { return ResultUtil.error("您IC卡余额不足"); } // 记录数据 parkingData.setCarNumber(car.getCarNumber()); parkingData.setOwnerId(car.getOwnerId()); parkingData.setOwner(car.getOwnerName()); iParkingDataService.saveOrUpdate(parkingData); ic.setBalance(ic.getBalance().subtract(parkingData.getCost())); iIcCardService.saveOrUpdate(ic); return new ResultUtil ().setData(parkingData); }
@RequestMapping(value = "/getByPage", method = RequestMethod.GET) @ApiOperation(value = "查询IC卡") public Result> getByPage(@ModelAttribute IcCard icCard ,@ModelAttribute PageVo page){ QueryWrapper qw = new QueryWrapper<>(); User currUser = securityUtil.getCurrUser(); QueryWrapper userQw = new QueryWrapper<>(); userQw.eq("id",currUser.getId()); userQw.inSql("id","SELECT user_id FROM a_user_role WHERE del_flag = 0 AND (role_id = '1536606659751841799' OR role_id = '1720347028472598528')"); if(iUserService.count(userQw) < 1L) { qw.eq("user_id",currUser.getId()); } if(!ZwzNullUtils.isNull(icCard.getCarNumber())) { qw.like("car_number",icCard.getCarNumber()); } if(!ZwzNullUtils.isNull(icCard.getWorkUser())) { qw.like("work_user",icCard.getWorkUser()); } IPage data = iIcCardService.page(PageUtil.initMpPage(page),qw); return new ResultUtil >().setData(data); }
@RequestMapping(value = "/insert", method = RequestMethod.POST) @ApiOperation(value = "新增IC卡挂失") public Resultinsert(IcCardLoss icCardLoss){ IcCard ic = iIcCardService.getById(icCardLoss.getCarId()); if(ic == null) { return ResultUtil.error("IC卡不存在"); } icCardLoss.setCarNumber(ic.getCarNumber()); User currUser = securityUtil.getCurrUser(); icCardLoss.setApplyId(currUser.getId()); icCardLoss.setApplyUser(currUser.getNickname()); iIcCardLossService.saveOrUpdate(icCardLoss); return new ResultUtil ().setData(icCardLoss); }
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!
上一篇:深度解析 Netty 架构与原理