基于SpringBoot+Vue的酒類倉儲管理系統

文檔包含用例圖、系統架構圖、系統功能結構圖、實體屬性圖、總體e-r圖。

一.系統開發工具與環境搭建

1.系統設計開發工具

后端

使用Java編程語言的Spring boot框架

項目架構:B/S架構

運行環境:win10/win11、jdk17


前端:

技術:框架Vue.js;UI庫:ElementUI;

開發工具:Visual Studio Code;


后端:

技術:Java語言、mybatis plus、Spring boot框架;

開發工具:IDEA 2023.3.3版本;


數據庫:

數據庫:mysql5.7/8.0

數據庫工具:Navicat12版本;


二.系統實現(部分截圖)

2.1 倉庫人員功能實現

2.1.1 登錄功能實現

倉庫人員,通過輸入賬號、密碼,選擇對應的倉庫管理員角色,輸入圖形驗證碼進行登錄。前端將倉庫人員輸入的參數信息傳遞給后端接口/User/SignIn,執行登錄方法,檢查用戶的信息是否存在于用戶表,不存在,則提示倉庫人員檢查輸入的信息是否正確。校驗通過后,登錄系統,進行操作系統。登錄界面如圖5-1所示。

關鍵代碼:

List<AppUser> items=_AppUserMpper.selectList(queryWrapper);

if(items.stream().count()==0)

{ throw ?new CustomException("請檢查登錄的賬號或者密碼,角色是否都正確!");}

Map<String, String> map = new HashMap<>();

map.put(SysConst.UserIdClaim,items.get(0).getId().toString());

map.put(SysConst.RoleTypeClaim,items.get(0).getRoleType().toString());

String token=JWTUtils.getToken(map);

return token;

2.1.2 商品資料管理功能實現

倉庫商品資料管理,作為倉庫管理人員,可以為倉庫新增商品信息。包含商品、SKU、條碼、品牌等信息,調用/Cargo/CreateOrEdit進行新增商品信息。當倉庫商品有所變動時,可以進行修改,選擇商品進行修改,調用/Cargo/Get獲取商品的原始信息,修改后,調用/Cargo/CreateOrEdit接口進行修改。刪除商品,有這個權限,但是最好不要刪除商品信息。商品資料管理界面如圖5-2所示。

關鍵代碼:

//聲明一個商品資料實體

Cargo Cargo = new Cargo();

//把前端傳入的input參數拷貝到商品資料實體

BeanUtils.copyProperties(Cargo,input);

//調用數據庫的增加或者修改方法

saveOrUpdate(Cargo);

//定義一個返回給前端的商品資料傳輸模型

CargoDto CargoDto=new CargoDto();

//同理把操作的商品資料實體拷貝給商品資料傳輸模型

BeanUtils.copyProperties(CargoDto,Cargo);

//把傳輸模型返回給前端

return CargoDto;

2.1.3 庫區管理功能實現

倉庫人員可以根據倉庫的具體情況,進行設置庫區,包含庫區名稱、庫區編碼。當發生酒類商品出入庫操作時,系統通過業務邏輯層自動關聯庫區數據,系統實時更新該庫區的庫存數量字段。為庫區設置庫位信息,將當前庫區Id傳遞給/WarehouseBin/CreateOrEdit接口,為庫區新增庫位信息。庫區管理界面如圖5-3所示。

關鍵代碼:

if(input.getId()==null)

?{

?????return new WarehouseAreaDto();

?}

?PagedResult<WarehouseAreaDto> ?pagedResult =List(input);

?return pagedResult.getTotalCount()>0?pagedResult.getItems().stream().findFirst().get():new WarehouseAreaDto();

2.2超級管理員功能實現

2.2.1 數據圖形化分析功能實現

超級管理員可以通過選擇不同倉庫,通過折線圖查看每個倉庫的最近7天出入庫存數,最近7天出入訂單數。環形圖展示最近30天倉庫出入庫統計分析,展示該倉庫的待補商品Top10,商品保質期預警Top10。數據圖形化分析界面如圖5-4所示。

關鍵代碼:

?Map<String, Object> data = new HashMap<>();

data.put("name", "入庫");

data.put("value", Math.abs(sum));

dataList.add(data);

//統計數量小于0的記錄并且求和

double sum1 = inventoryRecords.stream().filter(x -> x.getQty() < 0).mapToDouble(x -> x.getQty()).sum();

Map<String, Object> data1 = new HashMap<>();

data1.put("name", "出庫");

data1.put("value", Math.abs(sum1));

dataList.add(data1);

2.2.2 貨主管理功能實現

超級管理員可以維護所有倉庫的貨主信息,為所有倉添加貨主信息,填寫貨主名稱、貨主編碼、貨主電話、貨主公司地址信息,調用/Customer/CreateOrEdit接口新增。當貨主信息有所更改時,修改貨主信息。當不再合作,可以刪除貨主信息。貨主管理界面如圖5-5所示。

關鍵代碼:

//把Customer實體轉換成Customer傳輸模型

List<CustomerDto> items= Extension.copyBeanList(pageRecords.getRecords(),CustomerDto.class);

for (CustomerDto item : items) {

??//查詢出關聯的創建用戶信息

????AppUserDto ?CreatorAppUserDTO=new AppUserDto();

????AppUser ?CreatorAppUserEntity= _AppUserMapper.selectOne(Wrappers.<AppUser>lambdaQuery().eq(AppUser::getId,item.getCreatorId()));

???if(CreatorAppUserEntity!=null) {

????????BeanUtils.copyProperties(CreatorAppUserDTO, CreatorAppUserEntity);

????????item.setCreatorAppUserDto(CreatorAppUserDTO);

????} ?

}

//返回一個分頁結構給前端

return PagedResult.GetInstance(items,totalCount);

2.2.3 庫存預警功能實現

超級管理員登錄系統后,庫存預警模塊。可對每一款商品單獨設置庫存預警。點擊具體商品的編輯選項,超級管理輸入商品的下限預警值,調用/EarlyWarning/CreateOrEdit接設置庫存預警。此數值代表商品庫存數量達到該值時,系統將觸發預警。庫存預警界面如圖5-6所示。

關鍵代碼:

//聲明一個庫存預警實體

EarlyWarning EarlyWarning = new EarlyWarning();

//把前端傳入的input參數拷貝到庫存預警實體

BeanUtils.copyProperties(EarlyWarning, input);

//調用數據庫的增加或者修改方法

saveOrUpdate(EarlyWarning);

//定義一個返回給前端的庫存預警傳輸模型

EarlyWarningDto EarlyWarningDto = new EarlyWarningDto();

//同理把操作的庫存預警實體拷貝給庫存預警傳輸模型

BeanUtils.copyProperties(EarlyWarningDto, EarlyWarning);

//把傳輸模型返回給前端

return EarlyWarningDto;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912983.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912983.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

月付物理服務器租用平臺-青蛙云

青蛙云物理服務器租用服務概述 青蛙云是一家提供物理服務器租用服務的平臺&#xff0c;支持月付、年付等靈活付費方式&#xff0c;物理服務器適合企業或個人用戶的高性能計算需求。其服務覆蓋多地區機房&#xff0c;提供多種配置選項&#xff0c;支持定制化需求。 核心優勢 …

基于二分類方法和安全系數方法使用comsol with matlab蒙特卡洛模擬實現邊坡失效概率計算——隨機變量模型

基于二分類方法和安全系數方法使用comsol with matlab蒙特卡洛模擬實現邊坡失效概率計算——隨機變量模型 模型和全部代碼下載隨機變量模擬加載comsol模型蒙特卡洛模擬(分類模型)蒙特卡洛模擬(安全系數模型)內聚力和內摩擦角隨機變量分布二分類穩定性1000次運行結果失效概率…

機器學習-02(深度學習的基本概念)

機器學習的步驟 1.定義帶有未知參數的函數 線性模型&#xff08;linear models&#xff09;具有較大的限制&#xff08;Model Bias&#xff09; y b wx 無論如何更改b或者w&#xff0c;其只會呈現出一條直線&#xff0c;不能滿足更加復雜的現實情況。 我們可以將復雜的函…

InspireFace C++ 架構分析

InspireFace C 架構分析 https://github.com/deepinsight/insightface/tree/master/cpp-package/inspireface 1. 項目概述 InspireFace 是一個高性能的人臉識別和分析 SDK&#xff0c;采用 C 開發&#xff0c;提供了完整的人臉檢測、跟蹤、特征提取、活體檢測、屬性分析等功…

【網絡安全】Webshell命令執行失敗解決思路

前言費盡心思上傳了webshell&#xff0c;上傳下載都沒問題&#xff0c;卻發現命令執行總是失敗&#xff1f;最近也打點也遇到了這些問題&#xff0c;網上有部分文章&#xff0c;但都是零碎知識點并且實戰不一定能用&#xff0c;今天就結合我個人經驗剖析webshell上線后cmd命令執…

【機器人】復現 HOV-SG 機器人導航 | 分層 開放詞匯 | 3D 場景圖

HOV-SG 是通過語言指令實現機器人導航的&#xff0c;核心特點是分層結構、開放詞匯、3D場景圖。 來自RSS 2024&#xff0c;大規模、多層次的環境構建精確的、開放詞匯的3 場景圖&#xff0c;并使機器人能夠通過語言指令在其中有效地導航。 論文地址&#xff1a;Hierarchical …

jvm 鎖升級機制

Java 虛擬機&#xff08;JVM&#xff09;中的鎖升級機制&#xff08;也稱為鎖膨脹&#xff09;是 HotSpot 虛擬機為了優化 synchronized 關鍵字的性能而引入的一項重要技術。它的核心思想是&#xff1a;根據實際遇到的競爭激烈程度&#xff0c;動態地將鎖從開銷最小的狀態逐步升…

金蝶云星空 (9.0版本) ERP的WebApi接口隨機出現SSLException

環境&#xff1a; java-1.8.0-openjdk-1.8.0.131 hutool-all 依賴&#xff0c; 5.8.25版本 項目背景&#xff1a; 發版上線&#xff0c;用的hutool工具類 HttpUtil.createPost() &#xff0c;請求域名為https://xxx.ik3cloud.com/k3cloud 的金蝶ERP webapi接口 問題&#xff1…

用java,把12.25.pdf從最后一個點分割,得到pdf

要在Java中從文件名 12.25.pdf 的最后一個點&#xff08;.&#xff09;分割文件名和擴展名&#xff0c;可以使用 String 類的 lastIndexOf() 和 substring() 方法。以下是一個示例代碼&#xff1a; public class FileNameSplitter {public static void main(String[] args) {St…

UE5 重新編譯插件版本

打開要轉換的UE的安裝目錄&#xff0c;一直找到這個文件 不要雙擊&#xff0c;在地址欄里輸入cmd打開命令行&#xff0c;輸入如下指令 RunUAT.bat BuildPlugin -plugin"E:\OldPlugin\chatbot5.3\chatbot\chatbot.uplugin" -package"E:\NewPlugin"-plugin…

Linux下的調試器-gdb(16)

文章目錄 預備知識&#xff08;9-2.30.00&#xff09;快速認識 gdbgdb 的命令1. 更換成 cgdb2. 打和去除斷點3. 逐語句與逐過程4. 使能&#xff08;激活&#xff09;斷點 調試思想1. 找到問題&#xff08;找到問題所在的區域&#xff09;2. 查看代碼的上下文 補充調試技巧1. wa…

李宏毅NLP-7-計算分數和訓練和測試

文章目錄 分數計算訓練測試 分數計算 插入式序列生成模型的概率計算邏輯&#xff0c;核心是將 “生成序列 h 的過程” 拆解為一系列插入操作&#xff0c;并通過步驟概率的乘積計算總概率 P ( h ∣ X ) P(h∣X) P(h∣X)。以下從 模型框架、步驟分解、概率計算 三個層面解析&…

Python字符與ASCII轉換方法

在Python中&#xff0c;可以使用內置函數 ord() 和 chr() 來轉換字符和ASCII碼&#xff1a; ?獲取字符的ASCII碼? - 用 ord() ascii_code ord(A) # 返回 65 ?將ASCII碼轉為字符? - 用 chr() character chr(65) # 返回 A 示例&#xff1a; # 打印字母A-Z的ASCII碼…

[IMX][UBoot] 10.啟動流程 (6) - bootz 命令啟動 Linux

文章鏈接 UBoot 啟動流程 (1) - 基本流程 UBoot 啟動流程 (2) - 平臺前期初始化階段 - board_init_f UBoot 啟動流程 (3) - UBoot 程序重定位 - relocate_code UBoot 啟動流程 (4) - 平臺后期初始化階段 - board_init_r UBoot 啟動流程 (5) - UBoot 運行階段 - main_loop …

TCP 三次握手協商 MSS 前,如何確定 MSS 值(結合 Linux 內核源碼分析)

文章目錄 一、SYN總結影響 SYN MSS 的因素 二、SYNACK總結影響 SYNACK MSS 的因素 結合 Linux 內核源碼 一、SYN 總結影響 SYN MSS 的因素 套接字選項 TCP_MAXSEG路由選項 advmss出口 MTU 減去 40(TCP 和 IP 的固定首部大小)IPV4_MAX_PMTU - 40(同上) 二、SYNACK 總結影響 SY…

面試150 矩陣置0

思路 我們使用兩個標記集合&#xff0c;分別記錄當矩陣的元素為0的時候的橫、縱坐標。然后在對矩陣元素進行遍歷&#xff0c;如果所在行或者所在列的索引在集合中&#xff0c;對應的矩陣元素修改為0即可 class Solution:def setZeroes(self, matrix: List[List[int]]) -> N…

Element UI 完整使用實戰示例

以下是 Element UI 的完整使用實戰示例&#xff0c;涵蓋從環境搭建、基礎組件使用到項目實戰的全流程&#xff0c;結合多個實際場景和代碼示例&#xff1a; 一、環境搭建與基礎配置 1. 安裝 Element UI 通過 npm 或 yarn 安裝&#xff1a; npm install element-ui --save # …

C# 線程同步(一)同步概念介紹

目錄 1.阻塞&#xff08;Blocking&#xff09; 2.阻塞 VS 輪詢 3.線程狀態 到目前為止&#xff0c;我們已經闡述了如何在線程上啟動任務、配置線程以及實現雙向數據傳遞。同時&#xff0c;我們也說明了局部變量是線程私有的&#xff0c;而引用可以通過共享字段在線程間傳遞以…

解決leetcode第3588題.找到最大三角形面積

3588.找到最大三角形面積難度&#xff1a;中等問題描述&#xff1a;給你一個二維數組coords&#xff0c;大小為nx2&#xff0c;表示一個無限笛卡爾平面上n個點的坐標。找出一個最大三角形的兩倍面積&#xff0c;其中三角形的三個頂點來自coords中的任意三個點&#xff0c;并且該…

WIFI 安全測試記錄

之前為實訓課特意買的無線網卡沒用上&#xff0c;但是我怎么可能讓他荒廢。所以用了幾個下午&#xff0c;淺學了WiFi&#xff0c;當然沒找到什么好教材&#xff0c;自己摸索著學的很基礎&#xff0c;主要是當練習了&#xff0c;特此把我此前學習…WiFi密碼實踐過程寫上來。 省流…