项目编号: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智能应用
基于大数据实现的各类数据管理和推荐系统