基于javaweb+mysql的快递物流管理系统(java+SpringBoot+shiro+Bootstrap+ssm+maven+mysql)

项目技术:
使用 spring boot,基于 ssm 框架和 shiro 安全框架,开发的一个物流管理系统。前端使用的是 H-ui 开源框架,运用了 Bootstrap table、zTree、PageHelper、jQuery validate 等插件。

特点

  1. 基于 spring boot、maven 构建;

  2. 运用了 spring、spring mvc、mybatis 和 shiro 框架;

  3. 采用了 RBAC 的思路设计系统,采用了 Mysql 作为数据库支持;

  4. 不同的角色登录系统会有不同的菜单列表,且会根据角色返回特定的数据;

  5. 拥有基础数据管理模块,管理员管理模块,角色管理模块,权限管理模块,客户管理模块,订单管理模块和业务处理模块;

  6. 能够实现完整的业务流程:添加客户、添加订单、订单处理、财务报表。

细节介绍

  1. 业务员访问时,只能访问客户管理、订单管理、业务处理菜单,且只有添加的权力,没有修改和删除的权力;

  2. 业务员添加订单时,只能基于自己拥有的客户添加;

  3. 业务经理拥有客户管理、订单管理、业务处理的所有功能,可以查看所有业务员的客户和订单;

  4. 总经理角色可以查看所有数据,但是没有修改的权力;

  5. 仓管员只有业务处理中,测量物品信息和入库的功能,其他数据不可修改;

  6. 财务可以查看审核订单价格详情并导出为 excel 表格。

运行环境:

  1. JDK 1.8;
  2. Maven;
  3. Tomcat 8;
  4. Mysql 8.0/Mysql 5.7均可。

使用前修改 application.properties 里的数据库的连接信息即可。可以通过 dataBase 目录下的 sql 文件创建所需要的表,数据库名字为 logistic_system。

测试账号

username:admin

password:123456请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

	 * 删除角色
	 * @param request
	 * @param id
	 * @return
	 */
	@RequestMapping(value="delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		try {
			roleService.delete(id);
		} catch (Exception e) {
			// TODO: handle exception
			return Result.error(CodeMsg.ADMIN_ROLE_DELETE_ERROR);
		}
		log.info("编辑角色ID【"+id+"】");
		operaterLogService.add("删除角色ID【"+id+"】");
		return Result.success(true);
	}
}
记录控制层:
@Controller
@RequestMapping("/admin/processRecords")
public class ProcessRecordsController {
    @Autowired
    private ProcessRecordsService processRecordsService;
    @Autowired
     * 进入执行运输列表根据订单编号查询
     * @param pageBean
     * @param waybillNumber
     * @param model
     * @return
     */
    @RequestMapping("/receiveList")
    public String receiveList(PageBean<ProcessRecords> pageBean, String waybillNumber, Model model) {
        model.addAttribute("title", "运输列表");
        model.addAttribute("waybillNumber", waybillNumber);
        model.addAttribute("users",userService.findByUserTypeNot());
        model.addAttribute("pageBean", processRecordsService.findListByWaybillNumber(pageBean, waybillNumber));
        return "admin/process_records/receive_list";
    }
    /**
     * 网点拾取快递并添加流程记录
     * @param id
     * @return
     */
    @RequestMapping("/takeDeliveryOfGoods")
    @ResponseBody
    public Result<Boolean> takeDeliveryOfGoods(@RequestParam(name="id",required=true)Long id){
		operaterLogService.add("删除角色ID【"+id+"】");
		return Result.success(true);
	}
}
记录控制层:
@Controller
@RequestMapping("/admin/processRecords")
public class ProcessRecordsController {
    @Autowired
    private ProcessRecordsService processRecordsService;
    @Autowired
    private UserService userService;
    /**
     * 进入运输收货列表根据订单编号查询
     * @param pageBean
     * @param waybillNumber
     * @param model
     * @return
     */
    @RequestMapping("/list")
    public String list(PageBean<ProcessRecords> pageBean, String waybillNumber, Model model) {
        User loginedUser = SessionUtil.getLoginedUser();
        model.addAttribute("title", "运输收货列表");
        model.addAttribute("waybillNumber", waybillNumber);
        model.addAttribute("UserRoleTypeEnum",loginedUser.getUserType().getCode());
    @ResponseBody
    public Result<Boolean> transportation(@RequestParam(name="id",required=true)Long id,
                                          @RequestParam(name="userId",required=true)Long userId){
        if (null == id){
            return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER_SENDTHECARGO_ADD_EDIT_ERROR);
        }
        if (null == userId){
            return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER_USER_NULL);
        }
        Integer integer = processRecordsService.transportation(id,userId);
        if(integer == 1){
            return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER_SENDTHECARGO_ADD_EDIT_ERROR);
        }
        return Result.success(true);
    }
    /**
     * 指定快递员
     * @param id
        model.addAttribute("UserRoleTypeEnum",loginedUser.getUserType().getCode());
        model.addAttribute("pageBean", processRecordsService.findList(pageBean, waybillNumber));
        return "admin/process_records/list";
    }
    /**
     * 进入执行运输列表根据订单编号查询
     * @param pageBean
     * @param waybillNumber
     * @param model
     * @return
     */
    @RequestMapping("/receiveList")
    public String receiveList(PageBean<ProcessRecords> pageBean, String waybillNumber, Model model) {
        model.addAttribute("title", "运输列表");
        model.addAttribute("waybillNumber", waybillNumber);
        model.addAttribute("users",userService.findByUserTypeNot());
	/**
	 * 删除角色
	 * @param request
	 * @param id
	 * @return
	 */
	@RequestMapping(value="delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		try {
			roleService.delete(id);
		} catch (Exception e) {
			// TODO: handle exception
			return Result.error(CodeMsg.ADMIN_ROLE_DELETE_ERROR);
		}
	 * 编辑管理员信息表单提交处理
	 * @param user
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> edit(User user){
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(user);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		if(user.getRole() == null || user.getRole().getId() == null){
			return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY);
		}
		if(user.getId() == null || user.getId().longValue() <= 0){
			return Result.error(CodeMsg.ADMIN_USE_NO_EXIST);
        BeanUtils.copyProperties(processRecords, newProcessRecords,"id","createTime","updateTime");
        newProcessRecords.setTravelPosition(ExpressMailOrderStatus.INTRANSIT);
        newProcessRecords.setId(null);
        newProcessRecords.setOperation(ProcessRecords.NO_OPERATIONS);
        ProcessRecords saveNew = processRecordsService.save(newProcessRecords);
        if (null == saveNew){
            return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER1_RECEIVING_EDIT_ERROR);
        }
        ProcessRecords save = processRecordsService.save(processRecords);
        if (null == save){
            return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER1_RECEIVING_EDIT_ERROR);
        }
        return Result.success(true);
    }
    /**
    private ProcessRecordsService processRecordsService;
    @Autowired
    private UserService userService;
    /**
     * 进入运输收货列表根据订单编号查询
     * @param pageBean
     * @param waybillNumber
     * @param model
     * @return
     */
    @RequestMapping("/list")
    public String list(PageBean<ProcessRecords> pageBean, String waybillNumber, Model model) {
        User loginedUser = SessionUtil.getLoginedUser();
        model.addAttribute("title", "运输收货列表");
        model.addAttribute("waybillNumber", waybillNumber);
        model.addAttribute("UserRoleTypeEnum",loginedUser.getUserType().getCode());
        model.addAttribute("pageBean", processRecordsService.findList(pageBean, waybillNumber));
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> edit(User user){
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(user);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		if(user.getRole() == null || user.getRole().getId() == null){
			return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY);
		}
		if(user.getId() == null || user.getId().longValue() <= 0){
			return Result.error(CodeMsg.ADMIN_USE_NO_EXIST);
		}
		if(userService.isExistUsername(user.getUsername(), user.getId())){
			return Result.error(CodeMsg.ADMIN_USERNAME_EXIST);
        if(integer == 1){
            return Result.error(CodeMsg.ADMIN_EXPRESSMAILORDER_SENDTHECARGO_ADD_EDIT_ERROR);
        }
        return Result.success(true);
    }
}
后台管理员管理控制器:
/**
 * 后台管理员管理控制器
 * @author yy
 *
 */
@RequestMapping("/admin/user")
@Controller
public class UserController {
	@Autowired
	private UserService userService;
	@Autowired
	private RoleService roleService;
	@Autowired
	private OperaterLogService operaterLogService;

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA, JSP, SSM, JQUERY, JQUERY EASYUI, MYSQL, HTML, CSS, JAVASCRIPT ⑴角色管理:系统通过角色管理对不同角色进行权限分配,实现不同角色的用户登录系统拥有不同的权限功能。系统分为超级管理员、订单管理员、车辆管理员。新注册用户登录系统没有任何操作权限,因为新注册用户没有被分配角色,这需要超级管理员给新用户分配相应角色使该用户拥有该角色的权限。同时超级管理员可进行新角色的创建,删除已有角色,修改角色功能。 ⑵用户管理:拥有用户信息管理权限的用户登录后可创建新用户,修改用户信息(密码、联系方式、邮箱等),删除用户,为用户分配角色。但用户列表中不会有超级管理员信息,因为超级管理员信息在系统中不应出现不能被修改,防止误操作。 ⑶配货管理:配货管理模块中分为发货管理、车源路线管理、订单管理子模块。发货管理,用户可进行订单的创建,系统自动生产15位的订单号(不可修改),用户填写下单人,下单人联系方式,下单人地址,下单日期,并添加此订单需要运送的货物,保存生成订单。同时可进行订单的修改,批量删除,按订单号查询操作。车源路线管理,用户可选择为还未分配运送车辆的订单分配运送车辆,指定行车路线。车辆处于维修状态的不出现在选择列表中,车辆载重小于货物总重量时通过消息提醒用户重新选择。订单确认,当运送完成时,用户可进行订单确认,确认该订单已完成。 ⑷车辆管理:车辆管理模块中分为车辆类型管理、车辆信息管理、行车路线管理子模块。车辆类型管理,用户可创建新的车辆类型,修改车辆类型信息,删除某种车辆类型,当系统中存在车辆属于该类型,则无法删除同时提醒用户。车辆信息管理,用户对车辆信息进行创建、修改、删除操作。行车路线管理,用户可创建新的行车路线,修改路线信息,删除已有的行车路线。 ⑸货物仓储管理:该模块主要实现库存分类管理、库存信息管理。库存分类管理,用户可创建新的货物类别,修改删除该货物类别或为该类别添加字类别,删除时库存中有属于该类别的商品则无法删除,系统给出提示消息。库存信息管理,用户可创建新的库存货物,为货物分配所属类型,修改库存信息,删除该货物,但删除是逻辑删除,不是物理删除,货物的状态栏显示该商品已被删除。同时提供分页以及按商品名称查询功能。 ⑹数据汇总统计:该模块实现按月度、季度或年度统计各路线的盈利或运货量情况,用户可选择以柱状图或饼图的方式显示。用户可依据统计结构来调整路线及车辆以获得最大化收益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值