恒合仓库 - 仓库管理系统搭建

仓库管理系统搭建

文章目录

  • 仓库管理系统搭建
  • 一、项目介绍
    • 1.1 项目描述
    • 1.2 技术选型
    • 1.3 模块划分
  • 二、搭建前端环境
  • 三、搭建后端环境
    • 3.1 创建springboot项目 - 划分包层次
    • 3.2 导入依赖
    • 3.3 启动类配置
    • 3.4.配置文件配置

一、项目介绍

1.1 项目描述

项目搭球为满足日益扩大的仓库管理需求,对仓库中商品进销存进行统一管理,而开发了此系统。系统主要包含:

1>用户管理(查询用户、添加用户、修改用户、删除用户、导出数据、批量删除、禁用/启用用户、重置密码、分配角色、更改权限)

2>角色管理(查询角色、添加角色、修改角色、删除角色、导出数据、禁用/启用角色、更改权限)

3>权限管理(查询权限、添加权限、修改权限、删除角色、禁用/启用权限)

4>商品管理(查询商品、添加商品、修改商品、商品审核等)

5>商品分类管理(商品分类的添加、商品分类的查询、商品分类的修改、商品分类的删除等)

6>采购管理(我的采购单、添加采购单、采购单的审核等)

7>入库管理(入库单、保存入库单、确认入库等)

8>出库管理(出库单、保存出库单、审核出库单等)

9>统计管理(各个仓库库存信息、仓库占有比、仓库存储走势、出入库信息统计、采购量占比、实时数据监测)

10>调货管理(调货单查询、确认调货)

11>仓库管理(查询仓库、添加仓库、修改仓库、删除仓库、导出数据)

12>供货商管理(供货商添加、供货商修改、供货商的查询等)

13>品牌管理(品牌添加、品牌修改、品牌的查询等)

14>产地管理(产地添加、产地修改、产地的查询等)

15>站内信管理(我的站内信、未读消息、站内信发送、站内信查询等)

1.2 技术选型

SpringBoot + MyBatis + MySql + Redis + Vue3+axios+Element-Plus +Echarts等

1.3 模块划分

image-20230731083452808

二、搭建前端环境

1.安装node

node是一个基于chrome V8引擎的JavaScript运行环境,让JavaScript运行在服务端的开发平台

npm包管理器的介绍:

node安装之后一般都会默认安装npm包管理器;

类似于linux的yum包管理器,可以给ue项目下载相关插件、依赖;

测试安装是否成功

  • node -v:查看node版本

  • npm -v:查看npm包管理器的版本

image-20230731091429854

如果在执行npm -v命令时出现如下警告,将node安装目录中的npm.cmd文件中的prefix -g改为

prefix --location=global。

img

2.给npm包管理器配置镜像加速器

npm config set registry https://registry.npm.taobao.org 
npm config get registry  -- 返回https://registry.npm.taobao.org,说明配置成功。

image-20230731092818158

3.使用npm包管理器下载安装yarn,同时为其配置加速器

npm install -g yarn

如果node版本太低的会会提示更新,我们更新一下就可以

npm install -g npm@9.8.1

yarn包管理器的介绍:

yarn包管理器跟npm包管理器的作用是一样的,区别就是npm包管理器是node自己的,而yarn包管理器属于第三方(facebook的);

配置镜像加速

yarn config set registry https://registry.npm.taobao.org 
yarn config get registry  -- 返回https://registry.npm.taobao.org,说明配置成功。

image-20230731095328967

4.使用yarn包管理器为前端Vue项日下载安装所需插件

yarn

image-20230731095347984

5.启动前端vue项目

在前端目录下打开doc窗口,执行命令:

yarn

image-20230731102038984

启动前端Vue项目:

yarn dev

image-20230731102154666

细节

前端vue项目对后台项目的访问问题:

vue项目目录下的.env文件

# 以下环境变量均为自定义# 版本号
VITE_VERSION=v1.1.0# 打包输出目录
VITE_OUTPUT_DIR=dist# 项目访问基础路径
VITE_BASE_URL=/# 服务端路径前缀
VITE_API_BASE_URL=/api# 本地token存储名称
VITE_LOCAL_TOKEN=Sure-Token# 向服务端发送token信息的名称
VITE_HEADER_TOKEN=Token# 系统登录路由名称
VITE_LOGIN_ROUTE_NAME=Login# 后台地址的上下文路径
VITE_WAREHOUSE_CONTEXT_PATH=http://localhost:9999/warehouse#VITE_WAREHOUSE_CONTEXT_PATH=http://8.141.144.116:9999/warehouse

有一个如下的配置,前台访问后台的路径

我们可以在.env文件中通过VITE_WAREHOUSE_CONTEXT_PATH变量修改设置前端Vue项目访问后台项目的访问路径

如果不做修改设置,就要求我们的后台项目的项目路径必须是warehouse,访问端口必须是9999

# 后台地址的上下文路径
VITE_WAREHOUSE_CONTEXT_PATH=http://localhost:9999/warehouse

三、搭建后端环境

3.1 创建springboot项目 - 划分包层次

1.创建springboot项目 - 划分包层次仓库我们选择阿里仓库

image-20230731104246179

创建包层次

image-20230731105452554

3.2 导入依赖

下面这个配置应该是挺陌生的

    <dependency><groupId>org.springframework.boot</groupId><!--Springboot版本仲裁中心--><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency>

但是我们应该见过下面这个配置,将此项目继承spring-boot-starter-parent

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>             <version>2.3.12.RELEASE</version><relativePath></relativePath>
</parent>

我们可以点进去spring-boot-starter-parent,如下所示,发现存在spring-boot-dependencies(spring依赖中心或者版本仲裁中心)

image-20230731110143552

我们可以再点进spring-boot-dependencies看一下,里面有很多springboot用到的版本号

image-20230731110352172

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.pn</groupId><artifactId>warehouse</artifactId><version>0.0.1-SNAPSHOT</version><!--自定义标签--><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.3.12.RELEASE</spring-boot.version></properties><!--    <parent>-->
<!--        <groupId>org.springframework.boot</groupId>-->
<!--        <artifactId>spring-boot-starter-parent</artifactId>-->
<!--        <version>2.3.12.RELEASE</version>-->
<!--        <relativePath></relativePath>-->
<!--    </parent>--><!--引入依赖--><dependencies><!--web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--mybatis的依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.4</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><!--redis的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis-reactive</artifactId></dependency><!--lombok的依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--fastjson的依赖--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.79</version></dependency><!--JSR-303的依赖(数据校验)--><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId><version>6.2.0.Final</version></dependency><!--验证码工具kaptcha的依赖--><dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency><!--pinyin4j的依赖(将汉字转成拼音的工具)--><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version></dependency><!--commons-lang工具包(提供了很多工具类)--><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><!--jwt的依赖--><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.18.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><!--依赖版本控制--><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><!--Springboot版本仲裁中心--><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.pn.WarehouseApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

继承Springboot版本的两种方式

方式一

在创建的Springboot工程的pom文件中使用<parent>标签继承SpringBoot的父工程同时指定版本 == 背后其实也是在指定SpringBoot的父工程继承的SpringBoot版本仲裁中心工程的版本,依次来控制整个SpringBoot所有相关依赖的版本;

如果之前我们用idea自带的Springboot骨架,是通过继承Springboot的父工程来控制springboot版本的,这样以后继承的父工程pring-boot-starter-parent又把spring-boot-dependencies(版本控制中心)给继承了,这样以后就说明springboot的版本也控制了

方式二

在依赖的版本控制标签<dependencyManagement> 中引入SpringBoot版本仲裁中心工程并指定版本 == 也就控制了整个SpringBooot 所有相关依赖的版本

但是这里我们并没有通过继承pring-boot-starter-parent来控制版本,而是直接通过引入spring-boot-dependencies来控制版本

一般是使用阿里的Springboot工程的骨架创建的Boot工程

3.3 启动类配置

//mapper接口扫描器,然后会自动为Mapper接口创建代理对象并加入到IOC容器
@MapperScan(basePackages = "com.pn.mapper")
@SpringBootApplication
public class WarehouseApplication {public static void main(String[] args) {SpringApplication.run(WarehouseApplication.class, args);}}

3.4.配置文件配置

#项目的访问路径
server:servlet:context-path: /warehouse#项目的访问端口port: 9999spring:# 数据源配置datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/db_warehouse?serverTimezone=UTCusername: rootpassword: root# #redis的配置redis:host: 127.0.0.1port: 6379database: 0#mybatis的配置
mybatis:#SQL映射文件的位置mapper-locations: classpath:mapper/**/*.xmlconfiguration:#开启驼峰命名法map-underscore-to-camel-case: true#日志功能log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 指定实体类起别名,(实体类所在的包的包路径,那么包中的所有实体类别名就默认是类名首字母小写)type-aliases-package: com.pn.entity#自定义属性
#自定义属性 - token过期时间: 令牌过期时间(单位秒),实际过期时间是该时间的两倍
warehouse.expire-time: 3600#自定义属性 - 图片上传到的位置
file.upload-path: "classpath:static/img/upload"
#自定义属性 - 上传的图片保存数据库的访问路径的目录路径
file.access-path: "/img/upload/"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/136893.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux提权辅助工具Linux Exploit Suggester

Linux提权辅助工具Linux Exploit Suggester 1.概述2.工具使用3.已经有人二开了 1.概述 Linux Exploit Suggester是一款根据操作系统版本号自动查找相应提权脚本的工具 Linux Exploit Suggester的官方下载地址为https://github.com/PenturaLabs/Linux_Exploit_Suggester 2.工具…

内存利用:迟来的blindless与逃不掉的exit漏洞

0x01 前言 在计算机安全领域&#xff0c;漏洞的危险性往往与其广泛性和潜在攻击方式密切相关。今天&#xff0c;我们将深入探讨一个异常危险的漏洞&#xff0c;它存在于程序退出时执行的常见函数"exit"中。无论是在操作系统还是应用程序中&#xff0c;"exit&qu…

典型数据结构-栈/队列/链表、哈希查找、二叉树(BT)、线索二叉树、二叉排序树(BST树)、平衡二叉树(AVL树)、红黑树(RB树)

目录 典型数据结构列举 栈/队列/链表 树 二叉树 线索二叉树 二叉排序树 平衡二叉树&#xff08;AVL树&#xff09; 红黑树 其它树种和应用介绍 典型数据结构列举 栈/队列/链表 描述略。 一些基本的简单实现参考/数据结构简单实现/文件夹里面。 线性表详解&#xff…

淘宝天猫商品评论接口

宝商品评论数据接口可以获取到商品评论信息&#xff0c;但是无法直接提供淘宝商品评论数据接口的链接。 不过&#xff0c;可以通过淘宝开放平台获取到商品评论信息。具体方法是&#xff0c;先在淘宝开放平台注册并创建应用&#xff0c;然后使用该应用的 App Key 和 App Secret…

数据结构——排序算法——归并排序

将两个有序数组合并为一个有序数组 在第二个列表向第一个列表逐个插入的过程中&#xff0c;由于第二个列表已经有序&#xff0c;所以后续插入的元素一定不会在前面插入的元素之前。在逐个插入的过程中&#xff0c;每次插入时&#xff0c;只需要从上次插入的位置开始&#xff0…

堆排序(堆的构造及代码实现)

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

亿发2023智能ERP生产系统解决方案实施,规范中大型企业生产精细化

随着制造水平的不断增强&#xff0c;传统工厂的管理方式已经不能满足现代制造的要求。为了确保公司战略目标的实现&#xff0c;中大型制造企业需要借助信息技术来强化对业务流程的管理&#xff0c;而生产制造ERP系统的实施已成为企业走向信息化的关键战略环节。 工厂信息化建设…

02. Springboot集成Flyway

目录 1、前言 2、什么是Flyway&#xff1f; 3、为什么要使用 Flyway&#xff1f; 4、简单示例 4.1、创建Spring Boot工程 4.2、添加Flyway依赖 4.3、Springboot添加Flyway配置 4.4、创建执行SQL脚本 4.5、启动测试 4.6、Flyway版本管理 5、SQL脚本文件命名规则 6、…

荣誉加冕!八方锦程再次荣获招聘与任用价值大奖

智享会ALL IN 2023 人力资源服务展汇聚了全国32个省市地区,21个行业的HR从业者、上下游客户,9月19-20日齐聚上海跨国采购会展中心,共同见证ALL IN 2023的盛大开幕! 作为人力资源行业的奋进者,八方锦程与智享会同行走过了几载春秋,始终致力于推进人力资源服务高质量发展。 在本…

面试题:HTTPS 是如何保证传输安全的?又被问了!

文章目录 1. HTTP 协议1.1 HTTP 协议介绍1.2 HTTP 中间人攻击1.3 防止中间人攻击 2. HTTPS 协议2.1 HTTPS 简介2.2 CA 认证体系 总结 1. HTTP 协议 在谈论 HTTPS 协议之前&#xff0c;先来回顾一下 HTTP 协议的概念。 1.1 HTTP 协议介绍 HTTP 协议是一种基于文本的传输协议&…

SpringBoot调用ChatGPT-API实现智能对话

目录 一、说明 二、代码 2.1、对话测试 2.2、单次对话 2.3、连续对话 2.4、AI绘画 一、说明 我们在登录chatgpt官网进行对话是不收费的&#xff0c;但需要魔法。在调用官网的API时&#xff0c;在代码层面上使用&#xff0c;通过API KEY进行对话是收费的&#xff0c;不过刚…

基于Java社区生鲜电商平台设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

网络爬虫-----爬虫的分类及原理

目录 爬虫的分类 1.通用网络爬虫&#xff1a;搜索引擎的爬虫 2.聚焦网络爬虫&#xff1a;针对特定网页的爬虫 3.增量式网络爬虫 4.深层网络爬虫 通用爬虫与聚焦爬虫的原理 通用爬虫&#xff1a; 聚焦爬虫&#xff1a; 爬虫的分类 网络爬虫按照系统结构和实现技术&#…

所有人别错过!云计算真的不错,前景钱途并存!

近年来&#xff0c;中国云计算产业发展迅猛&#xff0c;保持30%以上的年均增长率&#xff0c;成为全球增速最快的市场之一&#xff0c;云计算应用领域正向制造、政务、金融、医疗、教育等企业级市场延伸拓展。目前&#xff0c;云计算应用的普及促使开源技术广受关注&#xff0c…

Linux内核源码分析 (B.5)推演 slab 内存池的设计与实现

Linux内核源码分析 (B.5)推演 slab 内存池的设计与实现 文章目录 Linux内核源码分析 (B.5)推演 slab 内存池的设计与实现[toc] 1\. 前文回顾2\. 既然有了伙伴系统&#xff0c;为什么还需要 Slab ?3\. slab 对象池在内核中的应用场景4\. slab, slub, slob 傻傻分不清楚5\. 从一…

C语言的编译过程详解

当我们编译C程序时会发生什么&#xff1f;编译过程中的组件有哪些&#xff0c;编译执行过程是什么样的? 什么是编译 C语言的编译过程就是把我们可以理解的高级语言代码转换为计算机可以理解的机器代码的过程&#xff0c;其实就是一个翻译的过程。 …

低噪声 256 细分微步进电机驱动MS35774/MS35774A(汽车应用级别)

MS35774/MS35774A 是一款高精度、低噪声的两相步进 电机驱动芯片&#xff0c;芯片内置功率 MOSFET&#xff0c;长时间工作的平均电 流可以达到 1.4A&#xff0c;峰值电流 2A。芯片集成了过温保护、欠压 保护、过流保护、短地保护、短电源保护功能。 主要特点 ◼ 2 相步进电机…

揭秘期权卖方稳赚的方法策略!

期权的卖方&#xff08;也称为房东包租婆&#xff09;是指出售期权合约的人&#xff0c;其赚取的费用被称为期权权利金。也就是房租租金&#xff0c;作为卖方&#xff0c;您有义务在期限内按照合约规定的价格出售或购买标的资产&#xff0c;下文介绍期权卖方稳赚的方法策略有哪…

国外发达国家码农是真混得好么?

来看看花旗工作十多年的码农怎么说吧! 美国最大的论坛 Reddit&#xff0c;之前有一个热帖&#xff1a; 一个程序员说自己喝醉了&#xff0c;软件工程师已经当了10年&#xff0c;心里有 好多话想说&#xff0c;“我可能会后悔今天说了这些话。”他洋洋洒洒写了 一大堆&#xff…

Hive内置函数字典

写在前面&#xff1a;HQL同SQL有很多的类似语法&#xff0c;同学熟悉SQL后一般学习起来非常轻松&#xff0c;写一篇文章列举常用函数&#xff0c;方便查找和学习。 1. 执行模式 1.1 Batch Mode 批处理模式 当使用-e或-f选项运行$ HIVE_HOME / bin / hive时&#xff0c;它将以…