# jsy **Repository Path**: fjw1015/jsy ## Basic Information - **Project Name**: jsy - **Description**: 个人本地部署使用的库存管理系统 - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-02-14 - **Last Updated**: 2026-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 衣服库存管理系统 (JSY) > 基于若依(RuoYi)前后端分离架构的企业级库存管理系统 [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-2.5-green.svg)](https://spring.io/projects/spring-boot) [![Vue.js](https://img.shields.io/badge/Vue.js-2.6-brightgreen.svg)](https://vuejs.org) [![MyBatis-Plus](https://img.shields.io/badge/MyBatis--Plus-3.4-blue.svg)](https://baomidou.com) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ## 📋 项目简介 JSY(衣服库存管理系统)是一个功能完善的企业级库存管理系统,专门为服装行业设计。系统采用前后端分离架构,提供完整的入库、出库、库存管理、发货数据统计等功能,支持多维度的数据分析和报表生成。 ### 核心特性 - ✅ **完整的库存管理流程**:入库、出库、库存查询、批量操作 - ✅ **多维度数据统计**:按日、按月、按年统计发货数据 - ✅ **SKU精细化管理**:支持货号、颜色、尺码的多维度管理 - ✅ **价格体系管理**:工厂价格、零售价格管理 - ✅ **数据看板**:可视化展示关键业务指标 - ✅ **权限控制**:基于角色的细粒度权限管理 - ✅ **Redis缓存**:热点数据缓存,提升系统性能 - ✅ **API限流**:防止接口恶意调用,保障系统稳定性 --- ## 🎯 主要功能模块 ### 1. 库存管理模块 #### 入库管理 - 入库单录入(支持批量入库) - 入库单查询与审核 - 入库明细查看 - 入库数据统计 #### 出库管理 - 出库单创建 - 出库单查询与审核 - 出库明细查看 - 库存不足自动预警 - 出库数据统计 #### 库存信息管理 - 实时库存查询 - 库存预警设置 - 库存盘点功能 - 库存流水记录 #### 通知管理 - 系统通知发布 - 库存预警通知 - 操作日志通知 ### 2. 数据管理模块 #### 发货信息管理 - 发货单录入 - 发货单查询 - 发货明细查看 - 发货数据导出 #### SKU信息管理 - SKC货号管理(货号-颜色组合) - SKU货号管理(货号-颜色-尺码组合) - SKU基础信息维护 - SKU查询与筛选 - 批量导入/导出 #### 价格信息管理 - 工厂价格管理 - 零售价格管理 - 价格历史查询 - 价格调整记录 ### 3. 数据统计模块 #### 按日统计(DeliveryDay) - 每日发货数据生成 - 每日发货量统计 - 每日销售金额统计 - 每日趋势分析 #### 按月统计(DeliveryMonth) - 每月发货数据生成 - 每月发货量统计 - 每月销售金额统计 - 月度对比分析 #### 按年统计(DeliveryYear) - 每年发货数据生成 - 每年发货量统计 - 每年销售金额统计 - 年度趋势分析 ### 4. 数据看板模块 - 实时库存概览 - 今日入库/出库统计 - 本月发货数据概览 - 关键指标可视化展示 - 数据图表展示 ### 5. 系统管理模块 #### 用户管理 - 用户列表查询 - 新增用户 - 编辑用户信息 - 删除用户 - 重置密码 - 用户角色分配 #### 角色管理 - 角色列表查询 - 新增角色 - 编辑角色 - 删除角色 - 权限分配 - 数据权限配置 #### 菜单管理 - 菜单树管理 - 新增菜单 - 编辑菜单 - 删除菜单 - 菜单图标配置 #### 部门管理 - 部门树管理 - 新增部门 - 编辑部门 - 删除部门 - 部门人员分配 #### 岗位管理 - 岗位列表查询 - 新增岗位 - 编辑岗位 - 删除岗位 #### 字典管理 - 字典类型管理 - 字典数据管理 - 字典缓存刷新 #### 参数配置 - 系统参数配置 - 参数类型管理 #### 通知公告 - 公告列表查询 - 新增公告 - 编辑公告 - 删除公告 - 发布公告 ### 6. 系统监控模块 #### 在线用户 - 在线用户列表 - 强制用户下线 - 用户会话管理 #### 登录日志 - 登录日志查询 - 登录记录详情 - 登录异常监控 #### 操作日志 - 操作日志查询 - 操作记录详情 - 操作统计分析 ### 7. 系统工具模块 #### 代码生成 - 数据库表导入 - 代码模板配置 - 代码生成(支持单表、树表) - 预览生成代码 - 下载生成代码 #### 系统接口 - Swagger API文档 - 在线接口测试 --- ## 🏗️ 技术架构 ### 后端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Spring Boot | 2.5.x | 基础框架 | | MyBatis-Plus | 3.4.x | ORM框架 | | Spring Security | 2.5.x | 安全框架 | | Spring Data Redis | 2.5.x | Redis缓存 | | Quartz | 2.3.x | 定时任务 | | Swagger | 3.0.0 | API文档 | | Druid | 1.2.x | 数据库连接池 | | FastJSON2 | 2.x | JSON处理 | | POI | 4.1.x | Excel导入导出 | | Hutool | 5.x | 工具类库 | ### 前端技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Vue.js | 2.6.x | 前端框架 | | Element UI | 2.15.x | UI组件库 | | Vuex | 3.x | 状态管理 | | Vue Router | 3.x | 路由管理 | | Axios | 0.24.x | HTTP请求 | | ECharts | 5.x | 数据可视化 | | js-cookie | 3.x | Cookie操作 | ### 数据库 - **MySQL**: 5.7+ / 8.0+ - **Redis**: 5.0+ --- ## 📁 项目结构 ``` jsy/ ├── RuoYi-Vue/ # 后端项目根目录 │ ├── jsy-data-manage/ # 业务数据管理模块 │ │ └── src/main/java/com/ruoyi/ │ │ ├── dashboard/ # 数据看板 │ │ │ ├── domain/ # 数据看板实体类 │ │ │ └── service/ # 数据看板服务 │ │ ├── datacalculation/ # 数据统计模块 │ │ │ ├── domain/ # 统计数据实体 │ │ │ │ ├── DeliveryDay.java # 日发货统计 │ │ │ │ ├── DeliveryMonth.java # 月发货统计 │ │ │ │ └── DeliveryYear.java # 年发货统计 │ │ │ ├── mapper/ # 数据访问层 │ │ │ └── service/ # 业务逻辑层 │ │ ├── datamanage/ # 基础数据管理 │ │ │ ├── domain/ # 实体类 │ │ │ │ ├── DeliveryInfo.java # 发货信息 │ │ │ │ ├── PriceInfo.java # 价格信息 │ │ │ │ └── SkuInfo.java # SKU信息 │ │ │ ├── mapper/ # 数据访问层 │ │ │ └── service/ # 业务逻辑层 │ │ │ ├── ICacheService.java # 缓存服务接口 │ │ │ └── CacheServiceImpl.java # 缓存服务实现 │ │ └── storeManage/ # 库存管理模块 │ │ ├── domain/ # 实体类 │ │ │ ├── InStore.java # 入库单 │ │ │ ├── InStoreFull.java # 入库明细 │ │ │ ├── OutStore.java # 出库单 │ │ │ ├── StoreInfo.java # 库存信息 │ │ │ └── NoticeInfo.java # 通知信息 │ │ ├── mapper/ # 数据访问层 │ │ ├── service/ # 业务逻辑层 │ │ └── util/ # 工具类 │ │ ├── StoreCalculator.java # 库存计算工具 │ │ └── ValidatorUtil.java # 数据验证工具 │ ├── ruoyi-admin/ # 管理后台模块 │ │ └── src/main/java/com/ruoyi/web/controller/ │ │ ├── system/ # 系统管理控制器 │ │ ├── monitor/ # 系统监控控制器 │ │ └── tool/ # 系统工具控制器 │ ├── ruoyi-common/ # 通用模块 │ │ └── src/main/java/com/ruoyi/common/ │ │ ├── annotation/ # 自定义注解 │ │ ├── constant/ # 通用常量 │ │ ├── core/ # 核心类 │ │ ├── exception/ # 异常处理 │ │ ├── filter/ # 过滤器 │ │ ├── utils/ # 通用工具类 │ │ └── xss/ # XSS过滤 │ ├── ruoyi-framework/ # 框架核心模块 │ │ └── src/main/java/com/ruoyi/framework/ │ │ ├── aspectj/ # AOP切面 │ │ ├── config/ # 系统配置 │ │ ├── interceptor/ # 拦截器 │ │ ├── manager/ # 异步管理 │ │ └── security/ # 安全控制 │ ├── ruoyi-generator/ # 代码生成模块 │ ├── ruoyi-quartz/ # 定时任务模块 │ ├── ruoyi-system/ # 系统模块 │ │ └── src/main/java/com/ruoyi/system/ │ │ ├── domain/ # 系统实体 │ │ ├── mapper/ # 数据访问层 │ │ └── service/ # 业务逻辑层 │ ├── sql/ # SQL脚本 │ │ └── clothSystem_complete.sql # 数据库初始化脚本 │ ├── pom.xml # Maven父工程配置 │ ├── ry.bat # Windows启动脚本 │ └── ry.sh # Linux启动脚本 ├── ruoyi-ui/ # 前端项目根目录 │ ├── public/ # 静态资源 │ ├── src/ # 源代码 │ │ ├── api/ # API接口 │ │ ├── assets/ # 资源文件 │ │ ├── components/ # 公共组件 │ │ ├── layout/ # 布局组件 │ │ ├── router/ # 路由配置 │ │ ├── store/ # Vuex状态管理 │ │ ├── utils/ # 工具函数 │ │ ├── views/ # 页面视图 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── package.json # npm依赖配置 │ └── vue.config.js # Vue CLI配置 └── README.md # 项目说明文档 ``` --- ## 🚀 快速开始 ### 环境要求 - **JDK**: JDK 1.8+ - **Maven**: Maven 3.6+ - **Node.js**: Node.js 12+ - **MySQL**: MySQL 5.7+ / 8.0+ - **Redis**: Redis 5.0+ - **IDE**: IntelliJ IDEA / Eclipse / VS Code ### 1. 数据库初始化 ```bash # 1. 创建数据库 mysql -u root -p ``` ```sql CREATE DATABASE IF NOT EXISTS clothSystem DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` ```bash # 2. 导入数据库脚本 mysql -u root -p clothSystem < RuoYi-Vue/sql/clothSystem_complete.sql ``` ### 2. 后端启动 #### 方式一:使用IDE启动 1. 使用IDEA导入Maven项目 2. 修改数据库配置文件 `RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml`: ```yaml spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: master: url: jdbc:mysql://localhost:3306/clothSystem?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 你的数据库密码 ``` 3. 修改Redis配置 `RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml`: ```yaml spring: redis: host: 127.0.0.1 port: 6379 database: 1 password: # 如果有密码则填写 ``` 4. 启动 `RuoYi-Vue/ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java` #### 方式二:使用命令行启动 ```bash # 进入后端项目目录 cd RuoYi-Vue # 编译打包 mvn clean package -Dmaven.test.skip=true # 启动服务 # Windows ry.bat # Linux/Mac chmod +x ry.sh ./ry.sh ``` #### 后端服务访问地址 - **后端接口**: http://localhost:30000 - **Swagger文档**: http://localhost:30000/swagger-ui.html - **Druid监控**: http://localhost:30000/druid/ (账号: admin, 密码: 123456) ### 3. 前端启动 ```bash # 进入前端项目目录 cd ruoyi-ui # 安装依赖 npm install # 启动开发服务器 npm run dev # 或者 npm run serve ``` #### 前端服务访问地址 - **前端界面**: http://localhost:9528 - **默认账号**: admin - **默认密码**: admin123 ### 4. 生产环境部署 #### 后端部署 ```bash # 1. 修改生产环境配置 # application.yml 中修改文件上传路径 ruoyi: profile: /home/clothSystem/uploadPath # application.yml 中修改Redis连接 spring: redis: host: 生产环境Redis地址 port: 6379 password: Redis密码 # 2. 打包 mvn clean package -Dmaven.test.skip=true # 3. 部署jar包 # 将 ruoyi-admin/target/ruoyi-admin.jar 部署到服务器 java -jar ruoyi-admin.jar # 4. 使用Docker部署(可选) docker build -t jsy-backend:latest . docker run -d -p 30000:30000 --name jsy-backend jsy-backend:latest ``` #### 前端部署 ```bash # 1. 修改生产环境API地址 # 修改 ruoyi-ui/vue.config.js 中的 target devServer: { proxy: { '/dev-api': { target: 'http://生产环境IP:30000', changeOrigin: true } } } # 2. 构建生产版本 npm run build:prod # 3. 部署dist目录到Web服务器 # 将 dist 目录上传到 Nginx/Apache 等 Web 服务器的根目录 ``` #### Nginx配置示例 ```nginx server { listen 80; server_name your-domain.com; location / { root /usr/share/nginx/html/dist; try_files $uri $uri/ /index.html; index index.html; } location /dev-api/ { proxy_pass http://localhost:30000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` --- ## 🔧 系统配置说明 ### 关键配置项 #### JWT配置 ```yaml token: header: Authorization secret: ${TOKEN_SECRET:生产环境请修改此密钥} expireTime: 1440 # 24小时 ``` #### Redis配置 ```yaml spring: redis: host: 127.0.0.1 port: 6379 database: 1 password: timeout: 10s lettuce: pool: min-idle: 5 max-idle: 20 max-active: 50 max-wait: -1ms ``` #### 文件上传配置 ```yaml spring: servlet: multipart: max-file-size: 10MB max-request-size: 20MB ruoyi: profile: E:/clothSystem/uploadPath # 文件上传路径 ``` --- ## 📊 数据库设计 ### 核心表说明 | 表名 | 说明 | 功能 | |------|------|------| | sys_user | 用户表 | 存储系统用户信息 | | sys_role | 角色表 | 存储角色信息及权限 | | sys_menu | 菜单表 | 存储系统菜单及权限配置 | | sys_dept | 部门表 | 存储组织架构信息 | | sys_post | 岗位表 | 存储岗位信息 | | sku_info | SKU信息表 | 存储货号、颜色、尺码等信息 | | price_info | 价格信息表 | 存储工厂价格、零售价格 | | delivery_info | 发货信息表 | 存储发货记录 | | in_store | 入库单表 | 存储入库单信息 | | in_store_full | 入库明细表 | 存储入库明细 | | out_store | 出库单表 | 存储出库单信息 | | store_info | 库存信息表 | 存储实时库存数据 | | delivery_day | 日发货统计表 | 按日统计发货数据 | | delivery_month | 月发货统计表 | 按月统计发货数据 | | delivery_year | 年发货统计表 | 按年统计发货数据 | --- ## 🔐 安全特性 - **SQL注入防护**: 使用MyBatis-Plus的参数绑定,防止SQL注入 - **XSS攻击防护**: 内置XSS过滤器,防止跨站脚本攻击 - **CSRF防护**: 基于Token的防护机制 - **密码加密**: 使用BCrypt加密存储密码 - **JWT认证**: 基于JWT的无状态认证 - **API限流**: 基于注解的接口限流,防止恶意调用 - **权限控制**: 基于RBAC的细粒度权限管理 - **操作日志**: 完整的操作日志记录和审计 --- ## 📝 开发规范 ### 后端开发规范 1. **包命名规范**: `com.ruoyi.{模块名}` 2. **命名规范**: 驼峰命名法(camelCase) 3. **注释规范**: 类、方法添加完整的JavaDoc注释 4. **异常处理**: 统一使用`ServiceException`抛出业务异常 5. **事务管理**: 使用`@Transactional`注解管理事务 6. **日志记录**: 使用`log`记录关键操作 ### 前端开发规范 1. **组件命名**: 大驼峰命名法(PascalCase) 2. **文件命名**: 小驼峰命名法(camelCase) 3. **代码风格**: 遵循ESLint规则 4. **注释规范**: 关键逻辑添加注释 5. **API调用**: 统一使用封装的`request`工具 --- ## 🐛 常见问题 ### 1. 后端启动失败 **问题**: 后端启动报错 "Connection refused" **解决方案**: - 检查MySQL服务是否启动 - 检查Redis服务是否启动 - 检查数据库连接配置是否正确 ### 2. 前端无法访问接口 **问题**: 前端请求接口报错 "Network Error" **解决方案**: - 检查后端服务是否正常启动 - 检查`vue.config.js`中的代理配置 - 检查浏览器控制台是否有跨域错误 ### 3. 登录后自动退出 **问题**: 登录后不久自动退出登录 **解决方案**: - 检查Redis连接是否正常 - 检查JWT过期时间配置 - 检查浏览器Cookie设置 ### 4. 数据库连接失败 **问题**: 后端启动报错 "Communications link failure" **解决方案**: - 检查MySQL服务是否启动 - 检查数据库连接URL是否正确 - 检查数据库用户名和密码是否正确 --- ## 📄 许可证 本项目遵循 [MIT 许可证](LICENSE) --- ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! --- ## 👨‍💻 作者 JSY 开发团队 --- ## 📞 联系方式 如有问题或建议,请通过以下方式联系: - **问题反馈**: [GitHub Issues](https://github.com/your-repo/jsy/issues) - **邮件**: support@example.com --- ## 🎉 致谢 感谢 [若依](http://ruoyi.vip/) 开源项目提供的优秀框架基础! --- **最后更新**: 2026年3月