Java 实战项目之精美物流管理系统的实现流程

 更新时间:2021年11月17日 09:12:21   作者:OldWinePot  
读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SpringBoot+Vue+maven+Mysql实现一个精美的物流管理系统,大家可以在过程中查缺补漏,提升水平

一、项目简述

本系统功能包括:
数据统计、收件录入、发件录入、到件录入、派件录入、问题件录入、退件录入、留仓录入、装车录入、发车录入、到车录入、卸车录入、运单录入、运单编辑、运单查询、数据导入、签收录入、签收查询、快件跟踪、自定义跟踪、问题件跟踪、预付款管理、财务报表明细、现金账单、月结账单、代收货款、业务员提成、订单分配、订单查询、物品名维护、入库、出库、库存、物料、角色管理、用户管理、系统设置、员工维护、客户维护、网点维护、报价维护、其他维护、收发记录、到件预报。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。

项目技术: Springboot + Maven + mybatis+ Vue 等等组成,B/S模式 + Maven管理等等。

运输点管理控制层代码:

/**
 * 运输点管理控制层
 */
 
@RequestMapping("/admin/transport")
@Controller
public class TransportController {
 
    @Autowired
    private UserService userService;
    @Autowired
    private RoleService roleService;
    @Autowired
    private OperaterLogService operaterLogService;
    
    /**
     * 运输点列表页面
     * @param model
     * @param user
     * @param pageBean
     * @return
     */
    @RequestMapping(value="/list")
    public String list(Model model, User user, PageBean<User> pageBean){
        model.addAttribute("title", "运输点列表");
        model.addAttribute("username", user.getUsername());
        model.addAttribute("pageBean", userService.findList(pageBean,user.getUsername(), UserRoleTypeEnum.TRANSPORT));
        return "admin/transport/list";
    }
 
    /**
     * 新增运输点页面
     * @param model
     * @return
     */
    @RequestMapping(value="/add",method= RequestMethod.GET)
    public String add(Model model){
        model.addAttribute("roles", roleService.findAllByRoleType(UserRoleTypeEnum.TRANSPORT));
        return "admin/transport/add";
    }
 
    /**
     * 运输点添加表单提交处理
     * @param user
     * @return
     */
    @RequestMapping(value="/add",method= RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> add(User user){
        //用统一验证实体方法验证是否合法
        CodeMsg validate = ValidateEntityUtil.validate(user);
        if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
            return Result.error(validate);
        }
        if(user.getAddress() == null){
            return Result.error(CodeMsg.ADDRESS_ERROR);
        }
        if(user.getRole() == null || user.getRole().getId() == null){
            return Result.error(CodeMsg.TRANSPORT_USER_ROLE_EMPTY);
        }
        //判断运输点名是否存在
        if(userService.isExistUsername(user.getUsername(), 0L)){
            return Result.error(CodeMsg.TRANSPORT_USERNAME_EXIST);
        }
        user.setUserType(UserRoleTypeEnum.TRANSPORT);
        //到这说明一切符合条件,进行数据库新增
        if(userService.save(user) == null){
            return Result.error(CodeMsg.TRANSPORT_USE_ADD_ERROR);
        }
        operaterLogService.add("添加运输点,运输点名:" + user.getUsername());
        return Result.success(true);
    }
 
    /**
     * 运输点编辑页面
     * @param model
     * @return
     */
    @RequestMapping(value="/edit",method= RequestMethod.GET)
    public String edit(Model model, @RequestParam(name="id")Long id){
        model.addAttribute("roles", roleService.findAllByRoleType(UserRoleTypeEnum.TRANSPORT));
        model.addAttribute("user", userService.find(id));
        return "admin/transport/edit";
    }
 
    /**
     * 编辑运输点信息表单提交处理
     * @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.getAddress() == null){
            return Result.error(CodeMsg.ADDRESS_ERROR);
        }
        if(user.getRole() == null || user.getRole().getId() == null){
            return Result.error(CodeMsg.TRANSPORT_USER_ROLE_EMPTY);
        }
        if(user.getId() == null || user.getId().longValue() <= 0){
            return Result.error(CodeMsg.TRANSPORT_USE_NO_EXIST);
        }
        if(userService.isExistUsername(user.getUsername(), user.getId())){
            return Result.error(CodeMsg.TRANSPORT_USERNAME_EXIST);
        }
        //到这说明一切符合条件,进行数据库保存
        User findById = userService.find(user.getId());
        //讲提交的运输点信息指定字段复制到已存在的user对象中,该方法会覆盖新字段内容
        BeanUtils.copyProperties(user, findById, "id","createTime","updateTime","userType");
        if(userService.save(findById) == null){
            return Result.error(CodeMsg.TRANSPORT_USE_EDIT_ERROR);
        }
        operaterLogService.add("编辑运输点,运输点名:" + user.getUsername());
        return Result.success(true);
    }
 
    /**
     * 删除运输点
     * @param id
     * @return
     */
    @RequestMapping(value="/delete",method= RequestMethod.POST)
    @ResponseBody
    public Result<Boolean> delete(@RequestParam(name="id")Long id){
        try {
            userService.delete(id);
        } catch (Exception e) {
            return Result.error(CodeMsg.TRANSPORT_USE_DELETE_ERROR);
        }
        operaterLogService.add("删除运输点,运输点ID:" + id);
        return Result.success(true);
    }
    
 
 
}

到此这篇关于Java 实战项目之精美物流管理系统的实现流程的文章就介绍到这了,更多相关Java 物流管理系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java如何用正则表达式匹配与提取字符串

    java如何用正则表达式匹配与提取字符串

    一位以前的同事在群里面突然发了个需求,要通过正则表达式来取值,下面这篇文章主要给大家介绍了关于java如何用正则表达式匹配与提取字符串的相关资料,需要的朋友可以参考下
    2022-06-06
  • Java多线程中关于join方法的使用实例解析

    Java多线程中关于join方法的使用实例解析

    本文通过实例代码给大家实例介绍了Java多线程中关于join方法的使用,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01
  • IDEA使用JDK21控制台乱码问题及解决

    IDEA使用JDK21控制台乱码问题及解决

    在使用IntelliJ IDEA开发时,经常会遇到因编码不一致导致的中文乱码问题,特别是在JDK18以后的版本中,由于JDK内部默认编码格式变为GBK,而项目设置为UTF-8后,会导致乱码问题,本文介绍了几个步骤来解决这一问题
    2024-10-10
  • Spring数据访问模板化方法

    Spring数据访问模板化方法

    今天小编就为大家分享一篇关于Spring数据访问模板化,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • IDEA代码规范插件P3C+代码注释模板配置方法

    IDEA代码规范插件P3C+代码注释模板配置方法

    这篇文章主要介绍了IDEA代码规范插件P3C+代码注释模板配置方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java通过反射注解赋值的方法详解

    Java通过反射注解赋值的方法详解

    这篇文章主要为大家详细介绍了Java语言如何通过反射实现注解赋值,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2022-07-07
  • java线程池ExecutorService超时处理小结

    java线程池ExecutorService超时处理小结

    使用ExecutorService时,设置子线程执行超时是一个常见需求,本文就来详细的介绍一下ExecutorService超时的三种方法,感兴趣的可以了解一下
    2024-09-09
  • Spring boot 实现单个或批量文件上传功能

    Spring boot 实现单个或批量文件上传功能

    这篇文章主要介绍了Spring boot 实现单个或批量文件上传功能,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-08-08
  • Spring Boot实现通用的接口参数校验

    Spring Boot实现通用的接口参数校验

    本文介绍基于 Spring Boot 和 JDK8 编写一个 AOP ,结合自定义注解实现通用的接口参数校验。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Springboot详解实现食品仓库管理系统流程

    Springboot详解实现食品仓库管理系统流程

    这是一个使用Springboot开发的食品仓库管理系统,是为商家提供商品货物进销存的信息化管理系统,具有一个仓库管理系统该有的所有功能,感兴趣的朋友快来看看吧
    2022-06-06

最新评论