基于springboot+vue物流项目

基于springboot+vue物流项目

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

文末获取项目下载方式


一、项目背景介绍:

当今物流行业是全球最大的产业之一,以其对全球贸易和商业活动的支持而受到广泛关注。物流公司通过为客户提供物流方案来提高供应链的效率和可靠性。为了实现这一目标,物流公司需要使用先进的技术,以优化运输、仓储和分销等过程。随着信息技术的迅猛发展,物流业也开始利用新技术来提高运作效率和准确性。

为了满足物流公司的需求,开发了一个基于Spring Boot和Vue.js的物流管理系统。该系统可以帮助物流公司管理其整个供应链,从接收订单到交付货物。系统使用Spring Boot框架来构建后端,并提供RESTful API以便前端调用。Vue.js框架则用于构建前端,并提供友好的用户界面。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
  3. Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
  4. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  5. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
  6. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。
  7. Html:HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。

超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。

三、系统功能模块介绍:

基于springboot+vue物流项目_第1张图片

四、数据库设计:

1:car(car)

字段名 类型 默认值 列注释
id int(11) NULL
license varchar(15) NULL 车牌号
type varchar(50) NULL 车辆类型
weight VARCHAR(255) NULL

2:deliver_storage(deliver_storage)

字段名 类型 默认值 列注释
id int(11) NULL
plan_id int(4) NULL 计划id
plan_type int(11) NULL 计划类型(区分计划1、2、3、4表)
material_id int(11) NULL 物料id
warehouse_id int(11) NULL 仓库id
storage_location_id int(11) NULL 库位id
accomplish_num VARCHAR(255) NULL

3:demo(demo)

字段名 类型 默认值 列注释
id varchar(50) NULL 主键ID
name varchar(30) NULL 姓名
key_word varchar(255) NULL 关键词
punch_time datetime(0) NULL 打卡时间
salary_money VARCHAR(255) NULL

4:demo_field_def_val_main(demo_field_def_val_main)

字段名 类型 默认值 列注释
id varchar(36) NULL
code varchar(200) NULL 编码
name varchar(200) NULL 姓名
sex varchar(200) NULL 性别
address varchar(200) NULL 地址
address_param varchar(32) NULL 地址(传参)
create_by varchar(50) NULL 创建人
create_time datetime(0) NULL 创建日期
update_by varchar(50) NULL 更新人
update_time datetime(0) NULL 更新日期
sys_org_code varchar(64) NULL 所属部门

5:demo_field_def_val_sub(demo_field_def_val_sub)

字段名 类型 默认值 列注释
id varchar(36) NULL
code varchar(200) NULL 编码
name varchar(200) NULL 名称
date varchar(200) NULL 日期
main_id varchar(200) NULL 主表ID
create_by varchar(50) NULL 创建人
create_time datetime(0) NULL 创建日期
update_by varchar(50) NULL 更新人
update_time datetime(0) NULL 更新日期
sys_org_code varchar(64) NULL 所属部门

6:insurance(insurance)

字段名 类型 默认值 列注释
id int(11) NULL 车保险表id
license varchar(50) NULL 车牌号码
insura_name varchar(50) NULL 保险公司
insurance_policy varchar(50) NULL 商业险保单号
strong_date_begin datetime(0) NULL 交强险开始日期
strong_date_end datetime(0) NULL 交强险结束日期
insurance_date_begin datetime(0) NULL 商业险开始日期
insurance_date_end datetime(0) NULL 商业险结束日期
strong_policy varchar(50) NULL 交强险保单号
create_time datetime(0) NULL 创建时间
update_time datetime(0) NULL 更新时间
create_by varchar(32) NULL 创建人
update_by varchar(32) NULL 更新人
backup1 varchar(50) NULL
backup2 varchar(50) NULL
backup3 varchar(50) NULL
backup4 varchar(50) NULL
backup5 varchar(50) NULL

7:inventory(inventory)

字段名 类型 默认值 列注释
id int(11) NULL 库存表id
backup1 varchar(50) NULL 计划id
backup2 varchar(50) NULL (1:plan1表;2:plan2表···)
warehouse_id int(11) NULL 仓库id
storage_location_id int(11) NULL 库位id
project_no varchar(32) NULL 项目编号
project_name varchar(50) NULL 项目名称暂时不用
inventory_quantity VARCHAR(255) NULL

8:jeecg_monthly_growth_analysis(jeecg_monthly_growth_analysis)

字段名 类型 默认值 列注释
id int(11) NULL
year varchar(50) NULL
month varchar(50) NULL 月份
main_income VARCHAR(255) NULL

9:jeecg_order_customer(jeecg_order_customer)

字段名 类型 默认值 列注释
id varchar(32) NULL 主键
name varchar(100) NULL 客户名
sex varchar(4) NULL 性别
idcard varchar(18) NULL 身份证号码
idcard_pic varchar(500) NULL 身份证扫描件
telphone varchar(32) NULL 电话1
order_id varchar(32) NULL 外键
create_by varchar(32) NULL 创建人
create_time datetime(0) NULL 创建时间
update_by varchar(32) NULL 修改人
update_time datetime(0) NULL 修改时间

10:jeecg_order_main(jeecg_order_main)

字段名 类型 默认值 列注释
id varchar(32) NULL 主键
order_code varchar(50) NULL 订单号
ctype varchar(500) NULL 订单类型
order_date datetime(0) NULL 订单日期
order_money VARCHAR(255) NULL

11:jeecg_order_ticket(jeecg_order_ticket)

字段名 类型 默认值 列注释
id varchar(32) NULL 主键
ticket_code varchar(100) NULL 航班号
tickect_date datetime(0) NULL 航班时间
order_id varchar(32) NULL 外键
create_by varchar(32) NULL 创建人
create_time datetime(0) NULL 创建时间
update_by varchar(32) NULL 修改人
update_time datetime(0) NULL 修改时间

12:jeecg_project_nature_income(jeecg_project_nature_income)

字段名 类型 默认值 列注释
id int(11) NULL
nature varchar(50) NULL 项目性质
insurance_fee VARCHAR(255) NULL

13:material(material)

字段名 类型 默认值 列注释
id int(11) NULL 物料表id
serial varchar(50) NULL 物料编号(唯一)
name varchar(50) NULL 物料名称
ations varchar(50) NULL 规格型号
supplier varchar(50) NULL 供应商
unit int(11) NULL 单位(字典米,吨,卷,台,箱)
material_volume VARCHAR(255) NULL

14:onl_cgform_button(onl_cgform_button)

字段名 类型 默认值 列注释
ID varchar(32) NULL 主键ID
BUTTON_CODE varchar(50) NULL 按钮编码
BUTTON_ICON varchar(20) NULL 按钮图标
BUTTON_NAME varchar(50) NULL 按钮名称
BUTTON_STATUS varchar(2) NULL 按钮状态
BUTTON_STYLE varchar(20) NULL 按钮样式
EXP varchar(255) NULL 表达式
CGFORM_HEAD_ID varchar(32) NULL 表单ID
OPT_TYPE varchar(20) NULL 按钮类型
ORDER_NUM int(11) NULL 排序
OPT_POSITION varchar(3) NULL 按钮位置1侧面2底部

15:onl_cgform_enhance_java(onl_cgform_enhance_java)

字段名 类型 默认值 列注释
ID varchar(36) NULL
BUTTON_CODE varchar(32) NULL 按钮编码
CG_JAVA_TYPE varchar(32) NULL 类型
CG_JAVA_VALUE varchar(200) NULL 数值
CGFORM_HEAD_ID varchar(32) NULL 表单ID
ACTIVE_STATUS varchar(2) NULL 生效状态
EVENT varchar(10) NULL 事件状态(end:结束,start:开始)

16:onl_cgform_enhance_js(onl_cgform_enhance_js)

字段名 类型 默认值 列注释
ID varchar(32) NULL 主键ID
CG_JS longtext NULL JS增强内容
CG_JS_TYPE varchar(20) NULL 类型
CONTENT varchar(1000) NULL 备注
CGFORM_HEAD_ID varchar(32) NULL 表单ID

17:sys_depart(sys_depart)

字段名 类型 默认值 列注释
id varchar(32) NULL ID
parent_id varchar(32) NULL 父机构ID
depart_name varchar(100) NULL 机构/部门名称
depart_name_en varchar(500) NULL 英文名
depart_name_abbr varchar(500) NULL 缩写
depart_order int(11) NULL 排序
description varchar(500) NULL 描述
org_category varchar(10) NULL 机构类别1组织机构,2岗位
org_type varchar(10) NULL 机构类型1一级部门2子部门
org_code varchar(64) NULL 机构编码
mobile varchar(32) NULL 手机号
fax varchar(32) NULL 传真
address varchar(100) NULL 地址
memo varchar(500) NULL 备注
status varchar(1) NULL 状态(1启用,0不启用)
del_flag varchar(1) NULL 删除状态(0,正常,1已删除)
create_by varchar(32) NULL 创建人
create_time datetime(0) NULL 创建日期
update_by varchar(32) NULL 更新人
update_time datetime(0) NULL 更新日期

18:sys_depart_role(sys_depart_role)

字段名 类型 默认值 列注释
id varchar(32) NULL
depart_id varchar(32) NULL 部门id
role_name varchar(200) NULL 部门角色名称
role_code varchar(100) NULL 部门角色编码
description varchar(255) NULL 描述
create_by varchar(32) NULL 创建人
create_time datetime(0) NULL 创建时间
update_by varchar(32) NULL 更新人
update_time datetime(0) NULL 更新时间

19:sys_dict(sys_dict)

字段名 类型 默认值 列注释
id varchar(32) NULL
dict_name varchar(100) NULL 字典名称
dict_code varchar(100) NULL 字典编码
description varchar(255) NULL 描述
del_flag int(1) NULL 删除状态
create_by varchar(32) NULL 创建人
create_time datetime(0) NULL 创建时间
update_by varchar(32) NULL 更新人
update_time datetime(0) NULL 更新时间
type int(1) NULL 字典类型0为string

五、功能模块:

  1. 登录页面:输入账号,密码,验证码即可进入系统,默认账号密码为 admin 123

  2. 首页:首页展示一些计划,物品,仓库容积等一些直观的数据,通过echars 来动态渲染数据样式。

    基于springboot+vue物流项目_第2张图片

  3. 员工管理:管理公司中的员工,有员工的个人信息,账号密码等等,可以新增用户,修改用户,删除用户,禁用用户等操作。
    被禁用的用户无法登录此系统。

    基于springboot+vue物流项目_第3张图片

  4. 部门设置:管理公司中所有的部门,可以对部门进行增删改查等操作。
    然后在新建用户的同时,可以为用户分配其部门。

    基于springboot+vue物流项目_第4张图片

  5. 角色权限:角色授权功能
    在角色权限页面右侧的操作栏中点击授权功能后打开此页面
    通过勾选指定的菜单分配给角色,这个角色就能访问哪些页面。
    还可以通过左下方的树操作,选择合适的功能方便进行分配。
    例如:选择了父子关联,当你选择了父菜单,那么子菜单也会自动勾选
    也可以选择取消关联,效果与之相反。

    基于springboot+vue物流项目_第5张图片

  6. 计划列表:管理普通的计划,通过 excel 导入要执行的任务计划,表明计划类型是什么,一些基本的信息编号,项目名称等等,表示这是什么计划,什么信息,计划完成那些事情,计划完成时间是什么等。
    除了对其进行基本的增删改查功能等,还可以进行导入,导出功能,导入功能要按照固定的excel 表头格式进行导入,还可以查看当前派单信息。
    合并派单:必须选择一样的工程账号进行批量派单操作
    合并完单:同上,工程账号一致的情况下才能进行批量派单操作
    派单记录:查看派单记录。
    完单记录:查看完单记录。

    基于springboot+vue物流项目_第6张图片

  7. 仓库管理:可以管理仓库的信息,对仓库进行增删改查等操作。
    管理指定仓库中的库位,库位会根据入库货物所占用的面积进行相应的颜色变化,提示容积不足等情况。
    库位二维码:点击库位二维码会生成此库位的二维码图片,手机扫描就能查看到此库位上存放的货物信息。
    查看存储物料:可以查看库位上存的物料信息。

    基于springboot+vue物流项目_第7张图片

  8. 数据字典:此页面管理系统中常用的数据字典,例如状态,性别等等,进行统一管理,可以对齐进行增增删改查操作。还可以导入导出。对字典进行配置等操作。

    基于springboot+vue物流项目_第8张图片

六、代码示例:

登录页面
    public static void main(String[] args) throws UnknownHostException {
        ConfigurableApplicationContext application = SpringApplication.run(JeecgApplication.class, args);
        Environment env = application.getEnvironment();
        String ip = InetAddress.getLocalHost().getHostAddress();
        String port = env.getProperty("server.port");
        String path = env.getProperty("server.servlet.context-path");
        log.info("\n----------------------------------------------------------\n\t" +
                "Application Jeecg-Boot is running! Access URLs:\n\t" +
                "Local: \t\thttp://localhost:" + port + path + "/\n\t" +
                "External: \thttp://" + ip + ":" + port + path + "/\n\t" +
                "Swagger-UI: \t\thttp://" + ip + ":" + port + path + "/doc.html\n" +
                "----------------------------------------------------------");
    }

首页
    public static void main(String[] args) {
    	new CodeWindow().pack();
	}

员工管理
 /**
     * 获取浏览器类型
     *
     * @param request
     * @return
     */
    public static BrowserType getBrowserType(HttpServletRequest request) {
        BrowserType browserType = null;
        if (getBrowserType(request, IE11)) {
            browserType = BrowserType.IE11;
        }
        if (getBrowserType(request, IE10)) {
            browserType = BrowserType.IE10;
        }
        if (getBrowserType(request, IE9)) {
            browserType = BrowserType.IE9;
        }
        if (getBrowserType(request, IE8)) {
            browserType = BrowserType.IE8;
        }
        if (getBrowserType(request, IE7)) {
            browserType = BrowserType.IE7;
        }
        if (getBrowserType(request, IE6)) {
            browserType = BrowserType.IE6;
        }
        if (getBrowserType(request, FIREFOX)) {
            browserType = BrowserType.Firefox;
        }
        if (getBrowserType(request, SAFARI)) {
            browserType = BrowserType.Safari;
        }
        if (getBrowserType(request, CHROME)) {
            browserType = BrowserType.Chrome;
        }
        if (getBrowserType(request, OPERA)) {
            browserType = BrowserType.Opera;
        }
        if (getBrowserType(request, "Camino")) {
            browserType = BrowserType.Camino;
        }
        return browserType;
    }
部门设置
    public static String getIpAddr(HttpServletRequest request) {
        String ip = null;
        try {
            ip = request.getHeader("x-forwarded-for");
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("Proxy-Client-IP");
            }
            if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("WL-Proxy-Client-IP");
            }
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("HTTP_CLIENT_IP");
            }
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("HTTP_X_FORWARDED_FOR");
            }
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getRemoteAddr();
            }
        } catch (Exception e) {
            logger.error("IPUtils ERROR ", e);
        }
        return ip;
    }
角色权限
    public static boolean isEmpty(Object object) {
        if (object == null) {
            return (true);
        }
        if ("".equals(object)) {
            return (true);
        }
		return "null".equals(object);
	}

    public static boolean isNotEmpty(Object object) {
		return object != null && !object.equals("") && !object.equals("null");
	}

    public static String decode(String strIn, String sourceCode, String targetCode) {
		return code2code(strIn, sourceCode, targetCode);
    }

    public static String StrToUTF(String strIn, String sourceCode, String targetCode) {
        strIn = "";
        try {
            strIn = new String(strIn.getBytes(StandardCharsets.ISO_8859_1), "GBK");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return strIn;
    }
计划列表
    private static Result<?> addOrEditOne(String desformCode, JSONObject formData, String token, HttpMethod method) {
        String url = getBaseUrl(desformCode).toString();
        HttpHeaders headers = getHeaders(token);
        ResponseEntity<JSONObject> result = RestUtil.request(url, method, headers, null, formData, JSONObject.class);
        return packageReturn(result);
    }
仓库管理
    public static String encrypt(String plaintext, String password, String salt) {
        Key key = getPBEKey(password);
        byte[] encipheredData = null;
        PBEParameterSpec parameterSpec = new PBEParameterSpec(salt.getBytes(), ITERATIONCOUNT);
        try {
            Cipher cipher = Cipher.getInstance(ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE, key, parameterSpec);
            encipheredData = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));
        } catch (Exception ignored) {
        }
        return bytesToHexString(encipheredData);
    }
数据字典
    /*
     * 针对表字典进行额外的sign签名校验(增加安全机制)
     * @param dictCode:
     * @param sign:
     * @param request:
     * @Return: void
     */
    public static void checkDictTableSign(String dictCode, String sign, HttpServletRequest request) {
        //表字典SQL注入漏洞,签名校验
        String accessToken = request.getHeader("X-Access-Token");
        String signStr = dictCode + SqlInjectionUtil.TABLE_DICT_SIGN_SALT + accessToken;
        String javaSign = SecureUtil.md5(signStr);
        if (!javaSign.equals(sign)) {
            log.error("表字典,SQL注入漏洞签名校验失败 :" + sign + "!=" + javaSign + ",dictCode=" + dictCode);
            throw new JeecgBootException("无权限访问!");
        }
        log.info(" 表字典,SQL注入漏洞签名校验成功!sign=" + sign + ",dictCode=" + dictCode);
    }

    /**
     * sql注入过滤处理,遇到注入关键字抛异常
     *
     * @param value
     * @return
     */
    public static void filterContent(String value) {
        if (value == null || "".equals(value)) {
            return;
        }
        // 统一转为小写
        value = value.toLowerCase();
        String[] xssArr = xssStr.split("\\|");
		for (String s : xssArr) {
			if (value.contains(s)) {
				log.error("请注意,存在SQL注入关键词---> {}", s);
				log.error("请注意,值可能存在SQL注入风险!---> {}", value);
				throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
			}
		}
	}

七、论文参考:

论文参考···基于springboot+vue物流项目_第9张图片

八、项目总结:

一个完整的电子商务系统,包括前端和后端两个部分。前端使用了Vue.js框架进行开发,提供了友好的用户界面和良好的交互体验。后端使用Spring Boot框架构建,提供了各种RESTful API接口,支持前端与后端之间的数据交换和通信。该项目可以提供一个完整的电子商务解决方案,为用户提供一个安全、可靠和方便的购物体验。同时,该项目的后端使用Spring Boot框架,具有高度的可扩展性和稳定性,可以支持更多的业务需求和更高的并发访问量。

九、源码获取:

大家点赞、收藏、关注、评论啦 、查看获取联系方式

链接点击直达:下载链接

你可能感兴趣的:(优质毕业设计,spring,boot,vue.js,java)