前言:我是天码编程,从事计算机开发行业数年,专注Java程序设计开发、源码分享、技术指导和毕业设计
项目名
基于SSM的药品仓库管理系统
技术栈
Spring+SpringMVC+Mybatis+JSP+Bootstrap+Maven
一、环境介绍
1.1 运行环境
开发语言:Java
数据库:MySQL
系统架构:B/S
后端:SSM(Spring+SpringMVC+Mybatis)
前端:JSP+Bootstrap
工具:IDEA,JDK1.8,Maven
二、系统介绍
药品仓库管理系统是一种专门设计用于药品仓储管理的计算机系统。随着计算机技术的普及,越来越多的企业开始采用数字化管理系统,以提高药品仓库管理的效率和准确性。
随着医药行业的快速发展,药品生产和销售数量的急剧增加,传统的药品仓库管理方法已经无法满足现代仓库管理的需求。此外,国家强制推行GMP认证,要求药品生产过程需要实现标准化、规范化和严格化管理,这也需要药品仓库管理系统来实现。因此,设计一款能够满足现代药品仓库管理需求的数字化管理系统,是非常必要的。
药品仓库管理系统对于保证药品质量、降低管理成本、提高运营效率等方面都具有非常重要的意义。首先,系统可以实现对药品的有效管理,保证药品存储条件符合规定,防止药品受潮、发霉、变质等问题,保证药品质量。其次,系统可以记录药品的入库、出库等操作,减少人为操作失误,避免药品的丢失和损坏。最后,系统可以提高药品仓库的运营效率,加快药品的流通速度,减少库存积压和浪费,降低管理成本。
2.1 功能模块
- 系统角色:管理员、仓库管理员
- 管理员:登录、仓库管理员管理、仓库信息管理、货物信息管理、客户信息管理、供应商管理、货物出库、货物入库、库存管理、查询出入库记录、系统日志、登陆日志
- 仓库管理员:登录、货物出库、货物入库、查看库存、修改密码
2.2 系统架构
B/S架构
前端页面使用JSP+Bootstrap
三、系统展示
3.1部分功能图文展示
登录界面:
仓库管理员管理:
仓库信息管理:
货物信息管理:
客户信息管理:
供应商管理:
货物入库:
货物出库:
库存管理:
查看出入库记录:
系统日志:
登陆日志:
四、部分代码设计
4.1.部分代码如下:
/**
* 登陆账户
*
* @param user 账户信息
* @return 返回一个 Map 对象,其中包含登陆操作的结果
*/
@RequestMapping(value = "login", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> login(@RequestBody Map<String, Object> user) {
// 初始化 Response
Response response = ResponseFactory.newInstance();
String result = Response.RESPONSE_RESULT_ERROR;
String errorMsg = "";
// 获取当前的用户的 Subject
Subject currentUser = SecurityUtils.getSubject();
// 判断用户是否已经登陆
if (currentUser != null && !currentUser.isAuthenticated()) {
String id = (String) user.get(USER_ID);
String password = (String) user.get(USER_PASSWORD);
Session session = currentUser.getSession();
UsernamePasswordToken token = new UsernamePasswordToken(id, password);
try {
// 执行登陆操作
currentUser.login(token);
/* 设置 session 中 userInfo 的其他信息 */
UserInfoDTO userInfo = (UserInfoDTO) session.getAttribute("userInfo");
// 设置登陆IP
userInfo.setAccessIP(session.getHost());
// 查询并设置用户所属的仓库ID
List<RepositoryAdmin> repositoryAdmin = (List<RepositoryAdmin>) repositoryAdminManageService.selectByID(userInfo.getUserID()).get("data");
userInfo.setRepositoryBelong(-1);
if (!repositoryAdmin.isEmpty()) {
Integer repositoryBelong = repositoryAdmin.get(0).getRepositoryBelongID();
if (repositoryBelong != null) {
userInfo.setRepositoryBelong(repositoryBelong);
}
}
// 记录登陆日志
systemLogService.insertAccessRecord(userInfo.getUserID(), userInfo.getUserName(),
userInfo.getAccessIP(), SystemLogService.ACCESS_TYPE_LOGIN);
// 设置登陆成功响应
result = Response.RESPONSE_RESULT_SUCCESS;
} catch (UnknownAccountException e) {
errorMsg = "unknownAccount";
} catch (IncorrectCredentialsException e) {
errorMsg = "incorrectCredentials";
} catch (AuthenticationException e) {
errorMsg = "authenticationError";
e.printStackTrace();
} catch (SystemLogServiceException | RepositoryAdminManageServiceException e) {
errorMsg = "ServerError";
} finally {
// 当登陆失败则清除session中的用户信息
if (result.equals(Response.RESPONSE_RESULT_ERROR)) {
session.setAttribute("userInfo", null);
}
}
} else {
errorMsg = "already login";
}
// 设置 Response
response.setResponseResult(result);
response.setResponseMsg(errorMsg);
return response.generateResponse();
}
麻烦大家帮忙点赞、收藏、关注、评论啦