物流 智慧

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源码 项目编号:

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-XX-236

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:SSM+HTML

二,项目简介

物流发展程度的高低,一定程度上代表着一个国家的经济发展程度,是衡量一个国家现代化程度和综合国力的重要因素之一。在新世纪,随着中国改革开放和加入世贸组织,中国经济和科学信息技术飞速发展,越来越多的人参与到中国物流这个行业中。再加上越来越多的生产经营企业为了提高国际竞争力,集中精力搞好主业,把原来自己处理的物流活动,以合同的方式委托给专业的物流企业。这些都大大地促进了中国物流向专业化和社会化发展,促使中国出现服务更周到、成本更低、效率更高的第三方物流。虽然现在中国第三方物流存在巨大的市场,但同时也面临着世界其他发达国家强大的第三方物流公司的威胁。为了提高竞争力,中国第三方物流公司势必在提高服务和效率的同时降低成本。根据国外发达国家的发展经验,信息化是第三方物流公司提高效率和降低成本的趋势。在技术方面,目前SSM框架非常流行,能帮助开发人员快速搭建一个小型的信息管理系统。所以,本文基于当前流行的SSM框架,搭建了一个第三方物流信息管理系统,能够帮助第三方物流公司管理物流过程中产生的信息数据,提高数据管理效率。

对于后台系统,本文利用SSM框架搭建。在前端方面,本文利用Require.js的AMD模块化思想管理前端JS、利用最新的Angular技术来实现左边菜单目录、利用bootstrap搭建页面。本系统分为物流订单管理模块,订单计费管理模块,运输管理模块,车辆管理模块,系统管理模块五个模块。针对这五个模块进行深入了解,详细分析这五个模块的主要功能,建立数据模型和需求分析。采用软件工程的思想,根据需求分析结果,对系统的软件体系结构和主要功能模块划分进行详细设计,形成数据库表,将信息数据存入MySQL数据库,并设计详细页面。

 第三方物流信息管理系统有5个主要模块,分别为物流订单管理模块,订单计费管理模块,运输管理模块,车辆管理模块,系统管理模块。

图6 系统模块图

物流订单管理模块包含5个主要模块,分别为录入物流订单模块,物流订单信息管理模块,物流询价管理模块,发起物流管理模块,订单跟踪管理模块。

录入物流订单模块:负责录入用户填写的物流订单信息。

物流订单信息管理模块:负责管理物流订单信息,用户可以根据自己的需要对订单信息进行增删查改。

物流询价管理模块:用户选择填好的订单点击发起物流询价按钮,向物流计价部门询问物流配送价格。

发起物流管理模块:用户根据反馈回来的价格,确定是否发起物流。

订单跟踪管理模块:负责跟踪物流订单所在位置信息。

订单计费管理模块

订单计费管理模块包含3个主要的大模块,分别为物流订单审核管理模块、物流订单报价管理模块、出货登记模块。

物流订单审核管理模块:市场部门审核员审核来自用户的发起的物流询价的物流订单,当符合条件时通过,不符合条件时拒绝,都需要填写审核原因。

物流订单报价管理模块:市场部门计费员根据公司内部规定,给物流订单计价。

出货登记:市场部门员工选择已经确定发起物流的订单,点击出货登记按钮,将订单状态改为配车中的状态。

运输管理模块

运输管理模块包含3个主要模块,分别为配车方案模块,到站位置记录模块,仓储位置管理模块。

配车方案模块:运输部员工选择到同一个站点并且已经是配车状态的物流订单,进行计算所需车辆数目,并将信息记录下来,生成配车方案。

到站位置记录模块:每当订单到达站点或离开站点时,运输部员工都要对物流订单进行进站出站登记。

仓储位置管理:第三方物流公司在每个城市每个区都有一个仓储地,该模块主要是负责记录这些仓储地点的信息。

车辆管理模块

车辆管理模块包含2个主要模块,分别为车辆需求信息管理和审核模块和车辆信息管理模块。

车辆需求信息管理和审核模块:负责管理车辆需求信息,进行车辆需求审核。

车辆信息管理模块:管理公司车辆信息,可以进行基本的增删查改。

 系统管理模块

系统管理模块包含5个模块,分别为部门管理模块、登录注册模块、用户管理模块,菜单管理模块、角色管理模块。主要责任为管理系统权限,对未登录的请求进行拦截。负责给不同用户分配角色和权限,负责给角色分配菜单权限。

三,系统展示

4.2.1 用户登录注册界面

图7 用户登录界面

图8 用户注册界面

    图7图8所示分别为用户登录页面和用户注册页面,用户登录时使用邮箱和密码加上验证码登录。如果邮箱或者密码错误或者验证码错误,都有相应的提示。用户注册时,账号、密码、确认密码、姓名、手机号码和性别都不能为空,为空就会有认证提示不能为空。管理员账号密码是默认的,不能注册。 

4.2.2 物流订单管理界面

图9 录入物流订单界面

图10 物流订单管理界面

图11 物流询价管理界面

图12 发起物流管理界面

图13 订单跟踪界面

    从图9到图13,很明确地表示了物流订单管理模块的全流程。图9用户输入物流订单信息,然后图10用户对订单进行基本的增删查改。在图11中,用户通过筛选选择一个订单,发起物流配送询价。图12中,用户选择已经反馈价格的订单发起物流配送。图13中,用户可以对已经出发的物流订单进行位置查看。

4.2.3 订单计费管理界面

图14 物流审核管理页面

图15 物流询价回复页面

图16 出货登记页面

    图14属于订单审核模块,图15和图16属于物理计费管理模块。在图14中,点击审核按钮,会弹出模态框。审核之后,如果想撤销,点击右边撤销图标是可以恢复初始状态的。

4.2.4 运输管理模块界面

图17仓储位置页面

图18配车方案管理页面

图19到站记录页面

    图17展示的是仓储位置管理页面。图18是配车方案管理页面,运输部员工首先得选择目的地,将到达同一个目的地的订单筛选出来,在点击配车按钮,然后是选择车辆类型,计算车辆数目,最后是提交生成的方案。图19是到站记录管理,当配车单到达某个站点时,需要将这个配车单中所有的物流订单进行进站登记。

4.2.5 车辆管理模块界面

图20车辆需求管理界面

图21车辆信息管理界面

    图20表示的是车辆需求信息管理界面,可以对车辆需求信息进行增删查改操作。

图21表示的是车辆管理员管理车辆信息的页面,可以对车辆进行增删查改操作。

4.2.6 系统管理模块界面

图22菜单管理页面

图23部门管理页面

图24 用户管理页面

图25角色管理页面

系统管理模块只有管理员才有权限查看。图22到图25,分别表示管理员可以对菜单、部门、用户、角色进行基本的增删查改操作。

图26用户角色配置页面

图27角色菜单配置页面

图26表示管理员可以给用户配置角色。图27表示管理员可以给角色配置菜单。左边的菜单栏权限就是根据用户的角色来显示对应的菜单的。

四,核心代码展示

package scau.com.lprapm.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import scau.com.lprapm.common.BestLoading;
import scau.com.lprapm.common.Constant;
import scau.com.lprapm.common.JsonResult;
import scau.com.lprapm.entity.CarNeed;
import scau.com.lprapm.entity.CarPlan;
import scau.com.lprapm.entity.User;
import scau.com.lprapm.service.inter.CarSService;
import scau.com.lprapm.service.inter.OrdersService;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;


@Controller
@RequestMapping("/carscheme")
public class CarSController extends BaseController {
    @Autowired
    CarSService carSService;
    @Autowired
    HttpServletRequest request;
    @Autowired
    OrdersService ordersService;
    @ResponseBody
    @RequestMapping("searchAddress")
    public JsonResult searchAddress() {
        JsonResult jsonResult = null;
        try {
            String str = getLocationAddr();
            jsonResult = new JsonResult(true, "查询地址成功", str);
        } catch (Exception e) {
            e.printStackTrace();
            jsonResult = new JsonResult(false, "查询地址失败");
        }
        return jsonResult;
    }

    public String getLocationAddr() {
        Map<String, Object> map = (Map) request.getSession().getAttribute(Constant.CURRENR_ADDR);
        String str = "";
        str = str + map.get("province") + ",";
        str = str + map.get("city") + ",";
        str = str + map.get("area") + ",";
        str = str + map.get("street");
        return str;
    }
    @ResponseBody
    @RequestMapping("searchCarS")
    public JsonResult searchCarS() {
        JsonResult jsonResult = null;
        try {
            User current = (User) request.getSession().getAttribute(Constant.CURRENR_USER);
            Map<String, Object> map = (Map) request.getSession().getAttribute(Constant.CURRENR_ADDR);
            int userId = current.getUserId();
            Map<String, Object> params = super.getParamMap();
            params.put("userId", userId);
            params.put("province", map.get("province"));
            params.put("city", map.get("city"));
            params.put("area", map.get("area"));
            List<Map<String, Object>> List = carSService.searchCarS(params);
            jsonResult = new JsonResult(true, "查询物流订单成功", List);
        } catch (Exception e) {
            e.printStackTrace();
            jsonResult = new JsonResult(false, "查询物流订单失败");
        }
        return jsonResult;
    }

    @ResponseBody
    @RequestMapping("updateCarS")
    public JsonResult updateCarS(CarPlan carPlan, CarNeed carNeed) {
        JsonResult jsonResult = null;
        try {
            carSService.updateCarS(carPlan, carNeed);
            jsonResult = new JsonResult(true, "配车成功");
        } catch (Exception e) {
            e.printStackTrace();
            jsonResult = new JsonResult(false, "配车失败");
        }
        return jsonResult;
    }

    @ResponseBody
    @RequestMapping("searchPOS")
    public JsonResult searchPOS() {
        JsonResult jsonResult = null;
        try {
            Map<String, Object> params = super.getParamMap();
            List<Map<String, Object>> list = carSService.searchPOS(params);
            jsonResult = new JsonResult(true, "查询成功", list);
        } catch (Exception e) {
            e.printStackTrace();
            jsonResult = new JsonResult(false, "查询失败");
        }
        return jsonResult;
    }

    @ResponseBody
    @RequestMapping("surePOS")
    public JsonResult surePOS() {
        JsonResult jsonResult = null;
        try {
            Map<String, Object> params = super.getParamMap();
            carSService.surePOS(params);
            jsonResult = new JsonResult(true, "出车成功");
        } catch (Exception e) {
            e.printStackTrace();
            jsonResult = new JsonResult(false, "出车失败");
        }
        return jsonResult;
    }

    @ResponseBody
    @RequestMapping("caculateCar")
    public JsonResult caculateCar() {
        JsonResult jsonResult = null;
        try {
            Map<String, Object> params = super.getParamMap();
            String[] numAttr = params.get("numAttr").toString().split(",");
            float carType = Float.parseFloat(params.get("carType").toString());
            float[] numAttrs = StringToFloat(numAttr);
            int n = BestLoading.getNum(numAttrs, carType);
            jsonResult = new JsonResult(true, "计算车辆成功", n);
        } catch (Exception e) {
            e.printStackTrace();
            jsonResult = new JsonResult(false, "计算车辆失败");
        }
        return jsonResult;
    }


    public float[] StringToFloat(String[] str) {
        float[] num = new float[str.length];
        for (int i = 0; i < num.length; i++) {
            num[i] = Float.parseFloat(str[i]);
        }
        return num;
    }
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

 

 

知秋君
上一篇 2024-07-10 10:12
下一篇 2024-07-10 09:48

相关推荐