作者简介: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智能应用
基于大数据实现的各类数据管理和推荐系统