【开源】基于SpringBoot的农村物流配送系统的设计和实现


目录

  • 一、摘要
    • [1.1 项目介绍](#1.1 项目介绍)
    • [1.2 项目录屏](#1.2 项目录屏)
  • 二、功能模块
    • [2.1 系统登录、注册界面](#2.1 系统登录、注册界面)
    • [2.2 系统功能](#2.2 系统功能)
      • [2.2.1 快递信息管理:](#2.2.1 快递信息管理:)
      • [2.2.2 位置信息管理:](#2.2.2 位置信息管理:)
      • [2.2.3 配送人员分配:](#2.2.3 配送人员分配:)
      • [2.2.4 路线规划:](#2.2.4 路线规划:)
      • [2.2.5 个人中心:](#2.2.5 个人中心:)
      • [2.2.6 退换快递处理:](#2.2.6 退换快递处理:)
      • [2.2.7 客户评价:](#2.2.7 客户评价:)
  • 三、系统展示
  • 四、核心代码
    • [4.1 查询商家](#4.1 查询商家)
    • [4.2 退换快递](#4.2 退换快递)
    • [4.3 新增路线规划](#4.3 新增路线规划)
    • [4.4 查询乡镇村社](#4.4 查询乡镇村社)
    • [4.5 查询配送位置](#4.5 查询配送位置)
  • 五、免责说明

一、摘要

1.1 项目介绍

基于Vue+SpringBoot+MySQL的农村物流配送系统,包含快递客户管理模块、配送位置管理模块、配送人员模块、路线规划模块、商家管理模块、商品退换模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,农村物流配送系统基于角色的访问控制,给物流管理员、配送人员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

项目编号: S 024 ,源码已在 B i l i b i l i 中上架,需要的朋友请自行下载。 \color{red}{项目编号:S024,源码已在 Bilibili 中上架,需要的朋友请自行下载。} 项目编号:S024,源码已在Bilibili中上架,需要的朋友请自行下载。

java 复制代码
https://gf.bilibili.com/item/detail/1104040029

为了帮助小白入门 Java,博主录制了本项目配套的《项目手把手启动教程》,希望能给同学们带来帮助。

1.2 项目录屏


二、功能模块

2.1 系统登录、注册界面

1、快递员注册、登录此系统。

2、建立员工数据库,管理员工信息。

2.2 系统功能

2.2.1 快递信息管理:

(1)添加客户信息:输入收货人,取件码,快递单号。

(2)查询客户信息:输入收货人,ID。

(3)删除客户信息:

(4)修改客户信息;

2.2.2 位置信息管理:

(1)添加位置信息:输入起始地点,输入终点

(2)删除位置信息:

(3)修改位置信息:

(4)定位信息:请输入地点信息

2.2.3 配送人员分配:

(1)添加配送人员:输入性别,输入姓名,输入年龄

(2)删除配送人员信息:

(3)修改配送人员信息:

2.2.4 路线规划:

(1)划分路线图:输入乡镇名,村名,

(2)为每个配送人员添加自己的路线:

(3)删除路线:

(4)修改路线:

2.2.5 个人中心:

(1)员工个人信息管理:添加员工信息,输入姓名,性别,年龄;删除员工信息;查询员工信息;修改员工信息

(2)关于系统:系统版本

(3)退出系统:

2.2.6 退换快递处理:

(1)输入退换产品理由;

(2)输入商家信息:输入商家姓名,位置信息,联系方式

(3)输入客户信息:输入客户姓名,联系方式:

(4)删除商家信息:

(5)删除客户信息:

(6)修改商家信息:

(7)修改客户信息:

2.2.7 客户评价:

(1)非常满意,满意,一般,差评。


三、系统展示










四、核心代码

4.1 查询商家

java 复制代码
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询商家")
public Result<IPage<Business>> getByPage(@ModelAttribute Business business ,@ModelAttribute PageVo page){
    QueryWrapper<Business> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(business.getUserName())) {
        qw.like("user_name",business.getUserName());
    }
    if(!ZwzNullUtils.isNull(business.getAddress())) {
        qw.like("address",business.getAddress());
    }
    IPage<Business> data = iBusinessService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Business>>().setData(data);
}

4.2 退换快递

java 复制代码
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增退换快递")
public Result<Exchange> insert(Exchange exchange){
    Business b = iBusinessService.getById(exchange.getBusinessId());
    if(b == null) {
        return ResultUtil.error("商家不存在");
    }
    exchange.setBusinessName(b.getUserName() + "-" + b.getAddress());
    Express e = iExpressService.getById(exchange.getExpressId());
    if(e == null) {
        return ResultUtil.error("快递客户不存在");
    }
    exchange.setExpressName(e.getUserName() + "-" + e.getAddress());
    iExchangeService.saveOrUpdate(exchange);
    return new ResultUtil<Exchange>().setData(exchange);
}

4.3 新增路线规划

java 复制代码
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增路线规划")
public Result<Route> insert(Route route){
    Department d1 = iDepartmentService.getById(route.getTownshipId());
    if(d1 == null) {
        return ResultUtil.error("乡镇不存在");
    }
    route.setTownshipName(d1.getTitle());
    Department d2 = iDepartmentService.getById(route.getVillageId());
    if(d2 == null) {
        return ResultUtil.error("村社不存在");
    }
    route.setVillageName(d2.getTitle());
    User user = iUserService.getById(route.getDispatcherId());
    if(user == null) {
        return ResultUtil.error("配送员不存在");
    }
    route.setDispatcherName(user.getNickname());
    iRouteService.saveOrUpdate(route);
    return new ResultUtil<Route>().setData(route);
}

4.4 查询乡镇村社

java 复制代码
@RequestMapping(value = "/getTopDepartment", method = RequestMethod.GET)
@ApiOperation(value = "查询乡镇")
public Result<List<Department>> getTopDepartment(){
    QueryWrapper<Department> qw = new QueryWrapper<>();
    qw.eq("parent_id",0);
    return new ResultUtil<List<Department>>().setData(iDepartmentService.list(qw));
}

@RequestMapping(value = "/getSonDepartment", method = RequestMethod.GET)
@ApiOperation(value = "查询村社")
public Result<List<Department>> getSonDepartment(@RequestParam String parentId){
    QueryWrapper<Department> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(parentId)) {
        qw.eq("parent_id",parentId);
    } else {
        qw.ne("parent_id",0);
    }
    return new ResultUtil<List<Department>>().setData(iDepartmentService.list(qw));
}

4.5 查询配送位置

java 复制代码
@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询位置")
public Result<IPage<Position>> getByPage(@ModelAttribute Position position ,@ModelAttribute PageVo page){
    QueryWrapper<Position> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(position.getTitle())) {
        qw.like("title",position.getTitle());
    }
    if(!ZwzNullUtils.isNull(position.getStartAddress())) {
        qw.like("start_address",position.getStartAddress());
    }
    if(!ZwzNullUtils.isNull(position.getEndAddress())) {
        qw.like("end_address",position.getEndAddress());
    }
    IPage<Position> data = iPositionService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<Position>>().setData(data);
}

五、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。
相关推荐
Honyee2 分钟前
java使用UCanAccess操作Access
java·后端
Devil枫2 分钟前
Kotlin项目实战与总结
开发语言·jvm·kotlin
秋千码途2 分钟前
小架构step系列10:日志热更新
java·linux·微服务
她说人狗殊途5 分钟前
浅克隆 深克隆
java
timing9947 分钟前
SQLite3 中列(变量)的特殊属性
java·jvm·sqlite
八苦10 分钟前
留个VKProxy性能测试记录
后端
SimonKing13 分钟前
你的Redis分布式锁还在裸奔?看门狗机制让锁更安全!
java·后端·程序员
追逐时光者14 分钟前
一个 .NET 开源、免费、以社区为中心的单元测试框架
后端·.net
yeziyfx20 分钟前
kotlin中集合的用法
android·开发语言·kotlin
你喜欢喝可乐吗?38 分钟前
RuoYi-Cloud 验证码处理流程
java·spring cloud·微服务·vue