欢迎光临散文网 会员登陆 & 注册

智慧物流|Springboot+Vue+Nodejs实现智慧物流系统

2022-12-16 20:17 作者:指南针毕业设计  | 我要投稿

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

文末获取源码 

项目编号:BS-XX-162        

前言:

随着全球经济的快速发展,以及信息化步伐的加快,物流公司对行业信息的需求越来越大,这就促使物流信息网迅速发展,以适应物流行业的市场变化。而经济全球化进程的加快,使现代企业的专业分工和协作对现代物流提出了越来越高的要求,物流行业的人工管理早已不再适应企业发展的要求,信息化、自动化、网络化、智能化、柔性化已成为现代物流的鲜明特征。物流行业的发展,使物流的信息化日益被广大从业者和信息系统提供商所重视。 物流信息网信息的及时性、准确性完全符合国内物流企业对行业信息的要求。同时,现代企业的供应链时刻在提醒我们,物流要在激烈的竞争中占据绝对的优势,必须要求企业及时准确的掌握客户信息,同时对客户的需求做出快速的反应,在最短的时间内以最大限度挖掘和优化物流资源来满足客户需求,从而建立高效的物流经济。

一,项目简介

本项目存在三个角色:顾客、员工、管理员,顾客对应使用的是前台管理系统,而员工和管理员对应使用后台管理系统。前台管理系统包括首页、用户订单、用户信息、关于我们等,后台管理系统包括用户管理、货物流程管理、轨迹管理、财务管理、运营数据等。其主要功能模块图如图1-1所示:

编辑

图3-1功能模块图

前台管理系统

客户对象:

(1)客户可以查看个人信息,针对个人信息内容进行修改,但是不能进行删除。

(2)客户进入用户订单页面可以查看自己的所有物流订单信息,还可以在此页面进行下单操作。

(3)客户可以通过首页和关于我们了解公司的基本信息

(4)客户可以在前台页面进行登录账户以及注册账号的操作。

编辑

图3-2前台管理系统功能模块图

后台管理系统:

员工对象:

(1)员工可以对员工个人信息进行修改。

(2)员工可以进行货物流程的操作,包括:收件、发件、派件、到件、签收五种操作。

(3)员工可以查看自己的定位,员工可以看到货物运输的轨迹,还可以对运输路线进行规划。

(4)员工可以看到网点财务的数据,以及员工财务数据。

管理员对象:

(1)管理员可以对自己的个人信息进行修改操作。

(2)管理员同样可以进行货物流程的操作,包括:收件、发件、派件、到件、签收五种操作。

(3)管理员可以对该系统内所有用户的个人信息进行增加、查找、修改以及删除操作,管理员还可以给不同的用户设置不同的权限。

(4)管理员可以查看司机位置,查看货物运输的轨迹,以及规划货运运输路线。

(5)管理员可以查看财务管理的所有数据,包括:中心财务数据,网点财务数据以及员工财务数据。

(6)管理员可以看到公司的总体运营数据,以便掌握公司的经营状况,对公司的未来进行规划。

编辑

图3-3后台管理系统功能模块图


二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发:Springboot+mybatis

前台开发:Vue+ElementUI+Nodejs

三,系统展示

6.1 登录界面原型

编辑



6.2 注册界面原型

编辑



6.3 首页界面原型

编辑



6.4 订单中心界面原型

编辑



6.5 个人信息界面原型

编辑



6.6 用户管理界面原型

编辑


6.7 货物流程管理界面原型

编辑


6.8 轨迹管理界面原型

编辑



6.9 财务界面原型

编辑


6.10 运营数据界面原型

编辑






四,核心代码展示

package com.zh.log.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.zh.log.common.Result;import com.zh.log.entity.Goods;import com.zh.log.mapper.GoodsMapper;import com.zh.log.service.GoodsService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.concurrent.atomic.AtomicInteger;@RestController@RequestMapping("/finForm")public class FinFormController {    @Autowired    private GoodsService goodsService;    @Autowired    private GoodsMapper goodsMapper;    //各网点每月营业总额    @GetMapping("/month")    public Result bj(){        AtomicInteger m1 = new AtomicInteger();        AtomicInteger m2 = new AtomicInteger();        AtomicInteger m3 = new AtomicInteger();        AtomicInteger m4 = new AtomicInteger();        AtomicInteger m5 = new AtomicInteger();        AtomicInteger m6 = new AtomicInteger();        AtomicInteger m7 = new AtomicInteger();        AtomicInteger m8 = new AtomicInteger();        AtomicInteger m9 = new AtomicInteger();        AtomicInteger m10 = new AtomicInteger();        AtomicInteger m11 = new AtomicInteger();        AtomicInteger m12 = new AtomicInteger();        List<Goods> goodsList = goodsService.list();        QueryWrapper<Goods> wrapper1 =new QueryWrapper<>();        wrapper1.select("goodsPayway").groupBy("goodsPayway");        List<Goods> goods1 = goodsService.list(wrapper1);        String[] strname=new String[goods1.size()];        int[][] price = new int[goods1.size()][12];        for (int i=0;i<goods1.size();i++){            strname[i]=goods1.get(i).getGoodsPayway();        }        Map<String, Object> map = new HashMap<>();        goodsList.stream().forEach(item->{            String date = item.getGoodsDate();            String[] strNow1 =date.split("-");            int month = Integer.parseInt(strNow1[1]);            if(month==1){                int i=0;                m1.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    String s = item.getGoodsPayway();                    String s1 =strname[i];                    if (s.equals(s1)){                        price[i][0]=price[i][0]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==2){                int i=0;                m2.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][1]=price[i][1]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==3){                int i=0;                m3.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][2]=price[i][2]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==4){                int i=0;                m4.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][3]=price[i][3]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==5){                int i=0;                m5.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][4]=price[i][4]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==6){                int i=0;                m6.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][5]=price[i][5]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==7){                int i=0;                m7.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][6]=price[i][6]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==8){                int i=0;                m8.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][7]=price[i][7]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==9){                int i=0;                m9.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][8]=price[i][8]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==10){                int i=0;                m10.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][9]=price[i][9]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==11){                int i=0;                m11.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][10]=price[i][10]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }            if(month==12){                int i=0;                m12.addAndGet(Integer.parseInt(item.getGoodsPrice()));                while (true){                    if(i>=goods1.size()){                        break;                    }                    if (item.getGoodsPayway().equals(strname[i])){                        price[i][11]=price[i][11]+Integer.parseInt(item.getGoodsPrice());                        break;                    }                    i++;                }            }        });        for (int i=0;i<goods1.size();i++){            ArrayList<Object> list = new ArrayList<>();            for (int j=0;j<12;j++){                list.add(price[i][j]);            }            String payway = goods1.get(i).getGoodsPayway();            map.put(payway,list);        }        return Result.success(map);    } }

package com.zh.log.controller;import com.zh.log.common.Result;import com.zh.log.entity.Client;import com.zh.log.entity.Role;import com.zh.log.entity.User;import com.zh.log.mapper.RoleMapper;import com.zh.log.service.RoleService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;import java.util.HashMap;import java.util.List;import java.util.Map;@RestController@RequestMapping("/role")public class RoleController {    @Resource    private RoleMapper roleMapper;    @Resource    private RoleService roleService;    //修改    @PostMapping    public Integer save(@RequestBody Role role) {        return roleService.savee(role);    }    //查询所有    @GetMapping    public Result index(){        List<Role> all = roleMapper.findAll();        return Result.success(all);    }    //删除    @DeleteMapping("/{userid}")    public Integer delete(@PathVariable Integer userid){        return roleMapper.deleteById(userid);    }    //分页查询    @GetMapping("/page")    public Map<String, Object> findPage(@RequestParam Integer pageNum,                                        @RequestParam Integer pageSize,                                        @RequestParam String username    ){        pageNum = (pageNum - 1) * pageSize;        username = "%" + username + "%";        List<Role> data = roleMapper.selectPage(pageNum,pageSize,username);        Integer total = roleMapper.selectTotal(username);        Map<String,Object> res = new HashMap<>();        res.put("total",total);        res.put("data",data);        return res;    } }


package com.zh.log.controller;import cn.hutool.core.util.StrUtil;import cn.hutool.crypto.SecureUtil;import cn.hutool.http.server.HttpServerRequest;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.zh.log.common.Constants;import com.zh.log.common.Result;import com.zh.log.controller.dto.UserPasswordDTO;import com.zh.log.entity.User;import com.zh.log.service.UserService;import com.zh.log.utils.TokenUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;import sun.security.util.Password;import java.io.File;import java.io.IOException;@RestController@RequestMapping("/user")public class UserController {    @Autowired    private UserService userService;    @PostMapping("/login")    public Result login(@RequestBody User user) {        String username = user.getUsername();        String password = user.getPassword();        if (StrUtil.isBlank(username) || StrUtil.isBlank(password)) {           return Result.error(Constants.CODE_400,"参数错误");        }        User dto = userService.login(user);         return Result.success(dto);    }    @GetMapping("/gettoken")    public Result token(HttpServerRequest request){        User user = TokenUtils.getCurrentUser();        String role = user.getRole();        return Result.success(role);    }    @PostMapping("/register")    public Result register(@RequestBody User user) {        String username = user.getUsername();        String password = user.getPassword();        if (StrUtil.isBlank(username) || StrUtil.isBlank(password)) {            return Result.error(Constants.CODE_400, "参数错误");        }        return Result.success(userService.register(user));    }    @GetMapping("/username/{username}")    public Result findByUsername(@PathVariable String username) {        QueryWrapper<User> queryWrapper = new QueryWrapper<>();        queryWrapper.eq("username", username);        return Result.success(userService.getOne(queryWrapper));    }    //修改用户信息    @PostMapping("/save")    public Result save(@RequestBody User user) {        return Result.success(userService.saveOrUpdate(user));    }    /**     * 修改密码     * @param userPasswordDTO     * @return     */    @PostMapping("/password")    public Result password(@RequestBody UserPasswordDTO userPasswordDTO) {        userPasswordDTO.setPassword(SecureUtil.md5(userPasswordDTO.getPassword()));        userPasswordDTO.setNewPassword(SecureUtil.md5(userPasswordDTO.getNewPassword()));        userService.updatePassword(userPasswordDTO);        return Result.success();    }    }


五,项目总结

智能物流系统是对PC端用户使用的,所以用户基数大,需要合理划分后台资源,且现如今生活速度等越来越快,各种反应速度和分配速度应当简白明了。图4-1为系统部署图


编辑

图4-1 系统部署图






智慧物流|Springboot+Vue+Nodejs实现智慧物流系统的评论 (共 条)

分享到微博请遵守国家法律