Домашняя страница автора:Designer Сяо Чжэн Об авторе:JavaИнженер-программист полного стека,Из Нинбо, Чжэцзян,Отвечает за разработку проекта ОА управляющей компании.,Фокус на программном обеспечении частичная разработка, настройка системы, удаленное техническое руководство. CSDN Academy, сертифицированный инструктор Blue Bridge Cloud Course, высококлассный создатель в области полного стека.
Исходный код проекта и загрузка документации:https://download.csdn.net/download/qq_41464123/87894045
Сообщение об обсуждении проекта/предварительном просмотре документа:https://bbs.csdn.net/topics/615889652
Номер проекта:S005
Благодаря непрерывному развитию экономики нашей страны, уровень жизни людей также улучшается с каждым днем, их желание ходить по магазинам и путешествовать становится все сильнее и сильнее, а также растет спрос на транспорт. В некоторых крупных коммерческих местах поток людей и транспортных средств чрезвычайно велик, а также возросла нагрузка на дороги, поэтому решение проблемы городских парковок становится все более актуальным. С этой точки зрения, решение проблемы парковки в торговых центрах и других местах с большим потоком людей является ключом к решению проблемы заторов на дорогах.
Подводя итог, можно сказать, что разработка интеллектуальной системы управления парковками может упростить процесс парковки для людей и повысить эффективность парковки, тем самым решая проблему заторов, экономя время людей и косвенно способствуя экономическому развитию. Система, изучаемая в этой статье, была разработана с использованием JAVA, а применение интеллектуальной системы управления парковками дало замечательные результаты. Благодаря работе интеллектуальной системы управления парковкой, парковка реализует автоматизацию въезда и выезда транспортных средств, усовершенствование управления парковкой и стандартизацию процессов зарядки, тем самым повышая эффективность и точность управления парковкой и обеспечивая более полная и точная основа для поддержки данных по управлению парковками.
Можно ли парковкууправлятьсистемавключеноМодуль управления владельцем автомобиля, модуль управления транспортным средством, модуль парковки, модуль записи парковки, модуль IC-карты, модуль сообщения об утере IC-карты,Также включает собственное управление пользователем системы, управление отделом, управление ролью, управление меню. лат, журнал управления, словарь данных управлять, управление файлами, отображение диаграммы и другие базовые модули.,Умная парковка управляетсистемой ролевого контроля доступа,Для автовладельцев и персонала парковок,Разрешения могут быть уточнены до уровня кнопок.,Вы можете настраивать роли и назначать разрешения.,Система подходит для разработки точных требований к ограничениям разрешений.
S005 Запись экрана интеллектуальной системы управления парковкой
В том числе: модуль моего автомобиля, модуль парковки, моя IC-карта и другие модули.
В том числе: управление транспортными средствами, управление парковкой, модули управления IC-картами. (Совет: вы можете добавлять роли самостоятельно и визуально назначать разрешения меню)
На основе всех функций владельцев автомобилей и персонала парковки можно изменять и поддерживать разрешения системных ролей, обновлять правила взимания платы за парковку, внедрять управление доступом на основе ролей RABC, а для реализации контроля аутентификации использовать структуру безопасности Spring.
Парковочные места являются неотъемлемой частью города и имеют большое значение в жизни, работе и мобильности города и людей. С ускорением урбанизации и увеличением количества автомобилей проблема городских заторов становится все более очевидной. Если имеется достаточно парковочных мест, можно лучше направить движение, предотвратить дорожный хаос и уменьшить заторы. Эффективность вождения транспортного средства в городе зависит от количества и расположения парковочных мест. Хорошее планирование и управление парковочными местами может повысить эффективность парковки транспортных средств, уменьшить заторы на дорогах и повысить эффективность городского транспорта. Наличие парковочных мест напрямую влияет на удобство поездок граждан. Когда парковочных мест мало, горожанам сложно выехать. Если парковочных мест будет достаточно, поездка граждан будет более удобной и комфортной. Наличие парковочных мест также повлияет на привлекательность территории торгового центра. В случае нехватки парковочных мест потребители будут выбирать другие торговые центры, что повлияет на экономическое развитие.
Модуль транспортного средства является одним из ключевых компонентов интеллектуальной системы управления парковкой и используется для записи, управления и мониторинга информации и состояния транспортного средства. Модуль транспортного средства может автоматизировать въезд и выезд транспортных средств, а также обработку данных, тем самым повышая эффективность и точность управления парковкой. Благодаря модулю транспортного средства парковка может предоставить пользователям более умные и удобные услуги, сокращая время ожидания и количество неприятных ощущений. Модуль транспортного средства может эффективно контролировать поток транспортных средств, уменьшать заторы на дорогах и решать проблемы заторов на городском транспорте. Модули транспортных средств могут записывать и контролировать въезд и выезд транспортных средств, что может снизить проблемы безопасности, такие как вторжение на территорию и угон транспортного средства. Модуль транспортного средства имеет важное исследовательское значение в системе управления парковками. Он может повысить эффективность и качество обслуживания парковок, уменьшить заторы на городских дорогах, усилить контроль и управление безопасностью, а также обеспечить поддержку данных для управления парковками.
Записи о парковке — это эффективные записи и управление местом парковки транспортных средств, временем пребывания, статусом выставления счетов и другой информацией. Записи о парковке позволяют владельцам автомобилей точно знать, где и когда были припаркованы их автомобили, предотвращая кражу транспортных средств и другие проблемы безопасности. С помощью записей о парковке можно получить такую информацию, как использование парковочных мест и поток парковок, что позволяет менеджерам парковок лучше анализировать и формулировать стратегии парковки, а также поддерживать порядок и безопасность парковки. Записи о парковке также можно использовать для усовершенствованного управления, например, для улучшения использования парковок и эффективности управления за счет дифференцированной политики ценообразования для конкретных часов пик и конкретных ситуаций. С помощью записей о парковке мы можем понять привычки и потребности владельцев автомобилей в парковке, обеспечить более качественные услуги парковки для владельцев автомобилей, а также улучшить качество обслуживания и удобство пользования парковкой.
IC-карта — это аббревиатура смарт-карты. Владельцы автомобилей могут иметь одну или несколько IC-карт для оплаты парковки. Поля IC-карты включают номер IC-карты, дату выдачи карты, владельца, ответственное лицо, номер телефона службы, баланс, создание автомобиля. Владелец может подать заявку на получение новой IC-карты в зависимости от человека и времени создания, а администратор парковки может добавлять, сообщать об утере, редактировать и условно запрашивать IC-карту владельца автомобиля.
IC-карта является физической картой, и владелец автомобиля неизбежно потеряет или повредит ее. В этом случае оплата парковки не может быть завершена. Для этого необходимо создать модуль отчета об утере IC-карты, чтобы заменить отчетную карточку владельца автомобиля. Новая IC-карта Поля отчета об утере IC-карты включают исходный номер карты, номер новой карты, заявителя, дату подачи заявления, статус заявки, статус рассмотрения, ответственное лицо и время создания. Владелец автомобиля может выбрать IC-карту под своей картой. имя, чтобы подать заявку на отчет о потере, а администратор парковки может просмотреть заявку владельца автомобиля на отчет о потере IC-карты.
Код Vue для интерфейса входа выглядит следующим образом.
<Tabs v-model="tabName" @on-click="changeTabName" class="loginTab">
<TabPane label="Пароль аккаунта Авторизоваться" name="userAndPassword">
<Form ref="usernameLoginForm" :model="form" :rules="usernameLoginFormRules" class="form">
<FormItem prop="username" class="loginInput">
<Row>
<Input v-model="form.username" size="large" clearable placeholder="Авторизоватьсясчет" autocomplete="off">
<Icon class="iconfont icon-yonghu" slot="prefix" style="line-height:50px" />
</Input>
</Row>
</FormItem>
<FormItem prop="password">
<Input style="height:50px;line-height:50px" type="password" v-model="form.password" size="large" Placeholder="Пожалуйста, введите пароль для Авторизации" password autocomplete="off">
<Icon class="iconfont icon-mima1" slot="prefix" style="line-height:50px" />
</Input>
</FormItem>
<FormItem prop="imgCode">
<Row type="flex" justify="space-between" style="align-items: center;overflow: hidden;">
<Input v-model="form.imgCode" size="large" clearable Placeholder="Пожалуйста, введите код подтверждения" :maxlength="10" class="input-verify" />
<div class="code-image" style="position:relative;font-size:12px;">
<Spin v-if="loadingCaptcha" fix></Spin>
<img :src="captchaImg" @click="getCaptchaImg" alt="Не удалось загрузить код подтверждения" style="width:110px;cursor:pointer;display:block" />
</div>
</Row>
</FormItem>
</Form>
<Row type="flex" justify="space-between" align="middle">
<Checkbox v-model="saveLogin" size="large">Это автоматически?Авторизоваться</Checkbox>
<router-link to="/regist">
<a class="forget-pass">没有счет?Нажмите здесь, чтобы зарегистрироваться</a>
</router-link>
</Row>
<Row>
<Button class="login-btn" type="primary" size="large" :loading="loading" @click="submitLogin" long>
<span v-if="!loading" style="letter-spacing:20px; font-weight:bold">Авторизоваться</span>
<span v-else>являются Авторизоваться...пожалуйста, подождите}</span>
</Button>
</Row>
</TabPane>
<TabPane label="Код сканирования Enterprise WeChat" name="mobile">
<div id="qywxsmqywxsm"></div>
</TabPane>
</Tabs>
Основной код для запроса пользователей (автовладельцев) выглядит следующим образом.
@RequestMapping(value = "/getUserList", method = RequestMethod.GET)
@ApiOperation(value = «Опрос всех автовладельцев»)
public Result<List<User>> getUserList(@RequestParam Integer type){
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("type",type);
return new ResultUtil<List<User>>().setData(iUserService.list(qw));
}
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Проверить автомобиль»)
public Result<IPage<Vehicle>> getByPage(@ModelAttribute Vehicle vehicle ,@ModelAttribute PageVo page){
QueryWrapper<Vehicle> qw = new QueryWrapper<>();
User currUser = securityUtil.getCurrUser();
QueryWrapper<User> 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'");
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<Vehicle> data = iVehicleService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<Vehicle>>().setData(data);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Добавить новый автомобиль»)
public Result<Vehicle> insert(Vehicle vehicle){
User user = iUserService.getById(vehicle.getOwnerId());
if(user == null) {
return ResultUtil.error("Владелец не существует");
}
vehicle.setOwnerName(user.getNickname());
iVehicleService.saveOrUpdate(vehicle);
return new ResultUtil<Vehicle>().setData(vehicle);
}
@RequestMapping(value = "/update", method = RequestMethod.POST)
@ApiOperation(value = «Редактировать автомобиль»)
public Result<Vehicle> update(Vehicle vehicle){
User user = iUserService.getById(vehicle.getOwnerId());
if(user == null) {
return ResultUtil.error("Владелец не существует");
}
vehicle.setOwnerName(user.getNickname());
iVehicleService.saveOrUpdate(vehicle);
return new ResultUtil<Vehicle>().setData(vehicle);
}
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Проверьте парковочное место»)
public Result<IPage<ParkingSpace>> getByPage(@ModelAttribute ParkingSpace parkingSpace ,@ModelAttribute PageVo page){
QueryWrapper<ParkingSpace> qw = new QueryWrapper<>();
if(!ZwzNullUtils.isNull(parkingSpace.getTitle())) {
qw.like("title",parkingSpace.getTitle());
}
if(!ZwzNullUtils.isNull(parkingSpace.getStatus())) {
qw.eq("status",parkingSpace.getStatus());
}
IPage<ParkingSpace> data = iParkingSpaceService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<ParkingSpace>>().setData(data);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Новое парковочное место»)
public Result<ParkingSpace> insert(ParkingSpace parkingSpace){
if(Objects.equals(0, parkingSpace.getSortOrder().compareTo(BigDecimal.ZERO))) {
parkingSpace.setSortOrder(BigDecimal.valueOf(iParkingSpaceService.count() + 1L));
}
iParkingSpaceService.saveOrUpdate(parkingSpace);
return new ResultUtil<ParkingSpace>().setData(parkingSpace);
}
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Проверьте записи о парковке»)
public Result<IPage<ParkingData>> getByPage(@ModelAttribute ParkingData parkingData ,@ModelAttribute PageVo page){
QueryWrapper<ParkingData> qw = new QueryWrapper<>();
User currUser = securityUtil.getCurrUser();
QueryWrapper<User> 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'");
if(iUserService.count(userQw) < 1L) {
qw.eq("owner_id",currUser.getId());
}
if(!ZwzNullUtils.isNull(parkingData.getCarNumber())) {
qw.like("car_number",parkingData.getCarNumber());
}
if(!ZwzNullUtils.isNull(parkingData.getOwner())) {
qw.like("owner",parkingData.getOwner());
}
IPage<ParkingData> data = iParkingDataService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<ParkingData>>().setData(data);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Добавить запись о парковке»)
public Result<ParkingData> insert(ParkingData parkingData){
Vehicle car = iVehicleService.getById(parkingData.getCarId());
if(car == null) {
return ResultUtil.error("Транспортное средство не существует");
}
// Определить баланс
QueryWrapper<IcCard> 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<ParkingData>().setData(parkingData);
}
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Карта запроса IC»)
public Result<IPage<IcCard>> getByPage(@ModelAttribute IcCard icCard ,@ModelAttribute PageVo page){
QueryWrapper<IcCard> qw = new QueryWrapper<>();
User currUser = securityUtil.getCurrUser();
QueryWrapper<User> 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'");
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<IcCard> data = iIcCardService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<IcCard>>().setData(data);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Добавить IC-карту»)
public Result<IcCard> insert(IcCard icCard){
User user = iUserService.getById(icCard.getUserId());
if(user == null) {
return ResultUtil.error("Владелец не существует");
}
icCard.setUserName(user.getNickname());
User currUser = securityUtil.getCurrUser();
icCard.setWorkUser(currUser.getNickname());
icCard.setDate(DateUtil.today());
iIcCardService.saveOrUpdate(icCard);
return new ResultUtil<IcCard>().setData(icCard);
}
@RequestMapping(value = "/recharge", method = RequestMethod.POST)
@ApiOperation(value = «пополнить»)
public Result<Object> recharge(@RequestParam String id, @RequestParam BigDecimal number){
IcCard ic = iIcCardService.getById(id);
if(ic == null) {
return ResultUtil.error("IC-карта не существует");
}
ic.setBalance(ic.getBalance().add(number));
iIcCardService.saveOrUpdate(ic);
return ResultUtil.success();
}
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = «Запрос сообщить об утере IC-карты»)
public Result<IPage<IcCardLoss>> getByPage(@ModelAttribute IcCardLoss icCardLoss ,@ModelAttribute PageVo page){
QueryWrapper<IcCardLoss> qw = new QueryWrapper<>();
User currUser = securityUtil.getCurrUser();
QueryWrapper<User> 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'");
if(iUserService.count(userQw) < 1L) {
qw.eq("apply_id",currUser.getId());
}
if(!ZwzNullUtils.isNull(icCardLoss.getCarNumber())) {
qw.like("car_number",icCardLoss.getCarNumber());
}
if(!ZwzNullUtils.isNull(icCardLoss.getApplyUser())) {
qw.like("apply_user",icCardLoss.getApplyUser());
}
if(!ZwzNullUtils.isNull(icCardLoss.getStatus())) {
qw.eq("status",icCardLoss.getStatus());
}
IPage<IcCardLoss> data = iIcCardLossService.page(PageUtil.initMpPage(page),qw);
return new ResultUtil<IPage<IcCardLoss>>().setData(data);
}
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = «Отчет о потере новой IC-карты»)
public Result<IcCardLoss> insert(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<IcCardLoss>().setData(icCardLoss);
}
@RequestMapping(value = "/audit", method = RequestMethod.POST)
@ApiOperation(value = «Аудит отчета об утере IC-карты»)
public Result<Object> audit(@RequestParam String id){
IcCardLoss cl = iIcCardLossService.getById(id);
if(cl == null) {
return ResultUtil.error("Убыточный ордер не существует");
}
cl.setStatus("Проверено");
iIcCardLossService.saveOrUpdate(cl);
IcCard ic = iIcCardService.getById(cl.getCarId());
if(ic != null) {
ic.setCarNumber(cl.getNewNumber());
iIcCardService.saveOrUpdate(ic);
}
return ResultUtil.success();
}
Интеллектуальная система управления парковками – это высокотехнологичный программный продукт, используемый для комплексного обслуживания парковок под компьютерным управлением. По словам специалистов, интеллектуальная система управления парковками была запущена в 2013 году. Система постоянно совершенствуется, и ее функции все больше соответствуют требованиям. В соответствии с реальными потребностями работа интеллектуальной системы управления парковкой стала более удобной для пользователя.
В нашей стране системы управления интеллектуальными парковками постепенно развивались с появлением большого количества общественных парковок в Китае. Первоначальная система управления интеллектуальными парковками в Китае постепенно развивалась на основе внедрения и усвоения аналогичных зарубежных систем, и на этой основе непрерывно. улучшение имеет более всеобъемлющее значение. В целом разработка интеллектуальных систем управления парковкой и стандартного программного обеспечения находится на высокой стадии, но эти требования не статичны, и интеллектуальные системы управления парковкой будут продолжать развиваться с течением времени.